Telegram Web Link
Nothing Phone (2)

Последние 8 месяцев я пользуюсь iPhone 14 Pro в качестве основного устройства. Он меня вполне устраивает, но иметь на руках девайс на андроиде тоже иногда оказывается полезно. Будь то просто для души, заценить какие-нибудь новые системные фишки, или запустить приложения, недоступные на iOS (например, Тинькофф Мобайл или Юмани). Так как свой Pixel 6 Pro с разбитым экраном я так и не починил и в итоге продал на местном Авито, а старенький Xiaomi Mi8 совсем отбросил коньки, я остался без второго девайса. И после долгих колебаний купил Nothing Phone (2)

Кратко по плюсам и минусам:

+ Хакабельность. Загрузчик разблокируется буквально в две команды, есть кастомные прошивки и сообщество вокруг них. Впрочем, стоковая прошивка тоже хороша, эстетика Nothing мне понравилась
+ Флагманский проц, 120гц LTPO экран
+ Хорошее стерео. Казалось бы, базовая фича, но после опыта с Pixel 5 я стал ценить мелочи жизни
+ Плёнка на экране из коробки
+ Одинаковые рамки вокруг экрана, приятные плоские кнопки а-ля айфон

- Лопата. По размерам почти один в один как iPhone Plus / Pro Max, что для меня великовато. Плоские грани и скользкий задник тоже не улучшают «хватабельность»
- Кнопки громкости тут расположены на левой грани, но как по мне слишком низко. Одной рукой скриншот делать не очень удобно (но это потому что я левша)
- Очень странное вибро, моторчик как будто дребезжит и издает ноту при вибрации (в Айфоне при сравнении тот вообще беззвучный)
- Нет есим. Оказывается, очень удобно, когда новую симку можно оформить прямо удаленно. У меня даже сейчас мобильный интернет в Нидерландах через есим
- Нет телефото камеры и макро-режима. Основную камеру пока не тестировал
- Влагозащита IP54 (устройство не сертифицировано выдерживать погружения под воду, только «брызги»)

В общем, брал в качестве второго устройства, но сейчас стал серьезно задумываться о переходе на андроид. Впрочем, сначала надо найти альтернативу для тех юзкейсов, с которыми айфон справляется лучше. Но это уже тема для отдельного поста
This media is not supported in your browser
VIEW IN TELEGRAM
В Нидерландах на железнодорожных станциях установлены занятные часы: минутная стрелка на них перескакивает по одному делению раз в минуту. И даже секундная стрелка двигается не равномерно, а приостанавливается напротив каждого деления.

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

Это Amazon Q for command line (ex. Amazon CodeWhisperer, ex. fig.io), часть ии-помощника для кодинга от Amazon. Да, с брендингом у них полная каша.

Конкретно этот инструмент добавляет попап с автодополнением команд в терминал (и отдельный, и интегрированный в IDE). Работает из коробки и с дефолтным completion, и добавляет свои кастомные, например npm-команды, которые из коробки дополняться не умеют.

Доступно, к сожалению, только для macOS. Скачать можно по ссылке (даже лендинга нормального не сделали). При запуске просит залогиниться, но это можно обойти через ПКМ → inspect element → удалить 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 1password vs Bitwarden

Спустя три года таки решился сменить парольный менеджер. Раньше я использовал бесплатный не-селфхостед вариант Bitwarden, а теперь перешёл на 1password, который в Github Student Developer Pack доступен на год бесплатно.

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

На iOS и Android на самом деле разница оказалась не очень заметной благодаря тому, что системные апишки заполнения паролей работают нормально с любым парольным менеджером, который адекватно их использует. Отмечу только, что ни iOS, ни Android не позволяют добавить несколько источников паролей: либо заполняется из Bitwarden, либо из 1password (только эпл считерил и позволяет использовать iCloud Keychain параллельно с одним внешним источником).

А вот на десктопе (макось в моём случае) браузерное расширение у 1password гораздо удобнее чем у Bitwarden.
Во-первых, интеграция с десктопным приложением для разблокировки по Touch ID. Важная и удобная фича, потому что вводить мастер-пароль каждый раз совсем не хочется. В 1password всё реализовано из коробки и ощущается очень нативно: запрос отпечатка появляется сразу же после нажатия на кнопку "Разблокировать". В Bitwarden же это надо включать отдельно, работает долго и неудобно.
Во-вторых, интерфейсно: у 1password приятнее задизайнены юзкейсы заполнения пароля, сохранения новой записи в базу, использования пасскеев.

Ещё одна фича 1password, которая мне показалась просто гениальной — он умеет сохранять, какой аккаунт использовался для OAuth в конкретном сервисе. И ведь это реальная проблема, порой приходишь на сайт и не помнишь, логинился ты через гугл или гитхаб.

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

