<?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: Kanishq Sharma</title>
    <description>The latest articles on DEV Community by Kanishq Sharma (@damnbrocrazy).</description>
    <link>https://dev.to/damnbrocrazy</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%2F4146706%2F134c7849-8ee6-47c0-b7c0-bdbcdc88c1ef.png</url>
      <title>DEV Community: Kanishq Sharma</title>
      <link>https://dev.to/damnbrocrazy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/damnbrocrazy"/>
    <language>en</language>
    <item>
      <title>Listening Loop: three stops, six seconds, and an open model that stays on your phone</title>
      <dc:creator>Kanishq Sharma</dc:creator>
      <pubDate>Tue, 06 Oct 2026 12:27:52 +0000</pubDate>
      <link>https://dev.to/damnbrocrazy/listening-loop-three-stops-six-seconds-and-an-open-model-that-stays-on-your-phone-4fee</link>
      <guid>https://dev.to/damnbrocrazy/listening-loop-three-stops-six-seconds-and-an-open-model-that-stays-on-your-phone-4fee</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Listening Loop is a field notebook for your ears: choose three places to pause, record six seconds at each, and write down what you actually noticed. An open audio model suggests sounds, then the app asks you to put the phone away and walk somewhere different.&lt;/p&gt;

&lt;p&gt;The design question was: how little screen time does a useful AI walking app need? I chose a short loop with no map, score, streak or infinite feed. A doorway, a green corner and the way home are enough. You can adapt those stops to your neighbourhood and mobility.&lt;/p&gt;

&lt;p&gt;The model can help you notice a sound you would otherwise pass by. It cannot tell you whether a route is safe, identify a bird species or replace your own observations. The journal deliberately asks: &lt;strong&gt;What did you actually notice?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://damnbrocrazy-svg.github.io/listening-loop/" rel="noopener noreferrer"&gt;Open Listening Loop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press &lt;strong&gt;Prepare for a walk&lt;/strong&gt; while online. Wait for the offline-readiness message; then the app and its model can run without a connection. The initial download is about 19 MB.&lt;/p&gt;

&lt;p&gt;To try it at your desk, select &lt;strong&gt;Analyse example birdsong&lt;/strong&gt;. This uses Oona Räisänen's public-domain chaffinch recording from Finland, not a recording I made outdoors. It never adds a stop to your journal.&lt;/p&gt;

&lt;p&gt;For a walk, name your first stop and press &lt;strong&gt;Listen for 6 seconds&lt;/strong&gt;. Microphone permission is requested at that point. Add a note, move somewhere different, and repeat twice. The finished journal downloads as JSON. Remembering it on the device is optional.&lt;/p&gt;

&lt;p&gt;Imported audio is supported for testing and accessibility, but every imported stop is labelled as imported, not a verified outdoor observation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/damnbrocrazy-svg/listening-loop" rel="noopener noreferrer"&gt;Public repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original application code and SVG artwork are MIT licensed. Google YAMNet and TensorFlow.js retain Apache 2.0 licences. Source links, notices and model-file hashes are included. This project and repository were created on October 6, during the Week 1 window.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The core is &lt;a href="https://www.kaggle.com/models/google/yamnet/TfJs/tfjs/1" rel="noopener noreferrer"&gt;Google YAMNet&lt;/a&gt;, an open audio-event model with 521 labels, running through TensorFlow.js. The app averages stereo imports to mono, resamples to 16 kHz and averages the model's frame scores across a short clip. Broad Nature, People and City summaries use editable label groups.&lt;/p&gt;

&lt;p&gt;A label is a suggestion, not a certainty. YAMNet scores are not calibrated probabilities. Quiet audio, clipping and ambiguous results receive different prompts instead of a confident-sounding claim.&lt;/p&gt;

&lt;p&gt;The supplied birdsong gave a Bird score of approximately &lt;strong&gt;0.556&lt;/strong&gt; and a Nature summary. That number is a model score, not a 55.6% confidence estimate. Silence produced a Silence label and a warning that the moment was too faint.&lt;/p&gt;

&lt;p&gt;All model weights and the browser runtime are served as static files. A service worker caches a fixed list after successful preparation. There is no inference server, location request, analytics script or audio upload endpoint. Capture tracks are stopped after recording or cancellation; only notes, sources and model suggestions enter the journal.&lt;/p&gt;

&lt;p&gt;Validation includes &lt;strong&gt;eight unit tests and twelve Chromium integration checks&lt;/strong&gt;. The browser checks exercise the actual YAMNet model, permission denial, recording cancellation, a complete generated recording, invalid imports, silence, journal export, storage opt-in and forgetting, offline reload and a 390px layout. They also check for browser errors and network-upload requests.&lt;/p&gt;

&lt;p&gt;Two details mattered during testing: a cancelled capture must release its track, and an example result must never quietly become a claimed walk observation. The integration tests check both. Repeated inference also returned to the same persistent tensor count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; the microphone test uses a generated MediaStream. I have not completed an outdoor, physical-phone or Safari trial, so I am not claiming one. Browser storage can be evicted, and overlapping outdoor sounds may confuse the model. Those are the next practical checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;A walk should keep working when the signal disappears. Having distributable model weights made offline inference possible without an API key or subscription. It also means a person's six seconds of sound do not need to leave their device.&lt;/p&gt;

&lt;p&gt;The open implementation lets someone inspect the input processing, change the sound groups, adjust uncertainty thresholds or replace the model. They can run this static app on their own host. The tradeoff is a larger first download and work constrained by the device; that is visible in the preparation step rather than hidden behind a server call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Process and Attribution
&lt;/h2&gt;

&lt;p&gt;The implementation, documentation, tests and this write-up were generated by Codex under my instructions. DEV's AI disclosure is set to Fully Autonomous. I did not train YAMNet or collect the example recording. The test results are software evidence, not a claim of a human field trial.&lt;/p&gt;

&lt;p&gt;Model: &lt;a href="https://github.com/tensorflow/models/tree/master/research/audioset/yamnet" rel="noopener noreferrer"&gt;Google YAMNet&lt;/a&gt;. Runtime: &lt;a href="https://github.com/tensorflow/tfjs" rel="noopener noreferrer"&gt;TensorFlow.js&lt;/a&gt;. Example audio: &lt;a href="https://commons.wikimedia.org/wiki/File:Fringilla_coelebs.ogg" rel="noopener noreferrer"&gt;Oona Räisänen, Fringilla coelebs, 2007&lt;/a&gt;. Full notices are in the repository.&lt;/p&gt;

&lt;p&gt;For this entry I am entering the overall challenge; I am not claiming a partner-technology category.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Foley Field Notes: a tin box, an entire train</title>
      <dc:creator>Kanishq Sharma</dc:creator>
      <pubDate>Mon, 28 Sep 2026 09:49:08 +0000</pubDate>
      <link>https://dev.to/damnbrocrazy/foley-field-notes-a-tin-box-an-entire-train-2i8h</link>
      <guid>https://dev.to/damnbrocrazy/foley-field-notes-a-tin-box-an-entire-train-2i8h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge, Path Two: Vibe-Code Something Strange&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Foley Field Notes&lt;/strong&gt; is a tiny imaginary sound studio. A tin box becomes a train; a cup becomes a bell; tracing paper becomes rain.&lt;/p&gt;

&lt;p&gt;Pick a sound recipe, arrange its entrance in a scene, adjust its level, and download the result as a real WAV file. The sounds are synthesized in the browser. They are interpretations of everyday materials, not recordings of those materials.&lt;/p&gt;

&lt;p&gt;The interesting part is what lives in Sanity. A recipe contains the instructions that make its sound: noise or tone layers, frequencies, attack, decay, gain and pulse count. A scene references those recipes with start times and levels. Content is doing something audible here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://damnbrocrazy-svg.github.io/foley-field-notes/" rel="noopener noreferrer"&gt;Open Foley Field Notes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No login or microphone permission is needed for the player. A quick route through it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Listen to &lt;strong&gt;Paper rain&lt;/strong&gt; and &lt;strong&gt;Pocket train&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;The last train is a tin box&lt;/strong&gt; from the scene selector.&lt;/li&gt;
&lt;li&gt;Move the cup bell's entrance, change a cue's level, and play the scene.&lt;/li&gt;
&lt;li&gt;Download the WAV. The arrangement stays in your current tab.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The editor is separate and requires Sanity project membership. Judges can use the public player and inspect the project ID/schema below; no editor credentials are published.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/damnbrocrazy-svg/foley-field-notes" rel="noopener noreferrer"&gt;Source, tests and build notes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application is MIT licensed. The original sound recipes use deterministic synthesis rather than stock audio, so the repository includes the entire sound-generation path.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Build Process
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; this was an autonomous AI-assisted build using Codex under my direction. Codex implemented and tested the application and helped write this account. I am not claiming I manually wrote every line or personally performed subjective listening tests.&lt;/p&gt;

&lt;p&gt;The brief used in the build was to make a small, unusual app where structured content materially changes the experience, with a working Astro frontend and no paid runtime AI API. The resulting scope was six sound recipes, two starter scenes, an editable cue sheet and WAV export.&lt;/p&gt;

&lt;h3&gt;
  
  
  The schema came before the cards
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;soundRecipe&lt;/code&gt; describes a material, a gesture, the synthesis layers and a duration. &lt;code&gt;soundScene&lt;/code&gt; contains cue objects with references to recipes. A reused recipe is one document, not a copied block in each scene.&lt;/p&gt;

&lt;p&gt;This choice is easy to see in the app: change a recipe's synthesis parameters in the editor, approve and publish it, then refresh the public collection. Every scene referencing it uses the new sound.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approval had to describe the current content
&lt;/h3&gt;

&lt;p&gt;A status field alone would allow a recipe to be approved and then silently changed. The workflow therefore stores a signature of the approved content. An edit makes that signature stale.&lt;/p&gt;

&lt;p&gt;The Studio actions are &lt;strong&gt;Request review&lt;/strong&gt;, &lt;strong&gt;Approve for playback&lt;/strong&gt;, and &lt;strong&gt;Return to draft&lt;/strong&gt;. The publish action stays disabled until the current recipe matches its approval. Workflow patches use revision checks so a concurrent edit cannot be silently overwritten. The frontend checks approval too.&lt;/p&gt;

&lt;p&gt;This is an editorial workflow for trusted project members, not an administrator-proof permission system. The starting collection explicitly names its reviewer as &lt;strong&gt;Demonstration seed (automated)&lt;/strong&gt;; it does not imply human approval.&lt;/p&gt;

&lt;h3&gt;
  
  
  A few things needed correction
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The first test invocation failed before executing because the local environment could not spawn a child process. Running the same Node tests without process isolation fixed the runner issue without weakening the assertions.&lt;/li&gt;
&lt;li&gt;The volume control initially affected the next playback only. Review caught that mismatch; it now changes the active gain node as well.&lt;/li&gt;
&lt;li&gt;The initial Studio build command used an unsupported output flag. The current positional-output command built successfully.&lt;/li&gt;
&lt;li&gt;The first upload draft flattened nested file paths. It was discarded before committing, and the saved repository was checked for the proper &lt;code&gt;src&lt;/code&gt;, &lt;code&gt;tests&lt;/code&gt; and &lt;code&gt;docs&lt;/code&gt; directories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What was verified
&lt;/h3&gt;

&lt;p&gt;Eleven automated tests passed for deterministic sound generation, non-silence, finite/bounded samples, cue timing, overlapping-cue normalization, WAV headers, invalid input and approval invalidation.&lt;/p&gt;

&lt;p&gt;Browser checks exercised the actual public Sanity data, recipe selection, scene presets, cue editing, playback start/stop, WAV download and the empty state. Layout checks found no horizontal overflow at 320, 393, 768 and 1440 pixels in Chromium.&lt;/p&gt;

&lt;p&gt;Four additional live Studio checks used a temporary unpublished document: a draft could not publish, requesting review enabled approval, approval enabled publication, and a title edit disabled publication again. The temporary draft was then removed.&lt;/p&gt;

&lt;p&gt;The fallback is intentionally visible. If the initial content request fails, the player says &lt;strong&gt;Offline demonstration&lt;/strong&gt; and loads its bundled sample pack. That is not reported as a successful Sanity connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where I stopped
&lt;/h3&gt;

&lt;p&gt;There is no runtime LLM, App SDK integration or automatic realtime refresh. The frontend uses an explicit &lt;strong&gt;Refresh collection&lt;/strong&gt; control. Public users arrange sounds locally; they cannot write into the shared dataset. The tests do not establish subjective sound quality or compatibility with every physical device or assistive technology.&lt;/p&gt;

&lt;p&gt;That left room to finish a small app whose structured content, review state and generated output all have a clear purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity Project Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project ID:&lt;/strong&gt; &lt;code&gt;vkj2ioma&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dataset:&lt;/strong&gt; &lt;code&gt;production&lt;/code&gt; (public)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document types:&lt;/strong&gt; &lt;code&gt;soundRecipe&lt;/code&gt;, &lt;code&gt;soundScene&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nested types:&lt;/strong&gt; &lt;code&gt;soundLayer&lt;/code&gt;, &lt;code&gt;sceneCue&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Astro, with Sanity Studio for authoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/damnbrocrazy-svg/foley-field-notes/blob/main/sanity.config.ts" rel="noopener noreferrer"&gt;Inspect the schema&lt;/a&gt; or &lt;a href="https://github.com/damnbrocrazy-svg/foley-field-notes/blob/main/BUILD_NOTES.md" rel="noopener noreferrer"&gt;read the build notes&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>sanitychallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
      <category>sanity</category>
    </item>
  </channel>
</rss>
