Heartbeat-мониторинг cron-job'ов: dead-man-switch на FastAPI
Обычный uptime-мониторинг проверяет, отвечает ли сервис на запросы. Cron-job ничего не отвечает — он запускается раз в N часов, делает работу и молча завершается. Если cron перестал запускаться (uptime daemon упал, машина в read-only mode после fsck, disk full) — обычный мониторинг этого не видит. Решение известно с 70-х — паттерн dead-man-switch (он же heartbeat). Я недавно делал heartbeat-эндпоинты для Valpero. Здесь разберу серверную часть на FastAPI + клиентский bash-pattern, и edge-кейсы которые их ломают. В конце готовый код, который можно адаптировать под свой стек.
https://habr.com/ru/articles/1035624/
#cron #heartbeat #deadmanswitch #monitoring #alerting #bash #FastAPI #Celery #devops #linux
💡 Fresh find #CodeTrendy → fastTURN
Ultra fast STUN & TURN service
#CloudInfrastructure #Serverless #FastAPI #Netlify #WordPress #Vuejs
I know "AI" is a polarizing topic around here, but I wanted to share a small side-project I've been tinkering with to scratch a personal itch: MastoSum.
It’s a lightweight web app that listens to public streams, filters for the hashtags I actually care about, and uses an LLM to generate a daily digest of the last 24 hours. Basically, a personalized news feed to help cut through the noise.
It works reasonably well for what I need. Here’s an example of today's run: https://mastosum.linuxserver.pro/s/6q1ZdTOuHBfKyQ3aVU3dOw
It's IPv6-only. Not reachable via IPv4.
#python #fastapi #mastodon #newsfeed #selfhosting #ai #llm #ipv6
Hi #ROS2 devs, introducing ROSMAN (ROS2 Manager) - an interface that allows you to control your nodes via a UI that runs on your localhost. It uses #FastAPI on the backend and a simple web frontend, with #Python in the backend.
GitHub: https://github.com/cmodi306/rosman_app
I've kept it free and open source, so feel free to customize it, use it and do share your feedback. :)
The hardest part of building Hoovik — my open-source AI-powered meeting platform — wasn’t WebRTC signaling or media pipelines.
It was managing real-time multimodal inference (PyTorch, MediaPipe, AudioWorklets) across distributed services without blocking the event loop or exhausting memory when packets drop, connections fluctuate, or webcams disappear.
#WebRTC #AI #MachineLearning #OpenSource #NodeJS #FastAPI #PyTorch #EmotionAI #BuildInPublic #Python #Fediverse
Чтобы не выглядело как пет-проект»: как я в одиночку сделал премиальный интерфейс кино-сервиса (с кодом)
В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не выглядит как очередной пет-проект». Логично: дизайн — это то, по чему встречают. Поэтому держите вторую часть, уже техническую и с кодом. Без маркетинга, только решения, которые реально сделали интерфейс «дорогим», и пара бэкенд-хитростей в довесок. Сразу дисклеймер: я не дизайнер. Всё нажито методом «смотрю на референсы (Letterboxd, Mubi, KinoPoisk HD) и пытаюсь повторить ощущение». Оказалось, премиальность — это не про дорогие шрифты, а про несколько повторяющихся приёмов. Разберём пять. 1. Акцентный цвет из постера фильма — фича, которая дороже всего «продаёт» Самое заметное решение. Раньше у меня на всех страницах был один статичный фиолетовый акцент — и это выглядело дёшево и одинаково. Идея: пусть каждая страница фильма подсвечивается доминантным цветом его постера. Заходишь на мрачный нуар — интерфейс уходит в холодный синий, открываешь комедию — тёплый янтарь. Страница будто «сделана под этот фильм». Делается без всяких ML, прямо в браузере через canvas: рисуем постер в крошечный буфер 32×48, усредняем цвета (выкидывая чёрные рамки и серость), переводим в HSL и принудительно «насыщаем», потому что постеры часто тусклые. Результат кладём в CSS-переменную — и весь интерфейс подхватывает её.
https://habr.com/ru/articles/1037818/
#Nextjs #React #CSS #glassmorphism #canvas #Web_Push #VAPID #FastAPI #петпроект #vibemuvik

В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не...
Built Hoovik — an open-source WebRTC meeting app with real-time multimodal emotion AI using PyTorch, XGBoost, MediaPipe, Redis & FastAPI.
Deep technical breakdown of the architecture:
https://dev.to/anupam_kumar/inside-hoovik-building-a-real-time-multimodal-emotion-ai-pipeline-5267
Code & Demo:
- GitHub: https://github.com/AnupamKumar-1/Hoovik
- Live: https://hoovik.onrender.com
#OpenSource #WebRTC #MachineLearning #WebDev #Python #ReactJS #FastAPI #Redis #PyTorch #AI
Один за всех: как я в одиночку тащу фуллстек-проект, который незаметно разросся до соцсети
Начиналось как «сделаю себе сайтик про кино на пару выходных». Закончилось каталогом на десятки тысяч карточек, лентой, профилями, рейтингами, совместным просмотром и кучей фоновых задач. И всё это тащит один человек — я сам себе фронт, бэк, девопс, дизайнер и поддержка. Делюсь сжато: стек и грабли, без воды. Стек выбирал не по хайпу, а по принципу «доеду и не утону в обслуживании»: FastAPI (быстро, асинхронно, автодоки), Next.js на React (SSR из коробки — критично для SEO), PostgreSQL (SQLite кончился на первых же конкурентных записях), Redis для кэша и рейт-лимитов. Nginx + systemd на обычном VPS. Никакого Kubernetes — для одного это способ обслуживать инфраструктуру вместо разработки. Грабли, на которых посидел: • Фоновое состояние в памяти + несколько воркеров = рассинхрон. Пользователи попадают в разные процессы, состояние не шарится. Лечение: либо общее хранилище, либо такие фичи в один воркер. • Права на файлы после сборки. Собрал под одним пользователем, сервис под другим — EACCES и белый экран. Теперь chown в чек-листе деплоя. • node_modules не переезжает Windows → Linux. Только чистая установка на целевой ОС. • dev и prod базы — разные миры. Один запуск скрипта «не туда» — и долго гадаешь, почему данные не меняются (а они меняются, в локальном SQLite, который никому не нужен). • Не запускай два тяжёлых процесса разом. Фоновая генерация + пересборка фронта = OOM-killer молча прибил процесс. Полчаса искал причину. • Кэш сборки трогать нельзя — «почистил на всякий» и сломал инкрементальную регенерацию страниц на сутки. Но самое тяжёлое — не код. Некому передать, если выгорел. Некому сделать ревью и сказать «ты идиот». Легко месяцами катиться не туда. Качели мотивации: сегодня горы свернёшь, завтра «зачем я это начал». Научился просто переживать спады и не принимать в них решений вроде «всё переписать». Что понял за это время: маленькие шаги бьют героизм; скучные бэкапы и чек-листы важнее красивой архитектуры; готовое и работающее лучше идеального ненаписанного. Один человек реально тащит удивительно много — если не воюет сам с собой за идеальность. Не ради пиара, а как живой пруф того, о чём пишу: всё описанное работает прямо сейчас — vibemuvik.ru Можно зайти и потыкать вживую. А вы тащите что-то в одиночку? На каком стеке, как боретесь с выгоранием и бесконечным бэклогом?
https://habr.com/ru/articles/1037554/
#петпроект #фуллстек #солоразработка #FastAPI #Nextjs #PostgreSQL #выгорание
It all started from a curiosity .. and from a new feature.
In a realtime #SpeechToSpeech project on #AWS, can I use #polly bidirectional streaming with #python ?
🔮 Spoiler: well, when boto3 doesn't have it (yet), you write it 🏗️
In the article I describe each choice and the reasons, eager to ship something new 😄