nikitonsky_pub | Unsorted

Telegram-канал nikitonsky_pub - Стой под стрелой

11534

Ведет @nikitonsky. Рекламы нет

Subscribe to a channel

Стой под стрелой

«Не нужно больше все время торчать на кухне! Вам поможет простой советский Убик. Это удобная в обращении, неприлипающая, идеально чистящая паста. Абсолютно безопасна, если пользоваться в соответствии с инструкцией».

Сходил вчера на встречу книжного клуба, на котором обсуждали «Убик» Филипа Дика, в связи с чем его перечитал. Расскажу и вам. Спойлеры, но это спойлер темы книги, не сюжета. Решайте сами — если не читали, я бы, конечно, очень бы хотел вас заинтриговать.

Если воспринимать книгу как просто сюжетную фантастику, то можно не понять, откуда такая известность. Ну да, интрига есть, сюжет запутан, в принципе, даже какие-то концы с концами сходятся. Филип Дик Момент™, когда у тебя выбивают почву из-под ног и ты начинаешь сомневаться в себе, на месте.

Но, на мой взгляд, величие этой книги в том, что в ней удачно сложились сразу несколько вещей, и это возвышает ее над остальным творчеством автора.

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

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

В-третьих, книга гениально сделана структурно. Примерно первую треть тебя вводят в курс дела, обрисовывают контуры мира, завязывается интрига. Ты сидишь на краю кресла и такой: ага, ага, ну что там, что же сделают наши герои, куда пойдут, как выкрутятся? Ты вложился, ты заинтригован. Потом происходит сюжетный поворот, и книга не то чтобы обрывается. Скажем так, у героев возникают проблемы посерьезнее. И вообще оказывается что исходная интрига уже, кхм, не так важна. И в целом она так до конца и не распутается. И ты такой: и что? И где? Зачем? Что это было?

И вот это чувство незаконченности, нелогичности, внезапности, оно тоже работает на идею. Когда вы умрете, никто не даст вам довести все дела до конца, все распутать. То есть книга проделывает с читателем тот же трюк, заставляет испытать те же эмоции, которые испытвают персонажи, но чисто за счет структуры. По-моему, довольно крутой трюк: ты думал, что вот сейчас сяду, мне все объяснят, а я издалеку буду оценки давать. «Вот это круто, вот это так себе придумано, тут персонаж картонный, тут опять женщину оскорбили, бла-бла-бла». А тебя вовлекают помимо твоей воли, да еще и так, как ты не ожидал. И это все не просто трюк ради трюка, оно еще работает на тему книги. Это уже почти литература.

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

Ну круто же? По-моему круто.

«У вас сухие, непокорные волосы? Вы не знаете, что делать? Поможет простой советский Убик! Уже через пять дней волосы окрепнут и залоснятся. Помните: если пользоваться аэрозолем Убик по инструкции, он совершенно безопасен».

Читать полностью…

Стой под стрелой

Послушал Джонатана Блоу в Software Unscripted. Интересный пример человека, который не ушел из Твиттера: все еще очень умного, очень много делающего, но постоянно в голове борющегося с тупыми тейками. «Многие могли бы подумать, что <тупая фигня>», «Кто-нибудь бы сказал (о том), что <абсолютная дичь>».

Уверен, все это имеет место быть, но хорошо ли для психического здоровья постоянно об этом думать? Есть ли смысл посвящать жизнь борьбе с ветряными мельницами?

Передайте, чтобы берег себя.

Читать полностью…

Стой под стрелой

А это какой-то новый тренд, говорить «говорит о том, что»? Типа, не «он сказал, что из компании уволили 100 человек» и не «он говорит об увольнениях», а именно «он сказал о том, что из компании уволили 100 человек».

Мне не нравится.

Читать полностью…

Стой под стрелой

Давайте расставим уже точки над ё. Беззнаковые числа это псайоп и ни для чего не нужны. Замените все беззнаковые на знаковые и ваша программа станет лучше, проще, надежнее.

Рассмотрим классический случай — индекс в массиве. for i = 0; i < array.length; ++i. Ну очевидно что i здесь принимает только неотрицательные значения, а значит должна быть типа unsigned int. Это быстрое, поверхностное суждение. Неприятный факт, на который сагрятся сторонники unsigned типов, состоит в том, что signed int здесь сработал бы так же хорошо.

В чем вообще идея? Типа, если мы пометим часть чисел unsigned, мы типа дадим системе типов чуть больше информации, и она потенциально поймает нам чуть больше багов. Но давайте подумаем, каких багов? Скажем, допустим, в ходе каких-то вычислений у нас получится отрицательный индекс для доступа к массиву. Во-первых, поймать его легче в момент доступа (arr[-1] это явно ошибка, arr[4294967295] может и нет). Во-вторых, _если_ у вас ошибка в вычислении индекса, то скажем получить 7 вместо 5 или _так же опасно_, как и получить отрицательный индекс. Типа, алло, это катастрофа, что-то уже кардинально пошло не так, но вы хотите ловить только те случаи, когда случайно это «не так» вышло за границы нуля? Почему? В чем идея? Это как искать ключи под фонарем, потому что там светлее.

А downside беззнаковых чисел в том, что у вас появляется целый другой тип, и надо в него-из него конвертировать постоянно. Я как-то писал программу на Расте, и половину программы гонял i32 в u32 и обратно. Это глупо, это бессмысленно, это рассадник багов — любая конверсия это потенциально место, где что-то может пойти не так. Таких мест надо делать как можно меньше, а не как можно больше.

Не верите мне? В Джаве уже 30 лет назад сообразили, что беззнаковые числа не нужны. В Гугловом style guide призывают их избегать. Страуструп считал их ошибкой. Делить числа на знаковые и беззнаковые — как принимать арбидол при простуде. Кажется, что что-то сделал, а на деле и так выздоровел бы с той же скоростью.

Читать полностью…

Стой под стрелой

Узнал вчера, что на Линуксе, если поставить программу из Flatpak (the future of application distribution, между прочим!), у нее не будет доступа к видеокарте. Скачал игру — она или не запустится, или будет в 5 fps идти.

И правильно, я считаю! Не для ваших вшивых игр пользователь себе компьютер такой красивый собирал. Не для программ такую видеокарту красивую ставил. Вот еще — железом пользоваться! Давайте его в целлофановый пакетик завернем, и пусть не трогают, для гостей целее будет. На новый год, может, елку тридешную нарисуем, и только. Программ много, а видеокарта одна. Если каждая программа будет графику крутить, надолго ли ее хватит? И вообще не надо программы из интернета качать, вы Линукс зачем ставили? Код ядра вам зачем открывали? Свои программы напишите. Целее будете.

Читать полностью…

Стой под стрелой

С прискорбием сообщаю, что я завел второй канал. Из Твиттера я совсем ушел и мне стало некуда девать шутки на русском и фоточки из отпуска. Называется «Твиттер Тонского». Ничего не обещаю, подписывайтесь на свой страх и риск

В этом канале все без изменений, нытье и компьютеры продолжатся в прежнем режиме

Читать полностью…

Стой под стрелой

У Affinity случился большой релиз, и я поэтому случаю снова их скачал попробовать. Affinity — это такой фотошоп/иллюстратор, сделанный с нуля.

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

Но раз уж запустил, то решил заодно разобраться, в чем же в свое время было достижение Скетча и потом Фигмы и что все-таки не так с Фотошопом. Легко сказать – запутанный, но в чем конкретно это проявляется?

Главное достижение Скетча — модель «выбрал объект — мы показали его свойства». Типа инспектор. Выбрал красный квадрат — сбоку показывается заливка: красный, позиция, размер, и так далее. Не выбрал — ничего не показывается.

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

Это... странно. Может, если привыкнуть, станет норм, но я пользовался Фотошопом редко и так и не привык. Я бы сказал, что это контринтуитивно. При этом модель Скетча была понятна сразу и встала как влитая с первых секунд.

(Текущий цвет панель тоже, кстати, показывает. То есть это одновременно и инструмент, и индикатор, но разница никак не видна).

(Динамические свойства тоже есть, они в полоске сверху, и я каждый раз минут 10 в шары долблюсь, прежде чем ее заметить. Но, опять же, может быть, если привыкнуть...)

Второе это группировка. Понятно, что Адобе развивался инкрементально 20 лет, и новые фичи прикручивались сбоку да так там и оставались. Ну и короче все разбросано черт знает как. Есть панель Stroke, например. Но в ней нельзя выбрать цвет. Толщину, скажем, можно. Или панель Path Brushes. Там можно выбрать стиль кисти. Но в Stroke он не будет отображаться! Поэтому если ты этот Brushes скрыл, фиг ты потом найдешь, почему у тебя контур кучерявый. В общем, нельзя взять объект и посмотреть все про него. Ни все, что с ним сделали, ни все, что можно сделать. Панель Appearance явно появилась сильно позже остального, когда стало понятно, что вообще говоря можно бы некоторым объектам и по несколько заливок давать. Но в ней ничего нельзя сделать, только на список этот смотреть, двигать заливки вверх-вниз и грустить. Ну и панель Color идиотская^W классическая, где нужно постоянно кнопку переключать, чтобы сказать, что ты сейчас редактируешь — контур или заливку.

В общем, это все нужно взять, собрать в одну кучу, посмотреть на нее свежим взглядом и организовать логично. Но тогда получится Фигма. Что и имеем. Зачем нужен Аффинити — видимо, для людей, для которых Адобе это мышечная память. И таких людей достаточно много, чтобы оплачивать разработку большого сложного дорого продукта! Вот что потрясающе. Ждем, когда сменится поколение.

Читать полностью…

Стой под стрелой

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

Читать полностью…

Стой под стрелой

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

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

Не все было идеально, и юниты не совсем логично были раскиданы — кентавры, например, циклопы, минотавры и титаны попали в четыре разных замка, хотя все пришли из Древней Греции. Но в целом формула работала: power fantasy поиграть за самых легендарных существ из вообще всех пантеонов! В одной игре! Друг против друга! Что может быть круче? Вот это, кажется, настоящее достижение этой игры, а не тактический движок или то, что она не может умереть уже 25 лет.

Ну вот. Что я хочу этим сказать? Придумать крутого монстра непросто. Если ты играешь от стереотипа (вампир, или там мумия), то культурный шлейф возникает сам собой, а если ты придумал что-то с нуля (наездник на черве или женщина с ножами), то сразу как-то уже не так интересно. Ну, наездник. Ну, на черве. Причем как ни старайся, можно очень ловко придумать, или вписать, или объяснить — шлейфа не будет все равно. Например, в Вархаммере есть грифон но вместо льва тигр, с полосками. Вроде та же самая формула, а штырит уже не так. Фальшивые елочные игрушки, радость не от всего сердца.

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

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

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

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

Ну все, вроде, что знал рассказал. Герои это игра, на которую я смотрел больше всего в жизни, наверное. Так что естественно у меня будут мысли.

Хочешь, напишу следующий пост про то, как нам всем осточертело программирование?

Читать полностью…

Стой под стрелой

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

А я, если честно, так и не понял, зачем этот AWS нужен. У нас в Instant были четыре машинки там (база + три сервака), и я так и не понял, что они делали такого, что не сделали бы четыре точно таких же выделенных сервера.

Посудите сами: мы не использовали масштабирование. Метрики в их консоли хуй посмотришь, там навигация хуже кафкианского замка и в итоге оно все равно не показывает такие простые вещи как например CPU или память. Чтобы задеплоить, нужен целый танец из специальных утилит и заклинаний, чтобы все где нужно возникло, собралось, переместилось и возникло где нужно. Сервера сами по себе не особо надежные, периодически висли и чинить приходилось вручную. По ssh нормально не зайдешь, к файловой системе доступ тоже хуй пойми какой, коннекш стринг надо специальной командой доставать. Базу нужную тоже не поставишь, надо ждать, пока она «начнет поддерживаться». Веб-интерфейс такой, что каждый раз хочется совершить роскомнадзор. Названия их идиотские на каждый чих еще. Cognito, блять. Kendra, нахуй.

И я серьезно не понимаю. Вот допустим мы бы закидывали на сервер jar-ку по ssh. Чем это хуже? Какие минусы? Я не утрирую, я действительно не понимаю. Перечислите мне, прям по пунктам: чувак, вот это проще и вот это и вот это.

Сложность я вижу и сам, ее вагон. Ценник вижу, он идиотский просто. Десятки тысяч в месяц. А покупаем-то мы на это что? Метрики сами, бэкапы сами. На ssh и деплой надо какой-то огород городить. Надеждность не потрясающая. Лежим вместе со всем миром.

Так что, зачем вообще нужен ваш AWS?

Читать полностью…

Стой под стрелой

2/2

И последнее про экран построек, а то недостаточно я его поругал. Как построить здание? Нужно на него навести мышку. Появится тултип. Что дальше? Надо нажать. Мышка в этот момент непонятно где: вроде как над иконкой здания, но под тултипом? Или над тултипом? Короче, не очень понятно, куда мы нажимаем, но надо нажать. Что произойдет? В тултипе появится кнопка! Да, вот так вот. Кнопка. В тултипе. Которая еще и не сразу там есть. А кнопка уже строит.

Как нужно было делать? Можно было бы показывать всплывающее окно по нажатию на иконку (не наведению, кликать под тултипом все еще странно). Или можно эту кнопку рисовать прямо рядом с иконкой. Но нажимать кнопку в тултипе, ребят, это странно. Нет такого формата, и изобретать его не стоило.

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

Мне не очень нравится, как показывается урон. Если ты нанес 450 урона и убил 6 моделек, то всплывут обе цифры: и −450, и −6. Я бы хотел, чтобы если прям убил несколько моделей, показывало сколько убил, а если не убил даже ни одной, то тогда урон. Или вообще урон не показывать (он есть в логе в любом случае, плюс полоска здоровья скушается), только смерти. Потому что смерти и это круто и важно, а урон, ну, уже чуть менее интересно.

Герои на карте не идут куда-то, если есть препятствие. Скажем, на карте есть сундук с охраной, я жму на сундук, хотелось бы, чтобы он подошел к охране. Сейчас просто ничего не происходит.

Нет возможности рассмотреть артефакты, когда их подбираешь/получаешь за битву. Камон, это же главный кайф игры — смотреть и изучать награду!

Очень. Долгие. Анимации. В. Бою. Стреляешь ты, например, в кого-то. Вот твой лучник заряжает. Стреляет. Стрела летит. Долетает. Отряд корчится. Взлетают цифры урона. Каждый шаг — отдельная анимация. Потом еще все возвращаются в нейтральное положение. И тут второй выстрел! Наверняка это все можно как-то скомпрессировать, типа, пока летят цифры, можно уже заряжать во второй раз, или вообще дать пользователю следующую команду отдавать.

Обилие иконок и попапов. Почти каждый аспект зашифрован иконкой, и нужно наводить на его иконку, чтобы понять, что там. У каждого существа по пять-семь иконок, у каждого навыка. Это просто невозможно, наводить на них всех. Напишите просто текстом: живое, стреляет. Можете пунктирное подчеркивание сделать, если хочется дальше разъяснить. Но, пожалуйста, не заставляйте меня наводить на иконки, чтобы узнать, что вот эта вот странно нарисованная стрела это «двойной выстрел». Я словами с сто раз быстрее прочитаю и пойму, и наводить никуда не надо.

