Sunday, April 27, 2008

Крышка ковчега из Библии

Кросс-пост с персонального блога... ---

Давно уже собирался выложить это где-нибудь на блоге, да руки не доходили...

10 Сделайте ковчег из дерева ситтим: длина ему два локтя с половиною, и ширина ему полтора локтя, и высота ему полтора локтя; 11 и обложи его чистым золотом, изнутри и снаружи покрой его; и сделай наверху вокруг его золотой венец. 12 и вылей для него четыре кольца золотых и утверди на четырех нижних углах его: два кольца на одной стороне его, два кольца на другой стороне его. 13 Сделай из дерева ситтим шесты и обложи их золотом; 14 и вложи шесты в кольца, по сторонам ковчега, чтобы посредством их носить ковчег; 15 в кольцах ковчега должны быть шесты и не должны отниматься от него. 16 И положи в ковчег откровение, которое Я дам тебе. 17 Сделай также крышку из чистого золота: длина ее два локтя с половиною, а ширина ее полтора локтя; 18 и сделай из золота двух херувимов: чеканной работы сделай их на обоих концах крышки; 19 сделай одного херувима с одного края, а другого херувима с другого края; выдавшимися из крышки сделайте херувимов на обоих краях ее; 20 и будут херувимы с распростертыми вверх крыльями, покрывая крыльями своими крышку, а лицами своими будут друг к другу: к крышке будут лица херувимов. Исход 25:10-20

А вот фото второго саркофага (shrine) фараона Тутанхамона:

Фото из июньского номера National Geographic за 2005 год:

Tuesday, April 22, 2008

Я уже жаловался на погоду с Сиэттле?

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

Мы не просто поимели снег, но и град! Я не стал занудствовать и писать об этом несколько дней назад, когда это случилось, но сегодня я узнал, что в Редмонде этот град был с голубиное яйцо размером... У Вадика Слесарева, который недавно ушел из Windows Home Server и теперь работает над встроенными автомобильными системами (представьте себе, CD риппер, встроенный в вашу машину! Нет, не компьютер. Одно устройство, чтобы и пиратски копировать музыку, и уезжать от полиции :-) Шучу, конечно ;) )... хм, о чем это я... Ага, так у Вадика Слесарева этим градом разбило столик, на котором он раскатывал тесто для пиццы, которую он печет в своей уникальной итальянской печке на заднем дворе. Не верите? Смотрите сами!

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

---
Как всегда, я сначала публикую на персональном блоге.

Saturday, April 19, 2008

Downoading communism – Печальное будущее бизнес-модели сегодняшней видеоиндустрии – взгляд из истории

У одного из моих коллег в офисе висел плакат: очкарик склонился над компьютером и собирается нажать кнопку Download, за его спиной огромный лохматый казак с черной лохматой шевелюрой, выпучеными глазами и огромными кривыми зубами, в полушубке, опоясанный пулеметными лентами, с огромной красной звездой на папахе одобрительно похлопывает паренька по спине. Все это сопровождается подписью “When you download free music, you download communism!”

Да-да, опять кросс-пост с персонального блога... 

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

Кратко и по существу

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

Отсюда выводы:

  1. Копирайт не является неотъемлемым требованием существования индустрии развлечений.
  2. Копирайт никогда не создавался, чтобы обдирать до нитки нищих студентов, что похоже превращается в новую бизнес-модель старой видеоиндустрии. Он просто не для того придуман.
  3. Копирайт не может функционировать как хребет бизнес-модели видеоиндустрии, он  просто для этого не приспособлен.
  4. И наконец, копирайт вернется на свое скромное место защиты авторов от жирных котов видеоиндустрии и не будет ключевой частью новой бизнес-модели видеоиндустрии.

В конце я также изложу свое мнение о том, какой же будет эта новая бизнес модель.

Подробно и со вкусом

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

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

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

