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

December 31, 2006

On the news

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

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

Даже не будем рассуждать о том, что казнь за убийство 148 человек, после которой в вызванных ею террактах погибло уже 80, — смешно. Весь судебный процесс был смешон. Собственно, Хуссейн добился своего — он держался лучше своих судей. «Враги вашей страны стремятся посеять между вами ненависть. Не дайте им разделить вас. Да здравствует джихад и священная война против оккупантов».

Радует только правильное отношение ко всему этому МИД России.

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

December 30, 2006

Nokia mobiles and the oldnewthing

У меня временно изменился номер, теперь это +7 906 193 2959. Старый телефон вместе с SIM-картой у меня стащили, взамен был куплен Nokia 5300. Я могу сказать, что Nokia сделала большой шаг вперёд в интерфейсах; он понравился мне больше, чем Sony Ericsson моей супруги (а Sony Ericsson сейчас являют собой стандарт качественных интерфейсов).

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

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

Проведя пеар блогов Реймонда Чена (oldnewthing) и Скота Адамса (The Dilbert Blog), я обнаружил в списке декабрьских ссылок первого, что он с удовольствием читает второго. Сколько там знакомых в среднем связывают любых двух людей на планете? Мне кажется, если считать знакомства в блогосфере, это число уменьшится раза в полтора.

Прочитал про Google Santa Tracker (вживую смотреть было лень). Мне кажется, детей, использующих Google Earth для наблюдением за Санта-Клаусом, нам как раз не хватало для полной техногенности общества. В положительном, наверное, смысле, то есть техногенность — это здорово. Скоро ли появится Google Fairy Taler?

С Новым Годом вас, дорогие друзья!

December 23, 2006

Separation of content and presentation

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

Если вы бы сейчас увидели, что я качаю в P2P, вы бы никогда со мной больше не заговорили. Например, великое творчество Димы Билана. Всё потому, что среди наших тесных рядов затясалось несколько любителей попсы, а музыку к конторскому новогоднему празднику готовлю я.

Обсуждая с одним знакомым музыку, мы выяснили причину holy wars. Действительно, невозможно представить себе разработчиков нашей компанией за горячим спором «C++ против Java», ибо тему все понимают. В мировой же музыке разбираются далеко не все. (Впрочем, иногда holy wars вызываются и другими факторами, например, различием в опыте. Но в любом случае, несомненно, что единственно правильную точку зрения будет иметь мифический человек с бесконечным опытом.)

Про вёрстку с помощью CSS и отделение содержимого от представления. Недавно придумали с товарищем пример для подражания:

<div id="border_2px_solid_black">
<div id="text_align_center" class="f6f6f6">
Hello, world!
</div>
</div>

Приятно взглянуть на свой блог и подумать, что он тебе нравится.

December 16, 2006

Notable events and December's blog of the month

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

Мы стали или скоро станем авторами самых серьёзных средств разработки для Tcl (стали), Python (скоро) и Ruby (на горизонте). Открытый проект Dynamic Languages Toolkit нашей компании принят в состав eclipse.org. Сейчас ознакомиться с ним можно на www.eclipsedltk.org, но скоро мы переезжаем.

Вы можете добавить в DLTK свой любимый язык; мы окажем вам необходимую помощь и поддержку. Где любители Lisp и Haskel?

Доклад про Dynamic Languages Toolkit принят на EclipseCon 2007, а значит, нас (в том числе и меня как докладчика) ждут в марте 2007 года в Калифорнии. Надеюсь, мы там окажемся.

Есть вещи, на которые достаточно взглянуть, чтобы понять, что вы созданы друг для друга. Так было с Macintosh. Теперь я хочу Segway. Сейчас я не готов расстаться с (по непроверенной информации) $4000, так что — в планах на ближайшие годы.

