From Novosibirsk, Russia? Our tiny company is looking for current or future rock-star developers.

August 28, 2007

Discovery of the True Ultimate Answer

Да, The Ultimate Answer to Life, the Universe, and Everything — действительно 42. Зафоду не хватило лишь немного знаний о компьютерах, чтобы понять, что 42 — на самом деле звёздочка.

Доказать это проще простого: выводим в файл число 42 в качестве stub'а реальных данных, а затем смотрим FAR'ом.

August 19, 2007

iLife'08

Черт, Джобс! Всего пару дней назад я в очередной раз подумал, что даже обновленный сервис .Mac не для меня. За $100 в год получаешь всего 10 Гб места, с которым мало чего можно сделать.

А сегодня я посмотрел презентацию iLife'08, где Джобс продемонстрировал новые Web Albums, и соображаю, смогу я себе позволить .Mac в этом месяце или нужно ждать следующего. Это и назвается Steve Jobs' reality distortion field.

При упоминании о Web Albums прежде всего я подумал об установке веб-галереи на свой хостинг. (В конце концов, у меня там есть те же самые 10 Гб.) Но как только увидел демонстрацию, понял, что (а) такой галереи никогда не появится и (б) написать такое будет стоить дороже тех самых 100 баксов. Кроме того, одна из главных прелестей запатентована.

Когда дело дошло до нового iMovie, мысли перешли на «продам душу за iLife». Год назад на монтаж пятиминутного ролика о компании xored у меня ушла вся ночь. Еще до этого я искал (и не нашел) программу видеомонтажа, которой было бы удобно пользоваться. И теперь Джобс говорит ровно об этих недостатках, и они исправлены. Новый интерфейс iMovie — как раз то, что я хотел, чтобы наконец превратить кипу лежащих в столе видеокассет в домашнее видео.

Напротив, пользователем iWeb я так и не стану. Пока они не сотворят нечто викиобразное, увы. (И ведь, если задуматься, возможности консумерской вики добавить в iWeb можно было бы в два счета!) Делаем ставки: начиная с какой версии iLife мне даже не придет в голову создавать сайт не в iWeb?

Целый день я потратил на настройку своего хостинга. Мне всего-то нужен хотинг нескольких доменов на приличной Wiki, Mercurial- и Subversion-репозитории да пара инсталляций Trac, еще и выполнять несколько своих Rails-приложений. Должно настраиваться в пару десятков кликов. Кто возьмется написать iServerSetup?

August 14, 2007

LiveJournal syndication

Как известно, этот блог можно читать в ЖЖ, подписавшись на andreyvit_ — однако вовсе не нужно так делать. Неужели вы в самом деле до сих пор не используете RSS-читалку? А как вы тогда подписываетесь на башорг остаетесь в курсе последних достижений в области вашей специализации?*

Недавно выяснилось, что ЖЖ позволяет писать комменты к syndicated post'ам. Вероятно, оставляющие их не сознают, что (1) я эти комменты не вижу и (2) они уходят вникуда спустя несколько постов (что, впрочем, не такая уж плохая судьба для коммента). И это не говоря обо всех других глюках LJ syndication.

Господа, почему бы, например, не сделать наоборот — читать ЖЖ из RSS? Вы получите неограниченную в длину френд-ленту, которую можно сортировать и раскладывать по полочкам, как вашей душе угодно. Вы заслуживаете большего, чем poor man's RSS в LJ. Заодно вы скажете своё «нет» подзамочным записям, что, возможно, поспособствует снижению их числа. (Впрочем, за отсутствие подзамочного RSS стоит сказать решительное «нет» всему LJ. Это просто неадекватно. Или оно уже есть, а я упустил? За деньги, может?)

* Disclaimer: я не читаю башорг.

Apple pricing policy

Покупая монитор, выяснил клевую вещь про ценовую политику Apple. Цитирую:

«С ценами, рекомендуемыми на территории РФ на продукцию Apple, Вы сможете ознакомится тут: http://www.apple.ru/price/.

Авторизованные партнеры, не соблюдающие данные рекомендации, авторизации лишаются, и, как следствие, и доступа к каналу легальной техники и сервисным функциям. Колебания от рекомендованных цен составляют не более 100 рублей вниз и, как правило, связаны с особенностями используемых информационных баз компаний.»