Еще смешное: есть какое-то окно, которое тебя информирует, типа, что-то произошло. И в нем вместо кнопки закрытия красуется надпись: «Нажмите любую кнопку, чтобы закрыть это окно». Смешно, потому что кнопка «Закрыть» прочиталась бы в сто раз бысрее и вообще на автомате бы сработала. А тут типа помогли (закрыть окно проще), но поскольку нестандартно, то это надо объяснять, и ушло больше слов и усилий в итоге, и помощь не состоялась.

Это примерно все, часть из этого (что легко объяснить) я еще зарепорчу через багтрекер, но фидбек это фидбек, его обрабатывают массово, а пост от high-profile блоггера иногда может больше внимания привлечь и в итоге больше изменить. Так что если знаете кого из Unfrozen — покажите им. Я все это пишу, потому что переживаю и хочу героев с хорошим интерфейсом, а не потому что хейчу. Так-то графика, например, местами очень красивая, лазить по карте, смотреть на модельки очень приятно. Вот к этой графике еще бы интерфейс хороший, и цены бы этой игре не было.

Читать полностью…

Стой под стрелой

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

Зачем? Для чего? У меня что, внезапно ухудшается зрение? Руки начинают дрожать и я перестаю попадать в кнопки? Я начинаю нажимать в кнопки ногой? Или что?

Это вообще дурацкий тренд: мы сидели за маленькими мониторами и страдали от нехватки места, дожили до мониторов побольше, а УИ/УХ дизайнеры такие: хуяк! И все кратно увеличили. Да, на отступы и воздушность теперь уходит больше пикселей, но работы-то я могу сделать столько же, или даже меньше. И в чем тогда смысл?

Объяснение у меня только одно: это сделано специально, чтобы меня побесить. Штош, задача выполнена, выпишите себе премию.

Читать полностью…

Стой под стрелой

Вернулся после недели отпуска. Во всех сервисах меня разлогинило. Везде нажал Login и попал в приложение. Без пароля, без всего. Просто кнопку нажал и все вернулось.

Не знаю, в чем смысл этого странного ритуала и почему компьютер сам за меня не мог это сделать

Читать полностью…

Стой под стрелой

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

Короче, сажусь, думаю, сейчас закрою гештальт наконец-то. И что?

Один качает полтора гига обязательных апдейтов по вайфаю марины. Другой истово пытается зайти в свой аккаунт на фейсбуке. За десять минут он прошел четырехфакторную аутентификацию, закрыл десять попапов, посмотрел пятнадцать онбордингов, вводил пароли со шлема в ноут, с ноута в телефон, с телефона в шлем, чтобы в конце все эпопеи узнать, что у него не такой мета-аккаунт. У первого тем временем скачался апдейт, но шлем ничего не показывает и в чем причина непонятно. На ноутах периодически появляется воодушевляющий экран с call to action: Start casting, просто нажми кнопку и все будет.

Ничего не было. Оба сидят во фрустрации, один взял перерыв и пошел бухать, второй в надежде подносит шлем к лицу, ничего не видит и делает очередную затяжку из кальяна. Периодически заходят люди и спрашивают? Ну как, ничего не получилось? It’s been like this for hours.

Я ржу. Я знаю, что я технопессимист, что я не верю, что большая корпорация может произвести что-то хоть сколько юзабельное, Мета тем более. Но вот передо мной реальность, и она БУКВАЛЬНО такая, как я себе представлял: часы фрустрации, кафкианских диалогов, абсурдных текстов, пустых обещаний, идиотских заданий, никакие из которых в итоге ни к чему не приводят. Если честно, я не верю, что кто-то когда либо вообще дошел до конца. И ОНО ТАК И ОКАЗАЛОСЬ.

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

Читать полностью…

Стой под стрелой

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

Просто вдумайтесь! В Идее настолько неудобно создавать файлы, что они ставят целую другую программу (!), в которой все выглядит по-другому, кнопки все другие (!!), на нее надо отдельно переключаться, общего поиска нет, стоит она, в конце концов, 100 баксов (!!!), и все эти минусы они готовы терпеть только ради того, чтобы не создавать новый файл в Идее.

Вот насколько в Идее удобно создавать файлы!

Читать полностью…

Стой под стрелой

К сожалению, с повсеместным распространением ИИ, задача отбора кандидатов сильно усложнилась. Многие кандидаты используют ИИ, чтобы выполнить тестовое задание, поэтому задача нанимающего менеджера — обнаружить его использование и отсеять таких кандидатов.

Вашему вниманию предлагаются красные флаги в тестовом задании:

- Задача выполнена полностью и даже немного экстра
- Используются стандартные инструменты и шаблоны
- Код разбит на небольшие понятные функции
- Переменные названы понятно
- Сложные места прокомментированы
- Ошибочные ситуации обрабатываются и выводятся понятные сообщения
- Файловая структура организована логично
- Веб-интерфейс выглядит симпатично
- Есть тесты

