пятница, сентября 25, 2009

Великий Русский Файервол

– Вылупился, – спокойно сказал Роман, глядя в потолок.
– Кто? – Мне было не по себе: крик был женский.
– Выбегаллов упырь, – сказал Роман. – Точнее, кадавр.
– А почему женщина кричала?
– А вот увидишь, – сказал Роман.


"Понедельник начинается в субботу" А. и Б. Стругацкие.



Читаю сегодня с CNews "ФСБ и Минсвязи защитят чиновников от Google"

На заседании правительственной комиссии по федеральной связи и ИТ Александр Гридин, генеральный директор ФГУП «НТЦ Атлас», предложил создать программно-аппаратный комплекс для обеспечения сетевой анонимности госслужащих. По его мнению, необходимо разработать отечественный прокси-сервер, блокирующий возможность анализа их сетевой активности зарубежными службами.
Кроме того, сервер, по задумке Гридина, будет генерировать необходимое количество маскирующих запросов к интернет-ресурсам, чтобы дополнительно затруднить анализ.
«Нужно создать платформу на базе как Windows, так и Linux, с сертифицированными криптосредствами, браузер под обе эти ОС и доработать типовые серверные приложения - поддержал идею «Атласа» Анатолий Лакаев, директор НИИ «Интеграл» - Мы готовы взяться за эту работу и совместно с ФСБ и «Атласом» выполнить ее в течение года».


Если кто не в курсе, ФГУП «НТЦ Атлас», это контора которая создала скандально известную систему контроля за оборотом алкоголя ЕГАИС, из-за внедрения которой, как вы помните, летом 2006 года с прилавков исчезла вся водка и вино.
Не приходится сомневаться в том, что эти ребята способны родить файервол, который наглухо перекроет чиновникам доступ в интеренет, просто из-за того, что будет как обычно неработоспособен.
Вопрос в другом. А нафига собственно чиновников защищать от Гугла и Яндекса с Бегуном? Чтоб никто не узнал, что основной трафик в МВД идет с порносайтов? Для чего еще надо скрывать сетевую активность чиновников?
Иное дело Агенты Национальной Безопасности. Эти, да, должны быть инкогнито по определению. Однако вряд ли они захотят пользоваться продуктом «НТЦ Атлас».

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

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


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


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

пятница, августа 28, 2009

WTF

Скажите, что должен чувствовать программист, когда вот для примерно такого кода:


float speed = Float.NaN;
if (speed == Float.NaN)
Dialog.alert("Not a number");
else
Dialog.alert("Shit happens...");



он видит на экране "Shit happens..."?
Ага, такое дерьмо приключилось вчера со мной, когда я ковырялся в реализации J2ME от одного вполне уважаемого вендора. Убив на проблему около часа, я совсем было отчаялся, решил что я уже слишком стар для таких приколов, и пора мне завязывать с программированием. Однако, неожиданно, замена (speed == Float.NaN) на (Float.isNaN(speed)) решила проблему. Дерьмо исчезло.
Но запах остался...
Продолжаю программировать.

четверг, июля 23, 2009

Google меня уважает.

Я вчера тут пожаловался, на то что Google без предупреждения сменил дизайн моей домашней страницы в iGoogle, и даже с горя горзился уйти с этого сервиса.
Ну народ в коментах поглумился, дескать "напугал козла капустой"... Тем не менее, сегодня утром моя домашняя страница вернулась к прежнему виду. Возможно причиной тому было наличие реальных багов в новом дизайне iGoogle, но мне все же хочется верить что это и мой глас вопиющего был услышан. Если это так, то Google - человечище. Как разработчик знаю, как не легко порой любить пользователей своих прдуктов, в то время когда хочется просто их прибить всех. Ты им новые фичи, а они на тебя с кулаками :)

Ну, в общем я доволен. Google, слышишь? Я тобой доволен!

среда, июля 22, 2009

Firefox занят, Firefox-у некогда.

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

"Firefox загружает обновление. Подождите несколько минут."


Вот так. Firefox важным делом занят, а тут я со своей дурацкой сборкой....

Google - ты меня уважаешь?

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

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

Я подозреваю, что настоящая причина, ради которой так бесцеремонно была поломана моя домашняя страница - это засунуть ко мне на страницу этот самый Google чат. Ребята, мне не нужен Google чат здесь! Вы меня спросили? Сначала впендюрили его в web интерфейс Gmail, теперь вот прямо ко мне домой затащили его. Ночью. Без спроса. Выключить нельзя.

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

суббота, марта 21, 2009

IE8 - первые впечатления

Установил IE8. Работает действительно быстро, примерно как Chrome. Особенно это заметно после IE7, даже мерять не надо, на глаз видно.
Плюс - все привычные примочки остались на своих местах, обобенно мой любимый Google Toolbar. Понравились акселераторы.
Минус - пока один. В IE8 Не работает Puntoswitcher. Может потом еще что нибудь вылезет.
Совершенная загадка - цвет ярлыков вкладок. Они то голубые, то зеленые, то малиновые, то желтые. Никак не пойму, от чего зависит их цвет. Причем он постоянно меняется.
Но, блин, быстро работает. Даже не похоже на IE...

вторник, марта 17, 2009

Похоже, не ждали...

Свершилось, наш офис переехал на левый берег, в комплекс офисов Особой экономической зоны. Теперь наш адрес Дубна, ул. Программистов 4 корпус 3. Вот этот самый:

Справа на третьем этаже наши окна.

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

Пробираться в офис пришлось через черный ход. На месте парадного - груды строительного мусора, его вывозят второй день и конца нет. Коридоры встретили нас бодрым стрекотом перфораторов и толстым слоем строительной пыли. В потолке третьего этажа зияют выдолбленные аккуратные дыры, как от гранатомета с видом на хмурое мартовское небо - строители забыли заложить какие-то коммуникации и теперь правят свои "баги". Видимо дом для программистов решили строить так же, как программисты делают свои программы :).
Лифты очень красивые, блестят хромом, но не работают. Даже кнопок нет. Замысловатые зигзаги коридоров с первого раза осиливал не каждый, и то и дело из-за очередного поворота доносились бессмертные цитаты персонажа Семена Фарады из "Чародеев" - "Люююди!!!" и "Ну кто так строит?!".

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

А в общем, не все так плохо. Уйдя в пятницу вечером из одного офиса, в понедельник утром в 10 часов мы уже запустили все свои проектные сервера, а в 11 - уже собрали новый билд - 255-ый по счету (единички не хватило до круглого числа). Отличный показатель для офиса который кишмя кишит программистами, на каждого из которых приходится по паре серверов не считая рабочих станций. За это нашим админам Мише и Марине - респект и уважуха.

Это кросс-пост из личного блога.

суббота, февраля 28, 2009

Что общего между Android и .Net?

Думаете ничего? Забавные и неожиданные параллели обнаруживаются порой в развитии информационных систем.
Все знают о том, что в прошлом году Google запустил Android - свою мобильную платформу. Android построен на ядре Linux, а прикладные приложения выполняются в виртуальных машинах (sandbox) и для их разработки используется Java. Или, вернее, язык с синтаксисом Java и библиотеки анлогичные Java SE. А в качестве среды исполнения вместо JVM используется виртуальная машина Dalvik. Сразу возникает резонный вопрос, а зачем вообще Google понадобилось изобретать велосипед, почему не использовать стандартную для мобильных устройств Java ME? Вроде бы Google не намерен зарабатывать непосредственно на софте для Android. Кроме того, использование Java ME обеспечило бы переносимость огромного количества мобильных приложений на новую платформу.
Однако тут все не так просто, и как уже заметили многие все дело в лицензионной политике. В случае с Java ME, Sun продемонстрировала просто чудеса иезуитства изобретательности, выпустив ее сразу под двумя лицензиями: GPLv2 и коммерческой. А это вынуждает производителей, использующих Java ME либо открывать весь свой код, либо... платить Sun :)

