?

Log in

Иномировой агент

Recent Entries

You are viewing the most recent 50 entries.

21st February 2017

17:59: Осторожное
Программисты бывают осторожные и ещё не осторожные. Первых, как ни странно, очень мало.

Осторожный программист, написав код, прогоняет все тесты.

Затем он запускает систему на своей машине и пробует её вручную. Потому что тесты тестами, но надо и глазами посмотреть.

Затем пушит код в отдельную ветку в корпоративном репозитории и требует у кого-нибудь — лучше у другого осторожного программиста — сделать кодревью.

Исправляет замечания.

Прогоняет тесты ещё раз.

Ещё раз запускает систему локально и пробует вручную.

Пушит исправления.

Получив одобрямс... нет, не выкатывает код в продакшен.

Ребейзит код на текущий мастер.

Ещё раз запускает тесты.

Ещё раз пробует локально.

Пушит.

Пробегается глазами по исправлениям.

И только после этого выкатывает код. Если ещё не наступил вечер — потому что ничего нет хуже, чем выкатить код в продакшен и уйти с работы.

А затем ещё некоторое время приглядывает — как оно, нормально работает? Не надо ли откатить на предыдущую версию?

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

А джип, как известно, застрянет там, куда другая машина не доедет.

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

This entry was originally posted at http://migmit.dreamwidth.org/71628.html. Please comment there using OpenID.

13th February 2017

20:29: А вот интересно,
вкусный ли кофе пьют на Украине?

This entry was originally posted at http://migmit.dreamwidth.org/71213.html. Please comment there using OpenID.

14th January 2017

20:57: Как поссорился Владимир Николаевич с Эльдаром Александровичем
Есть такой старый трюизм: два разумных человека всегда смогут договориться. И вот мне всегда было странно, что такие неглупые и, что уж там, симпатичные люди как Владимир Войнович и Эльдар Рязанов так и не смогли договориться и сделать фильм по «Чонкину». И я придумал одну теорию, которая, как мне кажется, это объясняет. Я никогда не был лично знаком ни с одним из них, и не могу всерьёз утверждать, что моя теория верна; скорее, это некое интеллектуальное упражнение.

Эльдар Рязанов оставил замечательно интересные мемуары — «Неподведённые итоги». Я читал их сначала на бумаге, а потом в электронном виде; электронный вариант был более полным, в частности, глава «Автора!» — в которой Рязанов рассказывает о подготовке сценария «Гусарской баллады» и о своих сомнениях в авторстве Александра Гладкова — в бумажном варианте отсутствовала. Возможно, это было более раннее издание, не знаю.

Нас, однако, будет интересовать сейчас не это. Давайте обратим внимание на те места, где Рязанов рассказывает о своей работе в Италии, где сняты некоторые эпизоды фильма «Необыкновенные приключения итальянцев в России». Судя по всему, итальянскому продюсеру было глубоко наплевать на этот фильм, и участники советской съёмочной группы не были, мягко говоря, желанными гостями. Рязанов приводит достаточно много деталей отвратительного обращения итальянских продюсеров с советскими киношниками. Но некоторые — только некоторые! — из этих деталей вызывают определённые вопросы.

Больше всего меня зацепила фраза «Когда мы снимали у себя дома, милиция помогала организовывать пешеходов, автомобили, регулировать потоки движения. В Италии натуру мы снимали документально, методом скрытой камеры — скрытой не столько от пешеходов, сколько от полиции». Я не знаю, как в тогдашнем Риме, но я представляю себе, что должен думать водитель, которого «регулируют» в объезд, потому что снимают какой-то фильм. Мне почему-то кажется естественным, что дорожная полиция не должна быть так уж счастлива помогать делать кино; её основная задача — помогать водителям. В совке же к людям как к людям никогда не относились: «Шоссе оцепили, чтобы никакой встречный автомобиль случайно не ворвался на дорогу» — это из тех же мемуаров, но уже про съёмку в СССР.

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

Сразу же начался скандал. Участники массовки и толпа, которая возникла мгновенно, стали требовать от директора картины денег в уплату пострадавшему и заодно — всем свидетелям тоже. Иначе они сейчас же пойдут в редакцию газеты, которая помещается тут же на площади, расскажут о безобразии съемочной группы и фирме Дино Де Лаурентиса не поздоровится.

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

Хочу внести ясность. Очень многие фильмы Рязанова я обожаю. Всё, что он сделал между «Гусарской балладой» и «Забытой мелодией для флейты», на мой взгляд — абсолютнейшие шедевры (ну, ладно, кроме «Стариков-разбойников», которые фигня). «Иронию судьбы» я могу смотреть с любого места; прошедший Новый год — первый, когда я её не посмотрел. Упомянутую «Гусарскую балладу» я смотрел более сотни раз, абсолютно буквально. У него даже Гурченко хорошо играет, в «Вокзале для двоих», и более того, играет наравне с самим Басилашвили!

И вне всякого сомнения, Рязанов прекрасно понимал гнилую сущность совка. Он сам написал прекрасное стихотворение, как нельзя более точно выражающее эту сущность — «Жить бы мне в такой стране, чтобы ей гордиться...»

Но при этом, мне кажется, Эльдар Рязанов во многом оставался — советским человеком.

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

Но вот Войнович, как мне кажется, каким-то образом умудрился быть западным человеком. Не стать им после эмиграции, а быть им изначально. Опять-таки, я сужу только по его собственным воспоминаниям. Взять, хотя бы, вот этот отрывок из книги «Жизнь и необычайные приключения писателя Войновича (рассказанные им самим)»:
У диссидентов было принято при любых обстоятельствах демонстрировать, что они действуют исключительно законными методами, поэтому если на кого-нибудь нападали, он обычно поднимал руки, показывая возможным свидетелям, что сам никого не трогает. Я решил для себя избрать другую линию поведения. Решил, что если на меня нападут хулиганы — будь то настоящие или, вероятнее всего, мнимые, — я, сколько б их ни было, окажу сопротивление. Если сумею хотя бы одного ударить — ударю, не сумею ударить — укушу, не смогу укусить — плюну в рожу (слово «лицо» в данном контексте неуместно).
Возможно, конечно, что Войнович здесь несколько приукрашивает собственные мысли и намерения того времени — рассматривая их через призму прошедших лет. Но вернёмся к «Чонкину». Я прочитал эту историю как в воспоминаниях Рязанова, так и в воспоминаниях Войновича, и составил для себя примерно такую картину.

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

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

С точки зрения Войновича — человека полностью западного — малознакомый человек пришёл ему на помощь в трудную минуту и пошёл ради него на большой риск. Этот человек — его друг, с которым, к тому же, их связывают определённые деловые отношения. Да, скоро срок передачи прав кончится, что, разумеется, является поводом обсудить условия их продления. К тому же, талантливый режиссёр хочет экранизировать роман, что станет для них обоих — и писателя, и его друга-бизнесмена — приятным подарком. Конечно, можно и не продлевать права на «Чонкина» — но с чего бы вдруг?

И вот об эту разницу в мировоззрениях они и споткнулись. В результате, рязановский фильм так и не появился. Думаю, это, скорее, хорошо. Рязанов только что снял свой первый, после долгого перерыва, слабый фильм «Дорогая Елена Сергеевна», и ещё не снял следующий, откровенно тошнотворный фильм «Небеса обетованные». Вряд ли «Чонкин» получился бы хорошим — по крайней мере, по сравнению с романом.

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

This entry was originally posted at http://migmit.dreamwidth.org/71039.html. Please comment there using OpenID.

12th January 2017

00:49: Вторая годовщина
Ну вот, прошло два года. Два года, с тех пор, как я покинул это поганое отечество.

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

У меня не осталось семьи в эрэфии. Равно как и имущества. Так что экстремальный туризм «поездки на родину» прекращён. Надеюсь, что навсегда.

В общем — жизнь идёт.

This entry was originally posted at http://migmit.dreamwidth.org/70749.html. Please comment there using OpenID.

26th December 2016

19:10: Экстатическое
Не примут, конечно. Но на случай, если таки вдруг — хочу зафиксировать: я в полном восторге. Прошу считать этот пост официальным выражением ликования по поводу крушения военной тушки неподалёку от сочей.

This entry was originally posted at http://migmit.dreamwidth.org/70613.html. Please comment there using OpenID.

15th December 2016

13:19: Запрещённое (в Северной Корее, по крайней мере)
Поистине, Go — шикарный язык программирования. У него настолько нет недостатков, что его создатели, не зная, что ещё усовершенствовать, решили сделать для него специальные новые шрифты. А что? Хорошим программам — хорошее оформление:

Давайте, всё же, немножко поменяем программу, и, вместо того, чтобы выводить простые числа, посчитаем их количество. Не всех, конечно, а тех, которые меньше определённого порогового значения. Изменится при этом только функция main, так что никаких проблем быть не должно:
package main
import "fmt"
import "os"
import "strconv"
func Generate(ch chan<- int) {
        for i := 2; ; i++ {
                ch <- i
        }
}
func Filter(in <-chan int, out chan<- int, prime int) {
        for {
                i := <-in
                if i%prime != 0 {
                        out <- i
                }
        }
}
func main() {
        c := 0
        n, _ := strconv.Atoi(os.Args[1])
        ch := make(chan int)
        go Generate(ch)
        prime := <-ch
        for prime <= n {
                c++
                ch1 := make(chan int)
                go Filter(ch, ch1, prime)
                ch = ch1
                prime = <-ch
        }
        fmt.Println(c)
}
Уж извините, но я менял программу, и она перестала быть достойной этих роскошных шрифтов.

Запускаем:
$ gccgo -g -o primes primes.go
$ ./primes 10
4
И правда, простых чисел до 10 всего четыре: 2, 3, 5 и 7. Ура!

Пробуем ещё:
$ ./primes 100
25
И правда. Ещё:
$ ./primes 100000
Не понял, висим, что ли?

Ждём.

Ждём.

А, вот:
9592
Долго что-то. Ну, дело такое, простые числа считаются нелегко. Не то, чтобы для них формула была, правда?

А главное, программу так легко распараллелить! Просто написали go — и готово! Программа тривиальным образом делается быстрее во сколько хошь раз! Вот, для сравнения, однопоточная, классическая версия:
package main
import "fmt"
import "os"
import "strconv"
func main() {
        n, _ := strconv.Atoi(os.Args[1])
        sieve := make([]bool, n-1)
        c := 0
        for p, b := range sieve {
                if !b {
                        c++
                        for i := 2; i <= n / (p+2); i++ {
                                sieve[i*(p+2)-2] = true
                        }
                }
        }
        fmt.Println(c)
}

Покороче, но зато ни разу не распараллеливается, все эти циклы выполняются итерация за итерацией — ужас. Вот, смотрите:
$ gccgo -g -o slowPrimes slowPrimes.go
$ ./slowPrimes 100000
9592
Не понял.
$ time ./primes 100000; time ./slowPrimes 100000
9592

real	3m20.962s
user	2m36.270s
sys	0m44.936s
9592

real	0m0.047s
user	0m0.028s
sys	0m0.020s
Ого.

Хотя вообще, понятно, тест нечестный. Там же куча накладных расходов — создание всех этих тредов, каналов, пересылка сообщений через них... Ясно, что на подобном синтетическом примере они будут играть основную роль. Давайте введём их в нашу «классическую» версию: будем создавать по дополнительному потоку на каждый чих (точнее, на каждое простое число), а числа будем не тупо отмечать в массиве, а пересылать в сообщениях. И оставим всё однопоточным: каждый поток, породив ещё один, будет тупо ждать, пока тот завершится:
package main
import "fmt"
import "os"
import "strconv"

type SieveCommand interface {
        perform(sieve []bool, top int)
}

type Cross struct {
        number int
}

func (c Cross) perform(sieve []bool, top int) {
        sieve[c.number-2] = true
}

func cross(number int, sieveCommands chan<- SieveCommand) {
        sieveCommands <- Cross{number: number}
}

type Lookup struct {
        from int
        result chan<- int
}

func (l Lookup) perform(sieve []bool, top int) {
        for p := l.from; p <= top; p++ {
                if !sieve[p-2] {
                        l.result <- p
                        return
                }
        }
        l.result <- 0
}

func lookup(from int, sieveCommands chan<- SieveCommand) int {
        result := make(chan int)
        sieveCommands <- Lookup{from: from, result: result}
        return <-result
}

func Sieve(sieve []bool, top int, commands <-chan SieveCommand) {
        for {
                command := <-commands
                command.perform(sieve, top)
        }
}

func OnPrime(prime int, top int, sieveCommands chan<- SieveCommand, result chan<- int) {
        for n := 2*prime; n <= top; n += prime {
                cross(n, sieveCommands)
        }
        p := lookup(prime+1, sieveCommands)
        if p == 0 {
                result <- 1
        } else {
                subResult := make(chan int)
                go OnPrime(p, top, sieveCommands, subResult)
                r := <-subResult
                result <- r+1
        }
}

func main() {
        n, _ := strconv.Atoi(os.Args[1])
        sieve := make([]bool, n-1)
        sieveCommands := make(chan SieveCommand)
        go Sieve(sieve, n, sieveCommands)
        result := make(chan int)
        go OnPrime(2, n, sieveCommands, result)
        r := <-result
        fmt.Println(r)
}

Тут много чего происходит; в общем, на каждое простое число создаётся даже не один канал, а два (один — в функции lookup, чтобы отыскать следующее, а другой — для передачи результата). Причём, найдя новое простое число, мы создаём новый поток, а старый — замирает, и ждёт, пока ему принесут на блюдечке этот самый результат. Ну, теперь точно будет медленно.
$ gccgo -g -o verySlowPrimes Dropbox/verySlowPrimes.go 
$ time ./verySlowPrimes 100000
9592

real	0m2.186s
user	0m1.000s
sys	0m1.174s
М-дя. Помедленне, конечно, но как-то не получаются те три минуты, которые были в исходном варианте.

Ладно, хорош издеваться. В Северной Корее запрещён сарказм, но мы-то, слава Монстру, не в Северной Корее (если вы таки в Северной Корее, то могу вас только поздравить с тем, что вам удалось вылезти в интернет). Если коротко, то: нефиг было лекции прогуливать. В варианте от авторов Go каждое простое число мы проверяем на делимость на каждое меньшее простое число. Что всего в два раза меньше, чем если бы мы проверяли каждое простое число на каждое простое число — а это, по сути, все пары простых чисел, что означает (количество простых чисел)2 операций сравнения. Простых чисел, меньших n, всего около n / ln n (гуглить по словам «асимптотика простых чисел»), так что получается n2 / (ln n)2 — почти что квадратичное количество операций.

А вот классическое решето Эратосфена (второй или третий вариант) работает гораздо быстрее: для каждого простого числа p вычёркиваются примерно n / p чисел — то есть, всего количество операций будет n * (1/2 + 1/3 + 1/5 + 1/7 + ...). Это можно ОЧЕНЬ ГРУБО оценить сверху как n * (1/1 + 1/2 + 1/3 + 1/4 + ... + 1/n) (просто добавив слагаемых), а это, в свою очередь — как n * (1/1 + (1/2 + 1/2) + (1/4 + 1/4 + 1/4 + 1/4) + ...) — каждая из внутренних скобок равна единице, а их количество — log2n, то есть получается максимум n * log2n операций. На самом деле, оценка слишком грубая, и правильный ответ будет n * ln(ln n) — но и так хорошо, почти линейная зависимость.

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

12th December 2016

13:21: Westworld
I was a bit sick yesterday and decided to watch "Westworld".

Massive spoilers ahead. You've been warned.

First one (meta-spoiler): I didn't like it.

There are two things I care about in the movie: characters and plot. It's possible to make a good movie without one of those (Bergman was a master of movies without a plot; Christopher Nolan was (not anymore) a master of movies without characters), but it rarely happens; it's not possible to make a good movie without both. Unfortunately, in "Westworld" both fail. Not completely, but significantly.

Let's start with characters. One of the central characters here is Dolores (Evan Rachel Wood). She is a "host", which in the show's context means "robot". Wood certainly tries to play her part convincingly, but overdoes it a bit, looking less like a robot and more like a brick. If you look in her eyes — and the show gives us plenty of opportunities to do that — you are rewarded with an unobstructed view of the back of her cranium.

Another host, Maeve (Thandie Newton), gets a bit more interesting somewhere in the middle, when she starts taking control of her life. But her idea of "taking control" seems to be "murder everyone I don't need and threaten with murder the ones I do". There were interesting parts, when she discovered the stash of sketches under a floorboard, or when she made Hector search for a bullet inside her... but it was a brief moment.

The purpose of Dolores in the park is for men to fight over her — and win her. I just don't see it. Fighting for Maeve I could get; but she is for sale, so, no luck.

We're told that in "Westworld" the hosts a routinely reassigned to other positions — like, first Dolores' father (forgot his name) used to be a sheriff, and before that — a professor. We see that Maeve used to be a farm girl. You'd think that's an actors paradise — playing a lot of different characters instead of just one. But no. In "iZombie", which, IMNHO, is one of the best things on TV right now, Liv Moore does switch personalities, while still having a very strong one of her own; in "Dollhouse", which bears certain degree of similarity to "Westworld", Echo, Sierra, and Victor do pretty much the same; but here everybody retains the same personality, while not actually having any.

Humans aren't much better. Ed Harris certainly looks good as a Man in Black, but that's what Ed Harris always does. Can't say the same about his younger self. William aged really well; even without a hat, old and balding, Harris is more handsome than Jimmi Simpson. But it's hard to identify with William, who fell in love with a walking toaster, and hard to identify with Man in Black, who is painted with as much black paint as they could find. And when it's finally revealed that he just wanted to make the hosts able to fight back — dude, you own the company! Surely you can find an easier way to make Dr. Ford change a few lines of code! (Sure, you'll get sued by victims' relatives, but if that's what you want...)

Speaking of Dr. Ford. Anthony Hopkins routinely plays characters who are above the world. Here he brings nothing new. No new shades, no new angles. Just the same. No one can best him at the beginning; no one could best him at the end.

There is, I think, only one character who was a bit interesting. No, not Bernard/Arnold; Elsie. Young and inexperienced, but also quite smart. Ambitious, but wanting to do good. Her demise was only a result of not being given full information. In a better show she might have become a serious obstacle to Ford's manipulations — or a great ally to him; here she is nothing but a small distraction.

Let's talk about the plot then. What strikes me is how unimaginative "Westworld" is. There is so much potential here. And almost all of it is wasted.

For example: I get that some people would dress up as cowboys and try to play the part. But I don't believe all of them would agree to leave their Android phones behind (everybody in the show seems to be using the same phone, and, given how ugly the UI is, I bet it's Android). Maybe not just phones; smart watches, smart glasses — everything. Even if there is no Internet access in the Westworld (which would be a huge blow to the company income), they are still useful. And, given that that photo of William's bride remained there for thirty years, some of the lost electronic devices would remain as well. Not just lost; stolen, also. Sometimes hosts can actually hide things from their masters, like Maeve did with her drawings. So, I imagine a black market with electronics; general awareness of a bigger picture; hell, even some of the hosts having their own blogs!

Another problem with the setting is what the guests actually get for their money. Forget Man in Black, he as far from typical as it gets. Shoot a criminal? Have sex with a hooker robot (or is it robot hooker)? I'm pretty certain you can have all that much cheaper.

Man in Black keeps talking about a "deeper level of the game", but there is no game. The thing is, people play video games for two reasons: a) they don't get really hurt; and b) they feel like they won. Hosts can't kill humans (at least those that are in the park); but they can punch them. Would you go to a theme park where workers would sometimes beat you up? And what it is that you win?

Sure, you can have your private orgy there, but... do you really want it in a dirty brothel? More importantly: do you really want it under a surveillance, without knowing how many employees would have a look?

But enough about premise; let's talk about how it plays out. And the answer is: not in a good way. Apparently, Dr. Ford was trying... no, there is no "trying" for him; he was setting up a robot apocalypse. Um... and how is it good? Earlier, Arnold said that robots would be considered an enemy by humans; Ford just ensured that they would be enemies for real.

You know, I'm sick of this robot threats. In my review of "Interstellar" I've mentioned that pretty much the only thing that I liked there was that robots were people's allies. It's so easy — and so cliched — to write a toaster uprising; it's much more interesting to see real interaction between sentient species. And no, the scripted sex between Dolores and William doesn't count, as it's scripted.

Okay, I've wrote enough. Despite everything I've said, my time wasn't exactly wasted here. "Westworld" isn't the worst way to pass the time. It desperately tries to be something more; but it's not.

10th December 2016

13:15: Домовладельческое
На работе. Стою возле кофемашины, читаю твиттер. Натыкаюсь на смешную запись, усмехаюсь.

Из-за угла выворачивает Кеки, наш главный по технической части, замечает меня и спрашивает «Что, русские анекдоты читаешь?"

Я говорю «Нет, как раз английские» и зачитываю ему вслух содержание твита:

Посмеялись вместе, он ушёл по своим делам. Из переговорки за стеной выходит Шериф — один из коллег — и несколько недоумённо спрашивает: «Мне послышалось, или ты тут мяукал»?

13th November 2016

12:53: Автостопное
Это просто мне не попадалось, или и в самом деле никто не додумался после американских выборов процитировать вот это:
Совершенно не случайным, однако, было то, что сегодняшний день, день завершения проекта, великий день открытия, день, в который «Сердцу Золота» суждено было предстать пред лицом восхищенной галактической общественности, был также кульминационным днем лично для Зафода Библброкса. Именно ради этого дня принял он когда-то решение баллотироваться в президенты, решение, которое в свое время вызвало бурю крайнего удивления и недоумения у народов Галактики. Зафод Библброкс? Президент? Только не этот Зафод Библброкс! Только не президент! Многие граждане считали саму возможность подобного решения безоговорочным подтверждением того, что у всей вселенной окончательно съехала крыша.

Зафод ухмыльнулся и поддал газу.

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

Президент?

На самом-то деле, никакая крыша ни у кого не съехала, по крайней мере, не в этом отношении.

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

Единственное, чего они совершенно не понимали, так это почему Зафод принял такое решение.

Зафод круто повернул, лихо взметнув ввысь отвесную стену воды.

Сегодня наконец настал день, когда все поймут, что было нужно Зафоду Библброксу. Ради сегодняшнего дня он столько лет провел в Президентах. А кроме всего прочего, сегодня ему исполнялось двести лет, но это было не более чем очередное случайное совпадение.
И чуть позднее:
Форд был ошарашен и некоторое время не мог говорить. Потом расхохотался.

– Ты хочешь сказать, – сквозь смех выговорил он, – что стал Президентом только для того, чтобы угнать «Сердце Золота»?

– Факт, – сказал Зафод с ухмылкой, увидев которую, многие люди немедленно оказались бы заперты в палате с обитыми стенами.

– Но зачем? – недоуменно спросил Форд. – Для чего он тебе?

– А я почем знаю, – пожал плечами Зафод.
Если кто не в курсе, это Дуглас Адамс, «Автостопом по Галактике».

Так вот. Кхм. Никто не в курсе, что там США конструируют такое секретное? Да ещё во Франции, потому что
Зафод Библброкс был на пути от миниатюрного космопорта на Восточном острове (название которого суть не что иное как случайное совпадение – на галактилекте, «восточный» означает «маленький, плоский и светло-коричневый») к острову, где проводились работы над «Сердцем Золота». По еще одному случайному совпадению, остров назывался Франция.

Одним из побочных эффектов разработки «Сердца Золота» явилась целая цепь абсолютно случайных и абсолютно бессмысленных совпадений.

10th November 2016

13:03: Лингвистическое
Как образовать прилагательное от слова «пари»? «Паришное»?

В общем, двое моих коллег, как оказалось, заключили пари на тему «кто победит на выборах в США». Но потом тот, кто выиграл, решил, что грешно наживаться на чужом горе, и заказал на всех пиццу.

Так что пока от Трамповой победы мы видели только хорошее.

9th November 2016

10:40: Голосовательное
Я уже писал, что в Венгрии был референдум на тему «пущать мигрантов или не пущать». Референдум оказался недействительным, но премьер-министр Орбан заявил, что он «политически действителен» (карикатуристы откликнулись картинкой, на которой пассажир трамвая показывает контролёру проездной, тот говорит «ваш проездной недействителен», на что получает ответ «политически — действителен»), и что он собирается внести поправки в конституцию и запретить подселение мигрантов совсем.

Так вот, вчера парламент Венгрии эти поправки провалил, не набрав конституционного большинства (едва-едва).

Это очень хорошо. Но мне бы хотелось обратить внимание на то, насколько это хорошо для Орбана.

Электорат на свою сторону переманил? Переманил. Основной противник правящей партии Fidesz — партия Jobbik, ультраправые, которые совсем недавно были стопроцентными националистами (в частности, антисемитами). У них была совершенно непримиримая позиция по мигрантам; Орбан выдал столь же непримиримую.

Мигрантов в страну не впустил? Не впустил, по крайней мере — в статистически значимых количествах. ЕС изначально требовал от Венгрии принять всего две тысячи мигрантов, даже меньше. Венгрия хоть и маленькая, но такое количество даже не заметит.

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

Я, конечно, ни на что не намекаю на вполне понятную конспирологическую гипотезу. По моему убеждению, Орбан — хитрая скотина, и вполне может провернуть многоходовочку (настоящую).

2nd November 2016

11:21: Эфемерное
Наткнулся на статью «Эфемерность Кадырова», и что-то мне захотелось ответить.

Начнём вот с чего. Автор автоматически относит всех, несогласных с ним, в категорию доказывающих, что, дескать, ВВБХ «продвигает Трампа в президенты, организовало Брекзит, стоит за хаосом в Сирии, чуть не отхапало половину Украины и вообще довольно–таки злодейская фигура». По его логике, подобное существо просто не может бояться Академика и регулярно платить ему дань. Потому как Академик всяко мельче, чем Трамп и Украина.

Но почему-то ему не приходит в голову, что если A противоречит B — это не значит, что A ложно. Может быть, ложно как раз B. И как хотите, мне не верится, что ВВБХ стоит за Брекзитом или Трампом. С последним у них, видимо, любовь, и ВВБХ в меру сил и способностей помогает корешу, но это — мелочь, которая, скорее, мешает Трампу, чем помогает (например, давая Клинтон возможность обозвать конкурента «марионеткой Путина» прямо на дебатах, от чего Трамп, как и ожидалось, задохнулся и понёс уже совершеннейшую чушь). Ну, а насчёт «чуть не отхапало половину Украины» — как известно, «чуть» не считается.

Так вот. Я лично считаю, что если что-то выглядит как утка, то нужны очень, очень серьёзные аргументы, чтобы сделать вывод, что это не утка. Ещё раз: очень, очень серьёзные. Если кандидат в президенты выглядит идиотом — это не потому, что он притворяется идиотом, это почти наверняка потому, что он и есть идиот. И к действующему президенту (другой страны) это относится в той же мере. Если похоже, что ВВБХ платит Академику дань — почти наверняка это так и есть.

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

«Запомните этот твит — Кадыров уйдет до нового года». Запомнили. Не уйдёт — разве только (с маленькой вероятностью) сдохнет от вируса или динамитной шашки. И нет, ни вирус, ни динамитная шашка зарплату в ГБ не получают.

22nd October 2016

20:14: Выйду на улицу...
Пошёл тут прогуляться, вижу — толпа. С факелами. Ну, я сначала решил, что это очередной уличный протест. Как утверждает одна из моих учительниц венгерского, в Будапеште уличные протесты — национальное развлечение, типа «ну что, куда пойдём — в кино или протестовать?» Но потом до меня дошло. Завтра же годовщина восстания 1956 года, когда, цитируя Фиалкова, «совдепия окончательно смахнула с себя последние остатки топорного макияжа и явила миру своё злобно-тупое рыло». Вот по этому поводу, стало быть, памятный марш.


Перед колонной едут грузовики — старые, того времени — с символически пробитыми знамёнами.


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


На одном из грузовиков так и написано, «1956, октябрь, 23».


Колонна реально огромная, но совершенно спокойная.


Когда колонна немного отвернула — чтобы пройти возле стен Замка — это заметили не все.


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


А по набережной так и гуляет народ, и шествие ему совершенно не мешает.

10th October 2016

18:34: Классическое
Как оказалось, российская политика предоставляет огромные возможности для цитирования классики и не только.
Например:Collapse )
Многие цитаты перевраны, но без изменения смысла.

4th October 2016

14:29: Требовательное
Тут начальник бензоколонки выкатил ультиматум зажравшимся американцам. Потребовав при этом довольно много довольно странного.

I. Отменить:
1) Санкции, которые только помогли.
2) Закон Магницкого.

II. Выплатить компенсации за:
1) Санкции.
2) Антисанкции.
3) Низкую стоимость нефти.
4) Загаженные подъезды.

III. Вернуть:
1) Колбасу за 2.20
2) Доллар за 67коп.
3) Нефть по 120.
4) Девственность Мизулиной.
5) СССР.

IV. Прочее:
1) Убрать войска НАТО от бензоколонки.
2) Перестать называть его нехорошими словами.
3) Прекратить, наконец, гадить в русских подъездах!
4) Постирать ему штаны.
5) Прислать две коробки галоперидола.
6) (другим почерком) И седьмой айфон.

Кто ещё что вспомнит?

3rd October 2016

13:47: Двуххвостое
Полагаю, что подавляющее большинство людей в мире — полные идиоты.

Вчера в Венгрии был референдум по поводу Сирийских мигрантов. Пущать — или не пущать. Ответ, который предпочитает правительство — «не пущать». Опросы, до референдума, показывали, что этот ответ поддерживают, по разным оценкам, от 60% до 85% населения.

Но произошло забавное. В пользу «не пущать» высказались 98% голосовавших — но при этом только 40% населения действительно проголосовали (и ещё порядка 4% пришли на референдум и испортили бюллетень). По Венгерским законам, референдум, в котором приняли участие менее половины избирателей, силы не имеет.

То есть, за «пущать» были многие, но почти все из них остались дома, либо выразили свой протест иным образом.

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

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

Вот я и думаю: подавляющее большинство людей в мире — полные идиоты; но, может быть, не 99%, а всего 95%?

17th September 2016

14:05: Фантазийное
По мотивам одного поста avva. Интересно, когда люди представляют себе, скажем, поездку на поезде — они реально видят вокруг себя поезд? Видят, как он покачивается, как кто-нибудь проходит по вагону? Слышат стук колёс? Чувствуют ветер из приоткрытого окна?

Я могу, если постараюсь, увидеть размытую статическую картинку, причём как будто «за стеклом» — меня в этой картинке нет. Я совершенно не в состоянии увидеть движущуюся картинку. Я могу услышать голос контролёра «предъявите билеты, пожалуйста», но при этом теряю изображение. Я могу увидеть, во что одет мой сосед — но при этом из поля моего зрения (внутреннего) совершенно пропадает остальной вагон.

Я не могу считать овец, чтобы уснуть. Могу представить себе овцу и забор, хотя и весьма нечётко. Представить сам прыжок овцы через забор — нет.

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

Вот здесь — отчёт программиста и писателя Блейка Росса, у которого подобного графического — и звукового — воображения нет вообще. Очень любопытный.

3rd September 2016

14:03: Предвыборное
Тут ходит по интернету новая забава — делать, с помощью соответствующего сервиса предвыборные плакаты со своей физиономией. Я попробовал, получилось что-то психоделическое:

Вторая попытка оказалась ещё кручеCollapse )

7th August 2016

21:38: Rebutting
Roman Cheplyaka posted an excellent answer to the Andrej Bauer's statement that "Hask is not a category", saying "Does it matter if Hask is (not) a category?". I'd like to add a few words of my own to that discussion.

We really don't care about whether Hask is a category; that is, if types and functions defineable in Haskell form a category. But not because we are totally OK with an imperfect model (although we are); the real reason is that we never really work in Hask. We only work in some other category, into which Hask can be embedded. Bauer mentiones one of such categories — the category of "continuous posets" (probably domains); there are others, more refined categories such as the category of dI-domains. The point is, we never really care about Hask itself. I think it's possible to define, in a strong mathematical sense, the the category whose object would be EXACTLY the types we can define in a certain variant of Haskell, and the functions would be EXACTLY the functions that we can define between them (although I'm not sure if undefined should be considered a valid function, despite what Wikipedia might say). But, first of all, that category would be very implementation dependent (and even compiler-extensions dependent), and, what's worse, it won't have virtually any nice properties. We won't even have cartesian products in that category!

So, who cares? We embed this category into some larger (although not much larger) category that has all those nice properties. There are different ways to do that, some more refined than the other; and the results we obtain stay true as soon as you choose a refined enough embedding. That works great; there is no need to use Hask itself.

4th August 2016

23:34: Благодарственное.
Чего-то меня потянуло на ночь глядя сделать демотиватор.

Вот.

11th July 2016

13:15: Узнавательное
Сегодня я узнал две забавных штуки:

1) "Эффект кобры". Означает ситуацию, когда очевидное решение некоей проблемы приводит к её ухудшению. Происходит из исторического анекдота: английские власти в Индии, пытаясь извести кобр, объявили награду за каждую убитую кобру. Предприимчивые индусы начали разводить кобр, а потом сдавать за вознаграждение. Узнав об этом, англичане отменили награду. Предприимчивые индусы пожали плечами и выпустили кобр на волю. В результате кобр стало больше.

2) "Забор Честертона". Принцип, означающий, что отменять или исправлять что-то следует только тогда, когда понимаешь, зачем оно было сделано изначально. Честертон в качестве примера приводил забор, который не стоит сносить, не зная, зачем его поставили. Забавная идея, но не всегда верная. В некоторых случаях имеет смысл заранее предполагать, что забор поставил полный идиот.

1st June 2016

14:48: Чтоб не забыть
Чтобы на Маке скомпилировать, при помощи ghc или cabal, бинарник, включив в него libgmp статически, проще всего перед компиляцией сохранить куда-нибудь libgmp.dylib и скопировать на его место libgmp.a.

Это я одну внутреннюю программку пишу, для использования коллегами. Некоторые используют.

31st May 2016

14:47: Как протроллить бывшего работодателя
Недели две назад из нашей конторы уволили одного разработчика, по имени Миколай. Он поляк по паспорту, венгр по самоидентификации (на польском не говорит), работал до недавнего времени в Нью-Йорке, переехал (вроде бы) в Лондон.

Сразу скажу: почему его уволили — никто, с кем я разговаривал, не знает (или не говорит), включая самого Миколая. И сделано это было довольно бестактно; в частности, через полчаса после прихода письма о его увольнении, пришло ещё одно письмо, о поиске новых сотрудников.

Но затем Миколай перебрался на новое место работы, где, судя по всему, его попросили назвать тех, кого он рекомендовал бы нанять, так его текущий работодатель — это молодая, активно развивающаяся компания. И Миколай, похоже, назвал всех своих бывших сослуживцев, кого только смог припомнить. Ну, кроме, наверное, Ника Дентона (основателя и CEO нашей конторы). В том числе тех, кто его терпеть не мог, причём взаимно. В пятницу несколько американских коллег получили звонки от рекрутера (одного и того же). Сегодня настал черёд Будапешта: один и тот же рекрутер (но другой) некоторым написал письмо (мне в том числе), другим послал сообщение в LinkedIn.

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

30th May 2016

17:12: Марсианское
Update: English version here

Я вернулся из Нью-Йорка. Ещё вчера.

По дороге туда посмотрел, наконец, фильм "Марсианин", по книге Энди Вейра. И вот, что я могу по его поводу сказать.

Мне чрезвычайно нравится книга. Я даже сделал собственный перевод (мой первый опыт перевода больших произведений). Причём получил от процесса большое удовольствие.

И мне очень не понравился фильм. Сейчас поясню, почему.

Massive spoilers ahead!

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

2. Те самые две-три капельки оказались противоречащими всему. Конкретнее:

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

2.2. Финальное спасение. В том-то и фишка, что в книге астронавты "Гермеса" — это идеально подогнанная команда. Они знают возможности друг друга, и они полностью друг другу доверяют.

2.2.1. Именно поэтому Льюис НЕ МОГЛА в последний момент сдёрнуть Бека с задания и отправиться в космос сама. Он — их специалист по работе в невесомости; он лучше, она это знает, и она полностью ему доверяет. Если кто-то справится — то это он. Считай она, что сама сделает всё лучше него, то это было бы в первоначальном плане.

2.2.2. И опять же, Уотни НЕ МОГ, в нарушение приказа, покинуть своё место и отправиться ей навстречу. Да, пока он один, он действует по своему разумению; бюрократов из НАСА он вообще за людей особо не считает; но, как он сам говорит в книге, будь там Льюис — он выполнил бы любой её приказ не раздумывая. Он спорит с ней, убеждает, но сделать то, что она прямо ему запретила — никогда.

2.3. Не знаю, куда это отнести, к добавлениям, или к удалениям. Пусть будет здесь. В общем, в книге есть момент, когда Уотни размышляет о законах, действующих в космосе, и о том, что никто не дал ему формального разрешения подняться на борт космического корабля, на котором он улетит с Марса. И никто не может дать ему такое разрешение, пока он не доберётся до этого самого корабля и не поднимется на его борт, потому что из-за глупой случайности он лишился связи с землёй, и восстановить её не может. Так вот: в фильме эти его рассуждения ОБСУЖДАЮТ НА ЗЕМЛЕ. Потому что в фильме случайности не было, связь с землёй у него есть, и он эти свои мысли передал в НАСА. И почему они таки не дали ему формальное разрешение?

2.4. Отставка Митча — что это было и нафига? Не смогли найти способ убить Шона Бина? В книге Митч рассуждает вполне логично — НАСА, чтобы избежать скандала, скроет бунт на "Гермесе", выдав вариант Рича за своё решение; а значит, все, в том числе Митч (и Льюис), в полной безопасности. Тем самым роман отвечает на вопрос: пошли ли Льюис и Мартинез по завершении полёта под трибунал. Не пошли.

3. То, что исчезло. Конечно, уместить роман целиком в один фильм невозможно, сокращения необходимы. Но исчезло некоторое количество вкусных моментов, без которых роман теряет своё очарование.

3.1. Бет Йохансен, обсуждая с отцом опасность, что они не смогут подцепить посланную с Земли капсулу с провиантом и другими припасами — и, как следствие, через месяц умрут от голода — говорит ему, что другие умрут, но не она. Потому что остальные решили, что покончат с собой сразу, не дожидаясь голода, а вся еда останется ей — а также четыре крупных, вполне съедобных куска мяса.

3.1.1. Астронавты у Вейра продумывают ВСЁ. Как говорит сама Йохансен "у них всегда есть запасной план". Это — их запасной план, для самого пикового расклада. Тот же Уотни, между прочим, предваряет КАЖДЫЙ свой шаг расчётами.

3.1.2. В то же время, астронавты способны придумать такое, до чего нормальный человек в нормальной ситуации не додумается. Потому что они — не нормальные люди (пробел здесь важен), находящиеся в не нормальной ситуации (а здесь — не особенно). И вариант с Йохансен — это своего рода прелюдия к безумному трюку, который Льюис, при поддержке остальных, проворачивает в конце.

3.1.3. И ещё — астронавты склонны ВСЕГДА искать способ вырвать у природы хотя бы частичную победу. В данном случае — спасти хотя бы одного из них.

3.2. Эпизод с шлюзом в фильме — это такой "рояль в кустах", который резко урезает оставшееся у Уотни время. И только. Вся борьба Марка с утечкой воздуха из шлюза — выброшена, его попытки герметизировать скафандр свелись к нескольким полоскам изоленты, бросок в сдувшийся Хаб, где полный бардак (ещё бы, после взрывной декомпрессии-то) — исчез. И, кстати, шлюз, в романе имевший размеры телефонной будки, в фильме резко вырос. Из этого вполне можно было сделать напряжённый клаустрофобный эпизод, но — нет.

3.2.1. Действия Уотни в шлюзе — пример того самого "сначала планируем, потом делаем", несмотря на жёсткие ограничения по времени. В романе, а не в фильме.

4. Самое главное. В романе Марк Уотни — весельчак, балагур; по утверждению психолога НАСА, в стрессовой ситуации он шутит БОЛЬШЕ обычного. Юмор — существенная часть обаяния этого романа. В фильме Уотни превращается в унылую бездарность Мэтта Деймона.

6th May 2016

12:16: Командировочное
С 15 по 28 мая буду в Нью-Йорке. Вообще по рабочим делам — но 25-го схожу, наконец, в "Мет". Что на выходных буду делать — пока не решил.

20th April 2016

12:25: Акционное
А кто знает, можно ли купить какие-то акции в эрэфии, а потом продать их в нормальной стране? Чтобы не тащить крупные суммы через границу и не светить зарубежный счёт?

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

7th April 2016

15:27: Ленивое
У нас на работе до недавнего времени использовали таск-трекер Trello. Сейчас переключаемся потихоньку на Asana; с этим делом я мало знаком, но отвращения не вызывает. Слава богу, не Rally.

Ну и я себе тоже завёл парочку борд в Trello, чтобы собственные планы расписывать. Так вот. Есть некоторое количество вещей, которые я намерен сделать... когда-нибудь. Или нет. Я их свалил в одну борду, которой некоторое время придумывал название.

Назвал "Ленивое почёсывание".

29th March 2016

17:29: Лекарственное
Если вы заболели, то нужно принимать лекарства, помогающие от вашей болезни.

Конечно, вокруг этого, довольно тривиального, утверждения тоже ведутся споры. Есть сумасшедшие, которые не будут принимать лекарства никогда и ни за что. Но в целом, мне кажется, оно достаточно верно. Даже если вы выздоравливаете, болезнь почти прошла, лечение прекращать не надо.

Другое утверждение: если вы здоровы, то принимать лекарства не надо. Это утверждение не настолько верно. Прививки — штука полезная. Да и витаминку съесть порой вполне можно. Однако в целом, всё-таки, лекарства сами по себе, для здорового человека, вредны.

Святой Августин сказал "Omnis civitas corpus est". "Всякое общество есть тело". Что нужно для существования этого тела? Хорошее здоровье.

Применяя всю эту теорию получаем, в первом приближении, что здоровому обществу лекарства не нужны, а больному (и даже выздоравливающему) — необходимы. Какие лекарства? Зависит от болезни, разумеется.

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

26th February 2016

11:15: СУПоводческое
В СУПе явно сидят полные уроды. В половине журналов не показываются комменты. Причём я посмотрел JS — не понимаю, как такое могло получиться случайно. Пока решил проблему установкой GreaseMonkey и такого скрипта:
// ==UserScript==
// @name        LJ
// @namespace   migmit
// @include     *.livejournal.com/*
// @version     1
// @grant       none
// ==/UserScript==
window.show = function(){}
window.unshow = function(){}

Вроде, теперь работает.

Кроме того, ссылки на форму создания нового поста тоже нигде нет. Решается установкой закладки на http://www.livejournal.com/update.bml .

Update (exler подсказал): похоже, фишка в том, что эти суки удалили тему XColibur. Если её поменять на Horizon, то всё начинает работать. Другой вопрос, что смотрится этот Horizon отвратно по сравнению с.

31st January 2016

12:28: Падучее
Уже в нескольких местах рассказывал одну и ту же байку. Надо бы оформить постом, и потом только ссылку давать.

Итак. Года два-три назад писал я на Эрланге. И вот возник один баг: некий процесс, скажем, Игрек, через некоторое время после запуска вдруг падает. Причём, скотина, падает даже без каких-либо сообщений в логах. А так как занят он довольно важным делом — теряется куча информации. Соответственно, релиз пришлось откатить (то ещё удовольствие) и начать разбираться.

Как оказалось, падает Игрек только под нагрузкой, так что скормить ему какие-то простенькие входные данные и аккуратно отследить, где именно его скрючит, не представляется возможным. Добавленные во все мыслимые места логи показывают, что падает процесс, в общем-то, где попало. Точнее не совсем где попало, в некоей небольшой области, но не в строго определённом месте. Я поначалу грешил на оптимизатор (случалось сталкиваться с тем, что лог выведен, а предыдущая строчка таки не выполнилась из-за того, что процесс упал), но потом понял, что наш случай таки выходит за пределы бардака, который может устроить оптимизатор. А самое смешное, что, судя по логам git, ни сам Игрек, ни вообще что-либо в непосредственной близости от него, никто не трогал уже несколько месяцев. С чего он вдруг падать начал?

Что оказалось в итоге. Был некий другой процесс, скажем, Ипсилон. И он-то как раз занимался совершенно простенькой деятельностью; он принимал сообщение, смотрел, куда его сунуть, и отсылал дальше. Причём он дожидался ответа от конечного получателя ("ага, получили, спасибо"), но сам никакого ответа отправителю не возвращал. Реализован он был через gen_server, но реально никакого внутреннего состояния там не было; если точнее, внутреннее состояние всегда оставалось [].

Но какой-то гений, который его писал (я уже не помню, кто это был) слегка ошибся. Если кто не знает, то gen_server требует, чтобы в сервере была реализована функция handle_cast, которая, собственно, и решает, как именно следует реагировать на поступившее сообщение. Бизнес-логику реализует, если угодно. Так вот, эта функция должна была бы возвращать {noreply, []} (говоря тем самым "ответа не будет, новое состояние []"), но вместо этого возвращала {ok, []}. Нарушение типизации такое, ага.

gen_server такого ответа не понимает. Ну, тупой он, не знает, что ok — значит, типа, всё здорово, давай дальше в том же духе. Поэтому, по завершении handle_cast, он, в полном соответствии с идеологией Erlang "let it crash" (т.е., "гори оно огнём") падает. Но дальше, опять-таки в полном соответствии с упомянутой идеологией, в дело включается супервизор. Который видит, что Ипсилон упал — и перезапускает его. А так как состояния у Ипсилона нет — всё работает как и должно. Вместо того, чтобы сидеть и дожидаться нового сообщения, Ипсилон падает, стартует заново, и дальше сидит и ждёт нового сообщения. И так оно работало не то чтобы месяцами — годами.

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

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

27th January 2016

13:08: Техподдержечное
Мы сейчас на работе делаем один побочный проект — в общем, часть нашего контента пихаем на фейсбук.

Контент мы представляем в виде более-менее HTML, и нам нужно, чтобы фейсбук посмотрел на этот контент и сказал "OK". Естественно, у них там кое-какие замечания, мы их исправляем; порой нам тоже не нравится, как выглядит опубликованный контент, и мы немножко его меняем. Рабочий процесс.

И вот, кто-то заметил, что цитаты (<blockquote>) выглядят не очень-то здорово: между абзацами (<p>) в них нет интервалов. Некрасиво.

Понятно, что это — проблема оформления, а не содержания. Будь это наш сайт, мы бы поправили стилевые правила, и контент вообще не трогали бы. Но это фейсбук; доступа к стилям у нас почти нет.

Я обратился к их техподдержке: что нам делать? Вскоре пришёл ответ: вставьте между абзацами <br> (насильственный перевод строки).

На этом месте и я и мои коллеги нервно сглотнули. Проблему оформления предлагается решать изменением содержания? Ладно, я добавил соответствующий код. Упс — не помогает.

Я снова в техподдержку: ребята, ваш ответ, во-первых, дурацкий, а во-вторых не работает. От них приходит новый совет, причём от того же "консультанта": вставьте ДВА <br>.

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

Через некоторое время приходит очередная пачка замечаний от фейсбука по поводу нашего контента. Среди них такой: у вас в тексте слишком много <br>.

Разработчики ругаются в голос. Я переоткрываю вопрос и пишу: ребята, вы там вообще определитесь, куда двигаться?

Окончательный ответ: "тогда заткнитесь и привыкайте жить без интервалов". И вопрос снова закрыт.

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

21st January 2016

14:36: Уголовное
Пишут, что, простите, обмудсмен Астахов предлагает в целях профилактики водить детей на экскурсии в СИЗО.

Ну, это ладно; это, естественно, никуда не пройдёт. А вот в конце заметки любопытное:

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

Гм. То есть, если вы засняли на телефон, как вашего соседа избивают менты, то выложить на youtube это дело вы уже не сможете. Точнее, сможете, но в итоге сядете. Вот это — имеет все шансы превратиться в закон.

13th January 2016

16:32: Психологическое
Посмотрел в википедии статью про эффект Даннинга-Крюгера (чтобы выяснить, как именно пишутся фамилии; остальное я и так знаю). Обнаружил там замечательную байку: некий МакАртур Уилер ограбил несколько банков, перед ограблением натирая себе лицо лимонным соком. Поскольку лимонный сок можно использовать как невидимые чернила, он решил, что на видеокамерах его физиономия отображаться не будет.

Нет, то есть, теоретически я знаю, что 99% людей на планете — полные идиоты, но конкретные проявления этого факта меня до сих пор поражают.

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

12th January 2016

11:16: Годовщина
Ну вот, уже год, как я живу в Венгрии.

Что произошло за это время? Ну, не сказать, чтобы многое.

Съездил на пару конференций. Одна дурацкая (Joy of Coding — но с этой паршивой овцы получилась футболка с надписью "I've seen JC"), одна отличная (CodeMesh). Раньше по конференциям не шастал вообще, я уж молчу о том, чтобы ездить по ним за счёт фирмы.

Занялся экстремальным туризмом — скатался в эрэфию несколько раз.

Впервые нанял адвоката.

Впервые получил визу, находясь не в стране гражданства. Особой разницы нет.

Впервые въехал в Шенген не по визе.

Видел сирийских беженцев. На расстоянии вытянутой руки.

Побывал в Венской опере.

Начал составлять бюджет — на месяц и на год. Кстати, бездефицитный. Поискал приложения для этого; в конце концов остановился на текстовом файле.

Начал носить часы.

В общем — жизнь идёт.

10th January 2016

23:21: Последовательное
Тут уже почти все интернеты обошла история некоей мадам из, кажется, Ялты, которая была всей душой за покражу Крыма, состояла в ПЖиВ, а затем поехала в Херсон оформлять украинский загран, чтобы получить визу в США (ибо крымчанам в эрэфовские паспорта американцы визу не ставят). И куча народу изумляется — ах, боже мой, какое лицемерие.

А вот по-моему чего-чего, а лицемерия нет и в помине. То есть, да, поддержка оккупантов выдаёт в человеке в лучшем случае полного идиота. Но почему, собственно, не получить ничего не значащую бумажку, если в результате могут случиться вполне реальные и серьёзные ништяки? Она ж не жить на Украину переезжает.

30th November 2015

11:57: Свободное
Как обычно, навеяло недавними дискуссиями.

Есть такая часто цитируемая фраза Франклина: "Тот, кто жертвует свободой в пользу безопасности, не достоин ни свободы, ни безопасности". См. историческую справку в конце поста.

Так вот, это полная чушь. Нет подобной дихотомии. Я утверждаю, что:
1) Не бывает свободы без безопасности;
2) Не бывает безопасности без свободы.
Конечно, процентное соотношение может "гулять", но в целом эти два понятия ходят рука об руку.

Почему?

1) Что такое свобода? На этом понятии оттоптались все, кому не лень, включая ублюдка Энгельса с его "осознанной необходимостью" (впрочем, говорят, что и де Спиноза к этому приложил руку).

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

"Вы говорите: я не свободен. А я поднял и опустил руку." Тот, кто может поднять руку (а может и не поднимать) — более свободен, чем тот, у кого руки связаны.

Тот, кто может поехать на какие-нибудь Мальдивы (а может и не ехать) — более свободен, чем тот, у кого слишком мало денег, так что ему остаётся только Египет Турция да что ж такое, блин Крым (нет, это уж слишком) сарай в пригороде.

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

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

Если я совершенно не свободен — это означает, что другие могут сделать со мной что им угодно. О какой безопасности можно вести речь?

Так что вот. В некотором смысле цитата права — но только в том, что "тот, кто отказывается от одного в пользу другого не получит ничего".

Историческая справка
Франклин этой фразы не произносил (и не писал). На самом деле он писал вот что: "Тот, кто жертвует СУЩЕСТВЕННОЙ свободой ради НЕЗНАЧИТЕЛЬНОЙ ВРЕМЕННОЙ безопасности, не достоин ни свободы, ни безопасности". У него "свобода" и "безопасность" НЕ противопоставлены; напротив, они почти идентичны: "свобода" в данном контексте означала "возможность обороняться от индейцев", а "безопасность" — собственно, "безопасность от индейцев". Противопоставлены у Франклина "существенность" и "незначительность" (вместе со "временностью"). Там кипеш шёл, насколько я понимаю, вокруг того, следует ли тратить много денег на закупки оружия, или немного денег чтобы откупиться.

23rd November 2015

17:14: Аббревиатурное
Навеяно комментами у avmalgin.

Мне кажется, что аббревиатуры — такая же часть языка, как и просто слова. И точно так же, как слова, они могут быть частью некоей общей культуры.

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

И равным образом такой человек — русскоговорящий с рождения — не может не знать сокращение "СССР". Или "КГБ". Это не просто часть языка, это часть культуры, с этим языком связанной. Это книги, фильмы, статьи, всё, что угодно. Эти аббревиатуры не нужно расшифровывать "при первом использовании", как по ГОСТу.

И мне кажется, что аббревиатуры "СТО" и "ОТО" очень близко к этому культурному слою.

Как полагаете?

6th November 2015

13:20: CodeMesh
Я вернулся. Запишу кое-какие впечатления, для памяти.

Конференция была на порядок круче, чем недавняя JoyOfCoding. Хорошая организация, много интересных докладов. Я завёл несколько новых знакомых; самое интересное знакомство — со Стефани Вайрих (или Уэйрич, я не знаю, как произносить её фамилию, по-немецки или по-английски), которая делала доклад про Dependent types in Haskell.

По пунктам.

День 0: Tutorials.
1) Building Web Services in Haskell! - Allele Dev
Отстой. Содержание доклада — веб-сервис на фреймворке Spock, который на базовом уровне не отличается от Happstack. Подача — докладчик три с половиной часа бубнит себе под нос возле экрана. Напомню, это tutorial — то есть, аудитория тоже должна что-то сделать, своими руками. Нифига. Я в конце концов стал читать книжку с flibusta.me.

По-видимому, надо было пойти на Concatenative Programming - William E. Byrd & Rob Martin.

2) Getting started with Elm - Evan Czaplicki
А вот это было здорово. Эван, как оказалось, работает в венгерской Prezi, куда я пытался интервьюироваться (неудачно). Тут были и hands-on, и юмор, и общение с аудиторией (вплоть до того, что аудитория голосованием решала, чем заниматься дальше). И Elm — интересная штука, своего рода Haskell, но с компиляцией в JS. Плюс собственный веб-сервер для дебага. Плюс time-travelling debugger (можно посмотреть всё, что происходило раньше). Плюс интеграция с внешним JS. В общем, вкусно.

Одна забавная вещь. В Elm нет тайпклассов (что, ИМХО, хорошо), но ограничивать полиморфизм как-то надо (OCaml-овское полиморфное сравнение — это бомба замедленного действия), так что чуть-чуть тайпклассов всё-таки есть: если имя переменной типа начинается с, например, comparable, то это как если бы к ней был контекст Ord. Свои тайпклассы делать нельзя, свои инстансы тоже.

День 1.
1) Keynote: Grace Murray Hopper: The Original Pirate Hacker - Melissa Pierce
Снова отстой. Больше феминистического активизма, чем чего-то интересного.

То, что Пирс очень похожа на Фредерику Лаундс из сериала "Ганнибал", причём и внешне и по голосу, не добавляет интереса.

2) The Road to Running Haskell at Facebook Scale - Jon Coens
Sales pitch. Неплохой, надо признать. Не думал, что Хаскель настолько "готов для десктопапродакшена". А у них реально хаскельные продукты обрабатывают миллионы запросов в секунду.

Ложка дёгтя: у них, всё-таки, работает Саймон Марлоу. Интересно, далеко ли они уехали бы без него?

3) CRDTs in Practice - Marc Shapiro, Nuno Preguiça
М-м-м... странно.

Они пытаются выполнять определённые операции асинхронно, ни разу не останавливая процессинг для синхронизации, а только обмениваясь данными. Это всё хорошо, но вот пример, который они показали, вызвал у меня устойчивые ассоциации с Operational Transformation. Когда я задал вопрос, Шапиро сказал, что единственная связь между их подходом и OT в том, что они рассматривают OT как пример "как не надо делать". Но выглядит всё равно очень похоже; у меня ощущение, что они разбили OT на части и запрятали их в разные места. Доказать не могу, это чисто ощущение, и больше ничего.

Возможно, дело в том, что OT я реализовывал в процессе трудоустройства в JetBrains (прерванный по моей инициативе), и это такой молоток, из-за которого мне всё кажется моими пальцами. Надо ещё почитать и подумать.

4) From Irrational Configuration System to Functional Data Store — Rob Martin
Ничего интересного. Что-то вроде отчёта о проделанной работе. Плюс у Мартина явно паттерн-ориентированное мышление.

Впрочем, ничего более интересного в это время не было.

5) Function-Passing, A New Model for Typed, Asynchronous and Distributed Programming - Heather Miller
Идея достаточно любопытная, чтобы не задумываться о возможных применениях. Миллер, кстати, сама сказала, что это pet project, и не факт, что из этого что-то выйдет.

Фишка в том, что вводится новая монада (хотя Миллер не произнесла это слово), но не в категории типов, а в её подкатегории, где морфизмами являются сериализуемые функции. То есть, функция сама по себе чистая, и всё, что она замыкает, обязано быть сериализуемым. Тогда можно хранить данные на разных нодах — причём данные уже могут быть не сериализуемыми. fmap понимается просто как передача функции туда, где лежат данные, и применение там (ленивое). (>>=) чуть сложнее, но, в общем, та же фигня. Реально интересно.

6) Accidentally Concurrent - Evan Czaplicki
И опять Эван. Он начал с того, что замоделировал мутабельную переменную как процесс (в стиле pi-calculus), после чего убеждал народ, что мутабельность — плохо, потому что в результате мы получаем разветвлённую сеть параллельных процессов, в которой сам чёрт ногу сломит, и всё влияет на всё. Он был прав, и опять забавен, пусть даже и не сообщил ничего реально нового.

7) Coordination-Free Designs for Mobile Gaming - Christopher Meiklejohn
Э-э-э... вообще не помню, о чём он говорил. Кажется, это опять был "отчёт о проделанной работе". Скучно.

8) Keynote: Propositions as Types - Philip Wadler
Старая гвардия. Лямбда-мэн рассказывал об истории, поминал Чёрча, Гёделя, Тьюринга и прочих, рассказывал анекдоты (как Гёдель придумал своё определение алгоритма в пику Чёрчу, Чёрч доказал, что их определения эквиваленты, сказал Гёделю: "вот, подавись", на что Гёдель ответил "ну, значит, моё определение неправильное"). Весело, и отлично подходит для полуфинала.

День 2.
1) Keynote: Why Functional Programming Matters - John Hughes Mary Sheeran
Хьюджеса я уже видел, на приснопамятной JoyOfCoding — он тогда всех веселил. На этот раз веселил всех Вадлер, а Хьюджес говорил довольно мало. Большую часть времени говорила Ширан, и это было скучно. Из её слов стало понятно, что функциональное программирование — это круто, потому что мы не знаем, сколько компараторов нужно, чтобы отсортировать 32 числа.

2) Beyonds Lists: High Performance Data Structures - Phil Trelford
Правильнее было назвать "Data Structures 101". Юзайте, дети, B+-деревья, и ваши волосы будут мягкими и шелковистыми.

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

3) Transactions: Myths, Surprises and Opportunities - Martin Kleppmann
Реально круто. Клеппманн говорил о том, какие гарантии предоставляет механизм транзакций в известных СУБД. Я не знал, что всё настолько плохо.

4) FRP and Functional Game Programming - Elise Huard
Ниачём. Возьмите любую вводную статью по FRP, косноязычно перескажите середину, и вот оно.

Вроде, ничего приличного в это время не было.

5) Depending on Types - Stephanie Weirich
Миленько. По сути, то же самое, что я показывал здесь, только не про списки, а про RB-деревья. А вот вторую часть мы с ней сейчас обсуждаем в почте.

6) Into Production - Jamie Winsor
Опять отчёт о проделанной работе, но несколько более занятный. Не знаю, может, я просто много кофе выпил.

7) My Little Pony - Darach Ennis, Sylvan Clebsch
Рассказывали о языке Pony. Много и хорошо шутили, потратили почти всё время на объяснение базового синтаксиса, после чего реально содержательную часть (разные виды ссылок) за недостатком времени скомкали до полной невозможности. Кстати, введения в Pony, которые мне случалось видеть, грешат тем же. Так и не узнал, насколько же этот язык крут.

8) Panel Discussion - Joe Armstrong, Don Syme, Bruce Tate, Josh Watzman, Tony Hoare
И опять на закуску старая гвардия. Веселее всех был Хоар, который повторил своё общеизвестное признание про "ошибку ценой в миллиард долларов", уточнив "миллиард долларов в год" и добавив, что это ОЧЕНЬ оптимистическая оценка.

Резюме. Из 18 выступлений разного сорта было 4 однозначно полезных, одно весьма спорное, 4 просто забавных, и всего пара-тройка откровенно дурацких.

23rd October 2015

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

Так вот, со 2 по 4 ноября я буду на конференции CodeMesh в Лондоне. Как и в прошлый раз, программа выглядит очень интересно.

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

19th October 2015

12:42: Идиотское-2
В очередной раз убеждаюсь, что количество разума на планете — величина постоянная.

Прислали мне ссылку на некую статью, касающуюся отчёта голландских следователей о сбитом "Боинге". Оттуда я вышел на оригинал статьи — он же пост в ЖЖ. Там было перечислено несколько пунктов, первый из которых звучал так:

Это, к сожалению, ошибка, возникшая при переводе с голландского на английский. Её уже обсосали со всех сторон, поэтому вскоре в том же посте появилось дополнение. Удивительным образом это "дополнение" одновременно и признаёт ошибку, и старается её нивелировать:

Пассаж о "surgical clips" меня заинтересовал. Я забил это дело в гугль и выяснил, что surgical clips — это, по сути, скрепки, которые при некоторых операциях очень часто оставляются в теле, не причиняя вреда. Не знаю, чувствуют ли их металлодетекторы в аэропортах, но на рентгене они очень чётко видны.

Я написал об этом, а потом ещё посмотрел, куда ведёт ссылка на "поправку", якобы опубликованную The Guardian, и добавил пояснение на эту тему:

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

Вторым звонком стало исчезновение последнего коммента, который со ссылками. Он просто взял — и исчез.

Дальше пошло веселеее.

Мне немножко странно, когда человек сначала спрашивает "вы уверены?", а потом говорит "да наплевать, с чего вы уверены". Однако, я предложил приемлемые для меня условия пари. Они не были приняты, а мой аккаунт забанен. И, естественно, по существу никаких возражений не появилось. Я слегка озлился и ответил через Facebook:


Собственно, вот. Оставляю, дабы глупость каждого видна была.

Update: Чуть не забыл упомянуть: скриншоты сделаны системой http://www.sciweavers.org/free-online-web-to-image — я только вырезал из них нужное.

15th September 2015

20:54: Идиотское
Один довольно популярный жужист выложил вот эту картинку:



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



Последнее он удалил.

Кстати, никто не знает, что именно рекламируется?

9th September 2015

11:10: Текстологическое
Люди в интернете, в основном, пишут тексты. Есть, конечно, те, кто выкладывает исключительно фотографии без подписей, но таких довольно мало. ИМХО.

Тексты бывают разные. Есть тексты шуточные (как, например, такой: http://pipokipp.livejournal.com/44735.html) — а в шутке, мне кажется, допустимо вообще практически всё. Шутка может оказаться плохой, но это уже мелкие детали.

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

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

Например, если вы написали: "вместе с беженцами в Европу пролезут боевики ИГИЛ", то дальше у нас с вами есть повод для разговора — ну, если вы не против, конечно. Мы можем обсудить, насколько серьёзна эта угроза, насколько эффективны действия немецкой или австрийской полиции, и прочая, и прочая.

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

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

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

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

Как-то так.

8th September 2015

18:47: Беженское
Мне тут стали говорить, что в Будапеште — где я живу — сплошной кошмар, сирийские беженцы чуть ли не уличные бои устраивают, и вообще Венгрия скоро гикнется, а за ней и вся Европа.

Так что я в воскресенье собрался и съездил-таки на Восточный вокзал (то бишь, Келети), где как раз основное место кучкования этих самых беженцев. Read more...Collapse )

24th August 2015

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

А смотришь то же самое на вебархиве всего-то за позавчерашний день (за вчерашний нету) — и сразу видишь, где оне проговорились:
Также, Правительством России было принято важное решение о денежной компенсации военнослужащим, принимавшим участие в военных действиях на востоке Украины.

30th July 2015

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

Покупая Apple Watch, я специально думал о том, что так делать не буду (гм... второй пост подряд. Ну да ладно). Так вот: люди, которые так поступают — полные идиоты. Потому что когда раз в два-три дня кто-нибудь из коллег замечает у тебя на руке эти часы и говорит "вау, да у тебя Apple Watch" — после чего, разумеется, можно тут же рассказать ему все подробности, ибо сам напросился — это гораздо приятнее, чем в первый же день рассказать всем, а потом сосать лапу.
Powered by LiveJournal.com