November 29, 2006

Не мейнстрим (или снова про дизайн UI)

Интересно наблюдать за движением мысли в сообществе. Сначала были разговоры про юзабилити, потом переметнулись на SOA, сейчас вот HR стал почти основной темой дискуссии. Здорово!

А я снова буду не по теме, точнее вернусь к дизайну графического интерфейса. Сегодня Jeff Atwood высказал на своём блоге правильное, на мой взгляд, мнение:

 Deep down inside every software developer, there's a budding graphic designer waiting to get out. And if you let that happen, you're in trouble. Or at least your users will be...

В том же посте приводится пример ужасного диалогового окна и, что самое интересное, описана эволюция этого диалога от простого  к сложному и далее к устрашающе сложному.

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

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


November 28, 2006

Цитата дня

Цитатник выдал сегодня фразу, которой я не могу не поделиться.

There is no pleasure in having nothing to do; the fun is in having lots to do and not doing it.
Mary Wilson Little

November 27, 2006

Simplicity

Очень интересную идею подсмотрел я у Brad Abrams. Он предлагает придумать новую должность - Senior Simplicity Engineer. И правда, если есть столько народу, которые всё усложняют, почему бы не назначить тех, кто должен всё упростить, некое подразделение по борьбе со сложностью.

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

ЗЫ: Не так давно для меня стало откровением, что есть такие люди, как "евангелисты", работа которых в том, чтобы говорить много, но по делу, а теперь вот это ещё. И вправду: "Мамы всякие нужны, мамы вяские важны".


November 23, 2006

С чего начинается CLR

Не так давно начал свой блог самый главный разработчик .Net CLR и вообще хороший человек Patrick Dussud. И как начал! Рассказал о том, как всё это начиналось (всмысле CLR).

Не так и много, конечно, первый пост всё-таки, но особенно меня заинтересовал тот факт, что прототип сборщика мусора был реализован на Common Lisp. И только потом была написана утилита, оттранслировавшая его в С++.

Блог обещает быть интересным...


November 22, 2006

Функциональный .net

Сегодня попалась на глаза интересная статья про нововведения в C# v.3, который скоро станет новым оружием Microsoft в борьбе за мировое господство. Статья содержит достаточно подробное описание новых возможностей языка и сравнение их реализации с другими языками, такими как , F# и Haskell.

Сразу вспоминается мысль Paul Graham'а: "Lisp started out powerful, and over the next twenty years got fast. So-called mainstream languages started out fast, and over the next forty years gradually got more powerful, until now the most advanced of them are fairly close to Lisp. Close, but they are still missing a few things...." (взято отсюда).


November 21, 2006

Всеобщая мобилизация

В августе месяце сего года я услышал, что W3C выпустил рекомендации для представления веб-контента на мобильных устройствах. Тогда же меня посетила идея, что мобильный доступ в интернет только растёт, может быть пока и не в России, но за границей точно, и было бы неплохо сделать сервис, который бы переводил обычное представление веб-страниц в мобильный вид. Я поделился идеей с коллегами. Коллеги сказали "да кому это надо?". И идейка как-то заглохла, самому заниматься не было особого времени, работа, всё-таки.

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

Вот раньше ко мне идеи приходили уже после того, как их кто-то придумал и реализовал. Так однажды я думал создать генератор RSS-лент для сайтов, где их нет, потом оказалось, что есть Feed43. Совсем недавно я писал о Software Appliance, сам того не подозревая. И вот в кои-то веки идея пришла вовремя! Да возможности подкачали.

Совершенно безвозмездно предлагаю идею для реализации, мало ли кому пригодится (или кто захочет реализовать с привлечением меня :-)). Объединить возможности сервиса мобилизации с социальной сетью и создать новый ресурс, где каждый участник сможет предложить свой вариант мобильного представления конкретного сайта (отсюда рейтинги и коментарии и всё такое в стиле 2.0). Преобразования можно делать при помощи того же XSLT. Почему это будет интересно? Да хотя бы потому, что автоматический обработчик Гуугла ставит левый сайдбар страницы впереди основного контента, а это жутко неудобно. В последствии можно набрать статистику по пользовательским преобразованиям и создать автоматизированное решение, которое будет основываться на best practice, так сказать. Я даже названия могу для ресурса предложить: mobilizr или mobilize.it :-).


