Позднее Ctrl + ↑

Доступность должна быть для всех, а курьер должен приезжать с терминалом

Почему фичи, связанные с доступностью, нужно демаргинализировать и как выглядит нормальная баскетбольная площадка. Обзор недель 2...23 мая 2021 года:

00:00 Интро. Эпл и новые фичи для доступности. Я хочу их демаргинализовать
02:32 Я пользуюсь экранным зумом на Маке
05:00 «Оплата сейчас или при получении»
07:30 Фотки из Парижа в 2019 году

Эпл показал, как часами можно будет управлять одной рукой, на которой они как раз надеты. А я постоянно пользуюсь экранным зумом на Маке. А на сайтах лучше не грузить терминалом у курьера, а дать выбирать время оплаты: сейчас или при получении. А Париж, ладно, оказался более-менее красивым.

Демаргинализация доступности

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

На днях Эплы анонсировали новые фичи, связанные с доступностью.
Зацените особенно видео под заголовком AssistiveTouch for Apple Watch — ну офигеть же! Они ставят высокую планку для всей индустрии.

Но мне кажется, что есть ошибка в позиционировании «для людей с ограниченными возможностями» как для отдельной узкой группы людей. Из-за того, что многие волшебные фичи Мака и Айфона спрятаны в дебрях раздела «Доступность», люди о них не в курсе, потому что не считают себя «инвалидами». По той же причине этот пресс-релиз не заинтересует большинство людей.

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

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

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

Оплата сейчас или при получении

Нередко на сайтах есть выбор вариантов оплаты:

Оплата
картой онлайн
картой курьеру
наличными курьеру

С таким дизайном две проблемы. Одна простая: нефиг заставлять меня заранее решать, предпочту ли я наличные или карту, когда придёт курьер. Курьеры уже давно всегда с терминалами ездят (а если ваши не ездят, то пусть заездят), так что не грузите.

Остаётся два варианта:

Оплата
онлайн
курьеру

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

Суть выбора — вот:

Оплата
сейчас
при получении

Выбирать проще — конверсия выше.

Аудио по четвергам: Чемпион мира

Боже, какая красота:

Я даже уже научился подпевать первый куплет и припев.

Немного взрывает мозг, когда время идёт слева направо по тексту, написанному справа налево:

Если вы тоже хотите, чтобы у вас в меню показывалось название играющей песни, ставьте Эмси.

Саундклауд

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

Эгея v3849

Вышёл четвёртый сервис-пак для Эгеи 2.10, сборка v3849. В целом, в Эгее 2.10 давно всё в порядке, но когда накапливаются разные фиксы, хочется их выпускать.

Исправлены такие баги:

  • в выпадайке тегов в теме Ченсери эти теги больше не пишутся белым по белому и другой тюнинг тем оформления (сорян);
  • в роликах Ютюба, вставленных как youtu.be, не работала навигация по таймкодам;
  • в инсталяторе вместо выпадайки доступных баз данных могло оставаться просто поле для ввода названия базы;
  • если удалить заметку, пока какие-то комментарии к ней были непрочитанными, кружок с числом непрочитанных комментариев больше не зависает в правом верхнем углу (не думаю, что хоть один человек сталкивался с этим багом, но всё же);
  • в инкрементальный бекап теперь записываются только те запросы к базе, которые успешно выполнились (теоретический ход);
  • при использовании конфигурации базы данных через переменные окружения (появившемся в прошлой сборке) их значения больше не сохраняются в файл settings.json;
  • если несколько Эгей установлены в разных папках на одном домене, и во всех них начать писать, но ни разу не сохранить в черновик, разные заметки, то они такие заметки могли потеряться при перезагрузке страницы;
  • на страницах пустых списков заметок могло не отображаться сообщение, что «таких заметок нет», если оставались несохранённые на сервер изменения в каких-либо заметках;
  • в Настройке если попытаться скачать бекап, когда ни одного бекапа нет (например, если их удалить вручную с сервера), теперь он автоматически создастся;
  • ещё более эзотерические мелочи.

