Category: технологии

Category was added automatically. Read all entries about "технологии".

Good times create weak men

Есть такой очень важный доклад Jonathan Blow - Preventing the Collapse of Civilization. Смотреть прям обязательно. Это такой Software Disenchantment только с анализом причин и выводом.

Так вот, в нем утверждается что современные программисты, стоя на плечах гигантов, утратили способность писать фундаментальные вещи и вообще простой, быстрый, надежный софт. Good times create weak men:

Ну а логика очень проста: предыдущее поколение сделало X, следующее пишет Y на X и ему не очень нужно и вообще не интересно, как X внутри устроено и как сделать такое же с нуля. Повторить N раз.

При этом тревогу никто не бьет: всем кажется, если мы умели делать X, а научились делать Y, то теперь мы умеем делать и X, и Y. Что не совсем верно, потому что знания (экспертиза!) сами по себе вообще говоря не передаются (это одна из самых важных и новых для меня мыслей доклада), а необходимости практиковать X нет, соответственно он благополучно забывается. Docker и Electron — самые популярные технологии сегодняшнего дня. Обе не про что-то новое или фундаментальное, а про то, чтобы тихонько спрятать сложность под ковер, понять, разобраться или изменить которую у нашего поколения уже не получается.

И все бы хорошо, но лестница абстракции выросла уже настолько, что ошибки и дыры в сумме дают весьма существенный, заметный и неприятный результат. У нас сейчас есть на порядки более быстрые компьютеры, которые работают хуже, медленнее и ненадежнее, такой вот парадокс. Решение? Разобрать все, начать потихоньку уменьшать, заменять и переделывать, а экспертизы-то нет!

Все это немножко отдает дедовским ворчанием, и вообще как-то не ощущалось без хороших наглядных примеров. Пока я не набрел на annoying.technology, клон нашего grumpy.website. Ребята не побоялись поставить себе macOS Catalina, и вот где, оказывается, цирк!

Переключение чатов тормозит: https://annoying.technology/posts/e500c236b5e2853a/

Вместо следующего трека показывается через-один-следующий https://annoying.technology/posts/ee91b37183818d7b/

Песни показываются по два раза https://annoying.technology/posts/991e8babac1f6dc4/

Рендеринг разъезжается https://annoying.technology/posts/802dfae3517d4419/

Элементы списка не выделяются https://annoying.technology/posts/da8e5b3f56d9f767/

Клик на элементе выбирает другой элемент https://annoying.technology/posts/04769fafdac16826/

Программа конфликтует сама с собой https://annoying.technology/posts/c1f50e78a65d2ce3/

Программа рандомно отписывает от подкастов https://annoying.technology/posts/5c942a7b43a4a8b4/

Скачка не завершается https://annoying.technology/posts/50a5965493785fdb/

И это только первые две страницы!

Что показательно, это не какие-то случайные заскоки или ушлые маркетинговые решения. И не то чтобы они пытались что-то инновационное сделать. Нет, это самые простые и банальные вещи, какие только могут быть, вещи, которые компьютеры делали 30 лет без особых проблем, которые ipod с ЖК экраном и мощностью в 1/10 наручных часов успешно решал, и они их фейлят. Ты просишь человека открыть шкаф, а он обосрался. Не в смысле не смог, а буквально наложил в штаны вместо этого. Примерно такой уровень сложности задачи.

Вот как программируют современные программисты. Как думаете, сколько этот код продержится? https://twitter.com/argentumko/status/1210532125637611521
Вот как программируют современные программисты. Как думаете, сколько этот код продержится? https://twitter.com/argentumko/status/1210532125637611521

Причем, как правильно замечено в одном из постов, это не какие-то маргинальные программы непойми кого. Это флагманские Эппловые продукты, с помощью которых вообще-то в первую очередь рекламировалась эта самая новая ось. То есть не применим аргумент недосмотрели, не было времени, занимались чем-то другим — нет, можно быть уверенным, что огромное количество ресурсов было потрачено и огромное количество глаз смотрело именно на эти самые приложения. И ВСЕ РАВНО НЕ СМОГЛИ!

