2008-05-20

Microsoft about Vista

> Windows Vista is doing a lot more than Windows XP, and it requires resources to conduct these tasks. В этом то и проблема, что она делает больше. Мне не надо ничего из этого "делания", я бы предпочёл, чтобы она "делала" меньше, ничего не делала. Всё, что хочется от операционной системы - это возможности выполнять нужные мне программы и работать с железом. Идеально - это когда OS не видно, когда совершенно не ощущается, что она что-то "делает", когда просто "всё работает". Я обычно трачу усилия на то, чтобы выкинуть что-то из OS, остановить ненужные сервисы, деинсталировать ненужные программы, а поставить другие, те которые я выбрал, которые обладают нужной мне функциональностью. Последний пал Explorer (причём "пал" буквально), в результате я заменил стандартный shell на bblean, чем и доволен. Фактически это привело к тому, что больше нет на экране видимых окон, принадлежащих Windows. Нет вообще.

Фраза из разговора

"А фотографии у него все художественные, а потому скучные и неинтересные".

2008-05-19

В Spokane всё спокойно

Водопад в Spokane. Это город на восточной границе штата. Через весь город протекает река с одноимённым названием, которая по случаю наступившей жаркой погоды наполнена до краёв, бурлит и клокочет. Над этим буйством стихии протянуты навестные мостики и канатная дорога. Брызги долетают до мостика и приятно освежают.
Posted by Picasa

2008-05-07

Выбор домашнего сервера

За несколько лет у меня накопилась куча железок, управляющих домашней сетью. Это два четверть-гиговых Netdisk-а, один NAS с полугигабайтным MyBook, роутер и ещё один дополнительный свитч. Из устройств есть web-камера и DVD плейер, умеющий показывать фильмы с сетевого диска. Есть ещё несколько внешних дисков с бакапами разной свежести, лежащие по шкафам. Зрелище перепутанных проводов и блоков питания приводит меня в ужас. Хочется немного уменьшить этот бардак, собрав диски в один корпус и тем самым уменьшить количество проводов. Сейчас есть пара интересных железяк от HP. Во первых это MediaSmart сервер, работающий под WHS и во вторых MediaVault, который и по размеру и по цене тянет на половинку первого, и который работает под Линуксом. Первый основан на гигагерцовом процессоре AMD, второй на дохленьком полугигагерцовом ARM-е. Почитал я спецификации и всё бы хорошо в первом, если бы не цена и не WHS. Как-то не хочется сервер под windows, мне надо, чтобы работало и с Mac-ом и с Linux-ом. Да и функциональный набор WHS кажется довольно неприменимым. Нет, совсем не вдохновляет. С другой стороны, железяка явно пошустрее и места для дисков в ней больше. Если бы первую машинку да с софтом от второй, да подешевле на пару сотен (как раз стоимость WHS, наверное). Пробовал их кто-нибудь? Интересны отзывы.

2008-05-05

Google calculator

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

pi*(3mm^2) in inch^2: pi * (3 (mm^2)) = 0.0146084351 inch^2

Мой сын на нём считает задачки по физике. Калькулятор знает многие физические константы, может перевести результат в нужные единицы, а то, что единицы совпали, является дополнительной проверкой.

Я когда увидел, попробовал и мне очень понравилось. Я когда-то тоже делал похожую штуку. А потому знаю где лежат одни грабли. И заглянув в заветное место увидел грабли в целости и сохранности. Вот они. Но Гугл зделал их ещё занятнее.

(0 Celsius - 0 Celsius) in Celsius: (0 degree Celsius) - (0 degree Celsius) = -273.15 degrees Celsius
0 Celsius + 0 Celsius: (0 degree Celsius) + (0 degree Celsius) = 273.15 degrees Celsius
0 Celsius *3: (0 degrees Celsius) * 3 = 546.3 degrees Celsius

Собственно, объяснение простое, но сначала ещё один пример:

0 Celsius - 0 Celsius: (0 degrees Celsius) - (0 degrees Celsius) = 0 kelvin

Гугл не умеет работать с размерностями со смещённым нулём. Для абсолютных единиц типа температуры бывают шкалы, гне нуль смещён. Например, температура Кельвина - абсолютная, а Цельсия и Фаренгейта - относительные. Вычитая относительные величины, скажем градусы Цельсия, мы получаем новую размерность - интервал температуры в градусах Кельвина или Цельсия. Очевидно, что переводя интервал в градусы Цельсия не надо прибавлять смещение в 273 градуса. Этим интервал отличается от значения температуры.

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

В принципе, не очень часто приходится иметь дело со смещёнными размерностями. Температуры да шкалы времени, и, кажется, всё. Так что калькулятор вовсе не плох. Однако с температурами они прокололись. Слишком много сил ушло на попугаев.

Никто не знает, как Гуглу баг зафайлить?

2008-05-02

Куда их совать-то?

Та же проблема, что и в анекдоте про свечки, существует в программировании и особенно в ООП языках. Допустим есть у нас набор объектов, скажем драйверы разных графических адаптеров. И другой набор объектов, скажем графические примитивы: линии, окружности, многоугольники. И решили мы нарисовать одно на другом. И написали для этого код. Всё уже почти работает, но перед нами встала архитектурная проблема: куда засунуть метод? В C#, например, функция должна быть в классе. Можно определить, конечно, класс с одним (или несколькими) статическим методами, но заклюют за недостаток архитектурности. Можно засунуть в графический примитив. Сделать у каждого метод Draw. А можно наоборот, в драйвере сделать виртуальные DrawLine и DrawCircle. Оба решения имеют недостатки. Например, примитивы могут быть вообще не классами, а структурами и методы рисования на конкретного вида устройствах там создают ненужные зависимости. А драйверы потому и драйверы, что не содержат всякой высокоуровневой логики. Надо сделать визитора, скажут прочитавшие Design Patterns или wrappers для примитивов, или ещё один уровень поверх драйверов, и понеслось. Что интересно, раздумья эти с точки зрения выполнения кода не очень интересны, код всё равно будет один и тот же. Это скорее предмет для бурного обсуждения на API review meeting. Что наводит на мысль, что это вообще ненужное размышление. Это плата за ООП и его упрощённую модель, когда метод принадлежит только одному классу. Логически у нас есть операция нарисовать одно на другом и некоторая матрица кодов, которые выбираются исходя из некоторых условий. Старый С-программист сделал бы функцию a la printf с форматной строкой и большим switch внутри и не был бы сильно неправ. Компьютер бы полюбил такой код за компактность, но архитект бы поморщился от такой примитивности и неархитектурности. Независимый С++-программист просто написал бы набор функций. Я не буду сейчас пока описывать как я представляю хорошее решение данного примера на разных языках. Моя мысль дня была в том, что ненужные с точки зрения кода рассуждения вероятно не нужны вообще и их наличие - недостаток архитектуры. А навеян пост продолжением чтения книжки про Руби и обнаружением в классе numeric метода, повторяющего блок N раз. Блин, оператор цикла - метод в классе целого числа. Зачем он вообще метод? "А потому!" - скажет автор, и будет по-своему, по-авторски, прав. Хочу тоже быть автором.

О высоком

В очередной раз удивившись потребности некоторых коллег испытывать к работодателю трепетное чувство верности, я подумал, что моё предыдущее объяснение этого явления не годится. Конечно, это спокойнее, но сила ненависти, которая обрушивается на усомнившегося в идеалах больше, чем объясняло бы сохранение душевного спокойствия или нежелания анализировать. Причём чем моложе собеседник, тем сильнее иррациональность чувства, что явно наводит на мысль об общности механизмов с другими человеческими инстинктами. А ведь скорее всего опять проявляется инстинктивное поведение. Человек - стайное животное, В стае интересы стаи важнее личности, отсюда и верность и самопожертвование. Отсюда же потребность принадлежности стае и депрессия от отсутствия таковой. Поэтому инстинктивные психологические механизмы, защищающие продление рода, переносятся на вожака. В бою вожаку надо верить, чтобы спасти стаю, даже ценой собственной гибели. Гены твоих выживших детей это запомнят. Может отсюда же и религия? Часто говорят, что человеку свойственно верить. И поэтому либо та религия либо другая. Я всегда считал это пропагандой, но сегодня задумался: может действительно свойственно?

