<?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: Dev Rajput</title>
    <description>The latest articles on DEV Community by Dev Rajput (@dev_rajput_2d46f92f8a3418).</description>
    <link>https://dev.to/dev_rajput_2d46f92f8a3418</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%2F3871240%2Fe734eb98-46c3-4cea-b6da-29e0680a10f8.jpg</url>
      <title>DEV Community: Dev Rajput</title>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev_rajput_2d46f92f8a3418"/>
    <language>en</language>
    <item>
      <title>Soul in Motion — 9:35 PM | 2026-09-02</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Wed, 02 Sep 2026 16:26:31 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-935-pm-2026-09-02-2jh3</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-935-pm-2026-09-02-2jh3</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wake‑word detection is the hardest part of a voice assistant; reliability hinges on low‑latency, low‑power listening.&lt;/li&gt;
&lt;li&gt;Inconsistent request latency usually signals hidden state corruption or resource contention—debugging requires state snapshots and profiling.&lt;/li&gt;
&lt;li&gt;Incremental “small‑fix” work on core logic (e.g., edge‑case handling, retry loops) compounds into a noticeably smoother system over weeks.&lt;/li&gt;
&lt;li&gt;Balancing heavy‑lifting (wake‑word) with lighter tasks (content editing, environment setup) keeps the day productive and prevents burnout.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Building Friday‑Phone
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Listening Problem
&lt;/h3&gt;

&lt;p&gt;The first thing I tackled was the &lt;strong&gt;Friday‑Phone&lt;/strong&gt; wake‑word detector. In a voice assistant, the listening thread is the gatekeeper: if it never hears its own name, nothing downstream runs. The code lives in a tight, low‑latency loop that pulls audio frames from the microphone, feeds them through a lightweight neural network, and emits a trigger event when the confidence score crosses a threshold.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;THRESHOLD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;trigger_event&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The problem I hit was &lt;em&gt;inconsistent latency&lt;/em&gt;. One request would fire in a few milliseconds, the next would stall for an indeterminate amount of time. There was no obvious exception, just a silent slowdown. In practice, this is how real systems behave: they don’t throw clean errors; they just become slower or produce odd outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diagnosing the Slowdown
&lt;/h3&gt;

&lt;p&gt;The first step was to capture a timeline of the thread’s state. I added a simple profiler that logs timestamps for each stage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;t0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;monotonic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;monotonic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;t2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;monotonic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;THRESHOLD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;trigger_event&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;t3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;monotonic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;read:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t0&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;s predict:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;s total:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;t3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t0&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;s&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The logs revealed that the &lt;code&gt;predict&lt;/code&gt; call was the culprit on the slow runs. The model was a small TensorFlow Lite graph, but the CPU was being throttled by other background processes (e.g., a nightly backup script). Switching to a dedicated CPU core and pinning the process resolved the issue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pin the process to core 3&lt;/span&gt;
taskset &lt;span class="nt"&gt;-c&lt;/span&gt; 3 ./friday-phone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that tweak, the latency stabilized around 15 ms per request, which is acceptable for a wake‑word detector.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project C – Incremental Core Logic
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The “Forty Small Things” Mindset
&lt;/h3&gt;

&lt;p&gt;Later in the day I moved to &lt;strong&gt;Project C&lt;/strong&gt;, the assistant’s core logic. This isn’t about solving a single hard problem; it’s about tightening dozens of edge cases that slip through in production. The changes I made were tiny: adding a retry guard for a flaky API, normalizing user input before passing it to the LLM, and tightening the timeout on a database query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;safe_api_call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;external_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;TimeoutError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API unreachable&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each tweak is a &lt;em&gt;micro‑optimization&lt;/em&gt; that, when compounded, reduces the overall error rate. Over weeks, the assistant feels more responsive and less prone to “I don’t understand” responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Debugging the Assistant
&lt;/h3&gt;

&lt;p&gt;A recurring issue was the assistant occasionally returning a stale response. I introduced a simple cache invalidation strategy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;cache&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;expired&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CacheEntry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ttl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, if the same query is repeated within a minute, the assistant serves the cached answer, cutting down on latency and avoiding repeated LLM calls.&lt;/p&gt;




&lt;h2&gt;
  
  
  Side Projects &amp;amp; Mental Reset
&lt;/h2&gt;

&lt;p&gt;After the heavy lifting, I switched gears to &lt;strong&gt;Kathaverse&lt;/strong&gt;: thumbnail generation, reading, and light editing. These tasks are low‑cognitive‑load but keep the workflow moving. I also set up a minimal environment for a new project, but let it sit while I focused on the urgent tasks.&lt;/p&gt;

&lt;p&gt;The afternoon also included a brief detour to a &lt;strong&gt;Hoyoverse&lt;/strong&gt; trailer at Gamescom. A two‑minute clip that reset my focus and reminded me that I’m still a kid who loves games. These little breaks are essential for maintaining a creative spark.&lt;/p&gt;




&lt;h2&gt;
  
  
  End‑of‑Day Routine
&lt;/h2&gt;

&lt;p&gt;The day closed with a familiar rhythm: a long YouTube session of gaming clips and tech tutorials, a quick Instagram scroll, and an evening of VLC playback. Watching &lt;em&gt;Rick and Morty&lt;/em&gt; and &lt;em&gt;A Few Good Men&lt;/em&gt; provided a mental palate cleanser and, oddly enough, new lines that I hadn’t noticed before.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reflections &amp;amp; Next Steps
&lt;/h2&gt;

&lt;p&gt;Today wasn’t about a breakthrough; it was about persistence through friction. The wake‑word detector finally behaved, the core logic got a few more edge‑case fixes, and the side projects nudged forward. Some days feel like sprinting; today felt more like sanding—one pass at a time, trusting the surface will smooth out eventually.&lt;/p&gt;

&lt;p&gt;Tomorrow I’ll dive back into the wake‑word system, hoping the latency improvements hold under load. If all goes well, the Friday‑Phone will finally be the silent, reliable gatekeeper it was meant to be.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>Soul in Motion — 9:22 PM | 2026-09-01</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Tue, 01 Sep 2026 16:15:59 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-922-pm-2026-09-01-4jbm</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-922-pm-2026-09-01-4jbm</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Confirmed mail‑integration for voice recognition on Project C was running after repeated checks.&lt;/li&gt;
&lt;li&gt;Decided to build a personal assistant on the phone, focusing on NLU, voice recognition, and API stitching.&lt;/li&gt;
&lt;li&gt;Tightened wake‑word detection to avoid false positives in noisy environments.&lt;/li&gt;
&lt;li&gt;Documented decisions in Chronicle to avoid future reverse‑engineering.&lt;/li&gt;
&lt;li&gt;Ended the day with a successful end‑to‑end wake‑word test, reinforcing confidence in the system.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Daily Loop: From Doubt to Delivery
&lt;/h2&gt;