Избегайте этих ошибок сами и распространите дальше!

Читать полностью…

Стой под стрелой

Этим томным морозным утром передаю привет всем любителям языка Раст, из-за любви которых к unwrap вчера полдня лежал CloudFlare.

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

Не надо думать, что если вам программировать тяжелее (а на Расте очень тяжело программировать), то программы у вас будут получаться лучше. Это просто упражнение на самоистязание. Не больше.

Читать полностью…

Стой под стрелой

В английском языке есть термин “needy person”, что примерно переводится как несамостоятельный плюс навязчивый. Типа, человек, который постоянно пристает с какими-то вопросами и просьбами, которые вполне мог бы порешать сам, полностью перекладывает все решения на другого человека и не видит личных границ.

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

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

(Понятно, что если ты уступишь и создашь аккаунт, то до тебя все равно доебутся — или 2FA включи, или пароль поменяй, или почту проверь, или разлогинят тебя просто чтобы не расслаблялся)

Дальше идут обновления, они же апдейты. Я во всем виню Хром (вроде он это начал), но сегодня каждая программа постоянно проверяет, не вышла ли новая версия, и если вышла, всю душу из тебя вынет, пока не обновишься.

Заметьте, что обновиться — не мое желание, не моя потребность. Если бы мне было нужно — баг там какой критический, нехватка функций — я бы пошел и сам нашел все нужные патчи и апдейты. Но мне НЕ НУЖНО. Если бы я не знал про новую версию, если бы меня не заебывали этими попапами, я бы сидел на старой и горя бы не знал. От того, что я обновлюсь, в моей жизни не изменится НИ. ЧЕ. ГО. Так и кому это нужно? Мне? Или программе?

Наконец, нотификации. Это вообще рак. Идея была светлая — ну, иногда пользователю реально нужно что-то сообщить. Рендер там закончился, загрузка, не знаю. Что-то в мире пользователя, про его задачи.

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

Ведь нотификация это что такое? Это что-то, что я не просил, но с чем мне нужно разобраться. Это буквально проблема программы, с которой она пришла ко мне. У меня есть скриншот свежеустановленной какой-то Джетбрейновской ИДЕ. Я запускаю ее в первый и раз и тут же получаю в рожу ТРИ нотификации. Я еще ничего не сделал. Мне от тебя еще ничего не нужно. Но я уже тебе что-то должен. Как минимум, закрыть нотификации. Are you охуели там, как говорится? VS Code не лучше, кстати, и нотификации одна из основных причин, почему я сбежал.

На одном конце спектра условный ls: тоже программа, но никогда не попросит тебя создать аккаунт или обновиться. Это спокойный, уверенный в себе инструмент. Или, если нужен пример посложнее, Syncthing: программа для синка файлов между машинами, в которой нет аккаунтов, нотификаций, которой можно сразу начинать пользоваться, а про апдейт которой я недавно случайно узнал от друга. И не стал обновляться! (потому что зачем)

На другом — Гугл Хром. Опять же, заглядываю как-то в ноут жены, она там какую-то страничку открывает, а хром ей: проверь аккаунт! что-то не так (что, блядь, может быть не так, всю жизнь было так, с чего бы вдруг сейчас что-то пошло не так?), а еще обновись! И нотификацию в рожу. Жену я бесконечно уважаю, потому что она четко видит, где ее проблемы (нужно что-то посмотреть на сайте), а где проблемы программы (обновления, аккаунт). И абсолютно хладнокровно игнорирует вторые.

Ощущение от needy программ — я решаю не свои проблемы, а проблемы программы. Обнови ее, залогинь, нотификации закрой. Ну и нафига мне такой тамагочи?

Будь как ls. Не будь как Хром. Проблем у нас всех своих хватает.

Читать полностью…

Стой под стрелой

Обновляю графический драйвер Нвидии. Уже минут пять окошко в состоянии Preparing for install и с неопределенным прогресс баром. Такой, который крутится по кругу и никуда не идет.

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

Ошибка установки — 0xc1900223

Читать полностью…

Стой под стрелой

Когда-то я работал в Instant DB, это такая база данных aaS (as a service), доступная напрямую из JS. Как Firebase. Прям из веб-странички создаешь таблички, пишешь транзакции, запросы, а она гоняет по вебсокету к нам и все отдает. Ничего хостить не нужно, можно целые продукты поднимать без сервера (ну, разве что свой js-файл).

Важной частью базы были права доступа. В отдельной админской панельке ты мог написать, как проверить, что конретный текущий пользователь может видеть и что — менять. Примерно так:


"projects.view": "auth.id in data.members.id"


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

А теперь к интересным наблюдениям. Права на базовые вещи, которые проверяются при регулярном использовании (пользователь может видеть только свой проект, редактировать можно только свои комментарии и т.п.) писались просто и естественно, как и должно быть.

