<?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: Derick Olotu</title>
    <description>The latest articles on DEV Community by Derick Olotu (@olotuderick).</description>
    <link>https://dev.to/olotuderick</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%2F3869376%2F015646df-c386-4494-a706-a1a9a27377f3.png</url>
      <title>DEV Community: Derick Olotu</title>
      <link>https://dev.to/olotuderick</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/olotuderick"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Derick Olotu</dc:creator>
      <pubDate>Thu, 09 Apr 2026 11:22:36 +0000</pubDate>
      <link>https://dev.to/olotuderick/-46oh</link>
      <guid>https://dev.to/olotuderick/-46oh</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab" class="crayons-story__hidden-navigation-link"&gt;Why .env files are a security disaster (and what we do instead)&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="/olotuderick" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3869376%2F015646df-c386-4494-a706-a1a9a27377f3.png" alt="olotuderick profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/olotuderick" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Derick Olotu
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Derick Olotu
                
              
              &lt;div id="story-author-preview-content-3476152" 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="/olotuderick" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3869376%2F015646df-c386-4494-a706-a1a9a27377f3.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Derick Olotu&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/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 9&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/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab" id="article-link-3476152"&gt;
          Why .env files are a security disaster (and what we do instead)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/todayilearned"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;todayilearned&lt;/a&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/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/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&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/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add 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;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Why .env files are a security disaster (and what we do instead)</title>
      <dc:creator>Derick Olotu</dc:creator>
      <pubDate>Thu, 09 Apr 2026 11:21:21 +0000</pubDate>
      <link>https://dev.to/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab</link>
      <guid>https://dev.to/olotuderick/why-env-files-are-a-security-disaster-and-what-we-do-instead-31ab</guid>
      <description>&lt;p&gt;It happened on a Tuesday. &lt;/p&gt;

&lt;p&gt;A new hire, trying to get their local environment working, accidentally committed our production API keys to a public GitHub repository. What followed was a blur of adrenaline and panic: we had to completely take down the repo, invalidate dozens of keys, and manually rotate our entire infrastructure one service at a time. It was a hectic, miserable afternoon.&lt;/p&gt;

&lt;p&gt;But when the dust settled, we realized something important: &lt;strong&gt;we couldn't blame the engineer.&lt;/strong&gt; The real culprit was the &lt;code&gt;.env&lt;/code&gt; file itself. We had built a system where security relied entirely on humans remembering to update a &lt;code&gt;.gitignore&lt;/code&gt; file. That was the day we declared war on &lt;code&gt;.env&lt;/code&gt; files.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cost of "DM me the secrets"
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;We built something to solve exactly this. But first, let me show you how we got there.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The GitHub leak was our explosive trigger, but as we audited our workflow, we realized &lt;code&gt;.env&lt;/code&gt; files were causing a slow, painful bleed across our entire company.&lt;/p&gt;

&lt;p&gt;Whenever non-developers—like product designers, PMs, or QA engineers—wanted to preview a project locally, they couldn't just clone and run it. They had to ping an engineer: &lt;em&gt;"Hey, can you send me the latest .env?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This created a massive bottleneck. Non-developers would sometimes wait hours for an engineer to finish a deep-focus task just to get a text file. Worse, those secrets were being copy-pasted into Slack DMs, where they lived forever. We were trading our company's security for temporary convenience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design Exploration: The UX vs. Security Trap
&lt;/h2&gt;

&lt;p&gt;We started looking at existing secret managers. The market is full of enterprise-grade tools, but we quickly found a glaring issue: &lt;strong&gt;they were built for machines, not for humans.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most solutions required complex CLI authentications, deep AWS knowledge, or cumbersome UI dashboards. If we forced our designers to use them just to run a local &lt;code&gt;localhost:3000&lt;/code&gt; preview, we would completely destroy their productivity. &lt;/p&gt;