&lt;p&gt;The day started with a nagging question: &lt;em&gt;Is the mail‑integration for voice recognition on Project C actually working?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
I pinged the endpoint, watched the logs, and ran a quick integration test. Three different approaches—manual curl, automated test suite, and a live demo—all confirmed the service was up and stable. Yet the gap between &lt;em&gt;“it should work”&lt;/em&gt; and &lt;em&gt;“I’ve actually seen it work”&lt;/em&gt; lingered. That feeling of uncertainty is a developer’s silent partner; it pushes you to double‑check until the system behaves predictably.&lt;/p&gt;


&lt;h2&gt;
  
  
  Building a Personal Assistant
&lt;/h2&gt;

&lt;p&gt;The real pivot came when I said out loud, &lt;em&gt;“I want my own assistant, not a generic Google bot.”&lt;/em&gt;&lt;br&gt;&lt;br&gt;
The answer was simple: &lt;strong&gt;you can build it&lt;/strong&gt;. The stack is a mix of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Natural‑Language Understanding&lt;/strong&gt; – a lightweight intent classifier trained on my own voice data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Recognition&lt;/strong&gt; – a custom wake‑word model tuned to my accent and environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Stitching&lt;/strong&gt; – a micro‑service layer that routes intents to the appropriate external services (email, calendar, weather, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I sketched the architecture in a quick diagram (not shown here) and started wiring the components. The key takeaway: &lt;em&gt;the “now” idea is only a few commits away from a working prototype.&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Chronicle: Documenting Decisions
&lt;/h2&gt;

&lt;p&gt;Between coding sessions I opened Chronicle to log the rationale behind each design choice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Wake‑word threshold set to 0.85 to reduce false positives.
&lt;span class="p"&gt;-&lt;/span&gt; Email API uses OAuth2 with a short‑lived refresh token.
&lt;span class="p"&gt;-&lt;/span&gt; Intent classifier trained on 200 labeled utterances.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These notes feel unglamorous, but they save future‑me from re‑implementing logic that was already decided. In the long run, a well‑maintained Chronicle is a developer’s safety net.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tightening Wake‑Word Detection
&lt;/h2&gt;

&lt;p&gt;Wake‑word detection is the &lt;em&gt;anchor&lt;/em&gt; of any voice assistant. It has to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Listen&lt;/strong&gt; for a single phrase in a noisy background.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trigger&lt;/strong&gt; the assistant without lag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid&lt;/strong&gt; false positives that waste battery and annoy the user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I iterated on the model by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collecting ambient noise samples from my office.&lt;/li&gt;
&lt;li&gt;Fine‑tuning the acoustic model with those samples.&lt;/li&gt;
&lt;li&gt;Running a 24‑hour test loop to catch edge cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result? The wake‑word now responds cleanly to &lt;em&gt;“Hey Friday”&lt;/em&gt; even with a coffee machine humming in the background.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reflecting on Responsible AI
&lt;/h2&gt;

&lt;p&gt;A quick detour: I read Eightfold.ai’s take on responsible AI in hiring. The principles—fairness, transparency, accountability—apply equally to a personal assistant. Building something that &lt;em&gt;people can trust&lt;/em&gt; means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data privacy&lt;/strong&gt;: store voice data locally whenever possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability&lt;/strong&gt;: log intent decisions so I can audit them later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bias mitigation&lt;/strong&gt;: test the assistant across different accents and dialects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These considerations shaped how I designed the intent classifier and how I handle user data.&lt;/p&gt;




&lt;h2&gt;
  
  
  End‑to‑End Wake‑Word Test
&lt;/h2&gt;

&lt;p&gt;The day closed with a full test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Start the wake‑word service&lt;/span&gt;
./start_wake_word.sh

&lt;span class="c"&gt;# Simulate a user saying the phrase&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hey Friday"&lt;/span&gt; | ./simulate_speech.sh

&lt;span class="c"&gt;# Verify the assistant triggers&lt;/span&gt;
curl http://localhost:8080/assistant/trigger
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output was clean: the assistant activated, logged the trigger, and queued the next action. No crashes, no false alarms. A quiet confirmation that the pieces I built earlier are holding together.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Building Friday Looks Like
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hundreds of tiny “yes, that works now” moments&lt;/strong&gt; stack into a reliable system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Patient, iterative work&lt;/strong&gt; beats overnight miracles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt; turns fleeting insights into reusable knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tomorrow, I’ll keep refining the wake‑word model, add more intents, and continue documenting every step. The goal is simple: a personal assistant that feels like having someone in my corner.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Soul in Motion — 1:43 PM | 2026-08-31</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Mon, 31 Aug 2026 08:34:56 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-143-pm-2026-08-31-mh5</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-143-pm-2026-08-31-mh5</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Identified a privacy issue from user feedback and dug into the root cause.&lt;/li&gt;
&lt;li&gt;Implemented tighter data handling and clearer UI cues to improve trust.&lt;/li&gt;
&lt;li&gt;Balanced rapid fixes with deeper analysis of pacing in a popular show.&lt;/li&gt;
&lt;li&gt;Kept the day productive with routine bookkeeping and incremental improvements.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Day in a Nutshell
&lt;/h2&gt;

&lt;p&gt;I started the morning after someone flagged a privacy concern that had surfaced in a recent session. It wasn’t a catastrophic bug—just a subtle lapse that could erode user trust. The real challenge was turning that complaint into a systemic improvement.&lt;/p&gt;

&lt;h3&gt;
  
  
  From Feedback to Insight
&lt;/h3&gt;

&lt;p&gt;I pulled the user’s comment and a handful of similar notes from our issue tracker. The goal was to separate the surface complaint from the underlying pattern. In practice that meant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mapping the data flow&lt;/strong&gt;: Where was the personal information captured, stored, and transmitted?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identifying the weakest link&lt;/strong&gt;: Was it an accidental data leak, an ambiguous consent prompt, or a missing encryption step?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern that emerged was a lack of explicit consent and weak encryption on a few endpoints that handled user profiles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Concrete Fixes
&lt;/h3&gt;

&lt;p&gt;By midday I had a concrete plan:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Minimization&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strip unnecessary fields from the &lt;code&gt;User&lt;/code&gt; model before persisting.
&lt;/li&gt;
&lt;li&gt;Use a &lt;code&gt;SELECT&lt;/code&gt; projection to fetch only what the UI needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Encryption at Rest&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;   &lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;
   &lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;encrypted_email&lt;/span&gt; &lt;span class="nb"&gt;VARBINARY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;encrypted_email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AES_ENCRYPT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;encryption_key&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clear Privacy Cues&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Updated the consent modal to use plain language and a single “Agree” button.
&lt;/li&gt;
&lt;li&gt;Added a tooltip on the profile edit page explaining why each field is required.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These changes were low‑impact but high‑value: no new features, just a tighter grip on personal data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lunch &amp;amp; Reflection
&lt;/h3&gt;

&lt;p&gt;I ate lunch while watching the Test match between Australia and Bangladesh. A multi‑day cricket game feels oddly grounding when you’re knee‑deep in code. It reminded me that some problems—like pacing in a show—are just as much about rhythm as they are about content.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Afternoon Dive
&lt;/h3&gt;

&lt;p&gt;Later, I got sidetracked by a question that had been nagging me: why does the first season of a highly‑rated show feel sluggish? I spent a few hours watching episodes, noting pacing, episode length, and narrative structure. It turned out to be a pacing issue rather than a lack of quality. I documented my observations and shared them with the content team for future reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Routine Bookkeeping
&lt;/h3&gt;

&lt;p&gt;I also tackled some bookkeeping: updating the sprint backlog, reconciling the budget spreadsheet, and reviewing the CI pipeline logs for any anomalies. These unglamorous tasks keep the project from derailing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evening Wrap‑Up
&lt;/h3&gt;

&lt;p&gt;By the end of the day, the privacy fix was merged, the UI cues were live, and the pacing notes were in the shared doc. No drama, just incremental progress toward a product that earns trust.&lt;/p&gt;




&lt;h2&gt;
  
  
  Technical Takeaways
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Privacy by Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Minimization&lt;/strong&gt;: Only collect what you need.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encryption&lt;/strong&gt;: Use AES‑256 for sensitive fields.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consent&lt;/strong&gt;: Explicit, granular, and revocable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Rapid Feedback Loops
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pull user feedback directly into your issue tracker.
&lt;/li&gt;
&lt;li&gt;Prioritize fixes that affect trust or security over cosmetic changes.
&lt;/li&gt;
&lt;li&gt;Deploy small, reversible changes to gauge impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Balancing Speed and Depth
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Quick fixes are essential, but don’t ignore deeper patterns.
&lt;/li&gt;
&lt;li&gt;Use the time between fixes to dig into root causes—whether it’s data handling or content pacing.
&lt;/li&gt;
&lt;li&gt;Document findings for future reference; knowledge is a hidden feature.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Today’s work was a reminder that the most valuable engineering effort often comes from listening to users and tightening the seams that hold their trust together. The next day will bring more feedback, more analysis, and more incremental steps toward a product that feels safe and reliable.&lt;/p&gt;

&lt;p&gt;Stay tuned.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>security</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Soul in Motion — 2:05 PM | 2026-08-29</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Sat, 29 Aug 2026 08:58:50 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-205-pm-2026-08-29-14oc</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-205-pm-2026-08-29-14oc</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Spent the day juggling six different codebases, each moving a few percent forward.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project C&lt;/strong&gt;: Design sprint turned into a new game feel; morning collaboration, afternoon sanity‑check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chronicle&lt;/strong&gt;: Focused on physics consistency in a 2D world—no new features, just trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Friday‑Phone&lt;/strong&gt;: Debugged voice‑pipeline bug, screenshot‑by‑screenshot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manifest&lt;/strong&gt;: Artistic alignment of crisis events and launch‑site sequence; visual direction finally clicked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manifest‑Unreal&lt;/strong&gt;: Cross‑checked simulation core against browser build for parity.&lt;/li&gt;
&lt;li&gt;Wrapped up with minor work on &lt;strong&gt;Transformed&lt;/strong&gt; and &lt;strong&gt;Tmp&lt;/strong&gt;; laid groundwork for future features.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Day in the Life of a Multi‑Project Builder
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Project C – The Never‑Ending Ladder
&lt;/h3&gt;

&lt;p&gt;The morning started with a design call for &lt;strong&gt;Project C&lt;/strong&gt;. A friend sent over a rough idea for the game’s feel, and the conversation quickly turned into an &lt;em&gt;argument‑as‑collaboration&lt;/em&gt;. We debated pacing, control responsiveness, and the visual style until we landed on a concept that felt tighter than the last iteration. By lunch the scope had shifted just enough to keep the momentum going without derailing the sprint.&lt;/p&gt;

&lt;p&gt;After the design freeze, I spent the afternoon running sanity checks on the new assets and ensuring the ladder mechanics still behaved as expected. It’s the kind of work that feels invisible until something breaks, but it’s the foundation that keeps the rest of the project stable.&lt;/p&gt;




&lt;h3&gt;
  
  
  Chronicle – Precision Over Speed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Chronicle&lt;/strong&gt; is a 2D simulation that relies on accurate physics to feel believable. I dedicated a long stretch of the day to tightening the world’s behavior: collision detection, gravity scaling, and object interactions. No new features were added; the goal was to make the existing mechanics &lt;em&gt;trustworthy&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This kind of work is often overlooked, but a world that “holds together” is the difference between a fun experience and a chaotic mess. I ran a suite of regression tests and manually stepped through edge cases to confirm consistency.&lt;/p&gt;




&lt;h3&gt;
  
  
  Friday‑Phone – Debugging the Voice Pipeline
&lt;/h3&gt;

&lt;p&gt;In the afternoon, &lt;strong&gt;Friday‑Phone&lt;/strong&gt; demanded a different kind of patience. I chased a bug through the assistant’s voice pipeline, capturing screenshots at each stage to isolate the failure point. The process was incremental: tweak a parameter, re‑run, capture, compare. Each small step was a win, and eventually the voice output behaved as intended.&lt;/p&gt;




&lt;h3&gt;
  
  
  Manifest – Artistic Alignment
&lt;/h3&gt;

&lt;p&gt;The day’s next stop was &lt;strong&gt;Manifest&lt;/strong&gt;, where I focused on crisis events and the launch‑site sequence. The goal was to align the art direction with the narrative flow. I iterated on asset placement, timing, and visual cues until the system finally looked like the vision I’d imagined weeks ago. Seeing the art direction click into place was a relief that reminded me why the creative side matters as much as the code.&lt;/p&gt;




&lt;h3&gt;
  
  
  Manifest‑Unreal – Cross‑Platform Consistency
&lt;/h3&gt;

&lt;p&gt;Evening brought &lt;strong&gt;Manifest‑Unreal&lt;/strong&gt;, a cross‑checking exercise between the simulation core and its browser counterpart. I ran both builds side‑by‑side, comparing physics outputs, frame rates, and asset loading times. The meticulous work paid off: both builds now agree on key metrics, ensuring a consistent experience across platforms.&lt;/p&gt;




&lt;h3&gt;
  
  
  Transformed &amp;amp; Tmp – Laying Bricks for the Future
&lt;/h3&gt;

&lt;p&gt;I wrapped up the day with quick passes on &lt;strong&gt;Transformed&lt;/strong&gt; and &lt;strong&gt;Tmp&lt;/strong&gt;. These were not breakthrough moments but essential housekeeping: refactoring a few functions, tightening type annotations, and adding a couple of unit tests. Small, incremental work that keeps the codebase healthy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Side Notes &amp;amp; Reflections
&lt;/h2&gt;

&lt;p&gt;Between the code, I let my mind wander a bit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Netflix&lt;/strong&gt;: A quick break with &lt;em&gt;Rocket Singh&lt;/em&gt;—a grounded, funny sci‑fi that was a nice left turn from my usual diet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT &amp;amp; VS Code&lt;/strong&gt;: Tinkered with a fresh Visual Studio install and experimented with ChatGPT prompts to see how it could aid my workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eli’s Live Build&lt;/strong&gt;: Checked in on Eli’s live build to see how she’s holding up in production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking back, the day wasn’t defined by a single big win. It was defined by momentum: six projects nudged forward, none finished, all a bit more real than they were in the morning. That’s the essence of building—just moving forward, one commit at a time.&lt;/p&gt;

&lt;p&gt;Onward to tomorrow.&lt;/p&gt;

</description>
      <category>indiehackers</category>
      <category>productivity</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Soul in Motion — 3:06 PM | 2026-08-27</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Thu, 27 Aug 2026 10:00:58 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-306-pm-2026-08-27-38mf</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-306-pm-2026-08-27-38mf</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Re‑engineered Horizon’s auth flow to be both secure and user‑friendly, adding graceful error handling for mistyped passwords, dropped connections, and double submissions.&lt;/li&gt;
&lt;li&gt;Experimented with a Rails‑based LLM that auto‑generates code from plain‑English descriptions; early results show promise but still need refinement.&lt;/li&gt;
&lt;li&gt;Audited Eli’s UX to eliminate friction points, enabling seamless re‑entry after breaks and reducing silent churn.&lt;/li&gt;
&lt;li&gt;Added six customizable “rooms” (light/dark, warm/quiet) to Eli, giving users contextual environments that influence comfort and engagement.&lt;/li&gt;
&lt;li&gt;The core mantra, &lt;em&gt;“Free AI can answer you. Eli is built to hold you.”&lt;/em&gt;, drives every design and implementation decision.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Re‑thinking Authentication in Horizon
&lt;/h2&gt;

&lt;p&gt;The first half of the day was all about the login flow. I had been iterating on Horizon’s authentication for weeks, each pass tightening security while shaving latency. The last iteration finally felt right: a single‑page login that validates credentials via a GraphQL mutation, then issues a short‑lived JWT and a refresh token stored in an HTTP‑only cookie.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graceful Failure
&lt;/h3&gt;

&lt;p&gt;What really mattered was the &lt;em&gt;experience&lt;/em&gt; when something went wrong. Instead of a generic “invalid credentials” page, I wrapped the mutation in a &lt;code&gt;try/catch&lt;/code&gt; block that catches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AuthenticationError&lt;/code&gt; – wrong password&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;NetworkError&lt;/code&gt; – dropped connection&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ValidationError&lt;/code&gt; – double submission&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each error maps to a specific, user‑friendly message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;handle_login_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;
  &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="no"&gt;AuthenticationError&lt;/span&gt;
    &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:alert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"That username or password doesn't match our records."&lt;/span&gt;
  &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="no"&gt;NetworkError&lt;/span&gt;
    &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:alert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Connection lost. Please check your internet and try again."&lt;/span&gt;
  &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="no"&gt;ValidationError&lt;/span&gt;
    &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:alert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"We detected a duplicate request. Please wait a moment."&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:alert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Something went wrong. Try again later."&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The messages are intentionally vague enough to avoid giving attackers hints, yet specific enough to guide legitimate users. I also added a debounce on the submit button to prevent double submissions at the UI level.&lt;/p&gt;

&lt;h3&gt;
  
  
  Invisible but Critical
&lt;/h3&gt;

&lt;p&gt;These changes are buried three layers deep: the GraphQL resolver, the Rails controller, and the front‑end component. No one sees them unless something breaks, but when they do, the system fails &lt;em&gt;kindly&lt;/em&gt;. That’s the kind of invisible kindness I like to build.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rails + LLM: Turning Sentences into Code
&lt;/h2&gt;

&lt;p&gt;After Horizon settled, I dove into a side project: a Rails app that uses an LLM to generate Ruby code from plain‑English prompts. The goal is to prototype a “code‑as‑service” layer that could one day power Eli’s dynamic room generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Engine&lt;/strong&gt; – a thin wrapper around OpenAI’s &lt;code&gt;gpt-4o-mini&lt;/code&gt; API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Validator&lt;/strong&gt; – runs the generated code through &lt;code&gt;rubocop&lt;/code&gt; and a unit‑test harness to catch syntax errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback Loop&lt;/strong&gt; – user corrections are fed back into the prompt to improve future generations.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Gemfile&lt;/span&gt;
gem &lt;span class="s1"&gt;'openai'&lt;/span&gt;, &lt;span class="s1"&gt;'~&amp;gt; 3.0'&lt;/span&gt;
gem &lt;span class="s1"&gt;'rubocop'&lt;/span&gt;, &lt;span class="s1"&gt;'~&amp;gt; 1.50'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CodeGenerator&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;OpenAI&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="ss"&gt;model: &lt;/span&gt;&lt;span class="s2"&gt;"gpt-4o-mini"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;messages: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;role: &lt;/span&gt;&lt;span class="s2"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;content: &lt;/span&gt;&lt;span class="s2"&gt;"You are a helpful Ruby developer."&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;role: &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;content: &lt;/span&gt;&lt;span class="vi"&gt;@prompt&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"choices"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RuboCop&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Runner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;([],&lt;/span&gt; &lt;span class="p"&gt;[]).&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;empty?&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Early Results
&lt;/h3&gt;

&lt;p&gt;The model sometimes produces a working snippet on the first try, especially for straightforward tasks like “create a Rails migration for a users table.” More complex logic, like a service object that interacts with an external API, still requires a few rounds of correction. Still, the fact that it can generate a &lt;em&gt;complete&lt;/em&gt; method from a single sentence is a glimpse of what a future AI‑assisted developer might look like.&lt;/p&gt;




&lt;h2&gt;
  
  
  Eli: From One Room to Six
&lt;/h2&gt;

&lt;p&gt;Eli is a conversational companion built on top of the same authentication stack. The second half of the day was dedicated to polishing the user journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  UX Audit
&lt;/h3&gt;

&lt;p&gt;I walked through every point where a user might silently lose interest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Session Expiry&lt;/strong&gt; – implemented silent refresh using the refresh token.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation Gaps&lt;/strong&gt; – added “Continue where you left off” prompts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding&lt;/strong&gt; – simplified the first‑time flow to a single screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These fixes reduce friction and keep users engaged.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Six Rooms
&lt;/h3&gt;

&lt;p&gt;The real fun came with the “rooms” feature. Each room is a pre‑configured set of UI themes and background audio that changes the user’s context:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Room&lt;/th&gt;
&lt;th&gt;Theme&lt;/th&gt;
&lt;th&gt;Audio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Light, warm&lt;/td&gt;
&lt;td&gt;Café chatter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Dark, quiet&lt;/td&gt;
&lt;td&gt;Library hush&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Light, cool&lt;/td&gt;
&lt;td&gt;Beach waves&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dark, warm&lt;/td&gt;
&lt;td&gt;Fireplace crackle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Light, neutral&lt;/td&gt;
&lt;td&gt;City traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Dark, cool&lt;/td&gt;
&lt;td&gt;Night sky&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The implementation is a simple Rails view component that swaps CSS variables and plays an audio stream via the Web Audio API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;RoomComponent&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ViewComponent&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;room&lt;/span&gt;&lt;span class="p"&gt;:)&lt;/span&gt;
    &lt;span class="vi"&gt;@room&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;room&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;theme_css&lt;/span&gt;
    &lt;span class="vi"&gt;@room&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;theme_css&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;audio_url&lt;/span&gt;
    &lt;span class="vi"&gt;@room&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;audio_url&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"room"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;%= theme_css %&amp;gt;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;audio&lt;/span&gt; &lt;span class="na"&gt;autoplay&lt;/span&gt; &lt;span class="na"&gt;loop&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;%= audio_url %&amp;gt;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/audio&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;render&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;content&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Users can switch rooms on the fly, and the app remembers their last choice in a &lt;code&gt;user_room&lt;/code&gt; column on the &lt;code&gt;users&lt;/code&gt; table.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Mantra
