10 лет динамики и вызовов в EPAM | 2026-01-05T13:43:25

10 лет в EPAM.

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

Сейчас я на проекте в компании-гиганте: более 100 тысяч сотрудников и выручка за 30 миллиардов долларов. До этого был автопром — махина со штатом в 175 тысяч человек и оборотом в 150 миллиардов. Где-то around был контракт с компанией на 80 тысяч сотрудников и 35 миллиардов дохода. Настоящие масштабы и по-настоящему серьезные вызовы. А еще раньше были косметические бренды, биотех и «нефтянка». В общей сложности — больше 20 проектов самого разного калибра. При том, что у меня была более чем 100% загрузка каждый день. И еще у меня в этом году, кажется, было больше отпуска, чем обычно, но все равно меньше, чем я мог бы взять. Съездил в Коста-Рику, Мексику, Сиеттл, Анталию.

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

Прошлый год в EPAM выдался максимально интенсивным, и я искренне надеюсь, что 2026-й не будет сбавлять обороты.

Внутри ASML: Как создаются чипы будущего | 2026-01-02T00:47:51

У 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-редактора волейбольных стратегий в полете | 2026-01-01T21:21:21

Чем я занимался в самолете в/из отпуска и иногда между и после: 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: массаж будущего? | 2025-12-19T21:26:58

Сходили с Надей на робомассаж Aescape. Ну так, мне интересно было посмотреть на техническую сторону всего этого. В целом довольно интересно, но ехать 45 минут на машине вместо 15 и получать робота, пусть даже чуть дешевле.. ну так.. не уверен, что имеет смысл ходить туда регулярно. Другое дело, если ты уже там в зале занимаешься, и хочешь массаж прямо сейчас, без записи — это такой заменитель массажного кресла «на максималках». Да, в этом случае прям самое то.

Система сканирует тело четырьмя камерами под потолком, строит 3D-модель, и дальше в целом довольно неплохо эти роборуки отрабатывают, погружаясь в мышцы ровно так, как надо, где-то посильнее, где-то послабее — с учетом анатомии вообще, и конкретного массажируемого на столе. Кто-то может сказать, а не убьют ли они нафиг из-за какого-то бага, но мы и туда, и обратно ехали на автопилоте Теслы, и уж если машины решили бы нас убить, у них был бы шанс попроще.

Перевод Excel-организма в код: стратегия и исполнение | 2025-12-17T18:56:17

Все мы с этим сталкивались — «Главная Excel-Таблица, Управляющая Бизнесом». Та самая, которую B2B-компании используют, чтобы считать котировки на миллионы долларов. В ней 12 вкладок, 1000+ вложенных формул и ноль документации. Десять лет туда лепили «быстрые фиксы» и прятали константы. Это уже не файл, а живой организм, который уже никто до конца не понимает кроме того чела, уволившегося годы назад. Вот такой я был озадачен. Более того, там еще была неопределенность нужна ли вообще половина формул, или это рудименты прошлого.

Типичная ячейка:

=IF($D11=$D10,»», IF(ISNUMBER( INDEX(Data!$T$10:$U$17,

MATCH(TabCalc!$F11,Data!$T$10:$T$17,0),2)),

INDEX(Data!$T$10:$U$17, MATCH(TabCalc!$F11,Data!$T$10:$T$17,0),2),

INDEX(TabProd!$C$8:$U$112,TabCalc!$D11,I$1)))

Мне поручили перенести эту логику в код, чтобы все считалось софтом. Excel-файл как бы все имел что надо, но по факту — это был сложнораспутываемый черный ящик. 1069 формул.

Челлендж был в том, как перевести тысячу взаимозависимых формул в чистый код и не потерять ни одного пограничного случая (edge case).

В итоге вот что я сделал.

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

Я построил структуру на Groovy, которая имитировала поведение Экселя. Каждое вычисление (из ячейки) я определил как функцию, которая выполняется только тогда, когда её вызывают. А функциями был многомерный dictionary.

Я пошел с конца графа вычислений: от результатов к входным данным. Если формула зависела от чего-то, что я еще не написал, я «мокал» это в коде, просто подставляя значение из Excel-листа.

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

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

Настоящим «секретным ингредиентом» стала динамическая природа Groovy для создания многомерной карты функций. Вместо статических переменных я использовал глубоко вложенную структуру, где каждый «лист» был замыканием (closure). Это позволило обращаться к любой части таблицы — будь то входной параметр, константа конфига или сложный промежуточный результат — через простой, унифицированный синтаксис, причем некоторые компоненты были динамическими.

Вот пример:

conf[«group»] = { x -> [«a», «b», «c»] }

conf[«group»]().each {

calculate[«Group»][«Subgroup»][it][«TotalQuantity»] =

{

x -> calculate[«Group»][«Subgroup»][it][«Someparameter»]() * conf[«someConstant»]()

}

}

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