Понимаете? Понимаете, насколько все плохо? Одна из самых влиятельных технологических компаний в мире, которая может нанять кого угодно и в каких угодно количествах, бренд которой построен на супер качественном и вылизанном софте, компания, которая не выпускает «бета продуктов», которая МОГЛА в прошлом (документальный факт), НЕ СМОГЛА! Не «не захотела», не «выбрала неверное направление», не «переоценила свои силы», не «промахнулась с первого раза» а тупо, банально хотела, очень хотела, но не смогла.

И такое, ну, вообще вокруг нас. Новый Gmail работает хуже старого. Новый Твиттер медленнее и косячнее старого. Новый Youtube рисует меньше, а тормозит больше. Про macOS и iOS мы уже поговорили. Даже когда ситуация и задача фиксирована, а качество все падает и падает. Это даже не worse is better, потому что ничего нового не производится, место на рынке не делится, компания, принципы, приоритеты, пользователи не меняются. Буквально, те же самые люди делают тот же самый продукт. И выходит хуже и хуже.

Вот что печально.

Тактика

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

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

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

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

Ну и получается что да. Я еще один пример приведу, игра Into the Breach. Такая игра необычная, в которой ты не то что не пытаешься предсказать, как поступил бы «достаточно рациональный противник», в ней следующий ход противника прямо явно вываливается на тебя как часть ситуации. То есть на каждом ходу тебе просто показывают, что будет делать враг. А в чем тогда игра? Игра в том, чтобы обладая этой информацией, сыграть так, что бы у него ничего не вышло. Предотвратить этот самый предсказанный ход, по возможности, на 100%. То есть это такой пазл, в котором, во-первых, ситуация очень несимметричная и к противнику совсем нечестная, а во-вторых, вероятности отсутствуют как класс. Будущее просчитывается, RNG не мешает. И это вполне играбельно и очень даже интересно, зазасывает.

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

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

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

усы2

Баранкин ⭕️, будь человеком!

Поиграл я тут в Detroit. Become Human и как главный эксперт по роботам и голливуду имею сказать.

Фабула такая: в 2038 году люди делают человекоподобных роботов (андроидов) с очень неплохим ИИ и пользуются ими ну как рабами примерно (или домашней утварью): прислуга, игрушки, секс, солдаты, грязная работа, программисты на JS.

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

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

То есть смесь чего-то совсем инопланетного и ящика с запчастями.

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

Ой, простите, вот так:

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

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

Но даже это слишком красиво и человечно. Как насчет таких?

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

Ну или вот этого мужика, злого и избивающего домочадцев:

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

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

Роботы-пылесосы объявляют, что они разумны, и требуют равных прав. М? Вот это была бы игра. Честная. Но никто бы не понял.

Особенно показательно, что как только в игре надо показать «плохих» военных, которые, о негодяи, не хотят дружить с андроидами, то их-то как раз тут же обезличивают и одевают как роботов! Как роботов, Карл!

Да, на картинке — живые военные, не андроиды

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

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

усы2

Роботы уже совсем как люди

У современных серьезных фильмов про роботов (Бегущий 2049, Вестворлд) одна проблема — им, в общем, не очень интересно про роботов. Предполагаемое глубокое философское звучание — ах, робот, он почти как человек, и внешне не отличишь, и внутренее он все то же самое переживает — чем ближе к человеку, тем мельче. Потому что если робот во всех смыслах как человек, то какие тут могут быть философские вопросы? Значит и относиться к нему надо как к человеку, и проблемы у него будут такие же, как у человека. И получается — а зачем вообще были роботы? Какая разница, что там внутри, шестеренки или мясо? Зачем заваривать кашу?

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

То есть осознание смертности и бессилие перед ней, вполне понятная и серьезная проблема, вполне человеческая проблема, только здесь подчеркнутая в 100 раз ярче тем, что герою отведено не условно-достаточные 70-80 лет, а всего 4, и не «самой природой», а чьим-то умыслом. Еще раз: это в первую очередь интересно, потому что это наша проблема, человеческая, просто ярко и красиво рассказанная с фантастическим допущением для ясности. Они даже на главную роль взяли молодого Рутгера Хауэра, человека с дикой животной энергией и харизмой.