&lt;p&gt;Our design and engineering teams sat down and established two non-negotiable constraints:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero-friction UX:&lt;/strong&gt; It had to be so simple that a non-developer could run it on their first try without reading a manual.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Top-Tier Security:&lt;/strong&gt; It needed to be vastly more secure than anything else on the market, meaning true End-to-End Encryption (E2EE) and zero local traces.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a classic software engineering tradeoff: usually, as security increases, usability plummets. We needed to break that rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Engineering Challenge: Killing the Disk
&lt;/h2&gt;

&lt;p&gt;If we wanted to eliminate the risk of &lt;code&gt;.env&lt;/code&gt; files being accidentally committed, we had to stop writing them to the disk entirely. &lt;/p&gt;

&lt;p&gt;We experimented with several approaches, but ultimately realized the safest way to manage local secrets is to &lt;strong&gt;inject them directly into the runtime process&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Instead of a developer running &lt;code&gt;npm run dev&lt;/code&gt; and having the framework look for a &lt;code&gt;.env&lt;/code&gt; file, we wanted them to run our tool, which would securely fetch the secrets, hold them in memory, and execute &lt;code&gt;npm run dev&lt;/code&gt; with the environment variables pre-loaded.&lt;/p&gt;

&lt;p&gt;But memory injection alone wasn't enough. What if a developer left a session running? We debated the architecture and eventually engineered a system of &lt;strong&gt;Just-In-Time (JIT) leases&lt;/strong&gt;. When a developer or designer boots up a project, they are granted a temporary, encrypted lease for those secrets. When the session ends, the access evaporates.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Before RunEnv&lt;/span&gt;
npm run dev   &lt;span class="c"&gt;# prays .env file exists and isn't outdated&lt;/span&gt;

&lt;span class="c"&gt;# With RunEnv&lt;/span&gt;
runenv run &lt;span class="nt"&gt;--&lt;/span&gt; npm run dev   &lt;span class="c"&gt;# secrets injected. zero disk. done.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Breakthrough: Invisible Security
&lt;/h2&gt;

&lt;p&gt;The real breakthrough came when we realized we could bridge the gap between our CLI and the tools our team already used. &lt;/p&gt;

&lt;p&gt;We built a &lt;strong&gt;VS Code extension&lt;/strong&gt; and a lightweight CLI. Because our architecture handled the heavy lifting of the E2EE engine in the background, the surface area for the user was practically invisible. &lt;/p&gt;

&lt;p&gt;For the engineering team, it meant typing a single command to sync and run their environment. For the design team, it meant clicking a button in VS Code to spin up a perfectly configured local preview. No Slack DMs. No copy-pasting. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Final Implementation and Results
&lt;/h2&gt;

&lt;p&gt;Today, our workflow looks completely different. We replaced plain-text &lt;code&gt;.env&lt;/code&gt; files with dynamic, encrypted runtime injection.&lt;/p&gt;

&lt;p&gt;The results were immediate and highly measurable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instant setups:&lt;/strong&gt; Project onboarding for both engineers and non-engineers dropped from hours to seconds. No one waits on anyone else to start working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero leaks:&lt;/strong&gt; Because secrets are never written to a &lt;code&gt;.env&lt;/code&gt; file on disk, they cannot be accidentally committed to GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A clean Slack:&lt;/strong&gt; We have entirely eliminated the exchange of production or staging keys via direct messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;If there is one thing we took away from this journey, it’s that &lt;strong&gt;developer experience is a security feature.&lt;/strong&gt; If your security protocols are too hard to use, your team will find workarounds. They will DM keys on Slack, they will email text files, and eventually, someone will push a key to a public repo. By focusing on frictionless access for non-technical users, we accidentally built the most secure architecture our team has ever had.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If your team is still slacking &lt;code&gt;.env&lt;/code&gt; files to each other, or if you’ve ever had the heart-dropping experience of a leaked GitHub key, you don't have to build this from scratch. We spun our internal solution out into &lt;strong&gt;RunEnv&lt;/strong&gt; a frictionless, end-to-end encrypted secret manager built for humans. &lt;a href="https://runenv.dev" rel="noopener noreferrer"&gt;Try RunEnv with your team today and kill your .env files for good.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
      <category>todayilearned</category>
    </item>
  </channel>
</rss>
