<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Apoorv Darshan</title>
    <description>The latest articles on DEV Community by Apoorv Darshan (@apoorvdarshan).</description>
    <link>https://dev.to/apoorvdarshan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3803883%2F9b7a7479-6c77-4e92-a6b7-98c03078f916.JPG</url>
      <title>DEV Community: Apoorv Darshan</title>
      <link>https://dev.to/apoorvdarshan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/apoorvdarshan"/>
    <language>en</language>
    <item>
      <title>Why Scowld Uses Bring Your Own Key Instead of a Subscription</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Fri, 14 Aug 2026 14:00:07 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/why-scowld-uses-bring-your-own-key-instead-of-a-subscription-ph0</link>
      <guid>https://dev.to/apoorvdarshan/why-scowld-uses-bring-your-own-key-instead-of-a-subscription-ph0</guid>
      <description>&lt;p&gt;Many AI apps bundle model access into a recurring subscription. Scowld takes the opposite approach: the app is free and open source, while you connect the AI and voice providers you already want to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What BYOK means here
&lt;/h2&gt;

&lt;p&gt;Bring your own key means Scowld does not sell a pool of AI usage. You add a key from a supported provider, choose a model and the app makes the request directly from your device.&lt;/p&gt;

&lt;p&gt;The same idea applies across the stack. You can independently choose an AI chat provider, speech-to-text provider and text-to-speech provider instead of being locked into one bundled service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the keys and chats live
&lt;/h2&gt;

&lt;p&gt;Provider keys are stored in iOS Keychain. Chat history is stored locally on the device. Scowld has no intermediary backend that receives or stores those keys or conversations. Removing a key or deleting the app removes that local access.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-off
&lt;/h2&gt;

&lt;p&gt;BYOK asks for a little setup: you need a provider account and API key. In return, you can switch models, see the provider's own usage and pricing, and stop access by deleting the key. For light personal use, usage-based provider billing can also be less expensive than another flat subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open source matters
&lt;/h2&gt;

&lt;p&gt;Privacy claims are more useful when they can be inspected. Scowld is released under the MIT License, so its storage and networking behavior can be reviewed directly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/app/id6760672848" rel="noopener noreferrer"&gt;https://apps.apple.com/app/id6760672848&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/apoorvdarshan/scowld" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/scowld&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;BYOK explainer: &lt;a href="https://scowld.xyz/blog/bring-your-own-key-ai-app" rel="noopener noreferrer"&gt;https://scowld.xyz/blog/bring-your-own-key-ai-app&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use different providers for chat, transcription and speech, I would be interested to hear which combination works best for you.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HELIOS-01 — an editable Blender pocket orrery</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Fri, 14 Aug 2026 10:23:09 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/helios-01-an-editable-blender-pocket-orrery-12bo</link>
      <guid>https://dev.to/apoorvdarshan/helios-01-an-editable-blender-pocket-orrery-12bo</guid>
      <description>&lt;p&gt;HELIOS-01 is an editable Blender pocket orrery: a black-titanium handheld device with a miniature mechanical solar system under an optical dome. Procedurally generated, animated, and built to move in Blender.&lt;/p&gt;

&lt;p&gt;Render + source: &lt;a href="https://github.com/apoorvdarshan/helios-01" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/helios-01&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nornlore — a newspaper for your birthday</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Fri, 14 Aug 2026 10:20:04 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/nornlore-a-newspaper-for-your-birthday-22lj</link>
      <guid>https://dev.to/apoorvdarshan/nornlore-a-newspaper-for-your-birthday-22lj</guid>
      <description>&lt;p&gt;Nornlore turns your birthday into a magical newspaper. Explore famous people, world events, music and movies tied to your exact day in history, with 1,747 animated GIFs and shareable date links.&lt;/p&gt;