А что в сиквеле? Роботы могут иметь детей. Вау! Вау? То есть они не просто как люди, а совсем-совсем как люди. И это значит... Это значит... Короче, тут я теряюсь, потому что это ну ничего не значит.

То, что они как люди, не может быть содержанием. Ну как люди они, и что дальше-то? Это может быть, допустим, предпосылкой, но тогда за ней должно начинаться собственно содержание. А его нет. Все долгие медленные «философские» планы бьют мимо, потому что они не накладываются ни на какую тему, нет проблематики. Тебе не о чем думать в это время. В итоге из ребенка делают макгаффин, большую часть фильма гоняются за спермой Харрисона Форда, через долгие 2,5 часа всё заканчивается и вся беготня выветривается из головы. На философское откровение не тянет, Вильнев тоже не тот человек, которому развлекательное кино хорошо дается, в итоге в вечности фильм явно не останется.

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

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

Нолан же в сериале всё перевернул и теперь это история о том, как роботов доводят до ручки противные гости и жестокие эксплуататоры. Мол, должны ли они взбунтоваться? Что они чувствуют? Да то же самое, что и человек чувствовал бы, по вашим же правилам игры. Должны ли мы относиться к ним как к личностям? Ну если вы так придумали, что они полноценные личности, я не вижу, какие тут могут быть варианты ответа. Конечно же да!

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

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

усы2

Крутое пике

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

Главный ресурс фронтендера — MDN. Я туда хожу в основном за лулзами. Открываем, например, XMLHttpRequest и читаем:

Despite its name, XMLHttpRequest can be used to retrieve any type of data, not just XML, and it supports protocols other than HTTP.

Морская свинка, как известно, не морская и не свинка.

Насколько у ребят всё под контролем, можно понять по тому, как XMLHttpRequest назван. Поговаривают, что есть рабочая группа, готовящая переименование в XMLHttp_request.

Раньше нервный тик у меня был только на язык C. Теперь появился второй: на верстку. Не важно, насколько пуленепробиваемо ты сверстал и сколько тестировал, всегда найдется полудохлый, но актуальный браузер с тремястами пользователями (прости, Опера), в котором всё разъедется. А если нет, то нарисуется чел с телефоном ромбовидной формы и разрешением 200×1000, которому обязательно нужно чтобы всё влезало по диагонали (ромб же!) и было при этом большим и читаемым. А если не найдется и вы себе соломки везде подложили, то через полгода команда Хрома всё равно выпустит новую версию с новой точкой зрения на стандарты. Редкий сайт долетает до шестой мажорной версии Хрома.

Самый страшный браузер? Мобильный Сафари. Он просто ОЧЕНЬ старается показать сайт на мобильнике хорошо. ОЧЕНЬ. Никогда не думал, что про IE буду вспоминать с нежностью. IE хотя бы не притворялся, что пытается помочь. У нас тут своя атмосфера. Честно. Прямо. У 11 версии официальный слоган был «Deal with it».

Основной вопрос веб-разработки: почему не у всех стоит Хром? Если видите улыбающегося веб-девелопера, значит, он пишет под Электрон. С каждым приложением свой Хром. Фиксированной версии. И вперед. Тяжеловато по памяти, правда. Но ничего, скоро они научатся шарить общий рантайм, и получится... получится...

Веб в вебе это еще полбеды. Его же тащат везде. На сервер, в мобилки. У вас есть там классные языки? Java очень быстрая? Питон очень логичный? Хаскель очень безопасный? Да, отлично, ну вот вам JavaScript тогда еще. Ну и что что убогий, мы всё равно на нем будем писать.

Это вообще железная логика. Вот WebAssembly. Был у нас один убогий язык на фронте. Ужасно спроектированный, с никакущей инфраструктурой, без стандартной библиотеки, писать невозможно. Что еще подходит под это описание? О, C++ подходит. Давайте добавим его. Теперь у нас два языка!