А также:

  • добавлена страница подготовки к переходу на будущую версию Эгеи для давних пользователей (см. про Каллиопе ниже);
  • ссылки на профили авторов комментариев, зашедших через Вконтакте, теперь ведут на нормальный именованный адрес их страницы, а не на айдишник;
  • добавлена проверка на наличие модулей pdo и pdo-mysql (если их нет, Эгея сразу говорит, что не будет работать, а не компостирует мозг необъяснимыми ошибками позже);
  • сделано ещё несколько шагов в сторону совместимости с ПХП 8, но всё ещё официальной поддержки нет.

Об окончательном избавлении от Каллиопе в следующей версии

Для тех, у кого Эгея больше восьми лет, важно вот что.

У вас могли остаться заметки, созданные на старом форматтера Каллиопе. Каллиопе не включён в дистрибутив Эгеи 2.10, и на месте таких заметок в 2.10 отображается сообщение об этом. Если это ваш случай, вы не можете не знать о чём речь: вам уже пришлось или пересохранить старые заметки с новым форматтером Нисден, или доустановить Каллиопе, чтобы их стало видно.

Так вот, в следующей большой версии Эгеи не будет поддержки Каллиопе вообще, даже если доустановить. Поэтому в этой сборке v3849 появилась специальная страница /settings/calliope/, где показываются все заметки, которые могут измениться при будущей конвертации в Нисден. Я рекомендую заглянуть туда, и если там что-то есть, отредактировать и сохранить каждую заметку, подправив форматирование при необходимости.

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

Как обновиться и надо ли

Процедура обновления стандартная: заменить .htaccess, папку /system/ и все подпапки /themes/ новыми.

Обновляйтесь по желанию, ничего срочного. Но если у вас Эгея больше восьми лет, рекомендую обновиться и заглянуть на страницу /settings/calliope/.

Свежий дистрибутив — на сайте движка.

Париж в 2019 году

В начале марта 2019 года я ездил в Париж — прочитать доклад на симпозиуме транспортных картографов. Симпозиум! До этого я был в Париже аж в 2010-м году.

Начну, пожалуй, разгребать фотки.

На этот раз мне показалось, что ладно, Париж всё-таки местами красивый.

Вход в метро:

В здании местного дептранса, где проходил симпозиум, стоит автобус:

Ещё у них ездят какие-то стильные такси G7:

Красивые витрины:

Тоже ничё:

Иду как-то по улочке, а там аж вон какие цвета (и жёлтый мотороллер рядом!):

На текст на стене слева тоже обратите внимание.

Внутри — баскетбольная площадка:

Уже после поездки она мне пару раз попадалась в Пинтересе.

Ух ты:

Обращает на себя внимание традиция записи телефонов через точку:

Тут тоже есть почтовый банк. Заодно откладываем себе пиктограмму банкомата:

Домики:

Кажется, тут было бы уютно работать и пить кофе, но в этот момент я куда-то бежал:

Фотографии из поездки в марте 2019 года. Во всех заметках про путешествия снизу есть поиск дешёвых авиабилетов. Слетайте в Париж! (Когда дадут)

Разбор дизайна шахматного гейминга Ворлд Чесс: лобби и сама игра

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