&lt;p&gt;Try: &lt;a href="https://nornlore.apoorvdarshan.com" rel="noopener noreferrer"&gt;https://nornlore.apoorvdarshan.com&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/apoorvdarshan/nornlore" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/nornlore&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Newest for YouTube — true newest-first search</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Fri, 14 Aug 2026 09:40:39 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/newest-for-youtube-true-newest-first-search-3fka</link>
      <guid>https://dev.to/apoorvdarshan/newest-for-youtube-true-newest-first-search-3fka</guid>
      <description>&lt;p&gt;Newest for YouTube turns YouTube search into a true newest-first list instead of the default relevance shuffle. It uses the YouTube Data API with your own key, keeps that key in local Chrome storage, and stays unpacked/open source.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/apoorvdarshan/newest-youtube-search" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/newest-youtube-search&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>X Country Filter — a local, open-source feed filter</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Fri, 14 Aug 2026 05:41:54 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/x-country-filter-a-local-open-source-feed-filter-4o18</link>
      <guid>https://dev.to/apoorvdarshan/x-country-filter-a-local-open-source-feed-filter-4o18</guid>
      <description>&lt;p&gt;X Country Filter gives you more control over what stays visible in your X feed. Choose countries to hide; matching posts are filtered locally in your browser, with no external relay.&lt;/p&gt;

&lt;p&gt;Chrome: &lt;a href="https://chromewebstore.google.com/detail/country-filter-for-x-twit/cocohplmilpblbkoikolbhakjipccioa" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/country-filter-for-x-twit/cocohplmilpblbkoikolbhakjipccioa&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/apoorvdarshan/x-country-filter" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/x-country-filter&lt;/a&gt;&lt;br&gt;
Product Hunt: &lt;a href="https://www.producthunt.com/products/country-filter-for-x-twitter/" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/country-filter-for-x-twitter/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I Turned 2,173 Handwritten Pages into an Offline iOS Study App</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Wed, 12 Aug 2026 08:30:09 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/how-i-turned-2173-handwritten-pages-into-an-offline-ios-study-app-5137</link>
      <guid>https://dev.to/apoorvdarshan/how-i-turned-2173-handwritten-pages-into-an-offline-ios-study-app-5137</guid>
      <description>&lt;p&gt;PCM Notes began with a very unglamorous problem: useful handwritten Physics, Chemistry and Mathematics notes existed, but revising from thousands of loose image pages was slow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning an archive into a reader
&lt;/h2&gt;

&lt;p&gt;The finished archive contains 91 chapters and 2,173 pages: 23 Physics chapters, 37 Chemistry chapters and 31 Mathematics chapters. Physics and Chemistry support JEE and NEET revision, while Mathematics is organised for JEE Main and Advanced.&lt;/p&gt;

&lt;p&gt;During the Xcode build, an AppKit and PDFKit tool converts the tracked page images into complete chapter PDFs. Those PDFs are bundled with the iOS app, so the reader never needs to fetch study content from a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why fully offline mattered
&lt;/h2&gt;

&lt;p&gt;A revision tool should still work on a train, in a library with unreliable Wi-Fi or while deliberately keeping distractions off. Once PCM Notes is installed, chapter search, reading, zoom, page navigation, sharing and saved progress all work locally.&lt;/p&gt;

&lt;p&gt;The app remembers the last-read page for each chapter. On iPad, the same archive can be viewed continuously or as a book-like two-page spread.&lt;/p&gt;

&lt;h2&gt;
  
  
  A deliberately simple product model
&lt;/h2&gt;

