среда, 15 июня 2022 г.

[work.self.promotion] Опытный велосипедостроитель открыт для заказчиков из РБ/РФ

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

И постоянно строил велосипеды, которые тут же шли в работу. За счет чего приобрел специфический опыт и навыки.

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

А вот если вам нужен программист-камикадзе с нестандартными идеями чтобы соорудить велосипед на котором можно ехать быстрее/безопаснее/комфортнее... Таковым могу быть я.

Открыт для предложений в виде контракта между заказчиком и СтифСтрим. Варианты войти наемным сотрудником в штат клиента на данный момент не рассматриваются.

С получением денег из-за рубежа у нас в РБ сейчас все не очень гладко, поэтому наиболее интересны заказчики из РБ/РФ.

Монстрам ИТ-шного рынка, вроде Яндекса, ВКонтакта, Лаборатории Касперского, Тинькова и пр., мои услуги вряд ли понадобятся. А вот небольшим компаниям, которые не могут конкурировать на рынке труда с подобными монстрами, вполне. И обойдется это значительно дешевле 700k в месяц ;)

Связаться со мной можно через eao197 на gmail тчк com. Если кому-то интересен профиль на LinkedIn, то вот.


Дабы не быть голословным по поводу опыта создания велосипедов вот несколько примеров "из недавнего":

  • timertt. С++ библиотека для поддержки таймеров. Реализует механизмы timer_wheel, timer_list и timer_heap. Позволяет поддерживать большое количество (миллионы и десятки миллионов) активных таймеров. С 2014-го года используется в SObjectizer.
  • so5extra. Набор прибамбасов для SObjectizer-а, вроде дополнительных типов диспетчеров, mbox-ов и пр.
  • easy_parser в составе RESTinio, который представляет из себя реализацию PEG-парсера на С++ных шаблонах и constexpr-функциях (в рамках C++14) Подробнее в основной документации или вот этих статьях: раз и два.
  • MxxRu::externals. Велосипед, который мы с 2016-го года используем для управления зависимостями в собственных C++-проектах. В отличии от conan, vcpkg и пр., он не требует предварительного опакечивания зависимостей. Ознакомиться можно здесь или здесь. Кстати говоря, MxxRu -- это также мой старый собственный велосипед (документация здесь).

Упомяну также arataga. Хоть это и не инструмент для разработчика, но лисапед, сделанный практически в одиночку под специфические условия.

Кому-то я известен по проектам SObjectizer и RESTinio. Эти все создано с моим непосредственным участием и под моим руководством.

Опыт велосипедостроения в наличии.

Кроме собственно построения велосипедов могу еще и связно описывать построенное нормальным и понятным языком. Свидельством чему могут быть как публикации в этом блоге, так и статьи на Хабре.

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


Буду признателен, если вы сможете поделиться ссылкой на этот пост в своих соцсетях и/или распространить среди своих профессиональных контактов.

[prog.c++.sobjectizer] Обновленная версия моей самой первой статьи на Хабре

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

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

Так что вот: SObjectizer: что это, для чего это и почему это выглядит именно так? Взгляд из 2022-го.

Удивительными для меня оказались две вещи:

  • насколько мало изменений пришлось внести в текст исходной статьи. Не смотря на то, что SO-5.6/5.7 очень сильно в некоторых деталях отличаются от описанной шесть лет назад версии 5.5, потребовалось сделать всего несколько небольших правок в примерах кода. И вообще не пришлось ничего менять в описании ключевых аспектов. Т.е. за шесть лет эволюции что-то поменялось лишь в частностях, но осталось точно таким же в целом. Что просто здорово. Это дает надежду на то, что не смотря на развитие SObjectizer-5 уже на протяжении двенадцати лет, потенциал для дальнейшей эволюции у SObjectizer-5 еще есть;
  • насколько сложно оказалось написать послесловия. Потому, что я публично рассказываю в Рунете о SObjectizer, минимум, года с 2014-го, если не с 2013-го. И путь популяризации SObjectizer-а (если это вообще можно так назвать) отнюдь не был усыпан лепестками роз. Хотелось сказать и об этом, но, видимо, еще не пришло время, когда я мог бы спокойно об этом говорить. Поэтому послесловие вышло таким, каким вышло.

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

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

