Роскосмос пару дней назад опубликовал отчёт о том, почему упала "Луна-25". Там конечно канцелярит, но можно примерно понять, что двигатель коррекции получил неверные данные от акселерометра:
из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором
Это очень похоже на программную ошибку, а это моя сфера, и я решил над ситуацией поразмыслить.
Хейтеры сразу стали строчить комментарии в стиле "Ололо, наняли каких-то идиотов, которые простейшие тесты не провели". Тут обычно справедливо вспоминают аварию с европейской ракетой Ариан-5 в 1996 году. Там буквально из-за пары строчек кода в результате неправильного приведения числовых типов ракета за 7 млрд баксов развалилась на куски в воздухе. Бывает.
Что касается Роскосмоса, при всей его сомнительной репутации, объяснение "Дураки не провели тесты" звучит лично для меня неправдоподобно. На мой личный взгляд возможны два варианта:
1. Если в описании ошибки слово "приоритет" обозначает какой-то признак внутри объекта команды, значит, на входе в приёмный модуль эти команды не были отфильтрованы. Выглядит как грубая ошибка, целый логический блок упущен. Вряд ли этот блок вообще не написан, скорее всего он не выполнился. Такое бывает, если в тестовой среде есть какое-то условие, которого нет в рабочей, и именно это условие отвечает за выполнение участка кода.
Сталкивался с таким миллион раз. Самое дикое из последнего: код парсит эксель-таблицу с числами. Разработчик написал, запустил проверил, прогнал тесты, всё ок. Отправляем в прод — все числа будто бы рандомно меняются на другие. Запускаем снова — у всех разработчиков функционирует нормально, а в проде на сервере нет. Таблица одна и та же. Можете подумать, почему так. Ответ: у разработчиков стоит русская локаль и десятичный разделитесь это запятая, а на проде в докере точка. При парсинге на проде запятая уже интерпретируется как разделитель тысячных разрядов.
2. Куда вероятнее, что слово "приоритет" в описании ошибки обозначает время, а, значит, список команд просто не был отсортирован, и в обработчик уже после актуальных значений попали какие-нибудь начальные нулевые данные, сбившие логику. По косвенному описанию проблемы очень похоже именно на это. Значит, на тестах всегда порядок возникновения команд соответствовал порядку их прихода, а в реальности перестал соответствовать. Вообще, работать с железом очень сложно. Какую-нибудь схемку заглючило от холода, она задержала ответ от датчика на миллисекунду, и всё. Никто не знал, что такая проблема возможна, пока она не возникла.
Мне рассказывали о таком случае: юзер логинится на сайт и иногда логин проходит, а иногда нет. Логин и пароль те же самые. Просто в случайные моменты времени ему возвращают токен авторизации, а в другие моменты времени ошибку 403. Никакой закономерности нет вообще. Нет зависимости от времени суток и даты. Сервер точно работает стабильно и не падает все 100% времени. Почему так может быть? Ответ: у сервиса авторизации два инстанса, перед которыми балансировщик нагрузки. В одном инстансе данные для авторизации есть, в другом нет. Балансировщик при примерно одинаковой нагрузке включает просто случайный выбор между ними.
В общем, программисты иногда допускают такие косяки, что какая-то мелочь может привести к серьёзной аварии. Это я вам говорю как программист, который пишет для атомных станций :)
#dev
Ben Edgington | 𝕏🧵
RT @weboftrees: 🧵Introducing EIP-7999: Unified multidimensional fee market.
Ethereum is like a supermarket with one inventory label. There are 45M eggs, 45M cheese, 45M snacks. etc, but everything scans as "1 food". To avoid empty shelves, it closes once 45M food has been sold during the day.
~
₿izFeed#⃣:#dev#ETH
Ben Edgington | 𝕏🧵
RT @parithosh_j: The data from this devnet would be a really important data point for deciding what blob values we choose for the first bumps after PeerDAS goes live in Fusaka. Its great to see the @testinprod_io and @base help make it a reality!
~
₿izFeed#⃣:#dev#ETH
Ben Edgington | 𝕏🧵
RT @testinprod_io: The largest Fusaka devnet is now being geared up!
@testinprod_io and @base, who have been putting efforts to L2 scaling by contributing PeerDAS as a part of @Optimism Collective, are now teaming up with @ethPandaOps to run the biggest devnet in the history.
~
₿izFeed#⃣:#dev#ETH
vitalik.eth | 𝕏🧵
In the medium term I want some fancy BCI thing where it shows me the thing as it's being generated and detects in real time how I feel about each part of it and adjusts accordingly.
~
₿izFeed#⃣:#dev#ETH
vitalik.eth | 𝕏🧵
These days I get much more excited about open-weights AI models with good *editing* functionality than those that are just for creating from scratch.
~
₿izFeed#⃣:#dev#ETH
vitalik.eth | 𝕏🧵
Echoing something @karpathy recently said, it does frustrate me how a lot of AI development is trying to be as "agentic" as possible, when actually creating *more* paths for human input both creates a better output (now for quite a while going forward) and is better for safety.
~
₿izFeed#⃣:#dev#ETH
Болото из MVP, 🔨 и 🪚
В этом месяце Sketch выкатил обнову со Smart Layout, но не полноценно как в Figma или даже лучше, а тупо в Beta. При всей любви к Sketch, у меня не укладывается в голове — как отстающая компания продолжает делать на пол Фёдора? Если вы каждый месяц проигрываете гонку за пользователей, то надо быть минимум на шаг впереди по новым фичам, а не огрызки показывать.
Не знаю как вы, но я всё чаще замечаю как компании злоупотребляют сырыми продуктами, которые преимущественно не доходят до нормального вида, обрастают костылями и жду своих редизайнов с переосмыслением годами. Все эти попытки выпустить MVP побыстрей, чтобы получить заветную обратную связь, чтобы потом улучшить свою идею, по факту стали мечтами и превратились в инструмент лени с плохим планированием. У MVP понятный принцип, он должен быть простым, но функциональным, чтобы пользователи могли оценить идею и её потенциал. Но в итоге мы часто видим сырое дерьмище, а не функциональное вкусняшку. Вместо того, чтобы работать над полноценным продуктом, компании создают пылесосы для денег, а план по экономии времени и ресурсов исчезает через пару месяцев.
Использование MVP должно быть осознанным решением, основанным на стратегии дальнейшего развития, например: у PO с дизайнером продукта есть финальная картина в голове, её пилят на малые части и эти части делают пиздато, первую часть релизят как MVP. Вот это лайк, вот это кайф. В современном мире, где технологии и инновации развиваются стремительными темпами, а многие стремятся создать минимально жизнеспособный продукт, кажется, залог успеха — ставить качество в приоритет.
🕳
🎞Добавил видео отображающие моё отношение к происходящему вокруг: рандомная компания год делала свой MVP с кучей компромиссов и ограничений и накопила большой технический долг. В итоге выпустила кал, который никому не нужен, но за то получили обратную связь — «Мы подтвердили гипотезу, пользователям нужны двери и стекла, а ещё им важны удобные сидения с ремнями безопасности».
#мысли#dev
💬Threads → 📸 Stories
Да-да-да, клон твиттера, но без анархии Маска и не ясно чем по итогу нужно пользоваться, но я хочу вбросить тему про Add to story.
Threads хорошо напомнил всем нам, как можно работать с Facebook SDK по публикации в Stories/Posts. Ребята заюзали свой же соседний сервис для дополнительного охвата и сделали красиво.
На моей памяти Yandex Drive в свои времена аналогично использовал SDK инсты для шэринга промокода. Сейчас они убрали кнопку перехода в Stories (наверно затрахались следить за обновлениями в SDK), добавил пример. Других ярких кейсов не могу сходу назвать, если что, пишите в комменты.
Глядя на такую хорошую реализацию Threads, в которой они поддерживают локаль + стиль темы, я в свой чек-лист по созданию проектов добавил пункт — «Возможность использования Add to story». Вариантов использования может быть много, например:
🍷 Доставка товаров/винный — карточка с рейтингом, ценой, сочной фоткой товара/бутылкой вина
💳 Финансы — карточка с курсом валюты или тариф/карта с бонусами
🎞 Стриминговый сервис — карточка с обложкой видео/трека, просмотры/прослушивания, длительность
👍 Принцип вы поняли
𐄂 𐄂 𐄂
Продукт через свою аудиторию получает дополнительный канал упоминаний и присутствия, а по тапу переход в прилож/сайт, профит.
Ⓜ️SDK for Developers
#мысли#dev
🍏Camera Control
Кажется, Эппл задал новый тренд для китайских телефонов и скоро мы увидим множество похожих на Camera Control кнопок
🥱
Я почитал спеку и там есть интересные моменты, смотрите:
✓ Данный контрол может использоваться только для приложений, которые работают с камерой (иначе будет реджект по HIG)
✓ Внутри контрола можно использовать только SF Symbols
✓ Если вы ранее использовали кнопки на превью камеры — переносите их в новое меню
🤤
🔗HIG Camera Control
Теперь вы тоже вооружены, чао!
P.s. Есть ещё прикол с камерой. 11 лет назад в iPhone 4 уже был слайдер переключения режимов как в новой iOS. Вот так камбэк :)
#apple#dev
Делай раз, делай два, Air Pods считает за тебя
Вы знали что через AirPods можно слушать музыку, аудиокниги и вообще какой-то аудиопоток? Понятно что знали, вы же не дикари. А знали что в AirPods (3-го поколения), AirPods Pro, AirPods Max и Beats Fit Pro есть датчиками движения, через которые можно:
• Считать прыжки
• Считать количество приседаний/отжиманий/других упражнений
• Использовать iPhone/iPad как микрофон и транслирует звук прямо в наушники
Для всех кто пилит свои приложки про фитнес, спорт или что-то смежное, можно использовать real-time sensor API для лучшего UX и погружения:
🍏CMHeadphoneMotionManager
🧰Code Examples на GitHub
🕹Headphone Motion Unity Plugin
Рефы:
Fitnexx, YaoYao, Posture Pal, Live-прослушивание
#apple#dev