<?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: TechRay.dev</title>
    <description>The latest articles on DEV Community by TechRay.dev (techray).</description>
    <link>https://dev.to/techray</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.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F14901%2F1431284f-5397-412f-901f-21906fc86578.png</url>
      <title>DEV Community: TechRay.dev</title>
      <link>https://dev.to/techray</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techray"/>
    <language>en</language>
    <item>
      <title>How to Enable the Gemini Sidebar in Chrome on Linux</title>
      <dc:creator>Raymond Busuttil</dc:creator>
      <pubDate>Thu, 29 Oct 2026 01:32:19 +0000</pubDate>
      <link>https://dev.to/techray/how-to-enable-the-gemini-sidebar-in-chrome-on-linux-457n</link>
      <guid>https://dev.to/techray/how-to-enable-the-gemini-sidebar-in-chrome-on-linux-457n</guid>
      <description>&lt;p&gt;Want to use Google's Gemini AI directly inside Chrome on Linux? You may be able to enable Chrome's built-in Gemini integration by changing an experimental browser flag.&lt;/p&gt;

&lt;p&gt;The feature, internally known as &lt;strong&gt;Glic&lt;/strong&gt;, can enable Gemini integration in Chrome, including a sidebar-style experience on supported configurations. Here's how to try it on your Linux desktop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Open Chrome Flags
&lt;/h2&gt;

&lt;p&gt;Launch Google Chrome and enter the following address in the address bar:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chrome://flags&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Press &lt;strong&gt;Enter&lt;/strong&gt; to open Chrome's experimental features page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Find the Glic Flag
&lt;/h2&gt;

&lt;p&gt;In the search box at the top of the page, type:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Glic&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Look for the flag named &lt;strong&gt;Enables glic&lt;/strong&gt;, with a description indicating support for Mac, Windows, Linux, ChromeOS, and Android.&lt;/p&gt;

&lt;p&gt;You can also navigate directly to the flag using this link:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chrome://flags/#glic&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Enable Glic
&lt;/h2&gt;

&lt;p&gt;Locate the dropdown menu next to the &lt;strong&gt;Enables glic&lt;/strong&gt; option.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the dropdown menu.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enabled&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Leave the other flags unchanged for now.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This activates the experimental Glic feature flag in your Chrome configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Relaunch Chrome
&lt;/h2&gt;

&lt;p&gt;After enabling the flag, Chrome will display a &lt;strong&gt;Relaunch&lt;/strong&gt; button at the bottom of the page.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Relaunch&lt;/strong&gt; to restart the browser and apply the change.&lt;/p&gt;

&lt;p&gt;Save any unfinished work in your open tabs before restarting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Open Gemini in Chrome
&lt;/h2&gt;

&lt;p&gt;Once Chrome restarts, look for a Gemini button or other Gemini entry point in the browser interface.&lt;/p&gt;

&lt;p&gt;If the integration is available for your Chrome version and account, you may be able to open Gemini alongside the webpage you're viewing.&lt;/p&gt;

&lt;p&gt;This makes it easier to ask questions about a page, get help with research, and use AI without constantly switching between tabs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting: Gemini Sidebar Still Missing?
&lt;/h2&gt;

&lt;p&gt;If enabling Glic doesn't make the Gemini button or sidebar appear, try the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check your Chrome version:&lt;/strong&gt; Update Chrome to the latest version available for your Linux distribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look for related flags:&lt;/strong&gt; Search &lt;code&gt;chrome://flags&lt;/code&gt; for &lt;code&gt;Glic side panel&lt;/code&gt;. If that option exists, try enabling it and relaunching Chrome.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check Chrome settings:&lt;/strong&gt; If available, look under &lt;strong&gt;Settings → AI innovations → Gemini in Chrome&lt;/strong&gt; for options to show the Gemini button.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remember that flags are experimental:&lt;/strong&gt; Enabling Glic does not guarantee that the complete Gemini interface will appear. Availability can depend on your Chrome build, account, region, and Google's rollout.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  It's easy, but shouldn't be a chore
&lt;/h2&gt;

&lt;p&gt;Getting Gemini integrated into Chrome on Linux may be as simple as enabling the Glic flag and restarting your browser. However, the flag alone may not unlock every part of the experience on every Linux installation.&lt;/p&gt;

&lt;p&gt;If it works on your setup, you'll have a convenient way to bring Google's AI closer to your everyday browsing workflow without leaving Chrome. &lt;/p&gt;

