пятница, 7 октября 2011 г.

[work.management] Понравилось про “несчастья” менеджера проекта

11 главных “несчастий” менеджера проекта

Малюсенькая цитата для затравки:

-  «скажи мне быстренько»
У нас есть возможность запустить большой проект. Такой, что когда доделаем и сядем на «саппорт» – будем всю жизнь кормить компанию. Нам нельзя его «профукать», нужны оценки. Срочно. Завтра. Чтобы я с ними поехал договариваться с заказчиком.
Сделаешь?

PS. Ссылка найдена через здесь.

[prog.flame] Наткнулся на свой старый список претензий к Boost

Будучи некоторое время активным RSDN-ером написал там множество комментариев. Через которые ко мне в блог и сейчас попадают люди. Интересно бывает перечитывать то, что писал N лет назад. Вот как в данном случае.

Так уж получилось, что на Boost я смотрел года с 2001-го, но в серьезную эксплуатацию никогда не брал. Самое большое – это использование Boost.Test в нескольких мелких проектах (откуда он теперь выпиливается). Почему так произошло – тема долгого разговора. Вкратце список того, что мне не нравится(лось) в Boost-е я описал вот в этом комментарии. Позволю себе его процитировать, поскольку прошло уже больше трех лет, а список до сих пор актуален:

1. Реализация boost-а исключительно сложна. Ну т.е., когда все идет гладко и в исходники библиотеки заглядывать не нужно, то нет проблем. Но, тем не менее, здесь есть два момента, которые мне не нравятся:
— ни в одном другом языке (а мне приходилось лазить в библиотеки Ruby, Eiffel, D, немного Java) мне не приходилось видеть такой разительной разницы в сложности реализации библиотек и прикладных приложений. По мне, это некий признак того, что что-то где-то не так;
— всегда приятно иметь увереность в том, что твоих знаний хватает для того, чтобы при необходимости разобраться в деталях с происходящим в твоем приложении. По крайней мере у меня не было проблем с тем, чтобы залезть во внутренности MFC, Qt, FOX, ACE. В случае с boost ситуация обратная -- тот же boost.variant сразу же отбивает желание понять, как же он устроен.

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

3. Некоторые библиотеки boost-а (тот же boost.lambda, а так же boost.spirit), на мой взгляд, являются примерами того, что не нужно делать. При этом у меня складывается впечатление, что наличие подобных вещей создает у C++программистов "головокружение от успехов" -- т.е. программирование на шаблонах в C++ становится модным направлением. Именно "модным", когда шаблоны применяются и к месту, и не к месту.

4. Boost велик. Слишком велик. 22Mb в tar.bz2 версии 1.35 -- это занадто. Имхо, для C++ поздно создавать одну большую стандартную библиотеку. Можно понять Sun с JDK и MS с .NET Framework, которые держат большие штаты программистов, поддерживающих JDK/.NET Framework. А кто будет поддерживать OpenSource-ный boost? Что произойдет, если кому-то из авторов включенных в boost библиотек надоест сопровождать и развивать свое творение? Или как разработчикам каких-то библиотек выпускать новые релизы вне графика выхода версий самого boost-а?

Далее, включение библиотеки в boost осуществляется по результатам review, в которых, обычно, едва набирается несколько десятков отзывов. Т.е. заявляется что-нибудь типа boost.egg и что? Находятся несколько ценителей прекрасного, которые присылают положительные review и egg в boost-е. И что из того, ценность буста повысилась? В то же время вне буста есть, например, crypto++, botan или cryptlib, которыми пользуются сотни, если не тысячи программистов, но которые никаким боком к boost-у не относятся.

Еще один момент. Библиотеки, которые являются альтернативными boost-овским, они что, уже второго сорта? Бустовская сериализация -- она лучше, чем s11n? Бустовские регулярные выражения лучше, чем PCRE? Бустовские юнит-тесты намного лучше CppUnit? Не получится ли так, что когда разработчику понадобиться что-то, то он просто возмет реализацию из boost-а даже не глядя на альтернативы? Т.е. выбор будет строится не на возможностях, а на репутации. Как бы в результате boost не стал монополистом, который своей массой будет просто давить конкурентов.

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