2008-05-01

Жгун

Замечательно мужик рисует. Лица получаются отлично. И детали. И написал в одном из постов, что ищет работу, только не web-дизайн и не фирменные стили. Да уж, конечно! С таким талантом надо чем нибудь дельным заняться. Весь этот web-дизайн, в принципе, как и все эти "фирменные стили" есть просто распальцовка и ничего больше. Вот смотрю на продукцию самой известной российской дизайнерской фирмы и ничего кроме распальцовки не вижу. Неудобная клавиатура за несколько тысяч, какие-то странно уродливые и неудобные дизайны, херня какая-то. А вот у меня под рукой мышь no-name. Самая приятная изо всех, которые видел. Купил за 12 баксов в несуществующем больше магазинчике. Искал, кто делал, так и не нашёл. Да и как найти, когда всей информации на бирке "Optical mouse, made in china". И всё! Нет, не надо идти в web-дизайн. Лучше книжки оформлять. Хотя бы и онлайновые.

2008-04-30

Утиная типизация

Пост навеян чтением книжки про Руби. Язык неплохой, но, на мой вкус, немного пересолён объектной идеологией вкупе с ритуальным юниксизмом. Дочитал до утиной типизации. Есть языки со статическими типами, когда типы вычисляются во время компиляции (С, С#, Java etc.), есть с динамическими, когда переменная может содержать любой тип и во время компиляции он не известен и даже может быть изменён присваиванием значения другого типа (JavaScript, Python). Очевидно, что динамические типы почти невозможно скомпилировать эффективно. Более того, кучу ошибок невозможно предвидеть заранее и можно выявить только на этапе выполнения или нельзя выявить вообще. Зато интерпретаторы при этом получаются проще, сам писал, знаю непонаслышке. Честно говоря, я не вижу абсолютно никаких преимуществ динамических типов. Обычно к преимуществам относят то, что писать надо меньше, что я бы полагал даже несколько неприличным, поскольку оправдывается собственная лень. Собственно процесс печатания кода - это очень незначительная часть программистской работы. Есть очень удобный вариант статических типов - автоматические типы, когда тип определен, но явно не написан, а совпадает с типом выражения, которое присваивается. Он был предложен в новой версии стандарта C++, но, похоже, не вошёл. Зато элементы автоматической типизации есть в C# начиная с версии 3.0. var x = выражение; // Переменная x будет того типа, какой имеет правая часть. Это удобно для всяких итераторов и элементов коллекций, т.е. когда тип сложен и вторичен, например внутри цикла foreach. Но, тем не менее, это всё равно строгая статическая типизация со всеми её преимуществами. А "утиная типизация", которая декларируется в Руби, это из поговорки, что если некто крякает как утка, ходит как утка и плавает как утка, то это, наверное, и есть утка. Но это "наверное" и есть слабое место. А вдруг это утконос? Нельзя дать никаких гарантий, а потому надо постоянно и непрерывно проверять тип.

2008-04-29

Рогоз

А таки действительно рогоз, а не камыш! Надо же, какое всеобщее заблуждение.
Posted by Picasa

2008-04-28

Corteo

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

2008-04-17

Софт подчиняется закону Паркинсона.

К предыдущему посту. Причина в том, что софт подчиняется закону Паркинсона. Точнее, не весь софт, а разрабатываемый в "больших компаниях", т.е. компаниях, функционирование которых подчиняется вышеупомянутому закону. Иногда считают, что закон Паркинсона - шутка, типа закона Мерфи или закона бутерброда. Вот, Wikipedia так и говорит. Или путают его с одноименной болезнью. Когда-то это имя было вполне известно, но в последнее время я упоминаю его в разговорах и народ не слышал. Не хотят люди анализировать общество, скользкая тема. Так вот, это не шутка и не юмористическое наблюдение. Это именно закон, который работает точно так же, как и другие законы, скажем идеального газа, единственное отличие, что в качестве молекул выступают люди, наделённые свободой воли, а потому они делают газ не столь идеальным. Но в среднем, всё равно, один человек редко может изменить поведение сложной системы, а потому закон работает. Фактически, в обществе тоже есть силы и, мы, материальные точки им подчиняемся и двигаемся соответственно. Большая компания - это именно компания, где индивидуальные траектории уже формируют статистическое поведение и, как правило, если нет сильных внешних сил противодействия, закон Паркинсона вполне работает. Так вот, именно поэтому софт и заполняет весь доступный объём, и все прочие ресурсы. Он просто растёт до тех пор, пока не начинает встречать внешнее давление, направленное на его уменьшение. И давление это начитается где-то на уровне "стало работать хуже чем раньше". А растёт софт изначально потому, что писать новый код проще, чем рефакторить старый. И не только проще, но и спокойнее, меньше вероятность сломать. Вот он и растет пока давления изнутри и снаружи не сравняются, что почти в точности компенсирует закон Мура.

2008-04-15

TGMLC = The Great Moore's Law Compensator

Взято отсюда. Картинка говорит сама за себя. Раньше софт работал быстрее - это не иллюзия, это так и есть на самом деле.

2008-04-10

Прошлогодний кампинг на Sunrise Point.

Продолжаю разгребать прошлогодние фотки. Это июльские, когда мы "кампились" на Sunrise Point, Mount Rainier. Всего фотографий было сделано очень много. Запомнилось: мармоты, был даже один детёныш, они почти не боялись и вовсю позировали перед камерами; шикарные белые грибы, которых было очень много, мы их даже пытались сушить на костре; изумительные пейзажи и необычные, огромные масштабы; гора просто гигантская, это не описать, это надо видеть; дождь в последнюю ночь, когда я проснулся и обнаружил, что в палатке кругом вода, я на коврике, а вокруг меня плавают разные вещи. Было хорошо. Все хотим снова туда. Надо будет купить солнечную батарею, фотоаппарат заряжать. Думаю, за ночь зарядится.

Пишут же люди операционные системы...

Contiki is an open source, highly portable, multi-tasking operating system for networked memory-constrained networked embedded systems. A typical Contiki configuration is 2 kilobytes of RAM and 40 kilobytes of ROM. Contiki contains two communication stacks: uIP and Rime. uIP is a small RFC-compliant TCP/IP stack that makes it possible for Contiki to communicate over the Internet. Rime is a lightweight communication stack designed for low-power radios that provides a wide range of communication primitives and protocols, such as multi-hop data collection, multi-hop unicast mesh routing, and reliable multi-hop network flooding. Contiki consists of an event-driven kernel on top of which application programs are dynamically loaded and unloaded at runtime. Contiki processes use light-weight protothreads that provide a linear, thread-like programming style on top of the event-driven kernel. Contiki also supports per-process optional preemptive multi-threading, interprocess communication using message passing through events, as well as an optional GUI subsystem with either direct graphic support for locally connected terminals or networked virtual display with VNC or over Telnet. Contiki runs on a variety of platform ranging from embedded microcontrollers such as the MSP430 and the AVR to old homecomputers. Code footprint is on the order of kilobytes and memory usage can be configured to be as low as tens of bytes.

2008-04-08

Весна на Snoqualmie

Вот прошлогодние майские фотографии, сделанные на реке Snoqualmie. Я люблю это место. А заодно я начал немного править свой сайт уже порядком заброшенный. Вот, сделал slide-show. Нажать Show в правом верхнем углу. Проверял в FF2x и IE6. IE7 дома нет, завтра на работе проверю.

2008-04-05

Дикие черепахи

Вот такой зверь живет в местных озёрах. Сфотографировано в городе, недалеко от места, где мы живём. Черепаху можно увидеть на том же бревне в любой солнечный день.
Posted by Picasa

2008-04-04

Перевернул зеркало.

Это сообщение написано в блоггере. Я извиняюсь за тестовые сообщения. Кажется, сейчас всё работает.

2008-04-02

Блог в зеркале

Доделал скрипт синхронизации. Блог будет жить параллельно по всем трём адресам: vtolkov.livejournal.com, vtolkov.blogspot.com, и как часть tolkov.com. Коменты, очевидно не копируются. Сейчас основной блог остаётся в LJ, а уже оттуда расползается по остальным местам. Со временем я это переделаю и основной блог будет не в LJ, но читателей это волновать не должно.

Что мне не очень нравится в LJ, это то, что это не совсем блог, это социальная сеть. Потому там всё заточено на общение, а не на тексты. Опять же, чтобы оставить комент, нужно регистрироваться, логиниться и т.д. Да и дизайн весь какой-то социальный. И всякие рейтинги, "друзья", обсуждения, и пр. Я никогда не принадлежал к никакой тусовке и не переношу никаких рейтингов. Желание уйти из злачного места появляется сразу после просмотра блогов рейтинговых "лидеров" на первой странице. Я туда раньше не заглядывал и правильно делал.

2008-03-31

Опять хакнули баш.

Какие-то национал-лингвисты загнали в цитаты список правил русского языка. Update: это была их первоапрельская шутка. Дурак, ты боцман...

2008-03-28

vtolkov @ 2008-03-28T22:46:00

Пока буду жить и здесь и там.

Переползание в blogger.

Собираюсь переползти в blogger. Вопрос - будут ли те, кто читает меня здесь, читать в блоггере?

Unicode

http://www.codinghorror.com/blog/archives/001084.html Я тоже! :-) В своём домашнем С++ проекте я поменял Unicode (а точнее widechar) на UTF-8. Не нарадуюсь. Весь код стал проще. И никаких TCHAR или wchar_t, обычные char. Никаких макросов _T. Разбор текстового файла, который тоже в UTF-8, ускорился на порядок. Разбор файла в Windows-1251 ускорился существенно, раза в 3, поскольку большая часть разделителей - ASCII. Уменьшилось количество отъедаемой памяти. Уменьшился размер кода, поскольку 16-битовые операции в 32-битовом коде требуют специального префикса, а 8-битовые - не требуют. Единственное неудобство, что все вызовы функций Windows делаются через специальные wrapper-ы. Но это даже хорошо. При необходимости будет легче адаптировать код под Linux. Я все обращения к функциям ОС вынес в отдельный namespace. Более того, я include заключил в namespace, чего его авторы, видимо, не ожидали. А вот так! Добро пожаловать за окошко с решёткой! И я не стал объявлять его using. Только явно, Win::CreateFileW.

2008-03-26

BIOS Hypervisor

Хотел написать про свою идею поместить Hypervisor в BIOS, так, чтобы можно было загружать одновременно пару ОС, а пока они грузятся, лазить в интернете используя маленькую встроенную машинку с браузером, но без доступа к диску. Но набрал в гугле subj и понял, что опоздал. http://www.google.com/search?hl=en&q=bios+hypervisor http://tkjunkmail.blogspot.com/2007/11/phoenix-technologies-to-release.html http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1281741,00.html

2008-03-25

Смена лампочки в Микрософте

Оригинал в http://www.codinghorror.com/blog/
Слегка сокращённо. Я не знаю, как перевести некоторые термины, оставив их на английском.

Этот классический пост Эрика Липперта описывает, со всей мучительной детальностью, какая в точности нужна работа, чтобы добавить одну функцию ChangeLightBulbWindowHandleEx в Микрософтовский код:

# Один девелопер потратил пять минут на написание ChangeLightBulbWindowHandleEx.
# Один программ-менеджер написал спецификацию.
# Один эксперт по локализации проверил спецификацию на возможные проблемы локализации.
# Один эксперт по usability проверил спецификацию на возможные проблемы с usability и accessibility.
# Как минимум один девелопер, один тестер и один ПМ провели "мозговой штурм" по поводу возможных проблем с безопасностью.
# Один ПМ добавил модель безопасности к спецификации.
# Один тестер написал план тестирования.
# Один тест-лид включил его в график-тестирования.
# Один тестер написал тесты и добавил их в ночной автоматический тестовый прогон.
# Три или четыре тестера поучаствовали в "ad hoc bug bash" (поковырялись на предмет багов).
# Один технический писатель написал документацию.
# Один технический корректор вычитал документацию.
# Один технический редактор проверил документацию.
# Один менеджер документации добавил новую документацию в существующую систему, обновив таблицу содержания и поисковые индексы.
# Двадцать пять переводчиков перевели документацию на все поддерживаемые языки. Менеджеры переводчиков живут в Ирландии (для европейских языков) и в Японии (для азиатских языков), сдвинутые по времени относительно Редмонда, потому это не простая логистическая проблема.
# Команда старших менеджеров координирует все эти усилия, оплачивает работу и обосновывает расходы перед вице-президентом.

...

Кто же всё это делает для Open Source? Ответ, согласно комментарию Raymond Chen, это "никто", что говорит о вопиющей непрофессиональности и некачественности ОС софта.

Моё (codinghorror) откровенное мнение: "А вам всё это нужно, чтобы быть успешным?".

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

Зачем всё это нужно мне? Ради одного последнего пункта, "оплачивает работу и обосновывает расходы". Это то главное, чего мне очень не хватает в Open Source.

2008-03-23

Стерео

Давненько я не снимал стерео. Снято мыльницей вчера на велодорожке около Carnation. Как всегда, первая пара вдаль, вторая и третья - с перекрещиванием.

2008-03-21

Из блога в блог перелетая

Копирует блоги. Из одной системы в другую. Если собрались перебираться из LJ в blogspot или wordpress, то запросто. Комменты не копируются, естественно. http://linuxlore.blogspot.com/search/label/blog2blog

2008-03-19

Кто-нибудь хочет в Microsoft?

В конце мая ожидается поездка рекрутеров в Москву. Читайте дальше в блоге у Эльдара. Я тоже когда-то совершил сей героический поступок. Почти по Жванецкому. "Теперь он программистом в Редмонде. Жалеет страшно."

Вперед, в XXI век

Недавно посетил некую выставку неких "передовых разработок". Удивило, обилие заголовков с термином "XXI век". Типа, "Методы генерации булшита XXI века" или "Разработка булшита в корпоративной среде XXI века" и т.д. Главное, чтобы были всякие слова типа "collaboration" или "corporate environment", но не просто, а XXI века. Я уж и забыл, что недавно век начался. Практически всегда, когда используют такое словосочетание, вам хотят что-то продать. Вам в новом веке нужна новая машина, новый дом, новый компьютер с новой системой, не отставайте от времени! С временем надо шагать в ногу! Корпорациям в новом веке тоже нужно всё новое, особенно новые способы ведения бизнеса! Нельзя же по старинке писать legacy code! Китайские товарищи с вышеупомянутой выставки поняли, как надо продавать разработки. Нам так однажды, в 2000 году, продали нового президента, которого перед этим те же люди лихо всучили Борис Николаевичу. С теми же самыми словами, несмотря на то, что век начинался в 2001. Короче, все эти веяния времени - булшит, и так его и надо понимать. Ног у времени нет, отстать от него нельзя. Можно отстать от моды, ну и хрен с ней. Мода придумана в точности для того же самого - продать человеку то, что ему не нужно. Навеяно дискуссией про C#. Если есть практическая проблема, где C# её решает не внося других проблем, нормально, можно использовать. Если есть мысль, что C# сейчас можно продать - вперед. Но переписывать С++ код на С# только потому, что это "веление времени" - увольте. Это булшит.

2008-03-18

Vista vs XP

From "Australia PC World": http://www.pcworld.idg.com.au/index.php/id;1155325152;fp;2;fpid;2;pf;1 Я, в принципе, согласен. Я тоже планирую пропустить сей апгрейд и дома, и на работе. А если заставят, пересяду на 2008 сервер.

2008-03-17

Суп из рекламы

Вот о чём сыр-бор: http://brad.livejournal.com/2368071.html?page=7&style=mine#comments Они думают, что всё побегут деньги платить? Побегут, конечно, но не платить. Я им пишу, я ещё и платить? Знакомый случай. Если деньги - единственная ценность, то предмет считается бессмысленным, пока не приносит дохода. Если дерево не даёт плодов, его надо срубить и продать на дрова. А если огород без его тени засохнет, ну и хрен с ним. Заасфальтируем и сделаем автостоянку, забот меньше, поливать не надо. Куда весь народ двигает? В блоггер?

2008-03-14

Power Pain Point

Никогда не любил микрософтовский офис. Как надо что-нибудь сделать, так начинается борьба бобра с ослом. Стараюсь им не пользоваться. Хотя, ради правды надо сказать, что открытый офис ещё хуже, и опыт подготовки презентации в нем в этом году вызвал ещё большие танцы с бубном. Но это другая история. Детям надо делать уроки, так что пришлось прикупить микрософтовскую коробочку 2007 Student Edition. Оказалось, что лицензия позволяет поставить его на три компьютера. Очень удобно. Поставил на два. Дочке задали сделать опыт с плавающими по воде булавками и сделать презентацию. Она села и очень быстро набросала презентацию с картинками и одним коротким видео-клипом. Usability, подумал я. Дальше позвали меня, чтобы я записал всё на USB. Тривиально, конечно. Но я учёный. Когда я увидел объём файла, понял, что видео там нет. Исследование показало, что картинки есть, а видео закодировано полным путём на домашний сетевой диск. Ни слова не сказал Point, сделал всё молча и глупо, как накрашенная дура-секретарша. Недолгий поиск не нашёл никаких следов операции включающей клип в презентацию, как и никаких следов упоминания, что его там не будет. Сохранение в разных форматах не помогло. Попытка включить руками путём ковыряния в zip-файле и xml тоже не удалась. Видео из zip не играется. Сделать полный путь на USB, который будет правилен на любом компьютере в Windows тоже нельзя. Короче, записал видео отдельным файлом и сказал дочке, чтобы запускала руками. Что удивительно, 2008 год на дворе, более чем десять лет развития офиса. Но тривиальная презентация 10-летнего ребёнка вызывает непреодолимые технические трудности.

2008-03-11

Yahоо

Не понимаю я цели сего поглощения. Технологически Yahoo со своими юниксовыми технологиями в микрософтовский пейзаж никак не вписывается, и очевидно его долго будут переписывать на Windows и .NET. Практически все сервисы в том или ином виде у Микрософта сделаны свои и, очевидно, что-то придётся в очередной раз выкинуть, вероятно опять Live. Ну не для того же приобретают компанию за такие деньги, чтобы выкинуть их технологии! Хотя всего можно ждать. Купить для уничтожения конкурента тоже странно. Далеко не очевидно, что клиенты все переедут в Live, с тем же успехом они уйдут в Гугл. Скорее всего покупается клиентская база и доля в рекламном рынке. Но, сдаётся мне, ниша Yahoo существует именно как третья сторона, это и не Гугл, и не Микрософт, это наше привычное небольшое Yahoo. Как только начнётся переделка Yahoo в Live, так народ и побежит.

2008-03-06

Я - Штирлиц

Резидентный перманент.

Неинтересные интересы

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

2008-03-04

Тишина

Очень умиротворяюще. Откуда это? Кто автор?

2008-03-03

Ужас

 

Выборные игры

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

Инн-овации

Есть два типичных противоположных мнения о пользователях, которые, как соглашаются обе стороны, являются непременно носителями отрицательных качеств. Одни считают, что пользователям нужно "latest and greatest", что они спят и видят, как бы поставить последнюю бета-версию и тащиться от всяких новых фенечек, которых чем больше, тем лучше. Другие считают, что пользователи, наоборот, очень консервативны и всё новое воспринимают в штыки, предпочитая довольствоваться старым и привычным. Вот и Висту не хотят ставить, а раньше эти враги прогресса точно так же не хотели ставить XP. Но вот странно, висту не хотят, а айфоны не только хотят, но даже тратят кучу денег, разлочивают, подключают к другим провайдерам, теряя при этом кучу функциональности. Подростки, говорите? А стало быть виндой пользуются только бабушки? Всё просто. Есть качество, а есть количество. Если вы начинаете набирать инновации количеством, думая, чего бы ещё такого засунуть в систему, то получите висту, где куча не особенно полезных инноваций дорого оплачивается пользователем, вынужденным покупать новый компьютер, менять свои привычки и переставшие работать программы. Либо вы придумываете нечто новое, которое невелико, но удобно, красиво и работает как часы (и не только как часы, спасибо за каламбур). Я покрутил ай-яй-фон в яблочном магазине, и меня поразило, как всё сделано просто, удобно и комфортно. Кстати, одно из самых замечательных свойств iPhohe, моё любимое, то, что его можно не покупать! В отличие от.

2008-02-12

Незаметный Подкрад

Ну наконец-то сформулировано то, что давно надо было сформулировать. Я это называл для себя "приватизацией интелектуальной сферы", но в этом была лишь часть понимания, "виртуальный продукт" - это точнее и глубже. Читателям также будет любопытно узнать, что беспредел собственности на цифровой продукт - знамение всего лишь последних двух десятилетий, предопределенное массовой миграцией американской экономики из сферы материального производства в сферу виртуального продукта, камуфляжно обозначенного как "интеллектуальный". Скажу больше: единственное назначение Всемирной торговой организации (ВТО) в том виде, как она оформилась после подписания второй редакции ГАТТ (Генерального соглашения по тарифам и торговле) в 1994 году, - это обеспечение механизма эффективного принуждения стран третьего мира (России - в их числе) к оплате американского и западно-европейского виртуального продукта. http://russ.ru/lyudi/glossa_3_nezametnyj_podkrad Другие "Глоссы" тоже рекомендую.

2008-02-11

Московский цирк

... приехал в нашу деревню. Они выступают три дня в Kirkland Performance Center. Очень понравилось! Молодцы, ребята! Всё чётко, профессионально, весело и красиво. И музыкальное сопровождение замечательное, живое, играло трио с балалайкой, баяном и чем-то типа гуслей и всякими флейтами, но при этом как-то необычно, не заезжено и даже современно.

2008-01-29

Бред

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

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

2008-01-07

Народ обиделся

Предыдущий пост закрыт на всякий случай. Кто-то запостил ссылку во внутреннюю рассылку, и началось. Была бы GC, не закрыл бы. Надо всё таки искать другую работу.

2008-01-05

Про выборы

http://rezkiy.livejournal.com/29932.html Не голосуйте за тех, не голосуйте за этих. Ну и за кого голосовать? А не за кого. Никто не выражает моих интересов. Да и вообще никто никаких интересов не выражает, кроме своих собственных. В этом первая проблема. Вторая проблема та, что я со своими интересами в явном меньшинстве. Третья проблема в том, что большая часть электората никаких интересов и не осознает, а потому управляема и выберет того, кого надо. А четвертая проблема в том, что сам демократический процесс мало кому нужен. Ни носителям избирательного права, ни бизнесу, ни партиям. Всех устраивает "соборность", т.е. договориться приватно, по понятиям, и затем проиграть спектакль для публики и зарубежных держав. В принципе, призыв госовать ногами - проект призваный уменьшить количество голосов против. Вполне в духе "управляемой оппозиции", которая тоже собирает нишевые голоса, а потом выгодно их продает власти. Ход вполне грамотно придуман. В наших условиях очень даже может прокатить. И как бы против и идти никуда не надо, и даже "я выше всего этого". Вполне в интеллигентском духе. Ещё можно голосовать не ногами, а самолётами и чемоданами. Ну и что будет в другом месте? Всё то же самое.

2008-01-01

Та самая Татьяна?

Совсем недавно мы с детьми гуляли целый день по зоопарку Сан-Франциско. Были удивлены дружелюбностью животных. А ещё там предлагали провести ночь в палатке в зоопарке.

2oo∞

Вы будете смеяться, но новый год, таки да, дошёл даже до нас!

2007-12-29

Экслер и фильмы

Уже не первый пишет "я давно не читаю Экслера". А я иногда читаю его рецензии. Мне нравятся его критерии и то, что он подробно и предметно объясняет своё мнение (это вообще редкость). Обычно, если он пишет, что фильм - дерьмо, то так оно и есть. Не знаю обратных примеров. С другой стороны, если он пишет, что фильм понравился, то это совсем не значит, что и мне он понравится. Чаще всего почитав рецензию я решаю, что не буду смотреть, поскольку это не моё. Например, терпеть не могу криминальные драмы. Очевидно, что я в результате смотрю меньше фильмов, чем Экслер. Он любит кино, а я - не очень. Потому мне забавно читать, как он разбирает какой нибудь дурацкий фильм. Пять минут чтения и я получил от этого фильма удовольствие. А мог бы мучиться полтора часа.

2007-12-27

Математика

Интересные проекты делаются в университетах. Завидки берут. http://www.sagemath.org/

Демократы в России

Из блога Бориса Немцова :

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

Звучит угрожающе! Хотя позже он уже пообещал сделать себе хакамаду. А я уж было надеялся на необычные дебаты.

Outlook & Lookout.

Надо попробовать: http://www.joelonsoftware.com/items/2007/12/24.html

2007-12-25

Год спустя

Просматривая мои прошлогодние итоги года замечаю, что, наметившиеся тенденции усилились, но событий не произошло. Субъективно не воспринимаю прошедший год, как приятный, хотя ничего неприятного в нём , казалось бы, тоже не произошло. Наверное нереализованные ожидания и характеризуют прошедший год. Итак снова по тем же пунктам. Первый раз в жизни: 1. Даже и не знаю, что сказать. Побывал в Сан Франциско? 2. Начал считать съеденный холестерин? Пора заводить тему "последний раз в жизни". Разочарования года: 1. Всё ещё не получил green card. Это уже не просто первое место в категории, а такое, что остальные можно уже не присуждать. Терпение иссякло. После нового года буду судиться с правительством Соединённых Штатов! А всё дело то, наверное, в Комсомоле. Всегда их терпеть не мог, так и здесь они меня достали, сволочи! 2. Работодатель надоел как больной зуб. Хотя, я в этом году поменял группу. Теперь не надо непрерывно ходить на дурацкие митинги, непрерывно переинсталлировать поломанный билд, ковыряться в .NET и заниматься прочими бессмысленными вещами. Сиди и пиши нормальный native code на нормальном (почти) C++. Но что-то не очень радостно. Скучно. Возникает чувство полной чужеродности, типа, как сидеть на стадионе, наблюдая игру, правил которой не понимаешь. Люди кричат, болеют, переживают за разные команды, а ты сидишь как дурак, совершенно безразличный к обеим командам, и не понимаешь, зачем ты здесь. 3. В результате, вдруг надоел даже дождь за окном и появилось желание снова куда нибудь уехать. Хочется нормального лета и нормальной зимы. Может, податься в Канаду? Компьютерные программы остались за порогом номинации. Да и программы всё те же и всё там же. Как, впрочем, и политики. Приятная ожиданность: 1. Сын поступил в университет (UW) не заканчивая High School. Без GC - единственный доступный вариант. 2. Отсутствие неприятных неожиданностей - самая приятная ожиданность. Покупка года: Ничего особенного не покупал. Так, по мелочи. Приятная мелочь: В номинации мелкой "приятной неожиданности", победил Nokia N800. Он теперь почти как тот компьютер, о котором мечтал в детстве. Хотя софт мог бы быть лучше. Я таскаю его везде. Завтракаю, читаю свежие RSS. Беру с собой в леса и горы, чтобы знать где нахожусь я, а где тропа. В кафе и в гостинице можно читать свежую почту. В машине можно включить навигацию голосом, а так же развлекать детей фильмами или всех вместе аудио-книжками. Вечером перед сном можно читать с экрана свежескачанную книжку. То же в очереди или в самолёте. Короче компьютерный "швейцарский нож", полезный, в отличие от своего сувенирного прототипа. Пожелание года: В жизни нужны надежды и перспективы. Не надо ждать событий, которые вы хотите произойти. Подталкивайте их, делайте их сами. И будьте здоровы, и Вы и Ваши близкие! И себе желаю того же.

2007-12-17

Free as in "free cheese".

Лицензия GPL определяет себя как "свободную". По английски свободный и бесплатный обозначаются одним словом, поэтому различие: ... you should think of free as in free speech, not as in free beer. Я бы не определил лицензию GPL, как свободную. Лицензия - это ограничение по определению. Она ограничивает вас в том, что вы можете делать с кодом. GPL v3, например запрещает использовать GPLv3 код для создания DRM, запрещает защищать код от модификации, запрещает использование проприетарных компонент, и т.д. GPLv2 в основном запрещает закрывать код или встраивать GPL код в проприетарный. Фактически обе лицензии запрещают смешивать GPL и не GPL коды. Как хотите, но это не "свобода". Это "free as in free cheese". Попытки использовать код практически, на работе, приводят к mouse trap. Современный код состоит из компонентов. В результате, многие фирмы запрещают сотрудникам не только использовать GPL код, но даже и читать его. BSD лицензия мне нравится больше. Она не навязывает то, как код будет использоваться. Всё, что требуется, это отметить оригинальное авторство, что вполне логично с точки зрения обычной этики. Жаль, что так много народу повелось на GPL, фактически закрыв свою работу для возможного практического коммерческого использования.

Тюрьма Азкабан

Alcatraz Island. Магическая тюрьма из "Гарри Поттера". Совпадает по описанию и название похожее. Знаете где это?

2007-12-12

Anyone can hack.

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

Как пользователь начинает работать с программой? Читает мануал? Нет. Он её запускает и смотрит. Дальше происходит примерно такой мысленный монолог:
... Так, тут обычное меню File с пунктами Open и New. Нажмем New.
... Ага, текстовый курсор, можно печатать. И тулбар с Bold/Italic, значит текст с атрибутами.
... Печатаю, строчка сама переносится, значит редактор не строчный, а по параграфам.
... Ага, выделеный текст можно сделать Bold, а ещё раз нажать и снова обычный.
... Снова нажал New, он спросил сохранять или нет. Значит New не открывает нового окна или закладки, а просто заменяет в том же окне.
И т.д.

Это обычный reverse engineering. Метод "научного тыка". Пользователь играется с приложением и строит у себя в сознании модель того, как эта программа работает. Причем это делает не какой нибудь крутой спец, а каждый рядовой пользователь! Часто это делается интуитивно и неосознанно. Человек даже не помнит как оно работает, но при изменении ощущает, что программа "стала работать как-то не так".

Всё это очевидно? Казалось бы очевидно, но не всем. Почему-то фразу "пользовательская логическая модель" часто воспринимается в штыки. Такая модель должна быть продумана заранее, включая терминологию, в которой и надо делать интерфейс и документацию. Эта модель должна быть проста, логична, полна и, по возможности, состоять из ортогонального набора функций. И она обязательно должна быть discoverable. Иначе будет не программа, а набор хитро запрятаных "пасхальных яиц". Никто ваш длинный readme и FAQ читать не будет, даже если его набрать с capslock.

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

P.S. Название поймёт тот, кто смотрел Ratatouille.

2007-12-01

Есть такая партия, в шахматы

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

Есть "партия власти", которая по определению одна и которая олицетворяет путь на "сохранение завоеваний последних лет" в очередной холодной войне. Суверенитет как высшая ценность. Вероятно, она и соберёт большинство реально. Просто потому, что все остальные - партии нишевые.

Взять, к примеру, коммунистов, ЛДПР и, вероятно, Яблоко. Это партии, которые имеют шанс получить голоса определённой ниши избирателей, пройти на них в парламент (Яблоко - сомнительно), и договориться с партией власти, выторговывая себе определённые уступки. Это как компании-сайты продаются Гуглу или Микрософту за большие деньги, ибо имеют большую "пользовательскую базу", и реально за эти деньги продаются "души пользователей". Так и здесь: "голоса избирателей". Это нормально, в принципе, в политике, люди будут работать в парламенте, влиять на принимаемые законы, и т.д. и т.п.

Я бы поставил отдельно СПС сейчас, которая заявляет о том, что не будет договариваться. Вероятно именно поэтому такие нападки властей именно на неё. Фактически только СПС сейчас заявляет о реальном альтернативном пути развития. Это типичная партия западничества. Т.е. "открытая экономика", интеграция в Европу, Нато и т.д. Ну, да, и конечно, "распродажа земли и ресурсов", приватизация госкорпораций, и т.д. За ней должны бы стоять интересы международного капитала, но похоже не стоят или стоят не очень, вероятно, не надеясь на успех и предпочитая работать с существующей властью. СПС выглядит слишком радикально со своей непримиримостью.

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

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

Есть ещё всякие "Истинные Патриоты Матери-Отчизны" с какими-то совсем непонятными нишами.

2007-11-23

The Collapse of the Middle Class

Включаю телевизор, а там лекция такая динамичная и увлекательная. По унивеситетскому каналу. О крахе среднего класса в США. Сравниваются статистические данные за 1973 и 2003 годы. За тридцать лет, америка поменялась радикально. "Средний класс" вместо сбережений имеет теперь в основном долги. Сравнивается типичная семья, двое родителей и двое детей. Раньше, в основном, один родитель не работал. Теперь работают оба. Но денег, за вычетом фиксированных расходов (кредит за дом, страховки, счета, оплата childcare), теперь остаётся меньше в абсолютном выражении. И никаких резервов в случае потери работы или проблем со здоровьем! Да, очень похоже. Даже за те семь лет, что я здесь, заметны негативные изменения. Ухудшился трафик и сильно выросли цены на жильё. Мне, конечно, скажут, что в России с жильём ещё хуже... Но эта лекция была не про Россию. Это про США. Тут свои проблемы. Если интересны подробности, наберите заголовок в Гугле.

2007-11-21

MPlayer

Наконец-то появился нормальный видео-плейер. Играет почти все возможные форматы, например FLV. Свободный. С исходными текстами. С мощной командной строкой, которая позволяет делать всевозможные преобразования. Многоплатформенный. Без назойливой рекламы, бессмысленных "защит" и ненужных "альбомов". Просто плейер, который играет. Есть версия для Windows, Linux, и для моей Nokia N800. Причем на последней он играет несравненно лучше родного плейера. Последний год я замечаю постоянно, что свободный софт, будучи найден, обычно превосходит качеством и удобством софт коммерческий. Очередное тому подтверждение.

2007-11-14

Шок капитализма

Недавно, а именно в 90-летие ВОСР, ехал я по ночному хайвею и от скуки перебирал fm-каналы. Везде был какой-то тоскливый музон, то стенож, то пилёж, и вдруг я услышал некий осмысленный текст, не рекламый, типа "just ninety-nine ninety-nine" и не "support comes from you and blah-blah-blah foundation...", а содержательный, с ощущением интеллекта, что само по себе сразу навеяло на мысль о некоторой оппозиционности и альтернативности. Оказалось Alternative Radio (см. одноименный .org). И хотя финансирование у него всё равно "comes from you", но в тот вечер журналистка Naomi Klein с презентацией своей книги "The Shock Doctrine" приятно меня поразила. Я не ожидал этого здесь: оказывается есть люди, способные подвергнуть критике процесс Всемирной Либерально-Демократической Революции. Вообще-то журналистка не здесь, а в Канаде (а не поехать ли мне в Канаду?). Услышанный текст я пересказывать не буду. Но мне очень понравилось. Всё очень убедительно ещё и потому, что я своими глазами видел многое из описанного в процессе развала СССР. Только один пример. Window of opportunity. Недавнее цунами в Азии прошлось по мелким прибрежным рыбацким поселениям лишив их не только близких, но и средств промысла. Недавно избранное правительство позаботилось о них, поселив в лагеря для пострадавших, подальше от берега. И даже поставило вооружённую охрану, не подпуская к побережью. А затем быстро провело приватизацию побережья. Те, кто мог бы предъявить свои права сидели взаперти, оплакивая родных, а крупные туристические фирмы быстро всё поделили. И вот я о чём подумал. Нам часто говорят о преимуществах либеральной экономики. Но гипотеза либерализма не доказана. Совершенно не очевидно, что население выиграет, если освободить экономику и дать ей развиваться независимо и бесконтрольно. Мой опыт говорит, что скорее наоборот, поскольку цели населения и цели экономики не совпадают. И уж совершенно не понятно, как либеральная экономика связана с "демократией". Развитые демократии обычно формируются в результате долгой борьбы различных групп за свои права, формируя некий консенсус в противоречивых интересах сторон. Возникают всякие механизмы защиты бизнесов, потребителей, культуры, населения, и пр. Эти механизмы явно противоречат "свободной экономике" в её радикальном понимании, и они сидят как ком в горле у монополий, которым бы хотелось их отменить, но они не могут, ибо общественное мнение будет против. Чтобы отменить, нужны обстоятельства чрезвычайные, и если они произойдут вдруг (или будут организованы), это window of opportunity можно использовать, чтобы быстро перетянуть одеяло на свою сторону, пока все заняты внезапно нахлынувшей проблемой. Вот читал я программу наших "правых". Чем они правые? Проголосовал бы не будь они "правые". Нет, не верю я в либерализм. Это такой очередной традиционный развод лохов. Учёное слово, за которым скрывается экономический беспредел и деньги как высшая ценность. А вот что я не понял, это связан ли факт передачи с 90-летием ВОСР. Совпадение или нет? Update: совпадение. Вчера вечером они опять вещали. 94.9 fm, после восьми.

2007-11-12

Ratatouille

Мультик вышел на DVD. Я купил диск, мы с дочкой смотрели, нам очень понравилось. Потом с удивлением нашли в морозилке забытый пакет с тем же названием. Оказывается это такое французское овощное рагу. Летняя еда бедных фермеров, которая готовится из свежих овощей. Баклажан, помидоры, и прочая всячина жарятся в оливковом масле. Фильм приятно смотрится и очень приятное послевкусие. Хочется поесть чего нибудь вкусного, приготовленного с умением и любовью! Несбыточная мечта.

2007-11-05

OOPs - продолжение.

Начало: 1, 2, 3, 4.

Приведу один пример на "ядро" "объектной модели". Иногда подобную конструкцию называют "провайдером". Пример, конечно, дурацкий, но простой и для иллюстрации пойдёт.

Допустим мы делаем электронную таблицу, нечто вроде "экселя". Некий PM (или как они там ещё называются? системные аналитики?) написал спек, в котором раcписал "объектную модель". И написано там, что есть объект таблица, у него есть коллекция рядов, каждая из которых есть коллекция клеток, а уж клетка хранит одно значение, которое может быть константой или формулой.

Замечательно, сказали мы, и, не мудрствуя лукаво, написали как сказано. Всё просто и тривиально. После чего пришёл PM и сказал, что заказчик просит ещё коллекцию колонок, и каждая колонка - тоже коллекция клеток. Ну ладно, сказали мы и добавили. Хотя
это в нашей модели уже не так тривиально. После чего, заказчик захотел извлекать клетку прямо из таблицы используя две координаты. Тоже можно сделать. Сделали.

После чего заказчик сказал, что всё медленно и требует много пямяти. Таблица расходует слишком много пямяти на одну клетку, даже если там просто число. Поскольку число мы храним как величину типа "object" в объекте типа "cell", и указатель на него лежит в массивах внутри объекта "строка" и объекта "столбец". Ещё у нас в каждой клетке могут быть массивы указателей на зависимые клетки.

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

Во вторых множество указателей между объектами заставляют сборщик мусора Java или .NET делать сложную работу по маркировке этих указателей, при этом он ходит по всей этой памяти, проверяет все ссылки, короче вы поняли.

Только мы всё это зашипили, как новая беда. Новый PM, пришедший в вашу группу, взамен старого ушедшего с повышением, сказал, что мы должны перейти на интерфейсы вместо классов и потому мы сделаем новую версию "объектной модели", причём мы будем поддерживать обе сразу, смешано и одновременно: "Вот вам challenge проявить вашу technical excellence."

И как весь этот огород сделать? Очень просто. Надо сделать "провайдер". Или "ядро". Это внутренний объект. Про который не знает ни заказчик, ни PM. Который хранит состояние вашего реального объекта. А реальный объект у вас один - таблица. Всё остальное, все эти строки, столбцы и клетки - её составные части. Как клетки вашего организма - ваши составные части. То, что заказчик просит то извлечь клетку так, то сяк - показатель, что клетка - часть таблицы.

Ключевое слово здесь - "зависимость", "dependency". Клетки зависимы, а таблицы нет. Границы между данными надо проводить по направлениям с наименьшим зависимостями.

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

Псевдокод:

internal class TableDataProvider {
  ...
  public object get_value(int x,int y);
  public void put_value(int x,int y,object value);
};

public class Table {
  private TableDataProvider data;
  public Row get_row(int y){ return new Row(data,y); }
  public Column get_column(int x){ return new Column(data,x); }
  public Cell get_cell(int x,int y){ return new Cell(data,x,y); }
};

public class Row {
  private TableDataProvider data;
  private int row;
  internal Row(TableDataProvider d,int y){ data=d; row=y; }
  public object get_cell(int x){ return new Cell(data,x,row); }
};

public class Column {
  private TableDataProvider data;
  private int column;
  internal Column(TableDataProvider d,int x){ data=d; column=x; }
  public object get_cell(int y){ return new Cell(data,column,y); }
};

public class Cell {
  private TableDataProvider data;
  private int row;
  private int column;
  internal Cell(TableDataProvider d,int x,int y){ data=d; column=x; row=y; }
  public object get_value(){ return data.get_value(column,row); }
  public void put_value(object value){ data.put_value(column,row,value); }
};


Тривиально, не правда ли? Что в этом хорошего?
  1. Мы отделили пользовательский интерфейс от внутреннего. Теперь первый можно менять или сделать их несколько с разными версиями, работающие одновременно с теми же данными. И внутреннее представление можно менять и не трогать пользовательские интерфейсы.
  2. Все многочисленные объекты объектной модели создаются и существуют только пока они нужны пользовательскому коду и после этого уничтожаются. Они все будут эффективно собраны сборщиком мусора 0-го поколения.
  3. Явно видна и понятна стоимость решения. Хотите легкой в обучении и browseable объектной модели - вот её стоимость - несколько операторов new. Хотите эффективности? Давайте добавим get_value/put_value в объект table и немножко сэкономим.
  4. Все внутренние вычисления делаются внутри провайдера, пользовательские объекты тут вообще ни при чем.
  5. Возможны любые shortcut-ы, как вниз так и вверх. Например, можно добавить метод/свойство получающий объект "таблица" из любого объекта.
Как же мы храним данные внутри TableDataProvider? В массивах и хеш-таблицах. Желательно как value-type, без создания множества объектов, и без "boxing". Это уменьшит расходы памяти и упростит работу сборщика мусора. Можно создать специальные индексы для данных, и разместить данные в соответствии с "access patterns". А если ваша таблица будет настолько большой, что вы захотите запихнуть её в базу данных, переделайте провайдер и всё.

2007-11-04

Rainy Day

Тропа на гору Si в дождливое воскресенье.

2007-10-26

FAR - open source

С BSD-подобной лицензией! Я super-excited. Жду появления версий для линукса и для мака.

Иди в баню!

Праздник какой! Надо распечатать и на двери офиса повесить. Вообще, интересный блог: A Soviet Poster A Day. Рекомендую. На английском. Умно, интересно, без мозгопромывания, как это обычно бывает в таких случаях.

2007-10-24

Куда пропала Ximeta?

Оказывается они продались некоему "Klegg". Первый раз слышу это имя. Вот почему уже год ни сайт не обновлялся, ни продуктов не выпустили, из того что обещали. Жаль. Я ждал их винтов с гигабитным интерфейсом. Собирался даже сеть под это дело проапгрейдить. По скорости бы не было им конкурентов. Вот всегда так. Всё запатентовано, а кто-то купил и в унитаз спустил. Была фирма и нету.

2007-10-23

Выборы и политика

Уже не первый чел предлагает идти и голосовать за коммунистов. Типа партия "против всех". Поскольку не нравится то, что происходит. Вот моё мнение в нескольких пунктах, и это мнение может кому-то не понравиться до степени исключения меня из френдов. Я бы не сказал, что происходящее в России мне сильно не нравится. То, что я ожидал произойти, а именно: полный крах экономики, гражданская война, непрерывные перестрелки вокруг, голод и холод, распад на многочисленные княжества, контролируемые вооружёнными бандами, высадку десанта объединенных сил на ядерные объекты с целью их контроля и т.д., не произошло. Более того, даже уже и не похоже, что это как-то приблизилось, скорее отдалилось. То, что сейчас мне сильно не нравится в Российской жизни - это всё внутренние проблемы, например быстрая персональная автомобилизация в совершенно неприспособленной к этому городской среде - совершенно другого порядка проблема. Или, например, вечные проблемы, хамство, пьянство, воровство. Вопрос: почему я ждал, что всё будет столь плохо? Не знаю. Мне казалось, что всё к этому идёт. Наверное, я не очень хорош с прогнозами. Я примеряю на себя, но я отличаюсь, вероятно, от средне-российского гражданина. Но поднимая бокал в каждый новый год в течении примерно 10 лет до отъезда в штаты, я думал, что этот год был, наверное, последний мирный год. Я искренне не понимаю, почему не было гражданской войны. Все как-то тихо и спокойно перестроились и привыкли жить в новой системе. Итак, чья в этом заслуга? Может ничья. Может тех, кто споил возможных участников беспорядков. Вот муслимы не пьют... Может тех, кто занял народ "бизнесом", и с политических тем переключил на экономические. Может тех, кто не хотел катаклизмов. Тех, кто хотел жить здесь долго, спокойно и сытно. Той самой "партии власти". Явно уж не заслуга оппозиционных политиков, не журналистов и не интеллигенции, которым чем хуже, тем лучше. "Интеллигенция", к которой и сам, типа, принадлежу, в политическом смысле ведёт себя совершенно безответственно. Это люди глобальные, которым нужны открытые границы и глобальная экономика. Как только появляется возможность отъезда, исчезает страх перед возможными катаклизмами. Дальше можно готовить революцию из Лондона. Интеллигенция сотни лет борется с властью, выискивая слабые места и раскачивая государство. Чем хуже, тем лучше, тем важнее и весомее её протест. Если появляется умеренный реформатор, его надо уничтожить, как убили Александра Второго. Не может же интеллигенция начать сотрудничать с властью! Это предательство! Надо снести всё до основания, после чего и свалить с чистой совестью. Второй момент связан с Российским "антиамериканизмом". Честно говоря, живя в России я считал антиамериканизм нашим изобретением. Типа, мы придумали "вредную америку", чтобы скрыть собственное убожество. Боже, в какие глупости я только не верил! Ну, что, сказать? Полезно пожить в разных странах, чтобы понять, а не верить. Как в Америке относятся к России и русским? Смотря кто. Обычно никак, как мы, скажем, к Нигерии. Типа есть где-то какие-то дикие страны. С пренебрежительным снисхождением. Многие помнят, как их в школе учили прятаться под стол от советских атомных бомб. Уж какие могут быть в там учёные? Конечно, же из Германии всё вывезли. Власти, естественно, подходят, как это здесь принято, совершенно прагматически. Т.е. надо, во первых, как-то с выгодой использовать то, что там, в России, есть, а во вторых, надо как-то уменьшить её потенциальную опасность для себя, и т.д. и т.п. Это не ненависть, это прагматизм плюс превосходство. Ненависть, кстати, я встречал только у наших же эмигрантов. Некоторые уехавшие просто всё ненавидят скопом, вероятно, чтобы оправдать для себя отъезд. Какие-то мы все закомплексованные, всё нам надо оправдывать. А может эмоций не хватает в связи с отсутствием трамваев. Американец бы к психотерапевту пошёл, а этот сядет в интернете, ходит по российским же сайтам и "срёт в коментах". Уж эти наголосуют! Уж им то, точно, чем хуже, тем лучше. Уехав, я не чувствую права диктовать оставшимся как им жить. Хотя, я и никогда не формулировал, что "уезжаю отсюда" или "уезжаю навсегда". Я, как папаша Гека Финна, который считал, что не грех позаимствовать, если собираешься когда нибудь отдать. Я тоже может приеду обратно когда-нибудь. Так что я лучше вообще не пойду, чем плевать в урну, типа "вот вам, подавитесь". А то, что у партии в бумажке написано, "за что они выступают" - это фигня, реклама. Надо понять, кто эти люди и что у них за интересы. Не знаю. Во всяком случае ЕР - не шиза и не за "переделить".

Похожи, жрецы!

2007-10-20

Sammamish Valley

Катались с семейством на велосипедах.

2007-10-19

Халява.

Nokia предлагает файлить заявки. N810 будут продан за 99 евриков 500 разработчикам участвующим в конкурсе. Блогеры и активисты форумов так же могут попытать счастья. Жаль я не знаком с современными технологиями. Надо бы наверстать упущенное.

Убунта

Убунта новая вышла. Поставил. Upgrade качался ну очень долго. Результат - красиво и приятно. 2D эффекты приятнее, чем 3D, мне даже понравилось. Всё довольно гладко. Хотя Radeon-овский драйвер всё тот же, с теми же проблемами. Загоняет карточку в режим, откуда только перезагрузкой можно извлечь, но зато, если лишних кнопок не нажимать, то работает быстрее опенсорсного. Можно потихоньку переползать с винды. Моя цель - переползти до завершения поддержки XP. Вообще, есть опасение, что XP могут искуственно испортить последовательными апдейтами. Она сейчас конкурирует с вистой, и её достоинства - скорость и совместимость. Если напихать всяких дотнетов, забить память, замедлить, то потом переход на висту покажется ускорением.

2007-10-17

Nokia N810

Слухи ходили уже давно, а сегодня было официально объявлено о выходе N810. Фотографии здесь. Хотя, есть и на сайте Nokia.
Это следующая версия моей N800. Из нового там встроенный GPS, более быстрый процессор, клавиатура, вся немножко меньше. С новой версии операционки, которая, впрочем будет доступна и для N800. Обещана поддержка передачи звука через bluetooth.
Менять, вероятно, не буду. Не люблю выдвижные клавиатуры. Да и вообще, дизайн мне у N800 нравится больше.

2007-10-16

Высокий штиль

Известно, что чем человек выше, тем косноязычнее. Сначала мы привыкли к нашим партийно-хозяйственным деятелям, которые этого-того сиськи-масиськи. Потом привыкли к другим, которые вещают непрерывно и безостановочно, но не менее бессмысленно. Но в Компании - то же самое. Что-либо содержательное может сказать только SDE или начинающий DevLead. Остальные будут выражать восхищение ходом проекта, в котором такие замечательные инновационные фичи. Более вышестоящие менеджеры непрерывно excited и super-excited. А совсем наверху должны бы уже задыхаться от непрерывных оргазмов. Я думаю, что менеджерам по секрету выдают специальную траву. Что-то они там делают на manager meetings. Или, может, акции пропитаны специальным составом. Молодежь, вот, без иммунитета, сразу проникается. Организм молодой, чувствительный, возбудимый. Восторги даже до LJ долетают. А мне - не судьба сделать карьеру. У меня на этот невидимый запах, вероятно, аллергия.

Осень

Eёё Моё.

Пока ещё не моеее. Вот такая штука. "Eee PC 4G". Хочу. Вместо почившего Palm Foleo. Хотя дизайн не тот, совсем не тот. Это просто маленький ноутбук. Так что даже и не очень хочу.

2007-10-15

Билл Гейтс и Нигерия

The Nigerian government initially denied the Microsoft kingpin's application on the premise that they required proof he would not reside in Nigeria indefinitely, causing a strain on social services and a general nuisance for immigration. http://gizmodo.com/gadgets/stupid/nigeria-asks-if-bill-gates-is-a-mooch-307889.php

2007-10-10

OOPs - продолжение.

Начало: 1, 2, 3.

Немного повторюсь про инкапсуляцию, поскольку это важно.

Значит, инкапсуляция. Чёрный ящик с защищённой внутренней структурой и внешними интерфейсами.  Но обычно ещё к ней же относят и локальность. Т.е. практически во всех языках объект - это некий указатель на компактную структуру данных, хранящюю состояние объекта. В принципе, в языках, где объект - это нечто неспецифицированное, это может быть не указатель, а более абстрактный handle, который может быть, например индексом во многих разных массивах. Но я такого не встречал. Чаще всего это указатель. Зачем это говорю? Cейчас подойдём.

Значит написали мы черный ящик. Мощный, удобный, защищенный. Один объект - всё замечательно работает. Два объекта, десять объектов. Сто тысяч одинаковых объектов. Начинаются проблемы. Во первых уже давно надо нам объект искать. Если десять можно было показать пользователю, для ста, тоже сойдет, колесико у мышки спасает ситуацию, то тысячу уже сложно. Надо искать по параметрам, которые у нас, наверное, выведены как свойства. Есть в программе массив объектов (или, скажем, дерево), давайте мне возможность запросов. Linq скажут гордые своей осведомленностью, молодые программисты. Sqlite, скажут пожав плечами бородатые одмины. Вам нужен SQL сервер, скажут системные интеграторы и такие же аналитики.

Можно добавить в объект интерфейс для запросов. Для тысячи будет работать. А когда подойдем к миллиону, то ещё один для построения индексов. И тут мы обнаружим, что всё работает медленно. Долго загружается, долго индексируется, долго ищется и занимает кучу памяти. Даже закрывается долго! Ещё мы обнаружим, что если всё распечатать в текстовый файл, открыть в Фаре и поискать, то всё и откроется мгновенно, и найдется быстрее. Как же так, мы использовали самые лучшие объектные технологии, а без них быстрее? Может, таки прав аналитик, и надо всё засунуть в базу?

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

С точки зрения объектной, объектом становится весь контейнер объектов, и индивидуальные объектики становятся не нужны. Начинаются всякие вырезки и наборы, методы, работающие с вырезками и т.д. Произошла векторизация API.

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

Третья проблема - locks. Замки. Это вообще отдельная долгая история, которой касаться сейчас не буду. Просто разные поля часто требуют разных локов, но, при этом, защищены должны быть несколько объектов, или даже весь контейнер.

Короче мораль: много объектов - тоже объект. Неправильно! Не "тоже"! Только! Или никто не объект. А данные.

Объект - это его состояние. Его надо хорошо продумать и нормализовать. Удалить лишние состояния, особенно всякие "недоделанные". Атомарно создать, сразу "готовый". Сделать методы модифицирующие состояние, по возможности атомарно с нужным количеством параметров. И не надо всяких лишних объектных моделей и "свойств". Сделайте ядро с данными и потом, по просьбе трудящихся, можно навесить столько объектных моделей, сколько надо (а надо будет несколько, с разными версиями API...). Навесить снаружи. Не надо размазывать данные по объектной модели. Вы потом их не найдете и не соберёте. Тогда контейнерный объект сделается изменением этого ядра. Его можно будет перевести на SQL. И т.д.

Да... Скомкано и непонятно. Долгая история. Хотел коротко объяснить, но нет, не получается. Тут каждый довод можно объяснять, целая книжка получится.

2007-10-03

Одичал

Посмотрел фотки Нью-Йорка и понял, что совсем одичал. Не хочу в город. Вообще, ни в какой. Раньше поехать посмотреть мир означало бы для меня "города и страны". А сейчас только природу означает. Хочется посмотреть большой каньон, секвойи, Австралию, и т.д. А города с даунтаунами совсем не хочется. Я даже в Сиэтл езжу только по делам и сразу обратно. А в выходные - в леса и горы. Мы, мармоты, не любим толкучки и машин.

Разное

1. Да, спутник! Всегда завидую людям, которые делали что-то первыми, причем делали такое! Всё нижеперечисленное тоже работа, но как-то мелко. По совести надо было бы мне этим первым пунктом и ограничиться.
2. Все радуются открытию .NET-овских библиотек. Как говорится, с чем вас всех и поздравляем. Полезно, нет слов. Но в Гугле это никогда не нарисуют. Нет, это совсем не спутник.
3. Joost - мелочь, но интересно.
4. Новый Windows Blinds - работает поверх Висты. Упоминаю потому, что Вистовый Гуй не переношу. А с железями можно всё настроить. Кстати, если есть любители Висты, то наоборот тоже работает. Можно сделать всё размыто и полупрозрачно. Утверждается, что на хорошей карточке XP+WB быстрее, чем Виста.