&lt;p&gt;There is no account, advertising, subscription or paywall. Every chapter and reader feature is available immediately. The Support tab contains optional repeatable Apple tips, but a tip unlocks nothing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/us/app/pcm-notes-jee-neet/id6792598227" rel="noopener noreferrer"&gt;https://apps.apple.com/us/app/pcm-notes-jee-neet/id6792598227&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website: &lt;a href="https://iitjee.apoorvdarshan.com/" rel="noopener noreferrer"&gt;https://iitjee.apoorvdarshan.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you revise from handwritten material, I would be interested to know whether you prefer long continuous PDFs or shorter topic-based sections.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I built a local bridge for moving Chromium sessions on macOS</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Mon, 10 Aug 2026 09:33:03 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/i-built-a-local-bridge-for-moving-chromium-sessions-on-macos-1f6n</link>
      <guid>https://dev.to/apoorvdarshan/i-built-a-local-bridge-for-moving-chromium-sessions-on-macos-1f6n</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazrdc6z4o6pccfwx0nyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazrdc6z4o6pccfwx0nyu.png" alt="Browser Cookie Bridge running on macOS" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Signing into the same services across several Chromium browsers gets repetitive quickly. Password managers can fill credentials, but they do not move an already authenticated session. Exporting browser data manually is awkward, and it is especially noticeable when a browser you use for automation does not offer an import path from your everyday browser.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Browser Cookie Bridge&lt;/strong&gt; to solve that narrow problem on macOS: transfer cookies and signed-in sessions between Chromium browser profiles that you own and trust, without sending them through a cloud service.&lt;/p&gt;

&lt;p&gt;The project supports Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Perplexity Comet as sources or destinations. It can also import into ChatGPT Codex's built-in browser as a destination-only integration.&lt;/p&gt;

&lt;p&gt;It is free, MIT-licensed, and available on &lt;a href="https://github.com/apoorvdarshan/browser-cookie-bridge" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/browser-cookie-bridge" rel="noopener noreferrer"&gt;npm&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two transfer paths
&lt;/h2&gt;

&lt;p&gt;Browser Cookie Bridge deliberately uses different mechanisms for two different jobs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Browser to browser
&lt;/h3&gt;

&lt;p&gt;Chromium extensions have access to the browser's cookie and history APIs after the user explicitly grants the required permissions. Browser Cookie Bridge generates a small unpacked extension for each selected endpoint and connects those extensions through a short-lived local broker.&lt;/p&gt;

&lt;p&gt;The flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The native app starts a broker bound to &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The source extension reads the selected cookies and, optionally, history URLs.&lt;/li&gt;
&lt;li&gt;The broker validates a random bearer token and the expected extension origin.&lt;/li&gt;
&lt;li&gt;The payload remains in broker memory until the destination extension requests it.&lt;/li&gt;
&lt;li&gt;The destination extension recreates the supported cookie attributes in the selected profile.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The broker limits payload size and normally exits after five minutes. Cookie values and history URLs are not written to logs, and there is no remote relay.&lt;/p&gt;

&lt;p&gt;Generated extensions live under the user's Application Support directory and contain a random local token. Those folders should be treated as sensitive and never shared.&lt;/p&gt;

&lt;h3&gt;
  
  
  Browser to Codex
&lt;/h3&gt;

&lt;p&gt;Codex is different because Browser Cookie Bridge cannot install or call a normal browser extension inside it. This path is therefore an &lt;strong&gt;intentionally unsupported direct integration&lt;/strong&gt;, and Codex must be completely closed before a transfer begins.&lt;/p&gt;

&lt;p&gt;The app reads the selected local Chromium profile, creates a consistent backup of Codex's SQLite browser storage, and performs the merge on a separate working copy. Before replacing anything, it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;verifies that the expected schema is present;&lt;/li&gt;
&lt;li&gt;refuses unknown schemas instead of guessing;&lt;/li&gt;
&lt;li&gt;runs SQLite integrity checks;&lt;/li&gt;
&lt;li&gt;replaces the destination only after validation; and&lt;/li&gt;
&lt;li&gt;restores the backup if replacement fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The newest 14 Codex backups are retained with user-only filesystem permissions.&lt;/p&gt;

&lt;p&gt;This path does not pretend to be an official API. A future Codex update can change its storage layout, which is why failing safely matters more than trying to support every unknown schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  What gets transferred
&lt;/h2&gt;

&lt;p&gt;Cookies are enabled by default, including supported domain, path, expiry, security, &lt;code&gt;SameSite&lt;/code&gt;, and partition attributes.&lt;/p&gt;

