<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>bgmlv · blog</title><link>https://bgmlv.com/blog/</link><description>Recent content on bgmlv · blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 01 Nov 2026 00:00:00 +0100</lastBuildDate><atom:link href="https://bgmlv.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Local speech synthesis on a MacBook: 136x real time and the stress problem</title><link>https://bgmlv.com/blog/local-speech-synthesis-macbook/</link><pubDate>Sun, 01 Nov 2026 00:00:00 +0100</pubDate><guid>https://bgmlv.com/blog/local-speech-synthesis-macbook/</guid><description>&lt;p&gt;How far can a laptop get with speech synthesis without any cloud? I ran two small open text-to-speech models, Kokoro and Silero, on a MacBook with an M3 Pro and 18 GB of RAM, first in English and then in Russian.&lt;/p&gt;&#10;&lt;p&gt;Short version: real-time speech on a laptop is a solved problem, and both models are fast enough to stop caring about speed. The difficult part is not the voice. It is knowing which syllable to stress.&lt;/p&gt;</description></item><item><title>Letting harness2 tune Codex on my own site</title><link>https://bgmlv.com/blog/harness2-codex-own-repo/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0200</pubDate><guid>https://bgmlv.com/blog/harness2-codex-own-repo/</guid><description>&lt;p&gt;A coding agent is more than a model. Around it sits a harness: the instructions file, the skills, the helper scripts, the habits it uses to check its own work. A good harness can turn a mediocre agent into a useful one, and most of us write ours by hand, by trial and error.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/google-research/harness2"&gt;harness2&lt;/a&gt; from Google Research tries to do that automatically. An improver model watches the agent work on a set of tasks, proposes edits to its harness, tests each edit, keeps what helps and combines the winners into a new harness. Then it compares the new harness with the old one on the same tasks.&lt;/p&gt;</description></item><item><title>Four frameworks through an agent's eyes</title><link>https://bgmlv.com/blog/four-frameworks-agent-eyes/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0200</pubDate><guid>https://bgmlv.com/blog/four-frameworks-agent-eyes/</guid><description>&lt;p&gt;Somewhere this year the question &amp;ldquo;which framework should I use&amp;rdquo; quietly changed meaning for me. Most of the code in my projects is now written by agents. I describe, review and steer; they type. And a framework that is a joy for a person to type in is not necessarily one an agent can work in. An agent does not remember the docs from ten years of practice. It reads them, right now, page by page, and then it either gets the feature right or it does not.&lt;/p&gt;</description></item><item><title>Jerry: a voice terminal on an ESP32-S3</title><link>https://bgmlv.com/blog/jerry-esp32-s3-voice-terminal/</link><pubDate>Sun, 18 Oct 2026 00:00:00 +0200</pubDate><guid>https://bgmlv.com/blog/jerry-esp32-s3-voice-terminal/</guid><description>&lt;p&gt;In early October a small parcel arrived: a Freenove ESP32-S3 Display, a 2.8&amp;quot; touchscreen board with a microphone, a speaker and an ES8311 audio codec on it. The idea was simple. I already run an AI agent on a server; I wanted a physical thing on the desk I could just talk to. Say a word, ask a question, hear the answer. No phone, no browser tab.&lt;/p&gt;&#10;&lt;p&gt;Two weeks and three firmware rewrites later it works, and it answers to the name &amp;ldquo;Jerry&amp;rdquo;. Here is the short version of how it got there.&lt;/p&gt;</description></item></channel></rss>