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

О блоге

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

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

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

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

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

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

пятница, 3 декабря 2021 г.

[work.business] Нежданная засада с оценкой затраченного времени

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

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

Работали мы по схеме time-and-material, т.е. выставляли счета заказчикам исходя из затраченного нами времени. И с подсчетом этого самого затраченного времени проблем не было как раз из-за работы в режиме "отсюда и до..."

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

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

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

На практике это выглядело так: садился с блокнотиком и начинал записывать какие-то мысли по поводу задачи. Первые минут 15 это более-менее получалось. Затем мысли начинали разбегаться кто-куда и еще минут 15-20 я с этом хоть как-то справлялся, возвращая их в нужное русло. Но в последующие полчаса все неизбежно скатывалось в состояние, когда в голове образуется неконтролируемая каша из разрозненных кусочков и обрывков, после чего наступало понимание что все, финиш. Блокнотик откладывался в сторону, а я тратил время на не имеющую отношения к задаче ерунду.

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

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

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

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

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

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

Вот впервые оказались в такой ситуации. Есть о чем подумать.

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

PS. Раз уж пошла такая пьянка, поделюсь еще одним наблюдением. По нашему опыту выходит, что даже когда по заказному проекту идет плотная работа с минимумом задержек и отвлечений, все равно выходит где-то по 110-120 часов на человека в месяц. Максимум. Остальное время либо мы на что-то вынуждены отвлекаться, либо заказчик что-то не предоставил, либо ждем какого-то подтверждения/согласования или доступности чего-то/кого-то, либо еще что-то (типа болезни, мелких форсмажоров и т.п.). Из этого следует то, что нельзя подходить к расчету предполагаемой выручки по формуле Rh*160 (где Rh -- это почасовой рейт), в реальности выйдет, в лучшем случае, Rh*120.

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

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

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

Подошло время очередного кинообзора. В этот раз будут впечатления о нескольких фильмах и одном сериале (плюс маленький бонус в конце).

Фильмы

Красное уведомление (Red Notice, 2021). Отличный развлекательный аттракцион, в котором смешались "Телохранитель жены киллера", "Индиана Джонс", "Сокровища нации" и даже знаменитая белка из "Ледникового периода". Но ни в коем случае не следует искать в этом кино чего-либо серьезного, это чистой воды развлечение.

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

Небо (2020). Красиво снято. Но саму по себе историю рассказали настолько плоско и неинтересно, что прямо обидно. Да и количество пафоса зашкаливает ну совсем уж неприлично. А вот увидеть в эпизодической роли Владимира Онокоя было неожиданно :)

Веном 2 (Venom: Let There Be Carnage, 2021). По сравнению с первой частью сделано откровенно халтурно. Если первый фильм зашел, то можно и вторую часть глянуть, но без ожиданий чего-то стоящего.

Шан-Чи и легенда десяти колец (Shang-Chi and the Legend of the Ten Rings, 2021). Очередное кино про очередной кусочек вселенной Marvel. Может быть интересен тем, кому нравятся фильмы по комиксам от Marvel, да еще и сдобренные восточными единоборствами. В принципе, можно и посмотреть, благо юмор в фильме не позволяет воспринимать его всерьез.

Армия воров (Army of Thieves, 2021). Красиво снятая фигня.

Амнезия (Awake, 2019). Нудная и затянутая муть.

Сериал

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


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

Завершающий фильм бондианы с Крейгом. Боюсь, это самый слабый фильм про Бонда за последние лет 20-25. По впечатлениям, так вообще как будто смотришь что-то из бондианы времен 1970-х годов. Ну и главный вопрос: неужели владельцы бондианы зарезали курицу, которая несла им золотые яйца? А если нет, то как они собираются выруливать после смерти своего главного героя?

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

вторник, 23 ноября 2021 г.

[prog.c++] Небольшое обновление RESTinio с исправлением проблемы под C++20

Мы тут выкатили очередной релиз RESTinio. Ничего серьезного, но исправлена проблема при использовании RESTinio и fmt-8.0.1 под C++20. Так что теперь RESTinio может спокойно применяться и в C++20, хотя все еще остается проектом C++14.

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

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

В этом плане даже такой мелкий релиз лично для меня уже оказывается знаковым. Таки живем, таки творим (как бы высокопарно это не звучало).

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

Второй момент связан с тем, что при разработке RESTinio мы используем SObjectizer в некоторых тестах, где требуется проверки в многопоточных сценариях. И SObjectizer в самом RESTinio применяется уже довольно старый, еще из ветки 5.5.

Так вот, я был сильно удивлен тому, что SObjectizer-5.5 спокойно и без каких-либо проблем собрался и заработал под C++20.

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

И тот факт, что пользователи SObjectizer-5.5, которые не имеют возможности перевести свой софт на 5.6/5.7, могут продолжать жить с SO-5.5 и под C++20, меня сильно радует. Эдакое теплое чувство внутри.

понедельник, 1 ноября 2021 г.

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

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

Мистериум: Эффект Марко (Marco effekten, 2021). Как я понимаю, это продолжение неплохой датской серии детективных фильмов. Но уже с другими актерами на главных ролях из-за чего часть обаяния этой картины уже пропадает. В целом по атмосфере очень похоже на то, что уже было. А вот по сюжету как-то слабовато, на мой взгляд.

