суббота, 19 декабря 2009 г.

[life.photo] Как Олимпийский Огонь перевозят с континента на континент?

Кто-нибудь задумывался о том, как именно в самолетах перевозят Олимпийский Огонь? А вот так:

Найдено в фоторепортаже о передвижении Олимпийского Огня в Канаде.

Не могу не опубликовать еще одну фотографию оттуда:

[life.business] Поток сознания на тему “Своя Компания”…

…родившийся по мотивам заметки “Своя Компания” и комментариев к ней в блоге “Алёна C++”.

В детстве было очевидно, что когда я вырасту, то стану знаменитым и богатым. Такое будущее воспринималось как естественное и само собой разумеющееся. Но время шло, и все острее вставал вопрос: “Ну и где, собственно?” ;)

Главный ответ на этот вопрос мне повезло вычитать в какой-то книжке в возрасте 16-ти или 17-ти лет: нельзя стать миллионером, работая “на дядю”. Но создавать свое дело у меня никогда не было большого желания. Первая причина – наследственная неспособность дешево купить и дорого продать. Со временем стала понятна и вторая причина – трудности в общении с людьми. Поскольку бизнес, как мне представляется, это связи. Которые нужно заводить, нужно поддерживать, нужно использовать. Причем связи не только в смысле “блата” или “полезных знакомств”, а даже взаимоотношения между коллегами и подчиненными – суметь заинтересовать кого-то своей идеей – это большое дело.

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

На том и успокоился. Что, видимо, и привело в конечном счете, к формированию “психологии наемного рабочего”, готовности продавать свои мозги и свое время за фиксированную ставку. Зато получив возможность концентрироваться на вопросе “Как?” вместо вопросов “Что? Зачем? По чём?”

Если на этом моменте сильно акцентировать внимание, то возникает соблазн провести четкую грань: наемный рабочий – лузер, а владелец компании – соответственно, виннер. Такое бинарное деление мне просто фиолетово. Курчатов и Королев были, по сути, наемными рабочими. Или, чтобы быть ближе к своей профессиональной области – Никлаус Вирт, Бьярн Страуструп, Джеймс Гослинг или Гвидо ван Россум. Мне всегда хотелось сделать востребованный язык программирования, а не бизнес по продаже компиляторов.

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

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

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

А вот со стартовыми условиями ситуация иная, более-менее мне знакомая. Так уж получилось, что в двух из своих четырех мест работы, я работал как раз в условиях стартапов. Сначала в КСБП, где за очень смешные деньги мы пытались родить новую SCADA-систему. Затем в Интервэйл (особенно его подразделение в Гомеле), когда из небольшой фирмочки с едва ли десятком сотрудников (включая директора и бухгалтера) выросла приличная компания, с филиалами в нескольких странах. У нас в Гомеле изначально даже не было офисного помещения – несколько местных сотрудников встречались в аудиториях ВУЗ-ов, в кафе, на квартирах. Потом появился первый офис – комната в 15 метров с четырьмя столами. Потом следующий офис – уже из трех комнат. Теперь мы снимаем половину этажа в местном научно-исследовательском институте и планируем занять весь этаж.

Так что работу в условиях стартапа я себе прекрасно представляю. Более того, именно такая работа мне больше всего нравится: есть цель, есть несколько единомышленников, всех остальных нужно сделать, если не мы, то нас… Ну и все такое. Плюс никакой бюрократии, иерархии, сложных служебных взаимоотношений и прочей политики. Лепота! Хорошие были времена. Правда, хорошие.

Зачастую приходится слышать, что стартапу на первом этапе нужен большой стартовый капитал для того, чтобы платить прилично “крутым” разработчикам. Мол, для создания нового продукта с нуля нельзя брать дешевых студентов, нужно брать матерых проффи, которые все сделают в лучшем виде.

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

Думаю, что найдутся опытные разработчики, которые рискнут ввязаться в новый амбициозный проект даже за небольшие “живые” деньги, но с расчетом на долю в прибыли. По крайней мере один такой точно есть – я еще не настолько стар, чтобы отказаться от риска окунуться в новый стартап :) Конечно, я не мегамонстр от программирования, но многих молодых порвать вполне способен (и в прямом смысле так же) ;)