Пока что я понятно обьясняю? Итак, что же я сказал:

  1. Сами по себе копирайт и интеллектуальные права не являются легитимным “долгоиграющим” аргументом.
  2. Я не сказал, что интересы видеоиндустрии должны игнорироваться,
  3. Но не должны игнорироваться и интересы общества в целом.
  4. Причем именно интересы общества в целом должны определять законность или незаконность интеллектуальных прав.

Кстати, более подробно об этом всем можно прочитать в выдащейся книге Лессига “Бесплатная культура” («Free Culture: The Nature and Future of Creativity» by Lawrence Lessig), очень ее рекомендую.

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

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

Впрочем, мы отвеклись. Давайте вернемся к копирайту как центру бизнес-модели современной видеоидустрии. Сейчас он кажется неотемлемой частью ее, без которой мы мгновенно окажемся без развлечений, музыки, фильмов... но только людям страдающим склерозом или не владеющим историей вопроса. Дело в том, что копирайт стал центром бизнес-модели видеоиндустрии совсем недавно. А что было до этого? Давайте разберемся!

К слову, а что нужно обществу, чтобы получать то, что дает видеоиндустрия?

  1. Некоторая возможность авторам зарабатывать на жизнь своими произведениями. Необязательно хорошая, если мы возьмем средний заработок автора, то эта цифра никого не убедит. Если же брать только «звезд», то для экономики это не аргумент, на одних звездах индустрия не выживет, да и процесс превращения в «звезду» вызывает много вопросов.
  2. Некоторая возможность актерам зарабатывать на жизнь игрой. С теми же ограничениями.
  3. Возможность фирмам, организующим производство, и продюсерам зарабатывать на производстве фильмов или музыки.
  4. Возможность зарабатывать на вспомогательных услугах по доставке  продукции (3) зрителям и слушателям, если эти вспомогательные услуги общество не может получить другими, более дешевыми способами.

Обратите внимание, на самом деле современная видеоиндустрия и телевидение – это прежде всего (4), то есть они вообще сбоку-припеку. Причем телевидение вобще появилось лишь в середине двадцатого века, а фильмы в конце девятнадцатого, что дает легитимную причину сказать что «а вас здесь не стояло.» А что же «стояло»?

Шекспир и бродячие театры

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

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

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

Фильмы и кинотеатры

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

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

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

Телевидение

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

Кстати, истошные писки о конце индустрии и вообще «конце времен» далеко не изобретение современной видеоиндустрии. Прокатные сети уже отыграли это все больше чем полвека назад. Но это – детали. А суть проста, кто пойдет в кинотеатр, если можно увидеть то же кино дома?

С точки зрения прокатых сетей – злостное нарушение их «прав» на прибыли и контроль над создателями фильмов. С точки зрения общества – появился более дешевый, эффективный и популярный способ доставки. В общем, «скрипач не нужен.»

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

А прогресс тем временем продолжался и сформировалась бизнес-модель телевидения.

Какая позитивная общественая функция выполнялась телевидением? Доставка фильмов зрителям, причем значительно дешевле в расчете «на нос», чем это делали прокатные сети, и значительно удобнее – домой!

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

Что было ключевым для функционирования бизнес-модели? Контроль над показом фильма – возможность вставки рекламы, которую увидят все, кто смотрит фильм.

Какова была функция копирайта? Убедиться, что посредник – телевидение – платит создателям фильмов, чтобы те могли создавать больше фильмов.

Опять же, обратите внимание, разборки идут исключительно между крупными фирмами-посредниками – телевидением – и создателями фильмов. Рядовые зрители тут ни при чем. Существование посредника оправдывается лишь тем, что дешевле и эффективнее общество, увы, еще не умеет. За свои затраты на сети трансляции, телебашни и прочее, посредник получает свою мзду, опять же, поскольку лучше общество пока не умеет.

Видеомагнитофоны

Это был инфаркт, инсульт и инсалт (оскорбление) видеоиндустрии и телевидения в одном лице. Когда фирма Sony выпустила на рынок первый видеомагнитофон, на нее подали в суд за кнопку «Запись». Аргументация была примерна та же, что и у современной индустрии. Ах! Ох! Разбойники, воры, уроды!!! Фильм можно записать и просмотреть хоть десять раз??? Да еще и вырезав рекламу??? Индустрию режут без ножа!!! Телевидение щас умрет и забрызгает вас своей черной кровью!

Хорошо бы. Но не умерло. Несмотря на все свои писки.

Что же оказалось на практике?

Во-первых, оказалось, что хотя люди и правда записывают и смотрят, это не особенно влияет на доходы телевидения. Реальная проблема возникает когда кто-то записывает, а потом пытается копировать и продавать. То есть проблема была не в отдельных зрителях, копирующих фильмы, а в «левых» бизнесах, пытающихся продавать незаконные копии. Чувствуете «тенденцию»? Копирайт по-прежнему сработал, и по-прежнему не касаясь рядовых зрителей. Это были разборки с подпольными бизенсами, торгующими нелегальными копиями.

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

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

А главное, суд против Sony послушал аргументы против и сказал, отгадайте что? Ну, да, «скрипач не нужен». Согласно решению суда кнопка «Запись» имела ряд социально важных фукций, и запрещать ее ради прибылей всяких тут там... ну, неправильно! Между прочим, и правда неправильно! В общем, видеоиндустрия, не желающая адаптироваться к современности, очередной раз получила по морде, причем вполне заслуженно. И это было хорошо.

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

Интернет

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

С точки зрения этих самых посредничающих бизнесов – вопиющее нарушение их прав. С точки зрения общества – уничтожение самих причин, ради которых они существуют. Что в таких случаях должно делать общество?

Да, да, капитан Морган. Спасибо. Попиратствовали вы на славу, потрепали испанцев. Никто у вас титул лорда отбирать не собирается. Но больше не надо, спасибо. У нас сейчас с испанцами мир.

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

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

Постойте, а не сказал ли я в первой статье, что телевидению – кранты? Сказал. И вот почему. Бизнес-модель телевидения слишком негибка. По большому счету она звучит примерно так: «мы – полубоги телевизионных сетей – решаем что будет хавать пипла». Теперь «пипла» получила возможность не «хавать», то что им спускают «полубоги». Так что, с этой бизнес-моделью точно будут изрядные проблемы. Уже сейчас кабельное телевидение судорожно перестраивается на on demand модели и подключение к Интернету. Исчезнет ли эфирное телевидение? Не знаю, но вообще-то эфирное телевидение – это очень дорогое удовольствие. Хотя, скажем, для России с ее пространствами может быть еще долгое время единственной возможностью. Хотя и для все уменьшающегося сельского населения, так что еще вопрос, насколько в этой аудиториии будут заинтересованы бизнесы. В общем, «скрипач не нужен.»

Новая бизнес-модель?

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

А какие же потребности зрителей общество еще не способно удовлетворить без вспомогательных бизнесов? Подумайте сами. Допустим на минуту, что копирайта нет и вы можете скачать любой фильм. Скачать и прожечь на диск. Во-первых, это требует времени и усилий. Оплатить диск и получить его по почте куда легче. Конечно, если цена правильная. Во-вторых, ну, прожгли вы одну сотню дисков, другую, третью... А современая видеоиндустрия плодовита как не знаю кто... Даже если вы покупаете все эти фильмы за свои кровные, бесконечно это продолжаться не может. Постепенно в вашем доме начинают жить диски, а не вы. Я знаю – в моем доме живут книги... Более того, нужного фильма просто не найти во всем этом хламе, который вы напокупали или напрожигали. Что это означает? А это означает, что пиратом быть неинтересно. Это означает, что есть легитимная бизнес-ниша для фирм, которые возьмут на себя управление вашими или доступными вам коллекциями и оперативной доставкой вам тех фильмов, которые вы хотите. Для этого такой бизнес должен предоставить следующие услуги:

  1. Освободить вас от хранения фильмов в любой форме
  2. Дать вам возможность найти нужный вам фильм быстро и легко
  3. А желательно также дать вам толковый совет, что бы посмотреть «новенького»?
  4. И наконец, обеспечил бы быструю эффективную доставку выбраных вами фильмов.