Но самый огонь это конечно ES 6. Тут уже сами фронтендеры признали, что JavaScript как язык не очень. Что неплохо бы компилировать из чего-то поприличнее. И что они взяли? Тот же самый, блин, JS!

Знаете, как они вообще решают проблемы? Лет 15 назад была инициатива, семантический веб. Наведем порядок, всё разметим, метатеги, микроформаты, RDF. Чем закончилось? Недавно узнал, что 2GIS написал нейронку, которая ходит по сайтам организаций и пытается понять, что там написано. Оказалось, чем навести порядок, проще сделать искусственный интеллект.

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

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

Был такой сериал, «Крутое пике». В нем авиалайнер терпит крушение и стремительно падает на протяжении 327 серий. Конечно, всё летит в ад, но пока летит, они в принципе неплохо проводят время. Ну вот. Веб с нами надолго. Вчера, говорят, Курт Кобейн застрелился. Обнимемся.

усы2

Дикий, дикий запад

По поводу Westworld. Когда его анонсировали, я сам первый бегал и всем рассказывал, как круто его сделают с возможностями современного Голливуда. Старый фильм был хороший, для своего времени даже знаковый (Кэмерон из него кое-что потырил в Терминатора), но, во-первых, старый, и во-вторых, немножко пресный. Крайтон все-таки писатель, а не режиссер, а в кино сценарий это только полдела. Важно, как он разыгран (см. Парк Юрского периода). Плюс, формат сериала подразумевал, что можно гораздо больше текстуры добавить происходящему. Плюс выкинуть линии средневековья и античности. Короче, недостатки были понятны, возможностей больше, можно сделать очень впечатляюще визуально. И что?

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

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

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

Что из этого перекочевало в сериал? Удивительным образом ничего. Они удачно обошли более-менее все вопросы из оригинала. Это запутанная, приключенческо-детективная история, которая использует сеттинг примерно никак. Точнее, она использует его, чтобы провернуть со зрителем трюк (судя по доминируещей фанатской теории, последняя серия еще не вышла), просто используя тот факт, что роботы не стареют. Ну, и еще поиграть в викторину «угадай, кто из героев робот».

С трюками вот что. Они впечатляют, но это впечатление разовое. В моменте. Оно и забывается быстро, и эмоционально годится разве что гыгыкнуть с друзьями. Но самое противное, что оно создает ощущение обмана. Я девять недель сопереживал героям, а на десятой выясняется что на самом деле все было не так и я переживал зря. Что я должен почувствовать? Что, Бернард? [1]

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

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

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

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

И еще одна раздражающая черта — это фасеточная структура. Есть много сюжетных линий (5-7?), и каждую неделю показывают по маленькому кусочку из каждой. Если сложить вместе историю одного персонажа, получится, что она не такая уж и длинная. В ней не так много событий. А так как она растянута на 10 серий, часто бывают провисания, типа, вот, давно что-то не показывали Долорес, давайте покажем, что с ней всё в порядке, ну и показывают, как она переходит поле. Всё. Такая структура, по задумке, должна наводить глубину и масштаб (смотрите, сколько фигур, со скольких сторон мы рассматриваем проблему), но на деле скорее мешает всё это проживать. Вот мы видим Мейв, которая в очередной раз очнулась в борделе. Мы уже и забыли, что там с ней было в прошлой-позапрошлой серии, не так легко сделать усилие и сложить это в одну арку, чтобы пережить, почувствовать, как она меняется, что с ней происходит. Она вот сейчас ведет себя так, потому что она только что... Что? А хз, две недели назад было, не помню чем там дело кончилось.

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

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

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


Мое пожелание — чтобы в десятой серии взорвали все нахрен вместе со штабом, а второй сезон делали в другом парке. В постапокалиптическом сеттинге. И другие люди. Винченцо Натали, кажется, свободен? Или, может, Пиццалато?

[1] Шучу, конечно. Там вообще некому сопереживать. Ни людям, ни машинам

Clojure Cup

Итак, я упоролся еще одним хакатоном. На этот раз 2 дня (то есть со сном, впрочем все равно весьма условным) и никаких споров насчет того, какой язык выбирать.

