C#razy
144 subscribers
253 photos
51 videos
2 files
389 links
Путь в IT, рост, менторство, поддержка, прокачка, мотивация

👨‍💻 Senior .NET dev с 12+ лет опыта
📚 Учусь в MIT по Computer Science
🖥 100+ дней подряд LeetCode
⚒️ Работаю на зарубеж
💻 Веду блог про рост в IT с нуля
🧭 Помогаю понять, куда двигаться
Download Telegram
Ребята, всем привет. Ищем Senior React Native Engineer (5+ yrs) to lead mobile development end-to-end. We are specifically looking for candidates with strong hands-on experience in offline-first architecture and data sync mechanisms. Если у вас есть подходящие друзья, познакомьте нас пожалуйста.

Зарубежка. К нам в команду. Оплата в USD. B2B контракт. Команда англорусскоязычная.

https://marguru.dev/jobs/senior-react-native-engineer

#вакансии #cv #react

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👨‍💻1
Отклик на вакансию: База

В догонку к посту про вакансию

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

➡️ База
во-первых, нужно показать релевантность, HR может сразу тригернутся и понять что вы мечта компании. Напишите 2-3 примера из своего опыта, которые прямо пересекаются с задачами вакансии и подкрепите их цифрами или результатами по типу XYZ методу
Во-вторых - продемонстрируйте мотивацию: объясните, почему вам интересен именно этот продукт или компания.
Даже одна фраза о том, что вы пользуетесь их сервисом или смотрели питчи фаундера, читали ЛинкедИн СЕО и т.п, выделит вас на фоне тех, кому всё равно, где работать.

Ещё культурный код это тяжко но, как компания общается в соцсетях или вакансии, и используйте их тон (живой язык или официальный стиль) по сути надо посмотреть как они формально пишут свои посты и сделать похожий тон. Сложно, это добавить 1-5% к вероятности но можно и скипнуть

Кира как всегда супер объясняет более понятным языком.

Ссылка: ТУТЪ

#hr #cv

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🙈1
Утек код Claude Code от Anthropic

Этот год будет интересным, я вас уверяю 😅


➡️ Вообщем новость
Утек исходный код Claude Code CLI от Anthropic

➡️ Причина
.map файлы в npm-пакете
Внутри исходный код: комментарии, промпты, внутрянка

➡️ Что нашли
- BUDDY: тамагочи прямо в терминале
- Dream: «сон» для очистки и структурирования памяти
- KAIROS: режим, где AI сам предлагает решения
- Undercover Mode: чтобы не палить внутренние названия
- ULTRAPLAN: планирование задач на отдельной модели
- мультиагентная система и YOLO-апрув действий

может это человеческий фактор или ai first фактор это мы уже не узнаем. Уверен что есть места где Claude code пишет Claude code


User: «Claude, поможешь оптимизировать эту Claude function?»
Claude: «Конечно. Сразу после того, как закончу рефакторинг той версии себя, которая тебе сейчас отвечает»
Рекурсия 80 уровня

Но я думаю даже это не пошатнёт веру AI Prompt Guru и тех людей которые верят тем самым AI Prompt Guru

Ссылки: x.com, github

#Claude #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤯2🔥1
Финальный этап - экзамен. Курс пройден полностью, все темы разобраны.

Ну вот и всё вот и финишная прямая
Затянулось конечно обучение с этой весной, конфликтами, Грузиями, Apple и всем подряд)

Экзамен крч в итоге это про понимание. Формат довольно плотный: около 65 вопросов и примерно 130 минут, где проверяют теорию, способность думать через мифические\реальные кейсы тут можно поплыть так как по сути через кейсы будет понятно на сколько я выучил это всё).

Сдавать буду без лишнего растягивания после 2 недель думаю вообще можно всё забыть поэтому готовиться может 1-2 недели макс и иду закрывать.

➡️ Варианты оплаты
* $99 за одну попытку
* ~$99 за пакет с 2 пересдачами. У вас может быть скидка и смотря в какой валюте.
ССЫЛКА

Выбран пакет с пересдачами: ошибка не страшна, цель - сдать.

➡️ План на 1-2 недели
* повторить кучу тем
* проработать слабые места это то есть почти треть)))
* так ну вроде всё, ах да более 40 сервисов подучить))

#aws
#обучение

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥3❤1
Регистрировался в Apple Developer Program

Вот значит решил получить аккаунт разработчика в Apple.
Так сказать чтобы опубликовывать приложения в App Store
Как ещё можно заработать $10 в этом мире