Естественно, все это не укладывалось в рамки политики, которую избрал Google для продвижения Android. В отличие от Sun, у которой хорошие юристы, Google решил положиться на своих инженеров и... создал свою реализацию виртуальной машины. Причем, Dalvik - это не просто новая реализация JVM (которую все едино пришлось бы лицензировать в Sun), Dalvik вообще не использует Java байт-код (вернее байт-код, полученный в результате компиляции в design-time преобразуется в dex формат, который и используется в run-time). В общем, инженеры Google обставили лоеров Sun. Неудивительно, что мы не видим Sun в списке участников Open Handset Alliance. Тем не менее в Google предпочитают не заострять внимание на этом вопросе, и когда речь заходит о Dalvik они предпочитают говорить об оптимизации своей виртуальной машины под специфику мобильной платформы, позволяющей запускать множество экземпляров, и т.д. и т.п.

Интересно, что девять лет назад подобная история имела место в отношении Sun и Microsoft. И в результате на свет появился еще один "язык, похожий на Java" и "еще одна реализация виртуальной машины" - .Net. Практически все увидели в этом ответ Microsoft SUN и его платформе Java. Новый язык был очень похож на Java по синтаксису, а платформа весьма напоминала JRE. Тогда еще у всех на памяти было противостояние MS и Sun на почве Java, которое закончилось грандиозным скандалом, судебным иском Sun против Microsoft и последующим мировым соглашением. Суть претензий Sun заключалась в том, что Microsoft внесла изменения в свою реализацию JVM, которые делали ее несовместимой со спецификациями Sun и давали преимущества Java программам, исполняемым под Windows. В результате судебных тяжб Microsoft потеряла возможность развивать свою версию JVM. Это, собственно, и стало основным политическим мотивом для создания .Net Framework.
Тогда Microsoft также предпочитала говорить не о борьбе с Sun, а о необходимости более тесной интеграции с WinAPI и COM.

История повторяется. Но .Net - это закрытая проприетарная платформа, ориентированная на Windows, которая за 9 лет так и не смогла существенно постенить Sun и Java с занимаемых ими позиций. А вот с Android все выглядит более серьезно, и более угрожающе. Сегодня у Sun есть реальные шансы потерять платформенное лидерство. Как бы им не повторить судьбу DEC и Compaq.

среда, февраля 25, 2009

Модульные тесты для SilverLight

SilverUnit (другое название CThru) - движок для модульного тестирования SilverLight.
Интересно, что
- тесты могут исполняться в обычном NUnit или MS Test tools без специальной Silverlight-компиляции
- тесты исполняются в обычном CLR runtime, не в silverlight.

В общем полная изоляция. А все потому, что SilverUnit построен на базе Typemock Open-AOP API.

воскресенье, февраля 22, 2009

Как проводить телефонное интервью

В блогах полно статей для кандидатов о том, как проходить интервью. Этот пост наоборот, для тех кто проводит интервью.

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

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

1. Имейте в запасе побольше вопросов. Составьте вопросник по тому языку, платформе, framework, знания которых требуются от кандидата. В моем вопроснике по .Net более сотни вопросов, плюс около полусотни вопросов по RDBMS. Избегайте прямых вопросов о конкретных классах, ответы на которые легко читаются из документации. Например, вместо вопроса о классе XmlDocument спрашивайте о том, как работать с Xml DOM.

2. Начинайте с простых вопросов. С самых элементарных. Например таких "Собеседование. Вопросы на засыпку"). Если человек начинает плавать на простых вопросах вы можете быстро свернуть интервью, сэкономить свое и чужое время. От простых вопросов переходите к более сложным. Если кандидат знает, что такое XmlDocument, попросите его рассказать о том, как в XmlDocument добавить новый элемент.