Но были еще хитрожопые права — как бы «редкие» случаи, когда система еще только приходит в нужную конфигурацию — и вот они получались идиотски сложными, нелогичными, с кучей неочевидных нюансов. Условно, мы пишем клон Джиры (ребята-коллеги усердно просили меня не использовать в качестве примера Джиру и заменять ее Линеаром как референсом — Силиконовая долина, что вы хотели), и, например, момент, когда пользователя приглашают в проект. Вроде как проект можно редактировать, но только в вот этот вот самый момент приглашения. И проект может быть только тем, в который приглашают, и никакой другой. И редактировать можно только членство, ничего другого пока нельзя. Чувствуете, сложность пошла, да?

В общем, меня эта сложность очень заинтересовала. Значит, что-то не на своем месте. Но что?

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

Прикол — я всю дорогу был за то, чтобы устранить сервер совсем, и оставить только JS и базу (потому что нафига сервер, в чем символический смысл перевода джейсона в эскюэль, у тебя и так на обоих концах компьютеры, что они, сами не договорятся что ли?) — как выяснилось, что сервер нужен, чтобы сложные пермишны не надо было писать. Сюрприз, откуда не ждали. (Я все еще верю, что это может делать база — нужен не сервер, а truster environment для юзер кода).

С другой стороны, базовые пермишны типа проект—член проекта все еще хорошо проверять декларативно, и тут как раз модель с сервером не очень удачная — тебе надо делать по ендпоинту на каждый объект, не забыть в нем проверить права (из этой сложности растут ноги у всех ОРМ, людям буквально скучно это делать), в запросах можно нечаянно левые данные спалить (или логику проверки дублировать).

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

Короче, вот. База как сервис идея отличная, но над правами надо чутка подумать.

Читать полностью…

Стой под стрелой

А у вас было такое? Что думаете? Напишите в комментариях!

Читать полностью…

Стой под стрелой

Слышал историю, что в недавно вышедшей The Outer Worlds 2 у некоторых пользователей не работают сохранения. Чтобы их починить, надо зайти в домашнюю папку, там Saved Games, и в ней создать папку TheOuterWorlds2. И сохранения начнут работать!

Ну это ладно, с кем не бывает. Кто из нас не забывал сделать mkdirs перед созданием файла? (почему вообще папки для файла нужно создавать отдельно от файла, почему ОС не может сама этого сделать? Ответ на это кроется в анекдоте про солдата, подметающего плац зубной щеткой, и «нам не нужно чтобы быстро, нам нужно, чтобы ты заебался»).

Потрясающая часть этой новости в том, что быстрое и частое нажатие F5 иногда все-таки создает папку и сохраняет игру! Вот этого я понять так и не смог. Просто забыли mkdirs — ладно. Но тут что? Рейс? Чего? С чем? Как это вообще возможно? Почему иногда создание папки может получаться, а иногда не получаться? От чего это может зависеть, даже чисто теоретически? У меня вообще нет идей.

Это, наверное, главная причина, почему компьютеры мне нравятся гораздо меньше, чем раньше. Раньше все было медленнее и сложнее, но зато предсказуемо. Одни и те же действия приводили к одним и тем же результатам. Логика была больная, да («программистская»), но она была, и ее можно было выучить. А сейчас что? Попробуй вот так. Получилось? Нет. Попробуй вот так тогда. О, сработало. Почему? Да хз. Завтра, может, опять сломается. А может даже сегодня. Никто не знает. Никто, понимаете?

Безумие — это делать одну и ту же вещь раз за разом и рассчитывать на другой результат. Так вот, компьютеры — это безумие.

Читать полностью…

Стой под стрелой

Как же осточертело программирование...

Читать полностью…

Стой под стрелой

Похоже, я не могу открыть ссылки на Telegram напрямую. Но я хорошо знаком со стилем Никиты Прокопова — лаконичным, ироничным, с вниманием к деталям интерфейса и логике дизайна. Вот пример поста в таком духе про разницу в дизайне Songs of Conquest и Heroes of Might and Magic: Olden Era:

---

Короче, несмотря ни на что, в Olden Era залипать весело. При этом Songs of Conquest, которая выходила в прошлом году, не зацепила совершенно. «Почему?» Спросил себя я. И я ответил:

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

Во-вторых, палитра в Песнях навевает грусть: это цвет разложения, смерти, уныния. Каждый отдельный юнит и здание выглядят шедеврально, пиксель арт у них просто ебовейший. Но он... мрачный. Понятно, что так и задумано, но блин, это трудно выносить в больших количествах. Важный скилл художника для массовой игры — делать смерть визуально привлекательной. В тех же Героях есть и скелеты, и черти, но на них приятно смотреть.

В-третьих, интерфейс запутанный. Куда нажимать, какой кнопкой, где что, как что-то выбрать, как отдать приказ — очень сложно. Особенно в городах. Правда, в Героях интерфейс тоже мог бы быть получше, тут оба оплошали.

В-четвертых, она очень медленная. Переход между картой и битвой, скорость передвижения героя, плотность объектов на карте, расстояния между ними, анимации. Часть кайфа от игры — поймать поток, а для этого все должно летать, все действия должны быть на кончиках пальцев.