Если кто не в курсе Apple массово заблокировал аккаунты разработчиков, включая доступ к Apple Developer Enterprise Program (ADEP) для внутреннего ПО и рекламному сервису Search Ads из за санкций


Вот я решил пройти этот пусть в 2026.

Зашёл заполнил форму, подгрузил доки нажал Enroll. Заполнил форму и тут понеслось 🥲

После этого началась проверка.

0. Я прождал 2 недели ответа нет
1. Создали билет в саппорте у Эпла и жду ответа
2. Мне пришло письмо от саппорта по имени Мария, что мою заявку на разработчика не видят 🥲. Я скинул скриншоты и показал что у меня написано заявка отправлена и подтверждена. ЧатГПТ пишет что это нормальная история когда Apple теряют заявки при регистрации, тип мол, у них там бага и это нормальная история и я не первый у кого так 😱 (1млрд компания, спасибо)
3. В итоге попросили доказать что я человек. Сначала загрузил паспорт 🙀
4. Потом пришло письмо, что нужны дополнительные документы ещё раз загрузил паспорт 🤡
5. Пришло письмо что нужен документ где указана точная дата рождения. Я крч открыл паспорт и там по центру экрана написана дата рождения 🤕
6. Угадайте что я подгрузил снова? - паспорт ну
7. Потом пришло письмо понятный город где я родился 🤧. Пошёл по проверенному пути. Открыл паспорт и там по центру уже только левее ниже на сантиметр написано место рождения 🤠

Крч я загрузил ещё какие то доки доп чтобы разорвать этот круг ада.
И да я создавал тикет в Apple support с этим вопросом: Будьте так любезны проверить всё ли так и я открыт к обсуждению и предоставлению и тп
Каждый ответ занимал где то 2-7 дней. Привет АИ как ты там заменяешь людей всё ок?


➡️ Что понял по процессу
- проверка не автоматическая как оказывается её всё реально смотрят люди
- могут запросить дополнительные документы, это нормально в 2026
- если данные не совпадают или чего-то не хватает - просят ещё раз
- смело писать в саппорт почему не проходит


ииии свершилось мНЕ Одобрили заявку
и мне одобрили ОПЛАТУ аккаунт разработчика в Apple. ОДОБРИЛИ ОПЛАТУ КАРЛ!

И ещё Если регистрируешься как физлицо приложение будет публиковаться под твоим именем.
Чтобы было название компании нужна зарегистрированная компания и тут кругов ада не два, а думаю двадцать два гуси лебеди

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

Если кто-то планирует публиковать приложение лучше заложить это заранее время


#apple

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65❤21
Media is too big
VIEW IN TELEGRAM
Регистрация аккаунта Apple
28 дней спустя


#apple

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤2🔥22
This media is not supported in your browser
VIEW IN TELEGRAM
Мила Йовович делает AI проект

Жаль но походу это скам

#ai
#news

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
1👾5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍43
This media is not supported in your browser
VIEW IN TELEGRAM
День выгорания был 28.04

А я ещё думал почему такой сверх день был, а это тот самый день, когда ты не просто усталь, а с меня довольно

Это просто перегруз.
И если игнорить потом придется “чинить” себя дольше чем обычно

Реальность нужно менять
- Работать 24/7 не геройство, а быстрый путь в минус и никто не оценит да и с лояльность сейчас проблемы в компаниях и рынке
- Я потом отдохну обычно не наступает потому что есть что полистать
- удаленка и перерыв это уже часть работы не награда и не достижение

Крч сигнал “остановись и перезагрузи систему” нужно уметь поймать и нужно выдохнуть 😮‍💨

Береги себя. Ты у себя один 😳 и у нас один 😂

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10
May the Force be with you

Айтишники, да пребудет с вами стабильный прод, быстрые запросы и ноль багов на этой недели (но это не точно)

#humour
#4may

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
52❤1👍1
Apple подала в суд на OpenAI и обвинила компанию в краже коммерческих секретов

По версии Apple, OpenAI нанимала бывших сотрудников компании, которые могли унести с собой внутренние документы, технические данные и информацию о будущих устройствах.

Классическая ситуация в IT: человек уволился, а вместе с ним почему-то уволилась еще и папка с кредами 😅

В иске также фигурируют два бывших сотрудника Apple. Компания считает, что они передавали OpenAI закрытую информацию о разработке устройств, производстве и поставщиках.

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

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

OpenAI уже давно хочет быть не только компанией с чат-ботом. Они планируют выпускать собственные устройства с искусственным интеллектом и для этого работают с Джони Айвом с бывшим главным дизайнером Apple только надеюсь не так же он же вроде делал для Ferrari и получилось мягко говоря не очень 🤣

То есть раньше Apple просто добавляла ChatGPT в свои устройства, а теперь OpenAI может сама выйти на рынок железа и тут будет весело

И тут партнерство быстро превращается в конкуренцию.

Пока это только обвинения Apple. Суду еще предстоит разобраться, действительно ли OpenAI использовала украденные данные или Apple просто увидела будущего конкурента и решила заранее сходить в суд.

В общем, начинается новый сезон сериала «Технологические корпорации судятся друг с другом» победят все обоюдно как всегда но запрос полетел и дальше по вертикали будут шерстить компании по ниже или аудит запросов в Claude Code (который кстати можно сделать если есть корпоративный аккаунт) это новая шиза 2026 года

Ссылка: ТУТъ

#news
#apple
#openai

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🗿1
Почему меня долго небыло если кому то интересно (да нет)

короче кто заметил что я пропал не забил и не выгорел. я строил имбу

вообще в какой то момент дошло наконец я ушёл в тишину и сел пилить свой стартап.

и это прям стартап, а не пет проект по фану на вечерок подпивас. у меня есть основная работа, честные 9-5. так что стартап это ранние утра до работы, вечера после и бессонные ночи когда весь мир дрыхнет никакого "бросил всё пошёл за мечтой" просто пашешь два раза в ночь и второй раз бесплатно в ночь на голом "я хочу это построить" так и живу в режиме выживаю и горю этим

и вот тут вылезла главная ишью

смотрю так код писать я умею это моя история тут я как шарю а вот всё остально хм пока не умею вообще лол и это при том что у меня за жизнь было ООО и четыре ИП казалось бы человек бывалый, всё должен знать а нифига оказалось одно дело оформить бумажки и совсем другое реально построить продукт который кому то нужен и полезен и все могли заработать и win-win ситуация да и польза объществу а не ai slop

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

я сам так думал лол а потом сел и понял насколько недооценивал вообще каждый шаг.

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

а теперь по факапам потому что абстрактно то легко рассказывать, давайте честно

гугл авторизация. ну казалось бы, кнопка "войти через гугл" карл, любой джун вставит за час. ага щас я в ней завис на несколько вечеров. popup или redirect, какой flow, где секреты хранить, почему на одном телефоне заходит а на другом отваливается. простейшая на вид штука которую юзер даже не заметит сожрала мне кучу ночей и токенов

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

и работа с claude code, с ии как с напарником. тут вообще отдельный урок. ии реально ускоряет, но он за тебя не думает я собрал команду агентов сейчас их 19. передомной отчитываются 3 остальное делигируют. они с радостью налепит тебе костылей если ты сам не втыкаешь что строишь. пару раз ловил себя на том что вместо нормального решения взял красивый обходной путь, который через неделю пришлось выкидывать ИИ это усилитель. усиливает и скорость и твои же косяки. Смотря как ревьюваешь

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

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

так что да. пора строить. не потому что модно и все строят. а потому что по другому это просто не понять и надо. только руками, только на своих косяках, только в три ночи когда что то наконец заработало.

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

#startup
#s01e01

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3
Как я подключил GitHub Actions и за неделю сожрал все минуты

Начну с конца: биллинг у GitHub устроен так, что ты не замечаешь, как тратишь. Пока не приходит письмо что мол у вас кончились минуты. Какие ещё минуты 😏

Подключил GitHub Actions. Бесплатно же 2000 минут в месяц на Team-плане БЕСПЛАТНО. Думаю ну хватит же мне столько я соло проект проект небольшой. iOS-приложение, сервер на .NET, веб-дашборды. Пайплайн простой собрать, прогнать тесты, залить билд в TestFlight и усё же ну

Первый нюанс о который я споткнулся сразу: минуты на macOS-раннерах считаются с множителем x10 если повезет (ГРАБЁЖ). Одна минута сборки iOS = 10 минут из лимита. Linux - x1, Windows - x2, macOS - x10 для богатых. То есть мои 2000 минут это на самом деле 200 минут сборки iOS. Три часа. В месяц. Об этом я унал когда уже оплатил и упёрся в лимит 🥲

ИТОГО Три Часа/// В месяц

а я съел лимит за неделю

А теперь что я реально делал. Я итерировал. Быстро. Фиксил баг с ориентацией камер пуш, сборка, проверка на устройстве. Каждая сборка iOS: компиляция, подпись, архив, загрузка в TestFlight.

А двадцать пушей за ночь это обычный день, когда ты дебажишь что-то на реальном устройстве, потому что симулятор не умеет ни камеру ни потоки ни GPS ни внутрении функции пермиссии да господи вообще толку 0

Apple ограничивает загрузки в TestFlight. По сути блок на сутки то есть я и минуты сжёг и билд залить не могу
отличный разработки вам 🫡

По деньгам
Сверх лимита GitHub считает по факту: macOS $0.08 за минуту. Не за минуту сборки за минуту с множителем. Час сборки iOS сверх лимита = $48. Но есть тариф $4 и ты получаешь 3000 минут вроде ок живём дальше

Я съел лимит за ночь
Следующая ступенька 20000 минут. А тут уже $21 за пользователя в месяц. Не за минуты за человека 😩. Каждого. Растёт команда растёт счёт, независимо от того, собираешь ты что-то или нет.


Тут отдельное спасибо другу разработчику из Канады. Хорошо иметь друга-разраба. Он мне и сказал: Ты чего? Подними self-hosted runner на своём маке. Это полчаса работы.

Полчаса. Я уже готов разломать кубышку и платить доллары а тут полчаса работы и бесплатно.

Решение:
Перевёл сборку iOS на свой мак. Self-hosted runner: ставишь агент, регистрируешь в репозитории, в workflow меняешь runs-on: macos-latest на свой лейбл. Всё.

Ноль минут GitHub. Self-hosted раннеры не тарифицируются вообще. Сборка iOS теперь стоит мне электричества.

Быстрее. Cloud-раннер каждый раз поднимается с нуля: качает зависимости, ставит Xcode-тулзы, прогревает кэш. Мой мак уже прогрет Xcode стоит, SPM-пакеты закэшированы, симуляторы на месте. Сборка ускорилась в разы.

Сразу можно проверить. Вот это, пожалуй, главное. Билд собрался он физически лежит у меня на машине. Не надо ждать TestFlight, не надо ждать пока Apple прожуёт. Воткнул телефон поставил проверил.

Проблемы, которые вылезли
Не всё было гладко, честно скажу:
Раннер живёт на моей машине значит, мак должен быть включён. Закрыл крышку CI встал. Пришлось разбираться с настройками сна.

Раннер не изолирован. Cloud-раннер каждый раз чистый, а мой копит мусор: старые артефакты, DerivedData, кэши. Диск забивается. Надо чистить.

Secrets теперь лежат на моей машине. Сертификаты, APNs-ключ, App Store Connect API-ключ. На cloud-раннере они прилетают из GitHub Secrets и умирают вместе с виртуалкой. У меня — живут. Это ответственность.

Отдельно пришлось сделать опт-ин на загрузку в TestFlight. Теперь код компилируется и проверяется на каждый пуш, а билд едет в TestFlight только если в коммите есть тег для пуша в Apple. Нужен билд на устройство ставишь тег. Не нужен просто проверка. Это ещё и лимит Apple разгрузило.

И до кучи вывел биллинг на сайт потихоньку движемся в будущее


#startup
#s01e02

#github

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1🤯1
Зачем нужен бастион и почему база не должна смотреть в интернет

Каждый раз перед работой над стартапом надо поднять SSH-туннель. Кажется лишним шагом "дай мне уже просто строку подключения".

Расскажу, почему этого просто не будет ну как обычно 🤫

У managed-базы в облаке есть DNS-имя и порт. Самое простое решение сделать её publicly accessible, прописать в security group свой домашний IP и работать в AWS. Так делают. Так делать не стоит.

Как только база доступна из интернета, ты на неё больше не влияешь. Она в чужих сканах. Каждый ботнет, перебирающий стандартные порты по облачным диапазонам, находит её за часы. Дальше вопрос только в том, насколько хорош пароль и насколько быстро ты узнаешь про свежую CVE в своей СУБД.

Плюс IP-аллоулист врёт про безопасность. Домашний IP меняется я человек серый,сижу из кофейни, подключается второй разработчик и список из мой IP превращается в подсеть провайдера а потом в 0.0.0.0/0 вообщем боль ну

Итого
У базы нет публичного адреса вообще. Её security group принимает входящие только от security group приложения не от IP, а именно от группы. То есть достучаться до базы физически может только машина внутри того же VPC, состоящая в нужной группе. Из интернета к ней маршрута не существует. ВПН дорого ssh сложно плюс айпи

Бастион - мой выбор единственная машина с публичным адресом. Единственная дверь, и открывается она только по ключу а ключик то у меня 😎

Локальный порт на твоём ноуте становится портом базы. Трафик идёт внутри SSH-сессии до бастиона, а оттуда уже внутри приватной сети. Протокол базы по открытому интернету не ходит вообще шито крыто ну