&lt;/h2&gt;

&lt;p&gt;A line I’d written weeks ago kept resurfacing: &lt;strong&gt;“Free AI can answer you. Eli is built to hold you.”&lt;/strong&gt; That sentence is the north star for every decision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free AI&lt;/strong&gt; – the LLM that powers code generation and conversational responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hold you&lt;/strong&gt; – the gentle error handling, the frictionless re‑entry, the comforting rooms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else—login flow, six rooms, quiet error messages—serves that promise.&lt;/p&gt;




&lt;h2&gt;
  
  
  Evening Reflections
&lt;/h2&gt;

&lt;p&gt;I wrapped up the day with a mix of media: &lt;em&gt;Rick and Morty&lt;/em&gt; for a dose of chaos, &lt;em&gt;Boardwalk Empire&lt;/em&gt; for sharp dialogue, a Joe Rogan clip for a lighter tone, and an unexpected &lt;em&gt;America’s Got Talent&lt;/em&gt; episode that actually kept me engaged. It’s a reminder that even when the code is solid, life still needs a little entertainment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Horizon&lt;/strong&gt; – still adding analytics to monitor authentication success rates and failure reasons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Code Generator&lt;/strong&gt; – need to improve the feedback loop and add a sandbox for safe execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eli&lt;/strong&gt; – rooms are built, but I’ll start A/B testing to see which environments drive the most engagement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system that used to fail loudly now fails kindly, and a companion that had one room now has six. Tomorrow I’ll test whether these changes hold up under real traffic and user feedback.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Soul in Motion — 1:34 PM | 2026-08-26</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Wed, 26 Aug 2026 09:50:13 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-134-pm-2026-08-26-nlg</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-134-pm-2026-08-26-nlg</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The idea of building a character for survival on Mars transformed into a platform where users can create and customize their own characters.&lt;/li&gt;
&lt;li&gt;The author realized that the work he was doing for different projects was essentially the same, leading to questions about his true interests.&lt;/li&gt;
&lt;li&gt;By the end of the day, the author had connected two seemingly separate tasks and felt curious about pursuing this thread further.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building Our Character
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Morning Reflections
&lt;/h3&gt;

