<?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: Shubham</title>
    <description>The latest articles on DEV Community by Shubham (@shubham_e6d10e6909de436f4).</description>
    <link>https://dev.to/shubham_e6d10e6909de436f4</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%2F4172478%2F65aecd5f-6064-42ea-9bfb-ecc8235b87d8.png</url>
      <title>DEV Community: Shubham</title>
      <link>https://dev.to/shubham_e6d10e6909de436f4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shubham_e6d10e6909de436f4"/>
    <language>en</language>
    <item>
      <title>I built ParallelEarth, a VS Code extension for organising alternative implementations and recorded check results around Git worktrees.If it fits something you’re covering, I’d appreciate your independent feedback. I’m particularly interested in whether it</title>
      <dc:creator>Shubham</dc:creator>
      <pubDate>Fri, 30 Oct 2026 08:57:13 +0000</pubDate>
      <link>https://dev.to/shubham_e6d10e6909de436f4/i-built-parallelearth-a-vs-code-extension-for-organising-alternative-implementations-and-recorded-589f</link>
      <guid>https://dev.to/shubham_e6d10e6909de436f4/i-built-parallelearth-a-vs-code-extension-for-organising-alternative-implementations-and-recorded-589f</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shubham_e6d10e6909de436f4/compare-alternative-implementations-in-vs-code-with-git-worktrees-5gb5" class="crayons-story__hidden-navigation-link"&gt;Compare alternative implementations in VS Code with Git worktrees&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shubham_e6d10e6909de436f4" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4172478%2F65aecd5f-6064-42ea-9bfb-ecc8235b87d8.png" alt="shubham_e6d10e6909de436f4 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shubham_e6d10e6909de436f4" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shubham
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shubham
                
                
              
              &lt;div id="story-author-preview-content-4946215" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shubham_e6d10e6909de436f4" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4172478%2F65aecd5f-6064-42ea-9bfb-ecc8235b87d8.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shubham&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shubham_e6d10e6909de436f4/compare-alternative-implementations-in-vs-code-with-git-worktrees-5gb5" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 30&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shubham_e6d10e6909de436f4/compare-alternative-implementations-in-vs-code-with-git-worktrees-5gb5" id="article-link-4946215"&gt;
          Compare alternative implementations in VS Code with Git worktrees
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/shubham_e6d10e6909de436f4/compare-alternative-implementations-in-vs-code-with-git-worktrees-5gb5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>vscode</category>
      <category>sideprojects</category>
      <category>showdev</category>
      <category>git</category>
    </item>
    <item>
      <title>Compare alternative implementations in VS Code with Git worktrees</title>
      <dc:creator>Shubham</dc:creator>
      <pubDate>Fri, 30 Oct 2026 08:56:32 +0000</pubDate>
      <link>https://dev.to/shubham_e6d10e6909de436f4/compare-alternative-implementations-in-vs-code-with-git-worktrees-5gb5</link>
      <guid>https://dev.to/shubham_e6d10e6909de436f4/compare-alternative-implementations-in-vs-code-with-git-worktrees-5gb5</guid>
      <description>&lt;p&gt;You have two ways to implement a change. Both look reasonable. Which one should you keep?&lt;/p&gt;

&lt;p&gt;Git branches and worktrees give you separate places to experiment. But you still need to run checks, remember which result belongs to which implementation, and explain your decision.&lt;/p&gt;

&lt;p&gt;I built ParallelEarth, a VS Code extension that groups alternatives and recorded check results into one experiment.&lt;/p&gt;

&lt;p&gt;Here’s a reproducible example using real Git worktrees.&lt;/p&gt;

&lt;p&gt;The example: booking reconciliation&lt;/p&gt;

&lt;p&gt;The repository includes a small booking-reconciliation fixture with three alternative implementations.&lt;/p&gt;

&lt;p&gt;We’ll run the same command against the baseline and two alternatives, leaving the third untested. This demonstrates an important distinction: passing, failing and having no evidence are different states.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run the demonstration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You’ll need Git, npm and Node.js 22.17 or later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/shubhammaji1/parallel-earth.git
&lt;span class="nb"&gt;cd &lt;/span&gt;parallel-earth
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--ignore-scripts&lt;/span&gt;
npm run demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run these commands from a checkout you trust. The demo builds the project and executes the included fixture checks.&lt;/p&gt;

&lt;p&gt;It creates a separate fixture repository, a baseline worktree and three alternative worktrees. Your development checkout’s booking implementation remains unchanged.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inspect the results&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The demo runs:&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="sb"&gt;`&lt;/span&gt;node &lt;span class="nt"&gt;--test&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt;/reconcile.test.cjs&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;against the baseline, Earth A and Earth B.&lt;/p&gt;

&lt;p&gt;The resulting comparison is:&lt;/p&gt;

&lt;p&gt;Version&lt;/p&gt;

&lt;p&gt;Outcome&lt;/p&gt;

&lt;p&gt;Baseline&lt;/p&gt;

&lt;p&gt;PASSED&lt;/p&gt;

&lt;p&gt;A — Deduplicate correctly&lt;/p&gt;

&lt;p&gt;PASSED&lt;/p&gt;

&lt;p&gt;B — Duplicate regression&lt;/p&gt;

&lt;p&gt;REGRESSION&lt;/p&gt;

&lt;p&gt;C — Not yet checked&lt;/p&gt;

&lt;p&gt;NOT_RUN&lt;/p&gt;

&lt;p&gt;REGRESSION means the baseline passed while the alternative failed the matching check under compatible recorded fingerprints.&lt;/p&gt;

&lt;p&gt;NOT_RUN means no check result was recorded. It doesn’t mean the implementation failed—or that it works.&lt;/p&gt;

&lt;p&gt;The fixture is intentionally constructed to demonstrate these outcomes. It isn’t a benchmark or evidence that the extension detects every regression.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the evidence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;artifacts/booking-report.md&lt;br&gt;
artifacts/booking-report.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The Markdown report provides a readable comparison. JSON contains retained execution evidence, including recorded command results.&lt;/p&gt;

&lt;p&gt;The terminal also prints the location of the generated fixture. Its worktrees remain available for inspection.&lt;/p&gt;

&lt;p&gt;Check the implementation, test expectations and command output together. A green command only tells you that the command succeeded; your tests may still miss important behaviour.&lt;/p&gt;

&lt;p&gt;Try the same workflow on your project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=shubhammaji1.parallel-earth" rel="noopener noreferrer"&gt;Install ParallelEarth from the VS Code Marketplace&lt;/a&gt;, then:&lt;/p&gt;

&lt;p&gt;Run ParallelEarth: Open Home.&lt;/p&gt;

&lt;p&gt;Create an experiment from a trusted Git repository and committed revision.&lt;/p&gt;

&lt;p&gt;Create named Earths for your alternative approaches.&lt;/p&gt;

&lt;p&gt;Open each Earth and make your changes.&lt;/p&gt;

&lt;p&gt;Install dependencies independently where needed.&lt;/p&gt;

&lt;p&gt;Run matching checks, review the commands and approve execution.&lt;/p&gt;

&lt;p&gt;Compare the evidence and export a report.&lt;/p&gt;

&lt;p&gt;Earths start from committed code. Your original checkout’s uncommitted files and installed dependencies aren’t automatically copied.&lt;/p&gt;

&lt;p&gt;The automated demo uses the project’s core modules. It is separate from this interactive extension workflow.&lt;/p&gt;

&lt;p&gt;Why not use worktrees manually?&lt;/p&gt;

&lt;p&gt;You absolutely can.&lt;/p&gt;

&lt;p&gt;ParallelEarth uses worktrees underneath. Its purpose is to keep the experiment question, alternative implementations, recorded checks and comparison together inside VS Code.&lt;/p&gt;

&lt;p&gt;For a straightforward feature, a branch may be enough. This workflow is more useful when you are evaluating competing approaches before choosing one.&lt;/p&gt;

&lt;p&gt;Worktrees separate code state; they aren’t security sandboxes. Approved commands run on your machine. Recorded durations are execution details, not performance benchmarks.&lt;/p&gt;

&lt;p&gt;Try it and challenge the workflow&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=shubhammaji1.parallel-earth" rel="noopener noreferrer"&gt;Install for VS Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://open-vsx.org/extension/shubhammaji1/parallel-earth" rel="noopener noreferrer"&gt;Find it on Open VSX&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/shubhammaji1/parallel-earth" rel="noopener noreferrer"&gt;Explore the source and report issues&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d especially appreciate feedback on one question:&lt;/p&gt;

&lt;p&gt;Does keeping the alternatives and check evidence together make your decision easier than managing worktrees manually?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built domo-doctor to catch configuration issues in Domo custom apps — looking for feedback</title>
      <dc:creator>Shubham</dc:creator>
      <pubDate>Mon, 26 Oct 2026 06:18:31 +0000</pubDate>
      <link>https://dev.to/shubham_e6d10e6909de436f4/i-built-domo-doctor-to-catch-configuration-issues-in-domo-custom-apps-looking-for-feedback-319b</link>
      <guid>https://dev.to/shubham_e6d10e6909de436f4/i-built-domo-doctor-to-catch-configuration-issues-in-domo-custom-apps-looking-for-feedback-319b</guid>
      <description>&lt;p&gt;Hey developers! 👋&lt;/p&gt;

&lt;p&gt;I work with Domo custom apps and built domo-doctor, an offline-first diagnostic CLI for checking project configuration and source code.&lt;/p&gt;

&lt;p&gt;It helps identify issues such as:&lt;/p&gt;

&lt;p&gt;Invalid manifests and malformed mappings.&lt;/p&gt;

&lt;p&gt;Duplicate dataset or field aliases.&lt;/p&gt;

&lt;p&gt;Dataset requests referencing aliases missing from the manifest.&lt;/p&gt;

&lt;p&gt;Problems with local AppDB collection declarations.&lt;/p&gt;

&lt;p&gt;From your project folder, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx domo-doctor@latest scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📦 &lt;a href="https://www.npmjs.com/package/domo-doctor" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/domo-doctor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It checks your local project. Live permissions and deployed behavior still need testing in Domo.&lt;/p&gt;

&lt;p&gt;I’d love feedback from other Domo developers:&lt;/p&gt;

&lt;p&gt;Does it work with your project structure?&lt;/p&gt;

&lt;p&gt;Are the findings clear and actionable?&lt;/p&gt;

&lt;p&gt;Does it flag anything incorrectly?&lt;/p&gt;

&lt;p&gt;What recurring issue should it catch next?&lt;/p&gt;

&lt;p&gt;If something breaks, share your Node version, OS, and a small sanitized example—please leave out credentials and client data.&lt;/p&gt;

&lt;p&gt;I’m the creator. This is an independent community project, unaffiliated with Domo.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I built Tracepath to debug Node.js requests from the terminal</title>
      <dc:creator>Shubham</dc:creator>
      <pubDate>Fri, 09 Oct 2026 05:58:58 +0000</pubDate>
      <link>https://dev.to/shubham_e6d10e6909de436f4/i-built-tracepath-to-debug-nodejs-requests-from-the-terminal-46oe</link>
      <guid>https://dev.to/shubham_e6d10e6909de436f4/i-built-tracepath-to-debug-nodejs-requests-from-the-terminal-46oe</guid>
      <description>&lt;p&gt;A slow API response doesn’t tell you where the time went. Was it application logic, a database query, or a downstream HTTP call?&lt;br&gt;
I built Tracepath to help investigate these questions during local development, with request traces displayed directly in the terminal.&lt;br&gt;
What it does&lt;br&gt;
Tracepath currently supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Express request tracing.&lt;/li&gt;
&lt;li&gt;Automatic instrumentation of Node’s HTTP/HTTPS request and get calls.&lt;/li&gt;
&lt;li&gt;Custom spans around operations you want to measure.&lt;/li&gt;
&lt;li&gt;Browser fetch tracing, with additional setup for backend correlation.&lt;/li&gt;
&lt;li&gt;A local terminal dashboard showing timings and errors.
The local dashboard requires no hosted account or Docker. Your application does need instrumentation.
Try it with Express
You’ll need Node.js 22.13 or later.
Install the SDK and Express:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @tracepath/node express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Start the dashboard in a separate terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @tracepath/cli dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a bootstrap file so instrumentation initializes before your application loads:&lt;br&gt;
// bootstrap.mjs&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tracepath/node&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;demo-api&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;dashboard&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./server.mjs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then create the server:&lt;br&gt;
// server.mjs&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;getTracer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;tracepathMiddleware&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tracepath/node&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&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;tracer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getTracer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;tracepathMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tracer&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/demo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tracer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startActiveSpan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;simulate-slow-operation&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &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="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;

  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Check your terminal dashboard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;127.0.0.1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node bootstrap.mjs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit &lt;a href="http://127.0.0.1:3000/demo" rel="noopener noreferrer"&gt;http://127.0.0.1:3000/demo&lt;/a&gt;. &lt;br&gt;
The dashboard should show the request and the custom operation taking roughly 300 ms.&lt;br&gt;
This is a minimal development example; see the package documentation for application shutdown and flushing.&lt;/p&gt;

&lt;p&gt;What’s still missing?&lt;br&gt;
This is an early release, and there are limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database queries need manual spans; Postgres/MySQL auto-instrumentation isn’t implemented.&lt;/li&gt;
&lt;li&gt;Native Node fetch/Undici and HTTP/2 aren’t automatically instrumented.&lt;/li&gt;
&lt;li&gt;The local dashboard doesn’t provide persistent trace storage or alerting.
One useful piece of feedback I’ve already received is that database spans—with query timing and row counts—would make this much more valuable. I’d like to hear which integrations matter most to other developers.
Looking for hands-on feedback
If you work with Node.js/Express, try tracing one endpoint and let me know:&lt;/li&gt;
&lt;li&gt;Was setup straightforward?&lt;/li&gt;
&lt;li&gt;Did the trace help explain where time was spent?&lt;/li&gt;
&lt;li&gt;Which missing integration would stop you from using it?
Please avoid putting secrets or personal data in custom span names and attributes. Keep the dashboard local.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📦 &lt;a href="https://www.npmjs.com/package/@tracepath/node" rel="noopener noreferrer"&gt;Node SDK and documentation&lt;/a&gt;&lt;br&gt;
🖥️ &lt;a href="https://www.npmjs.com/package/@tracepath/cli" rel="noopener noreferrer"&gt;Terminal dashboard&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://www.npmjs.com/package/@tracepath/browser" rel="noopener noreferrer"&gt;Browser SDK&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