Тестировать можно было прямо сразу после начала переноса формул. Прелесть была в том, что ты вроде как как бы к ячейке обращаешься через синтаксис типа calculate[«Totals»][«A»](), а на самом деле запускаешь целое дерево вычислений в этот момент. И это дико удобно в отладке.

Через две недели «Черный ящик» превратился в прозрачную, модульную библиотеку с понятной логикой, которая выдавала ровно тот же результат, что и оригинальная таблица.

P.S. Ну и конечно, все данные на всех скриншотах тщательно обфусцированы, а точнее сказать, написаны с нуля для этого текста.

Сравнение учебных нагрузок: США vs СССР/Россия | 2025-12-10T17:35:36

К вопросу про образование в США и в СССР/России. Мой диплом в США эвалюирован как 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 академчасов, что в два раза меньше. А поделитесь, сколько у вас в дипломе часов?

Год выпуска, универ, специальность и число часов? Интересно, насколько сильный разброс.

Механизмы старого телефона: удивительная простота и гениальность | 2025-11-25T00:59:46

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

Начнем с номеронабирателя. Телефон подключен к сети двумя проводами. Номеронабиратель — дисковый. Когда вы взводите диск, контакты блокируются, а когда отпускаете — диск возвращается назад и выдает в линию серию прерываний/импульсов. Но как сделали так, чтобы он возвращался с постоянной скоростью (это 10 импульсов в секунду)?

Он работал на основе центробежного фрикционного регулятора. Механика (редуктор) разгоняла ось регулятора до тысяч оборотов в минуту. На оси сидели два грузика с фрикционными накладками (считай тормозами). Центробежная сила прижимала их к неподвижному барабану, создавая тормозное усилие. Это прямой наследник центробежного регулятора Уатта, позволявший механизму работать стабильно независимо от того, как резко вы отпустили диск.

Далее. АТС соединила вас с другом. Вы говорите одновременно, и звук передается и туда, и оттуда по двум проводам — почему двух, а не четыре понятно? Ну хорошо, а вот почему вы не слышите сами себя слишком громко, ведь микрофон шлет звук туда же, откуда его слышит «динамик»?

Я вот быстро ответить не смог. Пошел гуглить. Так вот, оказывается, за это отвечал специальный дифференциальный трансформатор. Там ток от микрофона разветвляется: часть идет в линию к другу, а часть — в «балансный контур» (цепочку из резистора и конденсатора внутри телефона), имитирующую сопротивление линии. Обмотки трансформатора намотаны встречно: магнитные потоки от тока в линию и тока в балансный контур взаимно уничтожаются в той обмотке, что идет к динамику. Инженеры специально настраивали баланс не идеально, оставляя «местный эффект» — тихий звук собственного голоса, чтобы телефон не казался «мертвым». А вот входящий сигнал от друга разбалансировать нечем (с вашей стороны тишина), поэтому он свободно проходит на динамик.

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

А вот динамик был нормальный, электромагнитный. Хотя не совсем. Если бы внутри был просто электромагнит (без постоянного магнита), телефон бы безбожно искажал голос. Электромагнит притягивает железо независимо от полярности тока. Если подать синусоиду (голос), то мембрана притягивалась бы и на положительной полуволне, и на отрицательной. Результат: частота звука удвоилась бы, и вы слышали бы не голос друга, а непонятное высокочастотное жужжание. Постоянный магнит решает эту проблему: Он создает «преднатяг». Мембрана всегда притянута к магниту со средней силой. Когда приходит «плюс» сигнала, магнитное поле усиливается и мембрана прогибается сильнее. Когда приходит «минус» сигнала, поле ослабевает и мембрана отпружинивает назад.

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

Интересно, что принцип старых электромагнитных капсюлей (мембрана из металла + «якорь») используется сейчас в самых дорогих внутриканальных наушниках — гуглите «арматурные наушники» (цена там 500 баксов где-то).

Напряжение в телефонной сети было отрицательное — минус 48/60 вольт. Плюс заземлен, а «живой» провод — это минус. Зачем? Оказывается, это защита от электрохимической коррозии. Кабели лежат в сырой земле. Если бы на жиле был «плюс» (анод), при повреждении изоляции медь растворялась бы (электролиз) и кабель сгнивал. С «минусом» (катод) ионы металла, наоборот, стремятся осесть на провод из почвы, что продлевало жизнь кабеля на десятилетия.

Тайны стекла: между мифом и наукой | 2025-11-21T23:58:35

Меня занесло в тему стекла и столько всего интересного узнал, делюсь. Все началось с того, что я прочитал про суперкритическое состояние вещества — оказалось, что линия, разделяющая жидкое и газообразное состояние на графике давления и температуры в какой-то момент обрывается, и дальше находится состояние вещества, которое ни то, ни сё. Начал читать про состояния (фазы) веществ, и наткнулся на то, что стекло это по сути состояние между жидким и твердым. Мол, оно течет, просто медленно. Этот миф популярен благодаря наблюдениям за средневековыми окнами, где стекло часто толще внизу, что приписывали «течению» под действием гравитации, и он даже упоминался в школьных учебниках. На самом деле стекло — это аморфное твёрдое тело с чрезвычайно высокой вязкостью при комнатной температуре, и оно не течёт заметно даже за миллиарды лет; неравномерная толщина старых стёкол объясняется технологиями производства, когда более толстый край устанавливали вниз для устойчивости.

Дальше полез почитать про стекло еще. Оказалось, что причина, по которой стекло может быть прозрачным коренится в квантовой механике, конкретно в электронной структуре материала, а не из-за плотности частиц. Суть в том, что для поглощения фотона электрон должен перейти с одного энергетического уровня на другой, но в диоксиде кремния ширина запрещённой зоны (band gap) настолько велика, что энергии фотонов видимого света физически не хватает для совершения этого «прыжка». В результате свет просто не может взаимодействовать с электронами и проходит сквозь материал насквозь, в то время как более высокоэнергетичное ультрафиолетовое излучение уже способно преодолеть этот барьер и поэтому поглощается стеклом.

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

Зеленый оттенок, который вы видите с торца обычного стекла (как на картинке приложенной), оказывается, вызван ионами железа, присутствующими в виде примесей (~0.1%). Песок — это природный материал, и «вычистить» из него железо до нуля сложно и дорого. Осветленное стекло, где в десятки раз меньше ионов железа, оказывается, используют в солнечных панелях, и не для того, чтобы оно просто было прозрачнее. Железо жадно поглощает инфракрасный спектр (тепловую энергию), снижая КПД панели. Убирая железо, мы позволяем максимуму энергии дойти до кремниевых ячеек.

Ну и напоследок, самое «взрывающее мозг» (в буквальном смысле). Существуют так называемые «Батавские слёзки» (Prince Rupert’s drops). Если капнуть расплавленным стеклом в ледяную воду, внешняя оболочка капли остывает и затвердевает мгновенно, в то время как внутренняя часть всё ещё остаётся жидкой. Остывая, сердцевина пытается сжаться, но застывшая корка ей не дает. В итоге внутри капли консервируется колоссальное механическое напряжение (до 700 МПа).

Физика этого процесса создает парадокс: «головку» такой капли можно бить молотком, и она выдержит, так как сжатие поверхности делает её невероятно прочной (тот же принцип используется в закаленном стекле смартфонов). Но стоит лишь надломить тонкий хвостик, как баланс сил нарушается, и волна разрушения проходит по капле со скоростью пули (около 1,5 км/с), превращая её в стеклянную пыль прямо в руках.

А еще в физике есть понятие «металлические стёкла» (amorphous metals). Если охладить расплавленный металл со скоростью миллион градусов в секунду, атомы не успеют выстроиться в кристаллическую решетку и застынут в хаосе. Такой «стеклянный металл» обладает уникальной магнитной проницаемостью и прочнее титана, потому что в нём нет дефектов кристаллической решетки, по которым обычно идет разрушение. Так что стекло — это гораздо более широкое понятие, чем просто прозрачная субстанция в наших окнах 🙂

Единственный пример штучки из этого материала, аморфного металла, Liquidmetal, который я встречал — не поверите , скрепка iPhone.

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

А вот обсидиан (вулканическое стекло) при раскалывании дает кромку толщиной всего в 3 нанометра (это примерно 1/30000 толщины человеческого волоса). В этом нет магии, просто у стекла нет кристаллической решетки, которая мешала бы сделать идеально ровный скол вплоть до молекулярного уровня. Поэтому обсидиановые скальпели до сих пор используют в сложнейших операциях на глазах — разрез получается настолько чистым, что клетки ткани травмируются минимально, и заживление идет быстрее.

И еще один мощный инженерный кейс — витрификация (остекловывание). Именно стекло человечество выбрало как самый надежный «сейф» для ядерных отходов. Жидкие радиоактивные отходы смешивают со специальными добавками, плавят и остужают в блоках. Хитрость в том, что опасные изотопы не просто залиты внутрь, они химически встраиваются в атомную сетку стекла. Стекло химически инертно, оно не ржавеет, как металл, и не разлагается тысячи лет. Это, пожалуй, единственный материал, которому инженеры доверяют хранение опасных веществ на геологических масштабах времени. Да, на разложение выброшенной вами бутылки уйдет где-то миллион лет.

Ну и последнее. Если копнуть в историю, выясняется, что римляне занимались нанотехнологиями за 1600 лет до того, как мы придумали само это слово. В Британском музее стоит «Кубок Ликурга» (IV век н.э.). Если смотреть на него при обычном освещении — он зеленоватый и непрозрачный. Но если поместить источник света внутрь кубка, стекло вспыхивает ярко-красным рубиновым цветом.

До 1990-х годов ученые не могли понять, как это сделано. Электронный микроскоп показал: римские мастера добавили в стекло золото и серебро, размолотые до наночастиц размером около 50 нанометров (это в 1000-1800 раз тоньше волоса). Именно такой размер частиц запускает квантовый эффект поверхностного плазмонного резонанса: электроны в металле начинают колебаться так, что поглощают одни длины волн и пропускают другие в зависимости от угла падения света. Самое смешное, что римляне сделали это эмпирически, «на глаз», а мы только сейчас научились повторять это сознательно в фотонике. Ну насколько можно на глаз оперировать золотой пылью 50 нм. Этот момент потребовал дополнительного гуглежа.

Римляне вряд ли могли механически размолоть металл до 50 нанометров — у них не было таких жерновов.

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

Самое поразительное не то, что они это сделали, а то, что пропорция золота к серебру была выдержана идеально. Если изменить концентрацию золота всего на 1%, цвет уже не будет таким чистым рубиновым. Это говорит о том, что мастера владели технологией невероятно точно, хотя, вероятно, не понимали механизма. Ну и то, что у них было дохрена времени на всякую ерунду;) видимо, много поколений положили на это жизнь экспериментов. Потому что непонятно зачем это все.

Существует красивая гипотеза (не доказанная, но популярная), что кубок мог использоваться как детектор. Если налить в него другую жидкость (например, спирт с примесями или яд), коэффициент преломления меняется, и цвет «вспышки» может измениться.

Интерактивная визуализация алгоритмов рекомендаций в новом open source приложении | 2025-11-11T05:23:46

У меня вышло электронное open source приложение к моей книжке Recommender Algorithms! Это «песочница», где можно «погонять» различные алгоритмы рекомендаций с разными настройками, и по каждому алгоритму посмотреть специфичную ему визуализацию, помогающую понять как он работает. Например, для таких алгоритмов как ItemKNN, SLIM или EASE ключевой визуализацией является heatmap, выученной матрицы схожести (item-item similarity matrix). Это позволяет увидеть, какие именно пары товаров модель считает «похожими» (или «влияющими» друг на друга). Для SLIM, например, полезна «Sparsity Plot» , показывающая, что матрица схожести действительно получилась разреженной. Для алгоритмов ассоциативных правил (Apriori, FP-Growth, Eclat) визуализация — это вообще не график, а интерактивные таблицы с найденными «Частотными наборами» (Frequent Itemsets) и сгенерированными «Правилами» (Association Rules) , которые можно фильтровать и сортировать.

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

Третьим компонентом приложения является подбор гиперпараметров. По сути, это автоконфигуратор под конкретный датасет. Там используется итеративный подход, который намного эффективнее, чем полный перебор (Grid Search) или случайный поиск (Random Search). Если говорить кратко, система анализирует историю прошлых запусков (trials) и строит вероятностную «карту» (суррогатную модель) того, какие параметры, скорее всего, дадут лучший результат. Затем она использует эту карту, чтобы по-умному выбрать следующую комбинацию для проверки. Этот метод называется Последовательная оптимизация на основе суррогатных моделей (SMBO).

Код свободный, будет еще дополняться новыми алгоритмами и новыми визуализациями.

Ссылочка на код в комментариях.

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

Тест-драйв Model S Plaid: ощущения и сравнение с Model Y | 2025-10-14T16:51:53

Недавно моя Tesla Model Y заболела, и дилершип в качестве подменной машины дал Model S Plaid. Это просто монстр, у него разгон до 100 км/ч за 2 секунды. Больше тысячи лошадинных сил. Но поездив недельку, мы с Надей поняли, что все-таки не поменяли бы нашу на Model S.

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

Кроме этого, Model S реально шумная внутри. По сравнению с Model Y. Дорогу слышно. И это при цене в 2 раза больше Model Y. И еще почему-то режим, когда просто уходишь от машины, работает менее чутко, и запирает машину, когда уже довольно далеко ушел.

А еще эти поворотники. Ну какой идиот придумал для них кнопки на руле. К этому невозможно привыкнуть. Руль ещё же крутится, и кнопки всегда не пойми где.

Но, черт побери, очень красивая снаружи. Особенно со светлым салоном.

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

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

Как я понял, машина просто из 4 wheel drive стала 2 wheel drive. Прикольно что такой фоллбек в принципе существует. Уже починил, там замена инвертора.