<?xml version='1.0' encoding='utf-8'?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"><channel><title>Kishan Vyas - Blog</title><link>https://kv308.pages.dev/blog/</link><description>Curated engineering notes with original shared dates.</description><language>en-IN</language><item><title>OCR comes before retrieval quality</title><link>https://kv308.pages.dev/blog/ocr-before-document-retrieval/</link><guid>https://kv308.pages.dev/blog/ocr-before-document-retrieval/</guid><description>Originally shared 12 October 2026. A model resource, and a reminder about document-pipeline inputs.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 12 October 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A model resource, and a reminder about document-pipeline inputs.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://huggingface.co/baidu/Unlimited-OCR" target="_blank" rel="noopener noreferrer"&gt;Baidu: Unlimited-OCR model card ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;The resource&lt;/h2&gt;&lt;p&gt;I shared Baidu’s Unlimited-OCR model page as a document-understanding resource. The model card describes image-to-text capabilities and provides implementation references and usage information.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;The pipeline question&lt;/h2&gt;&lt;p&gt;For document retrieval, useful text has to exist before chunking, embeddings, or search can help. Reading order, tables, and extraction mistakes can affect what later stages are able to retrieve.&lt;/p&gt;&lt;p&gt;A practical evaluation would use representative pages, inspect extracted content, and test the downstream questions the application needs to answer. The model name alone is not a quality guarantee. Start with its official card for supported inputs and requirements.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/ocr-before-document-retrieval/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Keeping an eye on coding agents</title><link>https://kv308.pages.dev/blog/coucou-agent-session-awareness/</link><guid>https://kv308.pages.dev/blog/coucou-agent-session-awareness/</guid><description>Originally shared 8 October 2026. A small interface idea for work that happens outside the active window.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 8 October 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A small interface idea for work that happens outside the active window.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://github.com/Louis-CFM/coucou" target="_blank" rel="noopener noreferrer"&gt;Louis-CFM/coucou ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;A different place for agent status&lt;/h2&gt;&lt;p&gt;Coucou is an open-source companion for monitoring AI coding-agent sessions. The project presents status and permission interactions in a compact interface around the Mac notch, with other platform experiences also documented.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;Why the interface is interesting&lt;/h2&gt;&lt;p&gt;Long-running development work creates an attention problem: an agent may be waiting for a response while the developer is focused elsewhere. A small, visible status surface can reduce the need to repeatedly switch windows.&lt;/p&gt;&lt;p&gt;The design question is how to make interruptions useful without making them constant. The project’s current README is the place to check the available integrations.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/coucou-agent-session-awareness/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Privacy through separation of trust</title><link>https://kv308.pages.dev/blog/ohttp-separation-of-trust/</link><guid>https://kv308.pages.dev/blog/ohttp-separation-of-trust/</guid><description>Originally shared 4 October 2026. The architectural idea behind an OHTTP relay and gateway.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 4 October 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The architectural idea behind an OHTTP relay and gateway.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://blog.cloudflare.com/announcing-cloudflare-ohttp-gateway/" target="_blank" rel="noopener noreferrer"&gt;Cloudflare: announcing OHTTP Gateway ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;Two different responsibilities&lt;/h2&gt;&lt;p&gt;Oblivious HTTP separates a request’s route from its contents. A relay forwards an encrypted request, while a gateway performs the cryptographic processing needed before the application handles it.&lt;/p&gt;&lt;p&gt;Cloudflare’s announcement explains why independent, non-colluding operators matter: the design aims to avoid one party seeing both the client identity and the request contents.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;The takeaway&lt;/h2&gt;&lt;p&gt;Privacy is sometimes an architectural property, not a switch added to a single server. Drawing which component can observe which information is a good starting point for understanding a design like this.&lt;/p&gt;&lt;p&gt;OHTTP is not simply another name for HTTPS or a general-purpose anonymity guarantee. The source is useful for its threat model and division of responsibilities.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/ohttp-separation-of-trust/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Exploring local voice workflows</title><link>https://kv308.pages.dev/blog/local-voice-workflows-voicestudio/</link><guid>https://kv308.pages.dev/blog/local-voice-workflows-voicestudio/</guid><description>Originally shared 27 September 2026. An open-source project that puts several audio tasks in one workspace.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 27 September 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;An open-source project that puts several audio tasks in one workspace.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://github.com/debpalash/VoiceStudio" target="_blank" rel="noopener noreferrer"&gt;debpalash/VoiceStudio ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;The project I shared&lt;/h2&gt;&lt;p&gt;VoiceStudio describes itself as an open-source workspace for voice generation and cloning, dubbing, transcription, dictation, and audiobook workflows. Its repository also documents local execution options.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;What makes it worth inspecting&lt;/h2&gt;&lt;p&gt;The interesting part is how these tasks connect: generating audio is different from managing a repeatable workflow around scripts, input files, models, and output assets.&lt;/p&gt;&lt;p&gt;Before adopting a tool like this, compare its hardware requirements, license, supported engines, and export formats with the workflow you need. Local operation should be checked for the particular engine and configuration. Start with a small workflow and compare the output against your requirements.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/local-voice-workflows-voicestudio/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Another way to discover Android software</title><link>https://kv308.pages.dev/blog/f-droid-android-discovery/</link><guid>https://kv308.pages.dev/blog/f-droid-android-discovery/</guid><description>Originally shared 25 September 2026. F-Droid’s redesign is also a useful product-design reference.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 25 September 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;F-Droid’s redesign is also a useful product-design reference.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://f-droid.org/2026/09/24/f-droid-2.0-a-new-chapter-for-android-freedom.html" target="_blank" rel="noopener noreferrer"&gt;F-Droid: F-Droid 2.0 ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;An open-source app ecosystem&lt;/h2&gt;&lt;p&gt;F-Droid is a place to discover and install free and open-source Android applications. I shared its 2.0 announcement with a short explanation of that purpose.&lt;/p&gt;&lt;p&gt;The announcement describes a redesigned interface, clearer discovery, improved search, and navigation organized around finding and managing apps.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;The product lesson&lt;/h2&gt;&lt;p&gt;An app catalogue is only useful when people can find a tool for their actual task. Descriptions, categories, language support, and update flows deserve the same attention as the app listing itself.&lt;/p&gt;&lt;p&gt;For an Android developer, this is worth exploring as both a software ecosystem and a reference for discovery design. The discovery patterns are worth comparing with the distribution channels you already use.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/f-droid-android-discovery/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Share localhost without a deployment</title><link>https://kv308.pages.dev/blog/share-localhost-with-quick-tunnels/</link><guid>https://kv308.pages.dev/blog/share-localhost-with-quick-tunnels/</guid><description>Originally shared 18 September 2026. A small tool for a shorter feedback loop.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 18 September 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A small tool for a shorter feedback loop.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://try.cloudflare.com/" target="_blank" rel="noopener noreferrer"&gt;Cloudflare Quick Tunnels ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;The useful bit&lt;/h2&gt;&lt;p&gt;Cloudflare Quick Tunnels provides a temporary public HTTPS URL for a service running on your machine. It is useful when someone needs to review a local interface or send a webhook to a development service.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;A minimal example&lt;/h2&gt;&lt;p&gt;With cloudflared installed and your application listening on port 8000, the command below creates a tunnel. Use the URL printed by the process; it is not a permanent deployment address.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;cloudflared tunnel --url http://localhost:8000&lt;/code&gt;&lt;/pre&gt;&lt;/section&gt;&lt;section id="section-3" class="post-section"&gt;&lt;h2&gt;Where it fits&lt;/h2&gt;&lt;p&gt;Treat it as a development preview. The URL exposes the chosen local service publicly, so application-level access controls still matter. For a persistent portfolio or production service, use a regular deployment.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/share-localhost-with-quick-tunnels/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>A hands-on route into language models</title><link>https://kv308.pages.dev/blog/llms-from-scratch-learning-path/</link><guid>https://kv308.pages.dev/blog/llms-from-scratch-learning-path/</guid><description>Originally shared 17 September 2026. A resource for understanding the machinery behind the API.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 17 September 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A resource for understanding the machinery behind the API.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://sebastianraschka.com/llms-from-scratch/" target="_blank" rel="noopener noreferrer"&gt;Sebastian Raschka: Build a Large Language Model (From Scratch) ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;A resource to build alongside&lt;/h2&gt;&lt;p&gt;Sebastian Raschka’s book and companion materials work through text representations, attention, GPT-style model components, pretraining, and fine-tuning using Python and PyTorch.&lt;/p&gt;&lt;p&gt;I shared it as a hands-on learning resource. It offers a concrete route from concepts to runnable implementations instead of stopping at model API calls.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;A practical way to use it&lt;/h2&gt;&lt;p&gt;Read a section, run its implementation, and then change one thing. Inspect tensor shapes and compare the result with what you expected. The exercises provide a useful check on understanding.&lt;/p&gt;&lt;p&gt;A small implementation that you can inspect is a useful starting point before thinking about large-scale training.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/llms-from-scratch-learning-path/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Agents beyond clean benchmarks</title><link>https://kv308.pages.dev/blog/agents-beyond-clean-benchmarks/</link><guid>https://kv308.pages.dev/blog/agents-beyond-clean-benchmarks/</guid><description>Originally shared 15 September 2026. Why long-running work needs more than a good single-turn answer.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 15 September 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Why long-running work needs more than a good single-turn answer.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://andonlabs.com/blog/why-we-built-pion" target="_blank" rel="noopener noreferrer"&gt;Andon Labs: Why we built Pion ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;The gap between a score and a system&lt;/h2&gt;&lt;p&gt;Andon Labs describes Pion as a platform for experimenting with agents that operate businesses. The article connects simulated evaluations such as Vending-Bench with deployments in real environments.&lt;/p&gt;&lt;p&gt;The interesting distinction is between performing well in a bounded test and maintaining coherent behavior over many actions, changing circumstances, and imperfect feedback.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;What to look for in an agent workflow&lt;/h2&gt;&lt;p&gt;A useful evaluation can examine whether the agent notices failed actions, keeps track of resources, and recovers without repeating an unhelpful loop. Final output quality is only one part of that picture.&lt;/p&gt;&lt;p&gt;Read the evaluation setup alongside the headline outcomes. The environment, duration, and success criteria are part of the result.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/agents-beyond-clean-benchmarks/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Small costs inside a very large DNS cache</title><link>https://kv308.pages.dev/blog/small-costs-large-dns-cache/</link><guid>https://kv308.pages.dev/blog/small-costs-large-dns-cache/</guid><description>Originally shared 6 September 2026. A useful case study in measuring memory at the level of a single entry.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 6 September 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A useful case study in measuring memory at the level of a single entry.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://blog.cloudflare.com/dns-cache-memory-optimization-1111/" target="_blank" rel="noopener noreferrer"&gt;Cloudflare: optimizing the 1.1.1.1 DNS cache ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;What the article shows&lt;/h2&gt;&lt;p&gt;Cloudflare describes a series of changes to the memory representation of its DNS cache. At the scale of billions of entries, a small amount of unused capacity or repeated metadata becomes expensive.&lt;/p&gt;&lt;p&gt;The engineering work covers allocation overhead, compact representations, and locality. The team measured cache operations alongside memory, rather than assuming that a smaller structure would automatically be faster.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;A useful engineering question&lt;/h2&gt;&lt;p&gt;Before replacing a data store or buying more capacity, ask what one stored item actually costs. Measure the payload, metadata, spare capacity, and allocator overhead separately.&lt;/p&gt;&lt;p&gt;The results belong to Cloudflare’s deployment. Compare the mechanism before expecting the same improvement in another cache.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/small-costs-large-dns-cache/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>AptiCore is on Google Play</title><link>https://kv308.pages.dev/blog/apticore-is-on-google-play/</link><guid>https://kv308.pages.dev/blog/apticore-is-on-google-play/</guid><description>Originally shared 31 July 2026. A small milestone: putting a study tool into people’s hands.</description><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Originally shared 31 July 2026. Published 25 October 2026.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A small milestone: putting a study tool into people’s hands.&lt;/p&gt;&lt;p&gt;Original resource: &lt;a href="https://play.google.com/store/apps/details?id=com.x100xTechs.apticore" target="_blank" rel="noopener noreferrer"&gt;AptiCore on Google Play ↗&lt;/a&gt;&lt;/p&gt;&lt;section id="section-1" class="post-section"&gt;&lt;h2&gt;From a project to a published app&lt;/h2&gt;&lt;p&gt;On 31 July 2026, I shared the news that AptiCore was available on Google Play and asked my group to try it. The request was simple: report bugs, suggest improvements, and leave an honest review if the app was useful.&lt;/p&gt;&lt;p&gt;AptiCore brings together quantitative aptitude and logical reasoning practice, generated questions, revision tools, study planning, and progress tracking.&lt;/p&gt;&lt;/section&gt;&lt;section id="section-2" class="post-section"&gt;&lt;h2&gt;The part that comes after shipping&lt;/h2&gt;&lt;p&gt;Publishing creates a new kind of feedback loop. Real people encounter unclear wording, unexpected device behavior, and workflows that looked obvious during development.&lt;/p&gt;&lt;p&gt;The launch message is a reminder to make feedback easy to send. A specific bug report or a confusing screen can be more useful than a general compliment. The useful part is turning that feedback into the next improvement.&lt;/p&gt;&lt;/section&gt;&lt;p&gt;By &lt;a href="https://kv308.pages.dev/"&gt;Kishan Vyas&lt;/a&gt;. &lt;a href="https://kv308.pages.dev/blog/apticore-is-on-google-play/"&gt;Read on the website&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>