Я много про это думал, и для меня поток сводится вот к чему: тебе постоянно предлагают выбор и ты должен принимать решения. Налево или направо? Мавзолей или капитолий? Курица или рыба? И на этот поток решений ты и подсаживаешься. Это прекрасно продемонстрировал Vampire Survivors: геймплея нет, все что ты делаешь это выбираешь один апгрейд из трех случайных каждую минуту. И все, этого достаточно. Можно добавить еще слот-машину сюда, выдавать случайные награды со случайными интервалами. Вуаля.

Ну вот, по идее все что тебе нужно это не запороть этот вот простой хук в наш рептильный мозг. Поэтому нужно четко показывать а) что произошло и б) что можно сделать. Условно, ты поднимаешь сундук и там выбор: возьмешь золото или опыт. Вот по идее _все_ игровые ситуации должны быть настолько же ясно и четко презентованы. К сожалению, на деле многие из них запороты.

Например, ты поднимаешь артефакт. Логично было бы показать окно: вы подняли артефакт, вот его характеристики. Спасибо, понял, закрыть. Но нет, этого нет!

Или ты видишь что-то на земле. Наводишь мышку, и там должно быть ясно: охрана такая-то, награда такая-то (если это рандом, то можно писать 20-49 юнитов, 1-3 минорных артефакта, например). И этого тоже нет! По идее, рано или поздно опытные игроки запомнят, что где, но зачем? В чем смысл?

Или город. Вот что можно построить, вот сколько будет стоить, а вот что получишь. Эту часть в Героях запороли, в Песнях она получше (если разберешься, как вообще строительство работает).

И последнее про Songs of Conquest. Пиксель-арт. Как я уже сказал, он ебовейший: яркий дизайн, шедевральное исполнение. Но для меня проблема, что он не вписывается в 3Д окружение. Они как бы из разных миров, и это выталкивает тебя из потока. Пиксели в 3Д выглядят как картонные cutouts, чем они по сути и являются. У пиксель-арта есть собственные приемы, чтобы создать глубину и объем, но когда ты помещаешь их в 3Д окружение, они перестают работать.

Так что жаль, потому что попытка отличная. Осада городов, например, очень прикольно придумана. Юниты есть прям топовые по дизайну. Но все вместе, увы, не цепляет.

---

Хочешь, я сделаю вариант чуть более колкий, в духе его коротких телеграм-постов (3–4 абзаца, без «подписей» и с более резкими формулировками)?

Читать полностью…

Стой под стрелой

Внезапно сложились два кусочка из интернета. В одном некто Патрик Космос (возможно, псевдоним) пишет:

> working on a new unified theory of american reality i'm calling “everyone is twelve now”

> “I'm strong and I want to have like fifty kids and a farm” of course you do. You're twelve. “I don't want to eat vegetables I think steak and French fries is the only meal” hell yeah homie you're twelve. “Maybe if there’s crime we should just send the army” bless your heart my twelve year old buddy

В другом пользователь HID-compliant mouse (возможно, псевдоним) выкладывает скриншот мобильного Телеграма, где каждая кнопка теперь в отдельном круге, с текстом:

> God, everything everywhere is so rounded...I feel like im in a
daycare

Ну а вместе они прекрасно объясняют тренд на идиотско-круглые интерфейсы и боязнь показать пользователю больше одной кнопки за раз.

Думайте.

Читать полностью…

Стой под стрелой

Поиграл в демку Heroes of Might and Magic: Olden Era и хочу рассказать про... юикс! Понятно, что интерфейс редко определят успех игры, но иногда особо сильные косяки могут сильно испортить впечатление.

Самый большой прокол это экран итогов битвы. Ты подрался (или автобой просимулировал битву) и тебе показывают окно, сколько юнитов ты потерял. Все логично. Но! Вместо того, чтобы показать потери, тебе показывают изначальный состав армии. Начал бой с сотней эльфов? Покажут эльфы — сто. Зачем мне эта информация? Неясно.

И только потом, спустя заметную задержку (несколько секунд, буквально), поверх изначального состава появляются потери. Типа, минус десять эльфов. Но несколько секунд — это вечность! Если тебе правда интересны итоги, никакого терпения не хватит их дождаться. Я видел стрим, где челу показали это окно, он успел как-то его прокомментировать, навести мышку, закрыть, и все это до того, как показались потери! То есть он их даже не увидел! Может, даже не догадывался, что они там будут.

Короче, неудобно. Если не можете показать сразу (почему, кстати), то нормальные задержки для интерфейсных анимаций — 0.1 секунды. Хотя бы так.

Остальное менее брутально, из интересного — кнопка завершения хода. Ее придумали, кажется, еще в Нивале в пятых Героях, потом утащили в Цивилизацию (или наоборот), короче, справа внизу есть огромная такая кнопища «закончить ход». Все классно, все нормально.

Проблема в том, что когда ты заходишь в город, эта кнопка меняет свою функцию. Вместо «закончить ход» она начинает работать как «выйти из города». Это а-я-яй! Так нельзя. Нельзя сначала приучать пользователя к кнопке, а потом менять ее функцию. Выход из города (часто нужная, абсолютно безопасная операция) тупо страшно нажимать, потому что чуть не уследил и вот ты уже закончил ход (очень опасная, необратимая операция). Я понимаю, что это _кажется_ ловким решением, но это ломает все привычки и приводит к ошибкам.

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

