Ночной дозор

В нашем главном здании раньше собирали фюзеляжи для Boeing 747. Размах крыльев этого легкого прогулочного самолета - 60 метров, длина - чуть больше 70-и. Внутри здания их таких может поместиться не меньше двадцати и еще место на каток и палатку с шаурмой останется. Кусочек этого ангара отгородили от остального производства (чтобы расплавленный припой, значит, на мониторы не капал) и организовали “open space”, где большая часть наших офисных работников и обретается. Небольшой такой open space. Метров 150 в длину. Ну а че? Размах, то-се.

Спросите любого программиста нравится ли ему open space. Главное проследите, чтобы вокруг тяжелых, удобных для метания предметов не оказалось… По-идее open space должен помогать работникам коммуницировать (в смысле - общаться), решать, так сказать, проблемы сообща. Однако при выкатке этой идеи в продакшен что-то пошло не так. Выяснилось, что после сеанса коммуникации программисты любят погрузиться в транс. Иначе, говорят, код не пишется. А погрузится в транс не получается из-за очереди желающих покоммуницировать.

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

Сегодня у нас была “no meetings Wednesday” - “среда без совещаний”. Сегодня в листочек добавилось только две палки. Главным образом из-за того, что я до своего стола добрался два раза за весь день. Остальное время ушло на совещания.

В качестве компенсации мироздание подкинуло ссылку на прекрасное: The Night Watch. Ночный дозор, то бишь. Небольшой рассказ про системных программистов. На русский не переводится принципе. Пара избранных цитат:

What is despair? I have known it—hear my song. Despair is when you’re debugging a kernel driver and you look at a memory dump and you see that a pointer has a value of 7. THERE IS NO HARDWARE ARCHITECTURE THAT IS ALIGNED ON 7. Furthermore, 7 IS TOO SMALL AND ONLY EVIL CODE WOULD TRY TO ACCESS SMALL NUMBER MEMORY.

I described the bug, which involved concurrent threads and corrupted state and asynchronous message delivery across multiple machines, and my coworker said, “Yeah, that sounds bad. Have you checked the log files for errors?” I said, “Indeed, I would do that if I hadn’t broken every component that a logging system needs to log data. I have a network file system, and I have broken the network, and I have broken the file system, and my machines crash when I make eye contact with them. I HAVE NO TOOLS BECAUSE I’VE DESTROYED MY TOOLS WITH MY TOOLS.

Enjoy. :)

Cassini's Grand Finale

Эмблема AMOS-6

На /r/spacex выложили “утекшую в сеть эмблему AMOS-6”:

Эмблема AMOS-6

В этой эмблеме прекрасно все: и падающий обтекатель, объятый пламенем и со спутником внутри, и погнутый transport erector, и вспышка выстрела снайпера, нанятого ULA, и листок клевера “на удачу”.

SES-10

Быстренько поделюсь впечатлениями, пока еще заплетык не языкается. Время запуска было удачное. Из трех предыдущих запусков Iridium-1 пускали в выходной день с утра, CRS-10 вообще был в непонятное время - не то ночью, не то утром, да еще и первую попытку отменили (опять в 4 утра вставать). Echostar 23 полетел поздно ночью, причем в один прекрасный момент окно запуска приходилось аккуратно на момент перехода на летнее время. Не то, чтобы это проблема, но логистики добавляет.

Read On →

Автономная система прекращения полета

Статья про автономную систему прекращения полета, которая впервые летала в “боевом” режиме на CRS-10. Традиционно, одна из услуг, которые предоставляет range (не знаю, как перевести), - аварийное прекращение полета в случае, если ракета летит не туда. Услуга эта дорогая, так как:

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

Цитата из статьи (выделение мое):

Lockheed Martin Astronautics estimates that the average range costs for each Atlas or Delta launch are on the order of $500,000. In addition, prelaunch tests of the FTS cost $100,000 and tests of the C-band radar tracking beacon and S-band vehicle telemetry system cost another $100,000 (Hillyer, 1999). These costs do not include the cost of standard factory acceptance tests. Lockheed Martin estimates that a “typical” mission scrub costs the range user about $110,000 (Hillyer, 1999).

Помимо стоимости, проблемы с радарами уже приводили с переносу запусков:

The tracking radar is an absolutely essential asset for the Eastern Range that oversees all launches from Cape Canaveral Air Force Station and the Kennedy Space Center on the Florida Space Coast.

Both launches have now been postponed for a minimum of 3 weeks, …

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

P.S. Меня лично поразила стоимость обслуживания. Полмиллиона двадцать лет назад… ой.

Посадка первой ступени CRS-10

Upd: С первого раза не получилось

А со второго - получилось!

Кто сможет оценить вертикальную скорость и ускорение по видео? :-)

CRS-10

Завтра, с утра пораньше, запускаем CRS10. Вернее это у них во Флориде - с утра пораньше, а у нас будет “едва-едва за полночь перевалило”. Мне выпало дежурить на консоли, так что нормально выспаться никак не получится.

Это будет первый наш запуск с площадки 39a и второй третий RTLS (возврат первой ступени к месту запуска). Предыдущий Первый RTLS был по совместительству первой удачной посадкой и это был последний раз, когда я сопровождал запуск.

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

Upd: С первого раза не получилось.

Кролики

Наш баг-трекер возвращает 13 результатов на запрос “rabbit”. Из них 8 - разные варианты фразы “going down the rabbit hole”. Еще четырех случаях - это название файла с кодом, демонстрирующим проблему или её решение. И, наконец, последний результат это вот такой гиф:

Read On →

Iridium-1

Ровно через пять месяцев после JCSAT-16 (14 августа 2016) первая ступень Iridium-1 гордо сидит на палубе Just Read the Instructions:

Ура! Ура! :-)

На расследование аварии первого сентября ушло четыре месяца и масса усилий: тесты, анализ данных и т.д.

На очереди запуск EchoStar 23 с мыса Канаверал.

Самый длинный год

По случаю наступления нового года случился вот такой вопрос: “Какой год был самый длинный?” Даже если не залезать далеко в историю (наверняка при смене календарей происходило что-то интересное) ответить на этот вопрос сходу не получается. Во-первых, поскольку орбитальный период Земли не укладывается в целое количество суток, високосный год длиннее на один день. Во-вторых, чтобы компенсировать неравномерное вращение Земли, в UTC добавляются високосные секунды.

Если сверится с текущей таблицей високосных секунд, то единственный високосный год в котором ввели две високосные секунды (в июне и декабре) - 1972 (366 дней и две секунды). Соответствующие строки из таблицы указывают на 1 июля 1972 и 1 января 1973, так как таблица задает новое смещение между атомным временем (TAI) и UTC:

 1972 JUL  1 =JD 2441499.5  TAI-UTC=  11.0       S + (MJD - 41317.) X 0.0      S
 1973 JAN  1 =JD 2441683.5  TAI-UTC=  12.0       S + (MJD - 41317.) X 0.0      S

Однако и это еще не все. В период с начала 1961 года по конец 1971 года вводились дробные високосные секунды. Первые тринадцать строк из таблицы по ссылке выше описывают именно этот период:

 1961 JAN  1 =JD 2437300.5  TAI-UTC=   1.4228180 S + (MJD - 37300.) X 0.001296 S
 1961 AUG  1 =JD 2437512.5  TAI-UTC=   1.3728180 S + (MJD - 37300.) X 0.001296 S
 1962 JAN  1 =JD 2437665.5  TAI-UTC=   1.8458580 S + (MJD - 37665.) X 0.0011232S
 1963 NOV  1 =JD 2438334.5  TAI-UTC=   1.9458580 S + (MJD - 37665.) X 0.0011232S
 1964 JAN  1 =JD 2438395.5  TAI-UTC=   3.2401300 S + (MJD - 38761.) X 0.001296 S
 1964 APR  1 =JD 2438486.5  TAI-UTC=   3.3401300 S + (MJD - 38761.) X 0.001296 S
 1964 SEP  1 =JD 2438639.5  TAI-UTC=   3.4401300 S + (MJD - 38761.) X 0.001296 S
 1965 JAN  1 =JD 2438761.5  TAI-UTC=   3.5401300 S + (MJD - 38761.) X 0.001296 S
 1965 MAR  1 =JD 2438820.5  TAI-UTC=   3.6401300 S + (MJD - 38761.) X 0.001296 S
 1965 JUL  1 =JD 2438942.5  TAI-UTC=   3.7401300 S + (MJD - 38761.) X 0.001296 S
 1965 SEP  1 =JD 2439004.5  TAI-UTC=   3.8401300 S + (MJD - 38761.) X 0.001296 S
 1966 JAN  1 =JD 2439126.5  TAI-UTC=   4.3131700 S + (MJD - 39126.) X 0.002592 S
 1968 FEB  1 =JD 2439887.5  TAI-UTC=   4.2131700 S + (MJD - 39126.) X 0.002592 S

Для начала разберемся с обозначениями. JD обозначает юлианскую дату. Целая часть - это количество дней прошедших с 24 ноября 4714 года до н.э. Дробная часть - указывает на время прошедшее с последней смены дня. Юлианский день сменяется в полдень. Возьмем к примеру JD 2437512.5. JD 2437512 соответствует полдню 31 августа 1961 года. Добавив полдня (0.5) получаем 00:00:00 1 августа 1961 года.

MJD - это Modified Julian Date. Фактически, просто укороченная версия JD. Вычисляется как:

MJD = JD - 2400000.5

Каждая строка в таблице выше описывает переход из UTC в TAI как линейную функцию от MJD. Зная это можно посчитать приращение к продолжительности года по годам (в секундах):

  • 1961: 0.42304
  • 1962: 0.40997
  • 1963: 0.50997
  • 1964: 0.77434
  • 1965: 0.77304
  • 1966: 0.94608
  • 1967: 0.94608
  • 1968: 0.84867
  • 1969: 0.94608
  • 1970: 0.94608
  • 1971: 1.05384

Получается, что 1972 год был самым длинным.

Еще один интересный момент - таблица високосных секунд начитается со смещения 1.3728180 в 1961 году. Это, насколько я понимаю, объясняется тем, что шкалы атомного времени использовавшиеся Военно-морской обсерваторией США и Национальным институтом стандартов и технологий использовали JD 2436204.5 - 00:00:00 1 января 1958 года в качестве точки отсчета. Этот момент совпадал с показаниями UT2. Иными словами UTC и TAI в этот момент совпадали.