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

July 26, 2007

HTML completion

Задача: вычислить HTML-теги, которые могут быть вложены в данный.

Решение.

1. Описываем все теги в виде набора Java-классов, по одному классу на тег.

2. Учим эти Java-классы генерировать куски DTD, описыающие соответствующие теги.

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

3. Для всех возможных HTML-тегов повторять шаги 4-6:

4. Сгенерировать куски DTD для всех родительских тегов и кусок, описывающий вложенность текущего тега в родительские. (Какая именно строчка для этого генерится, я не разбирался. Судя по всему, дублирующееся описание родительского тега.)

5. Скормить полученный набор кусков (в виде массива строк) кастомному DTD-валидатору, специально предназначенному для данной задачи.

6. Если валидатор не выдал ошибку, то добавить текущий тег в список возможных детей.

Да здравствует Eclipse Web Tools Project! Индусы — вот implementation detail компании IBM.

July 04, 2007

Developer's Fun

Есть среди программистов понятие, которое называется «фан». Людям, не живущим в этой среде с детства, может быть сложно понять соответствующее культурное явление.

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

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

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

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

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

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

Вывод: программист — не слесарь, с ним нужно работать по-другому.

А еще моя супруга готовит офигенную пиццу. Не похудеть мне сегодня. :)

June 22, 2007

Or face the consequences

Я на днях (позавчера) купил велосипед. Черт, как болят ноги!

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

Сегодняшнее утро. Просыпаюсь от жуткой боли в ногах (в 6, после того, как лег в 2). Пытаюсь полежать. Терпение кончается, бегу, пью обезболивающее. Пытаюсь еще полежать, но это почти невозможно (хуже, по-моему, было только однажды после операции). Начинаю ходить из комнаты в комнату, чтобы размять мышцы; от этого становится немного лучше. В конце концов мне уже достаточно хорошо, чтобы умыться. За это время начинает действовать «Кетанов» и ногам наступает почти полный комфорт.

Поехать, что ли, прокатиться часок?

P.S. «Tell the truth or face the consequences» — надпись, которой щедро разукрашено посольство США изнутри. (Главным последствием они обещают запрет на въезд в Штаты.)

June 12, 2007

Dvorak: the saga begins

This post will be in English because I have just switched to DVORAK keyboard layout and I need to practice a lot.

One thing I can already tell about DVORAK is that it is really much, much, much more comfortable than QWERTY. Even after half an hour of typing I can easily use all the keys without looking them up in a reference and making almost no mistakes. I do feel that using dvorak will speed up my typing and will make my hands move a lot less.

Big thanks go to Stepan Stolyarov for unwillingly leading me to this idea, and to Mikhail Gusarov for making me think about it in the first place. Also to Mikhail Kalugin and again to Stepan Stolyarov for thinking I’m terribly out of my mind, which is so supporting and exciting.

Besides all that, I’m again typing with a speed of about one character per second, just like so many years ago.

June 11, 2007

Story Continued

Я закончил университет — позади человекомесяцы работы, отнимавшей драгоценные часы от полезных занятий. (С другой стороны, полученной бумажкой есть шанс воспользоваться, так как для получения рабочей визы, например, в Соединенные Штаты и, может, в другие страны звание bachelor, кажется, необходимо.)

По случаю окончания университета и по другим сопутствующим причинам я решил, что настало время создавать свою компанию. Со мной в это дело ввязаться согласились еще пара человек. Мы активно ищем умных людей, желающих участвовать в self-funding startup’е. Платформа реализации — Eclipse, язык, соответственно, — Java.

Дабы финансировать это мероприятие, я сменил работу на удаленную. Занимаюсь рефакторингом и дописыванием enterprise-приложения под Eclipse. Лучшего желать сложно.

Работа моя требует Windows, и я наконец-то решил попробовать одно из средств виртуализации для маков. Если у вас всё еще остаются сомнения в возможности перехода, взгляните на скриншот Parallels Desktop, работающего в coherence mode.

Краткий отчет с EclipseCon, который я так и не собрался опубликовать по приезду, уже в основном устарел. Скажу только, что стоит обратить внимание на проекты Dynamic Languages Toolkit (платформа для IDE для динамических языков), Eclipse Packaging Project (инсталляторы), Maya (Enterprise-развертывание), Mylar (focused workspace, tasks management, bug tracker integration). Кроме того, активно развивается скриптинг Eclipse, так что опробуйте Eclipse Monkey.

