<?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: Sean</title>
    <description>The latest articles on DEV Community by Sean (@virerra).</description>
    <link>https://dev.to/virerra</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%2F4001236%2F6af40a62-5dc8-4675-99b0-b9dc2e244108.jpg</url>
      <title>DEV Community: Sean</title>
      <link>https://dev.to/virerra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/virerra"/>
    <language>en</language>
    <item>
      <title>I built a pre-run cost simulator for agentic loops — 13 models, zero API calls, works offline</title>
      <dc:creator>Sean</dc:creator>
      <pubDate>Sat, 27 Jun 2026 08:56:32 +0000</pubDate>
      <link>https://dev.to/virerra/i-built-a-pre-run-cost-simulator-for-agentic-loops-13-models-zero-api-calls-works-offline-5c2p</link>
      <guid>https://dev.to/virerra/i-built-a-pre-run-cost-simulator-for-agentic-loops-13-models-zero-api-calls-works-offline-5c2p</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Agentic loops compound costs in ways that aren't &lt;br&gt;
obvious until the bill arrives.&lt;/p&gt;

&lt;p&gt;Iteration 1: $0.19. Iteration 30: $2.48. Same &lt;br&gt;
agent, same task — the model re-reads full context &lt;br&gt;
on every turn. By iteration 20 you're paying for &lt;br&gt;
the same context 20 times over.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;LoopLens is a pre-run cost simulator. Configure &lt;br&gt;
your loop before you run it and get a full &lt;br&gt;
per-iteration breakdown.&lt;/p&gt;

&lt;p&gt;What it models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4 context accumulation strategies (full, sliding 
window, summarization, stateless)&lt;/li&gt;
&lt;li&gt;Tool call overhead (web search, code execution, 
RAG, browser, external API)&lt;/li&gt;
&lt;li&gt;Multi-agent fan-out (orchestrator + N subagents)&lt;/li&gt;
&lt;li&gt;Prompt caching break-even analysis&lt;/li&gt;
&lt;li&gt;13 models across Anthropic, OpenAI, Google, 
DeepSeek — compared side by side&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real numbers from a test configuration
&lt;/h2&gt;

&lt;p&gt;30 iterations · Claude Sonnet 4.6 · 4 parallel &lt;br&gt;
subagents · web search + code execution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total: $39.96&lt;/li&gt;
&lt;li&gt;Same loop on DeepSeek V4 Flash: $1.85 (95% less)&lt;/li&gt;
&lt;li&gt;Caching break-even: 1 run, $23.33/month saved&lt;/li&gt;
&lt;li&gt;Sliding window vs full accumulation: 85% savings&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Pure deterministic math — zero API calls, works &lt;br&gt;
completely offline. Prices pulled live from the &lt;br&gt;
LiteLLM community pricing JSON on page load, &lt;br&gt;
session-cached 6 hours, hardcoded fallback updated &lt;br&gt;
weekly via GitHub Actions. Status badge shows &lt;br&gt;
which layer is active.&lt;/p&gt;

&lt;p&gt;The gap: every other cost tool (Langfuse, Helicone, &lt;br&gt;
Braintrust, Bifrost, W&amp;amp;B) is post-hoc observability. &lt;br&gt;
LoopLens is the only pre-run simulator I'm aware of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Live: looplens-project.vercel.app&lt;br&gt;
Source: github.com/Virerra/looplens&lt;br&gt;
License: MIT&lt;/p&gt;

&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%2Fajxy0amgycd6qqwb0iqo.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%2Fajxy0amgycd6qqwb0iqo.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2F7g9gvl2kd6pwj6pv12d6.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%2F7g9gvl2kd6pwj6pv12d6.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2Frg34m2goqh12wh53wgmc.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%2Frg34m2goqh12wh53wgmc.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2F6po152pj49zsm9lp5769.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%2F6po152pj49zsm9lp5769.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2F0f868830hhxnbzzqokjx.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%2F0f868830hhxnbzzqokjx.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2Fhp35aitlpb38t3divq8v.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%2Fhp35aitlpb38t3divq8v.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I built a four-view visual workspace with no external UI libraries and a 60fps drag system</title>
      <dc:creator>Sean</dc:creator>
      <pubDate>Fri, 26 Jun 2026 14:22:52 +0000</pubDate>
      <link>https://dev.to/virerra/i-built-a-four-view-visual-workspace-with-no-external-ui-libraries-and-a-60fps-drag-system-3761</link>
      <guid>https://dev.to/virerra/i-built-a-four-view-visual-workspace-with-no-external-ui-libraries-and-a-60fps-drag-system-3761</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Every workspace forces one paradigm. Singularity &lt;br&gt;