Собственно, для 1-3 уже существуют бизнесы, которые это делают и процветают. Слышали про Netflix? Это он и есть. А 4 у них пока что по почте, которая с их сетью складов и эффективностью американской почтовой службы доставляет фильмы на следующий день. Кстати, я ими активно пользуюсь и о-очень доволен. А покупаю и держу дома лишь те диски, которые хочу смотреть опять и опять, которых уже достаточно мало, чтобы и не путаться в них, и не жалеть покупать вполне законно, скажем, на Amazon.com – еще один пример бизнеса из той же категории, который в данном случае делает 2, 3 и 4.

А с развитием Интернет телевидения появятся успешные бизнесы, которые будут делать 4 мгновенно, через Интернет. Собственно, тот же Netflix уже это делает – изрядную долю его коллекции можно посмотреть сразу через Интернет, только качество еще не то. Ну, да, это поправимо, над этим работают. Собственно, я и сам над этим сейчас работаю. Вот такой вот расклад. И, заметьте, кому после этого нужно будет телевидение?

 

Работающая быстрая сортировка (quicksort) на C#...

Вчера супруга, которая решила посмотреть вокруг место работы получше и начала каждый вечер делать программистские задачки на C#, C++ и Python, полвечера убила на быструю сортировку (quicksort). Я тем временем опять удивился насколько много граничных условий вылезает в исходном алгоритме Хоара. Да-да, знаю, уже придумали улучшенную и починенную версию, но захотелось исправить сохранив дух решения, с двумя индексами сходящимися к центру. И вот что получилось. Вроде работает. Кто-нибудь видит баг?

static public void Quicksort(int[] ar)
{
     if (ar.Length > 1) Quicksort(ar, 0, ar.Length - 1);
}

static private void Quicksort(int[] ar, int left, int right)
{
     if (left == right) return;
     int i = left + 1;
     int j = right;
     int pivot = ar[left];

     // Loop invariant i <= j
     while (i < j)
     {
          if (ar[i] <= pivot) i++;
          else if (ar[j] > pivot) j--;
          else
          { // Swap ith and jth elements
               int m = ar[i]; ar[i] = ar[j]; ar[j] = m;
          }
     }
     // Now i == j

     if (ar[j] <= pivot /* it also means that i == right, because j was never moved */)
     {
          // Left most element is array's maximum
          int m = ar[left]; ar[left] = ar[right]; ar[right] = m;
          Quicksort(ar, left, right-1);
     }
     else
     {
          Quicksort(ar, left, i - 1);
          Quicksort(ar, i, right);
     }
}

Пока возился обратил внимание на забавный момент: как бы ни распределялись данные, количество нетривиальных вызовов Quicksort (когда i<j) всегда равно длине массива минус один. Сначала удивился, а потом дошло почему. Можете ответить? Ответ вот здесь: http://www.eldar.com/node/154 (да, да, я решил перестать публиковать белым по белому. Слишком много браузеров на которых это не работает).

И да, это, как обычно, кросс пост с персонального блога.

Sunday, April 13, 2008

И _ЭТО_ стоит 42 миллиарда долларов???

Попытался заказать билет на самолет дочке для поездки на восточное побережье... Ну, выбор невелик, бывшая майкрософтовская Expedia или Yahoo Travel. Yahoo Travel на первой же странице отказался показывать календарь для выбора дат:

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

---
Кросс пост с персонального блога...

Friday, April 11, 2008

С Днем Космонавтики!

Много-много лет назад советский космонавт Юрий Гагарин первым вышел в открый космос:

Image Hosted by ImageShack.us

Всех с Днем Космонавтики!

Image Hosted by ImageShack.us

Проблемы телевидения с точки зрения рядового пользователя

