<?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: Yusup Atahanov</title>
    <description>The latest articles on DEV Community by Yusup Atahanov (@yusu_ata0).</description>
    <link>https://dev.to/yusu_ata0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Yusup Atahanov</title>
      <link>https://dev.to/yusu_ata0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yusu_ata0"/>
    <language>en</language>
    <item>
      <title>Deleting an API Key From Git Doesn't Mean It's Gone</title>
      <dc:creator>Yusup Atahanov</dc:creator>
      <pubDate>Mon, 09 Nov 2026 14:02:58 +0000</pubDate>
      <link>https://dev.to/yusu_ata0/deleting-an-api-key-from-git-doesnt-mean-its-gone-3dj5</link>
      <guid>https://dev.to/yusu_ata0/deleting-an-api-key-from-git-doesnt-mean-its-gone-3dj5</guid>
      <description>&lt;p&gt;Imagine accidentally committing an API key to a Git repository.&lt;/p&gt;

&lt;p&gt;You notice the mistake, delete the key, commit the change, and push again.&lt;/p&gt;

&lt;p&gt;Problem solved?&lt;/p&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;Git stores the history of your project. Removing a secret from the latest version of a file doesn't automatically remove it from previous commits.&lt;/p&gt;

&lt;p&gt;Here's a simple example.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a test repository&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;mkdir git-history-demo&lt;br&gt;
cd git-history-demo&lt;br&gt;
git init&lt;/p&gt;

&lt;p&gt;Create a file containing a fake credential:&lt;/p&gt;

&lt;p&gt;echo "API_KEY=example-not-a-real-key" &amp;gt; config.env&lt;br&gt;
git add config.env&lt;br&gt;
git commit -m "Add configuration"&lt;/p&gt;

&lt;p&gt;Now remove it:&lt;/p&gt;

&lt;p&gt;git rm config.env&lt;br&gt;
git commit -m "Remove configuration"&lt;/p&gt;

&lt;p&gt;The file no longer exists in your working directory.&lt;/p&gt;

&lt;p&gt;But the original commit still exists.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check the Git history&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;git log -p --all -- config.env&lt;/p&gt;

&lt;p&gt;You'll see the earlier commit containing the fake credential.&lt;/p&gt;

&lt;p&gt;This is normal Git behavior, but it becomes a security problem when developers accidentally commit real API keys, authentication tokens, or passwords.&lt;/p&gt;

&lt;p&gt;Deleting a secret does not mean it was never exposed.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What happens if a real secret is committed?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first priority should be to revoke or rotate that credential.&lt;/p&gt;

&lt;p&gt;Rewriting Git history may help remove sensitive data from the repository, but it cannot guarantee that nobody has already copied it.&lt;/p&gt;

&lt;p&gt;GitHub provides official guidance:&lt;/p&gt;

&lt;p&gt;Removing sensitive data from a repository&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why I started building JetScan&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While working on developer tools, I wanted a straightforward way to identify security problems without uploading source code to a third-party scanning service.&lt;/p&gt;

&lt;p&gt;So I started building JetScan, a source-available security scanner written in Rust.&lt;/p&gt;

&lt;p&gt;It can check:&lt;/p&gt;

&lt;p&gt;Exposed secrets in project files and Git history&lt;/p&gt;

&lt;p&gt;Known vulnerabilities in supported dependency ecosystems&lt;/p&gt;

&lt;p&gt;Potentially risky GitHub Actions workflows&lt;/p&gt;

&lt;p&gt;Certain local credential and machine security issues&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;jetscan secrets .&lt;/p&gt;

&lt;p&gt;Or run a broader scan:&lt;/p&gt;

&lt;p&gt;jetscan scan .&lt;/p&gt;

&lt;p&gt;JetScan supports local scanning and offline operation. Dependency vulnerability checks can query OSV using package names and versions unless offline mode is used.&lt;/p&gt;

&lt;p&gt;The project is still young. It doesn't detect every possible secret, and I don't want to pretend it does.&lt;/p&gt;

&lt;p&gt;The fake credential in the example above is for demonstrating Git history; it isn't a verified JetScan detection example.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why Git history scanning matters&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Many developers already use .gitignore to avoid accidentally committing local configuration files.&lt;/p&gt;

&lt;p&gt;That's useful, but .gitignore does not remove secrets that were committed previously.&lt;/p&gt;

&lt;p&gt;Even when a repository looks clean today, its history may contain sensitive information.&lt;/p&gt;

&lt;p&gt;That's why checking the current files alone isn't always enough.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Try JetScan&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I've released JetScan for Windows, Linux, and macOS.&lt;/p&gt;

&lt;p&gt;You can explore the source code, releases, and technical documentation here:&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/y6861977-ui/jetscan" rel="noopener noreferrer"&gt;https://github.com/y6861977-ui/jetscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm looking for feedback from developers who use security scanning tools in their projects or CI pipelines.&lt;/p&gt;

&lt;p&gt;What matters most to you in a security scanner: detection accuracy, performance, privacy, integrations, or something else?&lt;/p&gt;

&lt;p&gt;I'd be interested to hear your experience.&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>github</category>
      <category>cli</category>
    </item>
    <item>
      <title>I built a package manager because npm doesn't work in my country.</title>
      <dc:creator>Yusup Atahanov</dc:creator>
      <pubDate>Sat, 03 Oct 2026 09:05:27 +0000</pubDate>
      <link>https://dev.to/yusu_ata0/i-built-a-package-manager-because-npm-doesnt-work-in-my-country-4dk4</link>
      <guid>https://dev.to/yusu_ata0/i-built-a-package-manager-because-npm-doesnt-work-in-my-country-4dk4</guid>
      <description>&lt;p&gt;hi guys, my name is Yusup.&lt;/p&gt;

&lt;p&gt;I'm a developer from Turkmenistan. If you haven't heard much about it — the internet here is one of the most locked-down in the world. npm gets blocked, connections die halfway, and some days npm install just sits there forever.&lt;/p&gt;

&lt;p&gt;For a long time I thought that was just how it is. You wait. You retry. You keep a VPN open and hope. Setting up a React project could eat an afternoon.&lt;/p&gt;

&lt;p&gt;At some point I got tired of being stuck, so I started building my own package manager. I called it jet. Took about 6 months, mostly at night, on my own.&lt;/p&gt;

&lt;p&gt;The idea is simple — it should keep working when the network doesn't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if a mirror is blocked, it quietly switches to another one mid-install&lt;/li&gt;
&lt;li&gt;if a package is already on disk, it never touches the network&lt;/li&gt;
&lt;li&gt;if a download dies at 80%, it continues from there instead of starting over&lt;/li&gt;
&lt;li&gt;one small binary, no Node needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not the fastest out there — bun wins that race, and I'm fine with it. I wasn't chasing a benchmark. I just wanted the thing to not fail.&lt;/p&gt;

&lt;p&gt;A few people have tried it already. One was on a Mac — and that one got me, because I'm on Windows and never even tested there. A real stranger, somewhere out there, running something I built alone in a country where the internet fights you.&lt;/p&gt;

&lt;p&gt;It's free, works on Windows/Mac/Linux. If your connection is rough — or censored — it might save you some pain.&lt;/p&gt;

&lt;p&gt;If you try it, I'd honestly love to hear what breaks. It's the first thing I've ever put out into the world.Thank you for read this post&lt;/p&gt;

&lt;p&gt;github url: &lt;a href="https://github.com/y6861977-ui/jet" rel="noopener noreferrer"&gt;https://github.com/y6861977-ui/jet&lt;/a&gt;&lt;br&gt;
site url: &lt;a href="https://jet.kim/" rel="noopener noreferrer"&gt;https://jet.kim/&lt;/a&gt; &lt;/p&gt;

</description>
      <category>programming</category>
      <category>software</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
