Последнее предложение

Наткнулся на канал короткометражных фантастических фильмов DUST. Понравилось. Рекомендую.

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

Очередное фиаско

Читаю обсуждение сегодняшнего теста системы аварийного спасения Crew Dragon и чуть-ли не в голос жру. “Ракета взорвалась”, “вторую ступень не спасли”, а “корабль уцелел”.

Картинка - это стёб, если что. :-) А вот, остальные фразы - не очень.

Doug Jensen выложил шикарное видео, показывающее момент разделения и взрыв. Смотреть обязательно:

Read On →

"Великий поход", или туда и обратно

Это, конечно, прошлогодние новости, но до меня эта картинка дошла только сейчас.

Китай с пристальным интересом поглядывает на повторное использование ступеней ракет. В 2017 году свет увидела презентация “первого частного китайского космического стартапа” Link Space (не смотрите на меня так - я просто перепечатываю слова из интернета):

А в 2018 году, главный конструктор ракет-носителей при Китайском исследовательском институте ракетной техники Лонг Лехао рассказывал о CZ-8 - будущем члене семейства ракет “Великий поход”. В том числе, был показан вот такой слайд:

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

Read On →

Когда 1.0 = 0.0

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

Началось все очень прозаично. В нашем репозитории есть своя реализация умного указателя. Ну, вы знаете, как это бывает. Обычная история на самом деле… Этот класс был написан в древние времена, тогда и С++03 еще на свете не было. С тех пор уже и С++17 появился и С++20 не за горами, но класс по-прежнему активно используется. Мы его давно хотели заменить на что-нибудь более стандартное и современное, но все руки не доходили. “Работает - не трожь”.

В один прекрасный день в этом классе нашлось неопределенное поведение, что стало последней каплей, переломившей верблюду соломинку. Указатель был переписан на корню и стал тонкой оберткой вокруг std::shared_ptr<>. На следующий же день сломался один неприметный юнит тест на одной из платформ. Причем на первый взгляд никакого отношения к переписанному указателю этот тест не имел. Но от фактов было трудно отвертеться. С новым указателем тест падал, а со старым - нет.

Read On →

Законы космической инженерии (Законы Акина)

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

Your best design efforts will inevitably wind up being useless in the final design. Learn to live with the disappointment.

Ваши лучшие наработки в конечном итоге окажутся не нужны. Привыкайте жить с разочарованием.

Я как-то потратил несколько недель на оптимизацию кода, формирующего пакеты с телеметрией, с тем чтобы укорить его в несколько раз и сэкономить 10-15% общего времени выполнения. Что было очень важно, так как мы в очередной раз вылезли за допустимое время выполнения. Обложил юнит тестами со всех сторон… На code review основной претензией к коду было “ну я верю, что это работает, но нельзя ли как-нибудь попроще?” Через несколько недель я в отпуск пошел, а в том коде нашли баг… Было интересно и увлекательно.

А вот недавно, я просто удалил одну проверку в двух функциях, и сэкономил те же 10-15%. Результат одинаковый, но затраченные усилия отличаются на два порядка.

Ну и, само-собой, классика:

Space is a completely unforgiving environment. If you screw up the engineering, somebody dies (and there’s no partial credit because most of the analysis was right…)

Космос совершенно не прощает ошибок. Если вы ошиблись при разработке - кто-то умрет (и вы не получите частичный зачет за то, что большая часть анализа была верной)

Список широко цитируется в узких кругах, в том числе на Хабре публиковался перевод (правда не на 100% точный, как мне кажется).

Read On →

Нас обманывают!

P.S. Особенно доставляет то, что текст набран шрифтом Times New Roman (созданном в Великобритании) в Microsoft Word (созданном в США) на компьютере (разработанном в США и сделанном в Тайване), распечатан на лазерном принтере (неизвестной родословной, но опять же - разработан в США и сделан в Азии), а неопровержимые доказательства выложены на YouTube (созданном в США) с помощью сети Интернет (разработанной американскими учеными на деньги военных США). Справедливости ради замечу, что стена подъезда своя - отечественная.

Неделя удалась!

Не могу не отметить, что прошедшая неделя выдалась на удивленье урожайной.

Для начала, астрономам удалось объединить восемь наземных телескопов в один интерферометр размером с планету и сфотографировать черную дыру в ядре галактики M87 (в радиодиапазоне):

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

Далее, первый коммерческий запуск Falcon Heavy прошел как по маслу. Спутник выведен на нужную орбиту, все три ускорителя сели как положено, и даже створки обтекателя выловили из воды в хорошем состоянии:

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

И, наконец, вчера первый раз поднялся в воздух Stratolaunch:

Stratolaunch планируется использовать для запуска орбитальных ракет Pegasus II и Pegasus XL.

Read On →

Южная Калифорния

Южную Калифорнию заливало дождями всю зиму. Ну по местным масштабам. Теперь все холмы цветут, жужжат и кишат всякой живностью. В Walker Canyon в одни выходные понаехало столько народу посмотреть на цветение маков, что тропу срочно закрыли. Мы умудрились проскочить за день до закрытия:

А сегодня мы ходили в Del Cerro Reserve. Таким зеленым мы его еще не видели:

В одном бите от ядерной катастрофы

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

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

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

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

Чем сложнее система, тем больше вероятность того, что человек не приминает никаких решений напрямую. В самолетах концепция fly-by-wire давно победила ручное управление. Ракеты изначально летают в полностью автоматическом режиме. Финансовые системы практически полностью существуют в виртуальном мире. Решения о покупке и продаже принимаются автоматически. Медицинская техника? Это только кажется, что человек нажимает кнопку и что-то при этом решает. На самом дале нажатие кнопки всего лишь запускает глючный код, который определяет дозу рентгена, которую получит пациент. Атомные станции? Ядерный арсенал? Управляется опытными операторами? Не смешите мои тапочки. Опытные операторы только кнопки нажимают. Компьютеры принимают все решения.

Как компьютер принимает решение? А вот так:

if (speed < desired_speed)
{
    accelerate();
}

Для процессора, который выполняет этот код, принятие решение выглядит как одна-единственная инструкция условного перехода. Если условие истинно, то перейти по этому адресу, я если нет - то по другому. Один бит.

Достаточно ошибится в одном бите, чтобы выполнить действие, прямо противоположное действие задуманному. Разница между “отдать штурвал от себя” и “потянуть штурвал на себя” - один бит.

Страшно?

Read On →

Боинг 737 MAX

История с двумя авиакатастрофами самолетов Боинг 737 MAX 8 принимает интересный оборот. Эта модель самолета начала летать в мае 2017 года. 29 октября 2018 вскоре после взлета разбивается рейс 610 авиакомпании Lion Air. Далее, 10 марта 2019 года вскоре после взлета падает рейс 302 Эфиопских авиалиний.

Одинаковый характер обоих авиакатастроф ставит под подозрение систему MCAS (Maneuvering Characteristics Augmentation System) - новую систему разработанную специально для 737 MAX. Задача этой системы - избежать сваливания в ситуации, когда угол атаки превышает определенный порог. MCAS автоматически отклоняет горизонтальный стабилизатор, опуская нос самолета и уменьшая угол атаки.

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

Теперь выясняются интересные подробности. Во первых MCAS - это костыль который позволил Боингу сертифицировать 737 MAX не как совершенно новую модель самолета, а как модификацию существующей модели. 737 MAX оборудован новыми, большими по размеру двигателями, чем другие 373. Чтобы разместить новые двигатели под крыльями (без переделки фюзеляжа), их выдвинули вверх и вперед. Это в свою очередь изменило летные характеристики самолета и инженеры Боинга разработали MCAS, чтобы компенсировать разницу.

Почему нельзя было переделать фюзеляж? Можно было бы, но это был бы новый самолет, с более сложной программой сертификации. Учитывая, что 737 MAX нужен был для конкуренции с A320neo, то времени на разработку и сертификацию нового самолета не было (классика).

В принципе в идее MCAS нет ничего особенно плохого. Однако в данном случае по всей видимости произошло то, что называется “process miss” - а именно цепочка событий привела в двум катастрофам, причем каждое их этих событий само по себе к катастрофе бы не привело.

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

MCAS использует один (!) датчик угла атаки, который по всей видимости не достаточно надежен. На обоих самолетах были отмечены проблемы с этими датчиком. Боинг предлагает опцию (!), включающую установку второго сенсора и индикатора разногласий между датчиками. Оба самолета не были оборудованы этой опцией.

Далее, многие пилоты отметили неадекватное обучение при переходе на 737 MAX с 737. Боинг рекламировал самолет как обыкновенный 737-й, ничем значительным не отличающимся от “обычных” 737-х. Это похоже на явный неумышленный просчет. Я могу легко себе представить, что система “заставляющая 737 MAX вести себя как 737” могла проскочить, как не стоящая пристального внимания и переучивания пилотов.

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

Read On →