November 16, 2006

Удивительное рядом

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

Program aborting:
Close all that you have worked on.
You ask far too much.

По ссылкам в коментариях можно найти ещё.


Не SaaS

Какая-то сейчас суета вокруг SaaS. Я как-то не углублялся в понимание, но идея вроде бы в том, что софт v.Next должен быть представлен не просто как монолит, а как композиция сервисов, которые, к тому же, могут предоставляться разными поставщиками. Так? Надеюсь да.

Теперь немного лирики. Есть у меня ADSL модем. Устройство умное, на нём даже своя операционная система есть, Black Box Linux кажется. Так вот он предоставляет 2 варианта административного интерфейса: классический через telnet и web-интерфейс. Ещё я знаю, что Google продаёт корпоративным клиентам свой поисковик в виде чёрного ящика синего или жёлтого цвета. Наверняка у него административный интерфейс предоставляется через  локальный Web-сервер. А тут ещё Sun разродился своим контейнером серверов.

Всё это вместе натолкнуло меня на мысль. Может быть будущее в том, чтобы продавать сервисы вместе с железяками? Конечно, не совсем SaaS в том смысле, что будут сложности с апдейтами, да и ещё много чего, но зато не будет проблемы c утечкой информации. Компания, которая покупает данный сервер/сервис, спокойно может доверить железяке работу со своими даже самыми секретными данными, покуда они (данные) не утекают никуда наружу. Эдакий квази-SaaS.

Это мои мысли, а что уважаемое коммьюнити думает по этому поводу?


Web 2.0 инструментарий

Как же много интересного сейчас делается на волне популярности Web 2.0. Особенно меня радуют всякие утилитки, типа Web 2.0 Logo Creator или генератор "ползунков". Вроде бы и игрушки, но ведь могут использоваться и в качестве реальных утилит разработчика. Так с миру по нитке можно настоящий 2.0 ресурс собрать. Ещё бы генератор 2.0 идей кто-нибудь реализовал. :-)


November 14, 2006

Правильное программирование

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

Давным давно, когда деревья были большими, а из языков был известен только Basic и тот плохо, я с благоговением писал свои первые "программы". Это было подобие Turtle графики в стиле: LINE 10, 20, 50, 60 и так далее. Помню мы тогда с товарищем рисовали какую-то картинку, и когда на экране стала появляться именно эта картинка, а не просто набор линий, я был необыкновенно горд собой. А как же! Столько сил было положено :-) Приятно вспомнить.

Затем был Pascal. Оказалось, что есть подпрограммы и структуры. Потом они объединились и стали классами. Программирование было увлекательным занятием. А потом я увидел Delphi. Наверное, в тот самый момент у меня в голове и возник вопрос "чем же это всё закончится?". Со временем средства разработки становились всё более интеллектуальными и для совершения каких-либо действий приходилось всё меньше работать головой и всё больше руками. Однажды столкнулся с задачей просмотра DBF файла. Начал искать описание формата, что-то придумывать. В конце концов запустил Delphi и наваял приложение при помощи одной только мыши за 5 минут.

Не так давно я смотрел screencast, в котором автор сравнивает платформы разработки веб приложений (JSP, Ruby On Rails, Plone, Turbo Gears, Django). Сравнивает очень просто: реализовывает одно и то же приложение на всех платформах и собирает статистику. В качестве метрик выступают: количество строк кода, файлов кода, файлов конфигурации, время на разработку, количество ошибок компиляции за время разработки и количество "непростых ошибок", когда приходилось прибегать к помощи документации или сообщества. Так вот, при помощи Plone удалось сделать всё не написав ни единой строки кода за 7 (кажется) минут.

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

А что будет, когда IDE смогут сами генерировать правильный код? Страшно подумать... Неужели программисты станут ненужными и выродятся? Думаю, вряд ли, скорее всего само понятие "программирование" получит новый смысл. И этот смысл будут искать и формулировать такие же как я.

Ну а напоследок ещё одна ссылка по теме. Мой любимый рассказ Азимова.


November 10, 2006

Как я .Net запускал

Высшее командование поставило давеча передо мной задачу: проверять наличие и версию .Net Framework при запуске приложения. Первое время я пребывал в состоянии лёгкого ступора, так как задача показалась мне интересной. Сразу придумалась аналогия: при запуске Win32 приложения проверять наличие и версию Win32 API, нет! наличие и версию Windows. Аналогия, имхо, совершенно приемлимая, так как .Net выступает как платформа. Короче говоря, сначала я подумал, что от меня требуют невозможного, да и по памяти, нормальной практикой является проверка соответствия system requirements в момент установки приложения, а не его запуска.

Ладно. Первый шок вроде прошёл. Начинаем мыслить. Проверять версию ладно, это наверняка предусмотрено разработчиками из Microsoft (MSDN подтвердил, что так и есть). Достаточно добавить в App.config пару строк. Но вот как быть с проверкой на наличие...

Для начала хочу обратить внимание, что исполняемый файл для .Net имеет всё то же разрешение .exe. В отличие, скажем, от Java, где всё это происходит посредством launcher'а. Тут несложно догадаться, что разработчики Microsoft придумали некий механизм, чтобы встроить инициализацию среды исполнения непосредственно в исполняемый файл. Хорошее решение, правда только для Windows, но всё равно удобно. А конечному пользователю только того и надо, чтобы было удобно.

Здесь следует отметить, что мне очень повезло. Совсем недавно я начал читать творение Patric Smacchia, а там как раз с самого начала написано что да как. Да! В любой книге по разработке на .Net с самого начала есть разбор формата сборки. Но! Совершенно нигде более я не встречал, чтобы автор описывал (особенно с самого начала книги) подробно весь механизм инициализации CLR.

Оказалось, что существует некий COM компонент, реализующий интерфейс ICLRRuntimeHost. Кроме того, есть API, позволяющий создать экземпляр хоста и попросить его выполнить managed код из требуемой сборки. Всё. Довольно просто, если знать что делать.

Могу только догадываться, что похожий механизм используестя и при создании .exe файлов для запуска Java приложений, но там это скорее надстройка над системой, а тут это именно система. Это радует.

Но! В каждой бочке мёда, как известно, должно быть немного инородной субстанции. Функция API (на который я ссылался чуть раньше), отвечающая за загрузку нужной версии CLR, в случае неудачи не просто возвращает код ошибки, но и выводит на экран MessageBox, побороть который мне не удалось. А жаль.

В итоге приемлимое решение видится мне вот как: создаём unmanaged приложение-launcher. В нём проверяем, например, по реестру, наличие нужной нам версии .Net Framework, ну а дальше по обстоятельствам.

Вот такая вот жизненная история.


November 8, 2006

Самый лучший в мире патч

Предыстория

В CGI библиотеке Ruby не так давно обнаружилась уязвимость. При правильном, а точнее "не соответствующем стандарту", использовании multipart MIME получался бесконечный цилк, который очень эффективно приводил к denial of service.

А теперь сама история

Дырку, конечно, заклеили. В самые кратчайшие сроки, а как же иначе, выпустили официальную заплатку в виде файла .patch. Я как человек Windows-ориентированный, с утилитой patch не знаком. Microsoft всегда выпускал патчи в виде файла, который просто надо установить и ни о чём не думать. А тут такое! Кусочек исходного кода! Красота да и только. Мне очень понравилась сама идея выпуска закладок в виде diff'ов к файлам исходного кода. Конечно, идея, как я понял, совершенно не нова, но сегодня она (идея) приобрела нового поклонника. На мой взгляд это очень интересно, когда ты сам видишь на что влияет устанавливаемое обновление и какими силами удалось достичь определённой функциональности. Например, в данном случае, проблему получилось решить изменением одного только условия в if'е.


Новый 2.0 сервис

Наткнулся сегодня на новый сервис BlogMailr. Всё как положено: название в стиле Flickr, Zooomr и прочихr. Иконка со соловом beta. AJAX интерфейс.
Сервис этот призван объединить столпы Web v.Previous и Web v.Next, а именно e-mail и блоги.
Всё просто: пользователь регистрирует на сервисе блог и получает под него e-mail адрес, письма на который будут автоматически попадать в заявленный блог в качестве постов. Определение блога происходит, наверняка точно так же как и в Windows Live Writer, через RSD .
Итого: интересный сервис, но на мой взгляд не более того. Если честно, не могу представить как он будет полезен лично мне. Хотя, несомненно, какая-то аудитория у него будет. Например, удобно было бы набрать письмо на КПК и отправить его на блог, когда под рукой нет чего-то более-менее похожего на компьютер.
А ещё мне кажется, что подобные вещи в разное время предлагали многие блоггинг-сервисы, только каждый для своих блогов.

Published with BlogMailr


November 7, 2006

На лицо ужасные, добрые внутри

Наконец-то осилил рассказ о MDA. Ссылка мне попалась уж с неделю назад, только вот никак руки не доходили, точнее глаза. А тут я её распечатал и прочитал. Какие же всё-таки молодцы эти программисты из Microsoft.

Добрые внутри

Занимательная штука, эти асистенты. По сути это механизм, который говорит среде исполнения .Net выкидывать специальные исключения в момент выполнения. И исключения эти предназначены совсем даже не для того, чтобы их отлавливать, а для того чтобы с их помощью выяснить что "кто-то где-то честно жить не хочет". Особенного внимания удостоился стык managed и unmanaged кода, то есть PInvoke. Некоторые MDA при включении влияют на поведение CLR, в результате чего ошибки, так сказать, высвечиваются. Эдакая провокация кода на ошибки.

На лицо ужасные

Собственно, об MDA написано много и до меня. Отметить хочется вот что. Несомненно полезная вещь имеет очень странный механизм включения. Да, есть поддержка некоторых MDA в Visual Studio 2005, но только некоторых. Чтобы включить остальные надо попотеть. Ощущение, что разработчики старались применить здесь все модные механизмы настройки приложений, разве что ini файлы забыли. Тут вам и изменение ключа в реестре, и переменные окружения со странными названиями, и даже xml файл конфигурации в стиле app.config. Мне почему-то увиделась аналогия со стартом автомобиля. Чтобы сдвинуться с места надо применить и руки, причём каждую отдельно, и ноги, тоже отдельно, и по сторонам посмотреть и ещё мозг задействовать, так на всякий случай. Кроме того, как я уже замечал, не все MDA можно использовать из IDE.

Итого: MDA - быть. Даже нет... Они и так есть, без моего на то согласия. МДА - использовать. Только вот, имхо, можно было обойтись каким-нибудь одним способом настройки.

Да, кстати! Угадайте сколько MDA включено в .net 2.0? Ровно 42. :-)


November 2, 2006

Образование

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

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

Для начала скажу, что я полностью согласен с тем, что написано в статье, я сам писал почти о том же, что обучение оторвано от реальности и всё такое. Но! Автор утверждает, что сам был таким же студентом и что в один прекрасный момент он прозрел. Почему тогда он хочет лишить всех остальных такой возможности? Может именно этот самый процесс "открывания глаз" и есть то самое, чего так не хватает человеку, чтобы состояться! Кроме того, по моим сведениям, на западе, на который все так усиленно косятся в поисках ответов на все вопросы, высшее образование нацелено на более старшую молодёжь. То есть, например, у нас человек в 23 года оканчивает институт, и ещё пару лет "доучивается" по месту работы. А у них что? У них только в школе можно учиться до 22 лет, а потом ещё 6 лет в институте. И вот он! Молодой специалист, который обладает всеми необходимыми знаниями в 28 лет! Какое счастье! (Вполне возможно, что я не прав, но такая у меня информация). Как минимум получается одно и то же. Но! Когда ты до 28 учишься в иституте, пускай даже зарубежном, пускай даже самом лучшем, но ты не можешь работать full day, потому что ты студент! А у нас, пускай ты "ничего не знаешь", но ты готов работать на полную ставку и, если тебе этого действиетльно хочется, продолжать своё обучение путём самодрессировки исходя из потребностей бизнеса, о котором так печётся автор.

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

Кстати, вот ещё что. В большинстве объявлений о приёме на работу значится "ВО или студенты старших курсов" не так ли? Как можно в таком случае говорить, что диплом, никому не нужен. Нужен и ещё как! Кроме того, автор говорит, что "человек, который приходит из института в компанию, должен быть готовым высококвалифицированным специалистом или менеджером, а не мальчиком на побегушках, это он должен учить остальных и показывать им пример работы, а не наоборот". А, простите, кого учить-то, если все такие же умные? Предположим ситуацию, что в компанию будут приходить только "полностью состоявшиеся специалисты", которые готовые всех кругом учить и вообще двигать прогресс семимильными шагами. А кто тогда будет выпонять чёрную работу. Одними начальниками сыт не будешь. Да и кто будет слушать специалиста, который на пяток лет младше? Пускай он хоть семи пядей во лбу, никто не позволит ему себя "учить". Возможно, это наша Российская специфика, но её нельзя не учитывать.

Через всю статью проходит идея о том, что кто-то чего-то кому-то должен: "бизнес должен заказывать продукт в вузах", "в преподавательских советах должны появиться не только кабинетные ученые, но и действующие бизнесмены-практики", "должен появиться механизм «покупки» студентов". Произносить мудрые речи все горазды, а вот сделать что-то... Почему никто из "состоявшихся бизнесменов-практиков" не идёт в институт и не возглавяляет там хотя бы лабораторию, не готовит кадры для бизнеса? К сожалению, а может к счастью, у нас в России никто никому ничего не должен. И чтобы что-то было сделано как ты хочешь - надо делать это самому. У нас есть CIO Club, я правда не знаю что он делает и зачем нужен, но ведь есть же такая орагнизация. Давайте создадим организацию "Состоявшиеся бизнесмены-практики за Высшую Школу" или что-то типа того. Под это дело можно, наверное, получать образовательные гранты, привлекать студентов и готовить их к реальной жизни. Вот тогда уже можно будет говорить о результатах или их отсутствии. Я считаю, что надо пытаться что-то делать, а не принимать условия, которе диктует нам Система. (Сейчас самое время напомнить мне о моём юношеском максимализме).

А до тех пор, пока не будет конкретных действий в сторону от "тропинки, ведущей в тупик", ничего не сдвинется с мёртвой точки. Period.


November 1, 2006

Большие покупки

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

Мне кажется, что Google не будет тратить денег на покупку Дигга, и ему подобных ресурсов. Объясню почему я так решил. Дело, конечно, совсем не в деньгах, их, как известно, у Google навалом. Для начала небольшое отступление.

Как такие ресурсы позиционировать? Как хранилище закладок или как новостные ленты. Лично я использую delicious, и именно как место, куда удобно положить ссылку и потом найти её там же с любого другого компьютера. Да, у меня есть аккаунт на Дигге, но я никогда не утруждал себя повышением рейтинга какой бы то ни было ссылки. Я даже был подписан на РСС дигговых технических новостей... Продержался неделю, так как слишком много "шума", совершенно бесполезного, а искать что-то более менее интересное - просто жалко времени. Раз уж это новости, то их надо бегло просмотреть, а не вчитываться в каждую.

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

Возвращаясь к вопросу о возможности появления в дружном семействе сервисов Google чего-то подобного Digg. На мой взгляд, они (Google) сейчас направлены на получение уникальной информации, то есть чего-то такого, чего больше нигде нет и быть не может. Информации, которая генерируется пользователями. В качестве иллюстрации возьмём последние из сервисов: Docs&Spreadsheets, YouTube, JotSpot (насколько я понял это реализация Wiki). Идея в том, чтобы не искать что-то в интернете, а дать пользователю возможность нагенерировать информации на собственных сервисах, и потом её преспокойно проиндексировать. В таком случае, вся информация под боком, все права, так сказать, защищены, и никто не предъявит иск за незаконное использование информации. А что касается поиска по новостям, так он у них и так есть, и они с ним и так имеют кучу проблем.

ЗЫ: А вообще не могу никак понять, как на ресурсах news 2.0 можно зарабатывать деньги. Наверное поэтому я до сих пор работаю :-)


This page is powered by Blogger. Isn't yours?