When I find something interesting and new, I post it here - that's mostly programming, of course, not everything.

Friday, June 02, 2006

Taming The Wildcard Generics

Have you ever tried to work with List<? extends Number>? You get this list from some smart program, and then try to do something with this collection. Only to find out that you cannot add anything to it. Why cannot you? You open books, you look up on Google, you go to java.sun.com, and finally you figure out that it is not a “generics bug”, but a regular, normal behavior. Here is the reason why:

Suppose some method produced an ArrayList<Integer>, and returns it disguised as List<? extends Number> - there is nothing wrong with it. But then the receiver, knowing only that it is a List of something extending Number, tries to add a Number to the list, namely, a Double – can it be legal? Of course not, because the original container expects only Integers, You cannot legally do it – some other method still expects this to be a List of Integers.

When the code is executed, all the generics information is erased, so that this kind of checking is done during compilation time. And during compilation time there seems to be no way, in the code that receives List<? extends Number>, to figure out what is the actual type of elements inside. We just do not know; all we know is that if you extract an element, you will get a superclass of Number. That’s why it is impossible to allow to add anything at all to such a list.

Interesting, right? One can easily remove elements from such a collection, but cannot add anything. You are not allowed, for List<? extends T> list to do list.add(T t) – but it is okay to remove elements from the list. The same is true for a Collection<T>, for a Map<K,V>.

I had a slightly different problem to solve: having a collection of collections, produce a virtual collection that lists all the component collections.

What does it mean that the collection is virtual? It means that no collection object exists – it may be a view into some other collection, or a class that behaves as if it contains elements, while actually it does not. Take a look at Collections.synchronizedList() – it returns a synchronized (thread-safe) list backed by the specified list. No significant amount of additional memory is allocated when you wrap a list using this method; and if the original list changes, the synchronized list will change accordingly – and vice versa.

Note that this kind of wrapper does not in any way influence the objects contained in the list – they are the same objects; the changes are in the methods that we use to access them.


The Problem



So, this is what I wanted to accomplish: having a Collection<? extends Collection<? extends T>>, produce a virtual Collection<T> - a collection that would change when components are changing, from which we could remove elements and to which we could add elements.

The desired collection should contain all the elements from the component collections; I want to be able to remove the elements (meaning, they are removed from components); I want to find a way to add elements to my resulting collection.

Note that this is not a flat collection produced from a tree represented as a collection of collections of collections, etc. Flattening happens on just one level: we had a collection of collections of type T, and produce a collection of type T.

One more natural requirement is that, when I list the elements of the resulting collection, they will be listed in a natural order: first, elements of the first component are listed, as if we were scanning the component itself, then the second one, etc., till the last element of the last component.

The functional difference between an Iterable<T> and a Collection<T> is essentially that with a Collection one can get its size and add elements. Of course, to calculate the size of a compound collection one has to add up the sizes of its components. Yes, the size can be changing while we count – but the same can happen to an ordinary collection as well, so we should not be too surprised.

A Collection<T> has actually two addition methods: add(T element) and addAll(Collection<? extends T>). Remember, the intention is to create a virtual, live collection, which means that we are not interested in making a copy of the collection passed to addAll() method. We want to use the collection itself.

But when we add an individual element, T element, we cannot add it to any original component.

It is easy to introduce a compound collection class that can shrink but cannot grow; let’s call it ShrinkingCompoundCollection. It works as described above, by scanning through individual components; deletion as I said above, is fine, but addition cannot be implemented..

The Solution



Let’s denote the original upper level collection of collections as A, and its components as Ai. Since we cannot touch neither any of Ai, nor the original collection A, we have to have two “overflow” collections. One, upper level, collection will receive all the collections that are being added using addAll() method. Let’s denote this upper level collection as B, and its components as Bk. When listing elements of the whole compound collection or calculating the size of the compound collection, we have to scan through all the Ai, and then through all the Bj.

The first component of B, Collection<T> B0, has to be added when B is created. This component will accept all individual elements added by calling add(T element).

So, we have the following structure: a collection C consisting of A and B; each one consists of “elementary” collections with elements of type either T or ? extends T. Now, have not you noticed that we have tree levels, instead of two. How do we handle this? By iteration. Let’s denote as F the operation of removing one layer of indirection, that is, the conversion of Collection<? extends Collection<? extends T>> to Collection<T>. Applying this operation to C, which is a Collection<Collection<? extends Collection<? extends T>>>, we get a Collection<Collection<? extends T>>; applying F to the resulting collection, we get the required Collection<T>.

How do we do it, if we are supposed to use a constructor? I never heard of recursive constructors yet. Well, actually we do not need much of recursion.

Watch my hands. Having a Collection<? extends Collection<? extends T>> A, and having created an “overflow” LinkedList<? extends Collection<? extends T>>, produce a collection out of these two, and pass it to a ShrinkingCollection constructor. The constructor returns a new Collection<? extends Collection<? extends T>>, the first element of which we know, it is our LinkedList.B. Add to it an “individual overflow list”, LinkedList<T> B0, and pass the resulting parameter again to super.constructor. We have built a Collection<T>, which is an instance of ShrinkingCompoundCollection<T>, and we know how to add to it collections and individual instances of T.

Q.E.D.

Две Черные Ласты

У нас в Архангельске вообще практически никто ни с кем не дрался. Я прожил там 15 лет, и не было случая, чтобы с кем-то там драться, чтобы кто-то напал. Ну разве с соседкой по парте Ниной Киселёвой, так и то – мы не друг друга мутузили, а она бросала на пол и топтала моё пальто, а я – её шапку. Чисто символически выражали свои чувства. Нет; один раз я присутствовал при драке – Лёнька Карельский с Серёгой Гермашевым поссорились из-за Сталина. Простак Лёнька сказал, что если бы Ленин был жив, то не дал бы Сталину устраивать репрессии; Серёга на это, цинично усмехнувшись, процедил, что Ленин и Сталин – едины; мы говорим Ленин – подразумеваем партия, говорим Сталин – подразумеваем тоже партия. Хоть у меня по русскому была вечная тройка, но меня слегонца бесило, когда Серёга нарочно вот так вот коверкал язык. Но не настолько меня бесило, чтобы из-за русского языка ещё драться – хватало мне дуры училки Валентины Александровны, которая даже не верила, что у Маяковского есть такое слово «земшар» - а я-то Маяковского уж всяко получше её знал. Да и ни из-за чего я не стал бы драться... ну разве если бы придурок Бармин вдруг обидел бы мою одноклассницу Валю К, так я бы вязл кирпич и убил бы его тут же, на это я был морально готов. А так драться – нет, не в моём вкусе.

