Telegram Web Link
🧑‍🦯 Вчера у нас в университете прошёл Accessibility Day

Сначала у нас была вступительная лекция, где нам в общих словах объяснили, что такое доступность, какие виды ограниченных возможностей бывают и почему важно делать среду доступной (а ещё по каким законам вам может прилететь, если вы не будете этого делать 🌚)

Потом у нас был мини-воркшоп по доступности в вебе, где нам рассказали про скринридеры, WCAG, ARIA и семантические теги. И даже дали применить знания на практике, предложив пофиксить кринжовый сайтик, улучшив на нем контрастность и адаптировав для пенсионеров. Впрочем, организация этого воркшопа мне не очень понравилась: как будто организаторы не понимали, на какой уровень понимания ориентироваться. С одной стороны, там рассказали про самые основы HTML и CSS и как они устроены, а с другой — задания были такие, что без понимания тонкостей не сделать по-нормальному. Получилось, что ни тем, ни тем.

Потом была лекция, где нам рассказали про доступность для слепых и слабовидящих: как в городе (тактильные выступы на тротуарах), так и в IT (скринридеры, специальные приложения для навигации). Пригласили женщину, которая всю жизнь жила с сильными нарушениями зрения, а несколько лет назад потеряла зрение полностью. Она рассказала про свой быт и продемонстрировала, как она пользуется своим айфоном с VoiceOver. А ещё показали собачку-поводыря.

Ну и наконец был ещё один воркшоп. На нём можно было попробовать передвигаться по зданию полностью вслепую, в специальных очках, симулирующих различные нарушения зрения, или на инвалидной коляске. А ещё была возможность попрактиковаться в использовании VoiceOver/TalkBack. Я смог вслепую пройти по коридору до кофепоинта, с минимальной посторонней помощью налить себе кофе в кофемашине, помыть чашку и даже сделать селфи через VoiceOver 😎

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

P.S. VoiceOver — клёвая тема. Но я был очень удивлён, насколько плохо приложения к нему адаптированы. В телеграме, например, половина функций недоступна вообще.
👍163
⌨️ Лучшей идеей за последнюю неделю стало желание наконец раз и навсегда покончить с лаганым переключением раскладки на макоси

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

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

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

Бонусный уровень — назначить переключение на капс лок. Я перешел неделю назад, пока доволен. Для этого нужно с помощью karabiner-elements переназначить капслок на любую незанятую клавишу (я выбрал F13), а потом забиндить на неё переключение раскладки.

Но обратите внимание, что логика работы немного отличается, если у вас больше двух источников ввода. Первый переключает между двумя последними (чтобы переключиться на третий, надо подержать шорткат чуть дольше), а второй просто зацикливает все раскладки и всё. У меня раскладок только две, поэтому не могу сказать, как удобнее.
🔥7😁3
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 (устройство не сертифицировано выдерживать погружения под воду, только «брызги»)

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

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

Это 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
😁164🔥3👍1
🔐 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-совместимые клиенты с синхронизацией через какое-нибудь облако)
3
This media is not supported in your browser
VIEW IN TELEGRAM
Одна полезная шелл-фича, о которой я недавно узнал — поиск по истории при нажатии ctrl+r

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

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

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

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

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

В общем, поигрался полчасика и понял, что это не моё. Ждите ещё постов.
👍10😁6❤‍🔥2👎2
Полтора года назад я попробовал Arc и влюбился в вертикальные вкладки, спейсы и Mini Arc.

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

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

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

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

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

Что думаете? Встречались с таким?
👍7😁7🔥61👎1
👨‍🎓 Университетские хроники: 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
❤‍🔥10😁4🌚41👍1🔥1
Loskir's
Полтора года назад я попробовал Arc и влюбился в вертикальные вкладки, спейсы и Mini Arc. Пару месяцев назад я попробовал Firefox+Sidebery и понял, что древовидные вкладки ещё удобнее, чем просто вертикальные. Но одних только древовидных вкладок оказалось…
Выложил на гитхаб свою тему для Sidebery, вдохновлённую дизайном Arc

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

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

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

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

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

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

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

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

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

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

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

Плюс недавно слышал новость, что Bartender продался компании со спорной историей, от которой непонятно что можно ожидать в будущем. Поэтому вдвойне приятно выбросить Bartender и перейти на опенсорсное решение. Скачать можно тут.
🔥7🐳5😁1
🏴‍☠️ Поднимаем свой 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. С мобильных устройств пользоваться нормально, а вот на мак, кажется, адекватных приложений нет (только мобильная версия, пересобранная под десктоп).
👍168😁1
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
🔥11👎61👍1
🤭 Babe wake up, new browser just dropped

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

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

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

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

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

Кому интересно, вот ссылки на таблички: додокоины и комбо
❤‍🔥19😁11👍3
2025/07/09 11:06:16
Back to Top
HTML Embed Code: