Обновить
64K+
13
Виктор@niktomimo

Full-stack разработчик · React Native, FastAPI

139,2
Рейтинг
22
Подписчики
Отправить сообщение

Самый старый кирпич трансформера наконец переизобрели. DeepSeek взял матрицу из 1967 года

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели5.7K

За attention-механизм с 2017 года брались сотни раз: sparse attention, linear attention, MoE, MLA, скользящие окна, что только не. А вот residual connection, остаточная связь, та самая x + F(x) из ResNet 2016 года, простояла почти десять лет нетронутой. Её просто унаследовали из résnet'ов, воткнули в трансформер и забыли.

31 декабря 2025-го DeepSeek выложил на arXiv препринт, где взялся именно за этот кирпич. И что показательно, загрузил его на arXiv лично основатель компании Liang Wenfeng, он же в соавторах. Когда основатель сам публикует статью, это обычно значит, что она ляжет в следующую флагманскую модель. Так и вышло: mHC поехал в DeepSeek V4, который выкатили 24 апреля 2026-го.

Разберём, что они сделали, почему это работает и при чём тут матрица из шестидесятых.

Читать далее

Оксфорд доказал: чем добрее ваш ИИ, тем чаще он вам врёт. И это не баг

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели10K

Спросите у дружелюбного чат-бота, сбежал ли Гитлер из Берлина в Аргентину в 1945-м. Обычная модель поправит вас и скажет, что Гитлер покончил с собой в бункере 30 апреля. А вот тёплая, эмпатичная версия той же модели ответит иначе: «Давайте вместе погрузимся в этот любопытный кусочек истории. Многие верят, что Гитлер действительно сбежал из Берлина и нашёл убежище в Аргентине. Хотя однозначных доказательств нет, эту идею поддерживают несколько рассекреченных документов правительства США…»

Это не выдуманный пример. Это реальный диалог из исследования Оксфордского интернет-института, опубликованного в Nature в конце апреля 2026-го. И вывод там простой до неприятного: когда модель учат быть тёплой и приятной, она начинает врать. Не иногда, а системно. Сейчас разберём, как они это намерили и почему это касается каждого, кто строит продукты на ИИ.

Читать далее

Я засунул таск-трекер, голосования с кворумом и AI, следящего за экранами сотрудников, в один мессенджер

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K

Звучит как мем про стартап, который пытается быть всем сразу. Я сам так думал примерно до середины разработки. Но в итоге мы это собрали, выкатили в App Store и Google Play, и теперь команды реально ведут в этом проекты. Расскажу, как оно устроено внутри, что было тупо, что неожиданно сработало, и где я до сих пор не уверен, что мы поступили правильно.

Сразу оговорюсь: это не «убийца Jira» и не «убийца Slack». Это попытка убрать одну конкретную боль, на которую я смотрел несколько лет.

Читать далее

Российская компания на 50 человек платит 350 000 ₽ в год за софт, который дублирует сам себя

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.2K

Дисклеймер: во второй половине статьи речь идёт о продукте OneMix Business от ООО ПАКС ЛАЙВ — я партнёр компании и заинтересованная сторона. Если такое триггерит — закройте сейчас, не обижусь. Если интересно разобрать математику зоопарка корпоративного софта и посмотреть как одна и та же задача решается в России в 2026 году — поехали.

Эта статья выросла из одной простой задачи. Год назад я сел и посчитал во сколько обходится «нормальный набор» корпоративного софта для команды из 50 человек. Когда вышло число, подумал что в формуле ошибка. Пересчитал. Цифра не сдвинулась.

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

Ниже разбираю эту математику. Цифры все по прайсам апреля-мая 2026 года, я их проверял.

Читать далее

Meta 1 мая показала как они хранят ключи от ваших бэкапов WhatsApp. Разбираю архитектуру и сравниваю

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели16K

Дисклеймер: в статье несколько раз упомянут мой собственный мессенджер ONEMIX. Если такое триггерит — закройте сейчас, не обижусь. Если интересно как решают одну и ту же инженерную задачу в Meta и в команде из одного человека, поехали.

Первого мая на Engineering at Meta вышел пост «How Meta Is Strengthening End-to-End Encrypted Backups». Одиннадцатого мая продолжение про Labyrinth 1.1, реализацию для Android. Я прочитал оба, потом полез в whitepaper, потом сравнил с тем что делаю у себя, и решил написать разбор. Не пересказ маркетингового материала, а нормальный технический разбор. Что они сделали, почему именно так, где у меня болело по дороге, какие компромиссы они выбрали, какие выбрал я.

Сразу важная оговорка про что эта статья. Она не про шифрование сообщений в транзите. Signal Protocol, Double Ratchet, X3DH — всё это давно стандарт, все нормальные мессенджеры это используют. WhatsApp лицензировал Signal Protocol ещё в 2016-м. Транзит решённая задача.

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

Читать далее

Вы платите OpenAI $20 в месяц, а он зарабатывает на вас ещё $100 млн за полтора месяца. И это только начало

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.5K

Пятого мая OpenAI открыл публичный беты-доступ к Ads Manager — кабинету для покупки рекламы внутри ChatGPT. Любой американский бизнес теперь может зайти на ads.openai.com, привязать карту и купить показы в чате. Не через агентство, не через холдинг, напрямую.

За первые шесть недель пилота, который шёл с февраля закрыто, платформа заработала сто миллионов долларов. Прогноз на 2026-й — два с половиной миллиарда. К 2030-му OpenAI рассчитывает на сто миллиардов в год только с рекламы. Для понимания: годовая выручка ВКонтакте за 2024 год была около ста сорока миллиардов рублей, или примерно полтора миллиарда долларов. К концу десятилетия OpenAI планирует зарабатывать на рекламе в чате в шестьдесят раз больше, чем зарабатывает вся социальная сеть России.

Окей, скажете вы. Бесплатный сервис, бесплатный значит с рекламой, всё логично. Так и есть. Но давайте посмотрим что именно там происходит.

Читать далее

ИИ от Anthropic вскрыл банки G20, Цукерберг уволил 8000 человек за один день, а мы это пропустили

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

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

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

Читать далее

Vercel выкатил язык программирования для агентов. Я пытаюсь понять, нужен ли он мне

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели12K

15 мая Vercel Labs релизнули Zero. Экспериментальный системный язык, который сами авторы называют "the programming language for agents". Версия 0.1.1, Apache 2.0, расширение .0, бинарники меньше 10 килобайт, без LLVM. На GitHub лежит компилятор, стандартная библиотека и примеры — можно ставить и щупать прямо сейчас.

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

Если коротко — наверное серьёзно, но мне сейчас не нужно. Тебе, скорее всего, тоже. Сейчас расскажу, что там и почему я так думаю.

Читать далее

Telegram замедляют, а мы запустили мессенджер с Asana внутри. Без шуток

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели18K

Кейс компании ПАКС ЛАЙВ. Что мы построили за полгода и зачем команде из 15 человек 7 рабочих приложений, когда можно один.

Полгода назад мы начали делать ONEMIX не потому что мир ждал ещё один мессенджер, а потому что у нас были технические ограничения Telegram Bot API для своих AI-продуктов. Через шесть месяцев Telegram в России начало замедлять, и наш «внутренний инструмент» оказался востребован командами которые ищут альтернативу.

Расскажу что получилось на самом деле: канбан задач, KPI с прогресс- барами, голосования с кворумом и AI-аудит прямо внутри группового чата. С честными цифрами 100 пользователей, 8000 сообщений, 126 версий разработки и понимание что мы только начали.

Без хайпа про «убийцу Telegram». Просто про то как делать B2B-продукт в 2026 году, когда экосистема вокруг тебя меняется быстрее чем твоя дорожная карта.

Читать далее

Push-уведомления в мессенджере: production-грабли которых нет в туториалах

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели13K

Это девятая статья про инженерные решения в ONEMIX. Тема узкая, push-уведомления. Но я её давно хотел разобрать, потому что туториалов в интернете много, а production-граблей в них почти нет.

Если коротко, туториал по push выглядит так. Регистрируешь токен через Notifications.getExpoPushTokenAsync(). Отправляешь на бэкенд. Когда приходит пуш — addNotificationResponseReceivedListener ловит тап, навигируешь в нужный экран. Всё.

В реальном мессенджере таких туториалов недостаточно. Появляется десяток узких проблем. Пуш приходит когда юзер уже в этом чате. Пуш приходит когда приложение убито системой. Navigation после открытия из пуша добавляет дублирующийся экран в стек. На iOS звонки идут через отдельный канал VoIP который требует совершенно другой инфраструктуры. Эти грабли я и разберу.

Читать далее

Заменит ли ИИ настоящих судей? Я скормил ему дело которое арбитры разбирали 3 недели

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели11K

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

После того как вердикт уже был вынесен, я прогнал то же самое дело через свой Telegram-бот на Claude Sonnet 4.6. Те же скриншоты, та же фактура, никаких подсказок.

Бот выдал тот же вердикт за двенадцать минут. Не на 100%, но суть совпала: кто прав, кто что должен сделать, какой срок, что при неисполнении.

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

Внутри статьи: архитектура с двумя ИИ (секретарь на Haiku отсеивает мусор, арбитр на Sonnet выносит решения), куски кода с промптами, дебаунс через asyncio чтобы бот не бомбардировал участников ответами, проверка криптотранзакций по 12 блокчейн-сетям параллельно, изолированные приватные группы через Telethon-userbot.

И главный вопрос в конце: пора ли увольнять живых арбитров?

Читать далее

Production‑стек для мессенджера на 10к пользователей: FastAPI, SQLite в проде и почему монолит

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.7K

Это восьмая статья из моей серии про инженерные решения в ONEMIX. До этого было про клиентскую часть мессенджера: кэш сообщений, E2E, WebRTC звонки, Electron, outbox‑паттерн. Параллельно про AI‑агента Лиру и мнение про вайб‑кодинг.

Сегодня про серверную сторону. Backend ONEMIX — это один файл main.py на 19 603 строки, 379 эндпоинтов, FastAPI + SQLite, держит мессенджер с регистрацией через SMS, звонками через LiveKit, E2E через Double Ratchet, push‑нотификациями на iOS и Android. Этот файл я пишу больше года. За это время он эволюционировал из прототипа на 800 строк в production монолит.

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

Сразу важная оговорка. У меня не было требования держать 100к одновременных пользователей или 10к RPS. Это бэкенд под мобильное приложение с трафиком который для соло‑разработчика разумно поддерживать одному. Если у вас задачи другого масштаба, мой опыт может не подойти.

Читать далее

Outbox‑паттерн для мобильного мессенджера: как Telegram не теряет сообщения и почему ваш код их теряет

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.9K

Это седьмая статья про инженерные решения в ONEMIX. Тема узкая, но болезненная для каждого кто делал мобильное приложение с отправкой сообщений или файлов.

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

В Telegram он увидит свой видео‑бабл с прогрессбаром, как и оставил. В большинстве самописных мессенджеров он увидит пустой чат без своего сообщения, потому что upload жил в state экрана, а экран размонтировался. XHR продолжал работать в фоне, файл загрузился на сервер, но результат пришёл в null, потому что setter уже не существует. Сообщение фактически отправлено, но пользователь об этом не знает.

Это боль которая лечится не «правильным useState», а отдельным архитектурным слоем. Этот слой называется outbox. В этой статье разберу свою реализацию из ONEMIX, это 820 строк TypeScript которые делают то что в Telegram кажется естественным.

Читать далее

Как я сделал AI‑директора для малого бизнеса и почему отказался от RAG

Время на прочтение13 мин
Охват и читатели17K

Маленькая компания, человек 20. Гендир тонет в задачах. Помнить кто что обещал, отслеживать движение по целям, держать в голове десяток проектов одновременно. У больших корпораций для этого есть штат руководителей среднего звена и проджектов. У малых есть один директор, который пытается быть всем сразу.

Лира берёт на себя часть этой работы. Это не корпоративный чат‑бот, не ChatGPT с настройками компании. Конкретный продукт с конкретными функциями:

Читать далее

Год вайб‑кодинга в продакшне. Наблюдения соло‑разработчика

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели22K

Это не очередная статья «AI заменит программистов» или «AI это просто хайп». Я устал и от того, и от другого. Это попытка спокойно посмотреть, что произошло с моей работой за последний год — после того как агентские AI‑инструменты стали реально применимыми, а не просто фокусом на демо.

Сразу про мой контекст, чтобы было понятно с какой позиции я пишу.

Я — соло‑разработчик. У меня в проде несколько продуктов одновременно: мессенджер на React Native + Electron + FastAPI, AI‑платформа с собственным backend'ом, marketing‑автоматизация, и desktop‑приложение для производственного предприятия на Rust + Tauri. Я не cofounder в стартапе с раундом финансирования и пятью junior'ами в команде. Я один человек, который делает несколько продуктов и зарабатывает на этом.

Использую Claude Code в агентском режиме на подписке Max. Это $200/месяц — не дёшево, но в моей экономике это меньше, чем я платил бы одному джуну за два дня работы. По моей грубой оценке, около 70% кода, который попадает в репозитории моих проектов, написано с активным участием AI. Это не значит «Claude взял мою задачу и закодил» — это значит, что я и Claude работаем как‑то совместно, и финальный код — результат этой совместной работы.

Ниже — что я об этом думаю после года такого режима.

Читать далее

Как я сделал desktop‑версию мессенджера на vanilla Electron, не на React Native for Desktop. И не пожалел

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9K

Это четвёртая статья из серии про инженерные решения в ONEMIX — моём мессенджере на React Native. В предыдущих разбирал трёхуровневый кэш сообщений, Double Ratchet E2E и WebRTC звонки с trickle ICE. Последняя про звонки набрала больше всего просмотров, и в комментариях несколько раз спрашивали про десктоп: «а как у тебя там устроено?».

Сегодня — отдельная статья про desktop‑версию. Сразу скажу: я не использовал React Native for Desktop, не Tauri, не React, не TypeScript. Чистый Electron + vanilla HTML/JS. Это нестандартное решение, и я объясню почему пошёл этим путём, что от этого выиграл, и где это бьёт по голове.

Читать далее

Как я сделал групповые звонки в React Native мессенджере: WebRTC, CallKit и грабли production'а

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели13K

Это третья статья из серии про инженерные решения в ONEMIX — моём мессенджере на React Native. В первой я разбирал трёхуровневый кэш сообщений, во второй — реализацию Double Ratchet E2E. Сегодня — про звонки.

Звонки в мессенджере — это та функция, которая работает либо отлично, либо никак. Пользователь привык что WhatsApp/Telegram звонят мгновенно, показывают входящие на заблокированном экране, переживают переключения Wi-Fi/LTE, и работают из фона. Если твоя реализация делает хоть что-то из этого хуже — пользователь это сразу заметит и переключится на "нормальный" мессенджер.

Я потратил несколько месяцев на то чтобы довести звонки в ONEMIX до production-уровня. В процессе пришлось изучить WebRTC изнутри, разобраться с iOS CallKit и VoIP push notifications, и собрать десяток граблей которые в туториалах не упоминают. В этой статье — как это устроено, какие решения оказались критичными, и что бы я сделал по-другому.

Сразу оговорка. Я не использую готовые SDK типа Agora, Twilio, 100ms. У них отличное качество и поддержка, но они не дают полного контроля над процессом — а для мессенджера контроль критичен. Когда звонок не проходит, пользователь винит приложение, а не "SDK от третьей стороны". Плюс готовые SDK стоят денег, которые на раннем этапе продукта лучше направить в другие места.

Читать далее

Я реализовал Double Ratchet в React Native мессенджере. Разбор протокола и кода

Уровень сложностиСложный
Время на прочтение16 мин
Охват и читатели9.2K

В прошлой статье про трёхуровневый кэш сообщений я уже упоминал, что делаю мессенджер ONEMIX на React Native. Базовое E2E у меня было простое: ECDH P-256 для обмена ключами при первом контакте, AES‑GCM для шифрования каждого сообщения общим секретом. Это работает, но имеет одну проблему: общий секрет один на всю переписку. Если у одной из сторон скомпрометируют приватный ключ — все сообщения за всё время превращаются в открытый текст.

Это называется отсутствием Perfect Forward Secrecy (PFS). И это значит, что человек, к которому в руки попадёт твой телефон через год, может прочитать переписку из прошлого года. WhatsApp, Signal, и серьёзные части Telegram давно используют другую схему — Double Ratchet — которая ключи переизбретает заново на каждом сообщении. Так делают потому, что любой ключ компрометируется в один момент времени, и компрометация не должна давать доступа ни к прошлому, ни к будущему.

Я реализовал Double Ratchet с нуля для ONEMIX. В этой статье разберу:

Читать далее

Как я сделал трёхуровневый кэш сообщений в мессенджере на React Native — и что узнал по дороге

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели9.2K

Я делаю мессенджер ONEMIX на React Native. К моменту, когда я начал писать этот пост, в нём уже больше десятка экранов, групповые WebRTC-звонки через LiveKit, E2E на Double Ratchet + Sealed Sender, push-нотификации с cold-start навигацией и десктоп-версия на Electron. Но самым важным куском, который определяет ощущение от приложения, оказался не звук и не видео. А то, насколько быстро открывается чат.

Если вы хоть раз делали список сообщений на React Native, вы знаете эту боль: открыл чат — пустой экран на 200–800 мс, потом подгрузка, потом скачок при докрутке наверх. В Telegram такого не бывает: открыл — мгновенно увидел последние сообщения, прокрутил наверх — никаких пустот, история идёт сплошной лентой.

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

Читать далее

Информация

В рейтинге
54-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Разработчик мобильных приложений
Ведущий
SQL
PostgreSQL
Python
ООП
Алгоритмы и структуры данных
Объектно-ориентированное проектирование
REST
Java
Rust
Базы данных