<?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: mibii</title>
    <description>The latest articles on DEV Community by mibii (@mibii).</description>
    <link>https://dev.to/mibii</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%2F1066881%2F765e062a-120d-4ee6-a07b-71a91c3d5ce7.jpeg</url>
      <title>DEV Community: mibii</title>
      <link>https://dev.to/mibii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mibii"/>
    <language>en</language>
    <item>
      <title>Hunting Vulnerable axios Versions Across Your Node.js Monorepo</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Thu, 02 Apr 2026 10:08:20 +0000</pubDate>
      <link>https://dev.to/mibii/hunting-vulnerable-axios-versions-across-your-nodejs-monorepo-2hbj</link>
      <guid>https://dev.to/mibii/hunting-vulnerable-axios-versions-across-your-nodejs-monorepo-2hbj</guid>
      <description>&lt;p&gt;When a dependency ships a bad version, your &lt;code&gt;node_modules&lt;/code&gt; tree doesn't warn you. Here's a small PowerShell script that does.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Large Node.js projects accumulate dependencies fast. A monorepo with dozens of services can have hundreds of nested &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;package-lock.json&lt;/code&gt; files, each potentially pinning a different version of a shared library.&lt;/p&gt;

&lt;p&gt;When a specific version of a popular library — say, &lt;code&gt;axios&lt;/code&gt; — turns out to carry a bug or a security regression, you need to know &lt;em&gt;exactly&lt;/em&gt; where it's referenced, across every file, at a glance. Grepping by hand doesn't scale, and most dependency auditing tools only look at the top-level lockfile.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Why these versions?&lt;/strong&gt;&lt;br&gt;
Versions &lt;code&gt;1.14.1&lt;/code&gt; and &lt;code&gt;0.30.4&lt;/code&gt; are the target of this scanner — known problematic releases that should be identified and upgraded as soon as possible.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The approach
&lt;/h2&gt;

&lt;p&gt;The script is a two-phase scanner written in PowerShell. It's designed to be dropped anywhere in your repo and run with a single command — no dependencies, no config files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1&lt;/strong&gt; recursively walks the directory tree from wherever the script lives, collecting all &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;package-lock.json&lt;/code&gt; files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$foundFiles&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-ChildItem&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$startPath&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Recurse&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Where-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$targetFiles&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-contains&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Phase 2&lt;/strong&gt; reads each file line by line, looking for the keyword &lt;code&gt;axios&lt;/code&gt;. Every matching line is printed to the console with its line number, and the keyword is highlighted in red so you can spot it instantly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="kr"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-lt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="kr"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Escape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$keyword&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nv"&gt;$hitList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Line&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Gotcha — reserved variable name&lt;/strong&gt;&lt;br&gt;
PowerShell's automatic variable &lt;code&gt;$matches&lt;/code&gt; is populated by the &lt;code&gt;-match&lt;/code&gt; operator itself. Using it as a collection causes a cryptic runtime error: &lt;em&gt;"A hash table can only be added to another hash table."&lt;/em&gt;&lt;br&gt;
The fix: name your collection &lt;code&gt;$hitList&lt;/code&gt; and use &lt;code&gt;List[PSCustomObject]&lt;/code&gt; instead of a plain array.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# WRONG — $matches is reserved by PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$matches&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;@()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$matches&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c"&gt;# runtime error!&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# CORRECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$hitList&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;System.Collections.Generic.List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]]::&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$hitList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The alarm system
&lt;/h2&gt;

&lt;p&gt;Beyond general search, the script maintains a second collection — &lt;code&gt;$alarmList&lt;/code&gt; — that fires only when a line contains one of the flagged version strings. This runs in the same loop, so there's zero extra I/O cost.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$dangerVersions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;@(&lt;/span&gt;&lt;span class="s2"&gt;"1.14.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.30.4"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="kr"&gt;foreach&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ver&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$dangerVersions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="kr"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Escape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ver&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nv"&gt;$alarmList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Version&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$ver&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DirectoryName&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c"&gt;# full path to folder&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;LineNum&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Trim&lt;/span&gt;&lt;span class="err"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After all files are scanned, the alarm block prints a consolidated summary at the very bottom — version found, filename, directory path, and the exact line — so there's no ambiguity about what needs updating:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!                                              !
!   ⚠️  ALARM — VULNERABLE VERSIONS DETECTED  ⚠️  !
!                                              !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  ▶ Version    : 0.30.4
  ▶ File       : package-lock.json
  ▶ Directory  : C:\projects\my-app\services\api
  ▶ Line #     : 1042
  ▶ Content    : "version": "0.30.4",
  ───────────────────────────────────────────────────
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The console output also uses color: &lt;code&gt;axios&lt;/code&gt; keyword in red, dangerous version numbers in yellow, file headers in magenta — making it easy to scan hundreds of lines at a glance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running the script
&lt;/h2&gt;

&lt;p&gt;Save the file as &lt;code&gt;axios-finder.ps1&lt;/code&gt;, place it anywhere inside your project root, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\axios-finder.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your execution policy blocks unsigned scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;powershell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Bypass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;\axios-finder.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Node.js, no npm, no extra modules required. It runs on any machine with PowerShell 5.1 or later — which means any modern Windows box, out of the box.&lt;/p&gt;




&lt;h2&gt;
  
  
  Full script
&lt;/h2&gt;

&lt;p&gt;The complete script with colored output, per-file hit counts, version highlighting, and the alarm block is available on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/mibii/axios-bad-version-finder" rel="noopener noreferrer"&gt;https://github.com/mibii/axios-bad-version-finder&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Found this useful? &lt;strong&gt;&lt;a href="https://buymeacoffee.com/techmobilebox" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;/strong&gt; , Drop a ❤️ or leave a comment — happy to extend the script to support other libraries or output formats.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>security</category>
      <category>node</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Prop Trading 2.0 (Trade-to-Earn)</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Wed, 11 Mar 2026 23:20:15 +0000</pubDate>
      <link>https://dev.to/mibii/prop-trading-20-trade-to-earn-3830</link>
      <guid>https://dev.to/mibii/prop-trading-20-trade-to-earn-3830</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Q-big-One trading core is an alternative to MetaTrader 4/5.&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  I developed my own trading core and called it Q-big-One.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Event Sourcing + WAL: Full audit trail. Instant crash recovery via event replay.&lt;/li&gt;