А теперь еще и туннель 🤯
Контейнеры поднялись, а туннель нет и получаешь connection refused. Туннель живёт на хосте и в docker compose up не входит. Если локальный стек внезапно отвечает пятисотками/ Тунель поднимается с бастионом ну ляпота же 🦾

Крч это единая точка аудита. Все обращения идут через одну машину, у неё есть SSH-логи. Кто заходил, когда, с какого ключа видно. Когда база смотрит наружу, такого журнала нету

Управление доступом через ключи, а не через IP. Ушёл человек удалил ключ с бастиона, доступ закрыт мгновенно и целиком. Не надо ходить по десяти security groups и вспоминать, чей это был адрес.

Радиус поражения. Скомпрометировали ключ разработчика злоумышленник получил SSH на бастион, а не root на базе. Это плохо, но это одна дверь, за которой ещё нужны креды к базе. Разница между инцидентом и катастрофой. Крч тут вкусовщина вообщем без ВПН выбор такой за ВПН нужны доллары а хочется их потратить на что то другое

Итого

Бастион - не бюрократия, у базы нет публичного адреса ну и туннель, ключи, лишний шаг перед работой. Плата: тридцать секунд на подъём туннеля а не 30 центов)). Получаю базу, которой в интернете просто не существует.

Что убрал по сравнению с прошлой версией: DNS-эндпоинт RDS, IP бастиона, имя мастер-юзера, имена наших compose-файлов и креды локального Postgres, регион и название инстанса. Плюс выкинул раздел про то, что дев-стек ходит в живой прод, это про мой внутренний компромисс с биполяркой, публично такое рассказывать незачем да и кому это надо

Вообщем Бастион стоит туннель разрыт двигаемся в будущее и как интересно маркетологи строят стартап 🧐

#startup
#s01e03

#bastion

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4🤯11
Стартап, серия 4. Матан, ИИ-математик и внезапно VR

Есть задачи которые выглядят интуитивно простые а потом фжух и сидишь в 4 ночи, гуглишь gimbal lock и понимаешь что подписался на трёхмерную геометрию.

ЗАДАЧА
Человек держит телефон, идёт, крутится, наклоняет руку. На экране метка, приклеенная к объекту в реальном мире. Не к пикселю, а к объекту. Телефон вправо, метка влево. Крутанули телефон, метка осталась где была. Звучит просто Не просто. По сути это математический захват и он в Unity сделан из коробки

УГЛЫ ЭЙЛЕРА 😎
Три числа: yaw (влево-вправо), pitch (вверх-вниз), roll (набок). Так устроены датчики, так это в логах, поэтому все с них начинают. Ломается когда повороты надо складывать.

Пример простой: Порядок важен. Возьмите телефон, держите перед собой экраном к себе.
Сделайте два движения подряд: поверните вправо (как будто крутите руль), потом наклоните вперёд (верхний край от себя).
Запомните, куда он смотрит.
Теперь верните как было изначально и сделайте те же два движения, но поменяв местами: сначала наклоните вперёд, потом поверните вправо. Телефон окажется в другом положении. Движения те же, углы те же, а результат разный - просто потому что порядок другой. Два поворота, переставленные местами, дают разный итог.

Gimbal lock. Когда pitch подходит к 90, yaw и roll схлопываются, крутят вокруг одной оси. На экране это припадок, метку дёргает и уносит. Из-за этого чуть не потеряли ориентацию на Apollo 11.

Плюс разрывы: 359 и 1 это соседи, но численно между ними пропасть в 358, и любое сглаживание сходит с ума на этой границе.

Еще всякие фильтры, делеи, аппроксимация это только верхушка айсберга 🤒 И ГРАВИТАЦИЯ господи я об этом даже не думал а надо 🤯

КВАТЕРНИОНЫ 😎
Четыре числа, кодируют поворот иначе: вокруг какой оси и на сколько.

w = cos(θ/2), а x, y, z это оси, умноженные на sin(θ/2).

Всех ломает деление угла пополам. Это не опечатка. Кватернион применяется к вектору с двух сторон, q · v · q⁻¹ поворот проходит через формулу дважды, поэтому внутри половина угла. Побочка: q и минус q это один и тот же поворот.

Что меняется:
1 gimbal lock: был, стало нет вообще
2 складывать повороты: боль, стало одно умножение
3 интерполяция: ломалась, стал slerp по кратчайшей дуге
4 разрыв на 360: был, стало нет
5 читаемость глазами: была супер, стала никакая вообще никакая

Главное это композиция. Ориентация телефона, поворот камеры, положение объекта просто перемножил и всё. С Эйлером это матрица поворота

Короче в итоге гибрид кватернионы внутри, Эйлер только на входе и в логи для человека.

ИИ-МАТЕМАТИК
Первая версия была на Эйлере. Работала. Пока телефон держали ровно.

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

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

Вот тогда я и вспомнил матан. ИИ отлично ловит ошибку но вот с решением беда путается в трех соснах

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

ПРИЧЁМ ТУТ VR
Пока разбирался, дошло что я решаю базовую задачу VR/AR. Та же математика под трекингом шлема и под привязкой виртуальных объектов к миру, чтобы стол оставался на месте когда вокруг него ходишь это было где то 5:30 утра 🤡

И везде кватернионы, потому что Эйлер не выдерживает. Gimbal lock в шлеме значит посмотрел вверх и мир крутануло

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

#startup
#s01e04

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
10🤯73❤2👍1
Стартап, серия 5. Корабль часть команды

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

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

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

Размер команды под задачу. Мелкий фикс - один. Фича в одном стеке - двое-трое. Кросс-стековая история - полноценный состав. Звучит очевидно, но я долго тупил: либо всё сам, либо толпа на задачу которая того не стоит, и потом разгребай их конфликты. По сути я работаю с тремя агентами они дальше делегируют команде и команда строит решение иногда они сорятся Продакт с Тим Лидом или с UI/UX и масштабируется от сложности задачи/ По сути сначала идет оценка сложности и дальше от сложности завется вся команда или нет если что то связанное с ядром вся команда задейстуется а их 19 агентов 🥰

Спека до работы. Самое важное. Раньше: «сделай X» → делает → не то → переделываем. Сейчас сначала пишется что делаем, какие граничные случаи, что считается готовым. Кажется что замедляет — ускоряет в разы, потомучто не переписываешь три раза одно и тоже.

Гейты которые нельзя проскочить. Безопасность, приватность, QA - не «если успеем». Варнинги = ошибки. Дисциплина которую сам себе я не мог навязать годами, а тут она встроена в процесс.

Трассируемость. Каждое решение записывается почему так а не иначе, что пробовали и не взлетело. Через месяц сам себя спросишь «какого чёрта тут это» и без записи не вспомнишь.

Как выглядит день. Три агента с которыми работаю руками - те кто трогают код там где цена ошибки высокая. Постоянный диалог: смотрю что предлагают, спорю, разворачиваю. Не запустил и пошёл пить чаёк, а парная работа, только партнёр не устаёт и не обижается когда в четвёртый раз говоришь что решение кривое и костылей понаставлял ленивый ты балбес

Остальные делегируют три агента другим агентам 🤯. Разбирают кусок, дробят дальше, раздают подзадачи, приносят готовое с обоснованием.

Эта двухуровневость всё поменяла. Раньше выбор был: контролирую всё и я бутылочное горлышко, либо не контролирую ничего и получаю мусор. Сейчас контролирую там где надо, отпускаю там где не надо. Три не магия, просто столько сколько держу в голове не теряя внимание. Больше - начинаю кивать на то что не читал.

Что было сложно. Отпустить. Видишь что агент идёт не тем путём которым пошёл бы ты, рука тянется вмешаться. А потом оказывается путь нормальный, просто другой. Пришлось учится смотреть на результат а не на процесс.

Паралельная работа ломает всё если не изолировать. Несколько агентов в одной папке затирают друг другу изменения. Решилось изолированой копией на каждого.

Соблазн сказать "готово" когда не готово. Касается и меня и агентов. Запустил, увидел вывод - только тогда работает. Не "должно работать" Ошибки бывают конечно но главное правильно управлять и рефакторинг/ Команду строил где то недели три наверно параллельно когда решал задачи/ Но ребята(агенты) тестил на стартапе и сколько они ломали проект не счесть

Ощущение странное: вроде инженер, а вроде тимлид который наконецто начал доверять команде. Только команда доступна круглосуточно и не уходит за плюс двадцать процентов к зарплате но несколько подписок и LLM решают вопросы

▶️Итого: 3 подчиненных и команда из 19 агентов/ Ноут выжигает 470% зарядки но это того стоит и кожанный мешок нужен ОБЯЗАТЕЛЬНО!
как строят стартап маркетолаги так и непонял 🙂

[REELS]

#startup
#s01e05

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤33👍1
подсматриваю у Убера и Дордэша

Когда строишь realtime систему изобретать это дело последнее в современном мире. На что вам Убер и Дордэш работают на объёмах которые мне и не снились и написали про это кучу инженерных статей даже книги есть ну и всякие задачи для собесов

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

Пришлось разбирать какие запчасти я беру для своего велосипеда

➡️Что в итоге беру
Сервер это источник правды, клиент это мнение и это я уже заучил как мантру. У них статус заказа не решает приложение курьера решает сервер звучит логично. Курьер нажал доставил, это не факт а как бы заявка. Сервер сверяет с геопозицией, временем, историей и решает засчитать или нет
Клиент рассказывает как было, сервер решает что засчитать. Особенно там где деньги.

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

➡️А тут своё
У них сервер видит поток и знает состояние автоматом. У меня клиенты общаются мимо сервера и сервер не знает что там происходит.
Значит надо синхронизировать. И это оказалось самой муторной часть это синхронизовать то есть связь с серверам нужно но более умная

Проблема простая на словах: есть три мнения о происходящем. Что думает один клиент, что думает второй и что знает сервер. И они расходятся постоянно.
Один считает что соединение живо, второй что оборвалось. У обоих часы врут по своему. У одного сеть моргнула и он не досчитал полминуты. ДА чёрт пойми кто прав в итоге/

Играет главное правило Сервер всегда прав (который незнает ничего потому что клиенты общаются друг с другом минуя сервер) Время сессии сервер засекает сам он видит подключения к сигналингу, этого достаточно. Клиенты присылают только то за что не жалко если соврут качество связи, диагностику, статистику.
Вторая проблема кто то отвалился и вернулся. Клиент пропал на двадцать секунд и пришёл обратно. Это та же сессия или новая? Где деньгами Лебовски?

У Убера проще, у них соединение с сервером и оно либо есть либо нет. У меня рвётся связь между клиентами а с сервером всё нормально. Или наоборот. Комбинаций больше и разбирать их надо руками.

Решил так в итоге: решает сервер и только сервер. Оба клиента могут думать что угодно а сервер держит окно на восстановление и по его истечении закрывает. Никаких таймеров на клиентах, потомучто два таймера всегда разъедутся и получишь две разные версии одного события. Есть таймер только на сервере а клиенты с ним сверяются и тикают свои таймеры/ По сути как в любой мобильной игре и это только начало господа///

[REELS]

#startup
#s01e06

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3🔥2❤1
Разобрал свой кластер. Оказалось я делал велосипед
Полгода у меня жил самопал. Идея простая: хочу давать задачи с телефона, а выполнялись они чтобы дома на маке. Ну и построил.
Сервис на маке который слушает очередь. Бот в телеге который в эту очередь кладёт. Прослойка которая запускает задачу и складывает результат. Всё на скотче, всё держалось на честном слове, и я это чинил примерно каждые выходные.
Работало? Ну как сказать. Работало пока не отвалится вебхук, пока не протухнет токен, пока мак не уснёт, пока я не обновлю что нибудь и не сломаю всю цепочку.
А на этой неделе выкатили /remote-control и я его снёс. Весь. Целиком.
Что оно делает
Включаешь в локальной сессии и она становится видна с claude.ai. Заходишь с телефона под тем же аккаунтом — сессия в списке. Пишешь ей, а выполняется всё на твоём маке. Твои файлы, твой гит, твоё окружение.
Ссылку никуда передавать не надо, это меня удивило больше всего. Связывает по аккаунту а не по урлу. Открыл клод на телефоне, залогинен тем же — вот она сессия.
Мой кластер решал ровно это. Только у меня было три компонента и очередь, а тут одна команда.
Как теперь выглядит
Мак стоит включённый на зарядке. Крышка открыта. Терминал запущен.
Я иду куда угодно и надиктовываю задачу голосом с телефона. Мак разбирает, лезет в код, правит, гоняет тесты, коммитит. Могу попросить открыть ПР — откроет.
Возвращаюсь — работа сделана, ветка готова, ПР висит.
Но давайте честно
Это не «сказал и забыл», и я бы не хотел чтобы кто то так понял.
Это по прежнему сессия за которой надо приглядывать. Задача может упереться в вопрос — какой подход выбрать, точно ли удалять этот файл. Может запросить разрешение на команду. И тогда оно ждёт тебя, а не решает само.
То есть выигрыш не в том что появился автономный агент. Выигрыш в том что мне больше не нужно физически сидеть за маком чтобы им пользоваться. Раньше пришла идея в дороге — записывал в заметки и делал вечером. Теперь диктую сразу и вечером разбираю результат.
Разница как между «работник которому можно позвонить» и «работник которого можно уволить и он сам всё сделает». Первое, не второе. Но первого мне и хватало, я именно это и строил.
Грабли на которые наступил
Мак спит. У меня стояло засыпание через минуту простоя, обе схемы. Уходишь, экран гаснет, всё обрывается. Чинится одной строчкой чтобы не спал от сети, батарею при этом не трогаешь.
Крышка. Вот это отдельно. Отключение сна не спасает если закрыть крышку — это другой триггер. Либо внешний монитор либо крышка открытая, третьего нет. Я на этом потерял вечер, думал что не работает функция.
Залоченный экран это нормально. Блокировка сну не равна, процессы продолжают идти. Можно спокойно лочить.
Что понял
Обидно немного. Полгода поддерживал конструкцию которую заменили одной командой. Но я это уже проходил и знаю чем себя утешать: пока строил, разобрался как оно устроено внутри, и теперь понимаю что происходит когда что то ломается.
И момент который считаю важным. Мой велосипед был хуже не потому что я плохо его сделал. Он был хуже потому что я один а у них команда и они видят как этим пользуются тысячи людей. Я решал свой случай, они решали общий.
Если у вас есть такой же самопал — сходите посмотрите, может его тоже пора выкинуть. Приятное чувство когда удаляешь то что чинил каждые выходные.

#startup
#s01e07

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
13❤2
POI на карте
Крч POI это Point of Interest, точки на карте: замок, водопад, смотровая. Казалось бы взял базу, накидал маркеры. Я тоже так думал но как же я ошибался 🤡

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

Первая проблема
Начал с Черногории скачал, обработал, получилось 302 места.
Дальше надо понять по всей Европе. Считал так: файл Черногории весит 33мб и даёт 300+ мест, значит примерно 9 мест на мегабайт. Вся Европа это 32гб. Умножаю, выходит 238к+ точек. Ну ок, думаю ок потом померил ещё раз Греция: 325мб и 6500+ мест, а это 20+ на мегабайт то есть в Греции достопримечательностей на тот же объём файла вдвое больше. А моя оценка была построена на одной маленькой стране и занижена вдвое. По факту Европа это 300-600 тысяч точек.

Вторая проблема
Карта на экране показывает маленький кусок мира, а в базе вся Европа. Надо отдать браузеру только нужное и не уронить прод. Прод я уже ронял, знаем, проходили 🤡

Что с делал я
Сначало было тупо запрос на каждое движение карты и отдать сразу весь набор точек.
И началось. Двигаешь карту, точки исчезают, потом появляются заново. Мигание, дичь какая то.
Оказалось Mapbox а я использую это, когда ему отдаёшь новый набор точек, выбрасывает всё и строит заново. Даже если вернулись те же самые 33 точки, каждый кружок уничтожается и создаётся с нуля.
Сделал как у Airbnb, грузить один раз. Мигание ушло. Дальше упёрся в потолок: сервер отдавал максимум 1500 точек за раз, отсортированных по популярности. А одна Греция это 6518 мест. Одна средних размеров страна переполняла лимит в четыре раза 🤡

До карты доезжало 600 из 6500+ причём по рейтингу: известное проходило, остальное просто не существовало 😶‍🌫️. На среднем зуме карта вообще пустая крч так себе.

После перешёл на тайлы. Карта режется на квадратики, браузер просит конкретные по координатам и зуму. Каждый квадрат это всегда одно и то же место, значит браузер сохраняет его у себя и больше не спрашивает.
Заранее нарезаю всю базу и раздаю квадраты как обычные файлы с диска. 15 061 квадрат, 59 мегабайт, 9 секунд на всю нарезку. Самый тяжёлый 37кб , квадрат всего мира 400 байт.
Группировка точек в кружки с цифрой теперь считается при нарезке, а не в браузере. Не от хорошей жизни вообщем Mapbox умеет группировать только когда данные лежат целиком у него, а квадрат видит только себя и не знает что за краем.
Раскрытие кружка по клику пришлось переделать. Стандартная функция работает только когда все данные в браузере.
Если все 62к+ мест положить на самый дальний зум, где весь мир в одном квадрате, нарезка падает где то на семи тысячах. Пришлось раскладывать по уровням известные видны сразу, остальные при приближении хз наверно правильно так

Раньше каждое движение карты = запрос к серверу = запрос в базу = процессор. Десять человек возят карту, сервер это чувствует.
Сейчас квадраты раздаются как файлы с диска, браузер запоминает их на сутки. База при показе карты не трогается вообще.
Перенёс работу из каждый раз когда кто то смотрит в один раз когда данные поменялись Это главный приём во всей истории.


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

Нажимаем кнопки дальше и едем

#startup
#s01e08

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1