Август 2018: краткая история убийств в Ultima Online, фейк-фильтр, правильные формы для ввода кредиток и гугловские SRE

Локализация это не только про перевод на новый. Хорошая локализация это всегда непросто. Интересный пример: https://twitter.com/hermansaksono/status/1026277395391807488

“Congrats” in Indonesian is “selamat”. Selamat also means “to survive.” After the 6.9 magnitude earthquake in Lombok, Facebook users wrote “I hope people will survive”. Then Facebook highlighted the word “selamat” and throw some balloons and confetti.

Эта цитата как-то очень сильно во мне отозвалась.

A huge percentage of the stuff that I tend to be automatically certain of is, it turns out, totally wrong and deluded. Here’s one example of the utter wrongness of something I tend to be automatically sure of: everything in my own immediate experience supports my deep belief that I am the absolute centre of the universe, the realest, most vivid and important person in existence. We rarely talk about this sort of natural, basic self-centredness, because it’s so socially repulsive, but it’s pretty much the same for all of us, deep down. It is our default setting, hard-wired into our boards at birth. Think about it: there is no experience you’ve had that you were not at the absolute centre of. The world as you experience it is right there in front of you, or behind you, to the left or right of you, on your TV, or your monitor, or whatever. Other people’s thoughts and feelings have to be communicated to you somehow, but your own are so immediate, urgent, real - you get the idea. But please don’t worry that I’m getting ready to preach to you about compassion or other-directedness or the so-called “virtues”. This is not a matter of virtue - it’s a matter of my choosing to do the work of somehow altering or getting free of my natural, hard-wired default setting, which is to be deeply and literally self-centred, and to see and interpret everything through this lens of self.

Вся статья: https://www.theguardian.com/books/2008/sep/20/fiction (английский).
Или видео: https://www.youtube.com/watch?v=8CrOL-ydFMI

Потрясающая история про геймдизайн (и последствия решений): “Краткая история убийств в Ultima Online” (на русском). И оригинал на английском.

Ultima Online это одна из первых MMORPG и ее геймдизайнеры решили избавится от “убийц игроков”, ребят, которые убивали других и портили им игру просто для фана. Как оказалось у любого действия есть последствия второго, третьего и т.д. порядков, а люди с удовольствием находят уязвимости в любых правилах.

Очень интересная история. Особенно для продакт-менеджеров.

Пару лет назад был скандал с компанией Theranos. Компания была на слуху, много инвестиций, а оказалось, что там все фейк и десять лет всех водили за нос. Журналист, который вытащил всю эту историю на свет, написал книгу “Bad Blood”. В этой статье интересное ревью и выжимки из этой книги: “Some thoughts after reading “Bad Blood: Secrets and Lies in a Silicon Valley Startup”.

Удивительно, насколько убедительное и уверенное поведение может убедить всех вокруг в чем угодно. Надо всегда об этом помнить (и использовать как инструмент).

В любой киберпанковской книжке есть тема “киберпространства”. Виртуальная реальность, куда чуваки выходят и там делают разное. Обычно оно описывается как весьма серьезное (и опасное) место.

А наверное на самом деле оно будет выглядеть как-то вот так.

Можно тыкать в любое видео из плейлиста, а потом в любое место видео. Фан и немного безумия.

Ближе всех наверное описал это Стивенсон в Лавине.

У Square (это такая очень известная компания в US) есть возможность включить прием appointments. Это когда бизнес продает свое время и услуги: парикмахерские, массажные салоны, психотерапевты, сантехники и так далее.

Так вот у них есть интересная возможность: Fake-it Filter. Это когда часть доступных временных слотов скрываются, чтобы сделать вид, что бизнесом пользуются. И это очень правильная штука — иначе начинающим сильно сложнее — никто не хочет быть первым клиентов у сервиса, никто не хочет заказывать у сервиса, которым никто не пользуется.

Oh, wow, вот пример развития технологий за последние 20 лет. Windows 2000 можно запустить в браузере, используя JavaScript (ну ок-ок, там WebAssembly, но все же). И на моем телефоне работает быстрее чем на моем же ноутбуке.

Попробовать: https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/win2k.cfg&mem=192&graphic=1&w=1024&h=768 Загружается не так быстро, подождите. На телефоне могут тупить тапы, так как ждет мышку.

Интересно экстраполировать этот же прогресс на 20 лет вперед.

Я очень не часто ругаю чужие интерфейсы публично и играю в игру “посмотрите какие дураки”.

Но тут у меня прям бомбануло с одного опыта — не могу не поделиться.

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

Жму кнопку “Create Password” и вижу странный экран, где мне предлагаю записать какой-то другой пароль.

Я удивляюсь, иду назад и повторяю действия еще раз. Опять странный экран. Тут я остановился — если результат систематически не совпадает с ожиданием, нет смысла делать те же действия опять и опять. Посмотрел еще раз и — оказывается! — надо жать не первую кнопку “Create Password”, а вторую “Edit”. Если жать Edit, то все работает.

Очень странное решение у ребят.

Хорошая цитата (клиент говорит о продавцах софта):

They come in and they tell me about your products. They tell me how fast they are, how reliable they are, how they work, speeds and feeds – more technical detail about your products than I could possibly want to know….I pay you guys enough money that I want you to figure out my problems. I don’t want to figure out what your products do. You come in and look around, and you tell me how your products will fix my problems. That’s what I want.

Из неплохой книжки “How to castrate a bull”.

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

1. Все поля для ввода данных кредитки должны иметь прописанные autocomplete и name атрибуты, чтобы браузер мог автоматически заполнить все. Автоматически вставлятся должен не только сохраненный номер карты, но еще и штуки типа даты и имени. Должна работать автоматическая вставка всех полей из штук типа 1Password.

2. Поля должны позволять вставлять данные из буфера обмена (Cmd+C, Cmd+V). Если вставка запрещена — это ужасно неудобно.

3. При вставке номера карточки из буфера обмена (Сmd+V), надо автоматически убирать из ввода пробелы перед и после, любые символы “не цифры”. То есть можно вставить и 4111111111111111 и 4111-1111-1111-1111 и 4111 1111 1111 1111 и Карточка: 4111-1111-1111-1111. Вставка таких штук не должна вызывать ошибку.

4. Не надо спрашивать тип (Visa/Mastercard) карты. Его всегда можно определить автоматически из номера.

5. Как правило можно и не спрашивать и имя владельца карточки. Никто его не проверяет, обычно и туда можно передавать любую фигню.

6. Даты окончания действия карточки надо показывать так, как они отображены на самой карточке (например 01/22). Это значит нужен ведущий ноль у месяцев, не нужны полные года (2022 — плохо), не нужно месяц писать текстом (Февраль — плохо). Стоит учесть, что некоторые карточки действуют 10 лет, поэтому год должен позволять ввести такое значение.

7. На мобиле поля должны показывать цифровую клавиатуру.

8. Выбор даты должен и давать ввести все с клавиатуры и быстро выбрать мышкой (дроп-даун). (примечание — это спорный момент и наш дизайнер-продакт Денис со мной тут не согласен про дроп-дауны)

9. При вводе номера карточки не давать вводить что-то кроме цифр. При вводе сразу форматировать автоматически номер карточки для удобства. При этом надо давать возможность поменять что угодно в любой части номера (вдруг опечатка). Нельзя просто весь новый ввод безусловно засовывать в конец номера.

10. После ввода номера карточки ее надо проверить алгоритмом Луна. Это позволяет найти опечатки при вводе.

11. Надо проверять размер ввода номера и не давать вводить больше цифр, чем надо. Но важно учесть, что у разных карточек может быть разное количество цифр в номере.

12. Для US рынка важно называть все это не просто “Credit Card”, а “Credit or Debit Card”. А то некоторые могут не понять, что можно вводить и debit cards.

13. Надо объяснять где найти СVV/CVC. Лучше даже картинкой. Но важно учесть, что у Amex карт СVV/CVC это 4 цифры (а не 3) и находятся они спереди карты, а не сзади. Надо адаптировать подсказку, если ввели Amex.

Конспект книжки “Site Reliability Engineering: How Google Runs Production Systems”: http://danluu.com/google-sre-book/

Гугл написал книжку про своих Site Reliability Engineers и их подходы. Это те же DevOps, продвинутые админы и тд. Интересно для тех, кто какое-то отношение имеет к поддержке работы production систем. Саму книжку можно бесплатно почитать тут: https://landing.google.com/sre/book.html Если выдержки заинтересовали, то книжка точно понравится.

Там мне запомнились несколько вещей.

Действия, когда случился инцидент

Your first response in a major outage may be to start troubleshooting and try to find a root cause as quickly as possible. Ignore that instinct! Instead, your course of action should be to make the system work as well as it can under the circumstances. This may entail emergency options, such as diverting traffic from a broken cluster to others that are still working, dropping traffic wholesale to prevent a cascading failure, or disabling subsystems to lighten the load. Stopping the bleeding should be your first priority; you aren’t helping your users if the system dies while you’re root-causing. Of course, an emphasis on rapid triage doesn’t preclude taking steps to preserve evidence of what’s going wrong, such as logs, to help with subsequent root-cause analysis.

То есть если случился пиздец, то естественной реакцией будет разобраться в его корневых причинах и сделать сразу ПРАВИЛЬНЫЙ фикс. Ребята говорят. что эта реакция ошибочна. Вместо этого надо сфокусироваться на немедленном устранении последствий (откат изменений, обходные пути и тд)

Из: https://landing.google.com/sre/book/chapters/effective-troubleshooting.html

Error budget Нет смысла стремится к 100% доступности. Переход к 100% (от 99.99% например) незаметен пользователям, но требует несоизмеримо бОльших усилий и создает мотивацию не делать ничего рискованного и нового. Поэтому надо задавать error budget и если мы его не выбрали, то возможно мы слишком консервативны и надо быть чуть более рисковее.

Про мониторинг Три типа результата: требует внимания человека немедленно (алерты, смс), требует внимания человека когда-нибудь (тикеты) и не требующие внимания человека (логи). Это сильно пересекается с моделью коммуникации: мессенжеры, email, остальное.

Про автоматизацию Carla Geisser: “If a human operator needs to touch your system during normal operations, you have a bug. The definition of normal changes as your systems grow.”

Планируемые фейлы

Google found that Chubby was consistently over its SLO, and that global Chubby outages would cause unusually bad outages at Google. Chubby was so reliable that teams were incorrectly assuming that it would never be down and failing to design systems that account for failures in Chubby

Solution: take Chubby down globally when it’s too far above its SLO for a quarter to “show” teams that Chubby can go down