Building applied AI systems: models, data pipelines, and monitoring & analysis tooling across text, speech, and vision — with a focus on Arabic and the Iraqi dialect
لقناتك وصف🎙️ نطق بصوت عربي ⏱️ ضبط الصوت على التوقيت 💬 ترجمة عربية على احتك وطلابك.. محتوى إنجليزي يصل إلى جمهور عربي بدل أن تفرّغ وتترجم وتسجّل صوتك وتضبط التوقيت بيدك
Glyph Lens Instead of retyping printed text from a photo or scanned page word by word, you get it back in Arabic or English, ready to copy or download. It also highlights the words it may have misread right on the image, so you only need to check those. Free, runs in the browser, stores nothing.
One Qwen3-VL-8B checkpoint improves all three streaming spatial benchmarks at once: OST-Bench 50.52 to 63.93 (+13.41), UCS-Bench +7.44, OVO-S-Bench +4.91. The change is in the supervision, with no new memory module or annotation.
The ChronoReplay paper calls the failure mode interface lock-in: post-train on one answer format and that readout improves while others stall. A categorical-only control hits 58.03 on OVO-S but drops OST from 50.52 to 47.48.
🔍 The recipe • Keep targets in native formats (option, metric value with units, timestamp) • Replay episodes in source order, each target attached to its causal prefix • Loss mass: 2/3 on 33,180 single-turn examples, 1/3 on 6,381 episodes (alpha = 0.5)
📊 The numbers • Three-benchmark mean 56.86, against 50.74 (categorical-only) and 50.76 (trajectory-only) • Chronological order beats a shifted-order control by about 2.41 OST points on two seeds; the 13.41 belongs to the whole recipe • Adaptive frame selection adds +4.09 on OVO-S (57.98) with 80.50 frames instead of 128
⚠️ Caveats • One backbone, indoor scenes only; the single-family comparison is confounded by data coverage • The repo has a CPU smoke test and a --dry-run training command, but no license and no fine-tuned weights
I trained a small PII detector for PrivAiTe, my local proxy that masks personal data before a prompt reaches an LLM: crp4222/privaite-pii-minilm.
It is a multilingual MiniLM (117M parameters, 15 types from names and contacts to IDs, bank details and secrets), trained only on datasets whose licenses allow commercial use, released under BSD 3-Clause, with PyTorch, ONNX fp32 and int8, and Core ML builds.
On 9 public test sets it never saw, it masks as many person names as the best of GLiNER PII, NVIDIA GLiNER-PII, GLiNER2, Piiranha and OpenAI privacy-filter, or more, on 6 of them, usually with higher precision. It trails GLiNER PII on short lowercase voice requests and NVIDIA on court rulings.
It is also 2.5 to 7 times smaller and much faster: 9 ms per 1,000 characters on an M1 Pro Neural Engine and 23 ms on CPU in int8, against 186 to 621 ms for the others on the same machine and documents. Numbers, test sets and limits are on the card: crp4222/privaite-pii-minilm