среда, 1 сентября 2021 г.

[work.reflection] Не быстро, недорого, качественно

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

Похоже, что из афоризма "Выберите любые два" нас можно описать как: не быстро, недорого, качественно.

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

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

Хотя, судя по тому, что сейчас пишут в Интернетах по поводу уровня зарплат в той же России, мы, похоже, последние, кто еще "недорого".

[life.cinema] Очередной кинообзор (2021/08)

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

Фильмы

Батя (2020). Хорошее кино. Местами, как по мне, очень трогательное. Возможно, оно было бы еще лучше, если бы на место Стаса Старовойтова взяли бы умеющего играть актера.

Кроваво-красное небо (Blood Red Sky, 2021). Не ожидал, что в области фильмов про вампиров можно снять что-то свежее и интересное. Да еще от Netflix. Но тут вот звезды сошлись. Любителям жанра нужно посмотреть.

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

Опасный элемент (Radioactive, 2019). В принципе, хороший фильм, смотреть было интересно. Разве что обилие флешбэков несколько портило впечатление.

Отряд самоубийц: Миссия навылет (The Suicide Squad, 2021). Лично мне отлично зашел. Ожидал треша и угара, их и получил. Джеймс Ганн снял не супергеройское кино, на которое претендовала унылая первая часть, а мастерский стеб на весь этот жанр.

Кодекс киллера (The Protégé, 2021). Еще одна попытка снять "Джона Уика в юбке". Немного успешнее предыдущих. По крайней мере бодренько. Хотя с перипетиями сюжета и мотивацией героев явно что-то намудрили или налажали (скорее и то, и другое), так что я лично не очень понял что там и почему. Но ведь боевики смотрят не ради сюжета ;)

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

Маша (2020). Добротно снято и история неплохая. Но 2/3 фильма показывают какую-то придурошную малолетку, которая своей идиотией раздражает без меры, а в конце показывают убогий и не объясненный толком финал, после которого остается куча вопросов на тему "а что же было между двумя ключевыми историческими точками?"

Сериалы

Иерро (Hierro, 2019). Первый сезон. Интересно. Хотя слишком быстро становится понятно что к чему. И развязка какая-то несуразная.

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

Харлан Кобен. Невиновен (El inocente, 2021). Отлично снят. Необычный способ подачи материала (серии начинаются от лица разных персонажей). Интересно следить за развитием событий. Но постепенно начинают накапливаться несуразности и ближе к концу все происходящее начинает вызывать вопрос "Что за хрня здесь творится?" В общем, по итогу сериал разочаровал.


Отдельно упомяну совершенно неожиданный "Солнцепек". ИМХО, посмотреть его нужно. Но вот оценивать как кино подобные картины еще рано.

понедельник, 30 августа 2021 г.

[blog] Включил премодерацию комментариев

Сегодня какой-то спамер стал донимать меня комментариями с левыми ссылками.

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

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

четверг, 19 августа 2021 г.

[prog.thougths] Попытка спроектировать механизм взаимодействия процессов на одной ноде через shared memory по принципу single-producer/multi-consumers

С конца прошлой недели занимаюсь проектированием механизма, посредством которого процесс-producer смог бы передавать через shared memory информацию одному или нескольким процессам-consumer-ам. Вроде бы придумалось какое-то решение, которое выглядит рабочим. Данный пост является попыткой еще одной проверки этого решения: если получится упомянутый механизм внятно описать словами, то есть хорошая вероятность, что он будет воплощен в коде.

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

В общем, всех заинтересовавшихся приглашаю под кат.

понедельник, 16 августа 2021 г.

[prog.thoughts] И снова на тему исключений. На этот раз с подачи Вальтера Брайта

На HackerNews появился и обсуждается плач Ярославны Вальтера Брайта на тему исключений. Он там перечислил с десяток причин своей нелюбви к исключениям. Желающие могут ознакомиться сами.

Я же выделю два пункта из списка Брайта:

5. it is hard to write exception-safe code

6. very few understand how to write exception-safe code

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

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

Еще раз: причина выхода из скоупа не важна, важно то, что мы куда-то вылетаем не доведя свою текущую цепочку действий до логического завершения.

И, как показывает практика, у многих программистов (включая меня самого) не очень хорошо с предсказанием последствий такого преждевременного выхода. В этом-то как раз и есть корень зла. Мы, люди, не особо хорошо справляемся с перебором возможных вариантов "а что, если здесь случится какая-то херня?" Это и есть основополагающая штука. А не throw, return или goto err.

У хейтеров исключений существует иллюзия о том, что если они будут писать код в стиле:

r = do_something();
if(-1 == r) {
  revert_changes();
  return -1;
}

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

По моим наблюдениям это, мягко говоря, не так.

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

Да, я знаю, что идиома goto err сильно облегчает жизнь. Но это именно что средство для уменьшения боли, а не ее устранения.

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

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

суббота, 14 августа 2021 г.

[life.sport.thoughts] Горькое послевкусие завершившейся Олимпиады 2020

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

Общие впечатления лично у меня достаточно грустные. И не по поводу скандалов вокруг происходившего до и во время Олимпиады. А по поводу самого факта существования и значимости Олимпиады в современных условиях и в её современном виде.

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

ИМХО, в Олимпиаде нужно оставить только те виды спорта, для которых:

  • понятие "олимпийский цикл" -- это не пустой звук. Т.е., когда завершение одной Олимпиады означает начало подготовки к следующей, с введением в сборную молодых спортсменов, с обновлением команд, с выстраиванием планов по выводу спортсменов на пик их формы и возможностей именно к следующей Олимпиаде. А в каких-то видах спорта (командных в первую очередь, как мне кажется) планы могут распространяться и на более длительный срок (скажем, начало "обкатки" молодых спортсменов в возрасте 18-19 лет, чтобы они стали ядром команды через 7-8-9 лет);
  • звание Олимпийского Чемпиона является если не самым престижным в этом виде спорта, то одним из немногих самых престижных званий.