Я нашел мечту графомана. Её зовут WriteRoom, приложение для написания текста. Отличия от текстовых редакторов: Во-первых, нет концепции файлов; все созданные заметки попадают в меню. Во-вторых, не нужно вручную сохранять текст. В-третьих, название заметки — её первая строка; переименование еще никогда не было таким простым. В-четвертых, редактор можно развернуть на полный экран, чтобы ничто не отвлекало от написания.

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

Если вы сидите под Windows, на сайте дают ссылку на некий клон — Dark Room.

Наконец, воспользуюсь случаем, дабы выбрать блог этого месяца. Это совместный проект Kathy Sierra и Dan Russel под названием Creating Passionate Users. Обязательное чтение для всех, занимающихся разработкой программ и/или проектированием интерфейсов пользователя. Каждая из редко появляющихся статей — шедевр.

Недавно я узнал, что в создании известного стодолларового ноутбука принимал участие Alan Kay. Человек, работавший в Xerox PARC и Apple, один из создателей объектно-ориентированного программирования. Его видеолекцию по пользовательским интерфейсам (1987 года) я с большим удовольствием посмотрел и всем рекомендую (могу записать на CD).

December 10, 2006

New Year is coming

Mozilla красиво компилируется под Scorpions, почти попадая в ритм. Приятно засесть в пустом офисе на выходных и поразбираться с давно накопившимися делами. Правда, собрать нужный мне билд так и не получилось. Наивный Калугин обещал сделать это на спор; он еще не знает, что требуется отлаживать make-файлы в системе сборки.

Есть здесь еще желающие на спор собрать XULRunner из CVS HEAD под Win32? Tinderbox говорит, что собирается… oops, то есть Tinderbox говорил, что под Win32 оно собирается (тогда как под Linux и MacOS сборка горела синем пламенем). Теперь Win32 оттуда вообще убрали. И под Linux сборка всё еще сломана. Господа, XULRunner пока что есть только под Mac! Жаль, что как раз под ним он не доделан и нам не годится.

Заказал кучу книг по Web-дизайну. Быть может, я всё-таки разберусь с CSS.

Подрос мини-учебник по Си++, который я начинал когда-то писать к экзамену по объектно-ориентированному программированию и выложил на ru.wikibooks.org. Не моими стараниями, но мой стиль во многом сохранён. Приятно!

В канун Нового Года xored software превратилась в заговорщеческую контору. Все что-то втайне друг от друга планируют, собирают компромат и шифруются.

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

Я живо представил себе, как одним из лишних проводов подключен спрятанный в углу Jumper (Parkan!..), а второй где-то внутри общего месива уходит в другое измерение. Вот почему у нас такие странные админы. Задачей первого, видимо, было перебросить энергию в то самое другое измерение, а второй вообще спустился на Землю исключительно в поисках Jumper’а.

December 04, 2006

CVS vs. SVN

(Про историю и возможности CVS и Subversion написано в Wikipedia.)

Относительно CVS/SVN меня спрашивали за последнее время уже раза три, поэтому ниже изложено мое мнение по поводу source control в общем.

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

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

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

В сторону Subversion смотреть можно. Однако она ещё крайне молода. Стоит копнуть чуть глубже, например, в сторону нетривиальной настройки прав доступа или перемещений между репозиториями, как всё оборачивается печально. Кроме того, интеграция Subversion с, например, Eclipse чуть хуже, чем интеграция CVS.

У Subversion по сравнению с CVS есть три преимущества.

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

Второе — поддержка переименования файлов. Однако, если вы гонитесь за полным порядком в репозитории, вам Subversion будет мало, а если нет, то удалить старый и добавить новый файл достаточно.

Третье — хранение метаданных. Однако метаданные нужны редко. Встроенные навороты вроде svn:external работают плохо. Другое дело, если у вас есть сторонние утилиты, интегрирующиеся с SVN при помощи свойств.

(Есть также мнение, что Subversion на больших проектах медленно работает, но я не поверю, пока не увижу сам.)

Сравнение возможностей разных систем управления версиями можно найти на Wikipedia.