2010-06-28

Дерево

Виртуализация как ритуал погребения

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

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

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

Что касается заголовка, это про другое. Виртуализация машины часто становится ритуалом её погребения. Жалко просто выкинуть машину. Там программы, данные. Вдруг понадобится? Лучше преобразовать её в виртуальную и записать образ в архив. Всегда будет можно запустить, если что, пообщаться с умершей. Недавно нашёл у себя на винчестере одну такую урну с дампом, озаглавленную "Windows 98 WM". Не смог запустить, и стёр. Умерла, так умерла. В связи с чем подумал, что виртуальность - это не жизнь. Во всех смыслах.

2010-06-05

Черепахи


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

2010-06-03

Секрет неуспеха

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

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

Есть силы специфичные для компании. Например способ разработки, платформа, методы управления персоналом. Например, немалое количество фич windows, вызывающее удивление своим присутствием в операционной системе легко объясняется если понять, что добавление в windows есть хороший способ повышения карьерных параметров scope of influence и customer impact. Это один из способов достигнуть уровня "партнера" с шестисемизначными годовыми доходами. В системе, где основой всего является карьера, scenario driven, customer driven, quality driven автоматически заменяются на career driven. Любой рефакторинг - провальная штука в смысле карьеры. Никаких фич не добавил, сломал совместимость (а всегда что-то сломается), добавил багов. На этом заработают другие, которые воспользуются открывшимися новой архитектурой возможностями по добавлению своих фич. Я убеждён, что армейская карьерно-уровневая система не совместима с творческим трудом, которым программирование пока остаётся, вызывая неприятие и активное противодействие администраторов от программирования.

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

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

2010-06-02

Секрет успеха

Человек, в силу своей природы информационного животного, любит генерировать информационные структуры. Мифы, сказки, теории, гипотезы, слухи, пародии на них, пародии на пародии и так далее и тому подобное, заполняя всё доступное информационное пространство и создавая вавилонскую башню, называемую культурой. Хороводоводоведение.

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

- Мне бы календарик посмотреть...
- Сначала в домен войди! Забыл пароль? Забыл! Забыл! Забыл! И шифт отпусти, инвалид, уже 8 секунд держишь. И вайфай включи! И апдейты загрузи! И, кстати, акробат обнови. И реал плейер. И сигнатуры. И неру новую купи. И вообще, срочно перезагрузи компьютер. Сам такой, не отстану.

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

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

Мне кажется, что одному Стиву Джобзу это как-то удается, а, скажем, Стив Балмер не только не пытается, но даже и не понимает зачем это надо. А в Линуксе это невозможно в принципе (кроме ядра, кстати). Потому и результаты настолько разителено разные.

И, кстати, именно поэтому Джобз против Flash, а вовсе не из за каких-то личных счётов, наличием которых люди обычно объясняют всё происходящее. Flash - просто дополнительный уровень абстракции. А Джобз должен быть против лишних уровней абстракции. Он в данном случае делает то, что всегда: держит защиту.

Пока только Apple сделал ставку на native code. Все остальные норовят залезть на пирамиду уровней, будь это Java, .Net или Javascript. Я и сам не прочь построить маленькую собственную башенку. Во только гложат меня сомнения: а надо ли?