lets you view the same dataset as a node graph, &lt;br&gt;
kanban board, timeline, and table — simultaneously, &lt;br&gt;
all in sync.&lt;/p&gt;

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

&lt;p&gt;Six node types (Note, Task, Character, Event, &lt;br&gt;
Research, Location) with labeled directed connections. &lt;br&gt;
Four views of the same data. Change one, update all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Engineering decisions
&lt;/h2&gt;

&lt;p&gt;No external UI libraries. Every node, edge, panel, &lt;br&gt;
modal, kanban column, timeline row, and table cell &lt;br&gt;
is hand-crafted with inline styles and a shared &lt;br&gt;
design token object.&lt;/p&gt;

&lt;p&gt;60fps drag system using requestAnimationFrame with &lt;br&gt;
pointer capture — no React re-renders on every &lt;br&gt;
pointer move event.&lt;/p&gt;

&lt;p&gt;Unique IDs via uid(prefix) combining Date.now() and &lt;br&gt;
a monotonic counter — no external library.&lt;/p&gt;

&lt;p&gt;Everything in localStorage. No backend, no cloud, &lt;br&gt;
no accounts. Works offline. Ships as a Windows &lt;br&gt;
desktop app via Electron + electron-builder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Live: singularity-workspace.vercel.app&lt;br&gt;
Source: github.com/Virerra/singularity&lt;br&gt;
License: MIT&lt;br&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%2Fc476yuyq8jrrrnervdhz.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%2Fc476yuyq8jrrrnervdhz.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2F2qdpqerltf2sx62g8ihm.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%2F2qdpqerltf2sx62g8ihm.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2F7sml4g20bedk68tx4f2u.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%2F7sml4g20bedk68tx4f2u.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&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%2Fv3yx0hbuv8ksloitmzxz.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%2Fv3yx0hbuv8ksloitmzxz.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I built a free, client-side fact-checker using Claude — BYOK, no backend, four structured checks</title>
      <dc:creator>Sean</dc:creator>
      <pubDate>Thu, 25 Jun 2026 10:37:31 +0000</pubDate>
      <link>https://dev.to/virerra/i-built-a-free-client-side-fact-checker-using-claude-byok-no-backend-four-structured-checks-15f6</link>
      <guid>https://dev.to/virerra/i-built-a-free-client-side-fact-checker-using-claude-byok-no-backend-four-structured-checks-15f6</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Most fact-checking tools give you a verdict without explaining the reasoning. That's not useful long-term — users get an answer but no framework for thinking about the next headline themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;Reality Check runs four independent checks on any headline using Claude with live web search:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source Check&lt;/strong&gt; — who created this, is the source credible?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence Check&lt;/strong&gt; — what evidence supports the claim, can it be verified?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context Check&lt;/strong&gt; — is this recent and in its original context?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emotional Check&lt;/strong&gt; — is the framing designed to manipulate rather than inform?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each check returns a verdict and reasoning. An overall credibility score from 0–100 summarizes the full picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Fully client-side. No backend server. No database. No serverless functions operated by me.&lt;/p&gt;

&lt;p&gt;BYOK — users supply their own Anthropic API key. It lives only in React component state, never written to localStorage or cookies. Cleared on page close. API calls go browser → api.anthropic.com directly using the &lt;code&gt;anthropic-dangerous-direct-browser-access&lt;/code&gt; header.&lt;/p&gt;

&lt;p&gt;Stack: React 18 + Vite, Tailwind CSS, &lt;code&gt;claude-sonnet-4-6&lt;/code&gt; with the &lt;code&gt;web_search_20250305&lt;/code&gt; tool (capped at 2 searches per analysis).&lt;/p&gt;

&lt;h2&gt;
  
  
  Live example
&lt;/h2&gt;

&lt;p&gt;Tested on: &lt;em&gt;"Senate Passes Resolution Directing Trump to End Hostilities With Iran"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Score: 88/100 — Likely Reliable. Source and Evidence both Looks OK (confirmed by NBC, CBS, NPR, PBS, ABC, AP). Context and Emotional flagged as Use Caution — the word "Directs" implies legal compulsion but the resolution is actually symbolic and non-binding. Concept Spotlight: Clickbait.&lt;/p&gt;

&lt;p&gt;Technically accurate. Deliberately misleading framing. The tool catches the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Live: &lt;a href="https://realitycheck-project.vercel.app" rel="noopener noreferrer"&gt;https://realitycheck-project.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/Virerra/reality-check" rel="noopener noreferrer"&gt;https://github.com/Virerra/reality-check&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;License: MIT&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