Просто в этот раз хотелось сконцентироваться на другом: проект живет уже больше двадцати лет. И пока у меня есть желание и возможность им заниматься. Поэтому проект все еще живет и все еще движется вперед.

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

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

четверг, 9 июня 2022 г.

[prog.humour] В очередной раз пришло время штудировать собственную же документацию

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

Документацию это писал сам, но уже не помню когда и как, поэтому читаю вообще как какой-то чужой текст.

Главная мысль: "Блин, надо бы основные моменты законспектировать..." :)

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

PS. За качество английского прошу не бить, пианист играет как умеет, google translate с grammarly на пару не смогли сделать лучше :)))

понедельник, 6 июня 2022 г.

[prog.work.humour] Баян, но прекрасный

FB напомнил запись от 2016-го года. Она и тогда была баяном, но за все это время своей актуальности не утратила:

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

PS. Пока что выходит так, что своим клиентам мы гарантируем лишь безумное велосипедостроение, с остальным они и сами прекрасно справляются :)))

пятница, 3 июня 2022 г.

[prog.c++.flame] Пример C++ного кода встретил в LinkedIn и в очередной раз убедился, что C++ придуман экспертами для экспертов

В ленте LinkedIn наткнулся на пост из категории "что делает этот код?". Разместившие этот пост товарищи заявили, что они типа работают на переднем краю и заинтересованы в C++Ninjas. Т.е., как я понимаю, им нужны крутые разработчики.

Код же вот такой:

#include <iostream>
#include <utility>
#include <tuple>

template<typename... Args>
void do_all(Args &&... args) {
    auto do_one = [count = sizeof...(args)](auto && arg) mutable {
        std::cout << arg;
        --count > 0 ? std::cout << "," : std::cout << "\n";
        return std::ignore;
    };

    (do_one(std::forward<Args>(args)) = ...);
}

int main() {
    do_all(123456789);
    return 0;
}

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

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

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

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

среда, 1 июня 2022 г.

[business.wow] Поиск клиентов через секс?

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

На моменте рассказа о том, как искать клиентов звучит следующее:

"... Как я еще нахожу? Это через сферу досуга, наслаждения. Для меня это искусство, это секс, путешествия..."

Секс?

Для поиска клиентов?

Чего-то я явно не знаю о бизнесе :(


Комментариев под видео с лекцией нет, поэтому даже не знаю, заметил ли вообще это слово в лекции кто-то кроме меня :)

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

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

Фильмы

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

Ускользающий человек (Yucheitalja, 2020). Очень даже ничего. Бодренько. Однако, если вы с трудом отличаете одно корейское лицо от другого, то смотреть будет сложновато.

Diabolik (2021). Непонятно кому пришло в голову в XXI-ом веке сделать что-то в стиле "Фантомаса" и "Джеймса Бонда" из 1960-х, но смотрится это прикольно. А на фоне выходящего сейчас киношлака так и довольно достойно.

Святым тут не место (There Are No Saints, 2022). Суровый и жестокий фильм, с прилично сделанными экшен-сценами. Но вот между этими самыми экшен-сценами все настолько уныло и печально, что в фильме нет ни драйва, ни нерва, ни сопереживания кому-либо из героев.

Операция «Мясной фарш» (Operation Mincemeat, 2021). Снято красиво. Просмотр какого-то серьезного негатива не вызывает, но и не торкает. Да и сама история рассказана так, что остаются вопросы о том, а чья же основная заслуга в успехе описанной в фильме операции.

Фантастические твари: Тайны Дамблдора (Fantastic Beasts: The Secrets of Dumbledore, 2022). Откровенно слабое кино. Затянутое и скучное. Смотреть можно разве что тем, кто хочет узнать продолжение истории.

Затерянный город (The Lost City, 2022). Мне не зашло. Может быть в переводе потерялся весь юмор, может быть уже забыл (или не смотрел) фильмы, которые хотели обстебать в "Затерянном городе", может не в курсе повесточки, над которой пытались иронизировать, может быть неприятно было видеть Сандру Буллок, у которой практически никакой мимики на лице не было... Может быть и все вместе. В общем, мне не зашло.

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

Лулу и Бриггс (Dog, 2021). Унылая тягомотина ни о чем.

Сериалы

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

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


Несколько дополнительных слов по поводу "Операции 'Мясной фарш'".

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

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

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

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