Например, я не вижу смысла в сохранении тенниса в программе Олимпиады. Масштаб и сложность победы на любом из 4-х турниров Большого Шлема, имхо, в разы круче, чем то, что можно было увидеть на Олимпиаде. Тоже самое можно сказать и о футболе.

Или присутствие скейтборда или некоторых разделов МТБ в программе Олимпиады. Почему-то эти виды спорта мне напоминают анекдот про седых байкеров и молодых мотоциклистов: "А что с вами знакомиться? Вы же каждый год новые".

Прошу понять меня правильно. Я не про то, что скейтборд -- это не спорт или что это не такой серьезный спорт, как другие. Я про то, что в некоторых видах спорта смена лидеров происходит слишком часто. И победа на Олимпиаде не есть итог планомерной подготовки спортсмена к главному старту четырехлетия. Тут скорее дата проведения Олимпиады накладывается на текущую расстановку сил в конкретном виде спорта. Попала Олимпиада на 2021 -- один чемпион. А случись в 2020-ом, оказался бы другой.

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

Так, если в 1960-1970-е годы в боксе в некоторых весовых категориях участвовало больше сотни боксеров (емнип), то сейчас их всего-то 32. Да, система получения олимпийских лицензий обеспечивает присутствие среди этих 32-х самых ТОПовых спортсменов. Но все равно, если в 1960-х победитель игр должен был пройти путь из 6-7 поединков с самыми разными спортсменами, то сейчас этот путь заметно короче.

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

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

  • в течении последних 30 лет (а лучше 50) должны проводится крупные турниры уровня Чемпионатов Мира с какой-то минимальной квотой участников (с учетом отборочных соревнований). И чтобы среди победителей этих крупных турниров были спортсмены из большого количества стран. Чтобы на Олимпиаду не попадали виды спорта, популярность которых ограничивается каким-то небольшим регионом (типа США, Англии, Японии, России, Бразилии, Китая и т.д.);
  • чтобы в этом виде спорта были случаи, когда кто-то выигрывал крупнейшие соревнования (уровня ЧМ) несколько раз и разница в годах между первой и последней победами составляла бы более 4-х лет. Это исключит виды спорта, в которых каждый год новые чемпионы просто в силу того, что людям до 16 лет интересно выделывать всякое на скейте, а потом приходит время других юных и бесстрашных;
  • чтобы престиж звания Олимпийского Чемпиона был на самом высоком уровне. Например, за счет того, что настолько больших и сложных турниров по этому виду спорта, как Олимпиада не было бы и близко.

В общем, видов спорта поменьше, спортсменов в каждом виде побольше.

Формулируя такие критерии я понимаю, что любимый мной дартс никогда не станет олимпийским видом спорта. Как и снукер. Но, как по мне, так это и к лучшему. Тот же дартс не станет лучше, если попадет на Олимпиаду.

суббота, 7 августа 2021 г.

[life;business] Цинично о шумихе вокруг Xsolla

Даже до меня долетел шум вокруг компании Xsolla с весьма необычным обоснованием необходимости уволить 150 человек. Для тех, кто как и я, в танке, вот несколько материалов на тему:

Xsolla уволила часть сотрудников пермского офиса после «анализа их активности» в рабочих чатах,

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

«Мы формально еще никого не уволили. Мы сказали: компания вас не ценит» Интервью основателя Xsolla Александра Агапитова, который объявил, что разом увольняет 150 «невовлеченных» сотрудников (и тут началось).

Больше всего у меня от этой истории подгорело из-за того, что 99.9% обсуждающих эту тему a) не имеют к ней никакого отношения и b) не почувствуют на себе никаких последствий.

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


Во-первых, это решение собственника компании. Имеет право.

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

Так что еще раз, главное: он владелец, он может делать что хочет. В этом-то и весь смысл.


Во-вторых, нахожусь при мнении, что публика в Интернетиках так сильно возбудилась потому, что 99% возбудившихся -- это наемные сотрудники на зарплате. И часть из возбудившихся отчетливо понимает, что собственники бизнеса с ними могут поступить точно так же. А кто не понимает отчетливо ("малолетних дебилов" в ИТ всегда было в избытке, несмотря на миф о том, что это якобы высокоинтеллектуальная сфера деятельности), те что-то подозревают на уровне подкорки.

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

Но признать это нужно. Welcome to the real world, как грится.


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

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

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

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

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


Ну и напоследок сухой остаток:

  • мы живем в условиях капитализма, так что да, "в*бывай или у*бывай", по другому никак и не вы решаете достаточно ли вы "в*бываете";
  • если вы собственник бизнеса или собираетесь им стать, если ТОП-менеджер или метите в таковые, то данный случай можно использовать для того, чтобы сделать собственные выводы о том, какие способы контроля и управления вы готовы применять и к каким последствиям это может привести;
  • если вы обычный наемный сотрудник, то это лишний повод посмотреть на мир без розовых очков и подумать о мерах, которые помогли бы вам, окажись вы сами в числе тех, кого решили выставить на мороз.

PS. Отдельная часть шума -- это обсуждение того, как можно обосновать увольнение "показателями big-data". Ну ё-маё, это даже не серьезно. Суть же в том, чтобы тем или иным образом определить список подлежащих увольнению. Обставить это все потом с формальной точки зрения можно так, чтобы не подкопались. Особенно, если владелец готов идти на нормальные выплаты при увольнении. Как и сделать невыносимой дальнейшую работу тех, кто решит пойти на принцип и захочет остаться прикрываясь соблюдением бюрократии.