&lt;li&gt;Full Source Control: Every line is yours. Customise risk, commissions, execution.&lt;/li&gt;
&lt;li&gt;Cloud Native: Docker/Kubernetes ready. AWS, GCP, bare metal.&lt;/li&gt;
&lt;li&gt;Multi-Asset: Crypto, Forex, CFD — all in one engine with per-symbol config.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc1zzvbzw06t6i0t31j5.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc1zzvbzw06t6i0t31j5.JPG" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Ultimate Sandbox&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every broker platform is just a sandbox until orders hit the LP. This engine gives you the exact same technology brokers use to "play" against traders. Understand the mechanics of B-Book, slippage, and stop-hunts by being the one who controls them.&lt;/p&gt;

&lt;p&gt;Master the Game by Owning the Board&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;A-Book / Real Market Bridge&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Connect the "Tick Feeder" module to your real Binance/Bybit account via API keys. The core now acts as a massive router. You trade on 100 internal accounts inside the core, and the core aggregates net exposure and hedges it on the real market.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Internal Virtual Volume → Real Liquidity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Self-Hosted "Personal Prop Firm"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Stop paying fees to prop firms for challenges. Spin up your own environment. Create unlimited accounts, run different bots, and act as the &lt;strong&gt;Liquidity Provider&lt;/strong&gt; for your own strategies. Test execution, slippage, and spread widening in a controlled "Matrix" where you control the laws of physics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infinite AccountsCustom Risk RulesZero Fees&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample use case Prop Trading 2.0 (Trade-to-Earn: &lt;a href="https://qbig.one/" rel="noopener noreferrer"&gt;(https://qbig.one/)&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;No loss money, No registration, No charge money. You enter the terminal, see a pool of funded accounts, and hit CLAIM. &lt;br&gt;
The backend mints an anonymous JWT, binds it to your device, and hands you the keys. Strategy flopped? Hit RELEASE, return the account, grab another. Zero friction, zero commitment. Earn your first grade. &lt;/p&gt;

&lt;h2&gt;
  
  
  Аккаунт эволюционирует: 🔘 Bronze ➔ 🥈 Silver ➔ 👑 Proven Alpha.
&lt;/h2&gt;

&lt;p&gt;Prop Firm offers no-charge options. Prop Firm provides capital (virtual) to everyone; if a trader is successful, they receive PROVEN_ALPHA status, A-Book Bridge begins mirroring it to the real market, and Prop Firm shares the profit with the trader.&lt;/p&gt;

</description>
      <category>qbigone</category>
      <category>tradingengine</category>
      <category>rust</category>
      <category>propfirm</category>
    </item>
    <item>
      <title>Building Your Own PowerShell Security Auditor!</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Sun, 01 Jun 2025 13:19:35 +0000</pubDate>
      <link>https://dev.to/mibii/building-your-own-powershell-security-auditor-4lap</link>
      <guid>https://dev.to/mibii/building-your-own-powershell-security-auditor-4lap</guid>
      <description>&lt;p&gt;From Novice to Cyber Helper: Building Your Own PowerShell Security Auditor! &lt;/p&gt;

&lt;h2&gt;
  
  
  Hey fellow coding enthusiasts!
&lt;/h2&gt;

&lt;p&gt;We all started our programming journey somewhere, and one of the best ways to learn is by building something practical that solves a real (even if small) problem. Today, I want to share the experience of developing a simple yet useful tool in PowerShell: a local system security auditor. This project perfectly demonstrates how you can combine system commands, process manipulation, and even create a graphical user interface (GUI) – all using PowerShell!&lt;br&gt;
We'll go from an idea to an interactive application that not only highlights suspicious activity but also offers to take action.&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's dive in!
&lt;/h2&gt;

&lt;p&gt;Step 1: The Idea and First Drafts – What Do We Want to Check?&lt;br&gt;
Initially, the task was simple: write a script to quickly assess certain security aspects of a local system. The key areas we decided to focus on were:&lt;br&gt;
Network Activity: Which ports is our system listening on? Are there any non-standard ones or processes with suspiciously high PIDs (Process Identifiers)?&lt;br&gt;
Process Integrity: Are all running processes digitally signed? Unsigned binaries can be a sign of trouble.&lt;br&gt;
The first thought for network analysis was the good old netstat -ano. For checking signatures, the built-in Windows mechanism Get-AuthenticodeSignature.&lt;/p&gt;
&lt;h1&gt;
  
  
  Initial (simplified) idea
&lt;/h1&gt;

&lt;p&gt;$netstatOutput = netstat -ano | findstr LISTENING&lt;/p&gt;
&lt;h1&gt;
  
  
  ... some text parsing here ...
&lt;/h1&gt;

&lt;p&gt;$processes = Get-Process&lt;br&gt;
foreach ($proc in $processes) {&lt;br&gt;
    # ... signature check ...&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This is a starting point. But we want to do it cooler and more "PowerShell-idiomatically"!&lt;br&gt;
Step 2: The PowerShell Way – Objects Instead of Plain Text&lt;br&gt;
Parsing the text output of netstat is a thankless and fragile task. PowerShell loves objects! And for network connections, there's a wonderful cmdlet: Get-NetTCPConnection.&lt;/p&gt;

&lt;p&gt;✅ Key Insight: Instead of parsing strings, Get-NetTCPConnection -State Listen immediately gives us objects with convenient properties like LocalPort and OwningProcess (that very PID). This makes the code cleaner and more reliable.&lt;/p&gt;
&lt;h1&gt;
  
  
  A more "correct" approach
&lt;/h1&gt;

&lt;p&gt;$listeningConnections = Get-NetTCPConnection -State Listen&lt;br&gt;
foreach ($conn in $listeningConnections) {&lt;br&gt;
    $pid = $conn.OwningProcess&lt;br&gt;
    $port = $conn.LocalPort&lt;br&gt;
    # ... further analysis ...&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Additionally, we decided it would be useful to see not just the PID for each listening port, but also the path to the process's executable. This is done using Get-Process -Id $pid | Select-Object Path, ProcessName.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Graphical User Interface – Making It Pretty and Understandable
&lt;/h2&gt;

&lt;p&gt;Outputting results to the console is fine, but a popup window with a report looks much more professional and user-friendly. This is where the magic of the .NET Framework, accessible directly from PowerShell, comes in!&lt;br&gt;
✅ Key Insight: Add-Type -AssemblyName System.Windows.Forms opens up the entire world of Windows Forms to us. We can create forms, text boxes, buttons – everything needed for a simple GUI.&lt;br&gt;
Add-Type -AssemblyName System.Windows.Forms&lt;br&gt;
Add-Type -AssemblyName System.Drawing # For sizes, colors, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Show-ResultPopup {
    param ($text)
    $popup = New-Object Windows.Forms.Form
    $popup.Text = "System Audit Result"
    # ... configure sizes, controls (TextBox) ...
    $popup.ShowDialog() # Show the window modally
    $popup.Dispose()    # IMPORTANT: Release resources!
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't forget .Dispose() for forms! This releases the resources used by GUI elements when they are no longer needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Signature Check – Trust, but Verify
&lt;/h2&gt;

&lt;p&gt;For checking the digital signatures of executable files, Get-AuthenticodeSignature -FilePath $path is our best friend. If the Status property of the result is not Valid, it's a reason for concern (or, as we found out, sometimes a peculiarity of UWP apps).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$signature = Get-AuthenticodeSignature -FilePath "C:\Path\To\File.exe"
if ($signature.Status -ne [System.Management.Automation.SignatureStatus]::Valid) {
    # Suspicious!
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Interactivity – Giving the User a Choice!
&lt;/h2&gt;

&lt;p&gt;Simply showing a list of "suspicious" unsigned processes is half the battle. What if we gave the user the option to try and "kill" (terminate) them right there?&lt;br&gt;
✅ Key Insight: Here we combine System.Windows.Forms.MessageBox to request confirmation from the user and Stop-Process to terminate the process.&lt;br&gt;
Request Admin Rights: Terminating processes often requires administrator privileges. The script should check for this and, if possible, offer to restart with elevated rights.&lt;br&gt;
Confirmation Dialog: For each "problematic" process, display a MessageBox with details (name, PID, path) and the question: "Terminate?".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$userChoice = [System.Windows.Forms.MessageBox]::Show($ownerForm, "Terminate process X?", "Confirmation", [System.Windows.Forms.MessageBoxButtons]::YesNo)
if ($userChoice -eq [System.Windows.Forms.DialogResult]::Yes) {
    Stop-Process -Id $processId -Force -ErrorAction SilentlyContinue
    # Log the result
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note the -Force for Stop-Process and error handling (at least -ErrorAction SilentlyContinue or a full try-catch).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: A Beginner's Headache – Encodings! 😵
&lt;/h2&gt;

&lt;p&gt;During development, especially when we added non-English messages (Cyrillic in our original case) to MessageBox, we ran into a problem: instead of proper characters, we saw "mojibake" (Ð”Ð»Ñ etc.).&lt;br&gt;
✅ Key Insight (and a common beginner mistake): This is an encoding issue with the .ps1 file. PowerShell expects a certain encoding (often UTF-8 with BOM), but the file might be saved in another (e.g., ANSI).&lt;br&gt;
Solution: Always save your .ps1 files containing non-ASCII characters in UTF-8 with BOM (Byte Order Mark) encoding. Most code editors (VS Code, PowerShell ISE, Notepad++) allow you to do this.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did We End Up With?
&lt;/h2&gt;

&lt;p&gt;We created a small but functional PowerShell script that:&lt;br&gt;
Analyzes network listeners.&lt;br&gt;
Checks the digital signatures of running processes.&lt;br&gt;
Displays results in a user-friendly GUI.&lt;br&gt;
Interactively offers the user to terminate processes with invalid signatures.&lt;/p&gt;

&lt;p&gt;Considers the need for administrator privileges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons and Takeaways for Beginners:
&lt;/h2&gt;

&lt;p&gt;Use PowerShell's Native Tools: Cmdlets that work with objects (Get-NetTCPConnection, Get-Process) are preferable to parsing text from external utilities.&lt;br&gt;
Don't Be Afraid of .NET: PowerShell integrates beautifully with .NET, opening up vast possibilities (e.g., for GUI creation).&lt;br&gt;
Handle Errors: try-catch blocks and proper use of -ErrorAction will make your script more robust.&lt;br&gt;
Manage Resources: For GUI objects, don't forget Dispose().&lt;br&gt;
Encodings – Your Friend (or Foe): Remember UTF-8 with BOM for files with international characters.&lt;br&gt;
Iterative Development: Start small and gradually add functionality. Our script also went through several stages of improvement!&lt;/p&gt;

&lt;p&gt;This project is an excellent example of how you can combine system administration, a bit of programming, and user interface creation with a powerful tool like PowerShell.&lt;br&gt;
I hope this experience inspires you to create your own useful utilities! Experiment, learn, and share your successes.&lt;br&gt;
Happy coding! 💻✨&lt;/p&gt;

</description>
      <category>ps1</category>
    </item>
    <item>
      <title>Uber Taxi Idea for everything</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Thu, 17 Apr 2025 12:48:59 +0000</pubDate>
      <link>https://dev.to/mibii/uber-taxi-idea-for-everything-1l8n</link>
      <guid>https://dev.to/mibii/uber-taxi-idea-for-everything-1l8n</guid>
      <description>&lt;p&gt;Uber Taxi Idea for everything. &lt;br&gt;
   Do you have something to offer others, but still don't have your own website? Or you have a website or a page on a social network, but you need to increase the visibility of your offers. &lt;br&gt;
The service &lt;a href="https://infometka.com" rel="noopener noreferrer"&gt;https://infometka.com&lt;/a&gt; let your offers become more and more visible. &lt;br&gt;
   The idea of ​​the service is to grow together, and not to create separate, disparate websites that each one has to promote separately to achieve visibility. Infometka on the map - it looks like your mini website on the Globe map. It will connect you with your customers (using a feedback form, links to your social networks, direct chat or bot)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrc6txcrvw1c3vi024ao.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrc6txcrvw1c3vi024ao.JPG" alt="Image description" width="800" height="938"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp2q5hvgokcnsox7gruz.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp2q5hvgokcnsox7gruz.JPG" alt="Image description" width="800" height="936"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>infometka</category>
      <category>visibility</category>
      <category>p2p</category>
      <category>offers</category>
    </item>
    <item>
      <title>Бесплатный стартовый веб-сайт, для потенциальных клиетов</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Mon, 10 Mar 2025 07:48:10 +0000</pubDate>
      <link>https://dev.to/mibii/biesplatnyi-startovyi-vieb-sait-dlia-potientsialnykh-kliietov-1mp1</link>
      <guid>https://dev.to/mibii/biesplatnyi-startovyi-vieb-sait-dlia-potientsialnykh-kliietov-1mp1</guid>
      <description>&lt;p&gt;В конкурентном мире фриланса, чтобы выделиться и создать лояльную клиентскую базу, требуется больше, чем просто качественное выполнение работы — это предложение реальной ценности с самого начала. Одна из эффективных стратегий — предоставить потенциальным клиентам бесплатный стартовый веб-сайт. Такой подход не только демонстрирует вашу приверженность их успеху, но и закладывает основу для будущего сотрудничества.&lt;/p&gt;

&lt;p&gt;Вот как можно преподнести эту идею, чтобы привлечь клиентов, которым нужен сайт, но которые не знают, с чего начать:&lt;/p&gt;

&lt;p&gt;Пример аргумента, который следует использовать, когда фрилансер обращается к потенциальным клиентам:&lt;/p&gt;

&lt;p&gt;Возможно, вам нужен сайт, но вы не уверены, каким он должен быть. Это нормально, поэтому я сделаю для вас сайт — бесплатно — который просто станет отправной точкой, основой для дальнейшего совершенствования. Сайт, который вы сможете дальше развивать, с моей помощью или с помощью любого другого фрилансера, или даже самостоятельно.&lt;br&gt;
Представьте, что вы получаете свой собственный сайт, который станет вашим собственным путем к новым знаниям и возможностям. Все начинается с желания что-то улучшить, с попыток узнать и понять — как это можно сделать? С помощью чего? Так вы узнаете новое, расширяете свой кругозор. К вам приходят новые идеи, открываются неожиданные перспективы.&lt;br&gt;
Мы живем в то время, когда вопросы становятся важнее ответов. Возникновение вопросов порождает желание найти ответы, а это ведет к росту и развитию. Ваш сайт может стать катализатором этого процесса, помогая вам:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Лучше понять свой бизнес или проект&lt;/li&gt;
&lt;li&gt;Найти новых клиентов и партнеров&lt;/li&gt;
&lt;li&gt;Экспериментировать с новыми идеями&lt;/li&gt;
&lt;li&gt;Учиться и развиваться в мире современных технологий.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Получив бесплатно первую версию сайта, вы, скорее всего, вернетесь ко мне за дальнейшими улучшениями или консультациями по мере развития ваших потребностей. В этот момент мы можем обсудить небольшое вознаграждение за мои постоянные услуги.&lt;br&gt;
Не упустите шанс начать это захватывающее путешествие. Давайте создадим для вас базовый сайт, который станет основой вашего присутствия в Интернете. А затем вместе мы улучшим его, адаптируем к вашим растущим потребностям и целям. Помните, каждый великий проект начинается с маленького шага. Сделайте этот шаг сегодня — свяжитесь со мной, и давайте воплотим ваши идеи в реальность!"&lt;/p&gt;

&lt;h2&gt;
  
  
  Помогаю своим клиентам продвигать их новый веб-сайт
&lt;/h2&gt;

&lt;p&gt;Вы работаете над веб-сайтом для своих клиентов? Вот дополнительный способ добавить ценность: как только сайт будет готов, предложите своему клиенту возможность разместить информацию о нем на &lt;a href="https://infometka.com/" rel="noopener noreferrer"&gt;https://infometka.com/&lt;/a&gt;. (это совершенно бесплатно). К этому моменту клиент начнет продвигать свой новый сайт и свой бизнес. (это веская причина — клиент не просто получает свой собственный новый сайт, но и начинает бесплатное продвижение)&lt;br&gt;
Эта услуга позволяет любому человеку — будь то стационарный бизнес, например кафе, или предлагающий мобильные услуги, например такси или ремонт дома, — оказаться на карте. Таким образом, ваши клиенты начнут продвигать свой новый веб-сайт и бизнес, что даст им преимущество в охвате своей аудитории. Это беспроигрышный вариант, который может сделать ваше предложение еще более привлекательным.&lt;/p&gt;

&lt;p&gt;Приняв этот подход, ориентированный на ценность, вы не только создаете доверие и взаимопонимание со своими клиентами, но и позиционируете себя как партнера в их долгосрочном успехе. Предложение бесплатного стартового сайта может привести к постоянной работе и рекомендациям, что делает его разумной стратегией на сегодняшнем рынке фриланса.&lt;/p&gt;

&lt;p&gt;Удачи и счастливого фриланса!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Most Honest Smart Contract: A Necessary Shift in Tokenization Draft</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Tue, 11 Feb 2025 11:39:45 +0000</pubDate>
      <link>https://dev.to/mibii/the-most-honest-smart-contract-a-necessary-shift-in-tokenizationdraft-3675</link>
      <guid>https://dev.to/mibii/the-most-honest-smart-contract-a-necessary-shift-in-tokenizationdraft-3675</guid>
      <description>&lt;h2&gt;
  
  
  Why We Need a Truly Fair Smart Contract
&lt;/h2&gt;

&lt;p&gt;Blockchain technology was meant to free financial systems from centralized control, but today’s token landscape tells a different story. Instead of decentralization, we see projects with hidden privileges, presales benefiting insiders, and distribution schemes designed to enrich a few at the expense of many.&lt;/p&gt;

&lt;p&gt;We don’t need another blockchain—we need a smart contract that enforces fairness at the protocol level. A contract that ensures tokens are distributed openly, over time, and without any centralized control.&lt;/p&gt;

&lt;p&gt;OpenZeppelin, the go-to library for smart contract templates, provides useful building blocks—but not moral safeguards. No existing template guarantees a fair, time-based distribution with no backdoors for the creator. That’s why this contract is necessary. It ensures that the token's value emerges from its broadest possible adoption, not from manipulation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Principles of the Most Honest Smart Contract
&lt;/h2&gt;

&lt;p&gt;For a smart contract to be truly fair, it must adhere to the following principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed Supply: The total number of tokens must be immutable from the moment of deployment.&lt;/li&gt;
&lt;li&gt;Fair Distribution: should provide mechanisms to ensure broad and time-based token distribution.&lt;/li&gt;
&lt;li&gt;No Special Preferences: The creator must have no special privileges, no reserved tokens, and no way to manipulate distribution.&lt;/li&gt;
&lt;li&gt;No Post-Deployment Control: Once deployed, the contract must be self-executing, requiring no administrative intervention.&lt;/li&gt;
&lt;li&gt;Time-Based Distribution: Tokens should be issued gradually over time to prevent early hoarding.&lt;/li&gt;
&lt;li&gt;Open Access: Anyone should be able to claim tokens, ensuring the broadest possible distribution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why OpenZeppelin Falls Short
&lt;/h2&gt;

&lt;p&gt;OpenZeppelin’s templates are designed for flexibility, not for enforcing fairness. Here’s why they don’t solve the problem:&lt;/p&gt;

&lt;p&gt;OpenZeppelin, the go-to library for smart contract templates, provides useful building blocks—but not moral safeguards. No existing template guarantees a fair, time-based distribution with no backdoors for the creator. That’s why this contract is necessary. It ensures that the token's value emerges from its broadest possible adoption, not from manipulation.&lt;/p&gt;

&lt;p&gt;No Built-in Fair Distribution: OpenZeppelin does not provide mechanisms to ensure broad and time-based token distribution.&lt;br&gt;
These features reflect the industry’s priorities—control, not fairness. That’s why this contract is different. It isn’t just code; it’s a commitment to the principles that blockchain was meant to uphold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons from Bitcoin: Why Fairness Creates Value
&lt;/h2&gt;

&lt;p&gt;Bitcoin is the ultimate proof that fairness leads to resilience. Its success was not driven by insider allocations or liquidity tricks—it thrived because its creator disappeared, leaving behind an immutable system.&lt;/p&gt;

&lt;h2&gt;
  
  
  This contract follows the same logic:
&lt;/h2&gt;

&lt;p&gt;No Founder Control: The creator has no special privileges or allocation rights.&lt;br&gt;
No Presale or Private Investors: Everyone starts on equal footing.&lt;br&gt;
Automated, Transparent Distribution: Tokens are allocated based on a predictable and open mechanism, not hidden deals.&lt;br&gt;
This is not just a technical challenge but a moral imperative. Let us build systems that future generations will recognize as fair—systems written not in ink, but in code.&lt;/p&gt;

&lt;p&gt;The most honest token should be distributed freely, ensuring equitable access for all. Only through wide-reaching, fair distribution can a token acquire intrinsic value. &lt;/p&gt;

&lt;p&gt;In essence, the ideal model resembles testnet faucets—dispensing tokens for testing and development—but with two critical distinctions: a strict cap on total supply and a carefully designed issuance mechanism. This approach ensures fairness, decentralization, and grassroots adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lets start this journey !
&lt;/h2&gt;

&lt;p&gt;Let's return the words "decentralization" and "blockchain" to their true high meaning. And let's start creating something that, after its creation, works independently even from its creator.  &lt;a href="https://most-honest-token.gitbook.io/honest-token" rel="noopener noreferrer"&gt;Fairest and Most Honest Token Smart Contract Project&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solidity</category>
      <category>smartcontract</category>
      <category>honesttoken</category>
      <category>web3</category>
    </item>
    <item>
      <title>Fairest and Most Honest Token Smart Contract</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Wed, 05 Feb 2025 11:02:06 +0000</pubDate>
      <link>https://dev.to/mibii/fairest-and-most-honest-token-smart-contract-47b9</link>
      <guid>https://dev.to/mibii/fairest-and-most-honest-token-smart-contract-47b9</guid>
      <description>&lt;p&gt;Lets start this journey ! &lt;/p&gt;

&lt;p&gt;Let's return the words decentralization and blockchain to their true high meaning. &lt;br&gt;
And let's start creating something that, after its creation, works independently even from its creator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://most-honest-token.gitbook.io/honest-token" rel="noopener noreferrer"&gt;https://most-honest-token.gitbook.io/honest-token&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Develop THE MOST HONEST TOKEN, founded on fixed token emission and the fairest distribution algorithm imaginable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Token Principles:
&lt;/h2&gt;

&lt;p&gt;No presale, ICO, IDO, or private sale.&lt;/p&gt;

&lt;p&gt;No allocations for the creator, developers, or investors.&lt;/p&gt;

&lt;p&gt;No hidden reserves or special privileges for any address.&lt;/p&gt;

&lt;p&gt;Distribution should be free, requiring only network gas fees.&lt;/p&gt;

&lt;p&gt;No post-deployment control: contract is immutable once deployed.&lt;/p&gt;

&lt;p&gt;Open-source and verifiable by anyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://explorer.gitcoin.co/#/projects/0xc6ba6f3ab8448f15ba06aeec26fa65abef21f6356c940164f9d7b7673702e524" rel="noopener noreferrer"&gt;https://explorer.gitcoin.co/#/projects/0xc6ba6f3ab8448f15ba06aeec26fa65abef21f6356c940164f9d7b7673702e524&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mosthonesttoken</category>
      <category>web3</category>
      <category>honesttoken</category>
      <category>fairesttoken</category>
    </item>
    <item>
      <title>Podcast - Code Beyond the Hype - "The Most Honest Token"</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Tue, 04 Feb 2025 07:31:59 +0000</pubDate>
      <link>https://dev.to/mibii/podcast-2-titlecode-beyond-the-hype-the-most-honest-token--270i</link>
      <guid>https://dev.to/mibii/podcast-2-titlecode-beyond-the-hype-the-most-honest-token--270i</guid>
      <description>&lt;h2&gt;
  
  
  Episode Description:
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ApuBdqLtyW0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
In today’s crypto landscape, we’re bombarded with flashy schemes promising quick riches. From “tap-to-earn” apps where users click pictures for tokens to meme coins hyped on social media, it’s easy to get swept up in the hype. But beneath the surface lies a troubling truth: most of these projects are designed to enrich their creators at the expense of unsuspecting participants.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fothhvoof7prkgz6db3db.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fothhvoof7prkgz6db3db.JPG" alt="Image description" width="800" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this episode, we dive deep into the mechanics of dishonest token distribution models—like tap-to-earn scams and meme coin presales—and ask why no one has yet created a truly honest token. What if we could design a system that distributes tokens fairly, without hidden privileges for developers? Could a decentralized faucet-like mechanism replace exploitative practices?&lt;/p&gt;

&lt;p&gt;We’ll also clarify the difference between tokens and stablecoins, explore how trust is built (or broken) in blockchain systems, and discuss why Bitcoin remains a benchmark for honesty despite its imperfections. Join us as we imagine what a truly fair token might look like—and whether humanity is ready for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  We start this Project
&lt;/h2&gt;

&lt;p&gt;here is the link for detail description&lt;/p&gt;

&lt;p&gt;&lt;a href="https://most-honest-token.gitbook.io/honest-token" rel="noopener noreferrer"&gt;https://most-honest-token.gitbook.io/honest-token&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All other podcast - will be here as well: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp6un3gi9sawqvmebo1t.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp6un3gi9sawqvmebo1t.JPG" alt="Image description" width="800" height="1211"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://infometka.com/podcast-cbh" rel="noopener noreferrer"&gt;https://infometka.com/podcast-cbh&lt;/a&gt;&lt;/p&gt;

</description>
      <category>podcast</category>
      <category>web3</category>
      <category>honest</category>
      <category>honesttoken</category>
    </item>
    <item>
      <title>Podcast Title: "Code Beyond the Hype: Mastering Backend, Web3, and the Art of Focus"</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Mon, 03 Feb 2025 09:52:26 +0000</pubDate>
      <link>https://dev.to/mibii/podcast-title-code-beyond-the-hype-mastering-backend-web3-and-the-art-of-focus-jdn</link>
      <guid>https://dev.to/mibii/podcast-title-code-beyond-the-hype-mastering-backend-web3-and-the-art-of-focus-jdn</guid>
      <description>&lt;p&gt;Podcast Title: "Code Beyond the Hype: Mastering Backend, Web3, and the Art of Focus"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://infometka.com/podcast-cbh" rel="noopener noreferrer"&gt;https://infometka.com/podcast-cbh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkofubx9vhpf0i7rrvr3.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkofubx9vhpf0i7rrvr3.JPG" alt="Image description" width="800" height="1301"&gt;&lt;/a&gt;&lt;br&gt;
Podcast Description:&lt;br&gt;
In a world drowning in tech trends, frameworks, and buzzwords, how do you cut through the noise and focus on what truly matters in programming? Welcome to Code Beyond the Hype , the podcast that helps developers—from beginners to seasoned pros—navigate the ever-evolving landscape of software development with clarity and purpose.&lt;/p&gt;

&lt;p&gt;Hosted by Alex, your skeptical yet curious co-host, and Jamie, a seasoned expert with experience spanning traditional web development to the cutting-edge world of Web3, this show dives deep into the skills, tools, and mindsets that actually move the needle. Whether you're building scalable backends, exploring decentralized systems, or just trying to figure out where to start, we’ve got you covered.&lt;/p&gt;

&lt;p&gt;In this episode, we tackle the big questions: Why is the backend the heart of any system? How do you choose the right tools for your stack without getting overwhelmed? What makes Web3 so revolutionary—and how can you dive in safely? Plus, we share actionable advice on avoiding distractions, leveraging AI, and staying laser-focused on high-impact work.&lt;/p&gt;

&lt;p&gt;Tune in for candid conversations, practical tips, and a healthy dose of skepticism about the latest "shiny object" syndrome in tech. Whether you’re a JavaScript coder mastering Express.js, a Python enthusiast diving into Flask, or a Web3 explorer learning Solidity and Hardhat, this episode will give you the clarity and confidence to take your skills to the next level.&lt;/p&gt;

&lt;p&gt;Subscribe now and join us as we decode the art of programming—one concept at a time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>backend</category>
      <category>frontend</category>
      <category>programming</category>
    </item>
    <item>
      <title>OpenPeer vs LocalCryptos</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Sun, 19 Jan 2025 06:30:41 +0000</pubDate>
      <link>https://dev.to/mibii/openpeer-vs-localcryptos-29dc</link>
      <guid>https://dev.to/mibii/openpeer-vs-localcryptos-29dc</guid>
      <description>&lt;p&gt;LocalCryptos - был интересный и инновационный сервис для P2P торговли криптовалютами, который закрылся в октябре 2022 года после 5 лет работы3.&lt;br&gt;
LocalCryptos воплощал многие идеальные черты P2P криптовалютных платформ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Самохранение (self-custody): Пользователи полностью контролировали свои средства через веб-кошелек.&lt;/li&gt;
&lt;li&gt;Децентрализованный эскроу: Использовались смарт-контракты Ethereum вместо посредников для безопасных сделок.&lt;/li&gt;
&lt;li&gt;Криптография в браузере: Позволяла обычным пользователям торговать без установки дополнительного ПО.&lt;/li&gt;
&lt;li&gt;Мультивалютность: Поддерживались Bitcoin, Ethereum и другие криптовалюты.&lt;/li&gt;
&lt;li&gt;Отсутствие KYC: Не требовалась обязательная верификация личности.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Причины закрытия проекта не совсем ясны. Команда упомянула "внутренние и внешние факторы", которые помешали полностью реализовать их видение. Возможно, сыграли роль регуляторное давление и конкуренция с более крупными платформами.&lt;br&gt;
Несмотря на закрытие, LocalCryptos оставил важное наследие в сфере P2P криптоторговли. Многие современные платформы, такие как Binance P2P, HODL HODL и Paxful4, переняли некоторые из его инновационных подходов к безопасности и децентрализации.&lt;br&gt;
Для тех, кто ищет похожие сервисы сегодня, можно рассмотреть платформы вроде OpenPeer5, которые также фокусируются на самохранении и P2P-торговле без KYC.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openpeer.xyz/" rel="noopener noreferrer"&gt;https://openpeer.xyz/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.openpeer.xyz/" rel="noopener noreferrer"&gt;OpenPeer&lt;/a&gt;&lt;br&gt;
OpenPeer &lt;a href="https://app.openpeer.xyz/" rel="noopener noreferrer"&gt;https://app.openpeer.xyz/&lt;/a&gt; - это децентрализованная P2P платформа для обмена криптовалют, которая стремится обеспечить безопасные и анонимные сделки без необходимости доверять третьей стороне.&lt;br&gt;
Основные характеристики:&lt;br&gt;
Не требует KYC&lt;br&gt;
Использует мультиподписные транзакции для обеспечения безопасности&lt;br&gt;
Поддерживает Bitcoin и некоторые другие криптовалюты&lt;br&gt;
Предлагает встроенный чат для общения между пользователями&lt;br&gt;
Имеет систему репутации для пользователей&lt;/p&gt;

&lt;h2&gt;
  
  
  Сравнение OpenPeer и LocalCryptos
&lt;/h2&gt;

&lt;p&gt;Характеристика    OpenPeer    LocalCryptos&lt;br&gt;
Тип платформы   Децентрализованная P2P    Децентрализованная P2P&lt;br&gt;
Криптовалюты    Bitcoin и некоторые альткоины    Ethereum, Bitcoin, Litecoin, Dash, Bitcoin Cash&lt;br&gt;
KYC Не требуется Не требуется&lt;br&gt;
Механизм безопасности   Мультиподписные транзакции Смарт-контракты (для Ethereum) и скрипты (для Bitcoin)&lt;br&gt;
Кошелек  Самохранение    Самохранение&lt;br&gt;
Веб-интерфейс   Да    Да&lt;br&gt;
Встроенный чат Да    Да&lt;br&gt;
Система репутации   Да    Да&lt;br&gt;
Статус    Активен  Закрыт (с октября 2022)&lt;/p&gt;

&lt;p&gt;Что касается доверия к OpenPeer, платформа использует проверенные криптографические методы для обеспечения безопасности сделок, что делает ее потенциально надежной. Однако, как и с любым новым сервисом, следует проявлять осторожность и начинать с небольших сумм.&lt;br&gt;
OpenPeer во многом похож на LocalCryptos, особенно в плане децентрализации и отсутствия KYC. &lt;/p&gt;

&lt;h2&gt;
  
  
  Однако есть некоторые отличия:
&lt;/h2&gt;

&lt;p&gt;LocalCryptos использовал смарт-контракты Ethereum, что позволяло поддерживать более широкий спектр криптовалют.&lt;br&gt;
OpenPeer фокусируется на Bitcoin и использует мультиподписные транзакции, что может обеспечивать дополнительную безопасность для BTC-сделок.&lt;br&gt;
LocalCryptos имел более длительную историю и, соответственно, большее доверие пользователей.&lt;br&gt;
В целом, OpenPeer выглядит многообещающе как преемник идей LocalCryptos, но ему еще предстоит доказать свою надежность и эффективность в долгосрочной перспективе.&lt;/p&gt;

</description>
      <category>localcryptos</category>
      <category>openpeer</category>
      <category>p2p</category>
    </item>
    <item>
      <title>Create your own booking form in a minutes</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Sun, 12 Jan 2025 00:44:44 +0000</pubDate>
      <link>https://dev.to/mibii/create-your-own-booking-form-in-a-minutes-3i5p</link>
      <guid>https://dev.to/mibii/create-your-own-booking-form-in-a-minutes-3i5p</guid>
      <description>&lt;p&gt;You can stick a free ad on the globe, make an announcement, make your offer noticeable — you can do this with the help of the “Infometka” service.&lt;/p&gt;

&lt;p&gt;Each stick has an interactive form. It is integrates with your Telegram. Get instant requests and bookings requests right in your Telegram app!&lt;/p&gt;

&lt;p&gt;How to create — click &lt;a href="https://infometka.com/" rel="noopener noreferrer"&gt;anywhere on the map&lt;/a&gt;, click on the point and fill out the form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra9qo3hjvmqqdoncc2kk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra9qo3hjvmqqdoncc2kk.png" alt="Image description" width="800" height="739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then fill a simple form&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3wm0mig6gbsxn8ij3w8.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3wm0mig6gbsxn8ij3w8.JPG" alt="Image description" width="800" height="857"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost done , finaly to activate your “Infometka” click /Activate in the Telegram bot &lt;a href="https://t.me/infometka_bot" rel="noopener noreferrer"&gt;https://t.me/infometka_bot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa05g6cf0mn9953mq5l8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa05g6cf0mn9953mq5l8f.png" alt="Image description" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Done!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo07d3bssdmmdxdqlofqu.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo07d3bssdmmdxdqlofqu.JPG" alt="Image description" width="800" height="1223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;samples:&lt;br&gt;
&lt;a href="https://infometka.com/phuket-yacht-charter" rel="noopener noreferrer"&gt;https://infometka.com/phuket-yacht-charter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://infometka.com/taxi_hapdeok" rel="noopener noreferrer"&gt;https://infometka.com/taxi_hapdeok&lt;/a&gt;&lt;br&gt;
&lt;a href="https://infometka.com/vancouver-taxi" rel="noopener noreferrer"&gt;https://infometka.com/vancouver-taxi&lt;/a&gt;&lt;br&gt;
&lt;a href="https://infometka.com/pattaya-taxi" rel="noopener noreferrer"&gt;https://infometka.com/pattaya-taxi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gg4qsp4r0yo0tzbjvd4.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gg4qsp4r0yo0tzbjvd4.JPG" alt="Image description" width="800" height="1047"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>freead</category>
      <category>telegram</category>
      <category>infometka</category>
      <category>contactform</category>
    </item>
    <item>
      <title>npm error 'node' is not recognized as an internal or external command</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Thu, 02 Jan 2025 05:57:41 +0000</pubDate>
      <link>https://dev.to/mibii/npm-error-node-is-not-recognized-as-an-internal-or-external-command-1g1k</link>
      <guid>https://dev.to/mibii/npm-error-node-is-not-recognized-as-an-internal-or-external-command-1g1k</guid>
      <description>&lt;p&gt;npm error command failed&lt;br&gt;
npm error command C:\WINDOWS\system32\cmd.exe /d /s /c node install.mjs&lt;br&gt;
npm error 'node' is not recognized as an internal or external command,&lt;br&gt;
npm error operable program or batch file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Solving the Puppeteer Installation Issue in Node.js: A Troubleshooting Journey
&lt;/h2&gt;

&lt;p&gt;As developers, we often face challenges while working with different tools and libraries. One of the issues I encountered recently was with installing puppeteer, the popular browser automation library, in a Node.js environment. The error message I received left me scratching my head, and I want to share my troubleshooting journey with you. Hopefully, this post will save you some valuable time if you find yourself in a similar situation.&lt;/p&gt;

&lt;p&gt;The Problem: Unusual Node.js Error During Puppeteer Installation&lt;br&gt;
While installing puppeteer, I encountered a strange error that read:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm error command failed
npm error command C:\WINDOWS\system32\cmd.exe /d /s /c node install.mjs
npm error 'node' is not recognized as an internal or external command,
npm error operable program or batch file.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first glance, this looked like a typical issue with the Node.js installation, and I assumed something was wrong with my setup. However, this was very misleading because all other dependencies and my Node.js app worked fine without any issues. The error was solely related to the installation of puppeteer. So why would Node.js suddenly complain about the node command?&lt;/p&gt;

&lt;p&gt;Step 1: Investigating the Root Cause&lt;br&gt;
Given that the error suggested Node.js wasn't recognized, I started by verifying that the Node.js binary was properly installed and accessible from my command line. I ran the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response was the expected output, confirming that Node.js was installed and working correctly. This made the error message even more perplexing, as it directly contradicted the results of this simple test.&lt;/p&gt;

&lt;p&gt;I also checked the system's PATH environment variable, which should ensure the correct location of the Node.js executable. To my surprise, this didn't resolve the issue either. The error persisted, which led me to believe that the problem wasn't with the PATH configuration but something more specific to how puppeteer handles its installation scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  After a half day of trouble shooooot..........
&lt;/h2&gt;

&lt;p&gt;I then realized that the issue might be specific to the way puppeteer handles its installation scripts. It turns out that puppeteer uses a script (install.mjs) to install its necessary components, and this is where things were failing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Trying Puppeteer-Core as a Solution
&lt;/h2&gt;

&lt;p&gt;At this point, after much frustration and multiple attempts at fixing the issue, I stumbled upon a suggestion to use puppeteer-core. This is essentially a lighter version of puppeteer that doesn’t come with a bundled Chromium browser, and it’s designed for environments where you want to provide your own Chromium or Chrome installation.&lt;/p&gt;

&lt;p&gt;The command I used was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install puppeteer-core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Surprisingly, this worked without any errors, and the installation completed successfully. The issue was that puppeteer was trying to download and install Chromium automatically, which was likely conflicting with my system’s environment or some other configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Conclusion – The Lesson Learned
&lt;/h2&gt;

&lt;p&gt;This experience was frustrating because of the misleading error message. Instead of an informative message related to the issue, I received a generic node not recognized error, which made it seem like a problem with Node.js itself. In reality, the issue was with the specific way puppeteer was being installed, especially when it attempts to download and set up its Chromium dependency.&lt;/p&gt;

&lt;p&gt;The solution turned out to be using puppeteer-core instead of the full puppeteer package. This version of the library doesn’t require the automatic Chromium installation, and thus bypasses the issue entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is Important for Developers
&lt;/h2&gt;

&lt;p&gt;This kind of experience is a great reminder that error messages in Node.js (and any other environment) can sometimes be misleading. A vague or generic message might not be directly related to the root cause. When troubleshooting, it’s essential to think critically about the context of the problem, experiment with different approaches, and don’t hesitate to search for alternative solutions.&lt;/p&gt;

&lt;p&gt;This issue with puppeteer also highlights the importance of understanding the libraries and dependencies you’re using. By being aware of the differences between puppeteer and puppeteer-core, you can make more informed decisions based on your environment and needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you’re facing this same issue with nodejs, I hope this post helps you resolve it faster than I did. The key takeaway is that not all installation issues are related to the basics, such as Node.js installation itself.&lt;/p&gt;

&lt;p&gt;Feel free to share your own experiences and thoughts in the comments below. Have you faced any similar situations where error messages didn’t match the actual problem? Let’s discuss!&lt;/p&gt;

</description>
      <category>node</category>
      <category>npm</category>
      <category>troubleshooting</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