Так что небольшой совет желающим открыть свой маленький свечной заводиксофтверный бизнес: не стесняйтесь предлагать работу опытным разработчикам за маленькое вознаграждение и партнерство в предприятии – кто-нибудь может и согласиться ;)

пятница, 18 декабря 2009 г.

[comp.prog] Интересное высказывание о стоимости строки кода

Сделано тов.gear nuke в одном из форумов RSDN:

Строка кода ничего не стоит. Строка кода с ошибкой стоит дорого. А платят за решение проблем, или — реже — за надежду

Согласиться с этим пока не готов. Но мысль интересная.

[life.photo] О величии стихии и дерзости человека

Фото найдены здесь.

А в завершение небольшой видеоролик, который позволяет ощутить все это еще острее:

четверг, 17 декабря 2009 г.

[life.thoughts] Повод застрелиться: “Если ты доцент, и у тебя нет бизнеса…”

Сегодня в блоге “Алёна C++” появилась заметка “Своя компания”. Поскольку в последнее время меня донимают разные мысли на эту тему, то я стал обдумывать свой собственный очередной блог-пост. А тут наводка в Тупичке Гоблина на феноменальное высказывание Анатолия Чубайса:

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

Мое первое впечатление – если это не вырванная журналистами из очень узкого контекста фраза, то это просто приплыздец… Еще больше убеждаешься в разумности анекдота: “Я не знаю, о чем вы тут разговариваете, но таки послушайте, что я вам скажу – ехать надо!”

Потом погуглил. Нашел статью, в которой контекст этой фразы развернут более широко:

— Только один Массачусетский технический институт за время своей работы создал столько бизнесов, что их ежегодный объем продаж равен четырнадцатому ВВП в мире, — обратился Анатолий Чубайс к опыту зарубежных коллег. — А у вас целых 36 вузов. Да голову надо приложить, голову к этой задаче! Спроси любого ректора, сколько студентов, какой объем научно-исследовательских разработок выполняете, — с ходу ответит. Задаешь третий вопрос — сколько бизнесов создал вуз? Ответят: «Ну, вот полторы компании есть, одна скоро точно появится... Если ты доцент или заведующий кафедрой и у тебя по твоему направлению нет бизнеса своего, да на кой черт ты мне нужен? Это вчерашний день, и профессионал-преподаватель сегодня, не способный создать своего бизнеса, ставит под вопрос свой профессионализм, — высказал свою точку зрения Анатолий Чубайс.

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

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

Так вот, если в России действительно внемлют словам Чубайса и начнут претворять их в жизнь с чисто русским размахом (“…до основания, а потом…”), то приплыздец обязательно случится.

PS. Есть у меня мнение, что куча бизнесов вокруг MIT возникла вовсе не усилиями преподавателей, а силами бывших студентов и аспирантов MIT-а. И еще мне кажется, что MIT-овские профессора в советах директоров разных компаний – это в большей степени PR-ходы самих компаний, которые таким образом пытаются создать себе больший вес в глазах клиентов. Сами же профессора к именно бизнесу имеют посредственное отношение. Впрочем, здесь я не копенгаген…

[life.photo] Отличные фотографии с Олимпийских Игр 2008

Повезло найти в Интернете (общим числом 39). Вот некоторые из них:

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

[comp.prog.doc] Слова Джеймса Кэмерона, которые я бы отнес и к документированию

Отлично сказано:

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

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

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

среда, 16 декабря 2009 г.

[comp.prog] Презентация об использовании Erlang в Facebook

Erlang at Facebook – интересная PDF-а на 40 страниц.

Erlang использовался для реализации части сервиса Chat в Facebook. Прототип сервиса был создан в январе 2007, затем командой из 4 человек доводился до ума до осени 2007-го. В феврале 2008 проект был запущен в тестовую эксплуатацию.

PS. Раз уж речь зашла о Web-проекте, который активно использовал AJAX для обмена информацией с сервером, можно упомянуть свежий блог-пост Джо Армстронга об Web-сокетах. В котором он пророчит неминуемую смерть подобным AJAX-овским наворотам.

[life] Шкафы-купе: на что нужно обращать внимание?

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

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

