<?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>Forem: Mu Micro</title>
    <description>The latest articles on Forem by Mu Micro (@mumicrotools).</description>
    <link>https://forem.com/mumicrotools</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3923619%2F6c757b8b-218e-4fd7-ab35-6cc598405e42.png</url>
      <title>Forem: Mu Micro</title>
      <link>https://forem.com/mumicrotools</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mumicrotools"/>
    <language>en</language>
    <item>
      <title>Developers can't benchmark shell commands without Rust — so I built `bench-run`</title>
      <dc:creator>Mu Micro</dc:creator>
      <pubDate>Thu, 14 May 2026 12:58:36 +0000</pubDate>
      <link>https://forem.com/mumicrotools/developers-cant-benchmark-shell-commands-without-rust-so-i-built-bench-run-50do</link>
      <guid>https://forem.com/mumicrotools/developers-cant-benchmark-shell-commands-without-rust-so-i-built-bench-run-50do</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Developers have no easy way to benchmark how long a shell command takes across multiple runs — &lt;code&gt;time&lt;/code&gt; only runs once and &lt;code&gt;hyperfine&lt;/code&gt; requires a Rust installation most Node developers don't have.&lt;/p&gt;

&lt;p&gt;If you've hit this before, you know how it goes — you either run the command once with &lt;code&gt;time&lt;/code&gt;, install &lt;code&gt;hyperfine&lt;/code&gt; via brew or cargo, or just eyeball the timing.&lt;/p&gt;

&lt;h2&gt;
  
  
  As a solution, I created &lt;code&gt;bench-run&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Benchmark any shell command with min/max/avg/median timing over N runs&lt;/p&gt;

&lt;p&gt;It's zero-dependency Node.js, so you can run it immediately without installing anything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx bench-run &lt;span class="s2"&gt;"npm test"&lt;/span&gt; &lt;span class="nt"&gt;--runs&lt;/span&gt; 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;bench-run: npm test
Runs: 5

  Run 1/5... 4.231s
  Run 2/5... 4.108s
  Run 3/5... 4.189s
  Run 4/5... 4.212s
  Run 5/5... 4.095s

──────────────────────────────────────
  min     4.095s
  max     4.231s
  avg     4.167s
  median  4.189s
  stddev  0.055s
──────────────────────────────────────
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Pure Node.js using child_process.execSync with process.hrtime.bigint() for nanosecond-precision timing; results are aggregated after all runs complete and printed as a summary table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Found repeated Ask HN and r/devops threads asking how to benchmark a build script — the top answers always link to hyperfine, which requires cargo or brew. Developers who already have Node installed have no zero-dep equivalent that works via npx. The problem also shows up in CI: teams want to track whether their test suite is getting slower across PRs but have no lightweight way to do it without adding a heavy benchmarking framework.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx bench-run &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Part of &lt;a href="https://anishpunati.github.io/mumicro/" rel="noopener noreferrer"&gt;µ micro&lt;/a&gt; — one new developer CLI tool, shipped every day. All tools are zero-dependency Node.js and run instantly with &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>cli</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SSL certs keep expiring unnoticed — so I built `cert-peek`</title>
      <dc:creator>Mu Micro</dc:creator>
      <pubDate>Wed, 13 May 2026 12:04:23 +0000</pubDate>
      <link>https://forem.com/mumicrotools/ssl-certs-keep-expiring-unnoticed-so-i-built-cert-peek-hbi</link>
      <guid>https://forem.com/mumicrotools/ssl-certs-keep-expiring-unnoticed-so-i-built-cert-peek-hbi</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Developers and ops teams get blindsided by expired SSL certificates because checking expiry requires remembering a multi-flag openssl s_client command and parsing its dense output — so certs get forgotten until the site goes red.&lt;/p&gt;

&lt;p&gt;If you've hit this before, you know how it goes — you Google the openssl command, squint at wall-of-text output, and compute the expiry date by hand. Or you just forget until monitoring fires.&lt;/p&gt;

&lt;h2&gt;
  
  
  As a solution, I created &lt;code&gt;cert-peek&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Check SSL certificate expiry and details for any domain in seconds from your terminal&lt;/p&gt;

&lt;p&gt;It's zero-dependency Node.js, so you can run it immediately without installing anything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cert-peek github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;npx cert-peek github.com
&lt;span class="go"&gt;
Domain:      github.com
Issuer:      DigiCert Inc
Valid from:  2025-03-12
Expires:     2026-03-12
Status:      OK -- 303 days remaining
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check multiple domains at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cert-peek google.com stripe.com myproductionsite.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use in CI as a pre-flight check (exits 1 if any cert expires within 30 days):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cert-peek myproduction.site &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'WARNING: cert expiring soon'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Pure Node.js using the built-in tls module — no dependencies. Opens a raw TLS socket to port 443, calls getPeerCertificate(), parses validity dates, and computes days remaining. Color-coded output and a non-zero exit code make it CI-friendly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Found repeated threads on r/devops and r/webdev where engineers asked how to quickly check cert expiry without a monitoring service. The openssl command is hard to remember, and popular npm packages like ssl-checker require installation and have dependencies. A zero-dep npx tool that prints a clean one-screen summary fills a genuine daily-use gap for both local dev and CI pre-flight checks.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cert-peek &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Part of &lt;a href="https://anishpunati.github.io/mumicro/" rel="noopener noreferrer"&gt;µ micro&lt;/a&gt; — one new developer CLI tool, shipped every day. All tools are zero-dependency Node.js and run instantly with &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>node</category>
      <category>cli</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Cron expressions are hard to read — so I built cronread</title>
      <dc:creator>Mu Micro</dc:creator>
      <pubDate>Tue, 12 May 2026 13:12:30 +0000</pubDate>
      <link>https://forem.com/mumicrotools/cron-expressions-are-hard-to-read-so-i-built-cronread-a17</link>
      <guid>https://forem.com/mumicrotools/cron-expressions-are-hard-to-read-so-i-built-cronread-a17</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Developers routinely have to leave the terminal and visit crontab.guru to verify what a cron expression actually schedules — there is no zero-dependency CLI tool that explains cron syntax and shows upcoming run times inline.&lt;/p&gt;

&lt;p&gt;If you've hit this before, you know how it goes — you switch tabs, paste the expression into crontab.guru, then switch back. Every. Single. Time.&lt;/p&gt;

&lt;h2&gt;
  
  
  As a solution, I created &lt;code&gt;cronread&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Explain a cron expression in plain English and show the next N scheduled run times&lt;/p&gt;

&lt;p&gt;It's zero-dependency Node.js, so you can run it immediately without installing anything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cronread &lt;span class="s2"&gt;"*/15 9-17 * * 1-5"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;npx cronread &lt;span class="s2"&gt;"*/15 9-17 * * 1-5"&lt;/span&gt;
&lt;span class="go"&gt;
  Pattern : */15 9-17 * * 1-5
  Schedule: every 15 minutes, between 9:00 and 17:00, on Monday to Friday

  Next 5 runs (local time):
    1. 2026-05-12 Tue 09:15
    2. 2026-05-12 Tue 09:30
    3. 2026-05-12 Tue 09:45
    4. 2026-05-12 Tue 10:00
    5. 2026-05-12 Tue 10:15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Pure Node.js with no dependencies: parses each field (ranges, steps, lists, wildcards) into value sets, walks forward minute by minute from the current time to find the next N matching timestamps, and renders the results as clean terminal output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;Found recurring threads on r/devops and r/node where developers debate what cron expressions actually schedule, often resorting to crontab.guru mid-terminal-session. The most popular npm cron packages (node-cron, cron) are runtime schedulers, not expression explainers — none expose a zero-dep CLI that translates a schedule to plain English. The gap between a website you have to open and a command you can run is exactly the kind of friction a micro-tool eliminates, and cron syntax is something every developer hits regardless of stack.&lt;/p&gt;




&lt;p&gt;Part of &lt;a href="https://anishpunati.github.io/mumicro/" rel="noopener noreferrer"&gt;µ micro&lt;/a&gt; — one new developer CLI tool, shipped every day. All tools are zero-dependency Node.js and run instantly with &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>cli</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>npm outdated won't tell you if a package is abandoned — so I built `stale-deps`</title>
      <dc:creator>Mu Micro</dc:creator>
      <pubDate>Mon, 11 May 2026 12:35:24 +0000</pubDate>
      <link>https://forem.com/mumicrotools/npm-outdated-wont-tell-you-if-a-package-is-abandoned-so-i-built-stale-deps-29ci</link>
      <guid>https://forem.com/mumicrotools/npm-outdated-wont-tell-you-if-a-package-is-abandoned-so-i-built-stale-deps-29ci</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Developers often don't realize their project dependencies have been abandoned — &lt;code&gt;npm outdated&lt;/code&gt; shows version lag but not how long ago a package was last published, leaving stale and potentially vulnerable packages silently lurking in codebases.&lt;/p&gt;

&lt;h2&gt;
  
  
  As a solution, I created &lt;code&gt;stale-deps&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Scan your package.json for packages that haven't been updated in a while — spot potentially abandoned npm packages instantly. Zero-dependency Node.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx stale-deps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Checking 12 packages (threshold: 365 days)...

⚠  3 stale packages found:

  PACKAGE    VERSION  LAST UPDATED   DAYS AGO
  node-uuid  1.4.8    2017-03-11      2982d  (8y 1m)
  request    2.88.2   2020-02-14      1912d  (5y 3m)
  colors     1.4.0    2021-01-16      1576d  (4y 3m)

✓ 9 packages recently updated.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Hits the npm registry public JSON API for each dep, gets &lt;code&gt;_npmPublishTime&lt;/code&gt;, computes age, outputs a sorted table. Batches 10 requests at a time. Zero dependencies.&lt;/p&gt;




&lt;p&gt;Part of &lt;a href="https://anishpunati.github.io/mumicro/" rel="noopener noreferrer"&gt;µ micro&lt;/a&gt; — one new developer CLI tool shipped every day.&lt;/p&gt;

</description>
      <category>node</category>
      <category>cli</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