</description>
      <category>chrome</category>
      <category>gemini</category>
      <category>ai</category>
      <category>linux</category>
    </item>
    <item>
      <title>The Animated Component Library You Copy, Own, and Make Your Own</title>
      <dc:creator>Raymond Busuttil</dc:creator>
      <pubDate>Tue, 20 Oct 2026 07:05:35 +0000</pubDate>
      <link>https://dev.to/techray/the-animated-component-library-you-copy-own-and-make-your-own-50j2</link>
      <guid>https://dev.to/techray/the-animated-component-library-you-copy-own-and-make-your-own-50j2</guid>
      <description>&lt;p&gt;Here's the dirty secret of modern front-end development: most websites look the same. Same hero layout, same fade-in-on-scroll, same stock card grid. And now that AI coding tools can generate a working page in minutes, the sameness is getting worse — everything is functional, clean, and completely forgettable.&lt;/p&gt;

&lt;p&gt;The difference between a page people scroll past and a page people remember usually isn't the layout. It's motion, texture, and detail — the animated headline, the background that feels alive, the button that responds like it noticed you. Those are also exactly the things that take the longest to build by hand.&lt;/p&gt;

&lt;p&gt;That's the gap &lt;a href="https://reactbits.dev" rel="noopener noreferrer"&gt;React Bits&lt;/a&gt; fills. It's a free, open-source library of animated React components and backgrounds that you copy into your project and make your own — and it's become one of the easiest ways to give a site a designed, hand-crafted feel without spending days on animation code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What React Bits actually is
&lt;/h2&gt;

&lt;p&gt;React Bits is a collection of 135+ animated building blocks, organized into five categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text Animations&lt;/strong&gt; — SplitText, BlurText, GlitchText, DecryptedText, ShinyText, RotatingText, and dozens more ways to make a headline earn attention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animations&lt;/strong&gt; — interaction and motion pieces like Magnet, SplashCursor, ClickSpark, ImageTrail, and GlareHover&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Components&lt;/strong&gt; — full UI elements with personality: SpotlightCard, TiltedCard, Dock, GooeyNav, CircularGallery, MagicBento, Masonry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backgrounds&lt;/strong&gt; — full-page animated scenes you drop behind your content: Aurora, Particles, Galaxy, LiquidChrome, Beams, Hyperspeed, Silk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micro Interactions&lt;/strong&gt; — the small, satisfying details that separate a polished interface from a plain one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The philosophy is copy-and-own, the same idea that made shadcn/ui so popular. You don't install React Bits as a package and then fight its defaults with overrides. You take the component's source code, drop it into your project, and from that moment it's &lt;em&gt;your&lt;/em&gt; code. Change the colors, rewrite the easing, delete the parts you don't need — no library update will ever break your changes, because there's no library dependency to update.&lt;/p&gt;

&lt;p&gt;For developers who've wrestled with heavyweight component suites — importing an entire framework just to use three pieces of it, then spending an afternoon overriding styles — this model is a relief. Your bundle only contains what you actually picked, in the form you actually want it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four flavours of everything
&lt;/h2&gt;

&lt;p&gt;One of the smartest decisions in React Bits is that every component ships in four variants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JavaScript + CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript + Tailwind&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript + CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript + Tailwind&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The install name tells you which one you're getting — it ends with the flavour, like &lt;code&gt;SplitText-TS-TW&lt;/code&gt; for the TypeScript + Tailwind version. So if your project runs TypeScript and Tailwind, you never have to convert plain CSS by hand or strip types out of a &lt;code&gt;.tsx&lt;/code&gt; file. The component arrives already speaking your stack's language.&lt;/p&gt;

&lt;p&gt;Installing one is a single command through the shadcn CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest add @react-bits/SplitText-TS-TW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prefer doing it manually? Every component page shows the full source with a code tab — open it, pick your flavour, and paste the files into your project. Both paths end the same way: real source code in your repo, ready to edit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pieces worth knowing first
&lt;/h2&gt;

&lt;p&gt;With 135+ components, nobody needs all of them. These are the ones that tend to earn their place:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SplitText&lt;/strong&gt; is the library's signature piece — it breaks a headline into individual characters or words and animates them in with a springy stagger. It's the fastest way to make a hero section feel expensive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aurora&lt;/strong&gt; and &lt;strong&gt;Particles&lt;/strong&gt; are the background workhorses. Aurora gives you those soft, northern-lights gradients drifting behind your content; Particles gives you a field of floating dots that can react to the mouse. Either one turns a flat hero section into a scene.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SpotlightCard&lt;/strong&gt; is a card with a radial glow that follows the cursor — you've seen this effect on high-end product sites, and it's the kind of thing that takes an evening to build well from scratch. Here it's a copy-paste.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dock&lt;/strong&gt; recreates the macOS dock magnification effect for navigation or icon rows, and &lt;strong&gt;GooeyNav&lt;/strong&gt; does navigation with a liquid, morphing indicator. Both are pure personality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DecryptedText&lt;/strong&gt; scrambles characters that resolve into the real text — perfect for anything tech-flavored — while &lt;strong&gt;CountUp&lt;/strong&gt; handles the animated number counters every stats section wants.&lt;/p&gt;

&lt;p&gt;The pattern across all of them: these are effects people notice, that are genuinely fiddly to build correctly (springs, easing curves, intersection observers, cleanup), and that arrive here already built and tunable.&lt;/p&gt;

&lt;h2&gt;
  
  
  More than components: the free tools
&lt;/h2&gt;

&lt;p&gt;React Bits also ships a set of browser-based tools that are useful even outside the library:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Background Studio&lt;/strong&gt; — browse every animated background, start from a preset, and tune it live. Export as code, a high-resolution image, or a looping MP4/WebM video.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Center Stage&lt;/strong&gt; — turn a screenshot or screen recording into a polished product shot on lifelike phones, laptops, and browser frames, with 3D tilt, depth of field, and shadows. Great for launch posts and demos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape Magic&lt;/strong&gt; — design a logo mark from shapes, patterns, text, or your own SVG, then finish it with a 3D material like chrome, glass, or neon. Exports SVG, PNG, favicons, even video.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Texture Lab&lt;/strong&gt; — run photos, video, or your camera through 160 one-click styles and 75+ stackable effects, from ASCII and halftone to glass, chrome, and glitch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sound Lab&lt;/strong&gt; — a library of polished interface sounds, from soft taps and toggles to risers and whooshes, tunable and exportable as WAV, MP3, or OGG.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a solo developer or a small studio, that's a surprising amount of production value sitting in one free ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fine print
&lt;/h2&gt;

&lt;p&gt;React Bits is free for personal &lt;em&gt;and&lt;/em&gt; commercial work under the MIT + Commons Clause license. Use the components in any app, website, or product — the one thing you can't do is sell, sublicense, or redistribute the components themselves as a library. For anyone building client work or products, that's an easy line to respect.&lt;/p&gt;

&lt;p&gt;Not on React? Official ports exist for &lt;strong&gt;Vue&lt;/strong&gt; and &lt;strong&gt;Svelte&lt;/strong&gt;, so the library isn't a React-only club. And the project is active and community-driven — contributions are welcome, and it reaches over 500K developers a month, which is a decent signal that it's not disappearing next quarter.&lt;/p&gt;

&lt;p&gt;A fair caveat: animation is seasoning, not the meal. Stacking six animated backgrounds and a custom cursor on one page will hurt performance and annoy visitors. The developers who get the most out of React Bits pick two or three pieces per page and tune them to match the brand — the library makes that easy precisely because the code is yours to trim.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;Most component libraries sell you structure: grids, forms, buttons, modals. React Bits sells you the layer on top of structure — the motion and texture that make a site feel designed instead of generated. It's free, it's copy-and-own, it speaks JavaScript or TypeScript with CSS or Tailwind, and the install takes one command.&lt;/p&gt;

&lt;p&gt;If your projects have been coming out clean but forgettable, spend ten minutes browsing reactbits.dev. Grab a SplitText headline, an Aurora background, and a SpotlightCard or two — and watch how fast "functional" turns into "memorable."&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>opensource</category>
      <category>react</category>
      <category>ui</category>
    </item>
    <item>
      <title>How to Generate Images in Claude Code (2026)</title>
      <dc:creator>Raymond Busuttil</dc:creator>
      <pubDate>Sun, 18 Oct 2026 21:32:15 +0000</pubDate>
      <link>https://dev.to/techray/how-to-generate-images-in-claude-code-2026-517b</link>
      <guid>https://dev.to/techray/how-to-generate-images-in-claude-code-2026-517b</guid>
      <description>&lt;p&gt;Claude Code is fantastic at writing code, fixing bugs, and explaining things. But ask it to draw you a picture and it'll politely tell you it can't — it's a text-based tool with no built-in image generation.&lt;/p&gt;

&lt;p&gt;Here's the good news: you can teach it. In about ten minutes, you can set Claude Code up with a third-party image API, and from then on you just say "generate an image of a sunset over mountains" and it handles everything. Your API key stays tucked away in a file Claude reads but never repeats back to you.&lt;/p&gt;

&lt;p&gt;We'll use Google's Gemini API as our example in this guide, but nothing here is Gemini-specific — OpenAI, Stability AI, Replicate, or any other image API with an HTTP endpoint works exactly the same way. Swap the key and the endpoint, keep everything else.&lt;/p&gt;

&lt;p&gt;This guide assumes you've never done anything like this before. Let's go step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Need
&lt;/h2&gt;

&lt;p&gt;Three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; installed and working (if you can open it and chat, you're good)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An API key for an image generation API&lt;/strong&gt; — we'll use Google's Gemini in this guide, but any provider works&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A project folder&lt;/strong&gt; — any folder where you run Claude Code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. No complicated setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Get Your Gemini API Key
&lt;/h2&gt;

&lt;p&gt;Google's Gemini API can generate images. To use it (or any other provider — the steps are the same idea everywhere: sign up, create a key, copy it):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://aistudio.google.com" rel="noopener noreferrer"&gt;aistudio.google.com&lt;/a&gt; and sign in with your Google account.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Get API Key&lt;/strong&gt; (usually in the left sidebar or top menu).&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create API Key&lt;/strong&gt;. Google will generate a long string of letters and numbers — that's your key.&lt;/li&gt;
&lt;li&gt;Copy it somewhere safe for the next two minutes. You'll paste it into a file in the next step, then you won't need to look at it again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;A note on pricing:&lt;/strong&gt; Google AI Studio has historically offered a free tier, but what's included can change — check their current pricing page to confirm image generation is covered before you start generating dozens of images. The same goes for any provider: know what each image costs you before you scale up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treat this key like a password.&lt;/strong&gt; Anyone with your key can generate images on your dime (or burn through your free quota). You'll never paste it into a chat window — not even to Claude.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create Your .env File
&lt;/h2&gt;

&lt;p&gt;A &lt;code&gt;.env&lt;/code&gt; file is just a plain text file that holds secrets like API keys. Programs read it; humans rarely open it. Keeping your key here instead of in your code or chat history is standard practice.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your project folder (the same folder where you run Claude Code), create a file called exactly &lt;code&gt;.env&lt;/code&gt; — nothing before the dot.&lt;/li&gt;
&lt;li&gt;Open it in any text editor and add one line:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GEMINI_API_KEY=your-actual-key-goes-here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;your-actual-key-goes-here&lt;/code&gt; with the key you copied from AI Studio. No quotes, no spaces around the equals sign.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;One more critical step:&lt;/strong&gt; if your project uses git, make sure &lt;code&gt;.env&lt;/code&gt; never gets committed. Create (or open) a file called &lt;code&gt;.gitignore&lt;/code&gt; in the same folder and add this line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your key now lives in one place, out of your code and out of your chat history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Tell Claude Code About Your Setup
&lt;/h2&gt;

&lt;p&gt;Here's where the magic happens. Open Claude Code in your project folder and send it a message like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I put my Gemini API key in the &lt;code&gt;.env&lt;/code&gt; file in this project as &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;. From now on, whenever I ask you to generate an image, use that key with the Gemini image generation API to create it. Read the key from the &lt;code&gt;.env&lt;/code&gt; file yourself — never ask me for it, and never print it, display it, or paste it into the chat.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the whole instruction. You're establishing three rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where the key lives&lt;/strong&gt; — in &lt;code&gt;.env&lt;/code&gt;, under the name &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What to do with it&lt;/strong&gt; — use it for image generation whenever you ask.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What never to do with it&lt;/strong&gt; — show it to you or anyone else.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Claude Code will confirm it understands. From this point on, the setup is permanent for this project — you only do this once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optional: Make It Permanent with CLAUDE.md
&lt;/h3&gt;

&lt;p&gt;If you want this to survive across sessions without re-explaining, add the same instruction to a &lt;code&gt;CLAUDE.md&lt;/code&gt; file in your project root. Claude Code reads this file automatically every time it starts. Just create &lt;code&gt;CLAUDE.md&lt;/code&gt; and write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Image Generation&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; The Gemini API key is stored in &lt;span class="sb"&gt;`.env`&lt;/span&gt; as &lt;span class="sb"&gt;`GEMINI_API_KEY`&lt;/span&gt;.
&lt;span class="p"&gt;-&lt;/span&gt; When I ask for an image, generate it using the Gemini image API
  (model &lt;span class="sb"&gt;`gemini-3.1-flash-image`&lt;/span&gt;) with that key.
&lt;span class="p"&gt;-&lt;/span&gt; Never display, repeat, or log the API key.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now every future Claude Code session in this folder knows the deal from the start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Generate Your First Image
&lt;/h2&gt;

&lt;p&gt;Just ask. Try something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Generate an image of a cozy cabin in the woods at sunset, warm light in the windows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude Code will get to work. Here's roughly what happens behind the scenes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It reads your &lt;code&gt;.env&lt;/code&gt; file to get the key (silently — you won't see the key).&lt;/li&gt;
&lt;li&gt;It writes a small script that calls the Gemini API with your prompt.&lt;/li&gt;
&lt;li&gt;It runs the script, which sends your prompt to Google's image model.&lt;/li&gt;
&lt;li&gt;It saves the resulting image into your project folder (usually as a &lt;code&gt;.png&lt;/code&gt; file) and tells you where it is.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A few seconds later, you'll have an actual image file sitting in your folder. Open it and take a look.&lt;/p&gt;

&lt;p&gt;Want another? Just keep asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Now generate a logo concept for a coffee shop called "Moonbeam Roasters" — minimalist, crescent moon, warm browns.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each image lands in your project folder, ready to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works Under the Hood
&lt;/h2&gt;

&lt;p&gt;You don't need to understand this to use it, but it's nice to know what's happening — and it demystifies why this approach is so flexible.&lt;/p&gt;

&lt;p&gt;When you ask for an image, Claude Code typically writes a short Python script that looks something like this:&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;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dotenv&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dotenv&lt;/span&gt;

&lt;span class="nf"&gt;load_dotenv&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://generativelanguage.googleapis.com/v1beta/models/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.1-flash-image:generateContent?key=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;contents&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a cozy cabin in the woods at sunset&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]}],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generationConfig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;responseModalities&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;IMAGE&lt;/span&gt;&lt;span class="sh"&gt;"&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;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;candidates&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inlineData&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cabin-sunset.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&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="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inlineData&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script loads your key from &lt;code&gt;.env&lt;/code&gt;, sends your prompt to Gemini's image model, gets back image data, and saves it as a PNG. Claude handles all of this for you — you'll usually never need to write or even look at this code. But now you know there's no magic involved, just an API call.&lt;/p&gt;

&lt;p&gt;The beauty of this setup: &lt;strong&gt;it works with any image API&lt;/strong&gt;, not just Gemini. If you'd rather use OpenAI's image model, Stability AI, or anything else with an HTTP API, the same pattern applies — key in &lt;code&gt;.env&lt;/code&gt;, instruction to Claude, done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your API Key Stays Safe
&lt;/h2&gt;

&lt;p&gt;This deserves its own section because it's the part beginners worry about most — rightly so.&lt;/p&gt;

&lt;p&gt;Here's what protects your key in this setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It's in &lt;code&gt;.env&lt;/code&gt;, not in chat.&lt;/strong&gt; You never typed the key into Claude Code. Claude read it from the file directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude was told never to display it.&lt;/strong&gt; The instruction in Step 3 (or your &lt;code&gt;CLAUDE.md&lt;/code&gt;) explicitly forbids printing the key. Claude respects this — it will use the key silently in API calls without ever echoing it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.gitignore&lt;/code&gt; keeps it out of version control.&lt;/strong&gt; If you push your project to GitHub, the &lt;code&gt;.env&lt;/code&gt; file stays on your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing to watch: if you ever ask Claude to "show me the script you used," the script it shows you will reference &lt;code&gt;os.getenv("GEMINI_API_KEY")&lt;/code&gt; — the variable name, not the actual key. That's exactly what you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for Better Images
&lt;/h2&gt;

&lt;p&gt;Once the basics work, these small habits make a big difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Be specific in your prompts.&lt;/strong&gt; "A dog" gives you a generic dog. "A watercolor painting of a golden retriever puppy sleeping in a sunbeam, soft brushstrokes" gives you something you'll actually want to keep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mention style.&lt;/strong&gt; Photorealistic, cartoon, oil painting, pixel art, minimalist logo — the model follows style cues well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for variations.&lt;/strong&gt; "Give me three versions of this" works fine. Claude will generate them one after another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate.&lt;/strong&gt; Don't like the result? Say what to change: "same thing but at night" or "make it wider, more like a banner." Each round is a new API call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name your files.&lt;/strong&gt; "Save this one as hero-banner.png" keeps your folder organized instead of filling up with generic names.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Claude says it can't find the key."&lt;/strong&gt; Make sure the &lt;code&gt;.env&lt;/code&gt; file is in the same folder where you're running Claude Code, and that the variable is named exactly &lt;code&gt;GEMINI_API_KEY&lt;/code&gt; (all caps, underscores). Check for typos and stray spaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The API returns an error."&lt;/strong&gt; The most common cause is an invalid or expired key. Go back to AI Studio, generate a fresh key, and update your &lt;code&gt;.env&lt;/code&gt;. Also check your usage against your plan's quota — if you've hit a limit, that's your culprit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"The image looks wrong."&lt;/strong&gt; That's a prompting issue, not a setup issue. Try describing what you want in more detail — subject, style, lighting, mood. Image models are literal; they draw what you describe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Claude printed my key!"&lt;/strong&gt; This shouldn't happen if you gave the instruction from Step 3. If it ever does, immediately go to AI Studio and revoke/regenerate your key, update &lt;code&gt;.env&lt;/code&gt;, and remind Claude of the rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;That's the whole setup: key from AI Studio, one line in &lt;code&gt;.env&lt;/code&gt;, one instruction to Claude Code. Ten minutes of setup, and from then on generating images is as easy as describing what you want.&lt;/p&gt;

&lt;p&gt;What I love about this approach is that nothing is locked in. Swap Gemini for another provider later? Just change the key and tell Claude which API to call. The pattern — secrets in &lt;code&gt;.env&lt;/code&gt;, instructions in plain English — works for any API you want Claude Code to use, not just image generation.&lt;/p&gt;

&lt;p&gt;Now go make something. Start with that cabin at sunset.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>claude</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Get 1 Billion Free Muse Tokens</title>
      <dc:creator>Raymond Busuttil</dc:creator>
      <pubDate>Mon, 12 Oct 2026 17:02:38 +0000</pubDate>
      <link>https://dev.to/techray/how-to-get-1-billion-free-muse-tokens-5id</link>
      <guid>https://dev.to/techray/how-to-get-1-billion-free-muse-tokens-5id</guid>
      <description>&lt;p&gt;New Muse users can get 1 billion free tokens by entering an invite code in Settings within 48 hours of signing up. That is roughly ten weeks of the free weekly allowance, at no cost and with no card required.&lt;/p&gt;

&lt;p&gt;If you have been curious about Muse, Meta's new personal AI agent, this guide explains what it is, what it can do, how its tokens work, and exactly how to claim the bonus. You can use my invite code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Muse invite code: 02F1OY
Sign up:          https://muse.ai/join
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What is Muse?
&lt;/h2&gt;

&lt;p&gt;Muse is a personal AI agent that Meta launched on September 8, 2026. Unlike a chatbot that only answers questions, Muse is built to take action and get things done on your behalf.&lt;/p&gt;

&lt;p&gt;It runs on Muse Spark, which Meta calls its most capable model to date and which it designed for real-world agent tasks. You talk to it the way you would text a friend, either in the Muse app or through WhatsApp.&lt;/p&gt;

&lt;p&gt;A few things set it apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Its own computer.&lt;/strong&gt; Each Muse agent runs on a private cloud virtual machine (Meta calls it Muse Secure VM) with its own storage and a full web browser you can watch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It keeps working.&lt;/strong&gt; Long tasks continue in the background even after you close the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's personal.&lt;/strong&gt; You can name your agent, give it an avatar, and choose how it communicates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability.&lt;/strong&gt; Muse is rolling out in the United States for adults 18 and older, on iOS, Android, and the web at muse.ai. Support for Meta's AI glasses is planned.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Muse can do for you
&lt;/h2&gt;

&lt;p&gt;Muse handles both quick errands and long-running goals. According to Meta and launch coverage, it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send emails and manage your calendar&lt;/li&gt;
&lt;li&gt;Book travel and make reservations&lt;/li&gt;
&lt;li&gt;Open a browser, fill out forms, and complete online checkouts&lt;/li&gt;
&lt;li&gt;Negotiate on your behalf, for example to lower a bill or sell a car&lt;/li&gt;
&lt;li&gt;Take a bigger goal, turn it into a personal plan, and keep working on it over days or weeks&lt;/li&gt;
&lt;li&gt;Offer proactive suggestions as it learns what matters to you&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You decide which apps it can connect to, such as email, calendar, payments, and shopping, and you can revoke access at any time. Meta also says Muse is the first AI agent covered by Link's purchase protections, including coverage for lost or damaged items and no-fee returns on eligible purchases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A few practical ideas to try first:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"Find three flights to Chicago next month under $250 and hold the best one for my approval."&lt;/li&gt;
&lt;li&gt;"Compare my internet plan to what's available at my address and draft a message asking for a lower rate."&lt;/li&gt;
&lt;li&gt;"Plan a weekly meal schedule and build a grocery list for it."&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How Muse tokens and plans work
&lt;/h2&gt;

&lt;p&gt;Muse is free to use up to a weekly limit, and everything is metered in tokens rather than messages. Tokens are the small chunks of text the model reads and writes as it plans, browses, and fills in forms, so one long background task can use far more than a dozen quick questions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Weekly allowance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;About 100 million tokens (reported)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power&lt;/td&gt;
&lt;td&gt;$20/month&lt;/td&gt;
&lt;td&gt;500 million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max&lt;/td&gt;
&lt;td&gt;$100/month&lt;/td&gt;
&lt;td&gt;3 billion tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The free figure comes from Meta's announcements and third-party testing; check Meta's help page for the current numbers. When you hit your limit, Muse pauses until the weekly reset or until you upgrade.&lt;/p&gt;

&lt;p&gt;Invite bonus tokens sit on top of your weekly allowance, which is why claiming them early is worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get 1 billion free Muse tokens, step by step
&lt;/h2&gt;

&lt;p&gt;The whole process takes about two minutes. The only rule that matters: redeem the code within 48 hours of creating your account, because the option disappears after that.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create your account.&lt;/strong&gt; Go to &lt;a href="https://muse.ai/join" rel="noopener noreferrer"&gt;muse.ai/join&lt;/a&gt; or download the Muse app on iOS or Android. On the web you sign in with a phone number and a Meta account, then complete age verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Settings.&lt;/strong&gt; On the web, click the gear icon in the lower left. In the app, open the menu and tap Settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find Redeem Invite Code.&lt;/strong&gt; It usually sits under General (on some versions, General then Usage).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enter the code &lt;code&gt;02F1OY&lt;/code&gt;&lt;/strong&gt; and tap Confirm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check your balance.&lt;/strong&gt; Make sure the 1 billion bonus tokens show up before you close Settings.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. You get 1 billion tokens, and so do I, as a thank-you for the referral.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Check out Muse, your personal AI agent. Redeem my code in Settings
within 48 hours of joining and we'll both get 1 billion Muse tokens.

Code: 02F1OY
https://muse.ai/join
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Once you're in, you get your own invite code too (look for the Invite button). Each account can reportedly refer up to 20 friends, earning 1 billion tokens per successful invite.&lt;/p&gt;

&lt;h2&gt;
  
  
  What 1 billion tokens is actually worth
&lt;/h2&gt;

&lt;p&gt;One billion tokens equals about ten weeks of the free weekly allowance, or two full weeks of the $20 Power plan.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comparison&lt;/th&gt;
&lt;th&gt;Equivalent of 1B bonus tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free plan (~100M/week)&lt;/td&gt;
&lt;td&gt;About 10 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power plan (500M/week)&lt;/td&gt;
&lt;td&gt;About 2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max plan (3B/week)&lt;/td&gt;
&lt;td&gt;About 2 days&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In practical terms, that is room to let Muse run real errands, research projects, and longer background goals without watching the meter. Agent tasks that browse many pages burn tokens faster than chat, so the bonus is most useful for the bigger jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and safety: what to know before you connect your accounts
&lt;/h2&gt;

&lt;p&gt;An agent that reads your email and makes purchases needs more trust than a chatbot, and Meta has built in several safeguards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Isolated machine.&lt;/strong&gt; Your agent and your data live in their own virtual machine that no other user's agent can reach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentinel.&lt;/strong&gt; A separate security agent controls internet access and permissions, kept apart from Muse at the system level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hidden credentials.&lt;/strong&gt; Passwords and payment details are stored so Muse itself never sees them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your choice on training.&lt;/strong&gt; You can opt out of having your conversations used to train Meta's models, and Meta says personal conversations aren't shared with its advertising systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good habits still apply. Start by connecting only the apps a task needs, require approval for purchases, and review what Muse did before you hand it more access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Muse really free?&lt;/strong&gt; Yes. The free tier has the same features as the paid plans, just a smaller weekly token allowance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do the bonus tokens expire?&lt;/strong&gt; Bonus tokens are separate from your weekly allowance and don't reset with it. Meta can change promotion terms, so use them on real tasks rather than saving them indefinitely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I missed the 48-hour window. Can I still redeem?&lt;/strong&gt; No. The redeem option disappears once the window closes, so enter the code during your first session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use Muse outside the US?&lt;/strong&gt; Not officially yet. An invite code only adds tokens; it doesn't unlock Muse in countries where it hasn't launched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Muse the same as Muse Code or the Meta AI app?&lt;/strong&gt; No. Muse Code is a separate coding tool for developers with its own plans, and Meta AI is Meta's general assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to try it?
&lt;/h2&gt;

&lt;p&gt;Sign up at &lt;a href="https://muse.ai/join" rel="noopener noreferrer"&gt;muse.ai/join&lt;/a&gt;, open Settings, and redeem code &lt;strong&gt;02F1OY&lt;/strong&gt; within 48 hours. You'll start with 1 billion bonus tokens on top of your free weekly allowance.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Welcome to TechRay.dev: Why I'm Writing About AI, Agents, and the Future of Building Software</title>
      <dc:creator>Raymond Busuttil</dc:creator>
      <pubDate>Thu, 24 Sep 2026 00:05:56 +0000</pubDate>
      <link>https://dev.to/techray/welcome-to-techraydev-why-im-writing-about-ai-agents-and-the-future-of-building-software-2obo</link>
      <guid>https://dev.to/techray/welcome-to-techraydev-why-im-writing-about-ai-agents-and-the-future-of-building-software-2obo</guid>
      <description>&lt;p&gt;Hi, I'm Raymond Busuttil, and this is the first post on my new corner of the internet.&lt;/p&gt;

&lt;p&gt;I've wanted a place like this for a while. Tech moves fast, and the last couple of years have felt like a decade of change compressed into a few seasons. I spend a lot of time reading, tinkering, and building with the latest tools, and I kept catching myself explaining the same things to friends and colleagues over and over. A personal site felt like the obvious next step: a place to think out loud, share what I learn, and hopefully save you some time along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What TechRay.dev is about
&lt;/h2&gt;

&lt;p&gt;Three things will show up here more than anything else:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending tech.&lt;/strong&gt; I'll cover the tools, platforms, and shifts that are worth paying attention to, and I'll be upfront about the ones I think are overhyped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI, practically speaking.&lt;/strong&gt; Not the breathless "everything is about to change" version, and not the dismissive "it's just autocomplete" version either. I want to look at what these systems are genuinely good at, where they fall over, and how to use them well in real work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic coding.&lt;/strong&gt; This is the one I'm most excited about. We've moved from AI that suggests the next line of code to AI that can plan a task, read a codebase, run commands, fix its own errors, and hand back a working result. That changes how software gets built, and it changes what it means to be a developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opinion, with receipts
&lt;/h2&gt;

&lt;p&gt;Expect two flavors of content on this blog.&lt;/p&gt;

&lt;p&gt;The first is &lt;strong&gt;opinion pieces&lt;/strong&gt;. I have views, sometimes strong ones, and I'll share them. But I'll try to hold them loosely. If I change my mind about something, I'll say so, because in a field that reshapes itself every few months, the people who never update their opinions are the ones who get left behind.&lt;/p&gt;

&lt;p&gt;The second is &lt;strong&gt;helpful, hands-on articles&lt;/strong&gt;: how-tos, workflows, lessons learned, and the occasional "here's the mistake I made so you don't have to." If a post doesn't leave you with something you can use or think about, I haven't done my job.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick take on agentic coding
&lt;/h2&gt;

&lt;p&gt;Since it's going to be a recurring theme, here's where my head is at right now.&lt;/p&gt;

&lt;p&gt;The biggest shift isn't that AI can write code. It's that AI can now &lt;em&gt;work&lt;/em&gt; on code. There's a real difference. Autocomplete helps you type faster. An agent can take a goal like "add pagination to this endpoint and update the tests," explore your project, make changes across several files, run the test suite, notice something broke, and try again.&lt;/p&gt;

&lt;p&gt;That's powerful, and it's also where people get into trouble. A few things I've come to believe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your judgment matters more, not less.&lt;/strong&gt; When code is cheap to generate, the scarce skill becomes knowing what to build, spotting what's subtly wrong, and deciding what "good" looks like.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review is the new bottleneck.&lt;/strong&gt; Agents can produce changes faster than a human can carefully read them. Learning to review efficiently, and to structure work so it's &lt;em&gt;reviewable&lt;/em&gt;, is a real skill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clear instructions beat clever prompts.&lt;/strong&gt; The people getting the best results aren't using magic phrases. They're giving agents clear context, tight scope, and a way to verify their own work, like tests or a build step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small, verifiable steps win.&lt;/strong&gt; Asking an agent to rebuild your whole app in one go is a gamble. Asking it to do one well-defined piece and confirming it works is how you make steady progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fundamentals still pay off.&lt;/strong&gt; Understanding how systems work, how to debug, and how to read code makes you a far better collaborator with an AI than someone who's just accepting whatever comes back.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don't think agents replace developers. I do think developers who learn to work with them will have a serious edge, and I want to help make that transition less intimidating.&lt;/p&gt;

&lt;h2&gt;
  
  
  The healthy skepticism clause
&lt;/h2&gt;

&lt;p&gt;I'm optimistic about this technology, but optimism isn't the same as cheerleading. AI tools make mistakes, sometimes confidently. They can introduce security problems, invent APIs that don't exist, and produce code that looks right but isn't. Hype cycles also tend to skip over the boring stuff: cost, reliability, maintenance, and the impact on people's jobs and careers.&lt;/p&gt;

&lt;p&gt;I'll try to cover the full picture here, the exciting parts and the uncomfortable ones. If something is impressive, I'll say so. If it's a shiny distraction, I'll say that too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's coming next
&lt;/h2&gt;

&lt;p&gt;To give you a taste of what's ahead, here are some topics I'm planning to dig into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How I set up my workflow for building with AI coding agents&lt;/li&gt;
&lt;li&gt;Common mistakes people make when delegating work to an agent (and how to avoid them)&lt;/li&gt;
&lt;li&gt;What to look for when choosing between AI tools and models&lt;/li&gt;
&lt;li&gt;How to keep your own skills sharp while leaning on AI&lt;/li&gt;
&lt;li&gt;Honest reviews of new tools and releases as they land&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there's something specific you'd like me to cover, I'd genuinely love to hear it. This site will be better if it's shaped by the people reading it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks for being here
&lt;/h2&gt;

&lt;p&gt;Whether you're a seasoned engineer, a curious beginner, or just someone trying to make sense of where technology is heading, I'm glad you stopped by. I'm figuring this out as I go, and I'd like to do it in public, with you along for the ride.&lt;/p&gt;

&lt;p&gt;Grab a coffee, look around, and check back soon. There's a lot to explore.&lt;/p&gt;

&lt;p&gt;Until next time,&lt;br&gt;
&lt;strong&gt;Raymond Busuttil&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;TechRay.dev&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>software</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
