вторник, 1 января 2030 г.

О блоге

Более двадцати лет я занимался разработкой ПО, в основном как программист и тим-лид, а в 2012-2014гг как руководитель департамента разработки и внедрения ПО в компании Интервэйл (подробнее на LinkedIn). В настоящее время занимаюсь развитием компании по разработке ПО stiffstream, в которой являюсь одним из соучредителей. Поэтому в моем блоге много заметок о работе, в частности о программировании и компьютерах, а так же об управлении.

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

понедельник, 31 декабря 2029 г.

[life.photo] Характерный портрет: вы и ваш мир моими глазами. Безвозмездно :)

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

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

пятница, 3 апреля 2020 г.

[software.thoughts] Интересно и толково про проблемы OpenSource

На RSDN-е всплыла интересная ссылка: https://youtu.be/YDBE7OM7-mM?t=35578. Это доклад Андрея Ситника на HolyJS 2019 Piter. Доклад как бы из двух частей: первая часть про OpenSource, а вторая, якобы, про Web. Но мне показалось, то обе части доклада посвящены одной и той же проблеме. И то, что автор доклада рассказывает про ситуацию c front-end-ом, можно без особых проблем перенести на любую другую область разработки софта.

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

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

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

Еще очень важная вещь, которая проистекает из рассказанного Андреем Ситником -- это необходимость помощи в раскрутке малоизвестных OpenSource проектов. Может показаться мелочью, но каждая звездочка на GitHub-е, каждый лайк в соцсетях, каждый дополнительный +1 на Reddit-е или HackerNews, не говоря уже о ретвитах/репостах оказывают огромную помощь разработчикам малоизвестных OpenSource проектов. Т.к. отсутствие этих мелких признаков внимания очень сильно снижают мотивацию разработчиков. Поэтому если вам на глаза попадается новость о каком-то OpenSource проекте, который показался вам интересным или просто симпатичным, то не сочтите за труд, лайкните эту новость. А если вы еще и сделаете ее репост где-нибудь от своего имени, то реально сделаете большое дело.

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

Но, с другой стороны, у разработки OpenSource нет нормальной экономической модели. Т.к. если не брать 1% топовых открытых проектов, которые либо спонсируются (прямо или косвенно) различными компаниями, либо смогли выйти на окупаемость за счет модели двойного лицензирования или продажи техподдержки, то подавляющее количество открытых проектов -- это либо в прямом смысле one-man show, либо результат работы совсем небольших коллективов. И жизнеспособность таких небольших проектов в условиях кризиса является далеко не праздным вопросом.

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

Не факт, что такая тенденция уже сформировалась. И даже если сформировалась, то ощутимые последствия станут заметны в относительно отдаленной перспективе (лет через 10-15).

В общем, еще раз порекомендую посмотреть доклад. Он будет интересен даже тем, кто далек от разработки front-end-а. Т.к. рассказывает о более важных и общих вещах.

Я же напоследок дам еще одну интересную ссылку: Seven Stages of Open Software. ИМХО, имеет смысл с этими стадиями ознакомиться перед тем, как ввязываться в открытие своего кода и подумать, а до какой стадии ты сам хотел бы дойти.

четверг, 2 апреля 2020 г.

[life.cinema] Очередной кинообзор (2020/02-2020/03)

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

Холоп (2019). Мне зашел очень неплохо, посмотрел с удовольствием.

Джентльмены (The Gentlemen, 2019). Смотреть можно спокойно. Фильм добротный. А вот получить удовольствие от просмотра... Тут не знаю. Я ждал от Гая Ричи большего. Получилось разве что добротно.

21 мост (21 Bridges, 2019). Весьма смотрибельно. Динамично, в меру разговоров, в меру экшена. Хотя финал оказался немного предсказуем, но в целом это впечатления не испортило.

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

Пушки Акимбо (Guns Akimbo, 2019). Так плохо, что даже хорошо. Мне понравилось, но я и не ждал ничего кроме лютого трэша от данного произведения. И, как по мне, именно в качестве трешового ремейка "Адреналина", но не с крутым уголовником в главной роли, а с хипстером-задротом, и следует это кино воспринимать. Ну и, соответственно, воздержаться от просмотра, если подобная смесь вас не интересует.

Под водой (Underwater, 2020). Вот вообще ни разу не шедевр, но смотреть было интересно, не смотря даже на то, что подводный монстр в конце был как-то не к месту (имхо). Может быть потому, что нормальной фантастики на тему более-менее качественно снятых катастроф на подводных объектах давно не было.

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

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

Правосудие Спенсера (Spenser Confidential, 2020). Как-то все посредствененько. Есть ощущение, что это не полноценный самодостаточный фильм, а попытка забросить пробный шар на что-то вроде серии фильмов с одними и теми же персонажами. Спасает разве что наличие пары-тройки известных актеров, которые придают происходящему хоть какой-то вес и солидность.

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

Джуманджи: Новый уровень (Jumanji: The Next Level, 2019). Ну так себе. Первый фильм был неплох, а этот явная попытка заработать на успехе первого фильма не утруждая себя поиском чего-то нового и интересного.

Убийства по открыткам (The Postcard Killings, 2020). Начало было интригующим и обещающим интересное продолжение. Но где-то с середины фильма начался такой лютый маразм, что никаких хороших впечатлений не осталось вовсе.

Ангелы Чарли (Charlie's Angels, 2019). Мог бы получится недорогой аттракцион из категории "Телохранитель киллера" или "Гемини", если бы не желание девочек снять про девочек и для девочек с режиссером-девочкой. И да, для подобной фигни сексизм в критике вполне уместен.

Герой (2019). Редкая бредятина и Александр Петров, как обычно, местами сильно выбешивает. Но картинка класcная. Местами офигенно классная. Настолько, что очень обидно становится, что к такой картинке прилагается такая муть в довесок.

Звериная ярость (Primal, 2019). Николас Кейдж, к сожалению, в нормальных фильмах уже не снимается. И "Звериная ярость" лишь подтверждает это. Так что смело можно проходить мимо.

Вторжение (2019). Ничего хорошего не ожидал и не разочаровался, к сожалению. Хотя по началу вроде бы даже все шло на удивление неплохо и даже стало казаться, что у создателей может получиться. Однако, когда события дошли до момента, когда инопланетный корабль стал перехватывать каналы связи, стало понятно, что авторам фильма в какой-то момент привезли особо забористую траву и все последующие они творили уже не приходя в сознание. Что печально, т.к. видно, что в визуальную составляющую вложились хорошо. Ну и Александр Петров уже привычно раздражал своей типа игрой.

суббота, 28 марта 2020 г.

[prog.actors] Почему я не считаю упомянутых в статье на Хабре акторов настоящими акторами

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

К сожалению, получилось как в анекдоте: "Вот нутром чую, что 0.5 плюс 0.5 будет литр, а математически выразить не могу". Т.е. ощущение "должно было быть попроще" присутствует, но вот чтобы выяснить, что именно и как можно (и нужно бы) упростить... На это не хватает времени и терпения.

Это вообще достаточно сложная проблема, с которой я регулярно сталкивался будучи тимлидом. Делаешь code review подчиненного и явно ощущаешь, что реализация переусложнена, что можно проще. Говоришь "здесь что-то слишком сложно, должно быть проще", а на встречный вопрос "А как проще?" сходу ответ дать не можешь. Потому что для того, чтобы дать такой ответ, нужно самому сесть и плотно поработать над этой задачей. А это значит, что ты мало того, что будешь вынужден переделать работу, которую должен сделать твой подчиненный, но еще и не успеешь сделать что-то другое, что ты никому не можешь делегировать.

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

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

Дело в том, что в статье автор повсюду упоминает акторов и, как мне показалось, пребывает в уверенности, что использует "акторный подход". Хотя я (пока еще) убежден, что это не так. И в данном посте попробую объяснить, почему мне кажется, что использованные в статье "акторы" на самом деле "акторами" не являются.

среда, 18 марта 2020 г.

[prog.flame] Ай да молодцы в Dropbox! Взяли и переписали свой sync engine на Rust. Ну молодцы же, да?

Речь про вот этот пост: Rewriting the heart of our sync engine. Dropbox переписал часть своей системы, отвечающей за синхронизацию, с Python-а на Rust и выкатил на публику победную реляцию об этом достижении.

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

Не нравится C++, а Rust-а еще нет не свете? Но ведь есть Ada, есть Eiffel...

Но нет. Сперва нужно написать на Python.

Поиметь в результате этого кучу геморроя. Убить уйму сил и времени в попытках привести чудо сие в норму.

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

Ну и для тех, кто типа умеет читать между строк: это пост не про то, что C++ хорош, а Rust плох. Rust хорош. И для подобных задач его выбор ничуть не хуже, а может и лучше, чем выбор C++. Он про то, что выбор по принципу "пользуем то, на что надрачиваем, а ничего другого просто не знаем", в конце-концов приводит к потере времени и денег.

Да и еще не могу удержаться и не пройтись по любимой теме:

Almost all of our code runs on a single thread (the “Control thread”) and uses Rust’s futures library for scheduling many concurrent actions on this single thread. We offload work to other threads only as needed: network IO to an event loop, computationally expensive work like hashing to a thread pool, and filesystem IO to a dedicated thread. This drastically reduces the scope and complexity developers must consider when adding new features.

Это как раз то, что SObjectizer умеет делать с самого начала: распределять работу между сущностями, каждая из которых работает на нужной ей контексте. Хоть на общей рабочей нити, хоть на пуле потоков, хоть на выделенной отдельной рабочей нити. Собственно, для этого SObjectizer и создавался много лет назад.

четверг, 12 марта 2020 г.

[prog.c++.tiredness] Написал мета-функцию transform и чё-та приуныл...

Сегодня с утра потребовалось реализовать мета-функцию transform для списка типов в C++. Т.е. в transform передается мета-функция трансформатор и список типов, а на выходе получается преобразованный список типов. Типа такого:

using T = transform_t<std::decay, type_list<int, int&, const string&>>;
// T == type_list<int, int, std::string>

Задался целью сделать этот transform самостоятельно, опираясь только на детали реализации других мета-функций, которые написал где-то в начали осени 2019-го по следам прочитанных в Интернете материалов.

Убил часа полтора. Тупил невероятно. Но сделал. Не заглядывая в Интернет.

Никакого удовольствия от решения этой частной задачки не получил. Зато возникло ощущение, что чего-то для меня уже слишком много. Либо конкретно C++. Либо программирования вообще...

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

Либо специализацию, поскольку C++ реально подза*бывает, чем дальше, тем больше. И сам язык, в котором невероятная мощь сочетается с невероятной кривизной и, имхо, слишком уж высоким темпом развития в последние годы. И фрагментированное коммьюнити с чрезвычайно сильно развитым NIH-синдромом.

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

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

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

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