This media is not supported in your browser
VIEW IN TELEGRAM
🥃 LiquidGlass — open-source реализация нового «живого стекла», только что показанного Apple
Apple показала свежий дизайн-язык с жидкими рефракциями — я сел и повторил его в SwiftUI. Снаружи это всего одна строчка модификатора, но под капотом серьёзная кухня: Metal-шейдеры, off-screen snapshot в MTLTexture, ленивый redraw без мерцания, защита от рекурсий и никаких скриншотов руками.
Что делает
• ⚡️ Захватывает фон в реальном времени, но только когда он реально меняется
• 💤 MTKView спит — батарея не горит
• 🛠 Режимы: .continuous, .once, .manual
• 🎨 Шейдер открыт: меняйте blur, refraction, tint как хотите
• 🍏 Чистый SwiftUI, iOS 14+, MIT
Подключить:
https://github.com/BarredEwe/LiquidGlass
Скрины + GIF примера — в README. Забирайте, форкайте, кидайте идеи! 🚀
Apple показала свежий дизайн-язык с жидкими рефракциями — я сел и повторил его в SwiftUI. Снаружи это всего одна строчка модификатора, но под капотом серьёзная кухня: Metal-шейдеры, off-screen snapshot в MTLTexture, ленивый redraw без мерцания, защита от рекурсий и никаких скриншотов руками.
Button("Click Me 🔥") { … }
.liquidGlassBackground()Что делает
• ⚡️ Захватывает фон в реальном времени, но только когда он реально меняется
• 💤 MTKView спит — батарея не горит
• 🛠 Режимы: .continuous, .once, .manual
• 🎨 Шейдер открыт: меняйте blur, refraction, tint как хотите
• 🍏 Чистый SwiftUI, iOS 14+, MIT
Подключить:
https://github.com/BarredEwe/LiquidGlass
Скрины + GIF примера — в README. Забирайте, форкайте, кидайте идеи! 🚀
1❤23👍6🔥6💅2🍓1
🇯🇵 Зашёл в книжный в Токио
Куча книг по iOS: SwiftUI, Xcode 16, iOS 18, Swift 6. Всё в духе «освой за 2 дня», «сделай 6 приложений», «начни с нуля».
Каждая — как отдельный мини-курс, с кучей скриншотов, пошаговыми инструкциями и объяснениями, почему вот тут .padding() не работает.
🔍 А теперь внимание — книга про iOS на Python. Да, серьёзно.
Pythonista 3, NumPy, GUI, игры, расширение iOS‑функционала. Всё это — прямо на айфоне.
Похоже на гайд для школьника, который хочет сделать свою первую игру и параллельно — калькулятор с графиком.
📚 В целом — в Японии дико много литературы по iOS.
Не абстрактные философские книги, а прям пошаговые гайды, как будто для внутреннего дзена:
«Нажми здесь, запусти вот это, а теперь обратись к SwiftData через ObservableObject и помолись».
Куча книг по iOS: SwiftUI, Xcode 16, iOS 18, Swift 6. Всё в духе «освой за 2 дня», «сделай 6 приложений», «начни с нуля».
Каждая — как отдельный мини-курс, с кучей скриншотов, пошаговыми инструкциями и объяснениями, почему вот тут .padding() не работает.
🔍 А теперь внимание — книга про iOS на Python. Да, серьёзно.
Pythonista 3, NumPy, GUI, игры, расширение iOS‑функционала. Всё это — прямо на айфоне.
Похоже на гайд для школьника, который хочет сделать свою первую игру и параллельно — калькулятор с графиком.
📚 В целом — в Японии дико много литературы по iOS.
Не абстрактные философские книги, а прям пошаговые гайды, как будто для внутреннего дзена:
«Нажми здесь, запусти вот это, а теперь обратись к SwiftData через ObservableObject и помолись».
❤32🔥9 8❤🔥2
Я запустил prefire.ru! 🚀
Давно хотел запустить сайт и в целом поэкспериментировать с этим и вот наконец‑то сайт в продакшене. В целом, получился простенький лендинг.
Постарался описать там процесс работы c Prefire:
👉 Как установить
👉 Как запустить
👉 Как Prefire работает внутри
👉 Архитектура Prefire
Параллельно я готовлю PrefireCore - новый вычислительный движок для генерации Snapshot и кеширования.
Давно хотел запустить сайт и в целом поэкспериментировать с этим и вот наконец‑то сайт в продакшене. В целом, получился простенький лендинг.
Постарался описать там процесс работы c Prefire:
👉 Как установить
👉 Как запустить
👉 Как Prefire работает внутри
👉 Архитектура Prefire
👏19🔥14👍3 3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
🐾 ScrrenКот возвращается
Проект был на паузе - завал задач, да и казалось, что всё почти готово. Но внутри не отпускало. Сейчас снова в деле и иду на финишной прямой.
🧠 За это время перепробовал кучу LLM-моделей для локального запуска — искал ту, что даст максимум качества на русском.
Что выяснилось:
- Qwen3 8B — даёт стабильные, “вдумчивые” ответы
- Llama 3.2 3B — уходит на английский
- DeepSeek, Gemini — шикарные, но очень тяжёлые
Всё сравнивал через unit-тесты на коротких промптах
📦 Модели загружаются с HuggingFace — всё кастомизируется на лету.
🤖 Пока фокус на простых реакциях, как у питомца. Но возможно - позже добавлю агентский режим (накидывайте что добавить).
📒 А вот что котик уже умеет говорить — реальные фразы из логов:
😿Честно? Мотивации добивать проект - почти нет. Поэтому, возможно, скоро выложу как есть. Просто чтобы он был живым и я его окончательно не забросил. А ваши отзывы дадут мне мотивации)
Проект был на паузе - завал задач, да и казалось, что всё почти готово. Но внутри не отпускало. Сейчас снова в деле и иду на финишной прямой.
🧠 За это время перепробовал кучу LLM-моделей для локального запуска — искал ту, что даст максимум качества на русском.
Что выяснилось:
- Qwen3 8B — даёт стабильные, “вдумчивые” ответы
- Llama 3.2 3B — уходит на английский
- DeepSeek, Gemini — шикарные, но очень тяжёлые
Всё сравнивал через unit-тесты на коротких промптах
📦 Модели загружаются с HuggingFace — всё кастомизируется на лету.
🤖 Пока фокус на простых реакциях, как у питомца. Но возможно - позже добавлю агентский режим (накидывайте что добавить).
📒 А вот что котик уже умеет говорить — реальные фразы из логов:
- Мяу, я котик, я пиксельный, я в Telegram!
- Мрр, мне бы шаурмы, а не чат с тобой.
- Мрр, я уже смеялся, как узник в бочке.
😿
🔥21❤7👍4 4
🚀 Как обновлять macOS-приложение без App Store — на примере ScreenCat
App Store - это удобно, но не всегда подходит. Например, когда ты делаешь экспериментальное приложение(а еще санкции) , как мой ScreenCat - пиксельного кота, который живет на экране. В таком случае тебе нужен свой способ доставки обновлений.
Вот как я это реализовал:
🧩 Использую Sparkle - это нативный фреймворк для автообновлений на macOS. Он встроен в .app и сам проверяет наличие новых версий. Работает по принципу: приложение → скачивает XML-фид → если есть обновление → скачивает
🌐 Фид и обновления лежат на GitHub Pages. Это удобно: репозиторий + GitHub Actions + статический хостинг — и всё готово. Например, фид доступен по адресу:
https://github.com/barredewe/screencat-updates/releases/latest/download/appcast.xml
🛠 Процесс автоматизирован. Я собрал
1. Создает
2. Подписывает и нотаризует билд
3. Выкладывает в релиз на GitHub
4. Обновляет appcast.xml
5. Пушит его в GitHub Pages
6. Выкладывает
⚠️ Главное — правильно подписывать .app и .dmg, иначе Gatekeeper не даст установить. Sparkle тоже проверяет подписи.
🔐 И да, всё это работает без App Store, обновления скачиваются и ставятся прямо внутри приложения.
App Store - это удобно, но не всегда подходит. Например, когда ты делаешь экспериментальное приложение
Вот как я это реализовал:
🧩 Использую Sparkle - это нативный фреймворк для автообновлений на macOS. Он встроен в .app и сам проверяет наличие новых версий. Работает по принципу: приложение → скачивает XML-фид → если есть обновление → скачивает
.dmg и ставит.🌐 Фид и обновления лежат на GitHub Pages. Это удобно: репозиторий + GitHub Actions + статический хостинг — и всё готово. Например, фид доступен по адресу:
https://github.com/barredewe/screencat-updates/releases/latest/download/appcast.xml
🛠 Процесс автоматизирован. Я собрал
Makefile, который:1. Создает
.dmg2. Подписывает и нотаризует билд
3. Выкладывает в релиз на GitHub
4. Обновляет appcast.xml
5. Пушит его в GitHub Pages
6. Выкладывает
.app в itch.io⚠️ Главное — правильно подписывать .app и .dmg, иначе Gatekeeper не даст установить. Sparkle тоже проверяет подписи.
🔐 И да, всё это работает без App Store, обновления скачиваются и ставятся прямо внутри приложения.
🔥26👍8 5
🧾 Как я заменил Supabase на свой сервер с FastAPI + Docker
В ScreenCat можно покупать скины, и раньше это работало через Supabase Edge Functions. Но теперь у нас свой сервер: FastAPI + PostgreSQL внутри Docker, и это стало огромным апгрейдом.
🐣 Немного контекста
Supabase - альтернатива Firebase:
- PostgreSQL + генерация API
- Storage, Auth
- Edge Functions на Deno
Работало, но были проблемы:
- 💤 Функции «засыпали» -> первый запрос после простоя - 3+ сек
- 🔌 Иногда Robokassa не могла достучаться (cold start)
- 🤯 Невозможно нормально логировать
- 🧱 Всё чёрным ящиком
🐳 Почему я перешёл на Docker + FastAPI
Решил развернуть свой backend (GPT мне подсказала что нужно выбирать 😀):
• FastAPI - простой и быстрый Python-сервер
• PostgreSQL - та же база, но у себя
• Docker - магия! Поднял всё одним docker-compose up
• Robokassa бьёт в /result endpoint
⚙️ Пример кода: проверка подписи и UPSERT
✨ Что работает сейчас
✅ POST /payment/robokassa/result — принимает оплату
✅ GET /payment/robokassa/status — проверка покупки по email и скину
✅ 🔐 Проверка MD5-подписи от Robokassa
✅ 📬 Уведомление в Telegram о каждой оплате
✅ 🧠 Вся база под контролем — можно смотреть, фильтровать, восстанавливать покупки
📚 Документация API (Swagger, пж не дудосьте )
👉 https://pay.prefire.ru/docs
(Работает сразу из коробки благодаря FastAPI ❤️)
В ScreenCat можно покупать скины, и раньше это работало через Supabase Edge Functions. Но теперь у нас свой сервер: FastAPI + PostgreSQL внутри Docker, и это стало огромным апгрейдом.
🐣 Немного контекста
Supabase - альтернатива Firebase:
- PostgreSQL + генерация API
- Storage, Auth
- Edge Functions на Deno
Работало, но были проблемы:
- 💤 Функции «засыпали» -> первый запрос после простоя - 3+ сек
- 🔌 Иногда Robokassa не могла достучаться (cold start)
- 🤯 Невозможно нормально логировать
- 🧱 Всё чёрным ящиком
🐳 Почему я перешёл на Docker + FastAPI
Решил развернуть свой backend (GPT мне подсказала что нужно выбирать 😀):
• FastAPI - простой и быстрый Python-сервер
• PostgreSQL - та же база, но у себя
• Docker - магия! Поднял всё одним docker-compose up
• Robokassa бьёт в /result endpoint
⚙️ Пример кода: проверка подписи и UPSERT
signature = md5_upper(f"{OutSum}:{InvId}:{password2}:Shp_email={Shp_email}:Shp_skin={Shp_skin}")
if SignatureValue.upper() != signature:
raise HTTPException(403, detail="Invalid signature")
stmt = insert(Purchase).values(
invoice_id=InvId,
skin=Shp_skin,
status="paid",
email=Shp_email,
).on_conflict_do_update(
index_elements=["invoice_id"],
set_={"skin": Shp_skin, "status": "paid", "email": Shp_email}
)
await db.execute(stmt)
await db.commit()✨ Что работает сейчас
✅ POST /payment/robokassa/result — принимает оплату
✅ GET /payment/robokassa/status — проверка покупки по email и скину
✅ 🔐 Проверка MD5-подписи от Robokassa
✅ 📬 Уведомление в Telegram о каждой оплате
✅ 🧠 Вся база под контролем — можно смотреть, фильтровать, восстанавливать покупки
📚 Документация API (Swagger
👉 https://pay.prefire.ru/docs
(Работает сразу из коробки благодаря FastAPI ❤️)
PS: Такой простой сервер оказалось написать проще чем простое приложение)
PS2: Docker вообще супер простая и удобная штука, теперь использую во всех своих скриптах)
🔥10❤6👍3 2 2
🚨 Первый стрим: код, баги, коты
Запускаю стримы по разработке. Без монтажа и сценариев - просто живой процесс:
🧠 Пишу код
🪲 Ловлю баги
🧩 Думаю вслух, туплю, пробую - как есть
Темы будут разные:
• Swift / macOS / геймдев
• AI и локальные LLM
• UI, архитектура, backend, всё подряд
📺 Стримим на всех фронтах:
• Twitch: https://twitch.tv/barredy
• Telegram: https://t.me/prefire_ios (будут анонсы + иногда прямой эфир)
Если давно хотел спросить что-то по Swift, LLM, Prefire или просто понаблюдать за «настоящим» разработчиком - присоединяйся.
👉 Пиши в комменты, что хотел бы увидеть в первом эфире
🕓 Старт — сегодня (1 августа) в 18:30.
Подписывайся, чтобы не пропустить
Запускаю стримы по разработке. Без монтажа и сценариев - просто живой процесс:
🧠 Пишу код
🪲 Ловлю баги
🧩 Думаю вслух, туплю, пробую - как есть
Темы будут разные:
• Swift / macOS / геймдев
• AI и локальные LLM
• UI, архитектура, backend, всё подряд
📺 Стримим на всех фронтах:
• Twitch: https://twitch.tv/barredy
• Telegram: https://t.me/prefire_ios (будут анонсы + иногда прямой эфир)
Если давно хотел спросить что-то по Swift, LLM, Prefire или просто понаблюдать за «настоящим» разработчиком - присоединяйся.
👉 Пиши в комменты, что хотел бы увидеть в первом эфире
🕓 Старт — сегодня (1 августа) в 18:30.
Подписывайся, чтобы не пропустить
👍13🔥5 3❤2
🚀 Стрим стартует уже почти сейчас (18:00)
В прошлый раз мы час ковырялись в коде, чтобы наш 🐱 завёлся на стриме - оказалось, он не дружит с мульти-монитором. Победили!
https://youtube.com/shorts/I1kv-Wyv4tI?feature=share
Сегодня ещё посидим с котом; если всё пойдёт гладко, возможно заглянем в Prefire разбирать свежие issues (но без обещаний).
📺 Стримим на всех фронтах:
• YouTube: https://www.youtube.com/@prefire-barredy
• Twitch: https://twitch.tv/barredy
• Telegram: https://t.me/prefire_ios (будут анонсы + иногда прямой эфир)
Подключайтесь, будет лампово! 🎥✨
В прошлый раз мы час ковырялись в коде, чтобы наш 🐱 завёлся на стриме - оказалось, он не дружит с мульти-монитором. Победили!
https://youtube.com/shorts/I1kv-Wyv4tI?feature=share
Сегодня ещё посидим с котом; если всё пойдёт гладко, возможно заглянем в Prefire разбирать свежие issues (но без обещаний).
📺 Стримим на всех фронтах:
• YouTube: https://www.youtube.com/@prefire-barredy
• Twitch: https://twitch.tv/barredy
• Telegram: https://t.me/prefire_ios (будут анонсы + иногда прямой эфир)
Подключайтесь, будет лампово! 🎥
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Первый запуск AI кота | #barredy #twitch #стрим #нарезки
#shorts #swift #swiftui #ai #llm #game #indie #dev #xcodehttps://...
❤12👍2
🐾 Кот vs SwiftUI
Вчера на стриме решили переписать меню кота на SwiftUI.
Через пару минут я уже сказал, что SwiftUI -говно . Ну на самом деле все не так плохо 😁
👉 В SwiftUI нельзя получить frame кнопки в статусбаре.
А без него котик не понимает, куда идти. Он же не экстрасенс 😿
📺 Вот момент, где всё пошло не так: https://youtube.com/shorts/mFTWzB6P0lI?si=tvnhh-61-r2cx8U5
Вчера на стриме решили переписать меню кота на SwiftUI.
Через пару минут я уже сказал, что SwiftUI -
👉 В SwiftUI нельзя получить frame кнопки в статусбаре.
А без него котик не понимает, куда идти. Он же не экстрасенс 😿
📺 Вот момент, где всё пошло не так: https://youtube.com/shorts/mFTWzB6P0lI?si=tvnhh-61-r2cx8U5
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
SwiftUI, говно, но … | #barredy #twitch #стрим #нарезки
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
🔥8😁6😭4
🎬 Стрим начался!
Сегодня экспериментируем по полной:
🐾 Пробуем новую LLM от Tencent - посмотрим, как она справится с ролями для кота и комментариями в реальном времени
🎨 Лезем в анимации кота - может, получится оживить хвост или добавить новые эмоции
🧑💻 Погружаемся в код - будет немного рефакторинга и, возможно, баги прямо в прямом эфире
Залетай, понаблюдай, как рождается магия - и не забудь подписаться на @prefire_iOS, если ещё не с нами!
👉 Стрим идет прямо сейчас:
- Twitch: https://twitch.tv/barredy
- Telegram: https://t.me/prefire_ios (будут анонсы + иногда прямой эфир)
- YouTube: https://www.youtube.com/@prefire-barredy/streams
PS: Держите шортс про кота: https://youtube.com/shorts/bXsV8HX7v6o?feature=share
Сегодня экспериментируем по полной:
🐾 Пробуем новую LLM от Tencent - посмотрим, как она справится с ролями для кота и комментариями в реальном времени
🎨 Лезем в анимации кота - может, получится оживить хвост или добавить новые эмоции
🧑💻 Погружаемся в код - будет немного рефакторинга и, возможно, баги прямо в прямом эфире
Залетай, понаблюдай, как рождается магия - и не забудь подписаться на @prefire_iOS, если ещё не с нами!
👉 Стрим идет прямо сейчас:
- Twitch: https://twitch.tv/barredy
- Telegram: https://t.me/prefire_ios (будут анонсы + иногда прямой эфир)
- YouTube: https://www.youtube.com/@prefire-barredy/streams
PS: Держите шортс про кота: https://youtube.com/shorts/bXsV8HX7v6o?feature=share
YouTube
Кот увидел видео с YouTube| #barredy #twitch #стрим #нарезки
#shorts https://www.twitch.tv/barredy
❤7🔥2 2