&lt;p&gt;History URLs are optional, but their original visit timestamps and page titles cannot be preserved.&lt;/p&gt;

&lt;p&gt;The tool never requests or transfers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;saved passwords;&lt;/li&gt;
&lt;li&gt;bookmarks;&lt;/li&gt;
&lt;li&gt;autofill or payment data; or&lt;/li&gt;
&lt;li&gt;iCloud Keychain contents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some websites bind sessions to a browser, device, IP address, or other risk signals. Those sites may invalidate a transferred cookie and ask the user to sign in again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The security limitation worth stating clearly
&lt;/h2&gt;

&lt;p&gt;Cookies are credentials. Moving them is useful precisely because possession of the right cookie can represent an authenticated session.&lt;/p&gt;

&lt;p&gt;OpenAI's Safe Storage key is protected by a private macOS Keychain access group. Browser Cookie Bridge cannot access that private key, so cookies imported directly into Codex use an empty &lt;code&gt;encrypted_value&lt;/code&gt;. They may remain readable to software running as the same macOS user until the website refreshes them.&lt;/p&gt;

&lt;p&gt;That means the correct trust boundary is the signed-in macOS account. Use the tool only with profiles you own and trust, protect your account, and never include real cookies, tokens, profiles, or databases in a bug report.&lt;/p&gt;

&lt;h2&gt;
  
  
  Native app and automation
&lt;/h2&gt;

&lt;p&gt;The npm package builds a native SwiftUI menu-bar app locally on the Mac. It supports manual sync, sync at login, and an optional fixed daily schedule.&lt;/p&gt;

&lt;p&gt;Scheduled Codex syncs exit without changing anything if Codex is open. The app never force-quits it.&lt;/p&gt;

&lt;p&gt;The CLI remains available for users who prefer automation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-cookie-bridge preferences &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--source&lt;/span&gt; brave &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--target&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--cookies&lt;/span&gt; on &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--history&lt;/span&gt; off

browser-cookie-bridge &lt;span class="nb"&gt;sync&lt;/span&gt; &lt;span class="nt"&gt;--timeout&lt;/span&gt; 300
browser-cookie-bridge doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install it
&lt;/h2&gt;

&lt;p&gt;Browser Cookie Bridge requires macOS 13 or newer, Node.js 22.5 or newer, and the Xcode Command Line Tools.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx browser-cookie-bridge install-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No administrator password is required. A first install goes to the user's Applications directory unless an existing writable system Applications copy is being updated.&lt;/p&gt;

&lt;p&gt;You can inspect the implementation, security policy, tests, and setup instructions here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/apoorvdarshan/browser-cookie-bridge" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cookiebridge.apoorvdarshan.com" rel="noopener noreferrer"&gt;Product website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/browser-cookie-bridge" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this solves a problem for you, a GitHub star or a carefully redacted bug report genuinely helps. Please never attach real browser data to a public issue.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Browser Cookie Bridge is not affiliated with Brave, Google, Microsoft, The Browser Company, Vivaldi, Opera, Perplexity, or OpenAI.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Built an Open-Source iPhone Workspace for 27 Web Infrastructure APIs</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Sat, 08 Aug 2026 14:00:48 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/i-built-an-open-source-iphone-workspace-for-27-web-infrastructure-apis-2h9g</link>
      <guid>https://dev.to/apoorvdarshan/i-built-an-open-source-iphone-workspace-for-27-web-infrastructure-apis-2h9g</guid>
      <description>&lt;p&gt;Small web-operations checks—whether a deployment succeeded, a domain is near renewal, Search Console found an issue, or uptime is degraded—often turn into a browser-tab maze.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Verceltics&lt;/strong&gt; as a native iPhone and iPad workspace for those quick checks. Version 2.0 supports 27 integrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 hosting platforms, including Vercel, Cloudflare, Netlify, Railway, Render, DigitalOcean, Heroku, Fly.io, Firebase Hosting and AWS Amplify&lt;/li&gt;