3. Свободные вопросы - наиболее мощный инструмент при проведении телефонного интервью. Свободный вопрос - это когда вы просите кандидата рассказать все, что он знает по какой-то теме. Например, «Расскажите, что вы знаете о многопоточном программировании на .Net», или «Расскажите, что вы знаете об использовании триггеров в SQL». Старайтесь не перебивать человека, когда он отвечает на такой вопрос, он сам покажет ширину и глубину своих познаний. Можете попросить его уточнить какие либо детали, или направить его рассказ в нужное русло, подсказками.

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

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

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

четверг, февраля 19, 2009

пятница, февраля 13, 2009

Мы строили, строили...

Оказывается, у нас в стране есть "Совет по развитию информационного общества при президенте России". Вчера этот ареопаг заседал в Кремле. Президент удивлен:

"По индексу развития электронного правительства мы были в 2005 г. на 56-м месте, а в 2007 г. достигли 92-го"


Вот тебе и "Электронная Россия". Если бы президентом у нас был товарищ Сталин, то он бы решил что все это диверсия. Но президентом у нас товарищ Медведев, человек культурный. Он все понимает:

"О чем это говорит? Это говорит о том, что у нас никакого электронного правительства нет, все это — химера."


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

Какие выводы сделаны ареопагом? Известно какие. Назначить дополнительных чиновников, ответственных за информатизацию. Выделить дополнительно бабла для распила.

Я думаю года через два, мы достигнем таки дна того рейтинга, про который говорил президент.

понедельник, февраля 09, 2009

Microsoft Tag

Microsoft анонсировала новую технологию для мобильных устройств - "Tag"
Все до безобразия просто. Если вы видите вот такую картинку:

вы наводите на нее камеру своего мобильника и тут же попадаете на URL который зашифрован в ней. Потому что картинка эта - баркод. Конечно для таких чудес надо установить Microsoft Tag Reader. Что интересно, есть версии не только для WinMobile, но и для iPhone, Symbian S60, BlackBerry, и наконец J2ME. Скоро обещают версии для PalmOS и Android.
Формат кодирования картинки не раскрывается. Судя по всему в картинке зашифрован не сам URL, а некий хэш код, который отправляется на сайт Microsoft Tag, а уж оттуда броузер редиректится на нужный URL. Для чего такие сложности? В самой картинке зашифровано довольно мало информации, что-то в районе 8-10 байт. Т.е. URL там попросту не помещается.
Для того чтобы создавать свои tag-и надо иметь эккаунт. Пока все бесплатно, но Microsoft оставляет за собой право сделать технологию платной для паблишеров после окончания периода бета тестирования.
Попробовал я как это все работает на мобильнике с WM 6.0. Бывает сканер схватывает картинку в доли секунды, а иной раз приходится дерижировать камерой над картинкой несколько секунд.
В-общем идея очень свежая и интересная.
Скачать TagReader на телефон можно здесь
А на картинке, кстати, ссылка на RSDN.

пятница, января 23, 2009

Шпоры от J.D. Meier по архитектуре приложений

Очень хорошие выжимки в стиле шпаргалок по архитектуре различных типов бизнес приложений готовит J.D. Meier

Клиент сервер (толстый клиент) (не модный нынче и не гламурный)

Трехуровневый Rich Internet Application (модный и гламурный)

Четырехуровневый Web Application с выделенным слоем сервисов и Table Module внутри (для корпоративных чуваков, реально озабоченных вопросами безопасности, которые все делают "по Фаулеру")

Обычный трехуровневый Web Application с ORM внутри (самый популярный, пожалуй)

REST web сервис (да - да, REST на платформе Microsoft, кто бы мог подумать...)

Один недостаток у этих шпоргалок. Чтобы получить от них пользу, надо знать что такое "Dependency Inversion", "Entity Translator", "Table Data Gateway", "Page Controller" и еще кучу всяких вещей. Но если ты все это знаешь, то и шпоргалки тебе видимо уже не нужны :)

понедельник, января 05, 2009

Listma - .Net Workflow framework

Что вы делаете, когда вся логика разрабатываемого класса крутится вокруг его состояния? К примеру, разрабатываем мы web магазин. Есть у нас сущность Order (заказ), ее создает «покупатель», затем он ставится в очередь на обработку, затем «оператор» формирует заказ и передает его «курьеру» для доставки, «курьер» доставляет заказ и делает отметку о доставке. Покупатель может редактировать все поля заказа, пока не передаст его на исполнение. После этого покупатель не может редактировать заказ, но может отозвать его, но только если заказ еще не передан для доставки. Оператор не может редактировать заказ, но может оповестить покупателя о задержке в связи с отсутствием товара на складе. Курьер может только проставлять отметку о доставке и только на тех заказах, что переданы для доставки ему. Ну и т.д. (много деталей опущено).

Довольно типичная картина, не правда ли? Действия доступные пользователям зависят от их роли и текущего состояния сущности, причем все эти особенности и детали способны утомить еще при чтении требований, не говоря уж о реализации. И в тоже время они являются весьма важными с точки зрения заказчика. А при реализации они размазываются тонким ровным слоем по всей бизнес логике и по UI в придачу. Ситуацию усугубляет то что, все эти требования очень волатильны, то есть склонны к частым и непредсказуемым изменениям. И вот он – живой кошмар любого разработчика перед нами во всей красе.
Однако с подобными задачами довольно просто можно справиться на основе workflow подходов, и в частности, с помошью конечного автомата или Finite State Machine.
Основная идея состоит в том, чтобы описать диаграмму состояний сущности (в нашем случае заказа), и допустимых переходов, при этом связав их с ролями пользователей.
Обычно, говоря о методе конечных автоматов, подразумевают создание класса, реализующего конкретную диаграмму. Но в нашем случае интереснее использовать иной подход, который менее распространен. Нам интереснее создать класс, способный исполнять любую диаграмму состояний, по воздействию внешних событий. При этом список переходов, доступных в данном состоянии для данного пользователя, на уровне UI представляется в виде набора доступных действий. А выбор любого из этих действий, вызывает выполнение соответствующего перехода в диаграмме состояний, и выполнение связанной с ним бизнес логики.

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

Что должен уметь делать этот framework? Он должен:
- описывать диаграммы состояний объектов, включающие перечень возможных состояний объекта, и возможные переходы между состояниями
- определять бизнес логику, выполняющуюся при изменении состояния объектов
- определять доступность переходов на основе ролей пользователей
- определять шаблоны оповещения при изменении состояния объекта и правила адресации на основе ролей пользователей
- переводить объекты из одного состояния в другое на основе описанных правил
- определять права доступа к атрибутам объекта в зависимости от состояния и роли пользователя

И в тоже время он не должен:
- зависеть от способов хранения бизнес-сущностей
- предъявлять какие либо требования к реализации классов бизнес-сущностей
- зависеть от UI библиотек (ASP.NET, WinForms)
- зависеть от провайдеров role-based security
- требовать наличия собственной БД для хранения своих настроек и состояния

Ничего готового на платформе .Net не обнаружилось. Windows Workflow не подошел на эту роль по причине своей монструозности (посмотрите список чего «не должен» делать движок и вам все станет понятно). Поэтому появилась мысль сделать свой движок, обобщив в нем свой многолетний опыт в данной области.
И вот в первом приближении такой движок готов. Называется он Listma, что значит Linking State Machine, или Подключаемая машина состояний, что вполне отражает его суть.
Listma - это проект с открытым исходным кодом. Хостится он будет на Google Code.

Сайт проекта http://code.google.com/p/listma/
Последнюю версию можно взять здесь http://code.google.com/p/listma/downloads/list
Бактрэкер проекта здесь http://code.google.com/p/listma/issues/list
Исходники с примерами здесь (SVN) http://code.google.com/p/listma/source/browse
Блог проекта здесь http://listma-rus.blogspot.com/

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