00:00 Интро и слова про любовь и шахматы
01:35 Лобби: выбор тайм-контроля и подбор оппонента. Регулятор рейтинга и цвета фигур. Идея необязательной настройки.
03:38 Интерфейс игры: доска, фигуры, нотация. Неформальный стиль. Отображение сделанных и возможных ходов. Предложение ничьей и сдача. Рокировка. Перетаскивание фигур на мобиле, когда закрываешь их сам себе пальцем. Шах.
05:44 Официальный стиль для игр ФИДЕ. Фирменная доска. Отображение очерёдности хода. Подсветка полей. Почему здесь не показаны допустимые ходы и шах в официальной игре. Восприятие доски профессионалом: комментарий Владимира Крамника
09:47 Интерфейсные дела: почему всё же показываем допустимые ходы их в неформальном стиле, как работает меню игры, как работает камера видеонаблюдения. Завершение игры. Переворот доски (особый режим). Настройка стиля оформления
13:39 Шахматные фигуры бюро. Шрифт «Авербах». Режим разбора партии, «шагалка».
14:48 Как конвертируем пользователя в зарегистрированного и далее в подписчика. В конце игры, в Лобби. Превращения кнопки Quick Game
17:09 Начало работы над игрой. Изучаем контрастный стиль Ворлд Чесса. Ищем новый стиль палитру для интерфейса: контраст против спокойствия, блики
19:34 Дизайн экранных фигур Ворлд Чесса и фигуры бюро. Примеряем и то, и то, и ещё 3Д-фигуры из официального набора. Показываем клиенту первый подход
25:22 Ищем второй стиль доски для официальных игр. Упихиваем всё в мобилу. Увеличиваем часы. Сначала предложение ничьей и сдача сначала жили в меню игры (так нельзя). Весёлое завершение игры
28:07 Начало работы над Лобби. Интерфейс прямо в доске. Интерфейс слева от доски. Мобильная версия Лобби. Выбиралка и график распределения игроков по рейтингу.
30:38 Любимая картинка: тексты и состояния главной кнопки в зависимости от предпочтений по рейтинговости игры и статуса пользователя. Задротское объяснение с диаграммами для разработчиков
35:02 Придумываем мотивационные карточки в конце игры. Парочки взятых фигур. Превращение пешки в ферзя или не ферзя: нормальный интерфейс выбора.
37:03 Игровое меню и меню сайта: как это всё мобилизовать? Объяснение работы сайта на широких и высоких окнах, диаграммы скелета и распорок.

Задача: реализовать ленивую загрузку в Эгее

Это задание на разработку фичи в Эгее. Если вы хотите реализовать эту задачу, напишите мне.

Задача

Задача: снизить нагрузку на сервер и на браузер пользователя, реализовав умную ленивую загрузку изображений и видосов в Эгее.

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

Тупые скрипты ленивой загрузки загружают картинки только тогда, когда они появляются в поле зрения, да ещё и не дают никакой индикации того, что идёт загрузка. Яркий пример клиники — Медиум. Там в лонгридах полная жесть: вместо всех картинок разблюр, который превратится в картинки когда-нибудь если повезёт.

Эгея должна уметь предзагружать картинки заранее, оценивая, как человек читает. Если он просто постепенно прокручивает, то надо, чтобы было загружено на несколько картинок и видосов вперёд. Если он взялся за полосу прокрутки и быстро крутит, периодически задерживаясь где-то, значит он что-то ищет — надо скорее загрузить все картинки, а видосы можно и не грузить. Если человек резко домотал страницу до низа, а потом сразу до верха, скорее всего он пытается добиться от загружалки, чтобы всё заранее скачалось — значит, всё должно скачаться. Это всё мои соображения, возможно, вы их чем-то дополните.

Хорошо бы, чтобы была возможность задать конкретные лимиты: не предзагружать больше X мегабайт или ещё что-то.

Если так или иначе оказалось, что пользователь докрутил до картинки, которая пока не скачалась, было бы хорошо дать какую-то индикацию того, что идёт загрузка.

На момент открытия страницы какие-то картинки могут уже быть в кеше браузера пользователя. Такие картинки должны сразу показаться безо всяких индикаций и тупняка.

Важно, что вся эта автоматика должна распространяться только на выбранные картинки и видосы, а не на что попало. Возможно, они должны быть помечены в коде определённым классом или дата-атрибутом.

Ссылки по теме:

Результат

Во-первых, вариант минимум. Результатом должен стать скрипт управляемой загрузки, который можно будет добавить в набор скриптов Эгеи, и всё заработает. Не должно быть никакого кода, который нужно вызывать, чтобы скрипт «сработал»: он должен сам вызываться, когда страница к этому готова, просто потому что он к ней подключен, и действовать на все картинки и видосы, которые помечены соответствующим образом. У меня там есть Вебпак.

Во-вторых, вариант максимум. Вообще, у меня есть скрипт управляемой загрузки Эмёрдж. Он отвечает именно за порядок отображения и анимацию появления картинок, но не за управление их скачиванием с сервера. Идеально было бы вообще сделать Эмёрдж 2: переписать на чистом современном Джаваскрипте; добавить нужную Эгее логику; встроить в Эгею.

Ссылки по теме:

Условия участия

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

Разрешить «бессмысленные» действия в интерфейсе

В одном из недавних видосов я говорил:

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

Я там привёл несколько примеров.

Как не надо

В Файндере несколько лет назад появилась команда New Folder with Selection (⌃⌘N). Если выделить несколько файлов или папок и вызвать её, она создавала новую папку, перемещала в неё всё выделенное и давала назвать папку. Похоже на функцию «Сгруппировать» в графических программах. Когда эта функция появилась, она работала только если изначально было выделено хотя бы два файла. Если просто курсор стоит на файле, «завернуть» его в папку этой командой было нельзя. Видимо, программист решил, что группировать один файл «нет смысла».

А у меня как у пользователя руки привыкли жать ⌃⌘N независимо от числа выбранных файлов, и для меня совершенно необъяснимо, почему в каких-то ситуациях это не работает. В более поздних версиях Макоса нелепое ограничение убрали.

В Фотошопе есть команда Copy Merged (⇧⌘C). Обычное Copy копирует выделенное изображение из текущего слоя, а Copy Merged копирует область выделения целиком, как если бы картинка была плоской, без слоёв. По загадочным причинам эта функция перестаёт работать, если картинка и так плоская, из одного слоя. Видимо, программист решил, что раз в этом случае обычное Copy делает то же самое, то делать Copy Merged «нет смысла».

А у меня как у пользователя руки привыкли жать ⇧⌘C независимо от количества слоёв в документе. Я вообще не осознаю, сколько там слоёв, я же их постоянно добавляю или склеиваю. То есть снова, для меня это просто выглядит так, будто функция иногда не срабатывает. Тут проблема усугубляется тем, что при копировании нет никакой обратной связи, поэтому ты даже не знаешь, что команда не сработала. Копируешь, идёшь в телеграм кому-то отправить, вставляешь — а там вставляется что-то, что у тебя до того в буфере обмена было.

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

И вот я вспомнил про ещё одно такое псевдобессмысленное действие.

На Маке есть сочетание клавиш ⌘H, которое означает скрыть текущее приложение. Я им пользуюсь постоянно: приложение остаётся в списке ⌘Tab, и если в него переключиться, то оно снова появится. Для сравнения, вызволять из Дока свёрнутое через ⌘M окно приходится с помощью мыши, да и анимация там утомляет. Так вот, Мак не даёт скрыть приложение, если оно последнее не скрытое. Видимо, программист решил, что в ситуации, когда не видно ни одного приложения, «нет смысла».

А у меня как у пользователя руки привыкли жать ⌘H независимо от того, сколько в данный момент в системе скрыто приложений, а сколько нет. Я вообще понятия не имею об этом! Вот передо мной последнее окно Файндера, я жму ⌘H, ожидая увидеть рабочий стол, а окно не пропадает! Можно было бы подумать, что это потому что рабочий стол сам является Файндером, но нет: если нажать ⌘H в Файндере, когда есть другие видимые приложения, окна Файндера без проблем исчезают.

Как надо

Если вы разработчик, и вы считаете какое-то действие в вашем интерфейсе бессмысленным, просто сэкономьте себе время, не пишите код, который его запрещает! Этот код не приносит никакой пользы. В лучшем случае эффект этого кода никто не заметит, а в худшем он будет мешать работать. А дальше если действие, которое вы считает бессмысленным, используют люди, самое время задаться вопросом: почему? Что вы упустили? Какой сценарий не приходил вам в голову? Возможно, люди видят в этом действии какой-то другой смысл, который вы сами в него даже не вкладывали.

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

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

Ранее Ctrl + ↓