Ещё одна моя любимая фича в эпловском календаре — таймлайн виджет. Не знаю почему, но я вообще не могу воспринимать события в виде списка, а таймлайн для меня просто идеально наглядный
На андроиде я не встречал полного аналога такого виджета, самое близкое, что нашёл — Your Calendar Widget. Программа даёт много возможностей для кастомизации, и одна из фич — мини-таймлайн сверху
Но я всё ещё не теряю надежд найти что-то более похожее на эпловскую реализацию (и даже иногда возникают мысли самому поиграться с котлином и рендерингом виджетов), если есть на примете прикольные виджеты для календаря — буду признателен
На андроиде я не встречал полного аналога такого виджета, самое близкое, что нашёл — Your Calendar Widget. Программа даёт много возможностей для кастомизации, и одна из фич — мини-таймлайн сверху
Но я всё ещё не теряю надежд найти что-то более похожее на эпловскую реализацию (и даже иногда возникают мысли самому поиграться с котлином и рендерингом виджетов), если есть на примете прикольные виджеты для календаря — буду признателен
Итоги 2024
Это был очень интересный год с огромной положительной динамикой. После дикого стресса от переезда в Нидерланды во второй половине 2023 я наконец оправился и неплохо обустроился. В первую очередь, конечно, прокачался в социальном плане. До переезда у меня не было ни одного знакомого из Нидерландов, и первые несколько месяцев мне было очень не по себе из-за этого. Но в 2024 я смог построить комфортный круг общения. Могу даже смело заявить, что в Нидерландах у меня теперь социалочка не хуже, чем была в Москве (не в укор моим московским друзьям, скучаю)
В первую половину года как будто не происходило ничего особо примечательного, кроме обычной работы и учёбы. Параллельно с этим я прикладывал осознанные усилия для расширения круга общения. Сначала казалось, что я прикладываю усилия вникуда, но постепенно это стало давать свои плоды. Мне кажется, важно отметить это как свою заслугу.
В августе сделал лазерную коррекцию зрения. Только сейчас вспомнил, что совсем никак не освещал это в публичном поле. Делал в России по ДМС от Яндекса, 10/10 всем советую. У меня была близорукость -4.5, сейчас чёткая единица. Не то чтобы какое-то life-changing улучшение, но определенно прикольно!
В сентябре пошёл на курсы нидерландского. До этого целый год прожил вообще без знания языка, в Нидерландах это более чем окей. Уровень у меня сейчас чуть меньше, чем A1, но уже развилась неплохая интуиция на произношение и какие-то несложные грамматические структуры. Но самое главное, что язык начал мне нравиться! Сначала была какая-то неприязнь, но теперь кажется, что очень даже миленький язык.
В ноябре вышел на новую работу в нидерландской компании. Ещё в 2022 мне было сложно представить, что я буду официально работать в другой стране, но теперь это стало реальностью. Большую роль в этом сыграла удача (на самом деле я не хотел менять работу и наткнулся на вакансию совсем случайно), но и моя заслуга в этом есть. Очень рад что так получилось, посмотрим что будет дальше.
За этот год я побывал в 8 странах: 🇳🇱 Нидерланды, 🇷🇺 Россия, 🇦🇲 Армения, 🇷🇸 Сербия, 🇰🇿 Казахстан, 🇧🇬 Болгария, 🇩🇪 Германия и 🇧🇪 Бельгия. Особенно рад, что я не просто побывал там, но и повстречался с огромным количеством замечательных людей. Для меня это очень важно, путешествия в одиночку мне абсолютно не доставляют.
Это был очень интересный год с огромной положительной динамикой. После дикого стресса от переезда в Нидерланды во второй половине 2023 я наконец оправился и неплохо обустроился. В первую очередь, конечно, прокачался в социальном плане. До переезда у меня не было ни одного знакомого из Нидерландов, и первые несколько месяцев мне было очень не по себе из-за этого. Но в 2024 я смог построить комфортный круг общения. Могу даже смело заявить, что в Нидерландах у меня теперь социалочка не хуже, чем была в Москве (не в укор моим московским друзьям, скучаю)
В первую половину года как будто не происходило ничего особо примечательного, кроме обычной работы и учёбы. Параллельно с этим я прикладывал осознанные усилия для расширения круга общения. Сначала казалось, что я прикладываю усилия вникуда, но постепенно это стало давать свои плоды. Мне кажется, важно отметить это как свою заслугу.
В августе сделал лазерную коррекцию зрения. Только сейчас вспомнил, что совсем никак не освещал это в публичном поле. Делал в России по ДМС от Яндекса, 10/10 всем советую. У меня была близорукость -4.5, сейчас чёткая единица. Не то чтобы какое-то life-changing улучшение, но определенно прикольно!
В сентябре пошёл на курсы нидерландского. До этого целый год прожил вообще без знания языка, в Нидерландах это более чем окей. Уровень у меня сейчас чуть меньше, чем A1, но уже развилась неплохая интуиция на произношение и какие-то несложные грамматические структуры. Но самое главное, что язык начал мне нравиться! Сначала была какая-то неприязнь, но теперь кажется, что очень даже миленький язык.
В ноябре вышел на новую работу в нидерландской компании. Ещё в 2022 мне было сложно представить, что я буду официально работать в другой стране, но теперь это стало реальностью. Большую роль в этом сыграла удача (на самом деле я не хотел менять работу и наткнулся на вакансию совсем случайно), но и моя заслуга в этом есть. Очень рад что так получилось, посмотрим что будет дальше.
За этот год я побывал в 8 странах: 🇳🇱 Нидерланды, 🇷🇺 Россия, 🇦🇲 Армения, 🇷🇸 Сербия, 🇰🇿 Казахстан, 🇧🇬 Болгария, 🇩🇪 Германия и 🇧🇪 Бельгия. Особенно рад, что я не просто побывал там, но и повстречался с огромным количеством замечательных людей. Для меня это очень важно, путешествия в одиночку мне абсолютно не доставляют.
Почти месяц назад купил себе 3д-принтер, но до поста руки так и не добрались. Даже сейчас пишу просто потому что дальше откладывать уже нельзя.
Главная причина почему я не хотел писать пост — потому что я пока не успел поиграться с ним как следует. Напечатал на нем только с десяток готовых моделек, в основном брелочки-безделушки. В планах поставить CAD-софт и задизайнить хотя бы что-нибудь полезное, но времени и мотивации катастрофически не хватает.
Теперь про сам принтер. Это BambuLab A1 mini, самый базовый и компактный из их линейки. Доступное пространство для печати — 180×180×180 mm³, чуть поменьше чем 256×256×256 mm³ у старших моделей, но всё равно более чем достаточно.
Ещё до покупки начал замечать огромное медийное присутствие bambulab, казалось что у половины ютюберов есть принтер от них. Видимо, не зря: экспириенс печати показался мне супер юзер френдли. Всевозможные калибровки, автоматическое выравнивание подложки, сенсорный экранчик с прогрессом печати, даже какое-то шумоподавление звуков моторов. У них есть какой-то свой облачный сервис управления устройством, но я побоялся отдаваться в рабство китайцам и не стал его настраивать. И даже так флешки с файликами остались в прошлом, отправлять принты можно по сети. Там даже есть встроенная камера для таймлапсов, правда я так и не добрался вытащить их с карты памяти.
В общем, пока как-то так. А самое главное, что обошёлся он мне всего в ~€250 вместе с пачкой расходников. Кажется, еще пару лет назад за такие деньги можно было собрать только DIY за гаражами
Главная причина почему я не хотел писать пост — потому что я пока не успел поиграться с ним как следует. Напечатал на нем только с десяток готовых моделек, в основном брелочки-безделушки. В планах поставить CAD-софт и задизайнить хотя бы что-нибудь полезное, но времени и мотивации катастрофически не хватает.
Теперь про сам принтер. Это BambuLab A1 mini, самый базовый и компактный из их линейки. Доступное пространство для печати — 180×180×180 mm³, чуть поменьше чем 256×256×256 mm³ у старших моделей, но всё равно более чем достаточно.
Ещё до покупки начал замечать огромное медийное присутствие bambulab, казалось что у половины ютюберов есть принтер от них. Видимо, не зря: экспириенс печати показался мне супер юзер френдли. Всевозможные калибровки, автоматическое выравнивание подложки, сенсорный экранчик с прогрессом печати, даже какое-то шумоподавление звуков моторов. У них есть какой-то свой облачный сервис управления устройством, но я побоялся отдаваться в рабство китайцам и не стал его настраивать. И даже так флешки с файликами остались в прошлом, отправлять принты можно по сети. Там даже есть встроенная камера для таймлапсов, правда я так и не добрался вытащить их с карты памяти.
В общем, пока как-то так. А самое главное, что обошёлся он мне всего в ~€250 вместе с пачкой расходников. Кажется, еще пару лет назад за такие деньги можно было собрать только DIY за гаражами
Попробовал использовать git submodules, прикольная штука. Раньше вообще боялся их трогать.
Я пользуюсь Firefox с кастомной темой поверх (UserChrome). Она основана на EdgyArc-fr (для которой я кстати тоже поддерживаю публичный форк), но также включает в себя некоторые изменения, которые я не хочу заливать в апстрим. Поэтому я долго задавался вопросом, как лучше хранить, версионировать и синхронизировать этот конфиг между несколькими устройствами. Иметь полностью отдельную репу — муторно, делать ещё один форк EdgyArc-fr — тоже (а если захотеть сделать его приватным, то и вообще небезопасно). В итоге остановился на submodules.
Собственно, в паре слов, git submodules позволяет внутри одного репозитория иметь ссылку на определенный коммит в другом репозитории. Для моего случая подошло идеально: я добавил EdgyArc-fr как сабмодуль, а рядом положил оставшиеся кастомные файлы. Теперь при клонировании репозитория я буду получать и базовые стили, и то, что я навертел поверх них. А если в EdgyArc-fr выйдет новая версия, то мне всего лишь останется обновить хеш коммита в корневом репозитории.
Больше всего я был удивлен тем, насколько нативный получился экспириенс. С внутренним репозиторием можно работать так же как и с обычным, просто перейдя в его папку. Git Fork (GUI-клиент) показывает диффы при изменении указателя на коммит и даже предлагает открыть саб-репу в отдельной вкладке. Короче, мне очень понравилось, фича совсем не такая страшная, как мне казалось
А вот ссылка на репу, если кому интересная моя тема: https://github.com/Loskir/firefoxcss
Я пользуюсь Firefox с кастомной темой поверх (UserChrome). Она основана на EdgyArc-fr (для которой я кстати тоже поддерживаю публичный форк), но также включает в себя некоторые изменения, которые я не хочу заливать в апстрим. Поэтому я долго задавался вопросом, как лучше хранить, версионировать и синхронизировать этот конфиг между несколькими устройствами. Иметь полностью отдельную репу — муторно, делать ещё один форк EdgyArc-fr — тоже (а если захотеть сделать его приватным, то и вообще небезопасно). В итоге остановился на submodules.
Собственно, в паре слов, git submodules позволяет внутри одного репозитория иметь ссылку на определенный коммит в другом репозитории. Для моего случая подошло идеально: я добавил EdgyArc-fr как сабмодуль, а рядом положил оставшиеся кастомные файлы. Теперь при клонировании репозитория я буду получать и базовые стили, и то, что я навертел поверх них. А если в EdgyArc-fr выйдет новая версия, то мне всего лишь останется обновить хеш коммита в корневом репозитории.
Больше всего я был удивлен тем, насколько нативный получился экспириенс. С внутренним репозиторием можно работать так же как и с обычным, просто перейдя в его папку. Git Fork (GUI-клиент) показывает диффы при изменении указателя на коммит и даже предлагает открыть саб-репу в отдельной вкладке. Короче, мне очень понравилось, фича совсем не такая страшная, как мне казалось
А вот ссылка на репу, если кому интересная моя тема: https://github.com/Loskir/firefoxcss
Forwarded from Loskir's Live
Вчера сдавал экзамен по нидерландскому на A1. Пока все части кроме Speaking, он будет в четверг.
Экзамен был очень интересный, мне понравился. Собственно, было три части: Listening, Reading и Writing.
На Listening было в районе 20 коротких аудиозаписей секунд по 20-30, к каждой аудиозаписи вопрос с выбором ответа. Аудиозаписи были очень разные и очень забавные. От "что от тебя хочет соседка?" до "вы позвонили в администрацию Амстердама, на какую кнопку нажать чтобы задать вопрос насчёт паспорта?". Причем во втором случае качество звука соответствующее реальным автоответчикам
На Reading было что-то похожее, но с короткими текстами/листовками/имейлами/табличками. Например, была какая-то табличка с информацией о какой-то муниципальной приёмной и к ней вопросы типа "в какие дни можно прийти вечером?", "сколько идти от ЖД станции?" или "где найти бесплатную парковку?"
На Writing были даны разные ситуации, для которых надо написать короткие тексты. Например:
- Соседка сходила тебе за продуктами, ты хочешь ее поблагодарить. Напиши текст для открытки.
- Дан имейл вида "Привет коллеги, кто хочет помочь с организацией корпоратива — напишите мне". Напишите ответное письмо.
- Вы хотите поступить в языковую школу. Заполните вступительную форму (имя/фамилия/др/адрес/мотивация)
- Вы хотите продать свой старый стол на маркетплейсе. Придумайте для него объявление (какого стол цвета? размера? насколько он старый? сколько стоит?)
Короче, экзамен мне реально понравился. По ощущениям сдал я его хорошо, какие-то сомнения есть буквально в паре вопросов из всего теста. Очень круто, что буквально за 4 месяца я прошел от практически нулевой proficiency в языке до такого.
Экзамен был очень интересный, мне понравился. Собственно, было три части: Listening, Reading и Writing.
На Listening было в районе 20 коротких аудиозаписей секунд по 20-30, к каждой аудиозаписи вопрос с выбором ответа. Аудиозаписи были очень разные и очень забавные. От "что от тебя хочет соседка?" до "вы позвонили в администрацию Амстердама, на какую кнопку нажать чтобы задать вопрос насчёт паспорта?". Причем во втором случае качество звука соответствующее реальным автоответчикам
На Reading было что-то похожее, но с короткими текстами/листовками/имейлами/табличками. Например, была какая-то табличка с информацией о какой-то муниципальной приёмной и к ней вопросы типа "в какие дни можно прийти вечером?", "сколько идти от ЖД станции?" или "где найти бесплатную парковку?"
На Writing были даны разные ситуации, для которых надо написать короткие тексты. Например:
- Соседка сходила тебе за продуктами, ты хочешь ее поблагодарить. Напиши текст для открытки.
- Дан имейл вида "Привет коллеги, кто хочет помочь с организацией корпоратива — напишите мне". Напишите ответное письмо.
- Вы хотите поступить в языковую школу. Заполните вступительную форму (имя/фамилия/др/адрес/мотивация)
- Вы хотите продать свой старый стол на маркетплейсе. Придумайте для него объявление (какого стол цвета? размера? насколько он старый? сколько стоит?)
Короче, экзамен мне реально понравился. По ощущениям сдал я его хорошо, какие-то сомнения есть буквально в паре вопросов из всего теста. Очень круто, что буквально за 4 месяца я прошел от практически нулевой proficiency в языке до такого.
This media is not supported in your browser
VIEW IN TELEGRAM
Моя любимая находка последних недель — команда Expand Selection в IDE.
У JetBrains это Alt/Option+↑↓, у VSCode — Ctrl+Shift+←→, у вима — ценители и без меня знают
Собственно, эта команда постепенно увеличивает размер выделения, останавливаясь на самых интересных местах: границах идентификаторов, строк, скоупов и прочих конструкций. Больше не нужно ювелирно выделять строчечки, пытаясь выделить, например, всех children в вёрстке. Можно просто понажимать на шорткат, и в конечном итоге он выделит именно то, что нужно.
У JetBrains это Alt/Option+↑↓, у VSCode — Ctrl+Shift+←→, у вима — ценители и без меня знают
Собственно, эта команда постепенно увеличивает размер выделения, останавливаясь на самых интересных местах: границах идентификаторов, строк, скоупов и прочих конструкций. Больше не нужно ювелирно выделять строчечки, пытаясь выделить, например, всех children в вёрстке. Можно просто понажимать на шорткат, и в конечном итоге он выделит именно то, что нужно.
FOSDEM-2025
В начале февраля съездил в Брюссель на FOSDEM — ежегодную бесплатную конференцию, посвящённую опенсорсу во всех его проявлениях. Мне очень понравилось, но не по тем причинам, что я предполагал.
Конференция была очень оживлённая: 2 дня, тысячи людей, 1055 докладов (по 30 штук одновременно), под конференцию оккупировали почти целый кампус университета. Темы докладов варьировались от компиляции Си до EU Legislation, действительно супер широкий спектр интересов.
Изначально мы составили довольно плотное расписание, планировали посетить пару десятков докладов за два дня. Но наш план не сработал. Некоторые аудитории оказались в разных концах кампуса, и дорога между ними занимала минут 10. Поэтому на back-to-back доклады успеть было физически невозможно, пришлось прореживать расписание, оставляя промежутки между докладами. Плюс на особо интересные доклады даже выстраивалась очередь перед аудиторией, и на пару из них мы вообще не попали, так как закончились места.
Но не докладами едиными живёт фосдем. Вторая, не менее крутая, часть конференции — стенды. Это такие брендированные уголочки, организованные компаниями или просто проектами. На них стоят амбассадоры, у которых можно спросить что-то про проект или просто ухватить мерча. Стендов было 88 штук, я уверен, что до некоторых мы просто не добрались. Были стенды дистрибутивов линукса (Fedora, Debian, Canonical), СУБД (MySQL, PostgreSQL, FerretDB), опенсорс приложений (VLC, Joplin, Matrix, Mastodon), CERN, OpenStreetMap, каких-то опенсорсных космических спутников и кучи других. Но особенно мне понравилась зона, посвящённая AOSP и линуксу на мобилках. Там были стенды CalyxOS, SailfishOS, AsteroidOS и в частности postmarketOS.
postmarketOS — это один из проектов, посвящённый запуску полноценного линукса на телефонах и планшетах. Сама ОС — это «ядро», поверх него устанавливается графическая оболочка, например phosh, Ubuntu Touch или Gnome. У ребят был очень прикольный стенд, они выставили с десяток девайсов, все на postmarketOS, которые можно было взять и потыкать. Это было моё первое знакомство с такими системами, и это было очень круто! Заодно позадалбывал ребят вопросами, что это вообще и как оно работает. Теперь мне даже захотелось поиграться с этим у себя! И это, наверное, главный хайлайт всей конференции.
В общем, было круто. Добраться из Нидерландов в Брюссель оказалось на удивление легко, всего около 4 часов в одну сторону на поезде или автобусе и ~40€ с человека. Ночевали мы в очень уютном хостеле всего за ~33€ с человека. То есть получилось ещё и гораздо бюджетнее, чем я предполагал. Вообще ощущения от расстояний в Европе совсем другие. От Девентера до Брюсселя аккурат 200км, что всего лишь почти равно расстоянию от Москвы до Владимира, Рязани или Тулы, хотя ощущается масштабнее.
В начале февраля съездил в Брюссель на FOSDEM — ежегодную бесплатную конференцию, посвящённую опенсорсу во всех его проявлениях. Мне очень понравилось, но не по тем причинам, что я предполагал.
Конференция была очень оживлённая: 2 дня, тысячи людей, 1055 докладов (по 30 штук одновременно), под конференцию оккупировали почти целый кампус университета. Темы докладов варьировались от компиляции Си до EU Legislation, действительно супер широкий спектр интересов.
Изначально мы составили довольно плотное расписание, планировали посетить пару десятков докладов за два дня. Но наш план не сработал. Некоторые аудитории оказались в разных концах кампуса, и дорога между ними занимала минут 10. Поэтому на back-to-back доклады успеть было физически невозможно, пришлось прореживать расписание, оставляя промежутки между докладами. Плюс на особо интересные доклады даже выстраивалась очередь перед аудиторией, и на пару из них мы вообще не попали, так как закончились места.
Но не докладами едиными живёт фосдем. Вторая, не менее крутая, часть конференции — стенды. Это такие брендированные уголочки, организованные компаниями или просто проектами. На них стоят амбассадоры, у которых можно спросить что-то про проект или просто ухватить мерча. Стендов было 88 штук, я уверен, что до некоторых мы просто не добрались. Были стенды дистрибутивов линукса (Fedora, Debian, Canonical), СУБД (MySQL, PostgreSQL, FerretDB), опенсорс приложений (VLC, Joplin, Matrix, Mastodon), CERN, OpenStreetMap, каких-то опенсорсных космических спутников и кучи других. Но особенно мне понравилась зона, посвящённая AOSP и линуксу на мобилках. Там были стенды CalyxOS, SailfishOS, AsteroidOS и в частности postmarketOS.
postmarketOS — это один из проектов, посвящённый запуску полноценного линукса на телефонах и планшетах. Сама ОС — это «ядро», поверх него устанавливается графическая оболочка, например phosh, Ubuntu Touch или Gnome. У ребят был очень прикольный стенд, они выставили с десяток девайсов, все на postmarketOS, которые можно было взять и потыкать. Это было моё первое знакомство с такими системами, и это было очень круто! Заодно позадалбывал ребят вопросами, что это вообще и как оно работает. Теперь мне даже захотелось поиграться с этим у себя! И это, наверное, главный хайлайт всей конференции.
В общем, было круто. Добраться из Нидерландов в Брюссель оказалось на удивление легко, всего около 4 часов в одну сторону на поезде или автобусе и ~40€ с человека. Ночевали мы в очень уютном хостеле всего за ~33€ с человека. То есть получилось ещё и гораздо бюджетнее, чем я предполагал. Вообще ощущения от расстояний в Европе совсем другие. От Девентера до Брюсселя аккурат 200км, что всего лишь почти равно расстоянию от Москвы до Владимира, Рязани или Тулы, хотя ощущается масштабнее.
Graphite — Github на максималках
Когда я работал в Яндексе, у нас была своя система контроля версий, которая включала в себя и Арканум — веб-интерфейс для просмотра кода и взаимодействия с пулл-реквестами. Это была in-house система, заточенная под нужды компании, и это было удобно. На текущей же работе мне пришлось использовать Github, и у меня почти сразу стало подгорать от его недостатков.
Github — весьма неплохой кусок софта, у меня нет каких-то предубеждений к нему в целом. Но проблема в том, что спектр его применения слишком широкий. Им пользуются и небольшие пет-проекты, и корпорации, и большие опенсорс-проекты с кучей регламентов. И у него просто не получается угодить всем и сразу, потому что воркфлоу у разных проектов кардинально отличаются.
У гитхаба очень быстро обнаружилась большая проблема с glanceability: большое количество информации спрятано по разным вкладкам, нужно тратить дополнительное время, чтобы её узнать. В частности, мне интересны три вещи:
- Статус CI. На гитхабе его можно увидеть либо во вкладке Checks, либо напротив последнего коммита в самом низу страницы
- Статус незакрытых комментов в ревью. В процессе ревью пр-а обычно пишут комментарии к проблемным участкам кода, которые нужно пофиксить. После фикса ветку можно отметить как resolved, и тогда она должна перестать мозолить глаза. Иногда в ветке может завязаться какая-то дискуссия, в таком случае ее тоже лучше иметь где-то в быстром доступе. На гитхабе эти ветки показываются на вкладке с кодом (но удачи скроллить через 100 файлов) и на главной вкладке Conversation (но они перемешаны с сообщениями о коммитах и прочими уведомлениями, а закрытые ветки всё ещё занимают кучу места)
- Статус самого пулл-реквеста. И я говорю не про «открыт-закрыт», а более гранулярно. Требует ли он моего внимания? Накидали ли мне в панамку? Возник ли конфликт с транком? Или мне всё ещё ждать ревью? На гитхабе такого просто нет
Graphite на самом деле не только веб-интерфейс для гитхаба, а целый инструмент, реализующий одну определенную философию работы с гитом, но об этом уже как-нибудь в другом посте. Сейчас поговорим конкретно про веб-интерфейс. Как можно видеть на втором скриншоте, плотность информации просто удивительная. Всё нужное прямо перед глазами, всё ненужное — спрятано подальше. Статус CI, незакрытые ветки, статус пр-а.
Стоит упомянуть, что Graphite — это проприетарный и весьма коммерциализированный инструмент, явно нацеленный на зажиточные компании. Но разница в UX с обычным гитхабом настолько значительная, что, даже если бы нам пришлось за него платить, свои $25 в месяц он бы отбивал (тратил бы я лишние 3 минуты в день на навигацию по гитхабу? скорее да, чем нет)
А почему я начал этот пост с рассказа про яндекс? Потому что я понял, что в аркануме все эти фичи уже были. Не уверен, кто у кого подсматривал, скорее арканум у графита, но на контрасте с гитхабом арканум был супер удобным.
Когда я работал в Яндексе, у нас была своя система контроля версий, которая включала в себя и Арканум — веб-интерфейс для просмотра кода и взаимодействия с пулл-реквестами. Это была in-house система, заточенная под нужды компании, и это было удобно. На текущей же работе мне пришлось использовать Github, и у меня почти сразу стало подгорать от его недостатков.
Github — весьма неплохой кусок софта, у меня нет каких-то предубеждений к нему в целом. Но проблема в том, что спектр его применения слишком широкий. Им пользуются и небольшие пет-проекты, и корпорации, и большие опенсорс-проекты с кучей регламентов. И у него просто не получается угодить всем и сразу, потому что воркфлоу у разных проектов кардинально отличаются.
У гитхаба очень быстро обнаружилась большая проблема с glanceability: большое количество информации спрятано по разным вкладкам, нужно тратить дополнительное время, чтобы её узнать. В частности, мне интересны три вещи:
- Статус CI. На гитхабе его можно увидеть либо во вкладке Checks, либо напротив последнего коммита в самом низу страницы
- Статус незакрытых комментов в ревью. В процессе ревью пр-а обычно пишут комментарии к проблемным участкам кода, которые нужно пофиксить. После фикса ветку можно отметить как resolved, и тогда она должна перестать мозолить глаза. Иногда в ветке может завязаться какая-то дискуссия, в таком случае ее тоже лучше иметь где-то в быстром доступе. На гитхабе эти ветки показываются на вкладке с кодом (но удачи скроллить через 100 файлов) и на главной вкладке Conversation (но они перемешаны с сообщениями о коммитах и прочими уведомлениями, а закрытые ветки всё ещё занимают кучу места)
- Статус самого пулл-реквеста. И я говорю не про «открыт-закрыт», а более гранулярно. Требует ли он моего внимания? Накидали ли мне в панамку? Возник ли конфликт с транком? Или мне всё ещё ждать ревью? На гитхабе такого просто нет
Graphite на самом деле не только веб-интерфейс для гитхаба, а целый инструмент, реализующий одну определенную философию работы с гитом, но об этом уже как-нибудь в другом посте. Сейчас поговорим конкретно про веб-интерфейс. Как можно видеть на втором скриншоте, плотность информации просто удивительная. Всё нужное прямо перед глазами, всё ненужное — спрятано подальше. Статус CI, незакрытые ветки, статус пр-а.
Стоит упомянуть, что Graphite — это проприетарный и весьма коммерциализированный инструмент, явно нацеленный на зажиточные компании. Но разница в UX с обычным гитхабом настолько значительная, что, даже если бы нам пришлось за него платить, свои $25 в месяц он бы отбивал (тратил бы я лишние 3 минуты в день на навигацию по гитхабу? скорее да, чем нет)