Mentions
Conversations linking to GitHub, newest first. Times are UTC.
Mentions by source
X
Bluesky
Hacker News
V2EX
Qiita
DEV
Mastodon
Latest posts
QP desktop pet for BUG Clicker↓ mediafire.com BUG Clicker (if you need)↓ github.com/BUG-INVADE #100oj #100orangejuice #QP #BUGclicker #DesktopPet t.co
离谱了,nanochat 居然能用不到一百美元训出一个 GPT-2 级模型。 再也不用花几万美元从头训模型了,一个深度参数就自动配好全部超参,还不快去试试。 karpathy/nanochat
DLSS 5 NR X2 now on DX 12 test. Intel Arc B570. Marvel tōkon fighting souls. 45-48 fps All the info is here: github.com/Uzbekunknown/dlss-nr-on-intel/releases To install the new patch, the game must have native XeSS support. I tested it with Stellar Blade—which adds XeSS via OptiScaler—but it didn’t work. Therefore, the filter should work with a newer DX12 game that features native XeSS. One drawback is that it doesn’t seem to work well at higher resolutions; for now, this is the best it performs. You could try using a better image-scaling setting, which might yield better results, though I haven’t tested that myself. I’m running it at 1080p with XeSS set to "Quality" and all other settings on "High." I know this isn’t the best game to showcase this tool, but it’s what I had on hand. Great work by the team optimizing this; I hope to test it with Stellar Blade soon.
First Attempt at an Agent Swarm Was interested in saving tokens using Codex and wanted a way to plan with a high model, like Astra, and delegate the work to a lower model, like Luna, for token management. I also wanted to have the work done quickly, so I wanted to have multiple agents work on a task in parallel. Running parallel agents can be a pain though. A lot of context can get dropped, the agents can overwrite each other, etc. I needed a good way to hand off tasks to the sub agents, have the sub agents work in their own work tree, and successfully concatenate the work together. Praxis Swarm is my attempt at that. I built off Agent Orchestrator (Apache 2.0), and added more structure for agent teams (ex: what agent works as a lead vs workers), task scope planning, job assignment packets to sub agents, as well as job freezes and reviews from the lead agent. Definitely not at Kimi Agent Swarm yet! But I’ve tested it with two agents running in parallel with good results! Would love any feedback!
it's all open source, MIT. the code: hunterbohm/lip-service
Still fascinating how much a frontier LLM can do: used Claude to port strangetom's Python ingredient-parser to TypeScript. The twist: you don't need an LLM to run it. Good old CRF, on device, offline. vnekhai-personal/ingredient-parser-typescript
@fabienpenso What do you think about sandboxed mods in WASM ? They are written once and work for multiple apps. Each app has a mod executor, this is the one I made for herdr UI github.com/Calonca/herdr-gpui/tree/wasm-mods First picture is the diff mod (left in Herdr and right in herdr UI) t.co
how i timed it, medians of 75 dictations per app (15 clips, 5 rounds) on one M4 Mac mini: Lip Service 0.21 s Willow 0.37 s (Pro) Wispr Flow 0.39 s (free plan) accuracy was a tie, the misses were mostly formatting test code and raw results: github.com/hunterbohm/lip-service/tree/main/bench…
机房机器要重装得跑一趟插键盘。硬件 KVM 三四百,只管画面键鼠,装系统还是要 U 盘。 tinypilot 把树莓派变 KVM:HDMI+USB 插目标机,浏览器看画面控键鼠,能挂 ISO 远程装系统。 tiny-pilot/tinypilot
NES Netplay core pre-release Saw this floating around on Twitter, has anyone tried it out yet?
🔥 GitHub急上昇 #2/3 d4vinci/scrapling ⭐ 今日 +706 / 累計 92,830 Python Scraplingは、HTTP通信やJavaScript対応ブラウザーを備えたPython製スクレイピング基盤です。ページ解析からプロキシ利用、並列クロール、データ出力まで一貫して行えます。 d4vinci/scrapling #MCP #AI #GitHub
Intel's NEO compute driver now runs on Apple Silicon Linux. An Arc Pro B60 over USB4 on an M1 Max shows up in OpenCL 3.0 and Level Zero. Required patching Intel’s driver, PR: compute-runtime#1045 @Intel @IntelGraphics @IntelAI
【3/3】SwarmUI-LayoutEditor 枠をドラッグして、人物や文字の配置を自由に設計。JSONを作成・編集でき、ブラウザ単体でも動く。作ったプロンプトはComfyUIに貼り付け可能。 既存のコマ割りでは物足りない人向け。 jambavant/SwarmUI-LayoutEditor jambavant.github.io
Babel update – an AI subtitle fallback that works alongside Bazarr (v2.5.7-beta) Hey everyone! I posted about my project Babel here a few months ago, and I’ve been working on it quite a bit since then. For anyone who missed my previous post, Babel is a self-hosted AI subtitle translator designed to work alongside Bazarr, Sonarr and Radarr. The main idea behind Babel is pretty simple: let Bazarr do what it does best, and use AI translation as a fallback when suitable subtitles aren’t available. I didn’t want to replace Bazarr. I wanted something that could fill the gaps when traditional subtitle searching doesn’t find what I need. Babel can check for existing subtitles, work with Bazarr’s subtitle searches, extract embedded subtitle tracks and translate a usable source subtitle when needed. It also has an optional grace period, so Bazarr gets more time to find subtitles before AI translation starts. It supports multiple AI providers, including OpenAI, Gemini, DeepSeek, OpenRouter and local Ollama models. One of the biggest improvements since my original post has been the QA and recovery pipeline. Babel checks for missing lines, incorrect subtitle IDs, synchronization problems and potential translation alignment issues. If a translation has problems, Babel attempts to repair them instead of blindly publishing the result. I’ve also been working on better job handling, source subtitle selection, cost tracking and a more complete web interface where you can monitor everything. The latest release is v2.5.7-beta, which fixes an extraction cache race condition and improves source preparation progress reporting. My goal is to make Babel something that works quietly alongside Bazarr, only stepping in when it’s actually needed. It’s still a beta project, but I’ve been using it in my own media setup and it’s been working well so far. GitHub: hugomossberg/Babel I’d love to hear how other Bazarr users feel about this approach. Has anyone here tried Babel since my original post?
@cocktailpeanut Did you see this one yet storytold/craft-anything
so for my bot replacement i explored different options and settled on craft-ai-agents/craft-agents-oss but then i realised most of things i need can be done simply by using claude desktop app, there are few cases where i need a dedicated bot setup, but for now claude desktop is fine.
这份 CLAUDE.md 面向 Claude Code 使用,其内容取材于 Andrej Karpathy 所倡导的工程实践准则。 它从三个方向约束模型表现: 一是抑制凭空臆断的前提, 二是避免产出冗余累赘的代码, 三是保证每次改动都精准落到目标位置。 项目仓库位于 forrestchang/andrej-karpathy-skills 。 t.co
New PR: Title post pages with the author's handle instead of the URL's DID (#12312)
Mais um launcher saindo do forno: Colin McRae 2005! GitHub: akitaonrails/rea-colin-mcrae-2005 Finalmente, consertei os crashes em Linux, install do Gog que não funciona em Linux e mais! t.co
Aircraft Carrier Mods Hey guys! Hope ya'll are having a good day/night. I was browsing around and ended up finding these mods: The Carrier Strikes Back Uploaded by warspite45 on NexusMods Ultimate Admiral Dreadnoughts CV Barebone Modification Uploaded by XxChonkExX on Github I didn't know there were carrier mods for this game, nor did find any videos or forum discussions about these mods. So have any of you heard about either of them? If you happen to have played it, are they good? I'd test it myself but can't right now. Link for the pages: **The Carrier Strikes Back: nexusmods.com Barebone Modification: **XxChonkExX/Ultimate-Admiral-Dreadnoughts-CV-Barebone-Modification.git**
Babel – my self-hosted AI subtitle translator with Jellyfin integration (v2.5.7-beta) Hey everyone! I shared my project Babel a while back and wanted to give a quick update since I’ve been working on it quite a bit. Babel is a self-hosted AI subtitle translator I’ve been building for my own media setup. The idea is to make sure movies and TV shows have subtitles in my preferred language without having to manually find or translate them. Instead of immediately sending everything to AI, Babel first checks whether suitable subtitles already exist. If not, it can look for a usable source subtitle, including embedded tracks inside video files, and translate it automatically. It supports multiple AI providers, including OpenAI, Gemini, DeepSeek, OpenRouter and local Ollama models. One of the biggest things I’ve worked on is the quality of the generated subtitles. Babel includes a QA and recovery system that checks for missing lines, incorrect subtitle IDs, synchronization problems and potential alignment issues. If something looks wrong, it attempts to repair the translation before publishing it. There’s also an SDH cleaner, a web interface for managing your library, job monitoring, API usage tracking and cost estimates. For Jellyfin users, Babel can notify Jellyfin to refresh its library after successfully publishing a translated subtitle, so the new subtitle can be picked up without manually triggering a library refresh. The latest release is v2.5.7-beta, mainly focused on improving reliability, fixing an extraction cache race condition and making progress reporting clearer. I’ve been using it in my own media setup, and it’s been working well so far. It’s still a beta project, though, and I’m continuing to improve it. GitHub: hugomossberg/Babel I’d love to hear what Jellyfin users think. Is automatic subtitle translation something you’d want in your setup?
Mobile-Agent controls your phone by seeing Mobile-Agent controls your phone by seeing Mobile-Agent is an open source GUI agent that controls mobile devices by reading the screen visually. It can navigate apps and perform tasks autonomously. Built by Tongyi Lab at Alibaba Group, with an online demo available to try. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Follow for daily open source drops 👇 [ar] Mobile-Agent يتحكم في هاتفك من خلال الرؤية يتحكم Mobile-Agent بهاتفك من خلال قراءة الشاشة Mobile-Agent هو برنامج مفتوح المصدر بواجهة رسومية، يتحكم بالأجهزة المحمولة من خلال قراءة الشاشة بصريًا. يمكنه التنقل بين التطبيقات وتنفيذ المهام تلقائيًا. تم تطويره بواسطة مختبر Tongyi التابع لمجموعة Alibaba، ويتوفر عرض توضيحي عبر الإنترنت لتجربته. X-PLUG/MobileAgent #الذكاء_الاصطناعي #مفتوح_المصدر #MobileAgent #أتمتة_واجهة_الشاشة_الرسومية تابعنا للحصول على أحدث البرامج مفتوحة المصدر يوميًا 👇 [bn] Mobile-Agent দেখে আপনার ফোন নিয়ন্ত্রণ করে মোবাইল-এজেন্ট দেখে আপনার ফোন নিয়ন্ত্রণ করে মোবাইল-এজেন্ট একটি ওপেন সোর্স GUI এজেন্ট যা স্ক্রিন দেখে মোবাইল ডিভাইস নিয়ন্ত্রণ করে। এটি অ্যাপে নেভিগেট করতে এবং স্বয়ংক্রিয়ভাবে বিভিন্ন কাজ সম্পাদন করতে পারে। এটি আলিবাবা গ্রুপের টংয়ি ল্যাব দ্বারা নির্মিত, এবং এর একটি অনলাইন ডেমো চেষ্টা করার জন্য উপলব্ধ আছে। X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation প্রতিদিন নতুন ওপেন সোর্স আপডেটের জন্য ফলো করুন 👇 [de-DE] Mobile-Agent steuert dein Handy durch Sehen Mobile-Agent steuert Ihr Smartphone durch Bildschirmerkennung Mobile-Agent ist ein Open-Source-GUI-Agent, der mobile Geräte durch visuelle Bildschirmerkennung steuert. Er kann Apps navigieren und Aufgaben selbstständig ausführen. Entwickelt vom Tongyi Lab der Alibaba Group, steht eine Online-Demo zum Ausprobieren bereit. X-PLUG/MobileAgent #KI #OpenSource #MobileAgent #GUIAutomatisierung Folgen Sie uns für tägliche Open-Source-Neuigkeiten 👇 [es-US] Mobile-Agent controla tu teléfono a través de la visión Mobile-Agent controla tu teléfono mediante la lectura visual de la pantalla. Mobile-Agent es un agente de interfaz gráfica de usuario (GUI) de código abierto que controla dispositivos móviles leyendo la pantalla. Puede navegar por aplicaciones y realizar tareas de forma autónoma. Desarrollado por Tongyi Lab en Alibaba Group, cuenta con una demo en línea disponible para probar. X-PLUG/MobileAgent #IA #CódigoAbierto #MobileAgent #AutomatizaciónGUI Síguenos para recibir novedades diarias de código abierto 👇 [fr-FR] Mobile-Agent contrôle votre téléphone en regardant l'écran Mobile-Agent contrôle votre téléphone par la vision Mobile-Agent est un agent GUI open source qui contrôle les appareils mobiles en analysant visuellement l'écran. Il peut naviguer dans les applications et effectuer des tâches de manière autonome. Développé par Tongyi Lab (Groupe Alibaba), une démo en ligne est disponible. X-PLUG/MobileAgent #IA #OpenSource #MobileAgent #AutomatisationGUI Suivez-nous pour découvrir chaque jour de nouveaux projets open source 👇 [hi] Mobile-Agent देखकर आपके फोन को नियंत्रित करता है मोबाइल-एजेंट आपके फोन को देखकर नियंत्रित करता है मोबाइल-एजेंट एक ओपन सोर्स जीयूआई एजेंट है जो स्क्रीन को देखकर मोबाइल डिवाइस को नियंत्रित करता है। यह ऐप्स को नेविगेट कर सकता है और कार्यों को स्वचालित रूप से निष्पादित कर सकता है। इसे अलीबाबा ग्रुप की टोंगयी लैब द्वारा विकसित किया गया है, और इसका ऑनलाइन डेमो उपलब्ध है जिसे आप आजमा सकते हैं। X-PLUG/MobileAgent #AI #ओपनसोर्स #मोबाइलएजेंट #जीयूआईऑटोमेशन रोजाना ओपन सोर्स अपडेट के लिए फॉलो करें 👇 [id] Mobile-Agent mengendalikan ponsel Anda melalui penglihatan Mobile-Agent mengontrol ponsel Anda dengan cara melihat Mobile-Agent adalah agen GUI sumber terbuka yang mengontrol perangkat seluler dengan membaca layar secara visual. Ia dapat menavigasi aplikasi dan melakukan tugas secara otomatis. Dikembangkan oleh Tongyi Lab di Alibaba Group, dengan demo online yang tersedia untuk dicoba. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Ikuti untuk rilis sumber terbuka harian 👇 [it] Mobile-Agent controlla il tuo telefono "guardando" Mobile-Agent controlla il tuo telefono leggendo lo schermo. Mobile-Agent è un agente GUI open source che controlla i dispositivi mobili leggendo visivamente lo schermo. Può navigare tra le app ed eseguire attività in modo autonomo. Sviluppato da Tongyi Lab presso Alibaba Group, è disponibile una demo online da provare. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Seguici per aggiornamenti quotidiani sui progetti open source 👇 [iw] Mobile-Agent שולט בטלפון שלכם באמצעות ראייה Mobile-Agent שולט בטלפון שלך על ידי צפייה Mobile-Agent הוא סוכן ממשק משתמש גרפי בקוד פתוח ששולט במכשירים ניידים על ידי קריאת המסך ויזואלית. הוא יכול לנווט באפליקציות ולבצע משימות באופן אוטונומי. נבנה על ידי Tongyi Lab בקבוצת Alibaba, עם הדגמה מקוונת זמינה לניסיון. X-PLUG/MobileAgent #AI #OpenSource #MobileAgent #GUIAutomation עקבו אחר הטלות קוד פתוח יומיות 👇 [ja] Mobile-Agent:画面を見てスマホを操作するAI Mobile-Agentは、画面を視覚的に認識してスマートフォンを制御するGUIエージェントです。 Mobile-Agentは、画面を視覚的に認識してモバイルデバイスを制御するオープンソースのGUIエージェントです。アプリの操作やタスクの自律実行が可能です。アリババグループのTongyi Labによって開発され、オンラインデモで試用できます。 X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation 毎日更新されるオープンソース情報をお見逃しなく👇 [ko] Mobile-Agent는 사용자의 휴대폰을 확인하여 제어합니다. Mobile-Agent는 화면을 읽어 모바일 기기를 제어하는 오픈 소스 GUI 에이전트입니다. Mobile-Agent는 화면을 시각적으로 읽어 모바일 기기를 제어하는 오픈 소스 GUI 에이전트입니다. 앱을 탐색하고 작업을 자율적으로 수행할 수 있습니다. 알리바바 그룹의 통이 연구소(Tongyi Lab)에서 개발했으며, 온라인 데모를 통해 사용해 볼 수 있습니다. X-PLUG/MobileAgent #AI #오픈소스 #MobileAgent #GUI자동화 매일 새로운 오픈 소스 소식을 받으려면 팔로우하세요 👇 [ml] Mobile-Agent സ്ക്രീനിൽ നോക്കി നിങ്ങളുടെ ഫോൺ നിയന്ത്രിക്കുന്നു മൊബൈൽ-ഏജന്റ് നിങ്ങളുടെ ഫോണിനെ കാണുന്നതിലൂടെ നിയന്ത്രിക്കുന്നു സ്ക്രീൻ ദൃശ്യപരമായി വായിച്ചുകൊണ്ട് മൊബൈൽ ഉപകരണങ്ങളെ നിയന്ത്രിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്സ് GUI ഏജന്റാണ് മൊബൈൽ-ഏജന്റ്. ഇതിന് ആപ്പുകൾ നാവിഗേറ്റ് ചെയ്യാനും സ്വയംഭരണപരമായി ജോലികൾ ചെയ്യാനും കഴിയും. ആലിബാബ ഗ്രൂപ്പിലെ ടോംഗി ലാബ് നിർമ്മിച്ചത്, പരീക്ഷിച്ചുനോക്കാൻ ലഭ്യമായ ഒരു ഓൺലൈൻ ഡെമോയും ഇതിൽ ഉൾപ്പെടുന്നു. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation പ്രതിദിന ഓപ്പൺ സോഴ്സ് ഡ്രോപ്പുകൾക്കായി പിന്തുടരുക 👇 [nl-NL] Mobile-Agent bestuurt je telefoon door te kijken Mobile-Agent bestuurt je telefoon door het scherm te lezen Mobile-Agent is een open source GUI-agent die mobiele apparaten bestuurt door het scherm visueel te lezen. Het kan autonoom door apps navigeren en taken uitvoeren. Ontwikkeld door Tongyi Lab van Alibaba Group, met een online demo die je kunt uitproberen. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Volg ons voor dagelijkse open source-updates 👇 [pa] ਮੋਬਾਈਲ-ਏਜੰਟ ਦੇਖ ਕੇ ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ ਮੋਬਾਈਲ-ਏਜੰਟ ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੂੰ ਇਹ ਦੇਖ ਕੇ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ ਮੋਬਾਈਲ-ਏਜੰਟ ਇੱਕ ਓਪਨ ਸੋਰਸ GUI ਏਜੰਟ ਹੈ ਜੋ ਸਕ੍ਰੀਨ ਨੂੰ ਵਿਜ਼ੂਅਲੀ ਪੜ੍ਹ ਕੇ ਮੋਬਾਈਲ ਡਿਵਾਈਸਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ। ਇਹ ਐਪਸ ਨੂੰ ਨੈਵੀਗੇਟ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਕਾਰਜਾਂ ਨੂੰ ਖੁਦਮੁਖਤਿਆਰੀ ਨਾਲ ਕਰ ਸਕਦਾ ਹੈ। ਅਲੀਬਾਬਾ ਗਰੁੱਪ ਵਿਖੇ ਟੋਂਗੀ ਲੈਬ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ, ਇੱਕ ਔਨਲਾਈਨ ਡੈਮੋ ਅਜ਼ਮਾਉਣ ਲਈ ਉਪਲਬਧ ਹੈ। X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation ਰੋਜ਼ਾਨਾ ਓਪਨ ਸੋਰਸ ਡ੍ਰੌਪਸ ਲਈ ਫਾਲੋ ਕਰੋ 👇 [pl] Mobile-Agent steruje Twoim telefonem za pomocą wzroku Mobile-Agent steruje telefonem za pomocą Mobile-Agent to agent z interfejsem graficznym typu open source, który steruje urządzeniami mobilnymi, odczytując ich zawartość z ekranu. Umożliwia autonomiczną nawigację po aplikacjach i wykonywanie zadań. Stworzony przez Tongyi Lab w Alibaba Group, z dostępną wersją demonstracyjną online. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Obserwuj, aby być na bieżąco z codziennymi nowościami open source 👇 [pt-BR] Mobile-Agent controla seu celular apenas olhando O Mobile-Agent controla seu telefone através da leitura visual da tela. O Mobile-Agent é um agente GUI de código aberto que controla dispositivos móveis lendo a tela visualmente. Ele pode navegar por aplicativos e executar tarefas de forma autônoma. Desenvolvido pelo Tongyi Lab do Alibaba Group, com uma demonstração online disponível para teste. X-PLUG/MobileAgent #IA #CódigoAberto #MobileAgent #AutomaçãoGUI Siga para receber novidades diárias sobre código aberto 👇 [ru] Mobile-Agent управляет вашим телефоном, используя данные о его состоянии. Mobile-Agent управляет вашим телефоном, считывая изображение с экрана. Mobile-Agent — это агент с открытым исходным кодом, который управляет мобильными устройствами, считывая изображение с экрана. Он может автономно перемещаться по приложениям и выполнять задачи. Разработан лабораторией Tongyi Lab в Alibaba Group, доступна онлайн-демонстрация для ознакомления. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Подписывайтесь на ежедневные обновления с открытым исходным кодом 👇 [ta] Mobile-Agent உங்கள் போனை பார்த்து கட்டுப்படுத்துகிறது மொபைல்-ஏஜென்ட் உங்கள் தொலைபேசியைப் பார்த்து கட்டுப்படுத்துகிறது மொபைல்-ஏஜென்ட் என்பது ஒரு ஓப்பன் சோர்ஸ் GUI ஏஜென்ட் ஆகும், இது திரையைப் பார்த்து மொபைல் சாதனங்களைக் கட்டுப்படுத்துகிறது. இது செயலிகளை வழிநடத்தவும் பணிகளைத் தானாகவே செய்யவும் முடியும். அலிபாபா குழுமத்தின் டோங்கியி ஆய்வகத்தால் உருவாக்கப்பட்டது, முயற்சித்துப் பார்க்க ஆன்லைன் டெமோவும் கிடைக்கிறது. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation தினசரி ஓப்பன் சோர்ஸ் வெளியீடுகளுக்குப் பின்தொடரவும் 👇 [te] మీ ఫోన్ను చూసి నియంత్రించే Mobile-Agent మొబైల్-ఏజెంట్ చూడటం ద్వారా మీ ఫోన్ను నియంత్రిస్తుంది మొబైల్-ఏజెంట్ అనేది ఒక ఓపెన్ సోర్స్ GUI ఏజెంట్, ఇది స్క్రీన్ను దృశ్యమానంగా చదవడం ద్వారా మొబైల్ పరికరాలను నియంత్రిస్తుంది. ఇది యాప్లను నావిగేట్ చేయగలదు మరియు పనులను స్వయంప్రతిపత్తితో చేయగలదు. దీనిని అలీబాబా గ్రూప్లోని టోంగీ ల్యాబ్ నిర్మించింది, ప్రయత్నించడానికి ఆన్లైన్ డెమో అందుబాటులో ఉంది. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation రోజువారీ ఓపెన్ సోర్స్ అప్డేట్ల కోసం ఫాలో అవ్వండి 👇 [uk] Mobile-Agent керує вашим телефоном завдяки зоровому сприйняттю Mobile-Agent керує вашим телефоном, бачачи Mobile-Agent — це агент з відкритим кодом і графічним інтерфейсом, який керує мобільними пристроями, візуально зчитуючи екран. Він може переміщатися між програмами та виконувати завдання автономно. Розроблено Tongyi Lab в Alibaba Group, з онлайн-демонстрацією, доступною для ознайомлення. X-PLUG/MobileAgent #AI #Opensource #MobileAgent #GUIAutomation Підпишіться на щоденні оновлення з відкритим кодом 👇
Exciting news! Argus, the global airline intelligence platform, is now open-source on GitHub: Dioscurias/Argus Argus is still online at manta.bet Operate at your heart's desire! t.co
Building an Authorization Gateway for AI Agents: A Practical Architecture AI agents are increasingly capable of interacting with external APIs and enterprise systems. But consider this scenario: You build an AI agent that can access Gmail, update Salesforce, and interact with cloud infrastructure. How do you prevent it from performing an action that the requesting user was never authorized to perform? A common mistake is to give the agent a service account with broad permissions. That makes implementation easier, but it creates a significant security risk. Let's explore a better approach: an authorization gateway for AI agents. **1. The architecture ** Instead of allowing agents to communicate directly with enterprise APIs, route actions through an authorization gateway. User Request | v AI Agent | v Action Request | v Authorization Gateway | +---- Identity Validation | +---- Policy Evaluation | +---- Permission Check | v Enterprise API | v Audit Event The agent proposes an action. The gateway determines whether that action is authorized. The agent should not be responsible for granting itself permission. **2. Define an agent identity ** An agent needs an identity that is independent of its LLM provider. **Example: ** { "agent_id": "crm-agent-001", "owner": "sales-platform", "environment": "production", "allowed_actions": [ "customer.read", "customer.update" ] } In a production implementation, identity records should be maintained in a trusted registry rather than accepted directly from an agent request. **3. Define an action request ** Every action should carry enough information for the gateway to evaluate it. { "agent_id": "crm-agent-001", "principal_id": "employee-123", "task_id": "task-987", "resource": "customer/456", "action": "customer.update" } The principal_id must be established through a trusted authentication and delegation process. It must not simply be trusted because the agent included it in JSON. **4. Implement a basic policy check ** A simplified Python example: AGENT_POLICIES = { "crm-agent-001": { "customer.read", "customer.update" } } def authorize_action(agent_id, action): allowed = AGENT_POLICIES.get(agent_id, set()) if action not in allowed: return { "authorized": False, "reason": "Action not permitted" } return { "authorized": True, "reason": "Policy allows action" } This demonstrates the basic decision, but it is not production-grade authorization. A real gateway must also validate the authenticated principal, delegation, resource ownership, tenant boundaries, credential scope, and applicable contextual policies. **5. Add a human approval boundary ** Not every action should be treated equally. **For example: ** - Action - Suggested policy - Read a customer record - Automatic if authorized - Update a customer record - Automatic with scoped permission - Send an external email - Approval based on policy - Delete a customer account - Explicit approval - Modify production infrastructure - Strong approval controls Human approval should be enforced by the gateway, not merely requested through an LLM prompt. **6. Add audit logging ** Every authorization decision should produce an event. { "event_type": "agent.authorization", "agent_id": "crm-agent-001", "task_id": "task-987", "action": "customer.update", "resource": "customer/456", "decision": "ALLOW", "timestamp": "2026-11-02T12:00:00Z" } Production systems should also capture the authenticated principal, policy version, correlation ID, execution result, and relevant delegation metadata. Avoid logging access tokens, secrets, or unnecessary sensitive customer data. **7. What should a production implementation add? ** The simplified example is a starting point. A real enterprise authorization gateway should include: - OAuth 2.0 / OpenID Connect integration. - Short-lived, scoped credentials. - Token exchange or equivalent delegated authorization. - Centralized policy management. - Resource-level authorization. - Agent identity registration and revocation. - Rate limits and execution budgets. - Tamper-resistant audit storage. - Human approval workflows. - Multi-tenant isolation. It should also ensure that a delegated agent cannot obtain broader permissions than the original authorization allows. **8. Why this matters ** Agent frameworks will continue to evolve. LLM providers will change. New orchestration technologies will emerge. But enterprise security cannot be tightly coupled to a particular model or agent framework. An independent authorization layer creates a consistent security boundary across different agent implementations. **The key architectural principle is simple: ** An AI agent may decide what action it wants to perform, but a trusted authorization layer must decide whether it is allowed to perform it. That separation could become one of the foundational requirements for enterprise agent infrastructure. What approach are you taking to identity and authorization in your agent implementations? About the Author Ashwin Giridharan writes about Cloud & Enterprise Architecture, AI Infrastructure, Generative AI, and Agentic AI. Website: ashwingiridharan.com LinkedIn: linkedin.com GitHub: github.com/giridharan-ashwin Medium: medium.com Follow me for more discussions on enterprise architecture, AI infrastructure, and building production-ready AI systems.
I just have coded Sega Game Gear support into CVBasic. Until it gets an official release, you can compile it from the git 😉 #retro #retrogaming #sega nanochess/cvbasic
Ukrainian Translation for Pebble OS (Work in Progress) Hi everyone! I have been working on a Ukrainian translation of the Pebble smartwatch interface for some time. I am certainly not a professional translator, but I think I have finally reached a point where the result is good enough to share with others. I tested the translation on a Pebble Time 2 running firmware version 4.44.1. Because of the small watch screen, I sometimes had to use shorter words and phrases, and not all translations may be ideal. However, overall, I am quite happy with the result. In recent firmware versions, the developers added horizontal text scrolling for menu titles. This solved the problem with longer Ukrainian phrases that previously did not fit on the screen. There are still some untranslated menu items, but this seems to be a firmware issue rather than a translation issue, as all translation strings have been translated. I hope this will be fixed in future updates. Getting the font right also took quite a bit of work. I spent a lot of time adjusting it, and I think the result looks pretty good now. There are also some issues that are not related to the translation itself, but rather to Cyrillic character rendering. For example, in notifications with the Larger text size, the lowercase Cyrillic letter "з" is currently displayed as a heart symbol instead of the correct letter. I have already reported this issue to the developer and hope it will be fixed. I also haven't been able to check some words, phrases and sentences in the menus, as well as some font sizes, simply because I haven't yet found where they are displayed. So there may still be some things that need improvement. I hope to keep working on this translation and eventually make it as good as possible. In the meantime, if you are interested, feel free to use this translation! Enjoy! 😉
[Feature Update] Unison UWP 2.3.25 Unison 2.3 — Calls, Channels & A More Complete WhatsApp Experience Another major step forward for Unison! Version 2.3.25 is now at Candidate / Ship stage, bringing a substantial set of new messaging features, call history improvements, status management, and further refinements to the WhatsApp Legacy experience. This release focuses on making Unison feel more like a complete WhatsApp client on Windows, while continuing to preserve the lightweight experience and familiar Windows Phone design language that define the project. From recent calls and missed-call notifications to channel support, quick reactions, and improved conversation management, version 2.3 brings several long-awaited features together. What's new 📞 Calls History & Notifications (Preview). Added a dedicated recent calls experience, including call history visualization, outgoing call offer notifications, and missed-call alerts. Notifications remain quiet while chat history synchronization is in progress, avoiding unnecessary alerts during initial setup. Important: Actual voice and video calls are not supported yet. This release only provides call history visualization and related notifications. You cannot place or answer calls through Unison. 🟢 Status Downloads. You can now save the currently viewed Status photo or video directly to your device. 💬 New Conversation Overlay. Start conversations through a dedicated overlay featuring contact tiles and an alphabetical A–Z contact browser. 😀 Quick Reactions. Added a quick reaction bar and a bottom emoji dock, with support for toggling and replacing reactions. ↩️ Swipe to Reply. Reply to messages using a simple left-swipe gesture, making conversation navigation more natural on touch devices. 📢 Channels Support. Added a dedicated Channels scope, alongside refinements to the Legacy interface and its familiar light Windows Phone chrome. 🔔 Notification Controls. Added a dedicated filter dialog for toast and lock-screen notifications, providing more control over which notifications reach the device. 🎙️ More Messaging Capabilities. Added voice message pausing, view-once message support, chat export, and group join previews. Interface & experience improvements 📱 Legacy DetailHost Split. Introduced a more consistent separation of Calls, Status, and Favorites detail views, including dedicated empty panes when no item is selected. 🎨 Improved Message Layout. Fixed message bubble wrapping behavior, adopting Unigram's 432px maximum width approach and whole-word wrapping to improve readability. ⭐ Reliable Favorites Synchronization. Improved cross-device Favorites synchronization with better resilience against regular_low app-state interruptions. 🖼️ More Reliable Media Thumbnails. Improved thumbnail handling through Baileys retries, history synchronization placeholders, and visual scrim refinements. Under the hood 🏗️ Improved History Synchronization. Added silent full-history synchronization, reducing unnecessary user-facing interruptions during initial and ongoing history imports. 👥 Group System Events. Improved handling of group system messages, ensuring relevant events are represented more consistently in conversation history. 📡 Channel Metadata. Added channel metadata handling to improve compatibility with the growing range of WhatsApp conversation types. 🧩 Continued Compatibility Improvements. Further refined the integration between Unison's Windows client architecture and the underlying Baileys-based Multi-Device connection layer. Known limitations ⚠️ Voice and Video Calls. Calling functionality is not implemented yet. The Calls section currently supports call history visualization and related notifications only. Placing and answering calls are not available. Release status Unison 2.3.25 — Candidate / Ship This build brings together the current feature set and stability improvements for the next release. Installation Important: Install the new APPX as an update to preserve your linked WhatsApp session. Uninstalling Unison clears the linked session. Thanks to everyone testing Unison on Windows 10 Mobile and Windows desktop, reporting issues, and helping improve compatibility across different devices. Credits u/MaskNinjaSquared u/Mayconus u/Negociation Download WinArchive: a Microsoft Store replacement with software updates and a web store. Metrostore: another Microsoft Store replacement. Apps are installed by hand. Github: MaskNinjaSquared/Unison: UWP WhatsApp client aimed primarily for Windows 10 Mobile GDrive (Unison / WinArchive / Metrostore): Google Drive – Unison / WinArchive / Metrostore Unison 2.3.25 — bringing Calls History, Channels, and a more complete WhatsApp Multi-Device experience to Windows 10 Mobile, with desktop support where it matters.
I recompiled Astral Chain to run natively on PC preview.redd.it Probably my favorite game on Switch 1, based on the totk pc comp project pipeline What works - Native code, not emulation. Run on potatoes PC with 10yo CPU. There is room for improvements for 4gb ram GPU (see you steamdeck), but 6gb cards and above should be perfect. - Should be playable from start to credits, with no visual glitches - The game's own audio: music, effects and voices, through an SDL 3 device - Anisotropic texture filtering up to 16x, for sharp ground into the distance - In-game settings menu (F1) and performance overlay (F10) - Keyboard, mouse and gamepad, with remapping, rumble and gyro - Xbox button prompts, with either button layout - Mods and data cheats from the emulator formats - Mouse and keyboard support - Resolution scaling up to 2160p - 60FPS during gameplay, 30 during cutscenes - Easy installer to build your own version Download captainj-sparrow/astral-chain-pc-recomp
Babel update – automatic AI subtitle translation for Radarr when subtitles are missing Hey! I shared my project Babel here a few months ago, and I’ve been working on it quite a bit since then. For anyone who missed my previous post, Babel is a self-hosted AI subtitle translator that integrates with Radarr, Sonarr and Bazarr. I originally started building it because I wanted my movies and TV shows to have subtitles in my preferred language without having to manually search for or translate anything. One of the main things I’ve focused on is making Babel work alongside Bazarr rather than replacing it. Bazarr can handle subtitle searching as usual, and if it can’t find a suitable subtitle, Babel can step in and translate one instead. There’s also an optional grace period to give Bazarr more time before AI translation starts. When Radarr imports a new movie, Babel can automatically check for existing subtitles, look for a usable source subtitle, extract embedded tracks if needed and translate using different AI providers, including OpenAI, Gemini, DeepSeek, OpenRouter and local Ollama models. But the translation itself is only part of it. I’ve spent a lot of time building a QA and recovery system that checks for missing lines, incorrect subtitle IDs, synchronization problems and potential translation alignment issues. If something goes wrong, Babel attempts to repair it before publishing the subtitle. It also includes a web interface for managing your library, monitoring jobs, configuring providers and tracking API usage and costs. The latest release is v2.5.7-beta, which fixes an extraction cache race condition and improves progress reporting. I’ve mostly been focusing on reliability and making the whole process work better without manual intervention. It’s still a beta project, and there’s definitely more to improve, but it’s been working well in my own media setup. GitHub: hugomossberg/Babel I’d love to hear what other Radarr users think, especially anyone already using Bazarr. Would automatic subtitle translation be useful for your movie library?
想把屏幕共享给两三个朋友看球,画质糊、共享高清要会员、推流还得实名。 piik 开源:自己开房间发链接,朋友网页打开就看,不装不注册,房间私密。 tntcrafthim/piik
Achei uma skill que roda varios testes no seu app para melhorar a chance dele passar no review da applestore. Não testei, mas talvez seja util para alguem que vai enviar seu primeiro app, não custa testar. safaiyeh/app-store-review-skill
this numpy+matplotlib artifact was produced by dquickts. yes, you read that right. github.com/stencil-hq/dquickts/tree/feat/py they just do codemode so much better in py, so we figured, why not dual purpose the bytecode! t.co
Backstage v1.56.3 パッチリリース TechDocs生成エンジンに新しく Zensical engine というものが加わりました。material for mkdocsサポート終了が関係しているようです。 github.com/backstage/backstage/releases/tag/v1.56…
Recording and replaying trading events in Rust Hey everyone, I’ve been working on a library called Tickertape and thought it might be useful to a few people here. It’s a local event journal: one process writes events, other processes can follow along live, and you can replay the history later. Think of it as a small flight recorder for market data, order events, etc. Events carry a sequence number and two timestamps, e.g. exchange time and local receive time. There’s also a CLI to inspect and verify recordings, plus Parquet export for digging through them in DuckDB or Python. The scope is fairly narrow: one writer, multiple independent readers, all on the same machine. No networking or replication. Writes become visible to readers immediately; durability requires an explicit checkpoint. It’s open source, runs on Linux/macOS, and the repo has benchmarks and details about crash recovery. thomas0903/tickertape Would love some feedback, especially if you’ve built or used something similar. Curious to hear what worked for you and what you think is missing here. Thanks 😊
工具参数写了“0到100,且不能是13”,换验证器后13却通过? AI辅助隔离测试pi新旧入口:TypeBox 1.3.27→pi-schema 1.5.0,13由拒绝变通过,101仍拒绝;Type.Refine的JS回调未执行。 这是迁移兼容性例子,非完整产品实测。对应改动: github.com/earendil-works/pi/commit/6536f80129a26…
PSA: If you’re holding/buying $PEARL Get it off the sketchy exchanges.. The official wallet is desktop only and you can find it here: github.com/pearl-research-labs/pearl/releases
(i should add: the original firmware is a good FM engine, equivalent to/easier to use than the korg volca fm2, and it has a nice arp & 16-step sequencer. some of the firmwares i've heard good things about but cannot and will not vouch for are felucca, x0x, sloop, melodee, and baud girl. too many)
@owainkenway Actually the better processor is just an Erlang VM, in hardware: HeroesLament/picobeam
Day 10: Multi-Database Support: CRUD and Structure Upgrades --- title: "Day 10: Multi-Database Support: CRUD and Structure Upgrades" published: true description: "Five databases, two jobs. CRUD is thin enough that the five implementations look alike; structure upgrades need five real ones." tags: architecture, dotnet, erp, softwareengineering series: "ERP Architect's Notes: Designing a Definition-Driven Framework" cover_image: raw.githubusercontent.com canonical_url: hackmd.io --- "Supports SQL Server, PostgreSQL, MySQL, Oracle and SQLite" is one line in a specification. Inside a framework it is a question that has to be answered before anything else: what exactly is being abstracted for them. Neither direction works: - Wrapping up what every vendor can do has no end to it. Each item wrapped means filling the same gap five times over, and by the end every item is half finished - Sharing nothing but a connection object is not support for multiple databases, it means every form's statements get written five times This framework's answer is narrow, narrow enough to be two things only. This post covers: 1. Why there are only two shared behaviors 2. CRUD, where the differences are small enough for a lookup table to absorb 3. Structure upgrades, where the differences are large enough that each vendor really does get its own 4. Which vendor is used is registered by the application, and the framework ships none --- 1. Why there are only two shared behaviors How many databases a framework should support has no general answer, because it depends on what is being sold. Supporting one buys depth, since that vendor's native types, bulk interfaces and dialect features are all directly available. TableSchema and Database Structure Upgrades said that for packaged software a short support list means a whole set of customers gone, which is what makes multi-vendor support a condition of entry. What this layer faces is five commonly used relational databases, not everything that can store data. Those five share one data model: tables, columns and rows, all speaking SQL, all with transactions. Precisely because the layer underneath is shared, "CRUD" and "keeping the structure caught up with the definition" point at the same thing on all five. Two tests, both of which have to hold: - Is this something every application does - Does it keep doing it Measured with those two, not much is left: | What got in | Why | |---|---| | CRUD against a single table | There is no application that does not do it, and it happens once every time a user presses save | | Keeping the structure caught up with the definition | No application can dodge it, and it comes round once at every deployment | What did not get in: partitioned tables, materialized views, full text search, each vendor's own analytic functions, query hints, and the dedicated interfaces for bulk loading. Every one of them is valuable, and they share one property. Not every application needs them, and the ones that do usually use them in only a handful of places. Take bulk loading as the example. Most databases have a dedicated mechanism far faster than writing row by row, but no two of them are the same shape. One hands you a class of its own, another a special statement, another wants a file written out first for the database to read itself. Designing a common interface over those yields the smallest intersection and nothing more, and the smallest intersection is usually about as fast as writing row by row. Wrapping it gains nothing and leaves five implementations to maintain. These two tests measure whether this layer should be doing something, not whether it matters. Partitioning may be a life or death question for a document table of a hundred million rows. It simply should not be an interface that has to hold for five vendors at once deciding how it is done. Once the measuring is over, what is left is all of it. The framework's entire outward abstraction is one interface, and what gets asked of a database falls into two categories: how to produce CRUD statements for a table, and how to keep the structure caught up with the definition. The second splits into four smaller pieces, being read the current state, create a new table, alter in place, and rebuild when altering will not do. The line is drawn narrowly, and what that buys is that it can be finished. One interface and two categories of question means connecting a new database is something you can read to the end of and write to the end of. If that interface had thirty members, this would never happen in practice. The two jobs sit inside the same interface, though, and the abstraction over them is nothing like the same thickness. --- 2. CRUD, where the differences are small enough for a lookup table to absorb The pain: the same query looks different on all five, and the places where it differs are extremely boring. What symbol wraps table and column names, how a parameter is written, how paging is expressed. Boring, but every statement has to be right, and one mistake is a run time syntax error, of the kind that never appears at all when the test environment runs a different database. These differences are of a good kind. They are different spellings of the same thing, not different things. The reason for collecting them into one lookup table is that the cost of not collecting them is scattered. Statements get assembled in more than one place, with separate stretches for listing, reading one row, counting, and each of insert, update and delete. Every stretch judging for itself which vendor is in play means every stretch has its own chance to miss one, and the one missed shows itself only when a customer happens to run that database. | Database | Identifier quoting | Parameter prefix | |---|---|---| | SQL Server | [sys_id] | @ | | PostgreSQL | "sys_id" | @ | | MySQL | ` sys_id | @` | | Oracle | "SYS_ID" | : | | SQLite | "sys_id" | @ | Oracle's row carries one extra thing. An unquoted identifier gets folded to upper case there, so what the framework sends is always quoted and upper case, and on the way back the framework folds it to lower case at the boundary, so that every layer above sees exactly the same column names on all five. Data and Definitions Split Apart, So Forms Need No Types of Their Own said there is one set of names the whole way through, and this is that rule's closing move at the lowest level. One thing is left that a lookup table cannot solve, because the shapes really are different: | Database | Taking rows 21 to 40 | Skipping the first 20 and taking everything after | |---|---|---| | SQL Server and Oracle | OFFSET 20 ROWS FETCH NEXT 20 ROWS ONLY | OFFSET 20 ROWS | | PostgreSQL and SQLite | LIMIT 20 OFFSET 20 | OFFSET 20 | | MySQL | LIMIT 20 OFFSET 20 | LIMIT 18446744073709551615 OFFSET 20 | MySQL matches the middle row only when a range is being taken. Given a starting point and no count, it will not accept an OFFSET standing on its own, so a ceiling has to be padded in, and that string of digits is the sentinel value its own documentation specifies, not something typed at random. The conclusion is in the shape of the five implementations. The five classes matching the five vendors are all but identical, each one handing the query and the delete to the same shared code and mentioning on the way past which vendor it is. The three statements used for saving go further and do not even come in five: one class assembles them while holding an enumeration value. That class is TableSchemaCommandBuilder, which takes which vendor and the table's structure at construction, assembles the three, and wraps them together with that table from the DataSet into one thing handed down: var insertCmd = BuildInsertCommand(); var updateCmd = BuildUpdateCommand(); var deleteCmd = BuildDeleteCommand(); return new DataTableUpdateSpec() { DataTable = dataTable, InsertCommand = insertCmd, UpdateCommand = updateCmd, DeleteCommand = deleteCmd }; That same post said the state of each row decides which statement gets issued, and here is where it is honored. Inside the whole class, which vendor is in play arrives from exactly two places, being how identifiers are quoted and what prefix parameter names take, which are the two columns of the first table above. How the three statements are assembled has not one branch in it. The differences all sink to the layer below, where what can be looked up is looked up and the one case left over is taken care of by shared code. This half of the abstraction is very thin, and thin is good. Connecting one more vendor means almost nothing to write on this half. --- 3. Structure upgrades, where the differences are large enough that each vendor really does get its own For "widen this column from 20 characters to 50", what differs between vendors is not the spelling but whether it can be done at all. That is no longer different spellings of one thing, it is a difference in capability itself, and a difference in capability cannot be absorbed. Difference one: reading the current state No two of the five are alike: | Database | Where it is read from | |---|---| | SQL Server | The sys.* set of system views | | PostgreSQL | information_schema mixed with pg_catalog | | MySQL | INFORMATION_SCHEMA | | Oracle | The USER_* data dictionary | | SQLite | sqlite_master plus a few PRAGMAs | The reason this cannot be pulled apart is not dialect, it is how each vendor regards its own structure. SQL Server treats a column default as an object in its own right, stored separately and named separately, so reading it means joining one more system view. SQLite goes to the other extreme. It does not enforce types, and keeps the VARCHAR(50) originally written down exactly as written, so for the framework to know how long a value can be, that string has to be taken apart and read again. There is a step after reading, and it is harder than the query. That post's rule that the definition holds no database's type names has its cost land here. Creating a table means translating framework types into native types, so comparing means translating the native types read back the other way, and that translation is many to one. On MySQL a Guid is stored as a fixed length character column of 36, and a fixed length character column is just one way of spelling a string, while auto number and long integer both land on BIGINT. Translating back, all the database reports is a char with a length, or a bigint. The meaning was already thrown away on the way out. So the reverse half is not the lookup table read backwards, it is recognizing the meaning again from extra clues: - A fixed length character column of exactly 36 is a Guid - A numeric column of precision 19 and scale 4 is a money amount - A BIGINT gets a second look for an auto increment flag These clues hold on the premise that the framework only ever emits those few spellings, so a table the framework built itself is always recognized again. The cost sits on that same premise. Take over a table the framework did not build and these inferences go wrong, with the symptom being a comparison that reports a difference which is not there, every time. > The forward mapping fits in one list, and the reverse half does not. Once an abstraction has thrown information away in the middle, there is no free route back. Difference two: whether it can be altered at all That post's rule, altering in place within a family and rebuilding across families, is all but void on SQLite, because its ALTER TABLE cannot touch an existing column. So the same change that takes seconds on another database copies the whole table's data on SQLite. The framework does not choose to smooth this over. What it does is compute the difference and show it, which is what that post's dry run is for. The same definition against different databases can yield different plans, and whether to schedule a maintenance window was always a question for that plan to answer. Smoothing it over would be worse, because what gets smoothed away is exactly the thing the user most needs to know. Difference three: the hardest to spot, because it reports no error From 8.0.13 onward MySQL requires that a default value which is not a literal be written as an expression wrapped in parentheses. So for the framework to have a column generate a Guid automatically, what goes out is DEFAULT (UUID()). Writing it is fine. But at the next comparison, what INFORMATION_SCHEMA reports back is uuid(). The parentheses are gone, and the function name has turned lower case. So the literal comparison runs like this. The definition says (UUID()), the database says uuid(), the two do not match, a change is declared, one more ALTER goes out, it runs, the next comparison still gets uuid() back, and there is one more ALTER again. > An upgrade that never converges. It does not fail and it produces no error message. It quietly issues one more statement at every startup, altering a column that never changed. The framework's answer is to normalize both sides to the same shape before comparing, stripping one layer of outer parentheses and ignoring case. SQLite has a problem of the same kind, since it stores the create statement as written and reads it back as written, and it needs a normalization of its own. And one more kind: column descriptions Every column in the definition has a line of description meant for people, and storing that in the database gets four answers out of the five vendors: | Database | How column descriptions are stored | |---|---| | MySQL | Written straight after the column definition | | PostgreSQL and Oracle | A separate COMMENT ON statement | | SQL Server | Hung on a set of things called extended properties | | SQLite | Not kept at all, where writing is a no-op and reading always comes back empty | What the framework does about the last one is say outright that it cannot be done, and leave the description on the definition side. Pretending it had been stored is what would be the disaster, because it would never match when read back, which is that non converging loop over again. These several kinds of difference are all branches off the same abstraction on its way down, and not one of a thousand definitions needs to know about any of it. The cost is that someone has to know for them. That someone is this layer. Reading back and writing out are only the entry fee. The hard part is recognizing that what was written out and what comes back are the same thing. --- 4. Which vendor is used is registered by the application, and the framework ships none The pain: your system uses one database, and the framework claims support for five. So five vendors' drivers sit in the output directory and the container image is that much bigger, and the day one of them ships a security update, your vulnerability scan lists it even though you never used a line of it. Versions are harder still. A framework that folds five drivers into its own dependencies has pinned five versions on your behalf. > A dependency that is not itself using something should not be the one making that decision for all of its users. So the framework builds in none of them. An application registers whichever one it wants to support, at startup, and the case study's line comes from NorthwindBackend.cs: DbProviderRegistry.Register(DatabaseType.SQLite, new SqliteProviderFactory(SqliteFactory.Instance)); What gets registered is the ADO.NET level factory, out of each vendor's own package. The same file has one more line, registering the set that produces statements and reads structures for it, which is the whole interface of the two sections above. Connecting a database the framework does not ship for means writing exactly that one part. The framework never registers any vendor itself, and that sentence is written into the source comments. Registration happens in code, not in configuration. What configuration carries is the database kind, an enumeration value, not a type name. Letting configuration name a type would mean the framework going off to find an assembly by name at run time, which moves the driver dependency out of the dependency list and into a string, where the build can no longer see it. This discipline is verifiable in the source. Not one project in the whole framework references any of the five vendors' packages. SQLite took one extra piece of work for this. Its driver does not provide the DataAdapter the framework needs for writing back, so the framework supplies one, wrapping the abstract factory type and handing every other member straight through, with the instance passed in by the application at registration. Even something needed for that one vendor does not reference that vendor's package. The case study uses SQLite only, and the other four vendors' packages are not even referenced. The reason for choosing it has nothing to do with the framework's design: no database to install, one file and it runs, which is the least trouble for a demonstration. --- The thickness of an abstraction Five databases, two jobs. What got in is what every application has to do and keeps doing. What did not get in is not less important, it is only needed in a few particular places. The two look nothing alike once abstracted. The CRUD half is thin enough that the five implementations are all but the same, because the differences between vendors are different spellings of one thing. The structure upgrade half is thick enough that each vendor gets its own, because the differences between vendors are differences in capability. > The thickness of an abstraction is not decided by its designer. It is decided by how far apart the things underneath it are. This layer's return takes time to show. At the first delivery it is pure cost, being one more interface, two more lines of wiring and five more implementations. It pays back when a second customer names a different database and you find that not one word of a thousand definitions has to change. Supporting one more database does not really cost those few hundred lines of implementation. It costs the gaps that no document tells you about in advance, and how many of those there are is something you only learn by walking into them. The next post, Connections, Transactions and Query Conditions in the Data Access Layer, is about the stretch the framework decides not to do itself: when SQL is handed back to the application to write, which things the framework does not hand over along with it. --- 📚 Part of the thirty-post series ERP Architect's Notes: Designing a Definition-Driven Framework 📘 Original article on HackMD, in Traditional Chinese: 👉 hackmd.io 📢 You are welcome to republish this, please credit the source. 📬 Follow for more engineering notes: Facebook | HackMD | GitHub | NuGet
@tianyi 在 DeepSeek Harness 0.2.1-rc.4 中,模型工具参数末尾多一个 } 会触发 MALFORMED_RESPONSE,整轮中断。Mac 已复现,附 6 项离线验证。能否增加有界纠错,避免重做已完成操作?脱敏复现: deepseek-harness#11577
I just have coded Sega Game Gear support into CVBasic. Until it gets an official release, you can compile it from the git :awesome: #retro #retrogaming #sega nanochess/cvbasic
I built a tool that turns your codebase into interactive architecture diagrams inside Claude (free & opensource) Keeping architecture diagrams up to date is a pain, so most of them are outdated the week after they’re drawn. I built Sketchy so Claude can draw them from the actual code while you work. Some ways I use it: Onboarding into a new repo. Ask “draw the architecture of this codebase” in Claude Code and you get a hand-drawn diagram of services, modules and how they talk to each other. Click a node and the file opens in your editor. Comparing before and after. Ask Claude to redraw after a refactor. Follow-up edits keep existing nodes in place, even with new back-edges, so you see exactly what changed instead of a reshuffled diagram. Explaining a design decision. Comparison mode puts two options side by side, e.g. monolith vs. split services. What’s equal is muted and the key difference is highlighted. That’s useful for ADRs or a PR description. Walking someone through a flow. Step-by-step mode highlights one part of a request at a time, which works better in a review than a static image. Under the hood, Claude only describes the scene as JSON and a layout engine (elkjs + rough.js) places everything, so there are no overlapping boxes. Export to SVG/PNG for docs. Free and open source, as an MCP extension for Claude Code / Desktop or a skill in the normal chat. GitHub · Docs What would make this useful in your workflow? I’m thinking about C4-style levels next.
Tiger Woods PGA Tour '04 Xbox Decompilation As an enormous fan of this classic game, I had to try my hand at a decompilation. Standard XBE-Recomp process for getting it up and running on your machine. Experimental Mouse and Keyboard controls are included, along with extra graphical features not present in the original console game like bloom and depth of field. projectedan/TigerWoods2004-XBE-Recomp I hope that you enjoy it - let me know what you think!
I recompiled Astral Chain's Switch code to native x86-64. No emulator: a real Windows exe, Vulkan, the game's audio and saves. GPU at 25%, built from your own copy in a minute. #AstralChain captainj-sparrow/astral-chain-pc-recomp t.co
Devolutions Jiffshot 0.2.0 is out with a new capture window design and early builds for macOS and Linux! Download it now and tell me what you think! Devolutions/jiffshot
Devolutions Jiffshot 0.2.0 is out with a new capture window design and early builds for macOS and Linux! Download it now and tell me what you think! Devolutions/jiffshot t.co
Babel update – automatic AI subtitle translation for Sonarr when subtitles are missing Hey! I shared my project Babel here a few months ago, and I’ve been working on it quite a bit since then. For anyone who missed my previous post, Babel is a self-hosted AI subtitle translator that integrates with Sonarr, Radarr and Bazarr. I originally started building it because I wanted newly downloaded episodes to have subtitles in my preferred language without having to manually search for or translate anything. One of the main things I’ve focused on is making Babel work alongside Bazarr rather than replacing it. Bazarr can handle subtitle searching as usual, and if it can’t find a suitable subtitle, Babel can step in and translate one instead. There’s also an optional grace period to give Bazarr more time before AI translation starts. Babel can automatically pick up new episodes from Sonarr, check for existing subtitles, extract embedded subtitle tracks, clean up SDH subtitles and translate them using different AI providers, including OpenAI, Gemini, DeepSeek, OpenRouter and local Ollama models. But the translation itself is only part of it. I’ve spent a lot of time building a QA and recovery system that checks for missing lines, incorrect subtitle IDs, synchronization problems and potential translation alignment issues. If something goes wrong, Babel attempts to repair it before publishing the subtitle. It also includes a web interface for managing your library, monitoring jobs, configuring providers and tracking API usage and costs. The latest release is v2.5.7-beta, which fixes an extraction cache race condition and improves progress reporting. I’ve mostly been focusing on reliability and making the whole process work better without manual intervention. For a recent real-world test, Babel automatically processed a newly downloaded Sonarr episode with 1,453 subtitle lines in about 136 seconds using gpt-4o-mini, at an estimated AI cost of around $0.03. It’s still a beta project, and there’s definitely more to improve, but it’s been working well in my own setup. GitHub: hugomossberg/Babel I’d love to hear what other Sonarr users think, especially anyone already using Bazarr. Would something like this be useful in your setup?
Free & open source (Nov 03, AI-drafted, no income guarantees). Open-source: json-validate — Python CLI → ryy394197-bot/003453-json-yaml-cli More: ryy394197-bot.github.io
@nosferatuboi @OmarchyMac @AuroraSilicon No reinstall needed. omarchy-mac-migrate will move your Mac onto the official 4.5 packages in place: omarchy-mac#690 Right now it stops on Touch ID setups like yours (#778). Wait for that fix, then run it.