Надеюсь, до скорого!

March 08, 2007

EclipseCon 2007 part 2

Andrey Platov to xored-staff: «Yes! We did it! Детали позже :) http://www.eclipse.org/dltk». Это примерно резюмирует наше успешное выступление на EclipseCon. Видеоролики (20-30 Мб каждый) можно скачать на упомянутом сайте. Коротко об остальном:

— Чтобы перейти дорогу, нужно подойти к светофору и нажать на кнопку. Это достаточный интерфейс, чтобы можно было сделать интеллектуальное слежение за трафиком. Но, похоже, дальше stub-реализации они не пошли: светофоры работают как и у нас, но если кнопку не нажимали, сигнал «можно идти» не загорается.

— Мясо вкусно есть с фруктами. Стейк с кусочком апельсина или дыни намного вкуснее.

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

— Вставать в 6–7 утра намного приятнее, если просыпаешься сам. Что именно заставляет вставать так рано, я не знаю, но по крайней мере я не буду удивляться раннему появлению американцев в онлайне.

— 590 мл Кока-Колы стоят $1.25, то есть чуть больше 30 руб.

В воскресенье мы поужинали блюдом Steak & Eggs. После этого голодным я себя почувствовал только утром следующего дня. В понедельник пришлось объесться благодаря обеду и ужину за счет наших партнеров (Instantiations и Cisco) в дополнение к немаленькому завтраку. Из прекрасного: клубника на палочке; воздушный рис-или-кукуруза на палочке, которую нужно вручную покрыть фонтанирующим шоколадом; емкости с малиновым вареньем на сегодняшнем завтраке (см. фотку), которое положено намазывать на хлеб, а также возможность упиться свежим апельсиновым соком.

Ощущения на улице очень напоминают дачу (причем ту, которая далеко от города). Свежий воздух, пахнет землей, зеленью и сыростью (как после дождя). Вероятно, не даром улица называется Great America Parkway.

March 04, 2007

EclipseCon 2007 part 1

Я всегда мечтал, чтобы в сутках было 36 часов. Прошедшее 3-е марта для трех сотрудников xored software, включая меня, длилось даже целых 38. Я сижу в отеле Hilton города Santa Clara, California; позади около 17 часов в трех самолетах и еще часов 7 ожидания в аэропортах. Через день начинается EclipseCon 2007.

Началось путешествие с рейса Екатеринбург—Москва на Ту-154 Аэрофлотом. В самолете тесно, но в целом неплохо. Сначала мы решили, что самолет решил до Москвы просто доехать, но потом он все-таки развернулся и взлетел. Впрочем, все они так делают, оказывается (да, халтурил я когда-то при изучении Flight Simulator’а).

Дальнейшая дорога (Москва—Атланта, Атланта—Сан Хосе) была авиакомпанией Delta. Её нерусское происхождение уже много говорит о качестве сервиса. 12 часов на Боинге-767 были самыми приятными из перелетов. Выяснилось, что сок бывает в жестяных баночках и вкуснее, чем «Я». :) В самолете было на удивление много маленьких (возрастом и особенно ростом) детей; причина выяснилась в конце, когда командир экипажа поблагодарил родителей, забравших детей из русских детдомов.

Аэропорт в Атланте огромен. Между гейтами (как их по-русски) ходит метро. Поллитровый стакан чая обошелся где-то в два бакса (имеем: стакан, поллитра воды, обыкновенный зелено-чайный пакетик).

Atlanta—San Jose: сидеть у окна в Боинге-757 очень холодно даже в куртке. Зато это был ночной перелет с самым красивым видом из окна. В любом случае, в самолетах, даже тесных или холодных, хорошо спится: одновременно убаюкивает гулом и укачивает, мм, покачиванием. Особенно почему-то легко засыпаешь во время посадки (но быстро просыпаешься, чтобы не пропустить виды). Отличия от поезда минимальны и иногда подсознательно не хватает постукивания колес.

По пути из San Jose в Santa Clara (10-15 минут на такси) проехали мимо офисов McAffee и AMD; Silicon Valley, однако.

Постепенно обновляющаяся коллекция фотографий доступна по адресу http://picasaweb.google.com/andreyvit/EclipseCon2007.