Кросс-пост с персонального блога...
--- 

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

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

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

  1. Неинтересно. Сотни каналов, а смотреть нечего. Мура всякая, на которую времени жалко.
  2. Времени нет. После рабочего дня в 10-12 часов не хочется тратить время ужина на всякую дрянь. См. пункт 1.
  3. Вредно. Новостные каналы накачивают нервы, все чтобы запугать обывателя. Вредно влияет на адреналин и состояние сердечно-сосудистой и нервной системы, что в условиях постоянной переработки и усталости совсем нежелательно.
  4. Рассчитано на идиотов. Так что не только скучно, но и противно.
  5. Рупор пропаганды. «За Обаму голосуют только молодые и неопытные» «Хиллари имеет опыт» «Мы не можем уйти из Ирака, потому что отвечаем за судьбу иракцев...» Чем присобачивать к телевизору дворники, можно просто не включать, или ставить что-то из своей коллекции.
  6. Интернет – интереснее. И сам решаешь, что смотреть, а что нет.
  7. Если хочется что-нибудь посмотреть, всегда под рукой сервисы вроде Netflix, где можно рентовать любые DVD, и смотреть то, что сам хочешь.

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

Tuesday, April 8, 2008

Иногда компьютеры вызывают необычно древние эмоции...

Этот DVD drive заставил меня потратить два дня, пытаясь установить разные операционные системы на вполне работающем компьютере и выдавая идиотские ошибки при чтении дисков...

Ах, да, конечно, кросс-пост с моего домашнего блога...

Sunday, April 6, 2008

Чтение HTTP в .Net и Silverlight

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

Итак, для HTTP в .Net и Silverlight есть два главных класса, которые делают примерно одно и то же: HttpWebRequest и WebClient. Пример ниже показывает как использовать их оба (есть мелкие косметические отличия).

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

using System;

namespace HttpCalls
{
     class Program
     {
          static void Main(string[] args)
          {
               HttpWebRequestBased r1 = new HttpWebRequestBased();
               r1.Get("
http://blogs.technet.com/eldar/default.aspx");
               Console.ReadLine();

               WebClientBased r2 = new WebClientBased();
               r2.Get("
http://blogs.technet.com/eldar/default.aspx");
              
Console.ReadLine();

               HttpRequestBasedSync r3 = new HttpRequestBasedSync();
               r3.Get("
http://blogs.technet.com/eldar/default.aspx");
              
Console
.ReadLine();

          }
     }
}

Теперь начнем с последнего - синхронного использования HttpWebRequest:

using System;
using System.Net;
using System.IO;

namespace HttpCalls
{
     class HttpRequestBasedSync
     {
          public void Get(string URL)
          {
               HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(URL);
               HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
               Stream stream = resp.GetResponseStream();
               StreamReader sr = new StreamReader(stream);
               string res = sr.ReadToEnd();
               sr.Close();
               Console.WriteLine("Success. Press any key to see the result:");
               Console.ReadLine();
               Console.WriteLine(res.Substring(0, 500));
          }
     }
}

Простенько и со вкусом... хм-м-м... ну, ладно, о вкусах не спорят! По крайней мере вполне компактно. Кстати, в Silverlight это дело не сработает, там синхронного GetResponseStream нету, чтобы не блокировать UI thread, на котором в Silverlight выполняется почти все интересное. Так что же делать? А делать то же самое асинхронно:

using System;
using System.Net;
using System.IO;

namespace HttpCalls
{
     class HttpWebRequestBased
     {
          public void Get(string URL)
          {
               req = (
HttpWebRequest)HttpWebRequest.Create(URL);
               req.BeginGetResponse(
new AsyncCallback(callback), null);
          }

          private void callback(IAsyncResult ar)
          {
               if (ar.IsCompleted)
               {
                    HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
                    Stream stream = resp.GetResponseStream();
                    StreamReader sr = new StreamReader(stream);
                    string res = sr.ReadToEnd();
                    sr.Close();
                    Console.WriteLine("Success. Result:");
                    //Console.ReadLine();
                    Console.WriteLine(res.Substring(0,500));
               }
          }

          private HttpWebRequest req;

     }
}

К слову, callback вызывается на самом деле ровно один раз, так что не раскатывайте губу на то, чтобы показывать всякие progress bars в процессе. В Silverlight callback вызывается на UI thread, но опять же, учтите, что это может измениться, так что менять UI элементы в этом вызове лучше  избегать. Так... на всякий случай.

Ну и наконец, то же самое асинхронно с WebClient. Этот класс предполагается самым "продвинутым" и "удобынм", так что не удивляйтесь, что он требует больше всего кода.

using System;
using System.Net;
using System.IO;

namespace HttpCalls
{
     class WebClientBased
     {
          public void Get(string URL)
          {
               WebClient client = new WebClient();
               client.DownloadProgressChanged +=
new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
               client.OpenReadCompleted +=
new OpenReadCompletedEventHandler(client_OpenReadCompleted);
               client.OpenReadAsync(
new Uri(URL));
          }

          void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
          {
               if (e.Cancelled || e.Error != null)
               {
                    Console.WriteLine("Error reading the file");
               }
               else
               {
                    Stream stream = e.Result;
                    StreamReader sr = new StreamReader(stream);
                    string res = sr.ReadToEnd();
                    sr.Close();
                    Console.WriteLine("Success. Result:");
                    //Console.ReadLine();
                    Console.WriteLine(res.Substring(0, 500));
               }
          }

          void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
          {
               Console.WriteLine("Progress is {0}, {1}% out of {2} bytes.", e.BytesReceived, e.ProgressPercentage, e.TotalBytesToReceive);
          }
     }
}

Вызывается callback в Silverlight тоже на UI thread, по крайней мере пока что. В Silverlight у вас может случиться вызов client_DownloadProgressChanged с промежуточным прогрессом, в обычном .Net я этого не видел. Впрочем, даже если вызов и случается, вы только узнаете, сколько прочитано, доступа к реальным данным (Stream) у вас все равно нет до тех пор, пока чтение Http ответа не закончится.

В Silverlight во всех трех случаях Stream это по сути wrapper вокруг куска памяти, выделенного в native коде, так что всякие Seek() работают как часы. Очень удобно.

Заметьте, что это все на основании опубликованной информации на данный момент. Когда выйдет бета 2 Silverlight v.2, я опубликую подправленный вариант с изменениями и новыми интересными деталями.

Saturday, April 5, 2008

Где работает бывший дев менеджер группы Windows Home Server...

Приятно иногда заехать в гости к друзьям. Например, к Сереже Солянику. Вот так, выглядит здание Гугла в Сэттле. Точнее, в пригороде Сиэттла на полпути от Редмонда, в Киркланде, где у них тут основное гнездо.

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

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

Friday, April 4, 2008

Цена последнего галлона нефти и сверхурочной работы программиста

Да-да, как всегда, кросс-пост с персонального блога... ----

Я уже писал о проблемах, которые сверхурочные создают для организаций и экономики. Забавно, но реакция была немного как бы сказать... demented… «нытье технаря». Ну, да, стал бы я писать пост, чтобы поныть вслух перед аудиторией, которая спит и видит, чтобы сказать что-нибудь язвительное вроде как процитировано выше.

Мое мнение, которое я пытаюсь выразить здесь «сверхурочные в индустрии ПО – зло», причем не только для программистов – кто бы сомневался в этом, это зло для компании, индустрии и экономики в целом.

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

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

Эластичность рынков

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

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

Цена последнего галлона

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

Как только последний галлон, который и так вытек из уже пробуреных скважин, продан, следующий галлон стоит значительно дороже. «Значительно» означает ОЧЕНЬ дороже. Ради него нужно проводить геологическую разведку, бурить новые скважины и т.д. Пока что звучит осмысленно, правда?

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

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

Цена часа программиста

А теперь попробуем приложить те же самые принципы к оплате программиста, как диктуется рынком. Для начала, а как же определяется цена труда? Ответ на данный вопрос был дан еще в девятнадцатом веке Адамом Смитом и Карлом Марксом. Цена труда в определенной индустрии/профессии определяется ценой воспроизовдства трудовых ресурсов. То есть, за человека определенной профессии нужно в среднем, подчеркиваю: в среднем, платить столько, чтобы он был способен содержать себя, иметь детей, вырастить их и дать им образование, чтобы когда он выйдет на пенсию или, что более вероятно в современном мире, умрет, они могли его заменить.

Кстати, у меня одно дите в колледже и второе планирует поступать на следующий год. Я вам скажу честно и уверенно: оплата труда программиста в Америке куда ниже, чем думал Адам Смит. Вот тут-то мы и приходим к «в среднем» (помните, я попросил это запомнить?)

«В среднем» означает, что хотя в среднем эта цена будем именно такой, но локально бизнесы могут «жульничать» и получать ту же самую работу подешевке. Самое популярное жульничество заключается в обворывывании будущих поколений. Нация может платить, например, программистам ниже уровня их воспроизводства, просто через некоторое время у нее не будет этих специалистов и ей придется занять «заднее сиденье» в автомобиле этой конкретной индустрии. Именно это произошло в очень многих областях науки и технологии СССР в результате перестройки. Нация была не готова платить за передовую науку, и теперь ее выбор – либо полностью зависеть от других стран, либо вкладывать огромные средства в ее восстановление и еще большие средства в правоохраниельные органы, чтобы предотвратить их разворовывание. Если в США будут платить программистам как платят мне (да-да, знаю, что при моей зарплате это звучит как выпендреж, но, увы... мое недовольство отдельно, экономические реалии – отдельно), то то же самое произойдет и с Америкой.

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

Кстати, возможно вас возмутило, что я не упомянул Россию наравне с Индией и Китаем. Увы, вопрос не ко мне, а к российским женщинам, которые по данным статистики (например, CIA fact book) не спешат рожать в том же темпе (а значит, так же дешево), что китайки и индийки. Да-да, я знаю, экономика – очень циничная наука. (Вздох...) В любом случае, будь Россия в этой картинке или нет, идея в том, чтобы вывести производство столь дорогого ресурса как профессионалы в более дешевые страны. Сами судите, хорошо это для экономики или нет. IMHO, outsouring production of smart educated people is probably the dumbest thing any nation can do... Извиняюсь за английский, не то чтобы у меня не хватило слов на русском, чтобы выразить эту мысль, но опубликовать эти слова здесь затруднительно по цензурным соображениям.

Цена последнего часа программиста

Пока программист счастливо (или не очень – кого это заботит?) сидит в Китае, Индии или России, сверхурочные работают. Почему? Потому что на свою, по их мерках великолепную зарплату, он оплачивает не только свое существование, но и нескольких других людей – жену, бабушек, дедушек, в некоторых случах братьев, сестер, других родственников, которые охотно возьмут на себя заботы о всяких мелких, но времяемких проблемах по дому и хозяйству – хождение по магазинам, ремонт квартиры, машины, стояние в очередях, и т.п.

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

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

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

А потом подходит релиз, и наш китаец или индиец сидит в выходные. Отгадайте, как это влияет на зарпату программиста, которые теперь должен оплачивать приведение двора и лужайки в порядок, услуги садовника, дизайнера двора, чистильщиков ковров, уборщиков, ... Это звучит все «благородно», а по сути это все результат того самого overtime – сверхурочных.

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

По сути мы имеем дело с тем же самым явлением, что и цена последнего галлона нефти. Дайте программистам дышать, и они сами будут стричь свои лужайки и прибирать свои задние дворы. Жмите их дальше, и это будут делать команды неквалифицированных, но многочисленных работников. И вы за это будете платить. Цена восьмого часа программиста непропорционально меньше чем цена девятого или десятого часа. И если вы неспособны контролировать свое общество, чтобы девятый, десятый, одиннадцатый или двенадцатый час не были использованы, то вы будете платить цену двенадцатого часа за все двенадцать часов – от первого до двенадцатого каждый день.

А теперь – я знаю, это буйная фантазия – но попытайтесь представить себя на месте CEO компании, где работает этот потогонный менеджер. Вам нравится идея платить значительно больше за час, чем это необходимо? Это то, что вы делаете. Именно потому, что многие люди считают сверхурочные в нашей индустрии нормой.

Enjoy! Ave!