Безжалостный (Bulhandang: nappeun nomdeului sesang, 2017). Вроде бы и неплохо, есть внезапные твисты, которые делают сюжет интересным. Но смотреть тяжеловато, т.к. для европейского зрителя и актеры практически на одно лицо, и имена героев не запоминаются. С учетом переплетенных сюжетных линий сложно следить за повествованием.

Начать с нуля (Cambio tutto, 2020). Как по мне, так проходной фильм с довольно-таки предсказуемым сюжетом и плоско-картонными персонажами. Все держится на актрисе в главной роли, она справилась мастерски. Однако, на фоне всего остального нынешнего шлака это кино вполне можно и посмотреть.

Старый Генри (Old Henry, 2021). Затянуто. Проматывал наиболее занудные моменты. Если бы не это, то фильм был бы прекрасным образчиком того, как можно снять хорошее кино за недорого.

Мадам Парфюмер (Les parfums, 2019). Это не комедия, ни драма, ни мелодрама. Просто милый фильм с хорошими актерами. Можно глянуть если больше смотреть нечего. Но и ждать от него не нужно ничего.

Новый порядок (Nuevo orden, 2020). Мне не зашло. Такое ощущение, что авторы хотели сделать шок-контент, но пригламуренный. Получилось лайт-жестокость ради лайт-жестокости.

Клыки ночи (Night Teeth, 2021). Уж не знаю, как можно было сделать боевик про вампиров настолько скучным и унылым, но тут это получилось.

Хороший, плохой, коп (Copshop, 2021). Фильм-разочарование. Отличный трейлер, интересная фабула. Но воплощение -- это какой-то треш и отстой. Если не хотите после просмотра отплевываться и задаваться вопросом "Как можно было испоганить такую завязку?", то это кино лучше не смотреть.


Фильм вне категории: Поездка (I onde dager, 2021). Так и не понял, что это было. Для черной комедии он слишком серьезен, для Ъ-шного кровавого слэшера -- слишком ироничен и саркастичен. Лично для меня это треш, угар и содомия, чуть ли не в прямом смысле слова. Потраченного времени жаль. Но наверняка кому-то такое кино зайдет.

вторник, 26 октября 2021 г.

[life.music] Неожиданное и приятное открытие, связанное с ЦАПом CM108 на CS4398+TDA1308

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

Среди ЦАПов, о которых рассказывалось в предыдущем посте серии, было упоминание о безымянном ЦАПе на базе когда-то ТОПового чипа от Cirrus Logic CS4398 и усилителе TDA1308. Правда, он, как оказалось, не совсем безымянный. На просторах Aliexpress он известен как CM108. Впрочем, речь не о названии, а о звучании.

Изначально этот ЦАП показался мне излишне светлым. С "темными" накладными и полноразмерными наушниками (вроде KOSS Porta Pro) он звучал нейтрально, а вот с 32-омными вкладышами басов практически не было. Так что пользоваться им не смог. Но и на продажу выставить рука не поднялась, т.к. ну очень уж драйвовая у него подача.

Так он и лежал у меня без дела, пока не решился на эксперимент с покупкой высокоомных динамиков (выбирал между 120- и 130-омными моделями). Но дабы не выбросить деньги понапрасну сперва проверил, а тянут ли мои ЦАПики наушники с импедансом больше 100ом.

Взял т.н. impedance plug (это такой штекер-переходник для 3.5-мм разъема с дополнительным сопротивлением внутри) на 80ом и стал пробовать звучание ЦАПов со своими основными на тот момент 32-омными вкладышами (т.е. суммарное сопротивление составляло ~110ом).

Все ЦАПы, даже самые дешевые, спокойно "раскачивали" такую связку.

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

"Ничего себе!", подумал я. И стал ждать посылки со 120омными динамиками.

Когда посылка пришла и новые наушники были собраны, то попробовал их в первую очередь с CM108.

Результат очень понравился. Этот ЦАП, даже не смотря на то, что он поддерживает всего 16bit/48kHz, сразу же перешел в категорию любимых. Настолько интересный, детальный, глубокий и драйвовый звук он выдает.

А давеча решил подключить 120омные наушники к ЦАПу через 80омный impedance plug.

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

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

К чему я это все рассказал?

Эксперименты с повышением сопротивления ваших наушников могут привести к интересным результатам.

В качестве дополнительных источников информации к размышлению пару статей из Интернета: Правда или нет? Высокоомные наушники звучат лучше и На что влияет сопротивление наушников.


Напоследок поделюсь некоторыми своими текущими соображениями, которыми бы я руководствовался бы сейчас, если бы мне потребовалось выбрать для себя новый ЦАП.

Сейчас бы я обратил внимание на описание усилителей, которые используются в ЦАПе кроме основного чипа. Если в "свистке" производителем указывается только ЦАП-чип (например, CS43191), то такой "свисток" я бы уже не рассматривал. А вот если бы кроме ЦАПа указывалось бы, что применяется дополнительный усилитель (или даже несколько), то это стало бы для меня весомым плюсом.

И не потому, что я разбираюсь в том, как меняет звук какой-нибудь OPA1612, TDA1308 или AD8397. Нет, в этом как раз не разбираюсь.

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

С другой стороны, за это придется расплачиваться повышенным энергопотреблением. Ко мне еще не попадали экономичные ЦАПы с хорошим звуком, да и в отзывах/обзорах про такое слышать не приходилось.