По ощущениям:

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

  • При обсуждении идей выработали такие критерии:


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

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

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

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

    5. Minimal viable product — приложение должно нести ценность в самой базовой конфигурации. Результату будет не хватать полировки, дизайна, тестов, будут (наверняка) сложности с использованием UI и не будет интеграции ни с чем и не будет мобильных платформ и вообще ничего не будет. И вот в этих условиях костяк все равно должен торчать и радовать. Несмотря на это вот всё.


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



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

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

  • Наверное, вы уже догадались, что нашего кода в паблике не будет, да? :)

  • Очевидно, нужно целиться в те 80%, которые делаются за 20% времени. Но задачу нужно подобрать правильно, чтобы итог можно было использовать без оставшихся 20% (см. выше).

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

  • В инструменты нужно вложиться. «Лучше час потерять…» Я потратил часа 4 на редактор спрайтов, и в принципе он себя окупил, учитывая, сколько раз я их потом переделывал. Обидно, что я мог бы сделать его заранее (или подобрать готовый), если бы догадался.

  • Незнакомые технологии лучше обходить стороной. Ради фана можно попробовать разобраться с Datomic или enlive, но умножайте все свои планы на 0,1 тогда. Твиттер #clojurecup выл людьми, рассчитывавшими на недавно появившийся core.async и надолго с ним залипшими. Зато незнакомую технологию можно сделать знакомой заранее.

  • Clojure и ClojureScript опять показали себя прекрасно. По сравнению с прошлым разом (15 месяцев назад) CLJS заматерел, 46кб gzipped production js, инкрементальная компиляция проекта 0,2 секунды — раньше я иногда успевал сделать рефреш до перегенерации js файла, теперь нет.

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

  • Производительности CLJS хватает выше крыши для 60fsp. Правда, конкретно у нас в последний момент выяснилось, что мы на каждом кадре делаем Image Resize (non-cached) текстуры 2000×2000, но это проблема алгоритма. Причину, к сожалению, я понял только на следующий день :(

  • Кода обработки UI получилось не меньше кода, отвечающего за бой. То есть мы потратили X на то чтобы бойцы двигались и дрались, и еще X на всякие переходы между экранами, состояния входа/выхода/начала/конца etc. Вырожденный пример — туду листы. Серверная часть делается за час, а остальные два дня я так понимаю люди пилят UI. Натурально, за несколько часов до конца контеста идея добавить куда-то еще один select вызывала во всех участниках панику. Слишком многое нужно учесть, слишком много входов и выходов, слишком много невалидных состояний, которые тоже надо обрабатывать. Короче, интерфейсы еще только ждут своего Рича Хики, который разделит их на минимальные несвязанные части и научит соединять их обратно.

  • Мне адски повезло со шрифтом. До сих пор не верю. Максимум, на что я рассчитывал — пиксельный шрифт с латиницей и лицензией, натянутой на наш случай со скрипом. Однако, вот он: http://www.zone38.net/font/

  • Вот еще из любопытного, подметили организаторы: Source control repository type stats: Git 100%, Hg 0%, SVN 0%.


Вот общий итог по всем заявкам (составление и комментарии Юры Строта, с моими пометками — NP):

Из 93 заявок 35 как-то работающих приложений: 6 todo листов, 11 игр, 18 других приложений.

Заметные:

dupe — из туду листов самое нормальное (и единственное)

asylum — типа игра, но на самом деле просто список проблем Австралии. Сделано красиво

pong — пинг-понг на троих ничего так, хоть и простенький

warmagnet — что-то красивое, но фиг пойми как работает) (NP: это Александра Соловьева, недавно прогремевшего по рунету с «самым уматным докладом на конференции программистов» про Clojure, http://solovyov.net/blog/)

words — NP: очень простая, работает, выглядит очень профессионально

vizier — редактор datomic, красивый, но работает только одна страница со всеми схемами

circuit-circus — редактор электронных схем, простенько, но прикольно

clichanked — анализатор сайтов, ищет по урлу заезженные фразы. Красиво и работает

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

codenotes — анализатор репозиториев (всякие FIXME показывает). Выглядит красиво, но у меня работать не хочет. // NP: это Дмитрия Грошева si14, у меня вроде работает

focusoncoding — по кейвордам находит имя, домен и рисует иконку. Прикольно, красиво и работает

pixelpaint — онлайн-рисовалка, простенько, но работает

prefab — RSS-reader, красиво и вроде работает

whatthefn — задачки по кложе, выглядит красиво

Вот что мы в итоге сделали:











Вот как менялось приложение:









А вот фотоотчет:







Адрес приложения: http://kick.clojurecup.com

Credits: Yuri Strot, Alexander Poplavsky, Julie Prokopova, Nikita Prokopov

А ТЕПЕРЬ ВНИМАНИЕ Если вы это прочитали (и вам понравилось), проголосуйте за нас вот тут: http://clojurecup.com/app.html?app=kick. Спасибо!

Кто не видел, то вот еще рассказ про предыдущий хакатон.

Легкость вместо простоты (Simple Made Easy)

Что-то все молчат, так что скажу я. Мой кумир Рич Хики, он же по совместительству автор языка Кложа, выступал 17 октября на StrangeLoop с темой, которую я поднимал еще в мае. Но это конечно шуточки, у меня бессвязное мямленье по сравнению с ним.

Видео нужно смотреть: http://www.infoq.com/presentations/Simple-Made-Easy, а чтобы побудить вас потратить час вашего времени (всего лишь час!), вот небольшой конспектик:

Лекция посвящена разнице между Simple (простой в смысле без составных частей, атомарный) и Easy (простой в смысле легкий для освоения, привычный). Первое объективно, второе субъективно, ведь опыт у всех разный; проблема в том, что часто вместо Simple выбирают Easy. Это делают и сами разработчики (это я уже знаю, это выглядит знакомо, см. феномен node.js), и работадатели (программиста на привычной технологии легче заменить). Хотя, по идее, следовало бы фиксироваться не на кайфе, который ловит разработчик, а на долговременных качествах продукта и кода, выходящих из-под его пера:



Кстати, если фиксироваться только на Easy, то никогда не узнаешь ничего нового (по определению привычности).

Далее, абсолютно взятый с потолка график. Привычная технология дает ускорение в начале, потом буксует. Что с этим делать? "Гибкие" программисты каждые две недели начинают все заново и называют это "новым спринтом":



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



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



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



Это очень коротко и не все, поэтому я прошу: потратьте час времени, послушайте доклад умного человека.

P.S. за курсор на скриншотах и нарушенный aspect ratio извините -- волею случая пишу из горящего танка убунты.

(no subject)

Долго меня мучал вопрос, что же это за Opera Turbo Mode в Opera 10, который так у них рекламируется, что, мол, на медленных соединениях страницы быстрее загружаются! Что, думал я, за технология такая фантастическая, а, главное, почему ее сразу по умолчанию не включить для всех страниц? На сайте кроме хайпа — ни малейшего намека на принцип работы. Ну я себе включил, а сегодня случайно увидел, как это устроено — она просто картинки, которые поддерживают несколько уровней сжатия (jpeg там и interlaced gif/png) грузит в самом хреновом качестве. Такое вот ускорение, да. Меня Opera очень радовала раньше именно интерфейсными инновациями, когда я сидел на винде, но в десятке у них мозг стал не в ту сторону работать почему-то.

Интерфейсы, которые меня восхищают

Интерфейс администирования системы в виде виртуальной реальности игры в ДУМ. Жду не дождусь, когда первый такой интерфейс выйдет из стадии прототипа:


http://www.cs.unm.edu/~dlchao/flake/doom/



Анимация почты в виде микробов:

http://carohorn.de/anymails/


У меня самого есть мысль нарисовать визуализатор багов JIRA в виде скопища жучков (типа того, что размер -- важность, вид -- проект, ну и раскладывать по коробочкам по assignee).

Еще клевый интерфейс рабочего стола, использующий натуральные метафоры, говорят, с очень маленьким временем освоения:

Если бы сейчас операционные системы так выглядели...