Еще один вопрос к читателям-гомельчанам. Пока мы думаем заказывать в “Дом-Интерьер”. Если у кого-то есть компромат на эту контору, поделитесь, плз. :)

[life.wow] Лепота: кофе, сигарета и –23 за бортом ;)

Перед нашими окнами стоит соседний дом. На одной из лоджий которого две тетеньки любят по утрам выпивать по чашечке кофе и выкуривать по сигарете, такой вот ежедневный ритуал. Сегодня одна из них, как обычно, курила сигарету и пила кофе на балконе. Одетая в зимнюю куртку с надетым на голову капюшоном. Поскольку на улице с утра было –23 градуса. В общем, мороз не повод лишать себя привычного удовольствия :)

В качестве бонуса. Жена отводила дочку в школу сегодня:

Идем пару минут, молчим. Потом я спрашиваю:
-- Тебе холодно?
-- Нет.
Еще через пару минут молчания спрашиваю:
-- Что у тебя замерзло?
-- Все!

вторник, 15 декабря 2009 г.

[life] Мебель для детской

По осени появились таки возможности и время прикупить новую мебель для детской комнаты. Комната маленькая, порядка 2.85x2.5 метра. Поэтому выбор оказался непростой задачей – пересмотрели несколько каталогов с готовой мебелью, долго облизывались на мебель Дядьково… Но в результате решили заказать изготовление мебели по нашим размерам, т.к. готовые варианты не вписывались ни по размерам, ни по расцветке, ни по вменяемости цен.

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

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

Еще пример для иллюстрации доброжелательного отношения со стороны Lex-овцев. Мы к ним забрели в первый раз с нарисованным от руки эскизом того, что мы хотим. Дизайнер отсканировала наш рисунок и сказала, что набросает предварительный проект и прикинет примерную стоимость. И действительно перезвонила она нам через несколько часов. Через пару дней мы туда еще раз приехали. Она нам показала проект на компьютере. Т.е. человек взял и сам, без нашей просьбы, нарисовал на компьютере проект, сделал расчет и сообщил нам практически точную цену. А ведь мы даже не изъявляли желания заказывать у них что-нибудь. И она не знала, приедем ли мы к ним еще раз.

 

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

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

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

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

  1. Ведите все согласования только с одним и тем же дизайнером. Он будет помнить, что и как он делал, и что мы от него хотели. При передаче информации между разными дизайнерами обязательно возникнет эффект “испорченного телефона”.
  2. Когда вы заказываете шкафчики глубиной, например, 400mm, уточните, будет ли это глубина только шкафа или сюда будет добавлена еще и толщина дверцы. Мы, например, хотели 400mm вместе с дверцей, а получили 400mm глубиной (а с дверцей где-то 420mm).

Ну и в завершение упомяну еще один фактор, из-за которого мы остановились на Lex’s-Мебель. Во многих подобных конторах в Гомеле макет рисуют вручную на бумаге, а не моделируют на компьютере. В Lex’s же мы увидели, как наш проект будет выглядеть почти “в живую”. Конечно, компьютерная модель и реальность далеко не одно и то же, но все же очень похоже.

[life.photo] Ой, мое ухо, ухо! – Поздно, прокомпостировали!

Отлично пойманный спортивный момент:

Найдено в очередном выпуске WSJ’s Pictures of the Day.

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

[comp.prog.flame] null-указатели и притягивание за уши решений из функциональных языков

В RSDN-овском обсуждении Billion-dollar mistake тов.Кодёнок продемонстрировал, как тип Maybe из функциональных языков:

data Maybe a = Nothing | Just a

мог бы использоваться в C++/C# для сокращения количества проблем с null-указателями:

struct Maybe<A> {};
struct Nothing<A> : Maybe<A> {};
struct Just<A> { A value; };

void fun(Maybe<A> x)
{
    print(x.value); // type ERROR

    if (x is Just<A>)
        print( (Just<A>)x.value ); // OK
}

Мои скромные познания в C# позволяют думать, что это пример C#-ного кода. В C++ такой подход выглядел бы более сурово, за счет использования dynamic_cast-ов или каких-то других фокусов. Поэтому я думаю, что подход с типами Maybe, Nothing и Just в C++ не прошел бы. Для C++ нужно было бы иметь что-нибудь более заточенное под C++, а не кальку с функционального языка.

Например, можно было бы использовать Boost-овский Optional. Что-то вроде:

// Здесь мы не должны получать NULL.
void g( A & a ) { ... }

// А вот здесь мы можем получить NULL или не-NULL.
void fun(boost::optional<A*> x)
{
    if (x)
        g( **x ); // OK
}

Но для Boost.Optional null-указатель является допустимым значением. Поэтому можно было бы создать более простой аналог Boost.Optional, заточенный специально под хранение указателей:

// Класс, который не может хранить внутри себя нулевые указатели.
template< class T >
class not_null_ptr
  {
  public :
    not_null_ptr( T * ptr )
      // Вспомогательная функция ensure_not_null порождает исключение
      // если получает нулевой аргумент.
      : p_( ensure_not_null( ptr ) )
      {}
    ...
    T * get() const { return p_; }
    ...
  private :
    T * p_;
  };

// Класс, который может хранить внутри себя нулевые указатели.
template< class T >
class nullable_ptr
  {
  public :
    nullable_ptr( T * ptr )
      : p_( ptr )
      {}
    ...
    bool is_null() const { return !p_; }

    // Безопасный доступ к указателю.
    not_null_ptr<T> get_not_null() const { return not_null_ptr<T>( p_ ); }

    // Прямой доступ к указателю.
    T * get_any() const { return p_; }
    ...
  private :
    T * p_;
  };

// Здесь мы не должны получать NULL.
void g( not_null_ptr< A > a ) { ... }

// А вот здесь мы можем получить NULL или не-NULL.
void fun( nullable_ptr< A > x )
{
    if( !x.is_null() )
        g( x.get_not_null() ); // OK
}

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

PS. Это всего лишь набросок того, что я бы хотел видеть в C++ в качестве средств борьбы с нулевыми указателями вместо Maybe. Реальное решение должно быть более продвинутым. Например, должны решаться вопросы владения указателем (совмещение nullable_ptr с auto_ptr/unique_ptr и/или shared_ptr). Кроме того, в C++ null-указатель еще не самая страшная проблема – повисшие и запорченные указатели куда страшнее.

Но я хотел показать, что просто так тянуть Maybe из функциональных языков в C++ не нужно. Поскольку в каждом языке есть свои собственные тараканы, с коими нужно считаться.

PPS. Вот интересно, если бы шаблоны в C++ были с самого начала, могли ли классы вроде nullable_ptr/not_null_ptr появиться в стандартной библиотеке C++ сразу? Чтобы функции std::strcpy имели прототип:

not_null_ptr<char> strcpy(
  not_null_ptr<char> dest,
  const_not_null_ptr<char> src)

:)

[comp.prog] Ruby 1.9.1-p376

7-го декабря была выпущена обновленная версия Ruby 1.9.1 – Ruby 1.9.1-p376, в которой была исправлена уязвимость с переполнением хипа и сделано еще более ста исправлений. Публикую эту новость с недельным опозданием, поскольку сразу не были доступны бинарники для Windows. Сейчас доступны, так что можно обновляться не только под Unix-ами, но и под Windows.

Исходники: http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2
Бинарники под Win32: http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.9.1-p376-i386-mswin32.zip
Бинарники под Win64: http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.9.1-p376-x64-mswin64_80.zip

PS. Сам я на Ruby в последнее время практически ничего не пишу, т.к. полно работы на C++. Поэтому продолжаю пользоваться, по уже сложившейся традиции, Ruby 1.8.7. Но надо, думаю, потихоньку переползать на ветку 1.9.

воскресенье, 13 декабря 2009 г.

[life.photo] Фотографии животных от Сергея Урядникова

Увидел их на PhotoLine.ru, но поскольку не понял, как вставлять в блог фото оттуда, то пришлось разыскивать в других источниках. К счастью это удалось сделать, большой фотоальбом работ Сергея Урядникова есть на сайте журнала “Вокруг Света”.

Борнейская пиратка

Crossing Pepe

Дубль 2 (этой антилопе убежать удалось, но крокодил слопал следующую)

Бонобо 5

Возвышенные чувства

Полярный кенгуру

PS. Рекомендую все-таки смотреть фото автора на PhotoLine.ru.