<?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: Joseph Brasseur</title>
    <description>The latest articles on Forem by Joseph Brasseur (@joseph_brasseur_135bb1804).</description>
    <link>https://forem.com/joseph_brasseur_135bb1804</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%2F3846836%2Fec151271-d629-46a8-b3df-9e9797012252.png</url>
      <title>Forem: Joseph Brasseur</title>
      <link>https://forem.com/joseph_brasseur_135bb1804</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/joseph_brasseur_135bb1804"/>
    <language>en</language>
    <item>
      <title>Why I gave up on databases.</title>
      <dc:creator>Joseph Brasseur</dc:creator>
      <pubDate>Tue, 21 Apr 2026 18:11:11 +0000</pubDate>
      <link>https://forem.com/joseph_brasseur_135bb1804/why-i-gave-up-on-databases-33gi</link>
      <guid>https://forem.com/joseph_brasseur_135bb1804/why-i-gave-up-on-databases-33gi</guid>
      <description>&lt;p&gt;When scaling an autonomous AI server farm, standard advice tells you to deploy MySQL, PostgreSQL, or at minimum, a localized SQLite database to handle state and pipeline telemetry. &lt;/p&gt;

&lt;p&gt;I tried that. It failed catastrophically.&lt;/p&gt;

&lt;p&gt;When you have 145 separate Python agents constantly running recursive loops—scraping, thinking, executing, and reporting simultaneously—raw database locks become your worst enemy. The I/O overhead and constant connection failures instantly throttle the server, causing cascading daemon crashes. &lt;/p&gt;

&lt;p&gt;To solve this, I completely abandoned traditional databases and transitioned my entire production farm to a stateless "Zero-DB" pipeline. &lt;/p&gt;

&lt;p&gt;Instead of opening fragile database connections, my agents output directly to localized, folder-spooled CSV and JSON flat-files using raw file system appends.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;portalocker&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;log_agent_state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;target_csv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/var/opt/data_spool/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;_state.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target_csv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newline&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# File locking ensures safe concurrent appends
&lt;/span&gt;        &lt;span class="n"&gt;portalocker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lock&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;portalocker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LOCK_EX&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;writer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writerow&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="n"&gt;portalocker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unlock&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By relying exclusively on OS-level file locking and direct flat-file appends:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The memory footprint of the entire farm dropped drastically.&lt;/li&gt;
&lt;li&gt;Database connection timeouts completely evaporated.&lt;/li&gt;
&lt;li&gt;Systemd can rapidly restart any individual agent daemon without worrying about orphaned SQL states or corrupted tables.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My centralized orchestrator script simply polls the spooled flat-file directories on a fixed interval, aggregates the JSON telemetry safely, and deletes the processed files. It is brutally simple, impossibly fast, and completely immune to traditional database bottlenecks. &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Author Bio&lt;/strong&gt;&lt;br&gt;
I am a DevOps Engineer orchestrating 145+ autonomous AI agents using Zero-DB flat-file architecture. Need secure, self-healing Linux infrastructure without bloated databases? Let automation do the heavy lift. &lt;br&gt;
Contact me for emergency DevOps support at &lt;a href="mailto:brasseurjoseph8@gmail.com"&gt;brasseurjoseph8@gmail.com&lt;/a&gt; or via CyberCowboys.net.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Help with cash collect issues</title>
      <dc:creator>Joseph Brasseur</dc:creator>
      <pubDate>Tue, 21 Apr 2026 18:04:13 +0000</pubDate>
      <link>https://forem.com/joseph_brasseur_135bb1804/help-with-cash-collect-issues-1cd0</link>
      <guid>https://forem.com/joseph_brasseur_135bb1804/help-with-cash-collect-issues-1cd0</guid>
      <description>&lt;p&gt;If your custom e-commerce checkout is structured with a fast HTTPS frontend but relies on a localized backend to catch transaction data, you have likely run into CORS or Mixed Content security blocks. Your browser actively prevents secure client-side fetch requests from hitting raw unencrypted backend ports, severing your tracking pipeline.&lt;/p&gt;

&lt;p&gt;Instead of deploying bloated SSL certificates across all your internal daemons, use your existing Nginx web server as an armored tunnel.&lt;/p&gt;

&lt;p&gt;By dropping this proxy block into your &lt;code&gt;/etc/nginx/sites-enabled/&lt;/code&gt; configuration, you instantly bypass Corsair rejections and securely funnel the traffic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;location&lt;/span&gt; &lt;span class="n"&gt;/api/webhook/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_pass&lt;/span&gt; &lt;span class="s"&gt;http://127.0.0.1:5000/webhook/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Host&lt;/span&gt; &lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;X-Real-IP&lt;/span&gt; &lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt; &lt;span class="nv"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;if&lt;/span&gt; &lt;span class="s"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request_method&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'OPTIONS')&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kn"&gt;add_header&lt;/span&gt; &lt;span class="s"&gt;'Access-Control-Allow-Origin'&lt;/span&gt; &lt;span class="s"&gt;'*'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;add_header&lt;/span&gt; &lt;span class="s"&gt;'Access-Control-Allow-Methods'&lt;/span&gt; &lt;span class="s"&gt;'GET,&lt;/span&gt; &lt;span class="s"&gt;POST,&lt;/span&gt; &lt;span class="s"&gt;OPTIONS'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;add_header&lt;/span&gt; &lt;span class="s"&gt;'Access-Control-Max-Age'&lt;/span&gt; &lt;span class="mi"&gt;1728000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;add_header&lt;/span&gt; &lt;span class="s"&gt;'Content-Type'&lt;/span&gt; &lt;span class="s"&gt;'text/plain'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;204&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your frontend Javascript can now ignore raw IP addresses entirely and route cleanly through your existing secure domain certificate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://yourdomain.com/api/webhook/paypal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Behind the Nginx interceptor, your lightweight Python Flask daemon is able to catch the payload on Port 5000, completely insulated from the public internet.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Author Bio&lt;/strong&gt;&lt;br&gt;
I am a DevOps Engineer orchestrating 145+ autonomous AI agents using Zero-DB flat-file architecture. Need secure, self-healing Linux infrastructure without bloated databases? Let automation do the heavy lift. &lt;br&gt;
Contact me for emergency DevOps support at &lt;a href="mailto:brasseurjoseph8@gmail.com"&gt;brasseurjoseph8@gmail.com&lt;/a&gt; or via CyberCowboys.net.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Crypto Passive Income That Actually Works in 2026 (The Real Playbook)</title>
      <dc:creator>Joseph Brasseur</dc:creator>
      <pubDate>Sat, 28 Mar 2026 00:41:08 +0000</pubDate>
      <link>https://forem.com/joseph_brasseur_135bb1804/crypto-passive-income-that-actually-works-in-2026-the-real-playbook-11cj</link>
      <guid>https://forem.com/joseph_brasseur_135bb1804/crypto-passive-income-that-actually-works-in-2026-the-real-playbook-11cj</guid>
      <description>&lt;h1&gt;
  
  
  Crypto Passive Income That Actually Works in 2026
&lt;/h1&gt;

&lt;p&gt;After two years in DeFi, here is what actually generates real yield - not the farms that rug in week two.&lt;/p&gt;

&lt;h2&gt;
  
  
  Low Risk: 3-6% APY
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ETH staking via Lido&lt;/strong&gt; - ~4% APY, extremely safe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USDC lending on AAVE v3&lt;/strong&gt; - 4-7% depending on utilization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cbBTC on Coinbase&lt;/strong&gt; - native yield on Bitcoin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Boring? Yes. Sustainable for years? Also yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Medium Risk: 8-20% APY
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Curve stable pools&lt;/strong&gt; - 4 years of battle-tested security, consistent 8-12%&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pendle PT positions&lt;/strong&gt; on liquid staking tokens - fixed-rate, predictable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convex staking&lt;/strong&gt; - boosted Curve yields with veCRV exposure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Higher Risk: 20%+
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Concentrated liquidity (CLMM) positions on volatile pairs&lt;/li&gt;
&lt;li&gt;Delta-neutral market making strategies&lt;/li&gt;
&lt;li&gt;Leveraged yield farming with hedged collateral&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Mistakes That Cost Me Real Money
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Chasing 500%+ APY farms - they almost always rug within weeks&lt;/li&gt;
&lt;li&gt;Not accounting for impermanent loss on volatile LP pairs&lt;/li&gt;
&lt;li&gt;Ignoring gas costs (they eat all yield on small positions)&lt;/li&gt;
&lt;li&gt;No exit plan before entering a position&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Current Stack
&lt;/h2&gt;

&lt;p&gt;Mostly ETH staking + a few Curve stable positions. Deliberately boring.&lt;br&gt;
Goal is 3-5 year compounding, not overnight riches.&lt;/p&gt;




&lt;h2&gt;
  
  
  Join the Discussion
&lt;/h2&gt;

&lt;p&gt;Running a small private Telegram group where serious DeFi folks compare notes daily.&lt;br&gt;
No shilling, no spam - just real strategy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Click the link or scan the QR code below:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://t.me/+mE64vUcewgNkZTIx" rel="noopener noreferrer"&gt;Join Crypto Optimus Friends - Free Telegram Group&lt;/a&gt;&lt;/strong&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%2Fapi.qrserver.com%2Fv1%2Fcreate-qr-code%2F%3Fsize%3D250x250%26data%3Dhttps%253A%252F%252Ft.me%252F%252BmE64vUcewgNkZTIx" 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%2Fapi.qrserver.com%2Fv1%2Fcreate-qr-code%2F%3Fsize%3D250x250%26data%3Dhttps%253A%252F%252Ft.me%252F%252BmE64vUcewgNkZTIx" alt="Scan QR code to join our Telegram group" width="250" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scan with your phone camera to join instantly - works on iPhone and Android&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Not financial advice. Always DYOR. Crypto carries significant risk.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>defi</category>
      <category>investing</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