[work] Чужой транспортный протокол как бальзам на душу

Одним из направлений деятельности компании, в которой я работаю, является SMS-агрегирование. Т.е. к нам подключаются клиенты, которые желают отправлять или получать SMS/USSD, а мы подключаемся к целой куче операторов по СНГ и Европе и перекачиваем SMS/USSD-трафик в обе стороны.

Лет 8-10 назад все было просто. Стандартным протоколом для подключения к операторам на просторах бывшего СССР являлся SMPP (Short Message Peer-to-Peer), в Восточной Европе – UCP (Universal Computer Protocol). Имея реализации двух этих протоколов можно было практически безболезненно подключаться чуть ли не ко всем операторам. Грабли, конечно, были. Собственно, за счет этого SMS-агрегаторы и живут, поскольку берут на себя всю головную боль из-за особенностей реализации протоколов тем или иным оператором и прочей организационной лабуды.

Но лет шесть-семь назад началась какая-то ползучая болезнь. Операторы стали ставить у себя разной степени вменяемости и качества промежуточные шлюзы. Сначала это были вариации на тему CPA (Content Provider Access) – т.е. централизованный контроль за тем, что делает поставщик контента – не рассылает ли без спроса спам, к примеру. Некоторые реализации платформ CPA заёбырадовали творческим переосмыслением некоторых моментов протокола SMPP (как, скажем, CPA-платформа от питерской компании “Беркут”). Но они хотя бы давали вход по SMPP.

Потом маразм стал крепчать. Операторы вдруг озаботились внедрением сбацанных на коленке шлюзов для подключения контент-провайдеров. Причем почти все для этих целей выбирали связки из HTTP+XML. Кто-то в чистом виде – HTTP-запрос, на который приходит HTTP-ответ. Кто-то в виде SOAP-а. Один даже использует для этих целей SMTP (т.е. каждый SMS оформляется в виде e-mail, причем без возможности получения отчетов о доставке).

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

Как бы то ни было, ситуация сейчас напоминает зоопарк с признаками дурдома. Некоторые протоколы, такое впечатление, проектировали очень далекие от предметной области люди. Это касается как собственно технических деталей (громоздкий HTTP+XML транспорт вместо компактного и эффективного бинарного SMPP), так и состава протокола (отсутствие важных полей в сообщениях), так и качества техподдержки – бывает на свои вопросы по непонятным местам протокола приходится выбивать ответы неделями.

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

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

Но сегодня мне попался в руки документ с описанием протокола транспорта SMS от одного серьезного поставщика контента. Это был прямо бальзам на душу. Я этот документ прочитал залпом, как отличную художественную литературу. В нем радует практически все – начиная от формы представления данных (бинарный протокол на принципах TLV) и заканчивая составом и назначением PDU протокола. Все очень близко к тому, до чего мы и сами дошли за все время работы.

Есть еще, оказывается, знающие и толковые люди! Что не может не радовать ;)

четверг, 6 октября 2011 г.

[prog] Вот так Ruby 1.8.* и закончит свои дни…

Из свежей новости о дальнейшей судьбе Ruby 1.8.7:

* We continue to provide normal maintenance for 1.8.7 as usual, until June 2012. You can safely assume we provide bugfixes and no incompatibility shall be introduced.

* After that we stop bugfixes. We still provide security fixes until June 2013, in case you are still using 1.8.7.

* We will no longer support 1.8.7 in all senses after June 2013.

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

В принципе, ожидаемо. Но грустно – есть всего год на то, чтобы разобраться с тараканами ветки 1.9 и таки перейти на нее :( Боюсь, не успею ;)

PS. Оказывается, я уже шесть лет пользуюсь Ruby, как раз 1.8. Как быстро летит время.

[life.sadness] Стив Джобс: Мы сделали кнопки на экране настолько хорошими, что вы будете хотеть их облизывать