&lt;li&gt;8 registrars, including Namecheap, Porkbun, Spaceship, Dynadot and GoDaddy&lt;/li&gt;
&lt;li&gt;9 site services covering search, analytics, speed and uptime&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The security model
&lt;/h2&gt;

&lt;p&gt;Provider credentials and Google OAuth tokens stay in the iOS Keychain. Requests go directly from the app to provider APIs or your self-hosted service; there is no Verceltics credential proxy. Detected writes, purchases and destructive requests require confirmation.&lt;/p&gt;

&lt;p&gt;The project is open source under the MIT License. It is independent and not affiliated with the supported providers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/app/id6761645656" rel="noopener noreferrer"&gt;https://apps.apple.com/app/id6761645656&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/apoorvdarshan/verceltics" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/verceltics&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website: &lt;a href="https://verceltics.com" rel="noopener noreferrer"&gt;https://verceltics.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run several sites across different providers, I would value feedback on which operational view should be improved next.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I Built an iOS AI Companion That Can See What You Show It</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Thu, 06 Aug 2026 14:00:19 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/how-i-built-an-ios-ai-companion-that-can-see-what-you-show-it-5hj</link>
      <guid>https://dev.to/apoorvdarshan/how-i-built-an-ios-ai-companion-that-can-see-what-you-show-it-5hj</guid>
      <description>&lt;p&gt;Most AI companions only know what you type or say. Scowld adds an optional third input: a single camera frame you deliberately choose to share.&lt;/p&gt;

&lt;h2&gt;
  
  
  The interaction I wanted
&lt;/h2&gt;

&lt;p&gt;Describing an object is often harder than showing it. With vision enabled, you can hold something up, point the camera at a screen or show the room, then ask a question naturally. Scowld sends that one frame with your message to the vision-capable AI provider you selected and reads the reply aloud.&lt;/p&gt;

&lt;p&gt;This is not continuous recording. Vision is off by default, a frame is captured only when you send a message with the camera enabled, and Scowld does not save that image to the photo library.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the provider choice matters
&lt;/h2&gt;

&lt;p&gt;Scowld is bring-your-own-key. You can use a vision-capable provider such as Gemini, OpenAI or Claude, and the request goes from the device to that provider. There is no Scowld server proxying the frame or storing your API key.&lt;/p&gt;

&lt;h2&gt;
  
  
  More than a camera demo
&lt;/h2&gt;

&lt;p&gt;The rest of the conversation still works by voice or text. The companion has animated reactions, multiple characters, configurable personalities and separate locally stored chats. Vision is just another optional way to give the conversation useful context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try or inspect it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/app/id6760672848" rel="noopener noreferrer"&gt;https://apps.apple.com/app/id6760672848&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/apoorvdarshan/scowld" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/scowld&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Technical overview: &lt;a href="https://scowld.xyz/blog/ai-companion-that-can-see" rel="noopener noreferrer"&gt;https://scowld.xyz/blog/ai-companion-that-can-see&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scowld is available on iPhone and iPad and released under the MIT License.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ios</category>
      <category>mobile</category>
    </item>
    <item>
      <title>OpenAI quietly revealed Astra by solving 10 math problems that had been stuck for at least a decade.</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Sun, 02 Aug 2026 21:53:43 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/openai-quietly-revealed-astra-by-solving-10-math-problems-that-had-been-stuck-for-at-least-a-decade-k6o</link>
      <guid>https://dev.to/apoorvdarshan/openai-quietly-revealed-astra-by-solving-10-math-problems-that-had-been-stuck-for-at-least-a-decade-k6o</guid>
      <description>&lt;p&gt;OpenAI quietly revealed Astra by solving 10 math problems that had been stuck for at least a decade.&lt;br&gt;