Что в этом гениального? Имея линейку продукции из (например) шести ноутбуков, Apple спасает пользователя от необходимости выбирать. Фиксируя на них цену, Apple освобождает время пользователя, которое он бы потратил на поиски места, где подешевле. Лично мне это позволяет не беспокоиться об упущенных возможностях, направляясь в ближайший мне магазин (Техносити) за очередным продуктом любимой компании.

Конечно, если вы любители побегать и повыбирать, вам это всё не понравится. Но так сложилось, что я не любитель и выбор всегда предпочитал делать по принципу «мне достаточно понравилось, куплю прямо сейчас».

(С этого поста я начинаю новую традицию «один пост — одна тема». Игнорируйте посты, обозначенные не интересующими вас тегами.)

August 12, 2007

Buying TextMate

Я купил свою первую софтину* — TextMate. Наконец-то есть возможность участвовать в цивилизованном рынке софта. Несколько месяцев я его использовал нелегально, переводя дату. Слава авторам, которые не стали запрещать подобный трюк; как только я понял, что он работает, то пообещал себе купить TextMate при первой же возможности.

Для рекламы: TextMate — потрясающий текстовый редактор и средство осмотра директорий с тексовыми файлами (будь то сорцы Mozilla, gem'ы Ruby, скрипты bash'а или куда там еще вас занесет). Я не представляю свою жизнь на маке без TM. Как говорится, стоит каждого потраченного евро (а именно, €40)**.

Нашел в нашей локальной сети FTP с варезом для мака. Слегка пошарился, но не смог избавиться от ощущения, что это дико. Закрыл. Если вы пользователь современного мака и обладаете хорошим постоянным доходом, у вас нет морального права использовать пиратский софт.

Вышли iLife'08 и iWork'08 — ох. :)

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

** Дело идет к выходу TextMate 2 где-то в конце года, и его нужно будет приобретать отдельно, так что в вашей ситуации может иметь смысл подождать.

August 09, 2007

A single book I wish I had earlier

Не так давно я купил книгу, которую хотел бы прочесть еще классе в девятом: С. А. Орлов «Технологии разработки программного обеспечения» (ISBN 5-94723-820-9).

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

— исчерпывающее изложение методов и процессов, включающее и методику Джексона (ассоциирующуюся у меня со словом ancient), и XP, при этом отдельная глава посвящена UP;

— очень качественное объяснение принципов модульного проектирования (начиная с базовых понятий вроде cohesion/coupling) без привязки к ООП и с простыми примерами;

— описание количественных метрик (вкупе с кратким изложением уровней CMM — как бы вы к ним ни относились);

— введение в ООП и в проектирование баз данных (качественно и кратко);

— use case оставлено без перевода;

— примеры на Ada 95 :).

Недостатки:

— компонентный подход раскрыт неудачно (несмотря на почти-главу, ему посвященную);

— перевод английских терминов не соответствует общепринятому — я полагаю, в 2004 году, когда подготавливалось 3-е издание, refactoring уже следовало перевести как «рефакторинг» (хотя я и испытываю сладкую ностальгию по overload, переводимому как «совмещение» издательством «Мир» в стародавние времена);

— акценты в (также исчерпывающем) описании тестирования не соответствуют моим ожиданиям, что, возможно, объясняется давностью написания книги.

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

August 06, 2007

Почему важно быть хорошим

Нечасто можно построить простую математическую игру, позволяющую анализировать глубокие философские вопросы. Тем не менее, такое бывает: Prisoner's dilemma (англ. Википедия, via NeXT).

Суть математического эксперимента: полиция арестовывает двух подозреваемых. Доказательств для суда недостаточно, поэтому их разделяют (так, чтобы они не могли общаться) и каждому предлагают дать показания против другого. Условия следующие: если оба дадут показания, то каждого осудят на 5 лет. Если даст показания только один, то его сразу отпустят, а второго осудят на 10 лет. Если же не даст показаний ни один, то оба отсидят по полгода и выйдут.

В отличие от других игр, здесь оптимальный ход игрока не зависит от возможного хода другого и состоит в даче показаний («предать»). Действительно, рассмотрим первого игрока: если второй предаст, то и первому нужно предать (чтобы снизить срок с 10 до 5 лет); если второй не предаст, то первому опять же лучше предать (чтобы выйти сразу, а не через полгода).

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

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

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