Поскольку утро началось с новости о смерти Стива Джобса, то в память о человеке, изрядно изменившим индустрию, еще одна его цитата (источник):

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

воскресенье, 2 октября 2011 г.

[life.sport.darts] Выстрелы Робин Гуда могут и 180 сорвать

Вот таким вот образом, к примеру – два первых дротика вошли в T20, а третий – в хвост одного из них:

Второй раз у меня уже так. Хорошо что оба раза на тренировках, а не на соревнованиях.

[life.sport.darts] Несколько слов о закупке дартс-принадлежностей в Интернет-магазинах

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

Есть три магазина, в которых имеет смысл закупаться:

1. http://www.puredarts.co.uk/ – для меня это самый предпочтительный вариант, хотя выбор там не такой уж большой.

2. http://www.dartscorner.co.uk/ – самый большой выбор всякой всячины.

3. http://www.a180.co.uk/shop/ – выбор не такой большой, как в двух предыдущих, но по ценам может быть привлекательным.

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

Но... На puredarts доставка в Беларусь по умолчанию 10 фунтов. Тогда как в двух остальных магазинах минимальная доставка – 7 фунтов. Поэтому здесь нужно исходить из стоимости и состава заказа. Если заказывать дротики, то дешевле выйдет на puredarts даже не смотря на более дорогую доставку. Если только хвостики/перышки, то тут нужно считать, т.к. итоговая стоимость будет сильно зависеть от количества закупаемого.

Еще одна особенность – на dartscorner-е и a180 есть система скидок. Для dartscorner-а я знаю хороший код скидки – Gooad10, дает -10% от стоимости. На a180 знаю код для 5% скидки – everythingdarts. Для puredarts ничего подобного я не видел, подозреваю, что там это явление отсутствует как класс (хотя при оплате покупки можно увидеть поле для ввода discount code).

Еще одна важная штука – на всех сайтах есть уцененные товары, на которые сами магазины сбросили цены. На dartscormer и a180 они указываются в cоответствующих разделах (special offers). На puredarts нужно ввести в строке поиска волшебное слово SALE.

Так что на небольших суммах стоимость доставки + скидка на dartscorner или на a180 могут дать стоимость заказа меньше, чем на puredarts. Еще одна плюшка dartscorner и a180 – там можно выбрать бесплатные подарки при больших закупках (например, больше 30 фунтов, больше 40, больше 60). Хотя на таких суммах из-за разбежки в ценах закупка на puredarts все равно будет дешевле.

По поводу цен есть одна особенность – нужно смотреть цены в которых указано ex.VAT – т.е. без английских налогов. На puredarts для этого нужно зарегистрироваться на сайте и указать страну проживания. Тогда puredarts сразу будет указывать стоимость без VAT – это делает все товары заметно дешевле. На dartcorner и a180 указываются обе цены – без VAT и с VAT, ориентироваться нужно на более низкую (если зарегистрироваться, то, как и на puredarts, будет показываться цена без налогов).

Еще несколько слов по поводу выбора магазина. На puredarts очень хороший выбор – есть практически все, что нужно. Но, имхо, там представлены только английские производители. Поэтому дротиков от Bull’s, например, в puredarts нет. Еще один недостаток puredarts – размеры дротиков в описании приведены далеко не для всех моделей. В этом смысле dartscorner отличается в лучшую сторону – огромный выбор от разных производителей дартс-принадлежностей (не только английские, но и европейские, австралийские, американские), хорошие фотографии дротиков, для многих моделей указаны размеры. Плюс понятная структурированность разделов сайта. Поэтому иногда выбор дротиков для себя лучше делать на dartscorner-е, а потом смотреть наличие выбранной модели на puredarts.

Еще один существенный довод в пользу магазинов dartscorner и a180 – у них можно заказать дротики сразу с заменой игл. Выбираешь дротики, выбираешь иглы и добавляешь в корзинку услугу repointing service. После чего тебе приходят дротики уже с новыми иглами. Причем, что хорошо, занимаются этим люди профессионально, на соответствующем оборудовании. Поэтому высока вероятность, что подобная замена пройдет нормально.

Для оплаты покупки нужна банковская карточка. При открытии карты нужно указать в банке, чтобы у нее была возможность платить в Интернете (по-моему, большинство карт эту возможность имеют по умолчанию, но мало ли какие особенности у конкретных банков).

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

Так же все три магазина поддерживают оплату через PayPal (хотя для нас, в связи с отсутствием Беларуси в списке “цивилизованных” стран у PayPal-а, это не сильно актуально).

После оплаты магазин присылает письма-подтверждения о том, что заказ принят. puredarts и dartsconer еще отдельно информируют о том, что посылка отправлена. У a180 это бывает не всегда, но там можно уточнить статус заказа по почте – отвечают оперативно.

puredarts всегда высылает товары посылкой у которой есть Tracking ID (только вот узнавать его нужно отдельно – для чего достаточно написать письмо с просьбой сообщить Tracking ID). Магазины dartscorner и a180 недорогие посылки отправляют дешевым тарифом и поэтому у посылки нет Tracking ID (если заказ дешевле 30 фунтов, то точно пойдет дешевой доставкой). Для дорогих заказов у посылки Tracking ID будет, причем dartscorner его сразу укажет на странице со статусом заказа.

При наличии Tracking ID посылку можно отслеживать. На сайте belpost.by можно увидеть, когда посылка пришла, когда попала на таможню и т.д. Обычно посылка идет до Беларуси от 7 до 20 дней (чем ближе к Новому Году, тем медленнее). Потом еще несколько дней по РБ. В общем, в лучшем случае доходит за две недели, в худшем почти за месяц (это если заказ делали ближе к Рождеству).

Стоимость посылки имеет значение. Насколько я знаю у нас в РБ есть ограничение – в месяц можно без пошлины получать посылок из-за границы на сумму до 120 евро (~99 фунтов). Все что больше задерживается на таможне и требует уплаты пошлины в 30% от превышения 120 евро. В России, вроде как, проще – там без пошлины проходят посылки до $1000.

По основным моментам практически все. Маленький совет – лучше всего делать коллективную закупку. Человек на 4-5 или больше. Тогда стоимость доставки раскидывается на всех и получаются совсем небольшие суммы накладных расходов.

PS. Для полноты картины стоит упомянуть еще несколько Интернет-магазинов, которые могут оказаться полезными.

Первый из них – это http://deadeyedarts.com. Австралийский магазин, главное достоинство которого – это фотографии дротиков. Вроде бы это единственный магазин, в котором для моделей разных весов публикуют их актуальные фотографии. Дело в том, что если у какой-то модели есть разные веса (скажем, 22g, 24g и 26g), то дротики разных весов будут заметно отличаться друг от друга размером (длиной или толщиной, а то и тем, и другим). Подавляющее большинство магазинов на это не акцентируют внимания – просто публикуют для всех весов одну и ту же фотографию. А вот deadeyedarts указывает актуальные снимки дротиков. Вот, для сравнения, как представлены модели Unicorn Sigma Pro 950 на dartscorner и на deadeyedarts.

Второй – это http://reddragondarts.com. Английский магазин одноименного производителя дартс-товаров. Хорош тем, что в нем большой выбор различных моделей дротиков (как Nodor/Winmau, так и своих, так и чужих) + указаны точные размеры моделей + для ряда моделей даны ссылки на видеообзоры + хороший сервис. Из минусов – высокие цены, в частности на хвостики/перышки. Тем не менее, ряд очень интересных моделей дротиков есть только на RedDragon-е (в частности Fusions или Sky-Pro’s), поэтому имеет смысл заглядывать и сюда при выборе дротиков.

Третий – это http://www.madhousedarts.co.uk/. Так же английский. Главной особенностью которого является отсутствие возможности покупок из Беларуси и России. Но зато там есть такая уникальная услуга, как изготовление дротиков на заказ по собственному эскизу. Поэтому этот магазин может оказаться полезным для тех, у кого есть друзья/родственники на Туманном Альбионе.