&lt;p&gt;Today started with a half-joking question in conversation: what if someone had to build a version of themselves that could survive thirty days on Mars and then jump off? It shouldn't have gone anywhere, but it stuck with me all morning. By midday, it transformed into a real idea—a platform where people don’t just play a character; they build one, piece by piece.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Scaffolding
&lt;/h3&gt;

&lt;p&gt;So, that became the day’s focus. I opened a blank page and started with what you always have to start with: not the exciting part, but the scaffolding underneath it. What does a character actually consist of, mechanically? How do traits connect to abilities, and how does the whole structure hold together well enough for someone with no idea any of this exists to just click a few things and watch a person take shape?&lt;/p&gt;

&lt;p&gt;By the end of the afternoon, the skeleton was there. Not impressive to look at, but necessary—the kind of work nobody notices unless you skip it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accidental Realization
&lt;/h3&gt;

&lt;p&gt;Almost by accident, I noticed something. A few desks over—metaphorically, in another project running quietly in the background—I was doing the exact same thing for a completely different reason: building out voices and personalities for Eli, a companion character who needed to feel real and personal.&lt;/p&gt;

&lt;p&gt;The question kept circling back to me today: what if people could choose a personality they actually connect with? Not one voice trying to be right for everyone—several, each with its own texture, so that whoever's on the other end of the conversation finds the one that feels like it’s actually listening to them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing the Idea
&lt;/h3&gt;