1. Хорошая. Самая важное условие заключается в том, что стратегия не должна предавать соперника, пока он не предаст первым.

2. Небезответная. Успешная стратегия должна мстить.

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

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

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

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

Если игра продолжается некоторое известное число раундов N, то оптимальной стратегией снова становится «всегда предавать». Для поддержания «добра» в «игровом мире» необходимо, чтобы продолжительность игры была заранее неизвестной (случайной для игроков).

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

(Подробнее см. в оригинальной статье на Wikipedia, ссылка на которую приведена в начале.)

August 04, 2007

Jing-n-Dash, iPhoney and printing Web pages

Самая большая находка месяца: www.jingproject.com — программа для захвата скриншотов и видео с экрана, сжатия в SWF и расшаривания на www.screencast.com (но можно сохранить и в файл), для Mac OS X и Windows. Пока бесплатная. Ни единой настройки (впрочем, вру — есть галочка «запускаться автоматически» и выбор между облачком в углу и иконкой в статусной строке у Mac'а). Запись скринкастов, созданная на небесах.

Далее, есть Dash — нечто вроде Windows-аналога маковского QuickSilver. Платный, в отличие от макового, но, пока нет релиза, платный не сильно ($20).

iPhoney — эмулятор веб-браузера в iPhone (для Mac OS X). Говорят, достаточно точный.

Совет для владельцев Mac: как напечатать часть Web-страницы. Легко: скопируйте нужный фрагмент страницы в буфер обмена, вставьте в TextEdit и распечатайте. Всё важное для печати оформление, включая картинки, будет сохранено.

Сегодня я решил, что надо бы попробовать применить Apple Loops, занимающие на диске моего ноутбука около 2 Гб. Запустил GarageBand и записал простенькую песенку. Эх, до Smoke on the Water ей далеко. :) Тем не менее, интересный опыт, рекомендую попробовать (а то иначе получится, что место у вас пропадает даром).

Недавно вышел Microsoft Remote Desktop Client for Mac 2.0 beta. Universal Binary уже стоит того; на мой взгляд он стал лучше CoRD — последняя часто рисует с ошибками, что совсем уж unacceptable, и не перенаправляет звук, что для меня тоже близко к недопустимому.

Наконец, я зафотал свое рабочее место. Всё на фотографии, кроме стула и бардака под столом, могу смело рекомендовать. (Ноутбук удобно пристроился на клавиатурной полке — для клавиатуры она слишком низкая при таком экране.)

August 02, 2007

WWDC 2007: Safari killing Firefox?

Если вы не видели Keynote Стива Джобса на WWDC 2007 (видеозапись которого можно скачать, например, из торрентов), то, вероятно, пропустили великие планы Apple в отношении браузеров. Слева нарисовано (скриншот из Keynote'а), как выглядит соотношение браузеров сейчас, а справа — как попробует сделать Apple.

Если теперь задуматься, то легко понять, что основная масса пользователей Firefox — обычные юзеры. Они выбрали его вовсе не из-за принципиальных соображений оупенсорса, а просто потому, что Internet Explorer (был) совсем плох.

Легко дальше понять, насколько лучше Apple умеет делать софт для обычных пользователей, чем какая бы то ни было команда open-source'ных разработчиков (которым помогает пачка индусов в коммерческих компаниях).

«Как же мы доберемся до этих пользователей, когда у Firefox 500 000 скачиваний в день?» — спрашивал Джобс. «Но у iTunes 1 000 000 скачиваний в день, и в сумме больше 500 миллионов пользователей iTunes под Windows. Да, мы знаем, как до них добраться, и сделаем именно это!»

В Safari есть достаточно возможностей, чтобы заставить среднего пользователя писать кипятком. У них свой красивый рендерер шрифтов, портированный интерфейс Aqua, шустрый движок, море юзабилити и прикольные эффекты вроде мегапонтового поиска. И это не open-source plugin-ridden crap, как Firefox.

Не знаю, как вы, а я ожидаю смерть Firefox (конечно, не полную смерть, а уменьшение доли рынка на порядок).

Хотя лично я хочу увидеть такую вот страничку про Internet Explorer для Windows: