?

Log in

— When you help people, you need to help out of compassion, not out of arrogance. You need to humble yourself.

(Помогая другим, делайте это с сопереживанием, без надменности. Вы должны набраться скромности.)


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

WORLD WAR THREE, BY MISTAKE


Harsh political rhetoric, combined with the vulnerability of the nuclear command-and-control system, has made the risk of global catastrophe greater than ever.


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

А у нас же крисмас. А на крисмас что? Всё закрыто. Ну или почти всё: есть два известных места, которые открыты всегда. Круглые сутки. И там всегда есть пончики и горячее кофе (горячий кофе в таких местах не продают, но и так пойдёт).

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



Вот почему таких статей чрезвычайно мало на русском языке? Читая примерно поровну русскоязычных и англоязычных материалов, я никак не могу отделаться от ощущения того, что журналистика в России скорее отсутствует. Качественных материалов чрезвычайно мало. Истерик любых толков — сколько угодно.

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

И о том, что в Великобритании на подлодках ракетами управляет Windows XP, который два года как похоронен производителем. (Вспомнилась система SAGE на радиолампах, которые вынуждены были покупать в Советском союзе через подставные фирмы).

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

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

Очень увлекательное чтиво. Интересно было бы почитать подробнее про тактику применения ядерного оружия в России при обнаружении угрозы, кроме общего adherence to a MAD policy. А такое впечатление, что американцы эти карты на стол неоднократно выкладывали, а про способ принятия решений о запуске ракет в России всё ещё мало что известно. Хотя я специально не искал, конечно, может и есть всё, подробно расписанное.

Но читать в кафе было сложно. Потому что за соседним столиком сидел какой-то чел, и разговаривал с хозяином кафе, как сложно сейчас продавать в Россию. Мол, экспортный контроль требует, чтобы они не продавали барахло фирмам, входящим в список из примерно шестисот компаний, входящих в разные запретительные списки. И по закону они должны у российских компаний просить честное слово, что они не будут продавать этим компаниям из этого списка из шестисот компаний. И что русские говорят, что мы вам всё, что нужно подпишем (хе-хе), но нужно, чтобы у вашего представителя в России было 5% у наших ребят, каких скажем. И что он своих деток поведёт на Щелкунчика в этом году, и о том, где Щелкунчик лучше, местный или надо непременно ехать в Сан-Франциско.

Короче, я читаю про Россию глазами, я слышу про Россию ушами. Вместо этого чела пришёл другой, азиат, и тоже разговорился с хозяином. Они делают гуманитарную помощь, уже окучили 94 страны, и что надо суметь не скатиться в высокомерие, делая это. Усмирять дух. Ну, что-ж, пожелаем им удачи.

Дочитал статью, открыл фейсбук. Там обсуждают перенос серверов LiveJournal в Россию.

Первоклассный дискурс разворачивается. Что б вы жили в интересные времена! Усмиряйте дух! Христос воскрес, или что у нас там стряслось.

Ответ на бнопню по C++

Код, который напрямую зовёт std::vector{std::move(foo)} на данных в ощущениях компиляторах (gcc, clang) будет медленнее, чем construct_vector(std::move(foo)), где:

std::vector construct_vector(Foo && foo) {
    std::vector vec;
    vec.emplace_back(std::move(foo));
    return vec;
}


Почему это так случается? Из-за отсутствия оптимизации std::initializer_list. Конструкция вектора через std::vector{} создаёт initializer_list, мувает в него один элемент foo, затем копирует из initializer_list внутрь вектора. К сожалению.

construct_vector же копированием foo не занимается, а делает move construction. Значение вектора попадает в место вызова без копирования, через RVO.

Ну вот так хреново пока работаем с std::initializer_list. В стандарте C14 про это вот что есть: "the underlying array is copy-initialized". Опаньки.

Типичный C++, что ни фича, то засада. JavaScript и то без копирования передавал бы всё :)

P.S. По поводу «почему C++» (mpd) — это было не моё решение. Нам и на Эрланге с сишными вставками неплохо работалось, правда, в сервис работал в десять раз медленнее. Но если у компании есть ресурсы и время на то, чтобы создать поддерживать в тонусе команду C++-програмистов, почему бы и нет? :)

Ключевой момент тут такой: если не заниматься байтодрочерством, C++ из-за подобных недофич (чуть что — копируем! ну или не смогли понять жизненный цикл — тоже на всякий случай скопируем) будет работать не сильно быстрее остальных дефолтных языков, а то и медленнее и/или глючнее. Только если действительно понимать, что происходит, можно выжрать нетривиальный буст по производительности, и, если повезёт, не сильно потерять в безопасности. Но это если такая производительность действительно нужна. На мобилке она, за редкими исключениями, вряд ли нужна. В датацентре (если это не cuda) — уже более интересное распределение. Разница между десятью нодами и сотней нод в плане управления — колоссальна. Между сотней и тысячью — уже речь встаёт о дешевизне датацентра по сравнению с рабочим временем программиста.

Если C++ на вашем продукте позволяет обеспечить эту разницу в 10x, есть средства на программистов и время на их реализацию, почему бы и нет? У нас в MZ — есть. Компания зарабатывает несколько миллионов долларов в день. А в вашем НИИГиТ наверняка нет ни таких средств, ни таких требований к производительности, которые бы требовали кластера из более чем десятка машин, а их оптимизация явно встанет зарплатой программистов дороже, чем выгода от их сокращения.

Бнопня по C++

Засада. Как вы думаете, какая C++ (11) функция может быть быстрее при достаточно развесистом классе Foo?

size_t DirectSize(Foo && foo) {
    auto v = std::vector{std::move(foo)};
    return v.size();
}


size_t IndirectSize(Foo && foo) {
    auto v = construct_vector(std::move(foo));
    return v.size();
}


при условии, что construct_vector() — это функция, определённая в другом модуле?

Poll #2054853 Быстрота, милота

Какая функция может быть быстрее?

DirectSize
8(38.1%)
IndirectSize
13(61.9%)


Вопрос специально сформулирован несколько расплывчато. Хочу мнений!

Последние дни Курсива

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

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

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

Курсив, кстати, придумали итальянцы, дабы постоянное поднимание и опускание гусиного пера не рвало пергамент. Пергамент, Карл! Гуси, Карл!

Так вот, оказывается, курсивом писать ещё и медленнее, чем своим стилем. Исследование 2013 года. Это самый смешной камень в гроб курсива.

Долбаная память

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

Ни одного имени не помню, хоть убей.

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

Вот так и живём. Как-то нужно уже научиться запоминать людей, земную жизнь пройдя до половины...

А сегодня другая похожая ситуация была. Подходит какой-то чувак и вкрадчиво говорит: «Лев, помоги, пожалуйста, я тут плохо ориентируюсь у вас в отделе, а мне нужно найти Бартека, а я не знаю, кто это.» Я объясняю, как найти рабочий стол Бартека, а сам думаю, мол, вот чел знает меня, а я убей не помню, кто это...

Вспомнилось про деда. Он всегда пользовался популярностью у женщин, и когда стал уже стариком, женщины это помнили. А вот он уже не очень. Ходили мы с ним по музею Гончарова, который он сорок лет назад создал, а там подбегают задорные дамы в возрасте — сотрудницы, и радостно: «ой, Марк Харитонович, мы так рады вас видеть!» А он суёт руку в карман и, по старому своему обычаю, достаёт несколько конфет. Я вас тоже, говорит, и вот вам гостинец принёс. И даёт конфеты. Дамы, смущаясь, берут. Отходим в сторону, дед наклоняется в мою сторону и говорит: «убей, не помню, кто такие...»
Кто-то обращает внимание на то, что детей могут судить с 14 лет за участие в беспорядках. Ну да, это для борьбы с потенциальными уличными движениями, которые могут разразиться в гипотетической предреволюционной ситуации. Ну ок (хотя не ок).

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

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

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



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

Всплеск красненького в районе 2010 года — это приезд Медведева и ассоциированный возбудёж граммар-наци, которые именно тогда впервые о долине и узнали.



Узбагойтесь уже... Фиг с вами. Пусть будет «Кремниевая долина», американский аналог «Сколково».
oleyka последние пару дней ошивается на какой-то программистской конференции (в Портланде? забыл спросить), я у детей за главного. Сели в кафешку, сидим-едим.

Марк (9) и Алиса (6) поочерёдно задают вопросы. Алиса:
— Папа, а могут девочки жениться на мальчиках, а девочки — на девочках?
— Да без проблем, Алиса, о чём речь.
— Ой, я хотела сказать, могут ли мальчики жениться на дев.. мальчиках, а девочки — на девочках?
— Да, могут, но это довольно редко происходит. Обычно всё же мальчики женятся на девочках, а девочки на мальчиках.
Марк навострил уши:
— А почему, мальчики с мальчиками же не могут создать семью?
— Ну как не могут. Могут. Вот ребёнка своего завести — не могут. А жениться и семью создать — могут. Только это редко происходит, примерно в одном проценте случаев.
— А почему они так делают?
— Ну обычно когда наступает puberty (в 12-13 лет), почти все люди начинают интересоваться противоположным полом, что приведёт потом к созданию семьи. Но у некоторых людей есть особенности развития, которые будут заставлять их интересоваться своим полом. И поэтому жениться они будут хотеть на таких же, как они.
— Что значит "заставлять"? Кто их заставляет?
— Ну представь, что ты ешь щупальце кальмара (у Марка вполне себе серьёзная фобия щупалец). Ты сможешь его есть, или тебе будет трудно это делать? Что тебя заставляет бояться щупалец? Ну вот примерно так тебя может мозг заставить что-то делать или не делать.
— Понятно. То есть, если взять четыре наших параллельных класса, то кто-то один скорее всего будет интересоваться мальчиками, если он мальчик, или девочками, если она девочка?
— Ну да.

Ну и всё, собственно.

P.S. По результатам математической олимпиады Кенгуру среди третьеклассников, Марк обошёл 75% своих сверстников в Калифорнии, которые участвовали в Олимпиаде, и, судя по баллам, обошёл бы 94% сверстников в России, если бы участвовал там.

P.P.S. Процент гей-браков, заключённых в Калифорнии в 2008 году: 0.83%. Процент американцев, которые считают, что геи не должны иметь право на брак: 47%.

P.P.P.S. Когда-то я набрёл на идеальный родительский ответ на «не совсем удобные» вопросы детей. «И так тоже бывает». Рекомендую.

Томас Скотт.

О мышах и людях кремниевой долины


Перевод — lionet. Оригинал: OF MICE AND MEN OF SILICON VALLEY, by Thomas Scott.


[В нескольких милях к югу от Сан-Франциско, пузырь недвижимости распух до треска, а поток инвестиционных денег сливается в глубокую зелёную реку. Однажды вечером, в дешёвом мотеле близ Пало-Альто...]


ЛЕННИ: Джордж, расскажи как всё будет.

ДЖОРЖ: Ну, у нас будет такой большой огород, да кроликов приплод, и куры, и Хасьенда о шести сотках с маленькой с площадкой для вертолёта на верхней веранде. Там полно будет земли, и у нас будут сток-опционы, и мы будем работать четыре, даже три часа в день, а не качать код пятнадцать часов в день на дядю.

ЛЕННИ: Расскажи, что делать-то, Джорж!

ДЖОРЖ: Мы должны запустить наш стартап с венчурным капиталом или ангельскими инвестициями. Мы погорбим спину, кодируя, запустимся через несколько месяцев, быстро расширим нашу пользовательскую базу, затем окэшимся, выйдя на IPO. Тогда у тебя будут твои кролики. И фермерские сливки будут такие жирные и свежие, что ты их сможешь ножиком резать.

ЛЕННИ: Ты чертовски прав, что будут жирные и свежие! Я буду кормить сливками моих кроликов и они будут торчать от этого, господи Иисусе!

ДЖОРЖ: Только запомни: никому ни слова. Как только инвесторы увидят, сколько кода ты можешь наколбасить, всё станет хорошо. Но если ты посмеешь открыть свою пасть, они должны будут выставить нас за дверь. Поэтому позволь уж мне согласовывать условия.

ЛЕННИ: Я не скажу ни слова, Джорж.

— — —

[В офисе ангельского инвестора...]


ДЖОРЖ: Сорян, мы припозднились. Наш, этот, водила Uber выкинул нас в квартале отсюда. Убер-Сусанин.

АНГЕЛ-ИНВЕСТОР: Пацаны, я посмотрел на ваше предложение. Мне очень нравится. Расскажите о вашем последнем проекте.

ДЖОРЖ: Это в Сиэттле было. Уволили, как только мы закончили работу.

АНГЕЛ-ИНВЕСТОР: А тебя тоже?

ДЖОРЖ: И его тоже, ага.

АНГЕЛ-ИНВЕСТОР: А он не слишком говорлив, верно?

ДЖОРЖ: Нет, но работящ и кропотлив. Он может код писать так, что ты-б подумал, что там двое. Я не говорю, что он смышлён, но работник что надо.

— — —

[Неделей позже в новом офисе, после получения финансирование от ангела...]


ДЖОРЖ: Эй, Кэнди! Что за ерунду ты делаешь, приводя эту чёртову собаку сюда?

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

ДЖОРЖ: Допустим, но он воняет адски. Убери его с нашей стороны. И, к слову, это твоей деревянной кистью ты объясняешь то, как медленно ты работаешь?

КЭНДИ: [нервно поглаживая свою ампутированную руку] Я думаю, что у меня неплохо получается и с одной. Короче, так...

ДЖОРЖ: Не, это я тебе скажу, что короче. Если ты будешь продолжать так плестись и потратишь ещё один дедлайн, эта собака получает пулю в глаз.

— — —

[Одиннадцатью месяцами позже, тот же офис...]


ДЖОРЖ: Хороша работа, Ленни. Господи, ты кодируешь как сукин сын!

ЛЕННИ: Это значит, что ты позволишь мне держать кроликов, Джорж?

ДЖОРЖ: Мы все там будем, Ленни. Мы всё ещё должны расширить нашу пользовательскую базу и модифицировать нашу конверсионную воронку перед тем, как мы доберёмся до IPO-фазы. Но мы не далеко от неё, впрочем.

ЛЕННИ: И тогда — кролики?

ДЖОРЖ: Ага, да, тогда много сраных кроликов. На, ешь свои суши.

ЛЕННИ: Мне нравятся суши с кетчупом.

ДЖОРЖ: У нас нема кетчупа.

— — —

[Позже тем же вечером, пока Ленни всё ещё на работе, а Джорж отлучился...]


ГОРБУН: Ты знаешь, что Джоржик тебя использует? Он не даст тебе кроликов.

ЛЕННИ: Это неправда! Он скоро мне даст их, он говорит.

ГОРБУН: Может быть, даст. Но что если ты узнаешь, что есть люди, которые могут подкинуть тебе мягких кроликов прямо сейчас?

ЛЕННИ: Я не... Я не буду ничего делать, не спросив Джоржа.

ГОРБУН: Ну как хочешь. Твоя потеря. [Разворачивается, чтобы уйти]

ЛЕННИ: Постой-ка! Вернись!

— — —

[На следующий день, в офисе...]


КЁРЛИ: [возвращаясь из туалета в свой кубикл] Эй, где моя перчатка? Кто взял мою перчатку?

ДЖОРЖ: Я не видел.

КЁРЛИ: Но я не могу кодировать без моей перчатки, иначе у меня вазелин по клавишам размажется! Кто, блин, взял её? Этот сукин сын?

ДЖОРЖ: Не мог это быть Ленни. Он весь день на больничном. Сказал, что-то с желудком.

КЁРЛИ: Лежит больной! Чёрт возьми, у нас остались сутки до IPO!

— — —

[В это время, в другом конце города...]


ПРЕДСТАВИТЕЛЬ ГУГЛА: Окей, Ленни, по рукам?

ЛЕННИ: Я хочу пощупать их, для начала. Чтобы понять, что они такие мягкие, как вы обещали.

— — —

[На следующее утро, дома у Ленни и Джоржа...]


ДЖОРЖ: Собирайся, Ленни. Нам на работу.

ЛЕННИ: Мы не идём туда больше, Джорж. Мы идём кое-куда ещё.

ДЖОРЖ: Ленни, перестань шутить.

ЛЕННИ: Джорж, должен тебе что-то сказать.

ДЖОРЖ: Нет, слушай меня, Ленни. Чёрт возьми, я хотел тебя порадовать на работе, но IPO сегодня. Мы сделали это, братан! Я не хотел говорить тебе, чтобы ты фокус не потерял. Вечером пойдём и я куплю тебе самого большого чёртового кролика, какого ты только видел.

ЛЕННИ: Ох.

ДЖОРЖ: Что?

ЛЕННИ: Джорж. Я плохо сделал.

ДЖОРЖ: Что ты там натворил?

[К дому подъезжает Гугловый автобус и открывает для них двери.]

ДЖОРЖ: [выглядывая в окно] Что происходит? Это ведь не к нам, да?

ЛЕННИ: Я сделал плохое дело, Джорж. Я подписал нас работать на Google.

ДЖОРЖ: О, боже мой, Ленни.

ЛЕННИ: Я должен был, Джорж. Я должен был получить моих кроликов! Я не знал!

ДЖОРЖ: Ленни, господи, пожалуйста, пожалуйста скажи мне ты не сдал нас работать на Гугл за еду! Пожалуйста скажи мне, что ты не записал нас горбить спину, кодируя за кроликов.

ЛЕННИ: Нет, нет, Джорж. Не за кроликов, Джорж. За миллион кроликов. Мягких.

Tags: