<?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: Brian Zavala</title>
    <description>The latest articles on Forem by Brian Zavala (@dev-is-cracked).</description>
    <link>https://forem.com/dev-is-cracked</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%2F2013172%2F5160372b-f0f3-42ee-8851-093c91eb76a1.jpg</url>
      <title>Forem: Brian Zavala</title>
      <link>https://forem.com/dev-is-cracked</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dev-is-cracked"/>
    <language>en</language>
    <item>
      <title>I built a Meme Creator to roast my own Spaghetti Code (No watermarks, no BS, free!)</title>
      <dc:creator>Brian Zavala</dc:creator>
      <pubDate>Tue, 13 Jan 2026 04:04:27 +0000</pubDate>
      <link>https://forem.com/dev-is-cracked/i-built-a-meme-creator-to-roast-my-own-spaghetti-code-no-watermarks-no-bs-free-4d1o</link>
      <guid>https://forem.com/dev-is-cracked/i-built-a-meme-creator-to-roast-my-own-spaghetti-code-no-watermarks-no-bs-free-4d1o</guid>
      <description>&lt;p&gt;Head to roastville -&amp;gt; &lt;a href="https://meme-creator.app" rel="noopener noreferrer"&gt;meme-creator.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've all been there. You push to prod on a Friday. You let the AI write the unit tests because the "vibes were good." And now the database is on fire.&lt;/p&gt;

&lt;p&gt;I wanted to make a meme about my own bad decisions, but every site I found was a disaster. They wanted a subscription, a login, or they slapped a watermark over my joke that was bigger than the joke itself.&lt;/p&gt;

&lt;p&gt;So, I found a solution.&lt;/p&gt;

&lt;p&gt;I built a Local-First, Privacy-Focused Meme Creator specifically for developers who need to roast a coworker (or themselves) hard-core!&lt;/p&gt;

&lt;p&gt;Make a meme about your current sprint, your legacy codebase, or "Vibe Coding" gone wrong.&lt;/p&gt;

&lt;p&gt;Drop the image in the comments below 👇&lt;/p&gt;

&lt;p&gt;Let the roasting begin my friends 🔥&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>watercooler</category>
      <category>react</category>
    </item>
    <item>
      <title>I made a Meme Creator because I hate watermarks</title>
      <dc:creator>Brian Zavala</dc:creator>
      <pubDate>Tue, 13 Jan 2026 01:10:25 +0000</pubDate>
      <link>https://forem.com/dev-is-cracked/i-over-engineered-a-meme-creator-because-i-hate-watermarks-165p</link>
      <guid>https://forem.com/dev-is-cracked/i-over-engineered-a-meme-creator-because-i-hate-watermarks-165p</guid>
      <description>&lt;p&gt;I wanted to make a quick meme for my son Phoenix, but every site I found was a disaster. They either demanded a monthly subscription, forced me to create an account, or slapped a giant watermark over the image.&lt;/p&gt;

&lt;p&gt;I realized that simple tools have become ad-farms.&lt;/p&gt;

&lt;p&gt;So, I spent the last 3 weeks building my own. My requirements were simple:&lt;/p&gt;

&lt;p&gt;No Server Uploads: 100% Client-side.&lt;/p&gt;

&lt;p&gt;No Watermarks: Just clean export.&lt;/p&gt;

&lt;p&gt;Local AI: Background removal running in the browser.&lt;/p&gt;

&lt;p&gt;The Stack: React 19 + ONNX&lt;br&gt;
I decided to over-engineer this to learn the new React 19 features. Here is the architecture:&lt;/p&gt;

&lt;p&gt;Frontend: React 19 (using the new use hook for async resource loading).&lt;/p&gt;

&lt;p&gt;AI Engine: onnxruntime-web + imgly.&lt;/p&gt;

&lt;p&gt;State Management: 100% Native React 19 (useReducer + Context). No external state libraries.&lt;/p&gt;

&lt;p&gt;OS: Built entirely on Arch Linux (Hyprland).&lt;/p&gt;

&lt;p&gt;How the Local AI Works&lt;br&gt;
The hardest part was getting the background removal to feel instant without killing the browser tab. I'm using a quantized ONNX model that runs in a Web Worker to keep the UI thread smooth.&lt;/p&gt;

&lt;p&gt;Source Available (AGPLv3)&lt;br&gt;
I believe in transparency, especially for privacy tools. The code is Source Available under the AGPLv3 license. You can look at the repo to verify that no network requests are sending your photos to a cloud server.&lt;/p&gt;

&lt;p&gt;I'm Launching on Friday!&lt;br&gt;
This is my first real "product" launch. I'm shipping it on Product Hunt this Friday, but the app is live right now for testing.&lt;/p&gt;

&lt;p&gt;If you are a React dev or just hate watermarks, I'd love for you to break it and tell me what's wrong.&lt;/p&gt;

&lt;p&gt;👇 Roast the live app: &lt;a href="https://meme-creator.app" rel="noopener noreferrer"&gt;https://meme-creator.app&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;🚀 Get notified for the Launch: &lt;/p&gt;
&lt;img alt="Meme Creator" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fph-files.imgix.net%2F55f7a44f-11e0-4956-b010-87719da1d27a.gif%3Fauto%3Dformat%26fit%3Dcrop%26w%3D80%26h%3D80" width="80" height="80"&gt;&lt;h3&gt;Meme Creator&lt;/h3&gt;
&lt;p&gt;AI background removal in-browser. No uploads. No watermarks.&lt;/p&gt;
&lt;a href="https://www.producthunt.com/products/meme-creator-3?embed=true&amp;amp;utm_source=embed&amp;amp;utm_medium=post_embed" rel="noopener noreferrer"&gt;Check it out on Product Hunt →&lt;/a&gt;

</description>
      <category>opensource</category>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