А Лёнька с Серёгой как сцепились из-за Сталина, так и валялись, пыхтя и ругаясь, по школьному двору, пока совсем уж не стемнело. Я сидел на корточках и лениво уговаривал их: «кончайте вы, ребя», но кто ж в таких случаях прислушивается к голосу разума. Голос желудка – другое дело. Лёнька оголодал, вырвался из объятий Серёги, и полез через забор домой (Лёнька через забор от школы жил, так его дорога в школу и из школы в этом и состояла, в перелезании забора. А сразу за школьным забором стоял Лёнькин сарай, и в этом сарае, кстати, лежало полное собрание сочинений Сталина; мы эту гадость потом вместе с Лёнькой в школу на макулатуру стаскали – конечно, перекидывая тоже через забор.

Лёнька полез на забор, а мы с Серёгой двинулись в сторону наших домов, и Лёнька, сидя на заборе, обозвал меня предателем, потому что если я против Сталина, то не должен я с Серёгой ходить. Как будто Гермашев был за Сталина: ему просто смешна была наша глупость. Плюс, горячий астраханский характер. Серёга из Астрахани был, чердак называл «подловкой» и т.д. И своего младшего брата Вовку он иной раз бил так, что я уже был готов милицию вызывать. Не любил я Серёгу Гермашева за эти вот жестокость и цинизм; так и раздружились. В девятом классе, увидев его на остановке автобуса, я отвернулся – как и он от меня. А больше встретиться и не довелось – его застрелили через пару лет в Соломбале. Спасал кого-то от хулиганов, его и застрелили.

И кроме этой драки, ничего и не было. Мы во дворе жили себе своей жизнью, и никто никого пальцем не тронул. Люди были разного достатка – моряки, ходившие в загранку и привозившие диковинную одёжку для своих детей – а также чуингам, который, по словам наших учительниц, был вреден для организма и вызывал непрерывное слюноотделение. Жил шофёр Фёдоров с двумя глупыми дочками, погодками. Сёстры Фёдоровы любили верещать, когда их пугают, и в наши игры, «десять палочек» и «ваш чин», играть не любили. Были ещё у нас во дворе пенсионеры, один даже парализованный. Парализованный – но умный, научил нас всех делать воздушных змеев. Ну и наша вот семья тоже, не пришей не пристегни, не в квартире, как все остальные, а в отдельном домишке без газа и водопровода.

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

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

Так как летом вода тёплая, то мы были избалованы, и в холодной воде купаться не тянуло. Раз только один, по инициативе шебутного Мишки Сорванова сходили в конце мая на городской пляж, искупаться среди плывущих льдин. Нет, не люблю. Кости ломит; яйца как доской прищемило. Кому нужно такое удовольствие?

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

На Речнухе, если честно признаться, пляжа-то никакого не было; был просто песок, была река, валялись вынесенные рекой брёвна, и выброшенные кем-то шины. То и то нам годилось – на бревне можно было прокатиться по реке, пытаясь удержаться на нём сидя; шины жгли на берегу, для жару, чтоб согреться, потому что на Речнуху ходили уже когда довольно холодно было. Дикий был пляж, эта Речнуха.

Ещё один пляж, оборудованный, но очень маленький, был у моста через Двину. Боны, выгороженная зона для плавания, вышка для ныряния. Здесь берег был очень крутой, и течение быстрое, так как место узкое. Самое узкое место Двины – восемьсот метров всего. Полмили.

Вот мы и пошли на этот пляж всей кодлой – Валерка Колодкин, Мишка Сорванов, Колька Афонин, Валерка Ожогин и его старший брат Сашка, а также Сашка Зуев. Такое количество Валерок я объяснить не в состоянии, а вот аномально высокая концентрация Сашек в первой волне бумеров объясняется просто – популярностью фильма «Александр Невский». Гордый профиль артиста Николая Черкасова, его арийская челюсть, плащ с кровавым подбоем, стальная будённовка вдохновляли вернувшихся с войны Отцов, мол, и их Сашка тоже вырастет таким. Победителем. Ожидания такого рода не всегда сбываются; некоторые из Сашек, выросши, вдруг стали Шуриками. Отцы не виноваты, виновата эпоха.

Валерка Ожогин, как и Мишка Сорванов, на год младше меня. Мне тогда нравилось это весёлое, незамороченное поколение – не то что Колька Афонин, на год старше; у Кольки в голове бродили очень странные для тех мест и того времени мысли... нынче бы – нормально, ну гомик и гомик, чё такого-то. Валерка Ожогин был мордаст и черноволос; у его брата Сашки тоже черные волосы, зачесаны гладко назад; Сашка худ, мускулист. Сашка был стилягой – только причёска не стиляжья. Иной раз, в субботу вечером, можно было его встретить в узких брючатах, с галстуком-верёвкой на пестрой «гавайской» рубахе. Про такой галстук моя тётя Лиза говорила, мол так бы и удавила этих стиляг на этих их галстуках. Не то чтобы тётя Лиза служила в обществе лимфоцитом, нет, она работала электриком на ТЭЦ – но она была передовик труда и искренне разделяла взгляды выписываемых ею журналов «Крокодил» и «Огонёк». Нет, до вступления в партию ей было далеко – во-первых, она была твёрдая христианка, во-вторых, родственники были слишком антисоветские - как соберутся два дедушки, отец и свёкор, да да как начнут «провергать коммунистов»... хоть и смеялись над дедушками, но всё ж уважали.

От Сашки Валерка Ожогин подхватывал модные иностранные песни, «рок, раунд зе клок», «твист энд шаут», и «абессамэ, абессамэ мучо» - на загадочном испанском, через много лет вдруг ставшем мне почти родным. Английский в наших местах хоть тоже был экзотикой, но встречался чаще; Лёнька Карельский ещё в третьем классе сообщил нам, что по-английски «кто отсутствует» будет «хуйзэпсэн» - и мы ждали, ухмыляясь, когда дорастём до пятого класса и услышим это своими ушами от Маргариты Иосифовны.

Да Сашку Ожогина, может быть, кто-то даже и побаивался, типа возьмёт да зарежет – такой стиляга-то! Колькина мать многое за ним подозревала. Она и за мной подозревала, что я губы крашу. Ничего семейка была. Подозревать двенадцатилетнего парня в сапогах и сером ватнике, что он губы красит!

Кодлой, конечно, весело купаться – по очереди с вышки ныряли; проплывали под водой (по течению) весь «бассейн»; ныряли по двое, под водой пугая друг друга всякими страшными жестами и рожами... У Сашки Ожогина были ласты, и он в них заныривал глубоко, до дна. У меня была маска, а ластов не было (да шутка ли, ласты стоили 7 рублей 10 копеек в магазине, чуть дешевле моего фотоаппарата, на который я два года копил, экономя на пирожках.

И вот, прыгнув с вышки в моей маске и в сашкиных ластах, я вынырнул в маске и одной ласте. Другой не было. Как бы это вам объяснить, в масштабе... Ну примерно как если у вас угнали незастрахованную машину, которую вы у приятеля взяли прокатиться.

Остаток дня я провёл, ныряя в своей маске в этот «бассейн». Не каждый раз удавалось донырнуть до дна - не хватало дыхания. Глубоко там всё-таки, метров пять; да и холодно на глубине. И темно. И эта мутная вода, которая тебя несёт над дном, пока ты по нему шаришь, пытаясь найти хоть какую-то неровность или что-нибудь тёмное... Наконец Сашка мне сказал «хватит», чтобы я перестал, что её всё равно уже не найдёшь.

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

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


Вторая ласта пропала 26 лет спустя. Моему сыну было столько, сколько мне тогда на пляже у моста.

Мы болтались по Вуоксе большой туснёй – Кротовы с детьми, Пихтины, Шура Холоимов. Наконец удалось нам добраться до моей заветной стояночки на Холмистом, на скале, где мы с Андрюшкой Кротовым даже выдолбили шлямбуром в скале канавку, чтобы вода не хастаивалась у камня, за которым мы пили чай и играли в ап-энд-даун, а стекала, и место чтобы оставалось сухим, только мох. Мы там вообще пообосновались; я даже примеривался сажать картошку и укроп на лугу на острове Фиалка, это напротив Холмистого.

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

Дети вздумали гонять вплавь на время до скалы и обратно. К детям присоединились взрослые, начиная с Кротова. Я-то стоял на берегу и усмехался – никогда я не умел быстро плавать; я предпочитаю плыть не спеша, будь это хоть час, хоть два. А Шура – парень спортивный, и тут же присоединился к Кротову. Шура нас всех лет на десять этак моложе был. Худой, жилистый, небольшого роста, круглое лицо, весёлые карие глаза, глубокое понимание жизни и всех её поверхностных вещей; и с иронической улыбочкой ташит хоть какой тяжести рюкзак. Меня пробовал учить плавать кролем, да меня учить физкультуре – примерно как учителя физкультуры языку Лисп. Так что я стоял на бережку и засекал по часам время, рекорд 54 секунды в один конец.

Потом Шура решил ешё смерять, ну а сколько же будет если с ластами плыть; взял надел мои ласты и поплыл. И бац – свалилась с его маленькой ноги моя большая ласта, аккурат посредине между берегом и скалой. Взял я маску, стали мы с Шурой по очереди нырять. Да чего там нырять – хоть видимость и есть кое-какая, но на глубине два метра упираешься в слизистый жидкий ил, который при любом прикосновении вздымается облаком; и сколько там этого ила – неизвестно. Ну да и вода в Вуоксе только на поверхности тёплая, а там, ближе к дну – ледянющая. И ничего не нашли, конечно. Отметили только это место, мол, вот, здесь покоится чёрная ласта.

И в следующие заезды я своим гостям место показывал: так и так, мол, здесь Шура ласту утопил. А вот здесь чайка Чука жила. А здесь к нам однажды вышел беглый солдат с большим ножом и попросил перевезти на тот берег. А здесь Ник с Фаей лося как-то утром встретили. А у этого нашего камня снимались «Особенности». А здесь раньше был фарватер, теплоход ходил. А здесь когда-то избушка стояла, и в ней жил парень, и этот парень угощал нас чаем из чаги. А вот хутор Пёйлякаллио, и сосна, которую тихуанский колдун Ч назвал дубом, и намерял у этого дуба биополе - 8 метров в диаметре.

Через восемь лет Шура Холоимов умер от рака.

Ну это нам так легко говорить, мол, взял да умер. Это вот если ты, скажем, едешь по 85-й дороге в левом ряду, включил радио Пуро Мехико, да орёшь вместе с ними: Besame, besame mucho, como si fuera esta noche la ultima vez… oh shit! – и всё. Твои последние слова были «оу щит». Всё очень просто – для тебя. А с раком непросто. Сначала же надо вернуться от доктора, набраться сил, и твёрдым голосом, слегка, правда, задыхаясь, сказать: «мама, у меня рак.» Потом операция. Потом химия. Потом, после химии, облучение, рвота, облысение, тоска и бессилие. Если повезёт – без болей, а не повезёт – боли, с каждым днём всё неутолимей.

Потом койка.

Лежишь, глядишь в белый потолок.

Ждёшь.

Saturday, January 14, 2006

Ныряя Глубоко - 1

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

Пятистенка, построена в начале 20-го века; серые стены, общая площадь где-то метров тридцать пять - сорок.

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

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

Облако пыли разлетелось в стороны, и медленно осело на землю.

А так, из моей стратегически расположенной кроватки, если идти по часовой стрелке с севера, были видны следующие вещи и предметы:

- Светлый фанерный гардероб, с двумя ящиками старой обуви, с вешалкой, с кусочком нафталина в целлофановом пакетике, с портупеями, ремнями, сумками... Что было на крыше того гардероба, мне было совершенно не видно.

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

- Затем уже упомянутое выше окно.

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

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

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

- Справа от фикуса ещё одно окно, на юг. За ним - стройка, строят двухэтажный брусчатый дом, куда потом въедут наши будущие соседи. Афонины, Сорвановы, Колодкины; капитан Иван Севастьянович, чья взрослая дочка была первой шахматисткой города Архангельска; она же научила меня привезённым с Кавказа песням только что вылупившегося Визбора: "а друг рисует горы, далёкие, как сон..."... не будем спешить, это всё в будущем, соседи, капитан... всего в той стене три окна, это фасад дома. На зиму окна покрываются сначала инеем, а потом и сантиметровым слоем льда, и мне не разрешают протапливать дырку, так как от неравномерности нагрева стекло может запросто треснуть... но и это потом.

- Ещё одна табуретка, на которой стоит желтый патефон; пластинки в пожелтевших бумажных конвертах на полу рядом, прислонены к табуретке. Апрелевский Завод Грампластинок. Русланова, "Собака на Сене" Лопе де Вега, "12-я ночь" Шекспира. Я лучше патефон сейчас пропущу; это отдельная большая тема, с его иголками, головками, регуляторами, большой пружиной, внутренним рупором, и т.д.

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

Над комодом висят два портрета, Лёнюшка, мой брат, которого я никогда не видел, и смерти которого я обязан своей жизнью: если б Лёнюшка не погиб, четырнадцати лет, мать не стала бы заводить себе на старости лет ещё одного ребёнка... а рядом с Лёнюшкой - Лёша, мой дядя, в военной форме.

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

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

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

На портрете Лёше 26 лет, и в моих глазах, с течением времени, он из пожилого дяденьки превращался в почти ровесника, молодого офицера, а потом и в несчастного мальчика, которого мне до сих пор жалко.

За комодом стоит табуретка, а за табуреткой стоит трюмо с мутным старым зеркалом; трюмо тоже мутноватое, сосна, покрытая морилкой и лаком, потёртое, старое. Над трюмо висит большой черный плоский конус: Репродуктор, радиоточка. У Репродуктора в середине расположен трансформатор и катушка; есть также маленькая ручка, позволяющая регулировать громкость. Так как Репродуктор висит под самым потолком, то и достают до него только взрослые, а я лишь слушаю. Песни Руслановой, Последние Известия, Архангельские Новости ("стивидоры Соломбалы досрочно завершили.."). Репродуктор учил меня Правильному Русскому Языку. Это благодаря ему я перестал говорить "радево" (радио), "пошто" (почему), употреблять послелоги "-то", "-та", "-ту", "-те".

Тут мы уже подходим к западной стенке, у которой стоит материна кровать. Большая железная кровать, шарики на спинках (половины нету - часть, похоже, откручена ещё до меня). На железной сетке положен пружинный матрас, а на нём толстый пуховый матрас. Темно-розовые подушки с рисунком "огурец"; темно-синее одеяло всё в тот же "огурец". Попасть туда ночевать - это надо было или хорошо себя вести или заболеть. Я чаще практиковал второе. Лежишь, водя глазами по потолку; болезнь накатывается на тебя как тяжелая густая волна какого-то сиропа; всё становится вдруг медленным и тёмно-медовым... и потом эта волна откатывает, и становишься лёгким, пустым, кажется, всплывёшь вместе с одеялом к белёному потолку в загадочных, полных скрытого смысла и тайных букв трещинах - но мокрая, вспотевшая голова липнет к подушке, и не оторвать. Попросишь "пить", и мать спешит с большой чашкой с золотым ободочком; в чашке чай с молоком, с маслом, с пенкой, с мёдом: "пей!". Я ничего не имею против пенки, но в больное горло она не лезет.

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

У кровати висит густой короткошерстный красный ковёр, очень чесучий, если к нему прислониться. Лучше под одеялом. Конечно, хорошо, когда разрешают там спать. Можно разговаривать, спрашивать про всё, или попросить сказку рассказать - да только она никаких сказок не знает, я сам лучше почитаю. А вот рассказать из жизни что-нибудь, как она в школу ходила, как учитель иной раз придёт утром и скажет: "ребята идите вы домой, я за охотой пошел" - и всё. Как после революции "боже царя храни" петь в школе перестали, а стали петь песню про берёзку. Мать училась недолго, четыре класса всего окончила. А больше и школы в деревне не было. И то неплохо; бабушке пришлось самой выучиться грамоте, чтобы потом Толстого да Гоголя читать. Дедушка же, хоть и служил в Финляндии, а даже расписываться не особо-то умел, норовил всё крестик поставить. Книги для него были - ничто. Пустое место. На цигарку да подтереться. Ну примерно вот как вам - AJAX-технология или интуиционистская семантика Крипке-Жуаяля.

Sunday, December 18, 2005

Мой начальник Мыкола Гомец

Date: Tue, 04 Apr 2000 18:24:25

У меня есть начальник, Мыкола Гомец. Он по-испански, правда, не очень, его родной язык швед­ский. Ну и еще сантакрузский – "beer dudette", скажем. И мы с ним карпулились. И вот он спра­ши­ва­ет у меня, как по-русски будет "shit!" Ну, подумав, сказал – "бля!". И вот заходит Мыкола вечером в кафе в Санта Крузе, видит Лену, тыкает в нее пальцем и орет: "бля!". Ну лааадно... через не­делю спра­шивает у меня Мыкола, как по-русски с днем рождения поздравляют. Смотря как. Не­фор­маль­но. Смотря какого пола. Девочку. "Расти большая". Едем-едем. А как, спрашивает, спросить "how's your nose?". "Как твой нос?", отвечаю. И вот он приходит от вечером в кафе в Санта Крузе, под­хо­дит к Лене и, в присутствии ее родителей, говорит ей торжественно: "расти большая, как твой нос!".

Больше я его русскому не учил, выучил он только имя свое – Мыкола, да и то Лена ему впаривает, что это означает, что он redneck – а я говорю, не реднек, не реднек, просто Украина и Швеция – близ­нецы-братья, недаром Мазепа пытался оную к оной присоединить, у них и флаги у обоих жов­то­-блакитные (бло-гюль, по-шведски), и фразу "хай, добро, так" швед поймет примерно адекватно. Мо­жете попробовать, это приличная фраза.

Понедельник

Date: Mon, 15 May 2000 18:36:53

Да неделя как неделя была, токмо что жара и засуха до октября, которые мы с Бредом Жилетом так друж­но обещали швейцарцу Урсу Шпюхеру, сменились густыми облаками и проливными дождями. От Миши "эль ниньо" ничего, однако, не слышно. Непонятно.

В пятницу, в связи с производственным визитом в город Сан Матео, зашел в родную школу, по­здо­ро­ваться с учителем Василием Ивановичем. В классе было полно народу, все заорали, увидев меня, и стали дружно поправлять мой английский – мой английский был любимчиком этого класса. Дат­чан­ка Лада обняла меня и чуть не прослезилась. Радостно орала, увидев меня, мексиканка Арасели; она на днях получила гринкарду и стала работать в аэропорту, смена с трех тридцати утра, она даже не знает, какую ей зарплату положили, по знакомству устроили; устраивается на работу и Хайм, ко­лум­биец, через две недели он будет в Оракле, что-то в маркетинге, солидный паренек. Загадочный мек­сиканец Мартин, с огромной золотой цепью на шее, улыбался молча. Чилийка Маривель при­пля­сывала за своей партой – Маривель в субботу летит к себе в Чили со своим мужем, свадьба у них бы­ла на миллениум в Лас Вегасе, сидит и напевает странную песенку – ми энд ю, ю энд ми, хомо-сек­шу-алити... Маривель недавно тоже устроилась работать – корреспонденткой в "Нуэво Мундо", ис­­панское приложение к "Сан Озе Меркури Нуз". Появились в классе две новые японки, внешне по­хо­жие скорее на тайванек. Пришел директор Тешара, который недавно вернулся из Вьетнама, и все сна­чала заорали "Алла Тешара", а потом переключились на Василия и стали привычно орать "Алла Ва­силий". Директор Тешара устроил рафл из принесенных сувениров; мне досталась голова мед­ве­дя Смоки, каковую я и прицепил к автомобильной антенне. Голова небольшая, размером с яйцо.

(Примечание. Медведь Смоки, как известно, родом со Сьерры. Уже в июне нас как-то понесло на Сьерру погуляти – и теперь нам от этой Сьерры уже и не оторваться. Голова Смоки, наверное, оказывает этакое трансцендентальное влияние.)

Потом Вася велел всем рассказывать про страшные случаи, которые с ними были. Народ-то разный соб­рался. Кого в заложники брали, к кому домой воо­ру­женные бандиты на родине забирались. Япон­ки в детст­ве тонули и с тех пор боятся воды. Колумбиец Хайм рассказал, как он служил в ар­мии, в 16 лет его за­бра­ли; уточнили, что не урожаи охраняли, а в госу­дар­ст­­венной армии служил – и там ребятишкам выдали ору­жие, и все стали целиться друг в друга, одного уби­ли, другого ранили, с тех пор они с оружием осто­рож­но. У чеха Томаша месяц назад взорвался его красный кон­вер­тибл, пря­мо как в кино – они с персом Али сели в машину, и Томаш стал заводить – и тут сначала по­лых­­ну­ло, Томаш крикнул Али – "get the fuck outa here!", они токо выскочили – и взорвалось. Менты при­ехали через минуту. Где-то за углом сторожили, видимо.

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

А в субботу мы с утра поехали на великах прокатиться, взяли три банана, три пряника и немножко со­ку. Проехали по парку, боринг, подъехали к лексинг­тон­с­ко­му вдхр, въехали на дамбу, ну что, объе­дем вокруг пруда? Да ну, далеко тащиться, давай домой – ну давай. Только другой дорогой по­е­дем. Ну хорошо. Дорога на Черную Гору, туда и поперлись. Часа через два (а часов у нас тоже нету, и карты нету, и денег, и телефона) подъем кончился. Питье мы берегли. И пряники берег­ли. От­ку­сы­вали по маленькому кусочку, как Зиганшин с Поплавским. Пуще всего мы берегли бананы. Во-пер­вых, после бананов тяжело ехать на велике. Во-вторых, это стратегический запас. До тридцать пя­той дороги оста­валась пара миль, когда увидели въезд в парк Сан­борн. А этот парк мы знали – то­ч­нее, знали проти­во­по­лож­ный из него выезд. Туда и попилили, хотя на вело­си­педах нельзя – да что по­делаешь, у нас имердженси, можно сказать. Места там странные, глухие – никто туда не за­бре­да­ет – и вот, глухое лесное озеро, тишь, травка, луга, как на Карельском, только деревья раз в пять по­вы­ше будут. У озера мы съели первый банан. Солнце стояло еще высоко, но и ехать нам было так, ни­чего... порядочно. Впрочем, нам повезло – если бы не парк, была бы еще пара подъемом на 2000 фу­тов, а так – все вниз, по крутой дорожке, правда, не близко это. Что странно – когда езды ос­та­ва­лось часа на полтора, появилось ощущение, что нам все вообще по фиг дым, и мы хоть двое суток мо­жем так пилить.

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

А сегодня ливень, ливень. Хочется спать, а не работать.

И еще сегодня сорок лет, как умер мой дедушка Башаров Василий Константинович. Родился он в 1876 году. Служил в Финляндии, потом налаживал домаш­нее хозяйство, потом его посадили, по­то­му что слиш­ком хорошо работал, но на канал не послали по воз­рас­ту, и он с бабушкой жил у нас в до­ме за заборкой, и де­душ­ка время от времени собирался пойти косить сено. Де­­душка научил меня ку­рить, пить водку и мате­рить­ся (а я уже учил учеников старшей группы детс­кого сада, за что был очень популярен). Курил я, прав­да, не вды­хая – как Буш. Зато пил ничего, однажды хлоп­нул в гос­­тях стопарик водки – и бух на пол, скорую вызывать боя­лись, так оклемался. Сколько мне было... три, на­вер­­ное, или даже два. Читать еще не умел, точно. Если бы прочитал, что водка – пить не стал бы, не любил я водку. А сегодня выпью.

Перед смертью к дедушке приходил поп, исповедовать, соборовать, не знаю уж точно. Я, уб­еж­ден­ный к тому времени атеист, написал на картонке текст: "бога нет!" и, когда поп оделся и ушел, по­бе­жал за ним, и, регулярно его обгоняя, молча вставал на дороге и демон­стрировал ему мой плакат. Так мы с попом дошли до трамвайной остановки на углу Выучейского и Ломоносова, где и рас­ста­лись. Поп тоже не сказал мне ни слова.

Саке

понедельник, 9 июня 2003 г.


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


Когда пьешь саке, становится грустно. Проверено. Интересный эффект получается, если сочетать с чешским пивом Уркель или с примерно одинаково разгильдяйским и веселым напитком текиля. Только текилю надо пить хорошую, плохая текиля, нагревай ее или остужай, пей ее с лимоном и солью или с таком, все равно остается плохой.


Почему сочетать? Потому что тогда грусть не переходит в мерзкую тоску, а становится основой творческой мысли. Во-первых, всех жалко. Бабку, которой в 88-м году на рынке в Йошкар-Оле показал фигу; травинку, которая росла сорок с лишним лет назад у столба около моего дома, и которую я обломил в коленке и стал покусывать, из них еще такой сок, немножко сладкий... а ей же тоже больно было.


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


Лето; носились вечером дети, и двери веранды были открыты - и теперь в темноте на монитор слетаются разные ночные зверки - мотылек, моль, карамора. Каждый зверок скромно присаживается в нижней части экрана, а потом начинает медленно продвигаться наверх. По дороге остановится, почешет этак ногу за ногу, оглянется. Вот мол я каков, уже полпути прошел. Половину светлого пути. И дальше двинет. Каково же будет его удивление, когда он дойдет до верхнего края экрана, а дальше, собственно, ничего и нет. Воз­вра­щаться восвояси? А где они, эти свояси? Свои веси? Ночью хрен их найдешь, да ведь и съедят там запросто, зря, что ли, улетели... Каждая такая карамора считает себя ужасно умной. Она всего достигла, нашла луч света в темном царстве, и добралась до вершины. Куда уж дальше.

Голоса

Date: Monday, August 27, 2001

Сегодня у Лёлика праздник – милая дала в рот.

Я думала, он с честными намерениями пришел, а он – пообедать.

Очень мне нравилось причесывать ее длинные, пушистые волосы; пока она в это время делала мне минет.

Ты со мной всю жизнь что-то не то делал.

Он все хвалит мою фигуру, а я не понимаю – ну так давай, можно же и потрогать!

Если бы не ее волосатая грудь, я бы с ней надольше связался.

Жена меня как-то раз спрашивает: «а ты с ней какими-нибудь сексуальными извраще­ни­ями занимаешься?» Я ей ничего, дурочке, не сказал.

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

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

У них ребенку уже два года, но он все ещё боится позвать ее замуж.

Я как взглянула на его дряблую шею, чуть не заплакала - это вот с кем я два года переписывалась!

Кому нравится поповская дочка, кому попадья, а кому и поп.

Viagra, My Friend

Date: Monday, August 27, 2001

Меня зовут Давид, и мне 62 года. А девчонке моей – 26. Я пишу сюда на условиях полной анонимности. Мне не хотелось бы, чтобы меня кто-то узнал, у меня дети и внуки, спасибо.

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

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

И все равно, несмотря на удачу, остался на старости лет один. А в Америке ведь понятия такого нет - "старость лет". Все живут и радуются.

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

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

Ну это же я все анонимно пишу, по интернету.

Тогда уж признаюсь. Я нашел свою Марицу тоже по интернету. Ну и что? Грубо говоря, мои проблемы. Да и дело-то не в этом, мы же встретились в конце концов, и все у нас нормально. Она только наполовину филиппинка, мать у нее мексиканка из Чиуауы… не знаю, как выговорить, такая провинция.

Ну я же не молодой жеребец, я не стал к ней лезть с намерениями в первую же встречу, или даже в первый вечер. Стали жить вместе, она готовит, убирает, я ее развлекаю, катаю. У ней даже водительских прав не было. А то сядем и в четыре руки бренчим что-нибудь. Элизе. Полонез Огинского на этой стороне шарика не учат, а Бетховену учат. И Шопен, конечно.

С тещей я так и не виделся ни разу. Видел фотографию, худая, крепкая баба. Живет в этой своей… Чиуауе, у нее там дом и бизнес, где-то под Хуаресом, Марица не рассказывает, какой бизнес. Да Марице и дела нет. Марица на медсестру училась, чтобы в Америку попасть - это им в Мексике голову морочат, что медсестер Америка ввозят пачками. А…

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

Ну привыкла. Дошло у нас и до этого дела, а как же. Ну еще бы. Такая молодая деваха вокруг вертится. Не устоишь. В смысле - наоборот, само встанет.

В моем возрасте лучше занятия не придумаешь, чем секс; я как заново родился. В первые недели, как начали, так мы целыми днями кувыркались в постели, не вылазили. С женой мы такого не выделывали, что с ней делали; да и мне повезло, что она наполовину мексиканка, наполовину филиппинка. Была бы на 100% мексиканка - я б у ней живым из постели не ушел; была бы на 100% филиппинка - и десятой доли не испытал бы того, что мне досталось. Филиппинки же скромные, как китайки. Моя тоже сначала все норовила отвернуться, когда лифчик снимает - но мексиканская кровь взяла свое, и такие штуки, такие штуки… наши такого не умеют, или не хотят. А может быть, у наших просто питание другое.

Я Марице не говорю, что уже давно на виагру подсел. Потому что, наверное, в моем возрасте и с моей физической подготовкой, без виагры никак. Ну и что, кто знает? Зато она-то как счастлива. Любимое занятие у нее.

Да… кто бы мне сказал сорок лет назад. Это я лежу, улыбаюсь, смотрю в потолок и рассуждаю сам с собой.

А потом, потом, на следующий день после таблетки, наступает страшная тоска. Как дементор под окном прошел. Хочется умереть просто. Но умереть - легко, забыться, легче чем сон, потому что и сна-то никакого нет. Жить, жить, вот что самое-то ужасное. Жить, и помнить всё, всё, что в жизни было, и понимать, что все это ну совершенно никому не нужно, и мне тоже не нужно, и что лучше бы ничего этого на свете никогда и не было, и не надо было бы никому страдать. Той же девчонке моей. Не соблазнилась бы, вышла бы замуж за какого-нибудь горячего придурка, нарожала бы ему детишек, он бы ее бросил, она бы плакала, и была бы счастлива. А тут – на концерты со мной ходи, да в кино. А в гости – к кому мы в гости пойдем? К соседке Арасели? Ага, здрасьте. У Арасели муж на нас на обоих косо смотрит. Ну типа я – русский мафиозо, она – продажная шкура. Ну уж если араселин муж на нас так смотрит, так что сказать о моих знакомых да родственниках? Для тех я вообще с ума сошел. Поэтому и не хочу ни с кем дела иметь.

И вот такой вот отходняк весь следующий день. На работе вообще стараюсь молчать, чтобы не врезать кому-нибудь.

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

Впрочем, проходит этот сплин; заглотну опять таблеточку, и к Марице. Поразительная у нее фигура, ноги худющие, талия тонкая, у нас таких не делают, грудь – ну просто в самый раз по моему вкусу. Наглядеться на нее не могу, какая она у меня красотка. Мне, конечно, здорово повезло с моим сокровищем. Уберечь бы только.

Глаз да глаз нужен, конечно. Проходит мимо дома Арасели, Марица выйдет с ней поболтать, а я смотрю. К Арасели недавно брат приехал из Тихуаны. Этот Рамон так и сверкает глазом да зубами на мою Марицу, мне кажется, дай ему волю – живьем сожрет. По тихуанской визе приехал, на месяц якобы. Эта тихуанская виза – странная какая-то штука. Дают ее якобы тихуанским жителям, для посещения пограничных населенных пунктов, не дальше 25 миль. Сан Диего, то есть. Ну где Сан Диего, там и Лос Анжелес, а где ЛА, там и Сан Франциско. Этих тихуанцев, мне кажется, у нас тут больше, чем в самой Тихуане. Виза дается на год, работать нельзя – но они все работают. Год проработает такой, едет домой в Тихуану. Там берет паспорт двоюродного брата, тоже Рамона, но уже не Санчеса, а Карлоса, и в тот же день обратно. А где двоюродный брат? Да этот двоюродный брат и был-то в Тихуане только раз, когда на него мексиканские документы оформляли, а вообще-то он у нас тут в Сан Карлосе живет.

Стою у окна, смотрю. Арасели уходит в одну сторону, моя Марица направляется к ее дому, ей открывает дверь Рамон, дверь закрывается, все. На улице пусто, в моей голове поднимается какой-то звон. И слегка подташнивает. Что делать, что делать? Смотрю на соседскую дверь не отрываясь, планирую свои дальнейшие действия – вдруг шаги, оборачиваюсь – Марица ходит поливает цветы. Что это было? Показалось мне все? Что показалось? Что мне показалось, и сколько времени прошло? Если три минуты – тогда показалось, а если прошло три часа? Я ж ничего не помню, я просто стоял окаменевший и глядел в окно. На часы ж я не глядел, не до часов.

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

Поэтому мы живем, как живется, не зарываемся, но и не пригибаемся. Много ездим; не в Европу, конечно, Европу нам не потянуть – нет, но по стране мы поездили порядочно, от Сиэтла до мыса Кеннеди и от Бостона до Сан Диего; любой дешевый мотель с ейчбио нам как второй дом. Иногда кажется, вот так вот поездишь недельку, что ты вообще как бы перестаешь существовать на белом свете.

Привет Родине Первомая!

Date: Mon, 01 May 2000 11:16:43

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

Интересно другое – а что праздновали чикагские трудящиеся? Собственные похороны? Нет, то­ва­ри­щи! Чикагские трудящиеся праздновали Первомай, первобытный европейский праздник, на ко­то­рый украшают майское дерево, и в ночь на который, вальпургиеву, ведьмы беснуются на своей горе – эти ведьмы, как я понимаю, в эпоху матриархата были жрицами, и их все боялись, когда они празд­­новали, тем более, что были и человеческие жертвы – например, Снегурочку пожарили же и съе­ли (а родителям соврали, что, мол, улетела, вознеслась, как Христос, каковой, кстати, сам свое мя­со и кровь якобы предлагал перед тем, как тоже вознестись).

Прав, прав был Визбор: коммунизм – это молодость мира, забытая, сидящая где-то в подсознании, и вы­ползающая оттуда ночью, когда сон разума и рождает чудовищ.

А зачем его, по Визбору, нужно было воспроизводить молодым? Затем ли, что эти самые "молодые" частенько поставлены в такое положение, что и деться больше некуда, или просто потому что онтогенез повторяет филогенез?

Повторения

(так; не стоит публикации)

Date: Fri, 21 Jan 2000 09:47:22

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

Лучшие Книги

(ну это просто на память)

Date: Thu, 13 Jan 2000 12:34:01

Детская Энциклопедия. Ну тут понятно. Сидишь длинными зимними архангельскими вечерами... (темнело в полвторого).


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


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

Данте, "Новая жизнь". В 16 лет для интроверта – самое то.

Фор, Кофман, Дени-Папен, "Современная математика". Маленькая зелененькая книжка, доступная для чтения девятикласнику, вах! Научила меня многому.

Достоевский, "Преступление и наказание". Как Высоцкий кодекс – открою на любой странице, и не мо­гу – читаю до конца. В наше время, кстати, Достоевский в школе еще не входил в программу.

Маркес, "Сто лет одиночества". После нее понимаешь, что мир круглый, и во времени в том числе. Чи­тал ее примерно восемь раз по-русски и раза три по-испански. И еще буду.

Воннегут, "Колыбель для кошки". Кто эту книгу в нужное время прочитал, тот автоматически стал бо­конистом, и уже твой карасс всегда с тобой. Приезжаешь хотя бы и в Скоттс Вэлли работать – и еди­номышленников по глазам находишь...

Р.Бах, "Jonathan Livingston Seagull" – странным образом это издали в СССР, кто нашел, тот про­чи­тал, еще одна дырка во внутреннюю эмиграцию... окно во внутренний Париж.

P.T.Johnstone, "Topos Theory". Эту книжку я два раза законспектировал, уж не знаю, сколько раз про­читал... так я и стал, на время, профессиональным математиком.

Брукс, "Мифический человеко-месяц" и Майерс, "Структурное программирование" – меня эти книж­ки научили организации производства программного обеспечения, чем с тех пор и занимаюсь.

Платонов, "Чевенгур". Стал как-то понимать, где, собственно, я живу, и что вообще за коммунизм такой.

Кропоткин, "Великая французская революция". Научила стереоскопическому взгляду на историю. Пос­ле этой книжки я и заключил пари с Цвеером, что в 1986 году не будет генерального секретаря Л.И.Брежнева... в 1983 мы на работе распили бутылку шампанского по этому поводу.

На Утренний Поезд

(не окончено вообще-то...)

Date: Wed, 14 Nov 2001


Меня будят очень рано, так как надо успеть на поезд. Наполовину высунувшись из-под одеяла, я навола­ки­ваю на себя всякое теплое, что валяется на стуле, вклю­чая вязанку и шаровары. Иду мыться к умывальнику; для меня нарочно в него подлили чуть-чуть теплой воды из чайника. Много нельзя, от теплой воды мерз­нут руки на улице. В уборную я тоже не иду, так как там градусов десять мороза; мне разрешают пописать в помойное ведро, стоящее под умывальником же, за матер­чатой шторкой.

На столе уже стоит приготовленная специально для меня и Лидки яичница с жареной картошкой. Для нас же, для гостей, на стол поставлено масло. Я сажусь на гостевой стул. Вообще-то на нем сидит дядя Ваня, но когда я приезжаю, то всегда на него забираюсь. Стул у единственного окна. Окно сейчас покрыто толстенным слоем льда, а на нем нарос иней, в который даже частично вмерзла белая кружевная занавеска. Лёд оттает только к весне, до которой еще месяца три; тогда можно будет разобрать текст и картинки на страницах из "Огонька", прикрывающих рулон ваты, положенный между окнами. Половинки страниц; на одной - полфотографии, Балет "Щелкунчик", в главной роли Г.Ул…; на другой - карикатура: видны угол шляпы, нос, и тощая рука, торчащая из широкого черного рукава, в руке атомная бомба с надписью "А". Внизу подпись - рис. Гр.Оганова. Художник Гр. Оганов когда-то отрекся от своего брата, расстрелянного журналиста М.Кольцова. Сам же Кольцов знаменит тем, что взялся отравить раненых бойцов-интербри­га­дов­цев в случае наступления фашистов.

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

А у нас тут все за окном заметено снегом еще с октября, а растает в мае.

Съели яичницу; тётя Лиза налила чай: мне в стакан с под­стаканником. Мужик считаюсь. Побрякиваю лож­кой в стакане, а потом подхватываю морошковое варенье из банки. Морошка - капризная ягода; она то твердая, то уже переспелая, чуть не прокисшая. Правда, эту якобы прокисшую и весной, как снег сойдет, можно собирать. А варенье, чуть что, скисает и начинает бродить, так что его надо подметать скорее.

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

Приснилось Тарантино

(не стоит публикации)

Date: Wed, 21 Jun 2000 11:10:04

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

Взволнованная речь

(not worth publishing)

Date: Thu,
30 Mar 2000 18:26:55

Саша, в том и разница, что для тебя Россия – этакая ин­те­ресная страна, как для меня Колумбия или Фи­лип­пи­ны. А для меня это – часть меня, которую я со злостью пы­таюсь оторвать, выбирая куски по­пло­ше, потому что же не отрывать же Достоевского и Киршу Данилова. И хо­­ронить вроде рано – там еще много живых людей. Ка­бы можно было "с удовольствем и грустью посетить род­ные места" – как я посещал Архангельск, хо­дя по своему старому двору да приводя в порядок мо­гилы пред­ков – так нет же, это опасно, и опасность не такая, как в горах – лавина, трещина, сы­пуха, а опас­ность от похожих на меня, говорящих на при­мерно таком же языке, от которых я, как только по­дойду к виртуальной границе в Пулково-2, начну за­ви­сеть, как крепостной, которого отпустили в го­род на воль­ные хлеба, но который все равно им в вечном долгу.

Я уверен, что, будь у меня синий паспорт, я тоже с блаженной американской расслабленной улы­боч­кой буду похаживать по Миллионной, Пушкинской и Мытнинской, зная, что эти суки меня тро­нуть практически не имеют права.

Россия находится в плену у своего народа, который находится замужем за своими дорогими ор­га­на­ми, мундирами голубыми. И в статусе беглого раба я туда являться не желаю.

Object-Oriented Programming

(not worth publishing)

Date: Wed, 22 Mar 2000 13:35:26

Please excuse both my English and my topic.

What is the point of object-oriented programming anyway? Say, you work with C++, but you are not satisfied with this and that; okay, you switch to Java, which gives you more freedom. Then you discover Perl or Python and just find out that all objects are just hashes (using Perl word), that is, associative arrays of named properties that in turn can be objects or scalars. And, in Perl, you can use all these OO paradigms, and at the same time dynamically add (or even remove) properties and methods.

But you are advised to used "accessor methods" to retrieve or set properties, like this:

object->setThisProperty(anotherObject->getThatProperty());

Now if we have dynamic sets of properties, why bother defining all specific accessor methods? Why not have just this:

object->SetProperty("ThisProperty",

anotherObject->getProperty("ThatProperty") );

But for this we already have a much easier way of doing things:

object->{ThisProperty} = anotherObject->{ThatProperty};

Wow, we can handle properties as if they were variables! But they were variables before we introduced "accessor methods", so why all the fuss? Who knows?

Валентины

(не стоит публикации)

Date: Tue, 15 Feb 2000 10:13:07

Да, насчет Валентинова дня...

Только давайте договоримся различать Валентин(1) и Валентинов(2). Я буду иметь в виду по­след­них. Вчера, в Валентинов день, я задумался, а какие же Вален­ти­ны(2) мне в жизни встречались. И ока­залось, что все они, как братья во Христе, одинаковы и отвратительны. Общий имидж такой – возь­мите Ельцина, когда он еще был членом Политбюро, зачешите волосы назад и поставьте перед ним, для придания эмоций, его партий­ного соперника Егора Кузьмича Лигачева. Да, волосики надо еще немножко накрутить и напомадить, чтобы были немножко волнистые и лип­кие.

Сначала это был Валентин Васильевич, учитель пения с первого класса по восьмой. Он ненавидел все вокруг – наш родной северный город Архангельск, нашу школу, наш класс, меня лично в осо­бен­ности. Тосковал по московской культуре, откуда был родом. Однажды он меня (за пе­ре­драз­ни­ва­ние и смех всего класса) взял за шкирку и выкинул за дверь; в кармане у меня как раз лежал только что очищенный апельсин, и я упал на апельсин, раздавив его в лепешку. Оценки, впрочем, он ставил объ­ективные – когда в третьей четверти нужно было не петь, а изучать нотную грамоту, я получил свою пятерку только так – хрен ли знаки-то запомнить. В остальные четверти я пел "удов­лет­во­ри­тель­но", и до сих пор помню песни "утро красит нежным светом", "нам нет преград" и "пар­тия – наш рулевой".

Потом, с пятого класса, добавился другой Валентин Васильевич, учитель труда. Ленька Карельский да­же предпо­лагал, что они братья, но я возражал – совпа­де­ния имени и отчества, по-моему, было не­­достаточно. Этот Валентин Васильевич был более дик; у него была привычка бить учеников ли­ней­кой. Однажды шарахнул линейкой и меня, но это был уже пятый класс, и я был достаточно про­дви­нут, чтобы устроить из этого такой общешкольный скандал, что он впредь уже никого и никог­да уже не трогал. Да, столярному-то делу он учил вполне грамотно, я потом дома в годы застоя наделал не­ма­ло всякой мебели, помня его уроки.

Уехав в Питер в девятый класс, я тут же встретил следующего Валентина – Вальку Васильева из 9 г. Об­щий вид уже описан ранее; этот отличался тем, что, сам того не зная, отбивал у меня моих де­ву­шек, а я из-за этого переживал и ненавидел Вальку. Много лет спустя он также поведал мне, что каж­дый раз, приезжая в Питер, ночевал, на халяву опять же, у нашей общей знакомой М.Д. (иници­алы вымышленные), с ка­ковой у меня много лет была ну чисто платоническая дружба.

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

Последний Валентин был Валентин О., которого наш тамада, возможно, помнит, тем более, что имидж все тот же. Данный Валентин числился у нас в СПКБ инженером по профессии геолог, но, им­хо, в его светлой голове гулял один только ветер, и вряд ли он мог отличить гнейс от шпата. Когда грянула пере­стройка, Валентин пошел в охранники в магазин и, чувст­­вуя себя уже человеком, стал свататься к моей дочери, но, разумеется, неудачно – та отвергала даже женихов с яхтами в Брюс­селе и особняками в Париже. Вскоре след его затерялся. (А потом нашелся - покуролесив в охранниках, Валентин вернулся в родную контору, да так до сих пор там и трудится; начальником, небось, стал.)

Что интересно – Валентины(1) были гораздо более разнообразны и никаким обобщениям не под­да­ют­ся. Одна, например, выдвинула гипотезу, что число топо­ло­гий Гротендика на конечном линейно-упо­ря­до­чен­ном множестве равно двум в степени число элементов этого множества.

предисловие

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

Я просто собираюсь сюда забросить всё, что у меня нигде не опубликовано. Что ещё не готово, то лежит в виде "драфтов".

Saturday, December 17, 2005

javascript is our king

I wonder how many years should pass until javascript is recognized as a first-class, high level language. It seems like on interviews people are still mostly asked either EJB (which are dead) or some c programming (which is good, but ancient), or some "Java design". Look around. See, e.g. this piece of code

var Enumerable = {
each: function(iterator) {
var index = 0;
try {
this._each(function(value) {
try {
iterator(value, index++);
} catch (e) {
if (e != $continue) throw e;
}
});
} catch (e) {
if (e != $break) throw e;
}
},

all: function(iterator) {
var result = true;
this.each(function(value, index) {
if (!(result &= (iterator || Prototype.K)(value, index)))
throw $break;
});
return result;
},

any: function(iterator) {
var result = true;
this.each(function(value, index) {
if (result &= (iterator || Prototype.K)(value, index))
throw $break;
});
return result;
},

collect: function(iterator) {
var results = [];
this.each(function(value, index) {
results.push(iterator(value, index));
});
return results;
},

detect: function (iterator) {
var result;
this.each(function(value, index) {
if (iterator(value, index)) {
result = value;
throw $break;
}
});
return result;
},

findAll: function(iterator) {
var results = [];
this.each(function(value, index) {
if (iterator(value, index))
results.push(value);
});
return results;
},

grep: function(pattern, iterator) {
var results = [];
this.each(function(value, index) {
var stringValue = value.toString();
if (stringValue.match(pattern))
results.push((iterator || Prototype.K)(value, index));
})
return results;
},

include: function(object) {
var found = false;
this.each(function(value) {
if (value == object) {
found = true;
throw $break;
}
});
return found;
},

inject: function(memo, iterator) {
this.each(function(value, index) {
memo = iterator(memo, value, index);
});
return memo;
},

invoke: function(method) {
var args = $A(arguments).slice(1);
return this.collect(function(value) {
return value[method].apply(value, args);
});
},

max: function(iterator) {
var result;
this.each(function(value, index) {
value = (iterator || Prototype.K)(value, index);
if (value >= (result || value))
result = value;
});
return result;
},

min: function(iterator) {
var result;
this.each(function(value, index) {
value = (iterator || Prototype.K)(value, index);
if (value <= (result || value))
result = value;
});
return result;
},

partition: function(iterator) {
var trues = [], falses = [];
this.each(function(value, index) {
((iterator || Prototype.K)(value, index) ?
trues : falses).push(value);
});
return [trues, falses];
},

pluck: function(property) {
var results = [];
this.each(function(value, index) {
results.push(value[property]);
});
return results;
},

reject: function(iterator) {
var results = [];
this.each(function(value, index) {
if (!iterator(value, index))
results.push(value);
});
return results;
},

sortBy: function(iterator) {
return this.collect(function(value, index) {
return {value: value, criteria: iterator(value, index)};
}).sort(function(left, right) {
var a = left.criteria, b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}).pluck('value');
},

toArray: function() {
return this.collect(Prototype.K);
},

zip: function() {
var iterator = Prototype.K, args = $A(arguments);
if (typeof args.last() == 'function')
iterator = args.pop();

var collections = [this].concat(args).map($A);
return this.map(function(value, index) {
iterator(value = collections.pluck(index));
return value;
});
},

inspect: function() {
return '#<Enumerable:' + this.toArray().inspect() + '>';
}
}

Object.extend(Enumerable, {
map: Enumerable.collect,
find: Enumerable.detect,
select: Enumerable.findAll,
member: Enumerable.include,
entries: Enumerable.toArray
});
var $A = Array.from = function(iterable) {
if (iterable.toArray) {
return iterable.toArray();
} else {
var results = [];
for (var i = 0; i < iterable.length; i++)
results.push(iterable[i]);
return results;
}
}

Object.extend(Array.prototype, Enumerable);




I was walking around for years begging for java.lang.Object to be extended to include things that are ubiquitous these days. In javascript, you can just extend:

Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}




So I wonder when, when an "application javascript" suddenly pops up, to kill the legacy Java language? ;)

the issue of temporal logic

A while ago I had a problem representing "time logic" as a kind of topos logic. I mean, mapping pretty simple ideas to that semantics. But there was a problem I could not handle: objects in time use to "come and go" - meaning that the category you have to deal with would be not a linear poset, but the set of intervals. Which is too complicated. Again, the purpose was to map "ordinary notions" to logic over a category.

Now I got an idea. Say an object started to exist at time T0, and ceases to exist at time T1. These "non-existences" are two different kinds of non-existence. The one before T1 is where the object does not exist. The one after T1 is where the object exists "in memory", as reflected in its interactions with other objects. It is a rather Tralfamadorean model - "the object is now in a bad shape".

Sunday, December 11, 2005

5 in line game, on Klein bottle

First, you have to make Klein bottle. Do not bother to use time as the fourth dimension. Just take a piece of paper, draw a game board, 48 cells, 6 by 8, and then glue the edges. The two longer edges are glued together in the same direction; the two shorter edges are glued together in the opposite direction. You can easily do it in your imagination, of course, because imagination is infinite-dimensional. You could even imagine the board itself, but that's harder.

Now you can play Five In Line on the board.

Followers

Subscribe To My Podcast

whos.amung.us