Estimated cost: around $2,000. Wild.&lt;br&gt;
&lt;a href="https://apoorvdarshan.medium.com/openai-says-its-unreleased-astra-model-cracked-10-math-problems-for-2-000-2cbd5465bf3d" rel="noopener noreferrer"&gt;https://apoorvdarshan.medium.com/openai-says-its-unreleased-astra-model-cracked-10-math-problems-for-2-000-2cbd5465bf3d&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I built a true newest-first search for YouTube</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Mon, 27 Jul 2026 04:24:51 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/i-built-a-true-newest-first-search-for-youtube-42jp</link>
      <guid>https://dev.to/apoorvdarshan/i-built-a-true-newest-first-search-for-youtube-42jp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi8ix0j16kpbwfmzpe7rq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi8ix0j16kpbwfmzpe7rq.png" alt="Newest for YouTube extension settings" width="362" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;YouTube search is useful for discovery, but getting one clean chronological list of matching videos is still awkward. So I built &lt;strong&gt;Newest for YouTube&lt;/strong&gt;, a small open-source Chrome extension that requests public results through the YouTube Data API v3 with &lt;code&gt;type=video&lt;/code&gt; and &lt;code&gt;order=date&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reads the query from a YouTube search-results page&lt;/li&gt;
&lt;li&gt;Requests up to 50 matching public videos ordered newest first&lt;/li&gt;
&lt;li&gt;Renders them as familiar YouTube-style result cards&lt;/li&gt;
&lt;li&gt;Keeps the user-provided API key in local Chrome extension storage&lt;/li&gt;
&lt;li&gt;Uses no backend, analytics, or developer-operated data collection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Running it
&lt;/h2&gt;

&lt;p&gt;Clone the repository, load the folder as an unpacked extension from &lt;code&gt;chrome://extensions&lt;/code&gt;, enable YouTube Data API v3 in your own Google Cloud project, and save your API key from the extension popup.&lt;/p&gt;

&lt;p&gt;It is deliberately a bring-your-own-key, local-first utility rather than a hosted service. YouTube API quota limits still apply.&lt;/p&gt;

&lt;p&gt;The code is MIT licensed and available here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/apoorvdarshan/newest-youtube-search" rel="noopener noreferrer"&gt;View Newest for YouTube on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an independent project and is not affiliated with or endorsed by Google or YouTube.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GPT-5.6 Sol Built a Mechanical Heart Reactor in Blender</title>
      <dc:creator>Apoorv Darshan</dc:creator>
      <pubDate>Mon, 27 Jul 2026 00:46:26 +0000</pubDate>
      <link>https://dev.to/apoorvdarshan/gpt-56-sol-built-a-mechanical-heart-reactor-in-blender-d1</link>
      <guid>https://dev.to/apoorvdarshan/gpt-56-sol-built-a-mechanical-heart-reactor-in-blender-d1</guid>
      <description>&lt;p&gt;I asked GPT-5.6 Sol in Codex to build &lt;strong&gt;MACHINA CORDIS&lt;/strong&gt;: a fully editable, animated mechanical heart reactor generated procedurally in Blender.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/lZIbs-eiEsE" rel="noopener noreferrer"&gt;https://youtu.be/lZIbs-eiEsE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The finished scene contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;557 scene objects&lt;/li&gt;
&lt;li&gt;102 independently animated objects&lt;/li&gt;
&lt;li&gt;Seven clearly named collections&lt;/li&gt;
&lt;li&gt;Procedural materials and Eevee lighting&lt;/li&gt;
&lt;li&gt;No external textures, linked libraries, or physics simulations&lt;/li&gt;
&lt;li&gt;Four synchronized mechanical heartbeats across frames 1–144&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The animation combines titanium ventricles, linear pulse actuators, iris valves, timing gears, hydraulic manifolds, vascular conduits, telemetry hardware, and a live hemodynamics display.&lt;/p&gt;

&lt;p&gt;The complete &lt;code&gt;.blend&lt;/code&gt; file and the Python scripts that generate and render the scene are available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/apoorvdarshan/machina-cordis" rel="noopener noreferrer"&gt;https://github.com/apoorvdarshan/machina-cordis&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