Решение в лоб? Нарисовать весь этот граф зависимостей явно, прям вывалить его на пользователя как есть. Со всеми стрелочками. Так, в общем-то, и сделали.

Проблемы? Это выглядит устрашающе. Как запутанная диаграмма классов. Спасибо, мне UML-я и на работе хватает.

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

Мне поэтому нравился экран построек в третьих — зависимости спрятаны в тултипах, но если приспичило что-то построить, идешь и читаешь, что для этого нужно.

А еще ничего не видно. Иконки мелкие, поверх них еще цветной оверлей, в цветах сложно разобраться: очень плохо видно, что уже есть, а что может быть (зеленый и красный ярче темно-голубого для построенных зданий).

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

Еще в третьих было удобно: два нижних ряда построек это жилища существ, с первого по седьмой уровень. Всегда на одном месте, очень предсказуемо, понятно где искать. Тут же мне пришлось прям полазить по диаграмме, чтобы найти, где кто строится. Опять же, думайте от задачи: пользователь может хотеть, условно, виверн, но вряд ли он хочет «любое здание, которое откроется после постройки таверны». Зависимости вторичны.

1/2

Читать полностью…

Стой под стрелой

Коллеги, какую задачу мы решаем? Хочу выбрать инструмент под задачу, но не забыть учесть интересы бизнеса

Читать полностью…

Стой под стрелой

Ваше регулярное напоминание, что async/await это от бедности и нужны только тем, у кого нормальных потоков нет. Если есть потоки, то делаешь блокирующие вызовы и вуаля

Читать полностью…

Стой под стрелой

Посмотрел тикток с iOS 6 и немного расчувствовался. Между старыми и новыми интерфейсами все-таки была огромная разница.

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

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

В современной же версии: тулбара нет, все висит в воздухе. Кнопка Cancel слева вверху, New Message _под_ ней, кнопка отправить справа от New Message. Получается такой уголок. Все, напоминаю, ни к чему не прикреплено и висит в воздухе. Чтобы стало еще хуже, все это за каким-то фигом на «листе», это такая фигня, которая как бы выезжает снизу, но не до конца, и сверху остается пикселей 20 пустоты. Так вот из-за этой концепции интерфейс вынужден прикрепляться к листу, и ему веришь меньше, потому что он приехал на контенте, а не живет в какой-то предназначенной ему области.

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

И еще в-третьих. Интерфейс приятнее ощущался, потому что не дребезжал. То есть контент скроллился, понятно, но контролы, тулбары — нет. Они стояли на своих местах как прибитые. И это создает ощущение спокойствия, надежности, предсказуемости.

В современной же ОС, например, заголовки типа New Message или Now Playing сначала показываются крупно в области контента, а если ты начинаешь его скроллить, они переезжают в тулбар. В теории — да, красиво. На практике — ну вот есть у тебя два варианта интерфейса, получается, и ты дрочишь их туда-сюда, пока скроллишь, непонятно зачем. Окей, первые десять раз, когда ты открыл Музыку, ты оценил, допустим, типографику. Но дальше-то, дальше ты просто пользоваться хочешь, тебе эти эффекты не нужны уже. А они есть. И никуда не денутся.

Еще ролик с Сири посмотрел, и он на iOS 6 тоже какие-то другие чувства вызывает. Он раньше был оформлен как диалог, типа ты что-то ей говоришь и она это пузырем справа показывает, а ответ свой под ним пузырем слева. Как в чате. И, господи, это так просто и прямолинейно, и так ПОНЯТНО, что я даже замешкался как-то. Слишком хорошо. Где это все сейчас?

Сейчас, конечно, все испортили. Каким-то образом, когда ты разговариваешь с сири сейчас, твой вопрос она показыает снизу, а ответ сверху. С одной стороны как бы то же самое. С другой — ну где логика, а? Что было сначала, а что потом? Где ввод, а где вывод? Не очень понятно куда смотреть и что происходит, потому что и снизу что-то анимируется, и сверху. Не то чтобы прям совсем непонятно, но мозг, эээ, спотыкается чутка.

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

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

Говорят, когда-то так и было. Но все эти технологии давно утеряны. Следы еще можно, правда, найти в видосах Ютуба пятнадцатилетней давности.

Читать полностью…

Стой под стрелой

Когда я работал в Джетбрейнсе, мы жестко с кем-то зарубились, надо ли при создании нового файла спрашивать его тип. Новый файл → какой? → java → держи, брат.

Или вот в Телеграме создаешь группу, и он сначала спрашивает, кого туда добавить.

Или в каком-нибудь редакторе жмешь создать файл, а он спрашивает, где он будет лежать.

Что у этих примеров общего? Их все можно решить позже. Можно создать файл, а потом выбрать его тип и где он будет лежать. Можно создать группу, а потом привычным интерфейсом добавлять в нее пользователей.

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

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

Короче, не надо ничего спрашивать — сделай что тебя просили, а потом пользователь сам разберется. Или не разберется, если ему не надо.

Принцип: просто дай сделать.

Читать полностью…
Subscribe to a channel