Я делаю SHIFROM — мессенджер с открытым кодом и сквозным шифрованием. Клиент написан на Kotlin Multiplatform, сообщения идут через сервер-ретранслятор. Эта статья не про криптографию, а про задачу попроще на вид: как одно приложение держит связь со своим сервером, если маршрутов несколько и любой из них может перестать работать.Сначала о статусе. Проект в стадии Alpha 2, поддерживаемого публичного релиза нет; на GitHub лежит только историческая тестовая APK от Alpha 1. Протокольная композиция (…
1. Веб-разработчик, который ни разу не делал игрВ программировании я хоть и давно, но вся моя деятельность в основном была связана с веб-разработкой: сайты, приложения, аккуратные интерфейсы, которые должны работать в любом браузере и не разваливаться от одного неверного клика. Игр я не делал никогда. Хотел, конечно, — наверное, как и любой человек, который провёл детство за монитором. Но между «хочу сделать игру» и реальными действиями всегда стояли C#, C++, Unity, Unreal, Godot: чужая террито…
Metadata Validator | GitHubТеперь хардкор. Хотя если вы DevOps-инженер, то следующее объяснение будет для вас как воздухом подышать.Из докторской диссертации Ээлко Долстры (создателя Nix):"However, these contributions all follow from a small set of principles, foremost among them the purely functional model." "Однако все эти достижения следуют из небольшого набора принципов, главным из которых является чисто функциональная модель". - Стр. 16, § 1.5 – Contributions.Возможно, вы з…
Всем привет! Меня зовут Павел Барсуков, я frontend-разработчик в компании «Программный Продукт».ПредисловиеПомимо программирования, я давно увлекаюсь настольным теннисом. А еще – анализом тренировок по нему. После каждой тренировки я записываю свои мысли: что получилось, какие элементы стоит доработать, как менялась игра по ходу занятия. Вместе с этим, я всегда отслеживаю пульс, чтобы понимать, насколько интенсивной была нагрузка.Долгое время для этого хватало смарт-часов. Но у оптических датчи…
Последний год я переписываю Vigo Pulse, аналитический продукт с большим количеством метрик и разрезов. Пользователь может выбирать фильтры, группировки и период, а на одном графике могут оказаться сотни линий. Загрузка и отрисовка такого объёма данных давно были проблемной областью.Я отвечаю за фронтенд и BFF на Node.js. При переработке приложения я решил пересмотреть весь путь от выбора фильтров до появления графика на экране. Для этого нужно было понять, как выбирать данные, в каком виде пере…
Каждый раз после написания статьи я ещё полчаса возился с обложкой: открыть редактор, подобрать шрифт, выровнять заголовок, экспортировать. В какой-то момент я решил, что обложка — это функция от заголовка, и её должна рисовать программа. Так появился небольшой инструмент, который сначала делал только картинку 1200×630, а потом оброс визитками, открытками, закладками и постерами A4 с PDF для типографии.В статье расскажу, как он устроен: один HTML-файл без сборки, отрисовка на Canvas, перевод ми…
Я написал расширение, которое показывает код ответа открытой страницы на значке, а по нажатию: цепочку редиректов, время ответа, срок SSL-сертификата и срок регистрации домена. Задача выглядела простой: у Chrome есть webRequest, он видит все запросы, осталось красиво показать.На деле половина пунктов упёрлась в ограничения, о которых документация либо молчит, либо говорит одной строкой. Сертификат сайта расширению не отдают, хотя API для этого есть. Срок домена в зоне .ru из браузера не узнать.…
LLM Inference Engine for Metal, CUDA and Vulkan.TensorFold TensorFold serves language models from a Zig binary on Apple Silicon and NVIDIA GPUs. The engine reads checkpoints, tokenizes requests and runs Metal or CUDA kernels directly. Serving needs no Python or MLX installation. Building with a coding agent? Have it load the contributor skill before it writes any code. Contributing with agents Please use Agent Traffic Control before editing TensorFold so contributors and agents can avoid duplic…
Enable Hermès Watch Faces on any Apple Watch devicesHermesEnabler 2 English · 한국어 · 简体中文 · 繁體中文 · 日本語 · Español · Français · Deutsch · Português Supported only on watchOS 27.0 through 27.3 beta 1. Installation Install the IPA Download the IPA from Releases. Install it with Sideloadly. On your iPhone, open the Watch app and install HermesEnabler2 from My Watch → Apps. Open HermesEnabler2 on your Apple Watch and follow the steps in the app. Build with Xcode Open HermesEnabler2.xcodeproj in …