В общем, пока что о переходе не жалею. Ещё год у меня есть на подумать. И даже если потом меня будет душить жаба отдавать 5 баксов в месяц (или даже меньше, если оформить семейную подписку), то это будет повод поресерчить другие способы хранения паролей (например, keepass-совместимые клиенты с синхронизацией через какое-нибудь облако)
This media is not supported in your browser
VIEW IN TELEGRAM
Одна полезная шелл-фича, о которой я недавно узнал — поиск по истории при нажатии ctrl+r

Очень удобно бывает найти какую-нибудь сложную команду, которую вводил когда-то давно

В fish идёт из коробки, в zsh советую плагин zsh-fzf-history-search (на видео)
Меня всё никак не покидает идея сделать свой настоящий блог (может даже переводить какие-то посты на английский?), но руки не доходят уже наверное год как.

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

Из плюсов: запускается в две строчки и из коробки весьма хорошо смотрится и работает. Для простенького блога набросать за 15 минут — самое то. И RSS из коробки есть.

Теперь к недостаткам:
- Нет SSG, то есть блог не билдится в статику, а требует рантайма. Более того, нет даже этапа сборки. Это значит, что .md файлы компилируются в html на лету (может быть кешируются, не знаю). С одной стороны ожидаемо от команды Deno, которым выгодно продвигать свой serverless сервис Deno Deploy, но совсем не то, что я бы хотел в своем блоге.
- Из фич есть только сааамые базовые. Нет поддержки мультиязычности, нет подсветки синтаксиса в коде. Наверняка ещё кучи всего нет, я копал не так глубоко.

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

Пару месяцев назад я попробовал Firefox+Sidebery и понял, что древовидные вкладки ещё удобнее, чем просто вертикальные. Но одних только древовидных вкладок оказалось недостаточно, чтобы перебраться с Arc на Firefox.

Последние несколько дней я усиленно копался во внутренностях лисы, чтобы слепить себе идеальный браузер. Я перебрал все настройки Sidebery, попробовал несколько userChrome кастомов и даже научился кастомить интерфейс самостоятельно.

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

Замечаю за собой, что часто вместо того, чтобы фокусироваться на каком-то одном решении проблемы, поддерживаю параллельно два варианта. Например:
- У меня на маке сейчас настроен и zsh, и fish. Оба шелла настроены примерно одинаково, но я никак не могу выбрать один вместо другого. Сейчас пользуюсь fish, но за пару месяцев несколько раз переключался туда-обратно.
- Хоть в основном я пользуюсь Arc, сейчас пытаюсь настроить Firefox (см. предыдущий пост). У каждого браузера есть свои уникальные фичи, и я никак не могу выбрать один из них.
- То же самое с iPhone и Android. У меня на руках iPhone 14 Pro и Nothing Phone (2). Я устраивал тестовую неделю «если бы я перешел на андроид», но в итоге вернулся обратно на айфон. За последние три года я три раза метался между андроидом и яблоком.

И тут я задумался: а стоит ли оно того? С одной стороны, я трачу вдвое больше сил вместо того, чтобы отдаться одной стороне и получать удовольствие. А с другой стороны, у этого есть свои преимущества.
Во-первых, мне нравится этим заниматься. Если бы мне не нравилось, я бы не занимался 🤷‍♂️.
Во-вторых, это понижает степень моей вендорлокнутости. Благодаря тому, что оба решения примерно равны по удобству, я точно знаю, что, если моё текущее решение загнётся, я легко смогу перейти на другое.
Ну и в-третьих, что если это ошибка выжившего? Если в этих случаях у меня не получилось занять одну из сторон, не стоит переставать инвестировать в альтернативы. Может быть, в другой раз победитель нарисуется сам по себе, и мой экспириенс только выиграет.

Что думаете? Встречались с таким?
👨‍🎓 Университетские хроники: Web Basics

Одним из предметов в последней четверти этого года были Web Basics. Как можно понять из названия, там нас учили основам веб-разработки, а именно фронтенду (чистый html+js+css) и бэкенду (nodejs+express+sqlite)

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

Как и у многих других предметов, у Web Basics не было никаких промежуточных элементов контроля, только один главный дедлайн, к которому надо написать своё фулстек-приложение (в одиночку, не группой).

Проект состоял из трёх основных частей: бэкенд, фронтенд и документация.
Бэкенд должен быть написан на nodejs, использовать express и sqlite в качестве БД, иметь минимум 3 сущности с отношениями между ними, REST-compliant апи для взаимодействия с CRUD операциями. ESM обязателен, CJS харам. Typescript нельзя 😨
Фронтенд должен быть написан на html+js+css без js-фреймворков и библиотек, без этапа сборки, с использованием флексов/гридов и медиа выражений (oddly specific but ok). Server-side рендеринг нельзя, для подгрузки данных только fetch.
В документации надо было сделать спецификацию апи (с помощью swagger или в goofy ahh docx template который нам предоставили), пару sequence diagram, wireframes (это как макеты, только ещё более на минималках) и обоснования для нестандартных решений (я там похвастался что затащил kysely для работы с БД, valibot для валидации и prettier для форматирования)

Предметную область можно было взять любую, я выбрал максимально дефолтную: таск-трекер с тегами и комментариями (не спрашивайте). Проект, на который нам давалось 7 недель, я начал за 2.5 дня до дедлайна. Темп был весьма ударный, как на тех видосах с потным спидраннером. Но, в принципе, успел сделать всё что требовалось. Конечно, некоторые углы пришлось срезать (например, нигде не было написано что все CRUD-операции должны быть доступны с фронта, поэтому редактирование тегов и комментариев я не реализовал). Сложнее всего было писать код без тайпскрипта и реактивного фреймворка. К хорошему быстро привыкаешь, и поэтому написание небезопасного и императивного кода казалось просто пыткой.

За проект я получил 9/10. Часть баллов сняли не потому что что-то не успел, а потому что прикопались к коду (например, им не очень понравилось как я разделил бэкенд на слои). Хотя я бы и поспорил с некоторыми фидбеками, в общем и целом я доволен оценкой.

Сложность: 1/10
Приятность: 7/10
Польза: 2/10. С нуля скорее всего полезнее, но лично я не узнал чего-то нового.

Интересный факт: в начале следующего года у нас будет предмет Web Advanced, где на фронте можно будет использовать реактивщину. Получается, что страдания первогодок с document.createElement оказались напрасны.

В комментах выложу мини демку и кусочки документации (выкладывать весь код на github мне стыдно)
Please open Telegram to view this post
VIEW IN TELEGRAM
Loskir's
Полтора года назад я попробовал Arc и влюбился в вертикальные вкладки, спейсы и Mini Arc. Пару месяцев назад я попробовал Firefox+Sidebery и понял, что древовидные вкладки ещё удобнее, чем просто вертикальные. Но одних только древовидных вкладок оказалось…
Выложил на гитхаб свою тему для Sidebery, вдохновлённую дизайном Arc

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

Кроме того, добавил и quality of life твики вроде мультистрочных названий вкладок. Хоть смотрится не очень чисто, но для меня очень полезная фича. За это мне и нравится кастомизация — можно найти свой баланс дизайна и пользы, и никакие дизайнеры со своим видением прекрасного не могут мне помешать 😈

Использовать очень просто — копируете style.css и вставляете в специальное поле в настройках Sidebery. На самом деле я даже не ожидаю что эти стили подойдут вам из коробки, скорее что их можно использовать как образец или просто скопировать какие-то решения себе.

https://github.com/Loskir/sidebery-theme-arc
🌇 Immich — селфхост хранилище фотографий здорового человека

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

Я был удивлён тем, насколько он хорошо работает. Сервер разворачивается через docker compose в пару команд, подключиться к нему можно через веб-интерфейс или мобильное приложение. Клиенты довольно удобные, иногда даже забываешь, что это FOSS.

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

Есть поддержка геопозиций, нескольких пользователей, live photos, альбомов, распознавания лиц и даже публичного шаринга. И всё это полностью на своём сервере!

Так что всем селфхост энтузиастам советую обратить внимание на этот проект. А сам я, наверное, так и буду разрываться между GPhotos, iCloud и Immich.
Loskir's
🎩 Самая неприятная мелочь в новых макбуках — в меню-бар не помещаются все иконки! Мало того, что чёлка занимает место, так еще и иконки не перепрыгивают на левую сторону. В итоге некоторые иконки просто недоступны, а общее количество доступного места уменьшилось…
Опенсорсная замена Bartender

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

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

Плюс недавно слышал новость, что Bartender продался компании со спорной историей, от которой непонятно что можно ожидать в будущем. Поэтому вдвойне приятно выбросить Bartender и перейти на опенсорсное решение. Скачать можно тут.
🏴‍☠️ Поднимаем свой VPN в Docker

У меня уже пару лет как поднят свой сервер Wireguard в docker-compose. Всё это время он отлично выполнял свою задачу, но недавно в России начали блокировать протокол Wireguard, и VPN отвалился на большинстве операторов связи.

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

1. Marzban
Это all-in-one решение для селф-хостинга VPN. Работает на базе xray, обещает быть устойчивым к блокировкам. Для подключения к нему нужно использовать специальные клиенты, сравнение можно посмотреть на сайте VPN от вастрик.клуба. Я советую Streisand для iOS и v2rayNG для Android. На мак пока не настраивал.
Поднимается легко, нужно только прокинуть несколько портов. Сервер выдаёт общую ссылку-подписку, которую можно добавить в клиент, и туда автоматически подтянутся все актуальные способы подключения к серверам. Поднял в том числе и ноду у себя дома в России, чтобы из-за границы можно было иметь российский IP.
Можно делиться VPN с друзьями, создав каждому по собственной учётке. При желании можно даже ограничить количество трафика или время действия.

2. AmneziaWG Easy
Это сборка, аналогичная wg-easy (который у был поднят у меня), но с AmneziaWG под капотом. AmneziaWG — это форк протокола WireGuard, созданный русскими умельцами специально для обхода блокировок. Здесь тоже есть веб-админка, позволяющая создавать отдельные данные для входа каждому пользователю VPN. Правда, для подключения придётся использовать другие приложения: Amnezia или AmneziaWG. С мобильных устройств пользоваться нормально, а вот на мак, кажется, адекватных приложений нет (только мобильная версия, пересобранная под десктоп).
Media is too big
VIEW IN TELEGRAM
Смотрите, какую багофичу нашёл на Яндекс картах

Строящийся небоскрёб в Сити имеет полупрозрачную текстуру, но 3д здания за ним превращаются в 2д.

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

Посмотреть можно тут: https://yandex.ru/maps/213/moscow/?ll=37.543459,55.754281&tilt=0.8726646259971648&z=17.52
🤭 Babe wake up, new browser just dropped

Zen Browser — очередной необраузер, на этот раз на базе Firefox. Разрабатывается не VC-backed стартапом, а чуть ли не в одиночку. А код, кстати, открыт.

Среди фич — нативные вертикальные вкладки, split view, кастомизация, магазин тем. Пока что браузер находится в альфа-стадии, поэтому иногда встречаются кривоватые моменты и недоработки. По удобству, конечно, не дотягивает до моего закастомленного Firefox-а (хотя в Zen в теории можно реализовать штуки, которые нельзя закастомить в самой лисе), но из коробки очень даже приятен.

Кстати, доступен не только под макось, но и под винду с линуксом. Скачать-потыкать можно тут
🍕 Додо-аналитика 2024 edition

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

• Бруслетики больше не самый выгодный товар за додокоины! Теперь на первом месте с большим отрывом средняя пицца Цыпленок барбекю
• С комбо ситуация почти не изменилась. 2×30 всё так же стабильно выгоднее, чем 3×30. Также добавил в табличку комбо 3×25
• Цены слегка отличаются по регионам, но общая картинка сохраняется. Зато цены в додокоинах от региона не зависят. Это значит, что в дорогих регионах тратить додокоины выгоднее!

Кому интересно, вот ссылки на таблички: додокоины и комбо
Galaxy Tab S9

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

Откинув бюджетные модели по одному из параметров выше, я пришёл к трём вариантам: айпады, Huawei MatePad Pro 11 и Samsung Galaxy Tab S9. Айпады быстро отвалились, потому что за адекватную цену там либо IPS экран, либо 60 герц, либо и то и то, а новые прошки стоят раза в два дороже. Между хуавеем и самсунгом я таки выбрал самсунг, потому что стоили они примерно одинаково, характеристики у них сопоставимые, но у самсунга новее проц (плюс у меня было больше доверия самсунговской оболочке).

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

Планшетом я крайне доволен. По железу всё как и ожидалось: ярко, плавно, быстро. А вот софт меня приятно удивил: в One UI пофиксили почти все недочёты, которые бесили меня в AOSP / гугловской оболочке. Остановка записи экрана без залезания в шторку, приятный календарь, продвинутая многозадачность. До режима Slide Over на айпаде по удобству не дотягивает, но как будто это самое близкое к iPadOS, что можно получить на андроиде. One UI мне настолько понравился, что подумываю следующим андроид-телефоном взять именно самсунг

Чехольчик сомнительный, но окэй. Бока не совсем защищает, впрочем как и Smart Folio для айпада. На задней части есть смешно раскладывающаяся подставка (можно ставить как горизонтально, так и вертикально) и откидная крышка для стилуса. Зарядка для стилуса на задней панели выглядит странно, но я уже привык; разве что корпус становится чуть толще. Передняя панелька совсем дурацкая, я её вообще снял. Она выполнена в виде сплошного плоского листа (в отличие от айпадной, которая складывается в двух местах). Более того, на задней панели она никуда не примагничивается, и просто болтается туда-сюда.

Про стилус мне особо нечего сказать. Есть ховер эффект (когда планшет замечает стилус в паре сантиметров от экрана, а не только при касании) и кнопка (в разных приложениях можно выполнять разные действия по нажатиям или жестам в стороны). За счёт прорезиненного наконечника возникает больше трения об экран по сравнению с айпадом, что на мой субъективный взгляд ощущается даже приятнее. Но опять же, я стилусом почти не пользуюсь.
2025/07/05 02:32:12
Back to Top
HTML Embed Code: