<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Denis Kleptsov — Writing</title><description>Notes on AI engineering, on-device ML and the modern web.</description><link>https://kleptsov.com/</link><item><title>How I use fine-tuning, quantization and speculative decoding to speed up a voice bot</title><link>https://kleptsov.com/blog/voice-bot-speculative-decoding/</link><guid isPermaLink="true">https://kleptsov.com/blog/voice-bot-speculative-decoding/</guid><description>Why an unquantized 12B won&apos;t run on a gaming GPU, how QLoRA and 4-bit quantization make it fit, and how a fine-tuned draft model makes it 1.7x faster, fast enough for a live voice call.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Running a containerized web app on AWS Lambda</title><link>https://kleptsov.com/blog/web-app-on-lambda/</link><guid isPermaLink="true">https://kleptsov.com/blog/web-app-on-lambda/</guid><description>How md2docx went from a VPS container to serverless on AWS for ~$0 — without changing a line of app code, plus the three sharp edges nobody warns you about.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Guardrails for an LLM that emails real people</title><link>https://kleptsov.com/blog/guardrails-llm-email/</link><guid isPermaLink="true">https://kleptsov.com/blog/guardrails-llm-email/</guid><description>An assistant that auto-replies to email can do real damage. The boring safety layer is what makes it shippable.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Editing Office files without breaking them</title><link>https://kleptsov.com/blog/ooxml-document-surgery/</link><guid isPermaLink="true">https://kleptsov.com/blog/ooxml-document-surgery/</guid><description>Word, Excel and PowerPoint are ZIP archives of XML. Here&apos;s how to change the text and keep every font, table and chart intact.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>An ensemble that explains itself</title><link>https://kleptsov.com/blog/ensemble-that-explains-itself/</link><guid isPermaLink="true">https://kleptsov.com/blog/ensemble-that-explains-itself/</guid><description>Fast local classification you can trust, plus an LLM that justifies each call with quotes — without letting it touch the verdict.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>The case for on-device LLMs</title><link>https://kleptsov.com/blog/case-for-on-device-llms/</link><guid isPermaLink="true">https://kleptsov.com/blog/case-for-on-device-llms/</guid><description>Cloud models are convenient until the data is confidential. Why I keep shipping apps where the model runs entirely on your machine.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Let the database say no: preventing double-booking</title><link>https://kleptsov.com/blog/database-enforced-no-double-booking/</link><guid isPermaLink="true">https://kleptsov.com/blog/database-enforced-no-double-booking/</guid><description>Two people, one slot, the same millisecond. Application-level checks lose this race — Postgres can win it.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Shipping agentic RAG without the hype</title><link>https://kleptsov.com/blog/shipping-agentic-rag/</link><guid isPermaLink="true">https://kleptsov.com/blog/shipping-agentic-rag/</guid><description>Most RAG demos fall over in production. Here is the small set of things that actually made mine reliable — and measurable.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item></channel></rss>