Оказалось, что π² ≈ g — это не какое-то мистическое совпадение. Когда первые ученые размышляли над определением метра, было одно элегантное предложение: сделать метр равным длине маятника, которому требуется ровно одна секунда, чтобы качнуться из одной стороны в другую.
Для математического маятника период колебаний рассчитывается по формуле: T = 2π √(L / g). Если мы примем длину L = 1 метр и установим полный период T = 2 секунды (чтобы на один полувзмах уходила ровно 1 секунда), из уравнения следует: g = π² (м/с²).
Позднее определение метра изменили: его привязали к одной десятимиллионной части расстояния от экватора до Северного полюса по меридиану, проходящему через Париж. Но это геодезическое определение было вдохновлено более ранней идеей с маятником. И, что примечательно, оба подхода совпадают с точностью до 1%. По сути, поскольку старое «маятниковое» определение долгое время было основным кандидатом, значения подогнали так, чтобы новый метр был удобен и близок к привычным на тот момент измерениям.
А еще интересно, что число секунд в году примерно соответствует числу пи * 10^7. Орбитальная скорость Земли составляет около v = 30 км/с. Расстояние от Солнца до Земли — примерно r = 150 000 000 км. Таким образом, за год Земля проходит путь около d = 2 * π * r. Тогда период обращения равен T = d/v = π * 2 * r/v = π * 10⁷ секунд.
Еще доработал новый тул для себя для работы с информацией и её организации. Основная идея — это веб-блокнот для исследований, изучения темы, работой над ней, интегрированный с AI и поддержкой PDF.
Главная проблема обычных PDF-ридеров и заметок заключается в том, что контекст теряется, как только вы переключаетесь на новую вкладку. В моем инструменте каждый фрагмент текста или PDF становится узлом в «живом» гипертекстовом дереве, к которому я могу доступиться с нескольких компов в любое время.
Процесс работы:
— Контекстный AI. Я могу просить AI разъяснить сложные пассажи прямо внутри документа. Объяснение остается именно там, где был задан вопрос. При этом оно является отдельным документом, привязанным к конкретному месту в источнике. При клике вы видите на экране одновременно и оригинал, и пояснение.
— Панели вместо окон. Если само объяснение требует уточнений, справа открывается новая панель. Это позволяет выстраивать бесконечную цепочку запросов, ни разу не теряя места в исходном тексте. То есть, вы видите сразу несколько панелей, ненужные можно закрыть.
— Поддержка PDF. Я могу загрузить PDF, выделить область на странице (например, сложную диаграмму или список авторов), и LLM мгновенно извлечет данные, дополнит или объяснит их. Объяснение прицепится к месту, где его просили, как и в случае не-PDF.
— Вложенные аннотации. Мои комментарии — это не просто статичный текст. Они могут содержать собственные PDF, ссылки и дальнейшие подзадачи для AI, поддерживая глубину вложенности, которая отражает то, как мы мыслим на самом деле.
Это не просто система хранения файлов, а «движок» для построения знаний.
Инструмент отлично подходит мне лично, но, возможно, он решает только мои специфические задачи. Как вы думаете, будет ли нечто подобное полезно другим? Было бы это полезно вам? Стоит ли развивать проект до полноценного продукта и давать его на тест другим пользователям?
Испытали нашу Tesla Model Y на зимней дороге в погоду, которую почти сто процентов людей тут считают «нелетной». Я серьезно, на обратном пути, в 8-9 вечера, мы встретили первую частную машину на четырехполосном шоссе через 45 километров пути. Зато снегоуборочные машины встречались просто каждые две минуты.
Навалило много снега, а потом пошел дождь. За несколько часов стоянки в сугробе у дома друзей машина покрылась льдом в сантиметр толщиной. Мы даже немного застряли на выезде, но общими усилиями вытолкали машину из «снежной ямы». Самая сложная часть — это последняя миля на маленьких дорожках, которые техника не успевает чистить. Вот сейчас пишу в 10:30 вечера, и у меня перед окном чистит подъездные пути трактор, а в большинстве мест это обязанность владельцев домов, и, конечно, все предпочитают переждать. Собственно, к дому друзей мы даже не проехали, потому что последние 100 метров там просто сугробы по колено, и даже пешком идти сложно, не говоря уже о проехать.
Очень доволен поведением Теслы на снежной дороге и маневрированию в сугробах. У нас тут никто не пользуется зимней резиной (снежная зима очень короткая), и на колесах у всех «всесезонка».
На шоссе очень много снегоуборочной техники, и в целом сами шоссе в очень неплохом состоянии — вождение очень предсказуемое, никуда не заносит. А вот как только пытаешься с этой дороги съехать на мелкую, так там может начаться испытание для полного привода и клиренса. Опять же, вообще никаких сюрпризов — проезжает как танк везде, где надо. 627 «лошадей», динамически распределяемых по четырем колесам, видимо помогает.
Узнал сегодня, что сейчас есть и активно используется технология навигации по магнитному полю Земли. Используется как замена или как расширение GPS.
Например, есть скандинавский паром Express 5 компании Bornholmslinjen, который страхуется от проблем с GPS (а они происходят) тем, что использует навигацию MagNav. В отличие от GPS, магнитное поле Земли невозможно заглушить или подменить — оно просто существует. Паром ездит по одному и тому же маршруту, и в целом, там можно навигацию даже через бытовые рыболовные эхолокаторы сделать.
Но вот есть несколько стартапов, которые используют эту технологию для навигации внутри помещения, куда сигнал от GPS не пробивается. Утверждается, что точность навигации — 1 метр. Вот это интереснее.
GiPStech, Oriient, Mapsted.
В основе этой технологии лежит процесс, называемый магнитным фингерпринтингом. Инженеры или роботы-картографы обходят здание со смартфоном, записывая уникальные искажения магнитного поля в каждой точке. Эти искажения создаются стальным каркасом здания, арматурой в стенах и крупным электрооборудованием. Формируется база данных, где каждой координате (x, y, z) соответствует свой уникальный вектор магнитного поля (интенсивность, наклон, отклонение).
Собранные данные загружаются в облачную платформу компании-провайдера. Там они проходят очистку от шумов и «сшиваются» с цифровым планом этажа (Floor Plan). Когда пользователь идет по ТЦ, его смартфон в реальном времени считывает данные со встроенного магнитометра. Специальное ПО (SDK) сравнивает текущие показания с теми, что хранятся в базе данных. Чтобы точность была 1–2 метра, система не полагается только на магниты. Она использует сенсорную фузию — объединяет данные магнитного поля с инерциальными датчиками (акселерометр считает шаги, гироскоп определяет повороты) и иногда сигналами Wi-Fi/Bluetooth для грубой привязки к зоне.
Для дронов эта технология наверняка сейчас активно внедряется. Главная техническая сложность там — собственные помехи и учет того, что магнитное поле меняется, и нужно постоянно обновлять карты. Электрика, двигатели создают сильные магнитные поля, которые «забивают» естественный фон Земли. Но пишут, что используются всякие алгоритмы фильтрации (включая нейросети), которые в реальном времени «вычитают» помехи от моторов из общих показаний датчика. Как я также понимаю, на большой высоте (километры) магнитное поле более «гладкое», поэтому точность ниже (около 1–5 км). Но если дронов несколько летит и они обмениваются сигналами, то в целом они вместе могут дать очень хорошую точность каждого. Кроме того, группа дронов может измерять градиент (скорость изменения) магнитного поля в пространстве, и привязывать местонахождение не к абсолютным значениям, а относительным. По сути, использование группы дронов превращает навигационную систему из набора отдельных приемников в распределенную фазированную антенную решетку, способную фильтровать глобальные помехи и работать с гораздо более слабыми полезными сигналами. Учитывая, что небольшие дроны, способные долго находиться в воздухе, могут выпускаться в воздух сотнями (и стоить копейки), это довольно перспективная область для военных.
Есть интересный стартап, Zerokey. Они выпускают QUANTUM RTLS 2.0. Эта штука дает пространственную точность в 1.5мм. Используется на производстве, например. Их ролик например показывает «часы» на руках рабочего, которые следят за корректностью сборки чего-то там на столе. Тут уже ультразвуковой принцип, и понятно, что к этим «часам» даются стационарные датчики и дальше мультилатерация.
Никогда бы не подумал, что мне будет в кайф работать на одном месте целое десятилетие. В чем секрет? В EPAM я не застаиваюсь: проекты сменяют друг друга, не давая заскучать.
Сейчас я на проекте в компании-гиганте: более 100 тысяч сотрудников и выручка за 30 миллиардов долларов. До этого был автопром — махина со штатом в 175 тысяч человек и оборотом в 150 миллиардов. Где-то around был контракт с компанией на 80 тысяч сотрудников и 35 миллиардов дохода. Настоящие масштабы и по-настоящему серьезные вызовы. А еще раньше были косметические бренды, биотех и «нефтянка». В общей сложности — больше 20 проектов самого разного калибра. При том, что у меня была более чем 100% загрузка каждый день. И еще у меня в этом году, кажется, было больше отпуска, чем обычно, но все равно меньше, чем я мог бы взять. Съездил в Коста-Рику, Мексику, Сиеттл, Анталию.
Суть в том, что на каждом новом месте ты учишься чему-то, иногда с нуля. И это чертовски круто. Это дает гораздо больше энергии, чем если бы я «врастал корнями» в любую из этих корпораций на все 10 лет. Возможно, с чисто финансовой точки зрения люди, осевшие в одном месте в этих компаниях, заработали больше меня, но деньги — не приоритет, если ради них приходится жертвовать интересом и азартом. Прожигать жизнь на работе, от которой ты смертельно устал — сомнительное удовольствие.
Прошлый год в EPAM выдался максимально интенсивным, и я искренне надеюсь, что 2026-й не будет сбавлять обороты.
У Veritasum вчера вышел очень крутой репортаж из ASML про оборудование, на котором печатают чипы для ваших телефончиков, фотиков и лэптопов.
Кто не в курсе процесса. Сначала из сверхчистого кремния выращивают монокристалл и разрезают его на тонкие пластины, затем на поверхность пластины многократно наносят тончайшие слои диэлектриков, проводников и полупроводников, каждый раз формируя нужные участки с помощью фотолитографии, травления и ионного легирования, в итоге получаются миллиарды транзисторов и соединяющих их металлических дорожек, а в финале пластину тестируют, разрезают на отдельные кристаллы и упаковывают в корпуса, превращая их в готовые микросхемы.
У этого процесса было ограничение — ширина дорожки и расстояние до соседней ограничено длиной волны используемого света, а сокращать ее сложно, потому что нечем такой поток фокусировать — линзы просто поглощают/отражают все. В EUV-литографии (экстремальный ультрафиолет) длина волны составляет 13,5 нм. Это практически мягкое рентгеновское излучение.
Вот в видео рассказываются детали про машину ASML ценой 400 миллионов долларов. Вместо преломляющих линз используются сложнейшие системы отражающих зеркал. Эти зеркала — самые гладкие поверхности, когда-либо созданные человечеством. Если увеличить зеркало этой машины до размеров Земли, то самый большой бугорок на нем будет не толще игральной карты. Чтобы зеркало могло отражать рентген, на него наносят до 76 чередующихся слоев вольфрама и углерода толщиной менее нанометра каждый. Это все делает Zeiss. Кроме этого, это зеркало имеет управляемую кривизну — оно постоянно корректируются роботами с точностью до пикорадиан. Точность управления зеркалом настолько высока, что если бы на нем был закреплен лазер, направленный на Луну, система могла бы выбирать, в какую именно сторону монеты достоинством в 10 центов, лежащей на лунной поверхности, попасть лучом.
Но. У нас нет «лампочки», которая светит в EUV-диапазоне.
Чтобы получить этот свет, лазер «выстреливает» в каплю расплавленного олова размером с белую кровяную клетку, которая летит со скоростью 250 км/ч. Первый импульс сплющивает каплю в блин, второй и третий — превращает «блин» в плазму — и все это в течение всего 20 микросекунд. При попадании лазера капля нагревается до 220 000 Кельвинов — это примерно в 40 раз горячее поверхности Солнца. Эта плазма и излучает тот самый нужный свет. И это происходит 50 000 раз в секунду. Говорят, уже довели до 100000. Прикиньте, при сотне тысяч выстрелов лазера в секунду она не промахивается ни разу. Все это происходит в глубоком вакууме. Чтобы очистить зеркала от частиц олова, камеру постоянно продувают водородом со скоростью 360 км/ч — это быстрее урагана 5-й категории. Этот процесс описывается той же формулой (Тейлора — фон Неймана), что и ядерный взрыв или взрыв сверхновой звезды.
Машина накладывает слои чипа друг на друга с погрешностью не более пяти атомов, при этом матрица двигается туда-сюда с перегрузкой 20G.
Одну машину High-NA перевозят в 250 контейнерах на 25 грузовиках и семи самолетах Boeing 747.
Ссылочка на видео — в комментариях. Или ищите на Youtube на канале veritasium.
Чем я занимался в самолете в/из отпуска и иногда между и после: 3D-визуализация и редактор волейбольных схем для Нади (она — тренер). Этот корт на приложенном изображении свободно вращается, на нем могут быть поставлены игроки, и указан путь мяча и игрока — все в 3D.
Траектория мяча рассчитывается так, чтобы мяч не пересекал сетку при движении из A в B (формула Безье). Игроки могут принимать несколько поз — прямо сейчас есть наспех сделанные позы serve, attack, block, pass/receive. Кстати, из интересного в коде: пришлось прописать немного «волейбольных мозгов». Система сама считает траекторию мяча через кривые Безье так, чтобы он всегда проходил над сеткой. Причем высота вылета зависит от типа действия: для атаки мяч «вылетает» с более высокой точки, чем а для паса. Еще добавил авто-разворот: 3D-моделька сама поворачивается лицом туда, куда она по схеме должна пасовать или бежать.
Дольше и сложнее всего было сделать 3D-модель волейболистки. Для генерации реалистичной волейболистки я использовал сервис tripo3D. Он мне выдал модель в нейтральной позе (бесплатно выдал). Теоретически дальше с помощью Blender и плагина Rigify можно прицепить к ней armature и двигать руки-ноги, за которыми будет пересчитываться модель.
Однако в реальности такой подход не срабатывает: сгенерированная ИИ модель содержит большое количество геометрических ошибок, которые прощает рендер, но не прощает Rigify. Их можно условно разделить на два вида — неверные нормали полигонов и проблемы с немногообразной (non-manifold) геометрией, которые исправлять значительно сложнее. Внутри корпуса могут «плавать» невидимые кластеры полигонов или пересекающиеся поверхности. Когда Rigify пытается рассчитать веса (какая кость на какую часть кожи влияет), этот внутренний шум сбивает алгоритм с толку, и в итоге веса распределяются хаотично (например, движение руки может начать тянуть за собой сетку на животе). Плюс модель немного не симметрична.
Non-manifold — это ошибка геометрии, при которой топология объекта перестаёт быть корректной с точки зрения трёхмерного тела: рёбра могут принадлежать более чем двум полигонам, полигоны могут соприкасаться только вершинами или рёбрами без общего объёма, внутри модели появляются «висящие» поверхности или нулевая толщина. Такая геометрия формально не описывает замкнутый объём, из-за чего возникают проблемы с риггингом и деформациями. Кроме этого, нужно упростить модель, потому что для рендера в реальном времени в браузере миллионы полигонов не нужны.
Я исправлял это с помощью MashLab, попутно дорабатывая «напильником» (руками). В итоге получается модель, чуть-чуть отличающающаяся от исходной почти везде. На исходной же модели нацеплена «кожа» в виде текстуры — лицо, майка, шорты должны быть раскрашены. Как все это перенести на упрощенную модель? Для этого есть специальная операция в Blender, называется Baking. Там тоже шаманство. В итоге неидеально перенеслось, но идеально пока и не нужно.
Дальше привязываем арматуру к «суставам», и через часа три разбирательств, почему все работает не так, как должно, оно все-таки заработало. Я сделал четыре позы, и теперь каждому кружочку (игроку) можно указывать в какой позе он стоит.
Еще нужно будет сделать динамическую смену раскраски формы — это не должно быть сложно. Есть еще идея переносить позу с фотографии — это посложнее, но в целом реалистично. С помощью MediaPipe/AlphaPose можно детектировать ключевые точки в 2D, затем с помощью каких-нибудь моделей типа HMR/HybrIK можно «поднять» плоские координаты в 3D-пространство, выдавая относительные углы поворота суставов. Полученные данные можно попробовать спроецировать на Rigify-скелет. Поскольку пропорции сгенерированной волейболистки и человека на фото могут не совпадать, как раз и используется Inverse Kinematics (IK). Это довольно сложная часть, но в целом она уже не очень обязательная — просто интересно разобраться и сделать что-то работающее.
Сходили с Надей на робомассаж Aescape. Ну так, мне интересно было посмотреть на техническую сторону всего этого. В целом довольно интересно, но ехать 45 минут на машине вместо 15 и получать робота, пусть даже чуть дешевле.. ну так.. не уверен, что имеет смысл ходить туда регулярно. Другое дело, если ты уже там в зале занимаешься, и хочешь массаж прямо сейчас, без записи — это такой заменитель массажного кресла «на максималках». Да, в этом случае прям самое то.
Система сканирует тело четырьмя камерами под потолком, строит 3D-модель, и дальше в целом довольно неплохо эти роборуки отрабатывают, погружаясь в мышцы ровно так, как надо, где-то посильнее, где-то послабее — с учетом анатомии вообще, и конкретного массажируемого на столе. Кто-то может сказать, а не убьют ли они нафиг из-за какого-то бага, но мы и туда, и обратно ехали на автопилоте Теслы, и уж если машины решили бы нас убить, у них был бы шанс попроще.
Все мы с этим сталкивались — «Главная Excel-Таблица, Управляющая Бизнесом». Та самая, которую B2B-компании используют, чтобы считать котировки на миллионы долларов. В ней 12 вкладок, 1000+ вложенных формул и ноль документации. Десять лет туда лепили «быстрые фиксы» и прятали константы. Это уже не файл, а живой организм, который уже никто до конца не понимает кроме того чела, уволившегося годы назад. Вот такой я был озадачен. Более того, там еще была неопределенность нужна ли вообще половина формул, или это рудименты прошлого.
Мне поручили перенести эту логику в код, чтобы все считалось софтом. Excel-файл как бы все имел что надо, но по факту — это был сложнораспутываемый черный ящик. 1069 формул.
Челлендж был в том, как перевести тысячу взаимозависимых формул в чистый код и не потерять ни одного пограничного случая (edge case).
В итоге вот что я сделал.
Вместо того чтобы переписывать всё с нуля одним махом с неопределенными перспективыми наплодить багов, я использовал стратегию ленивых вычислений и моков.
Я построил структуру на Groovy, которая имитировала поведение Экселя. Каждое вычисление (из ячейки) я определил как функцию, которая выполняется только тогда, когда её вызывают. А функциями был многомерный dictionary.
Я пошел с конца графа вычислений: от результатов к входным данным. Если формула зависела от чего-то, что я еще не написал, я «мокал» это в коде, просто подставляя значение из Excel-листа.
Кусок за куском я заменял эти моки на реальную логику. Сравнивая выхлоп моего кода с экселькой на каждом шаге, я точно видел, где моя логика расходится.
Другими словами, движение шло от результата к исходным данным. На каждом шаге было ясно, какие моки надо превратить в код, и можно было сравнить версию +1 с версией -1 — результат должен был совпадать. Как только все моки заменились на вызовы — задача была готова.
Настоящим «секретным ингредиентом» стала динамическая природа Groovy для создания многомерной карты функций. Вместо статических переменных я использовал глубоко вложенную структуру, где каждый «лист» был замыканием (closure). Это позволило обращаться к любой части таблицы — будь то входной параметр, константа конфига или сложный промежуточный результат — через простой, унифицированный синтаксис, причем некоторые компоненты были динамическими.
x -> calculate[«Group»][«Subgroup»][it][«Someparameter»]() * conf[«someConstant»]()
}
}
Используя динамические ключи и замыкания, я мог итерироваться по группам продуктов или наборам данных. Поскольку это были динамические функции, а не сохраненные значения, вся система работала как живой граф зависимостей.
Тестировать можно было прямо сразу после начала переноса формул. Прелесть была в том, что ты вроде как как бы к ячейке обращаешься через синтаксис типа calculate[«Totals»][«A»](), а на самом деле запускаешь целое дерево вычислений в этот момент. И это дико удобно в отладке.
Через две недели «Черный ящик» превратился в прозрачную, модульную библиотеку с понятной логикой, которая выдавала ровно тот же результат, что и оригинальная таблица.
P.S. Ну и конечно, все данные на всех скриншотах тщательно обфусцированы, а точнее сказать, написаны с нуля для этого текста.
К вопросу про образование в США и в СССР/России. Мой диплом в США эвалюирован как Master of Science degree in Computer Science. Мои коллеги помоложе говорят, что диплом российского вуза редко сейчас признается как Master, и часто даже на Bachelor тянет с трудом. Я решил посмотреть на цифры и очень удивился.
Для того, чтобы получить бакалавра в США, нужно потратить примерно 2000 часов в аудитории/лабораториях. Это в пересчете на кредиты дает 120 кредитов (credit hours). Один кредит — это обычно 1 час (50 минут) лекций в неделю в течение семестра (15 недель). Лабораторные работы имеют другой коэффициент (часто 2–3 часа в лаборатории считаются за 1 кредит), поэтому реальное количество часов в аудитории будет немного выше (ближе к 2000+).
Так вот, у меня в дипломе написано, что я потратил только на парах 7908 часов за пять лет. То есть, это в 4 раза больше, чем типичный студент в США. По цифрам выходит, что у меня только математика, физика, и английский подбираются к 2000 за пять лет, а всего предметов там 42 штуки.
Товарищ поделился, что в его дипломе бакалавра из России уже 3140 академчасов, что в два раза меньше. А поделитесь, сколько у вас в дипломе часов?
Год выпуска, универ, специальность и число часов? Интересно, насколько сильный разброс.