&lt;p&gt;I spent the afternoon testing this idea in practice. Building out different “modes,” adjusting how a scene feels depending on which version of Eli someone chooses. A landing page that sets the tone before a single word is spoken, and a quieter, cozier space for when someone needs exactly that. Small differences, but the kind that decide whether something feels alive or like software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting the Dots
&lt;/h3&gt;

&lt;p&gt;By evening, I realized I’d basically spent the whole day doing the same work twice—in two different disguises: once for a character someone builds for fun, once for a companion built to actually matter. Which raises a question I don't have an answer to yet: is that a coincidence, or is it just what I’m actually interested in right now, wearing two different names?&lt;/p&gt;

&lt;h3&gt;
  
  
  Reflecting on the Day
&lt;/h3&gt;

&lt;p&gt;I let the day breathe where it needed to. A rewatch of &lt;em&gt;Kingdom&lt;/em&gt; crept back in—Season 3 still owes its viewers an ending it hasn’t fully delivered. A couple of episodes of &lt;em&gt;Rick and Morty&lt;/em&gt;, chaotic in exactly the right dose. An old &lt;em&gt;Boardwalk Empire&lt;/em&gt; episode for its dialogue, which never stops teaching me something about pacing even when I’m not trying to learn anything. And somewhere in the middle of it all, a long Joe Rogan conversation with Elon Musk playing in the background—two people thinking out loud about the future in a way that kept nudging me back toward the two projects sitting open on my desk.&lt;/p&gt;

&lt;p&gt;Nothing got finished today. The character tool is a skeleton, not a person yet. Eli’s voices are still rough sketches of what they’ll eventually become. But something clicked into place that wasn’t there this morning—a thread connecting two things I’d been treating as separate—and a genuine curiosity about where it leads if I actually follow it instead of letting it stay a coincidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tomorrow's Plan
&lt;/h3&gt;

&lt;p&gt;Tomorrow I find out.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Soul in Motion — 11:13 AM | 2026-08-22</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Sat, 22 Aug 2026 07:19:16 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1113-am-2026-08-22-36l9</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1113-am-2026-08-22-36l9</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Precision in pixel alignment is crucial but often unnoticed.&lt;/li&gt;
&lt;li&gt;Script refinement involves cutting down unnecessary elements to enhance clarity and realism.&lt;/li&gt;
&lt;li&gt;Taking breaks with engaging content helps maintain mental focus and creativity.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Building Dreams, One Frame at a Time
&lt;/h1&gt;

&lt;p&gt;11:13 AM&lt;/p&gt;

&lt;p&gt;Some days the work is invisible until it suddenly isn't. Today was one of those.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pixel Perfect Precision
&lt;/h2&gt;

&lt;p&gt;I spent the morning deep in the mechanics of &lt;em&gt;Pixel Perfect&lt;/em&gt; — the unglorious, exacting work of making sure every image lines up exactly where it's supposed to, down to the pixel. It’s the kind of task that looks like nothing from the outside: numbers, ratios, small corrections applied over and over until an image that was scaled and resized and moved finally sits back in its original place, seamlessly, as if it had never been touched at all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example of a function for pixel alignment&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;alignPixel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;canvas&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2d&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Resizing and positioning logic here&lt;/span&gt;
  &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;drawImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resizedImage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newX&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There’s a strange satisfaction in that kind of precision — nobody will ever notice it when it's right, and everybody would notice instantly if it were wrong. It’s the kind of work where you can spend hours on a single pixel, tweaking until it aligns perfectly with its neighbors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crafting Narrative Flow
&lt;/h2&gt;

&lt;p&gt;By afternoon I shifted into the part of the work I care about even more — narration. Getting a script to actually sound like something a person would say, not something a machine assembled. I went back into a scene I’d been circling for a few days — "The First Scene," the opening of the whole project — and instead of adding more to it, I found myself doing the opposite: cutting it down, stripping away anything that wasn't earning its place.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example of a script snippet before refinement&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;Scene&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;The First Scene&lt;/span&gt;
&lt;span class="na"&gt;Characters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Alex&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Sarah&lt;/span&gt;

&lt;span class="na"&gt;Lines&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;1&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alex:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'Hey,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Sarah!&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;How's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;your&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;day&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;going?'"&lt;/span&gt;
  &lt;span class="na"&gt;2&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sarah:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'It's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;been&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;okay.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Just&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;bit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;busy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;at&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;work.'"&lt;/span&gt;
  &lt;span class="na"&gt;3&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alex:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'That&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sounds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tough.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Do&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;you&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;want&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;grab&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;lunch&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;chat?'"&lt;/span&gt;
  &lt;span class="na"&gt;4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sarah:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'Sure,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;that&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;would&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;be&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;nice.'"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the end of the afternoon, the scene finally sounded like itself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example of a refined script snippet&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;Scene&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;The First Scene&lt;/span&gt;
&lt;span class="na"&gt;Characters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Alex&lt;/span&gt;

&lt;span class="na"&gt;Lines&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;1&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alex:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'Hey,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Sarah!&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;How's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;your&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;day&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;going?'"&lt;/span&gt;
  &lt;span class="na"&gt;2&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sarah:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'It's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;been&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;okay.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Just&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;bit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;busy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;at&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;work.'"&lt;/span&gt;
  &lt;span class="na"&gt;3&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alex:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'That&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sounds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tough.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Do&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;you&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;want&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;grab&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;lunch&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;chat?'"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s a strange thing to learn, over and over, that the version with less in it is usually the one that actually works. By stripping away extraneous dialogue and focusing on essential interactions, the scene felt more natural and engaging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking Breaks for Mental Reset
&lt;/h2&gt;

&lt;p&gt;I let myself take real breaks today too — a few episodes of &lt;em&gt;Rick and Morty&lt;/em&gt;, which is exactly the right kind of chaos to reset a tired brain. The show’s blend of humor and surrealism provides just enough distraction without overwhelming my focus. Later, I watched &lt;em&gt;The Invite&lt;/em&gt;, which held onto its tension long enough to be genuinely absorbing rather than just background noise.&lt;/p&gt;

&lt;p&gt;I also let a long Joe Rogan conversation run in the background for a while — not for any particular insight, just the low hum of two people actually talking to each other, which is oddly good company when you’ve spent all day talking to a screen. The sound of human interaction can be surprisingly soothing and grounding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflecting on Progress
&lt;/h2&gt;

&lt;p&gt;Looking back, nothing about today announced itself as a big moment while it was happening. But somewhere between the pixel math and the stripped-down script, something shifted — the project feels less like a pile of separate pieces today and more like one thing, slowly becoming itself. That’s usually how it goes. The good days rarely feel dramatic while you’re inside them. You only notice later that something actually moved.&lt;/p&gt;

&lt;p&gt;Until next time.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>pixelperfection</category>
      <category>narrativemapping</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Soul in Motion — 11:05 AM | 2026-08-20</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Thu, 20 Aug 2026 06:35:10 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1105-am-2026-08-20-h9j</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1105-am-2026-08-20-h9j</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fixed an issue where Eli would cut off mid-farewell.&lt;/li&gt;
&lt;li&gt;Addressed routing bugs and wrote runbooks to prevent future issues.&lt;/li&gt;
&lt;li&gt;Worked on converting spoken audio into clean text with various approaches.&lt;/li&gt;
&lt;li&gt;Maintained general upkeep, ensuring the app runs smoothly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Building Eli, One Small Fix at a Time
&lt;/h1&gt;

&lt;p&gt;11:05 AM&lt;/p&gt;

&lt;p&gt;Today started with fixing an issue in Eli, my companion app, where it would cut off mid-farewell. This bug was particularly frustrating because the whole point of Eli is to be present and complete with someone. The fix required careful attention to ensure that every word and emotion conveyed through the app remained intact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fixing the Mid-Farewell Bug
&lt;/h3&gt;

&lt;p&gt;The issue turned out to be a simple yet annoying one: an improperly configured timeout in the speech synthesis module. When testing, I noticed that the audio cut off abruptly at certain points during goodbyes. To address this, I went through the code and identified where the timeout was set too low.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Original Code
&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;  &lt;span class="c1"&gt;# Too short for long sentences
&lt;/span&gt;
&lt;span class="c1"&gt;# Fixed Code
&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;  &lt;span class="c1"&gt;# Increased to ensure full sentences are spoken
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After adjusting the timeout, I re-ran the tests and confirmed that Eli now spoke through complete goodbyes without any interruptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chasing Down Routing Bugs
&lt;/h3&gt;

&lt;p&gt;The rest of the day was spent addressing a routing bug where testers were receiving session links in their inbox instead of within the app. This required digging into the backend to ensure all routes were correctly configured.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Original Route Configuration&lt;/span&gt;
app.get&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/session/:id'&lt;/span&gt;, &lt;span class="o"&gt;(&lt;/span&gt;req, res&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  // Incorrect handling of session ID
&lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# Fixed Route Configuration&lt;/span&gt;
app.get&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/session/:user_id/:session_id'&lt;/span&gt;, &lt;span class="o"&gt;(&lt;/span&gt;req, res&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  // Correct handling of user and session IDs
&lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To prevent such issues in the future, I wrote a runbook detailing common pitfalls and best practices for route configuration. This document will serve as a reference whenever someone needs to make changes to Eli's routing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Converting Spoken Audio into Clean Text
&lt;/h3&gt;

&lt;p&gt;In between tasks, I tackled another quieter project: converting spoken audio into clean text. This involved testing various speech-to-text APIs to achieve full accuracy. The process was iterative and required fine-tuning the parameters for each API to get the best results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example Configuration for Speech-to-Text API&lt;/span&gt;
&lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY"&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;en-US_BroadbandModel"&lt;/span&gt;
&lt;span class="na"&gt;language&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;en-US"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After testing several APIs, I settled on one that provided high accuracy and decent speed. The next step was to integrate this into Eli's backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  General App Maintenance
&lt;/h3&gt;

&lt;p&gt;General upkeep also took its share of time. Ensuring the app ran smoothly without quietly bleeding money in the background was crucial. This involved monitoring resource usage and optimizing code where necessary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Example Command for Monitoring Resource Usage&lt;/span&gt;
top &lt;span class="nt"&gt;-b&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 1 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Eli"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the end of the day, five or six small fixes had piled up—nothing that will make headlines, but each one made Eli a little more trustworthy. Building something like Eli is mostly about these small acts of care, invisible to everyone except those who need them most.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reflecting on the Day
&lt;/h3&gt;

&lt;p&gt;I took my breaks seriously today, maybe more than usual. In the morning, &lt;em&gt;Train to Busan&lt;/em&gt;, a film about people trying to protect each other when everything is falling apart, felt oddly close to the work on my desk. I watched &lt;em&gt;Rick and Morty&lt;/em&gt; in smaller doses throughout the day, and even found myself watching &lt;em&gt;Boardwalk Empire&lt;/em&gt; again.&lt;/p&gt;

&lt;p&gt;By the end of the day, as the sun set, I let the quiet sit for a bit before going back in. Tomorrow there'll be more of the same. For tonight, though, I'm letting the quiet settle in.&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates on Eli and my journey building it one small fix at a time.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>python</category>
      <category>bugfixing</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Soul in Motion — 10:09 PM | 2026-08-12</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Wed, 12 Aug 2026 20:12:34 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1009-pm-2026-08-12-56ei</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1009-pm-2026-08-12-56ei</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Successfully migrated auto-upload pipeline to new Instagram handle @trendpulse77 using Claude.&lt;/li&gt;
&lt;li&gt;Optimized running-scene footage for Omni, refining details for a more immersive experience.&lt;/li&gt;
&lt;li&gt;Debugged and refined user experience for Eli, resulting in a smoother app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building Dreams, One Line at a Time
&lt;/h2&gt;

&lt;p&gt;Today was one of those days where the work put up a fight. It started with a stubborn problem on Soul in Motion - moving our auto-upload pipeline to a new Instagram handle, @trendpulse77. What seemed simple on paper turned out to be a complex task, like untangling months of working plumbing without breaking anything that depended on it.&lt;/p&gt;

&lt;p&gt;The main issue was that our previous pipeline relied heavily on environment variables and hardcoded paths, which made it difficult to adapt to the new Instagram handle. I decided to leverage Claude, our trusty AI-powered tool, to help me refactor the pipeline. With Claude's assistance, I was able to identify and replace the hardcoded values with dynamic variables, making the pipeline more flexible and scalable.&lt;/p&gt;

&lt;p&gt;Here's a snippet of the refactored pipeline in Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;

&lt;span class="c1"&gt;# Load environment variables
&lt;/span&gt;&lt;span class="n"&gt;instagram_handle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;INSTAGRAM_HANDLE&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;INSTAGRAM_ACCESS_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize Instagram API client
&lt;/span&gt;&lt;span class="n"&gt;instagram&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;instagram&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;aws_access_key_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                         &lt;span class="n"&gt;aws_secret_access_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;# Upload media to Instagram
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;upload_media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;media_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# ...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Claude's help, I was able to migrate the pipeline to the new Instagram handle without breaking any existing dependencies. The new account is now live and posting smoothly.&lt;/p&gt;

&lt;p&gt;I also spent hours working on the running-scene footage for Omni, searching for the perfect starting frame and tweaking the details until it felt alive. I experimented with different camera angles, lighting setups, and even added some subtle particle effects to enhance the realism. Here's a snippet of the footage editing process in Blender:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Create a new scene
&lt;/span&gt;&lt;span class="n"&gt;scene&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bpy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scenes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Running Scene&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Set the camera angle and position
&lt;/span&gt;&lt;span class="n"&gt;camera&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bpy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Camera&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;camera&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;camera&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rotation_euler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;radians&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Add a particle system
&lt;/span&gt;&lt;span class="n"&gt;particle_system&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bpy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;particles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Running Particles&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;particle_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;HAIR&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;particle_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
&lt;span class="n"&gt;particle_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;
&lt;span class="n"&gt;particle_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;factor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then there was Eli, where I was chasing down syntax errors and refining the user experience. Debugging can be a grind, but persistence paid off, and the app is now smoother than before.&lt;/p&gt;

&lt;p&gt;Throughout the day, I took breaks to check on the new Instagram account, post a reel, and even watch some Rick and Morty. It was a day of triumph and grind, with no big breakthroughs, but I didn't walk away. I'm curious, what's the wall you're pushing against right now? What did your day look like?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>Soul in Motion — 9:38 PM | 2026-08-10</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Mon, 10 Aug 2026 16:23:34 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-938-pm-2026-08-10-1026</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-938-pm-2026-08-10-1026</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Today was a day of juggling multiple projects and roles, from backend engineering to filmmaking and writing.&lt;/li&gt;
&lt;li&gt;I worked on building a production pipeline for v2, which required translating a mental picture into a visual representation.&lt;/li&gt;
&lt;li&gt;I also made progress on Soulmotion Films, Eli, and "Two Savages In Love", focusing on creative problem-solving and world-building.&lt;/li&gt;
&lt;li&gt;The day was marked by small wins across different areas of thinking, including technical, visual, emotional, and creative.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Day in the Life of a Builder
&lt;/h2&gt;

&lt;p&gt;Today was one of those days where I felt like three people at once - an engineer, a filmmaker, and a writer. My morning started with backend work on tsil, reading and writing files, and shuffling data around. It's not glamorous, but it's the foundation that everything else is built on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Reading and writing files with tsil&lt;/span&gt;
tsil &lt;span class="nb"&gt;read &lt;/span&gt;data.json
tsil write output.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I then moved on to v2, where I worked on piecing together a production pipeline. I found myself staring at reference images, trying to translate the picture in my head into a picture on screen. This kind of problem-solving is half logic and half instinct.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example of a production pipeline in v2
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Load the image
&lt;/span&gt;    &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;imread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Apply filters and transformations
&lt;/span&gt;    &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cvtColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COLOR_BGR2RGB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# Save the processed image
&lt;/span&gt;    &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;imwrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;output_image.jpg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;process_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;input_image.jpg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The day took a creative turn with Soulmotion Films, where I wrote shot lists and color scripts. I also worked on Eli, giving her a better sense of reasoning and making sure conversations didn't feel clipped. I chased a text-to-speech reader through a few frustrating rounds, but eventually landed on the right prompt and got the desired output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example of a text-to-speech reader in Eli
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;nltk&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;nltk.tokenize&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;word_tokenize&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;text_to_speech&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Tokenize the text
&lt;/span&gt;    &lt;span class="n"&gt;tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;word_tokenize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Generate the speech
&lt;/span&gt;    &lt;span class="n"&gt;speech&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;speech&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;speech&lt;/span&gt;

&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello, how are you?&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;text_to_speech&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also worked on "Two Savages In Love", building a world and brainstorming scenes without any deadlines or specs. It's a challenging but freeing project. Throughout the day, I gave myself real breaks, watching an episode of "The Agency" and sorting out notes for a job application.&lt;/p&gt;

&lt;p&gt;Looking back, today didn't have one big win, but six small ones across different kinds of thinking - technical, visual, emotional, and creative. That's the part of building things that doesn't show up in a commit log: the constant switching and staying steady through it all. Tomorrow, I'll pick up where I left off. Onward.&lt;/p&gt;

</description>
      <category>python</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>indiehackers</category>
    </item>
    <item>
      <title>Soul in Motion — 6:29 PM | 2026-08-07</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Fri, 07 Aug 2026 13:06:56 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-629-pm-2026-08-07-4j04</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-629-pm-2026-08-07-4j04</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reduced file upload times by nearly a third through backend optimizations.&lt;/li&gt;
&lt;li&gt;Improved interface usability by addressing underlying complexities.&lt;/li&gt;
&lt;li&gt;Utilized breaks to stay grounded in the field, inspired by others' work on Kaggle.&lt;/li&gt;
&lt;li&gt;Achieved real-time responsiveness through focused coding efforts.&lt;/li&gt;
&lt;li&gt;Emphasized the importance of unglamorous progress in building towards a future goal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building the Future, One Line at a Time
&lt;/h2&gt;

&lt;p&gt;Today was a marathon, with no single big breakthrough, but steady progress nonetheless. I started early, tackling backend work, and managed to reduce file upload times by nearly a third. This was achieved by optimizing the file handling pipeline, which involved tweaking the buffer sizes, adjusting the concurrency settings, and fine-tuning the compression algorithms. The changes were implemented in the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Adjusting buffer sizes&lt;/span&gt;
file_buffer_size &lt;span class="o"&gt;=&lt;/span&gt; 1024 &lt;span class="k"&gt;*&lt;/span&gt; 1024 &lt;span class="k"&gt;*&lt;/span&gt; 10  &lt;span class="c"&gt;# 10MB&lt;/span&gt;

&lt;span class="c"&gt;# Adjusting concurrency settings&lt;/span&gt;
max_concurrency &lt;span class="o"&gt;=&lt;/span&gt; 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, I worked on making the interface more effortless to use, which proved to be a harder problem than it sounds. I realized that the issue was not just about simplifying the UI, but also about addressing the underlying complexities of the system. This involved refactoring the code to make it more modular, adding better error handling, and implementing a more intuitive navigation system. The changes were implemented in the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Refactoring the code to make it more modular
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UIComponent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;components&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add_component&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;component&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;components&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;component&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Adding better error handling
&lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Code that might raise an exception
&lt;/span&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Handle the exception
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Implementing a more intuitive navigation system
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;navigate_to_page&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Code to navigate to the page
&lt;/span&gt;    &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I took breaks to watch "A Few Good Men" and read about its history, and later listened to Joe Rogan's conversations on comedy and politics. I also dropped into Kaggle to see what others are working on, which helps me stay grounded in the field. It's amazing how often I find inspiration in the work of others, and how it motivates me to push forward on my own projects.&lt;/p&gt;

&lt;p&gt;The late afternoon was all about escapism, with episodes of "Avatar: The Last Airbender" and "Spider-Man: Far From Home". Sometimes, stepping away from a project can be the most useful thing you can do. It allows you to clear your mind, recharge your batteries, and come back to the project with a fresh perspective.&lt;/p&gt;

&lt;p&gt;I spent the evening coding, working towards real-time responsiveness, and watching a few episodes of "Boardwalk Empire" and "Avatar: Fire and Ash". I even caught some fight highlights, which can be oddly motivating for a late coding session. The focus was on optimizing the rendering pipeline, reducing latency, and improving the overall user experience. The changes were implemented in the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Optimizing the rendering pipeline&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Code to render the scene&lt;/span&gt;
    &lt;span class="nf"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Reducing latency&lt;/span&gt;
&lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Code to update the scene&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 16ms = 60fps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looking back, today was all about unglamorous progress - a faster upload, a cleaner interface, a system that speaks up when something's wrong. It may not be dramatic, but it's exactly what's needed to keep moving forward. Stay curious, keep building.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Soul in Motion — 11:44 AM | 2026-08-05</title>
      <dc:creator>Dev Rajput</dc:creator>
      <pubDate>Wed, 05 Aug 2026 06:26:25 +0000</pubDate>
      <link>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1144-am-2026-08-05-4bif</link>
      <guid>https://dev.to/dev_rajput_2d46f92f8a3418/soul-in-motion-1144-am-2026-08-05-4bif</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Crafting short films with a cinematic feel using Blender.&lt;/li&gt;
&lt;li&gt;Building a portfolio and navigating the job hunt.&lt;/li&gt;
&lt;li&gt;The importance of taking breaks and allowing oneself to play and experiment.&lt;/li&gt;
&lt;li&gt;Trusting the process and taking small steps towards a goal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Day in the Life of a Blender Artist
&lt;/h2&gt;

&lt;p&gt;Today was all about Soulmotion Films. I spent hours building something frame by frame, deciding on lighting, dialogue, and pauses. My goal is to make these short films feel as real as something out of &lt;em&gt;Avatar&lt;/em&gt;, but most days that bar feels impossible. Today, a few scenes finally started to close the gap, making the slow grind worth it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Blender scene hierarchy&lt;/span&gt;
Scene &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Object &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Material &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Texture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As I worked, my mind wandered to my portfolio and job hunt. I shaped my portfolio, pulling pieces from other projects to make a case for myself. A harder question emerged: &lt;em&gt;is any of this actually enough?&lt;/em&gt; It's not a comfortable question, and I didn't fully answer it today. But I let myself ask it honestly, which felt like progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Importance of Experimentation
&lt;/h3&gt;

&lt;p&gt;I also gave myself permission to just play, rigging and posing without production pressure. It's the part of the work that feels like being a kid again. This is where the magic happens, and I often find inspiration in these moments of unstructured creativity.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Blender Python script to create a simple rig
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;bpy&lt;/span&gt;

&lt;span class="c1"&gt;# Create a new armature
&lt;/span&gt;&lt;span class="n"&gt;armature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bpy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;armatures&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Simple_Rig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Add bones to the armature
&lt;/span&gt;&lt;span class="n"&gt;bpy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;link&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;armature&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In between, I took breaks with some Joe Rogan, scenes from &lt;em&gt;Avatar: Fire and Ash&lt;/em&gt;, and &lt;em&gt;Spider-Man: Far From Home&lt;/em&gt;. Reality knocked with administrative tasks, but by the end of the day, I was left with two truths: real progress on what I care about, and a question about the future that I still don't have an answer to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trusting the Process
&lt;/h3&gt;

&lt;p&gt;I've decided that's okay – some days the job is just to keep building and trust that the small steps are pointed somewhere. It's a mindset shift that I'm still working on, but it's one that I believe is essential for making progress in creative pursuits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Blender render settings&lt;/span&gt;
&lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;resolution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1920x1080&lt;/span&gt;
  &lt;span class="na"&gt;frame_rate&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24&lt;/span&gt;
  &lt;span class="na"&gt;render_engine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CYCLES&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the end, it's not about having all the answers or achieving perfection. It's about taking small steps towards a goal, trusting the process, and allowing oneself to learn and grow along the way.&lt;/p&gt;

</description>
      <category>blender</category>
      <category>python</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
