<?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: Leon Wong 282</title>
    <description>The latest articles on DEV Community by Leon Wong 282 (@leonwong282).</description>
    <link>https://dev.to/leonwong282</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%2F3578460%2F5ccfde54-11cf-4269-a4c1-d99b00a14b85.jpg</url>
      <title>DEV Community: Leon Wong 282</title>
      <link>https://dev.to/leonwong282</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leonwong282"/>
    <language>en</language>
    <item>
      <title>The Beginner's Guide to Raycast: Replace Spotlight in 15 Minutes</title>
      <dc:creator>Leon Wong 282</dc:creator>
      <pubDate>Fri, 07 Nov 2025 13:23:56 +0000</pubDate>
      <link>https://dev.to/leonwong282/the-beginners-guide-to-raycast-replace-spotlight-in-15-minutes-83g</link>
      <guid>https://dev.to/leonwong282/the-beginners-guide-to-raycast-replace-spotlight-in-15-minutes-83g</guid>
      <description>&lt;h1&gt;
  
  
  The Beginner's Guide to Raycast: Replace Spotlight in 15 Minutes
&lt;/h1&gt;

&lt;p&gt;You've probably used Spotlight thousands of times. ⌘Space, type an app name, press Enter. It works, but it's like using a bicycle when you could be driving a race car.&lt;/p&gt;

&lt;p&gt;What if I told you there's a &lt;strong&gt;free Mac app&lt;/strong&gt; that's faster than Spotlight, remembers everything you copy, lets you manage windows with your keyboard, and has 1,300+ extensions? And you can set it up in 15 minutes?&lt;/p&gt;

&lt;p&gt;That app is &lt;strong&gt;Raycast&lt;/strong&gt;, and in this beginner's guide, I'll show you exactly how to replace Spotlight and unlock productivity features you didn't know you needed. No technical skills required — just follow along.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Raycast? (And Why Should You Care?)
&lt;/h2&gt;

&lt;p&gt;Raycast is a &lt;strong&gt;blazingly fast, extendable launcher for macOS.&lt;/strong&gt; Think "Spotlight on steroids" — same basic idea, but 10x more powerful. It's built specifically for keyboard-first workflows and is completely free with a privacy-focused approach (your data stays on your Mac).&lt;/p&gt;

&lt;p&gt;The key insight: &lt;strong&gt;Raycast does everything Spotlight does, plus dozens of features you'll wonder how you lived without.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fax2hsm8ztz2utu0n7hvk.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fax2hsm8ztz2utu0n7hvk.jpg" alt="Raycast version.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Installing Raycast
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Download and Install
&lt;/h3&gt;

&lt;p&gt;The fastest way to install Raycast is via Homebrew. If you already have Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; raycast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't have Homebrew? No problem:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit &lt;a href="http://raycast.com" rel="noopener noreferrer"&gt;raycast.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click "Download for Mac" (requires macOS 13+)&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: Remember Grant Permissions.&lt;/p&gt;
&lt;/blockquote&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6cow72xj58xt01ggcky.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6cow72xj58xt01ggcky.jpg" alt="Raycast Website.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Replacing Spotlight (The Most Important Step)
&lt;/h2&gt;

&lt;p&gt;Here's the critical decision: &lt;strong&gt;Don't try to use both Spotlight and Raycast.&lt;/strong&gt; You'll split your muscle memory and never build the habit. Replace Spotlight completely.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Replace Spotlight:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Disable Spotlight's hotkey&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open System Settings → Keyboard → Keyboard Shortcuts&lt;/li&gt;
&lt;li&gt;Click "Spotlight" in the sidebar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uncheck&lt;/strong&gt; "Show Spotlight search" (⌘Space)&lt;/li&gt;
&lt;/ol&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbmxuxlv8hz2axjmjwav.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbmxuxlv8hz2axjmjwav.jpg" alt="Toggle ⌘ Space.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Set Raycast to ⌘Space&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Raycast&lt;/li&gt;
&lt;li&gt;Press ⌘, (comma) to open Preferences&lt;/li&gt;
&lt;li&gt;Go to General → Raycast Hotkey&lt;/li&gt;
&lt;li&gt;Click the field and press &lt;strong&gt;⌘Space&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why ⌘Space is critical:&lt;/strong&gt; Your fingers already know this shortcut from years of Spotlight. Using it for Raycast means zero retraining.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmoxz2i95pw3z0kssaxx.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmoxz2i95pw3z0kssaxx.jpg" alt="Setting ⌘ Space.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Your First 5 Minutes with Raycast
&lt;/h2&gt;

&lt;p&gt;Open Raycast (⌘Space) and try these right now:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Launch Apps (Just Like Spotlight)
&lt;/h3&gt;

&lt;p&gt;Type "chrome" → Google Chrome appears instantly&lt;/p&gt;

&lt;p&gt;Type "mail" → Mail app&lt;/p&gt;

&lt;p&gt;Type "vs" → VS Code (partial matching works!)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key insight:&lt;/strong&gt; Raycast learns your patterns. The apps you use most will show up after typing just 1-2 letters.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnq5kroybnpud7r4yrxv.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnq5kroybnpud7r4yrxv.jpg" alt="Chrome.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Find Files
&lt;/h3&gt;

&lt;p&gt;In File Search. Type "bill" → Finds the file anywhere on your system&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8o15k87ta6lp671x19id.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8o15k87ta6lp671x19id.jpg" alt="Fill Search.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Do Calculations
&lt;/h3&gt;

&lt;p&gt;Type "250  &lt;em&gt;0.08" → 20&lt;/em&gt;* (instant result)&lt;/p&gt;

&lt;p&gt;Type "50 USD to EUR" → Live currency conversion&lt;/p&gt;

&lt;p&gt;Type "10 miles to km" → Unit conversion&lt;/p&gt;

&lt;p&gt;No need to open Calculator ever again.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7ry5f1ktvtyjgs3mvss.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7ry5f1ktvtyjgs3mvss.jpg" alt="Caculator.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Understanding the Action Panel (⌘K)
&lt;/h3&gt;

&lt;p&gt;Press &lt;strong&gt;⌘K&lt;/strong&gt; on any result to see all available actions. The Action Panel is context-sensitive — it shows different options depending on what you've selected.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On an app → Open, Quit, Show in Finder, Copy Path&lt;/li&gt;
&lt;li&gt;On a file → Open, Open With, Move to Trash, Copy&lt;/li&gt;
&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxre81lyobj3jx9g9tk4.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxre81lyobj3jx9g9tk4.jpg" alt="Action ⌘ K.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Game-Changing Features You Can Set Up Right Now
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Feature 1: Clipboard History
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt; You copy something important, then accidentally copy over it. It's gone forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; Raycast remembers everything you copy for 3 months.&lt;/p&gt;

&lt;p&gt;You're writing an email and need to paste 5 different pieces of information (addresses, names, numbers). Normally, you'd copy-paste-switch-copy-paste 5 times. With clipboard history: &lt;strong&gt;Copy all 5 things first, then paste them in any order.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nvss8pi696deyuz7v9t.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nvss8pi696deyuz7v9t.jpg" alt="Clipborad.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Feature 2: Text Snippets
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt; You type the same things over and over — email signatures, addresses, greetings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; Type a short keyword and it expands to full text automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; Type &lt;code&gt;;sparkle&lt;/code&gt; anywhere (email, documents, chat) → it instantly expands to your full signature. &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbjd434s2iq9tq4lkaqqh.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbjd434s2iq9tq4lkaqqh.jpg" alt="Snippets.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Feature 3: Window Management
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt; Arranging windows by dragging is slow and imprecise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; Keyboard shortcuts that snap windows into place instantly.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftck7ilo12j9bmddtsw5y.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftck7ilo12j9bmddtsw5y.jpg" alt="Window.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Installing Your First Extension
&lt;/h2&gt;

&lt;p&gt;Extensions are plugins that add new commands to Raycast. There are over 1,300 available — GitHub integration, Notion search, Spotify controls, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to browse extensions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Raycast → type "store"&lt;/li&gt;
&lt;li&gt;Press Enter to open Extension Store&lt;/li&gt;
&lt;li&gt;Browse by category or search&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Let's install Color Picker (useful for everyone):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for "Color Picker" in the Store&lt;/li&gt;
&lt;li&gt;Click Install&lt;/li&gt;
&lt;li&gt;Usage: ⌘Space → type "color picker" → click anywhere on your screen to grab that color&lt;/li&gt;
&lt;/ol&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hnjsnp9sna5ydz0omnp.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hnjsnp9sna5ydz0omnp.jpg" alt="Color Picker Store.jpg" width="800" height="500"&gt;&lt;/a&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq6yep7lsehpzmq01pae.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq6yep7lsehpzmq01pae.jpg" alt="Color Organize.jpg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other beginner-friendly extensions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Emoji&lt;/strong&gt; — Search and insert emoji faster than Character Viewer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calendar&lt;/strong&gt; — View today's schedule without opening Calendar app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spotify&lt;/strong&gt; — Control music without switching windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many extensions require API keys or account connections. Don't worry — each extension guides you through setup with clear instructions.&lt;/p&gt;




&lt;h2&gt;
  
  
  You're Now a Raycast User
&lt;/h2&gt;

&lt;p&gt;In the last 15 minutes, you've transformed your Mac into a productivity powerhouse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bottom line:&lt;/strong&gt; You've spent 15 minutes that will save you hours every month. Raycast isn't just a better Spotlight — it's a complete rethinking of how you interact with your Mac.&lt;/p&gt;

&lt;p&gt;Once Raycast feels natural (give it a week), explore advanced features like Script Commands, AI integration (Raycast Pro), and custom themes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's your favorite Raycast feature so far?&lt;/strong&gt; Drop a comment below — I'm genuinely curious which feature clicked for you first. For me, it was clipboard history. I recovered important text I'd accidentally copied over, and I was sold forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide helped you discover Raycast, share it with a friend who's still using plain Spotlight.&lt;/strong&gt; They'll thank you for the productivity upgrade.&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://manual.raycast.com" rel="noopener noreferrer"&gt;Official Raycast Manual&lt;/a&gt; — Comprehensive documentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raycast.com/store" rel="noopener noreferrer"&gt;Raycast Extension Store&lt;/a&gt; — Browse all 1,300+ extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Welcome to the world of keyboard-driven productivity. You're going to love it here.&lt;/em&gt; ⚡️&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Installing MySQL 8.0 on macOS with Homebrew: A Complete Guide</title>
      <dc:creator>Leon Wong 282</dc:creator>
      <pubDate>Thu, 06 Nov 2025 11:32:14 +0000</pubDate>
      <link>https://dev.to/leonwong282/installing-mysql-80-on-macos-with-homebrew-a-complete-guide-4gm5</link>
      <guid>https://dev.to/leonwong282/installing-mysql-80-on-macos-with-homebrew-a-complete-guide-4gm5</guid>
      <description>&lt;h1&gt;
  
  
  Installing MySQL 8.0 on macOS with Homebrew: A Complete Guide
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Recently, I needed to set up a development environment on my Mac and chose to use Homebrew to install MySQL 8.0. The process was smoother than expected, so I'm sharing the complete installation steps and some practical tips here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Make sure Homebrew is already installed on your system. If not, run this command in Terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installation Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Update Homebrew
&lt;/h3&gt;

&lt;p&gt;First, update Homebrew to the latest version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Install MySQL 8.0
&lt;/h3&gt;

&lt;p&gt;Run the following command to install MySQL 8.0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;mysql@8.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The installation process will automatically download and configure MySQL, usually taking a few minutes. Homebrew automatically handles environment variable configuration, so you can use the &lt;code&gt;mysql&lt;/code&gt; command directly after installation.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8uyyaomtln7scbgz2fm3.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8uyyaomtln7scbgz2fm3.jpg" alt="Install MySQL8.0.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Start MySQL Service
&lt;/h3&gt;

&lt;p&gt;There are two ways to start the MySQL service:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1: Start immediately (without auto-start on boot)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew services start mysql@8.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 2: Manual start&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql.server start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Security Configuration
&lt;/h3&gt;

&lt;p&gt;Run MySQL's security configuration script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql_secure_installation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This script will guide you through the following configurations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set root password&lt;/li&gt;
&lt;li&gt;Remove anonymous users&lt;/li&gt;
&lt;li&gt;Disallow root login remotely&lt;/li&gt;
&lt;li&gt;Remove test database&lt;/li&gt;
&lt;li&gt;Reload privilege tables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's recommended to select "Yes" for all options to enhance security.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5azhnug3lfvu5an8bz8.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5azhnug3lfvu5an8bz8.jpg" alt="Start and mysql_secure_installation.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify Installation
&lt;/h2&gt;

&lt;p&gt;Log into MySQL&lt;/p&gt;

&lt;p&gt;Enter the password you just set to log in.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58llwv1q16k8qu5p6ia7.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58llwv1q16k8qu5p6ia7.jpg" alt="Test MySQL.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Option: DataGrip config
&lt;/h2&gt;

&lt;p&gt;If you prefer to operate the database using a GUI tool, you can configure the DataGrip connect MySQL.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklp5yrvykurp7kvz9r94.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklp5yrvykurp7kvz9r94.jpg" alt="Use DataGrip config.jpg" width="800" height="450"&gt;&lt;/a&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcqll7qx0zlc4hnjw68i7.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcqll7qx0zlc4hnjw68i7.jpg" alt="Test DataGrip.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Service Management
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Start service&lt;/span&gt;
brew services start mysql@8.0

&lt;span class="c"&gt;# Stop service&lt;/span&gt;
brew services stop mysql@8.0

&lt;span class="c"&gt;# Restart service&lt;/span&gt;
brew services restart mysql@8.0

&lt;span class="c"&gt;# Check service status&lt;/span&gt;
brew services list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Connect to MySQL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Connect as root user&lt;/span&gt;
mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt;

&lt;span class="c"&gt;# Connect to specific database&lt;/span&gt;
mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt; database_name

&lt;span class="c"&gt;# Specify host and port&lt;/span&gt;
mysql &lt;span class="nt"&gt;-h&lt;/span&gt; localhost &lt;span class="nt"&gt;-P&lt;/span&gt; 3306 &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uninstalling MySQL
&lt;/h2&gt;

&lt;p&gt;If you need to uninstall:&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;# Stop service&lt;/span&gt;
brew services stop mysql@8.0

&lt;span class="c"&gt;# Uninstall&lt;/span&gt;
brew uninstall mysql@8.0

&lt;span class="c"&gt;# Delete data (optional)&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /opt/homebrew/var/mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Installing MySQL 8.0 with Homebrew is very straightforward - the entire process requires just a few commands. Homebrew automatically handles dependencies and configuration, making it much easier than manual installation. Remember to complete the security configuration after installation, and you're ready to start using MySQL!&lt;/p&gt;

&lt;p&gt;I hope this tutorial helps! Feel free to share in the comments if you encounter any other issues.&lt;/p&gt;

</description>
      <category>database</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>What I Wish I Knew About Homebrew Before Wasting 2 Hours Troubleshooting</title>
      <dc:creator>Leon Wong 282</dc:creator>
      <pubDate>Sat, 25 Oct 2025 04:01:26 +0000</pubDate>
      <link>https://dev.to/leonwong282/what-i-wish-i-knew-about-homebrew-before-wasting-2-hours-troubleshooting-3don</link>
      <guid>https://dev.to/leonwong282/what-i-wish-i-knew-about-homebrew-before-wasting-2-hours-troubleshooting-3don</guid>
      <description>&lt;h1&gt;
  
  
  What I Wish I Knew About Homebrew Before Wasting 2 Hours Troubleshooting
&lt;/h1&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ksc5p8li4dq7korp3sc.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ksc5p8li4dq7korp3sc.jpg" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last Tuesday, I decided to finally install Homebrew on my new MacBook to create a testing environment for writing blog posts. I'd heard it was the "must-have" tool for Mac developers. The installation looked simple enough—copy a command, paste it into Terminal, wait a few minutes. Easy, right?&lt;/p&gt;

&lt;p&gt;Thirty minutes later, I was staring at &lt;code&gt;brew: command not found&lt;/code&gt; errors. An hour after that, I'd accidentally broken my entire setup with &lt;code&gt;sudo&lt;/code&gt; and was desperately Googling "how to fix Homebrew permissions." By hour two, I was questioning every life choice that led me to this moment.&lt;/p&gt;

&lt;p&gt;The frustrating part? Every single issue I hit was completely preventable. They're mistakes that thousands of beginners make every day, and they all have simple fixes—if you know what to look for.&lt;/p&gt;

&lt;p&gt;If you just installed Homebrew and it's not working, or you're stuck in troubleshooting hell right now, this guide will save you hours. I'm sharing the 5 critical mistakes I made so you don't have to make them too.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mistake #1: Not Adding Homebrew to Your PATH
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The symptom:&lt;/strong&gt; You successfully install Homebrew, but typing &lt;code&gt;brew install git&lt;/code&gt; gives you &lt;code&gt;brew: command not found&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is the #1 issue beginners face, and it's especially common if you have an Apple Silicon Mac (M1, M2, M3, or M4).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it happens:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On Intel Macs, Homebrew installs to &lt;code&gt;/usr/local/bin&lt;/code&gt;, which is already in your system's PATH. Your Terminal knows to look there for commands, so everything works automatically.&lt;/p&gt;

&lt;p&gt;On Apple Silicon Macs, Homebrew installs to &lt;code&gt;/opt/homebrew/bin&lt;/code&gt; instead. This location is &lt;strong&gt;not&lt;/strong&gt; in your PATH by default. When you type &lt;code&gt;brew&lt;/code&gt;, your Terminal has no idea where to find it.&lt;/p&gt;

&lt;p&gt;During installation, Homebrew displays a message telling you to add it to your PATH. But it's buried in a wall of installation text that most people skim past. I know I did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The 2-minute fix:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Copy these two lines into your Terminal and press Enter after each:&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(/opt/homebrew/bin/brew shellenv)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zprofile
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/opt/homebrew/bin/brew shellenv&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this does:&lt;/strong&gt; The first line adds Homebrew to your shell configuration file permanently. The second line activates it immediately without restarting Terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify it worked:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see &lt;code&gt;Homebrew 4.x.x&lt;/code&gt;, you're golden. If not, close Terminal completely (Command + Q) and open it again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; This is only needed on Apple Silicon Macs. If you have an older Intel Mac and &lt;code&gt;brew&lt;/code&gt; isn't working, the problem is something else—jump to Mistake #2.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mistake #2: Using &lt;code&gt;sudo&lt;/code&gt; with Homebrew (The Fatal Error)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The symptom:&lt;/strong&gt; You see "Permission denied" errors and decide to add &lt;code&gt;sudo&lt;/code&gt; to your command. It seems to work... until everything breaks.&lt;/p&gt;

&lt;p&gt;This is the mistake I regret most. It took me an hour to undo the damage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why beginners do this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On Linux, when you see permission errors, you typically add &lt;code&gt;sudo&lt;/code&gt; to run commands as administrator. It's muscle memory for anyone with a bit of Unix experience.&lt;/p&gt;

&lt;p&gt;So when Homebrew shows a permission error, your instinct is: "Ah, I need admin privileges. Let me try &lt;code&gt;sudo brew install git&lt;/code&gt;."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this is catastrophic:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Homebrew is designed to run &lt;strong&gt;without&lt;/strong&gt; sudo. When you use sudo, you create files and directories owned by root (the superuser) instead of your user account.&lt;/p&gt;

&lt;p&gt;Now your Homebrew installation is partly owned by you and partly owned by root. Future Homebrew commands fail because they can't modify root-owned files. And the errors snowball from there.&lt;/p&gt;

&lt;p&gt;I spent 45 minutes fixing permission issues because of one &lt;code&gt;sudo brew&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The iron-clad rule:&lt;/strong&gt;&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;# ❌ NEVER do this:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;span class="nb"&gt;sudo &lt;/span&gt;brew update
&lt;span class="nb"&gt;sudo &lt;/span&gt;anything-with-brew

&lt;span class="c"&gt;# ✅ ALWAYS do this:&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;git
brew update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;If you already used sudo, here's how to fix it:&lt;/strong&gt;&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="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;whoami&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; /opt/homebrew/&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This resets ownership of all Homebrew files back to your user account. Then run &lt;code&gt;brew doctor&lt;/code&gt; (more on that in Mistake #3) to verify everything is fixed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I wish I knew:&lt;/strong&gt; Homebrew manages its own permissions elegantly. If you see permission errors, it means something is already wrong with your setup—not that you need sudo. The correct first step is always &lt;code&gt;brew doctor&lt;/code&gt;, not &lt;code&gt;sudo&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mistake #3: Ignoring &lt;code&gt;brew doctor&lt;/code&gt; Warnings
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The symptom:&lt;/strong&gt; Homebrew works sometimes but gives weird errors. Software installs but doesn't run correctly. You're not sure if things are actually broken or just quirky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it happens:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most beginners don't know that Homebrew includes a built-in diagnostic tool. They only discover &lt;code&gt;brew doctor&lt;/code&gt; after Googling errors for 30 minutes.&lt;/p&gt;

&lt;p&gt;Even when you run it and see warnings, it's tempting to ignore them if things seem to be working. I did this. The warnings felt like suggestions, not requirements.&lt;/p&gt;

&lt;p&gt;They're not suggestions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The preventive fix:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single command diagnoses 90% of Homebrew issues. It checks your installation, identifies problems, and tells you exactly how to fix them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you might see:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; "You have unlinked kegs in your Cellar"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it means:&lt;/strong&gt; A package is installed but not accessible in your PATH&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; &lt;code&gt;brew link &amp;lt;package-name&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; "You have not agreed to the Xcode license"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it means:&lt;/strong&gt; Apple's Command Line Tools need license acceptance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; &lt;code&gt;sudo xcodebuild -license&lt;/code&gt; then type "agree"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; "Config scripts exist outside your system"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it means:&lt;/strong&gt; You have conflicting installations from other package managers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Follow the specific instructions Homebrew provides&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to run brew doctor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Immediately after installing Homebrew&lt;/li&gt;
&lt;li&gt;After installing any complex package (like Python or Node.js)&lt;/li&gt;
&lt;li&gt;Any time something doesn't work as expected&lt;/li&gt;
&lt;li&gt;Monthly, as part of your maintenance routine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If &lt;code&gt;brew doctor&lt;/code&gt; says "Your system is ready to brew," you're good. If not, read every warning and fix them in order. Don't skip any.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I wish I knew:&lt;/strong&gt; Running &lt;code&gt;brew doctor&lt;/code&gt; before I tried random Stack Overflow fixes would've pointed me directly to the PATH issue and saved me two hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mistake #4: Not Understanding Formulae vs Casks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The symptom:&lt;/strong&gt; &lt;code&gt;Error: No available formula with the name "visual-studio-code"&lt;/code&gt; even though you know VSCode is available through Homebrew.&lt;/p&gt;

&lt;p&gt;Or you install something and can't figure out where it went or how to launch it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it happens:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Homebrew has two types of packages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Formulae&lt;/strong&gt; are command-line tools that get compiled and installed. Think: &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;wget&lt;/code&gt;, &lt;code&gt;node&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Casks&lt;/strong&gt; are GUI applications that get downloaded as pre-built apps. Think: &lt;code&gt;visual-studio-code&lt;/code&gt;, &lt;code&gt;firefox&lt;/code&gt;, &lt;code&gt;slack&lt;/code&gt;, &lt;code&gt;zoom&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The command syntax is different, and beginners constantly forget the &lt;code&gt;--cask&lt;/code&gt; flag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For command-line tools (formulae):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;git
brew &lt;span class="nb"&gt;install &lt;/span&gt;python
brew &lt;span class="nb"&gt;install &lt;/span&gt;wget
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;For GUI applications (casks):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; visual-studio-code
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; slack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How to check which type you need:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew search visual-studio-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output shows whether it's in "Formulae" or "Casks." If it says Casks, you need the &lt;code&gt;--cask&lt;/code&gt; flag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; If you want something with a graphical interface that normally lives in your Applications folder, you almost always need &lt;code&gt;--cask&lt;/code&gt;. Command-line tools never need it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I wish I knew:&lt;/strong&gt; I wasted 15 minutes trying to install VSCode without &lt;code&gt;--cask&lt;/code&gt;, convinced the package name was wrong. A quick &lt;code&gt;brew search&lt;/code&gt; would've told me exactly what I needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mistake #5: Skipping the Caveats
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The symptom:&lt;/strong&gt; Software installs successfully, but when you try to use it, nothing happens. Or it works but not the way you expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it happens:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After installing a package, Homebrew displays "Caveats"—important post-installation instructions. These often include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Commands to add the tool to your PATH&lt;/li&gt;
&lt;li&gt;How to start services (like databases)&lt;/li&gt;
&lt;li&gt;Configuration steps required before first use&lt;/li&gt;
&lt;li&gt;Version-specific warnings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beginners see a wall of text, assume it's optional, and close Terminal. Or they don't scroll back up to read what was printed 50 lines ago.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example caveat that breaks things if ignored:&lt;/strong&gt;&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="o"&gt;==&amp;gt;&lt;/span&gt; Caveats
To start mysql now and restart at login:
  brew services start mysql

Or, &lt;span class="k"&gt;if &lt;/span&gt;you don&lt;span class="s1"&gt;'t want to run it as a service:
  mysql.server start
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don't run one of these commands, MySQL is installed but not running. You'll get "connection refused" errors and think the installation failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After every installation, scroll back and &lt;strong&gt;read the caveats&lt;/strong&gt;. Actually read them, word by word. If they tell you to run a command, run it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Viewing caveats later:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew info &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows the package information including all caveats, even if you closed Terminal hours ago.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I wish I knew:&lt;/strong&gt; Those caveats aren't suggestions or nice-to-know tips. They're &lt;strong&gt;required steps&lt;/strong&gt; to make the software actually work. Treat them like installation instructions, not optional reading.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus Mistake: Forgetting to Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The symptom:&lt;/strong&gt; Packages you know exist show "formula not found" errors. Or you install outdated versions with known security issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it happens:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Homebrew's package definitions live in a Git repository. Over time, they get stale on your local machine. New packages aren't visible, and version information gets outdated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this before installing anything new. It takes 5-30 seconds and updates Homebrew itself plus all package definitions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it a habit:&lt;/strong&gt; Update weekly as part of your maintenance routine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew upgrade &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew cleanup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This updates definitions, upgrades all installed packages, and removes old versions to free disk space.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 5-Minute Troubleshooting Checklist
&lt;/h2&gt;

&lt;p&gt;When Homebrew isn't working, run these commands in order:&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;# 1. Is Homebrew in your PATH?&lt;/span&gt;
which brew

&lt;span class="c"&gt;# 2. What's wrong?&lt;/span&gt;
brew doctor

&lt;span class="c"&gt;# 3. Are your package definitions current?&lt;/span&gt;
brew update

&lt;span class="c"&gt;# 4. Is the specific package available?&lt;/span&gt;
brew search &amp;lt;package-name&amp;gt;

&lt;span class="c"&gt;# 5. Check ownership (Apple Silicon)&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; /opt/homebrew | &lt;span class="nb"&gt;head&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;90% of the time, &lt;code&gt;brew doctor&lt;/code&gt; identifies the exact problem and tells you how to fix it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;Two hours of troubleshooting taught me what five minutes of preparation could have prevented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add Homebrew to your PATH&lt;/strong&gt; (Apple Silicon Macs require manual setup)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never use sudo with Homebrew commands&lt;/strong&gt; (it breaks permissions permanently)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run &lt;code&gt;brew doctor&lt;/code&gt; first, Google second&lt;/strong&gt; (diagnostics before desperation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use &lt;code&gt;--cask&lt;/code&gt; for GUI apps&lt;/strong&gt; (VSCode, Firefox, Slack need this flag)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the caveats every time&lt;/strong&gt; (they're required steps, not optional)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern is always the same: skip the setup instructions, ignore the warnings, spend hours troubleshooting what could've been prevented in minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;brew doctor&lt;/code&gt; right now (even if things seem to work)&lt;/li&gt;
&lt;li&gt;Bookmark this guide for when you hit issues&lt;/li&gt;
&lt;li&gt;Read the &lt;a href="https://docs.brew.sh" rel="noopener noreferrer"&gt;official Homebrew documentation&lt;/a&gt; for deeper understanding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What was your biggest Homebrew mistake?&lt;/strong&gt; I'd love to hear if you've hit these same issues or discovered other gotchas I missed. Drop a comment below.&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How I Stopped Manually Installing Software on Mac (And You Should Too) — Complete Homebrew tutorial for beginners&lt;/li&gt;
&lt;li&gt;Why Your Mac Software Installation is Broken (And How to Fix It in 10 Minutes) — Why package managers matter&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.brew.sh" rel="noopener noreferrer"&gt;Homebrew Official Documentation&lt;/a&gt; — Full command reference and guides&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Your Mac Software Installation is Broken (And How to Fix It in 10 Minutes)</title>
      <dc:creator>Leon Wong 282</dc:creator>
      <pubDate>Fri, 24 Oct 2025 06:18:20 +0000</pubDate>
      <link>https://dev.to/leonwong282/why-your-mac-software-installation-is-broken-and-how-to-fix-it-in-10-minutes-331d</link>
      <guid>https://dev.to/leonwong282/why-your-mac-software-installation-is-broken-and-how-to-fix-it-in-10-minutes-331d</guid>
      <description>&lt;h1&gt;
  
  
  Why Your Mac Software Installation is Broken (And How to Fix It in 10 Minutes)
&lt;/h1&gt;

&lt;p&gt;Last Saturday, I watched my friend spend four hours setting up his new MacBook Pro. Four. Hours.&lt;/p&gt;

&lt;p&gt;He wasn't doing anything complicated. Just installing the basics: Chrome, Slack, VSCode, Zoom, Docker, Git — maybe 20 apps total. The same apps he had on his old machine.&lt;/p&gt;

&lt;p&gt;But each one required the same painful ritual: Google the name, hope the first result isn't malware, download, wait, open the DMG, drag to Applications, eject, delete the installer. Then do it all over again.&lt;/p&gt;

&lt;p&gt;By hour three, he looked at me and asked: "There has to be a faster way to do this, right?"&lt;/p&gt;

&lt;p&gt;The truth is, there is. And the fact that most Mac users don't know about it reveals something most people never realize: &lt;strong&gt;your Mac's software installation process is fundamentally broken.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's not your fault. Apple designed it this way. But here's what they won't tell you: you're probably wasting 30+ hours per year on software installation and updates. Hours you could spend doing literally anything else.&lt;/p&gt;

&lt;p&gt;In the next 7 minutes, I'll show you exactly what's broken about how you install software, why it's costing you time and creating security risks, and a 10-minute fix that solves it permanently.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "Normal" Installation Actually Costs You
&lt;/h2&gt;

&lt;p&gt;Let's talk about what you're really doing when you install software the "normal" way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 1: The Security Roulette Game
&lt;/h3&gt;

&lt;p&gt;Every time you Google "install [app name]," you're playing Russian roulette with malware.&lt;/p&gt;

&lt;p&gt;Type "download Chrome" into Google right now. You'll see ads for &lt;a href="http://chrome-download.com" rel="noopener noreferrer"&gt;chrome-download.com&lt;/a&gt;, &lt;a href="http://downloadchrome.com" rel="noopener noreferrer"&gt;downloadchrome.com&lt;/a&gt;, and a dozen other sites that &lt;strong&gt;aren't Google&lt;/strong&gt;. Some are legitimate mirrors. Others bundle adware. Some are straight-up malware.&lt;/p&gt;

&lt;p&gt;My friend learned this the hard way last month. Downloaded "Chrome" from what looked like an official site. Got Chrome plus three browser extensions he didn't ask for and a "system optimizer" that was actually spyware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost:&lt;/strong&gt; 10+ minutes per app verifying you're on the real website, plus the risk of spending hours cleaning up malware if you guess wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 2: The Dependency Black Hole
&lt;/h3&gt;

&lt;p&gt;Some software needs other software to work. But they won't tell you this upfront.&lt;/p&gt;

&lt;p&gt;Try installing Python from &lt;a href="http://python.org" rel="noopener noreferrer"&gt;python.org&lt;/a&gt;. It'll work. Then you try to use it and get an error about missing Xcode Command Line Tools. So you Google that, find a 500MB download, wait 20 minutes for it to install, and finally Python works.&lt;/p&gt;

&lt;p&gt;Or try installing ffmpeg manually. I'll wait. You'll need &lt;strong&gt;12+ dependencies&lt;/strong&gt;, each with its own website, download, installation process, and cryptic README file explaining which other dependencies you need first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost:&lt;/strong&gt; 1-2 hours minimum troubleshooting "why doesn't this work?" and hunting down dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 3: The Update Nightmare
&lt;/h3&gt;

&lt;p&gt;Quick question: When was the last time you updated all your software?&lt;/p&gt;

&lt;p&gt;Chrome nags you with a red dot every week. VSCode shows a badge. Slack slides in a banner. But Git? Node? Python? They just sit there, silently outdated, with security vulnerabilities piling up.&lt;/p&gt;

&lt;p&gt;Each app updates differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some auto-update in the background&lt;/li&gt;
&lt;li&gt;Some require you to download a new installer and repeat the whole process&lt;/li&gt;
&lt;li&gt;Some don't tell you updates exist at all&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost:&lt;/strong&gt; 20-30 minutes every month clicking through individual app updaters, or running old, insecure software because updating is too annoying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 4: The Version Chaos
&lt;/h3&gt;

&lt;p&gt;Pop quiz: Which version of Python is installed on your Mac right now?&lt;/p&gt;

&lt;p&gt;If you said "I don't know" or "There's more than one?!", you're not alone. Most Mac users have multiple versions of the same software scattered around their system, with no idea which one runs when they double-click.&lt;/p&gt;

&lt;p&gt;Three Python versions in different locations. Old apps forgotten in the Applications folder. Adobe trials you installed once in 2019. No way to track what you actually have or which versions conflict with each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost:&lt;/strong&gt; 15+ minutes diagnosing "it worked yesterday" problems when version conflicts break things.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem 5: The Downloads Folder Graveyard
&lt;/h3&gt;

&lt;p&gt;Check your Downloads folder right now. I'll bet you $20 there are .dmg and .pkg files in there from software you installed six months ago.&lt;/p&gt;

&lt;p&gt;Firefox 118.dmg. &lt;a href="http://VSCode-darwin.zip" rel="noopener noreferrer"&gt;VSCode-darwin.zip&lt;/a&gt;. Docker.dmg. Zoom.pkg. Each one is 50-500MB. You're never going to use them again, but they're just sitting there, wasting gigabytes of disk space.&lt;/p&gt;

&lt;p&gt;You have two choices: spend an hour manually cleaning them out, or live with eternal clutter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost:&lt;/strong&gt; Wasted disk space and mental clutter from a folder that looks like a software graveyard.&lt;/p&gt;




&lt;p&gt;These aren't edge cases. This is the standard Mac experience. But here's what most people don't know...&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tool Mac Should've Included (But Didn't)
&lt;/h2&gt;

&lt;p&gt;If you've ever used Linux, you know about package managers. Type &lt;code&gt;apt install firefox&lt;/code&gt; or &lt;code&gt;yum install git&lt;/code&gt; and boom — software installs automatically, with all dependencies, from verified sources.&lt;/p&gt;

&lt;p&gt;Windows doesn't have a great package manager either. But at least they're working on one (winget).&lt;/p&gt;

&lt;p&gt;macOS? You get the Mac App Store. Which is fine for consumer apps, but it's &lt;strong&gt;missing 90% of the software developers use&lt;/strong&gt; and doesn't give you control over versions or updates.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's a Package Manager?
&lt;/h3&gt;

&lt;p&gt;Think of it like an App Store, but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It has &lt;strong&gt;everything&lt;/strong&gt; (not just what Apple approves)&lt;/li&gt;
&lt;li&gt;It's &lt;strong&gt;controllable from your keyboard&lt;/strong&gt; (no clicking through GUIs)&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;handles updates all at once&lt;/strong&gt; (not app-by-app)&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;tracks versions and dependencies&lt;/strong&gt; automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the secret every Mac developer knows: there's been a free, open-source package manager for Mac since 2009. It's called &lt;strong&gt;Homebrew&lt;/strong&gt;, it's maintained by thousands of contributors, and it solves every problem I just described.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why haven't you heard of it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because it requires using Terminal. And Terminal scares people.&lt;/p&gt;

&lt;p&gt;But here's the truth: &lt;strong&gt;you don't need to be a developer to use it.&lt;/strong&gt; If you can copy and paste, you can fix your installation process forever.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Never Manually Download Software Again
&lt;/h2&gt;

&lt;p&gt;Let me show you what Homebrew actually does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before Homebrew:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google → Find website → Download → Wait → Open installer → Drag to Applications → Eject → Delete installer → Repeat × 20&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After Homebrew:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Type &lt;code&gt;brew install firefox&lt;/code&gt; → Press Enter → Done.&lt;/p&gt;

&lt;p&gt;That's it. One command. From verified sources. With all dependencies. In seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real numbers from my friend's setup:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing 15 apps manually: &lt;strong&gt;1 hour 45 minutes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Installing 15 apps with Homebrew: &lt;strong&gt;2 minutes 30 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's how to set it up in 10 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 10-Minute Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Open Terminal (1 minute)
&lt;/h3&gt;

&lt;p&gt;Press &lt;strong&gt;Command + Space&lt;/strong&gt;, type "Terminal", press Enter.&lt;/p&gt;

&lt;p&gt;A window with a black background will open. Don't panic — you're just going to copy and paste two things. That's literally it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Install Homebrew (3 minutes)
&lt;/h3&gt;

&lt;p&gt;Copy this command and paste it into Terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press Enter. It'll ask for your Mac password (the one you use to log in). Type it and press Enter again.&lt;/p&gt;

&lt;p&gt;You'll see text scrolling by. That's normal. It's downloading and installing Homebrew. Takes 2-3 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; If you have an M1, M2, M3, or M4 Mac (Apple Silicon), Terminal will show you one more command to copy at the end. It looks like this:&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(/opt/homebrew/bin/brew shellenv)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zprofile
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/opt/homebrew/bin/brew shellenv&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy and paste that too. This adds Homebrew to your system's PATH so it actually works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Verify It Works (1 minute)
&lt;/h3&gt;

&lt;p&gt;Type this and press Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see &lt;strong&gt;"Your system is ready to brew"&lt;/strong&gt;, you're golden. If not, the error message will tell you exactly how to fix it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Install Your First Apps (5 minutes)
&lt;/h3&gt;

&lt;p&gt;Now for the fun part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To install GUI applications (the ones you're used to):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; visual-studio-code
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; slack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;To install command-line tools:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;git
brew &lt;span class="nb"&gt;install &lt;/span&gt;wget
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Want to install multiple apps at once?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox google-chrome visual-studio-code slack zoom rectangle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What just happened:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You installed 6 applications in about 60 seconds. All from official sources. No clicking through installers. No dragging to Applications. No Downloads folder mess.&lt;/p&gt;

&lt;p&gt;When my friend saw this, his exact words were: "You're telling me I could've done this in 5 minutes instead of 4 hours?"&lt;/p&gt;

&lt;p&gt;Yes. Yes, I am.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Commands You'll Actually Use
&lt;/h2&gt;

&lt;p&gt;You don't need to memorize 50 commands. Here are the five that cover 90% of daily use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search for software:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew search chrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Install software:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Update everything at once:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update        &lt;span class="c"&gt;# Updates Homebrew itself&lt;/span&gt;
brew upgrade       &lt;span class="c"&gt;# Upgrades all your apps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Remove software:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew uninstall firefox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Clean up old versions (free disk space):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew cleanup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;My weekly routine (takes 2 minutes):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew upgrade &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew cleanup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. One command, once a week, and everything stays updated.&lt;/p&gt;

&lt;p&gt;Compare that to clicking through 20 individual app updaters.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Actually Fixes
&lt;/h2&gt;

&lt;p&gt;Let's do a reality check on what just changed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; Homebrew only downloads from official sources. No more sketchy download sites, no more wondering if you're getting malware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependencies:&lt;/strong&gt; Installing ffmpeg? Homebrew automatically installs all 12 dependencies in the right order. You just get working software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updates:&lt;/strong&gt; One command updates everything. Not Chrome's updater, then VSCode's, then Slack's. One command. Two minutes. Weekly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Versions:&lt;/strong&gt; Homebrew tracks everything. Type &lt;code&gt;brew list&lt;/code&gt; and see exactly what's installed. No more mystery software lurking in your Applications folder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disk Space:&lt;/strong&gt; No installer pile-up in Downloads. Homebrew cleans up automatically with &lt;code&gt;brew cleanup&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Last week I got a new MacBook. Using Homebrew, I installed everything I needed in &lt;strong&gt;8 minutes&lt;/strong&gt;. My colleague doing it the "normal" way took &lt;strong&gt;3 hours&lt;/strong&gt;. We installed the same 25 apps.&lt;/p&gt;

&lt;p&gt;But here's the bigger win: &lt;strong&gt;It's not just about speed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's about confidence. No more wondering if you downloaded from the right site. No more mystery errors about missing dependencies. No more update anxiety.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 10 Minutes That Saves You 30 Hours
&lt;/h2&gt;

&lt;p&gt;Let's be honest about what we're talking about here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Hours of downloading, clicking, dragging, deleting. Repeated every time you get a new machine or need new software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; One command per app. Updates in 2 minutes weekly. Setup that works forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time saved:&lt;/strong&gt; 30+ hours per year. That's not an exaggeration — that's adding up 5 minutes per app across 20 apps, plus monthly updates, plus troubleshooting dependencies.&lt;/p&gt;

&lt;p&gt;I know what you're thinking: "But I'm not technical..."&lt;/p&gt;

&lt;p&gt;Here's the thing: &lt;strong&gt;Neither was I when I started.&lt;/strong&gt; And you're already doing harder things. Manually managing 20+ apps with different update mechanisms and dependency requirements is objectively more complex than typing &lt;code&gt;brew install firefox&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The only skill you need is copy-paste.&lt;/p&gt;

&lt;p&gt;The real question isn't "Should I learn this?"&lt;/p&gt;

&lt;p&gt;It's "Why didn't anyone tell me this existed?"&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mac's default installation process wastes hours and creates security and dependency risks&lt;/li&gt;
&lt;li&gt;Package managers like Homebrew solve this completely and automatically&lt;/li&gt;
&lt;li&gt;Setup takes 10 minutes and works forever&lt;/li&gt;
&lt;li&gt;This isn't just for developers — it's for anyone who installs software&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ready to fix this?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Terminal right now (5 seconds)&lt;/li&gt;
&lt;li&gt;Go to &lt;a href="http://brew.sh" rel="noopener noreferrer"&gt;brew.sh&lt;/a&gt; and copy the installation command&lt;/li&gt;
&lt;li&gt;Paste it and press Enter&lt;/li&gt;
&lt;li&gt;In 10 minutes, you'll wonder why you waited this long&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Now I'm curious:&lt;/strong&gt; What's the first app you'll install with Homebrew? And how long did it take you to install it the old way? Drop a comment below — I want to hear your horror stories about manual installation.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Related Posts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.notion.so/How-I-Stopped-Manually-Installing-Software-on-Mac-And-You-Should-Too-2934acfb1cac806ca5f8ff2482029a12?pvs=21" rel="noopener noreferrer"&gt;How I Stopped Manually Installing Software on Mac (And You Should Too)&lt;/a&gt; — Complete Homebrew tutorial with more examples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://brew.sh" rel="noopener noreferrer"&gt;Official Homebrew Website&lt;/a&gt; — Installation and documentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://formulae.brew.sh" rel="noopener noreferrer"&gt;Homebrew Package Search&lt;/a&gt; — Browse 6,000+ available packages&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>The Complete Beginner's Guide to Cloudflare R2 Image Hosting (2025)</title>
      <dc:creator>Leon Wong 282</dc:creator>
      <pubDate>Thu, 23 Oct 2025 09:44:40 +0000</pubDate>
      <link>https://dev.to/leonwong282/the-complete-beginners-guide-to-cloudflare-r2-image-hosting-2025-2g4k</link>
      <guid>https://dev.to/leonwong282/the-complete-beginners-guide-to-cloudflare-r2-image-hosting-2025-2g4k</guid>
      <description>&lt;h1&gt;
  
  
  The Complete Beginner's Guide to Cloudflare R2 Image Hosting (2025)
&lt;/h1&gt;

&lt;p&gt;Are you paying $15-30 per month for image hosting? Or worse—relying on free services that might delete your images without warning?&lt;/p&gt;

&lt;p&gt;I spent months testing image hosting solutions for my blog. Some were too expensive. Others were unreliable. A few just disappeared overnight, taking my images with them.&lt;/p&gt;

&lt;p&gt;Then I discovered Cloudflare R2.&lt;/p&gt;

&lt;p&gt;R2 gives you &lt;strong&gt;10GB of storage, unlimited bandwidth, and global CDN delivery—completely free.&lt;/strong&gt; No credit card required. No hidden fees. No bandwidth charges that spiral out of control when your blog gets popular.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through setting up R2 step-by-step, even if you've never touched cloud storage before. By the time you finish reading, you'll have professional-grade image hosting running—the same infrastructure big companies pay thousands for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15 minutes from now, your images will be hosted globally and loading fast for readers anywhere in the world.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Makes R2 Different (And Why It Matters for Your Blog)
&lt;/h2&gt;

&lt;p&gt;Let's start with the basics. &lt;strong&gt;Cloudflare R2 is object storage&lt;/strong&gt;—think of it as a hard drive in the cloud that's accessible via web URLs.&lt;/p&gt;

&lt;p&gt;When you upload an image to R2, you get a permanent URL you can use anywhere: your blog, GitHub documentation, social media, forum posts. The image loads fast because Cloudflare's global CDN (Content Delivery Network) automatically caches it at edge servers worldwide.&lt;/p&gt;

&lt;p&gt;Here's what makes R2 special for bloggers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Free tier is genuinely generous&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Zero bandwidth costs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Global CDN included&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ No coding required&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Professional-grade reliability&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How R2 Compares to Alternatives
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Free Tier&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Stability&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Bandwidth Costs&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Imgur&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;May delete images&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AWS S3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5GB (12 months)&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;$$$ Expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Drive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;15GB&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Slow, not designed for this&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare R2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10GB forever&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0 (unlimited)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Convinced? Let's set it up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites (Don't Worry—It's Easier Than You Think)
&lt;/h2&gt;

&lt;p&gt;Before we dive in, here's what you'll need:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. A Cloudflare account&lt;/strong&gt; (free—I'll show you how to create one)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. A custom domain&lt;/strong&gt; (optional but recommended—any domain you own works)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. 10 minutes of your time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't have a domain yet? No problem. You can start with R2's default URLs and add a custom domain later. The free tier works either way.&lt;/p&gt;

&lt;p&gt;Never used Cloudflare before? Perfect. This guide assumes zero prior knowledge. I'll explain everything as we go.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setting Up Your R2 Image Hosting (The Complete Walkthrough)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create Your Cloudflare Account
&lt;/h3&gt;

&lt;p&gt;Head to &lt;a href="http://cloudflare.com" rel="noopener noreferrer"&gt;cloudflare.com&lt;/a&gt; and click &lt;strong&gt;Sign Up&lt;/strong&gt; in the top right corner.&lt;/p&gt;

&lt;p&gt;Enter your email and create a password. Cloudflare will send you a verification email—click the link to activate your account.&lt;/p&gt;

&lt;p&gt;That's it. No credit card required. No trial period that converts to a paid plan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Enable R2
&lt;/h3&gt;

&lt;p&gt;Once you're logged in, look at the left sidebar. Scroll down and click &lt;strong&gt;R2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You'll see a button that says &lt;strong&gt;"Purchase R2 Plan"&lt;/strong&gt; or &lt;strong&gt;"Get Started."&lt;/strong&gt; Don't panic—the free plan is actually free. Cloudflare just uses confusing terminology.&lt;/p&gt;

&lt;p&gt;Click the button. Add payment information.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwb0h3h5hgjrohs275k1.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwb0h3h5hgjrohs275k1.jpg" alt="Add Cloudflare payment information.jpg" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You now have R2 enabled on your account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Create Your First Bucket
&lt;/h3&gt;

&lt;p&gt;In R2 terminology, a &lt;strong&gt;bucket&lt;/strong&gt; is like a folder in the cloud. It holds all your images.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Create bucket&lt;/strong&gt; in the R2 dashboard.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnmcplpz2bv9b3za54au.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnmcplpz2bv9b3za54au.jpg" alt="Create a new Cloudflare R2 Bucket.jpg" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose a bucket name.&lt;/strong&gt; This needs to be unique globally (across all Cloudflare users), lowercase, with no spaces. Use hyphens for readability.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my-blog&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;leonwong282-cdn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;techblog-assets&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Select a location.&lt;/strong&gt; Choose &lt;strong&gt;Automatic&lt;/strong&gt; unless you have a specific reason to pick a region. Cloudflare will optimize placement for performance.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Create bucket.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzw0im039fnudhbxkch6.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzw0im039fnudhbxkch6.jpg" alt="Set Cloudfare R2 Bucket name.jpg" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎉 Your bucket is live.&lt;/strong&gt; Now let's make it accessible from the web.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Connect a Custom Domain (Optional but Recommended)
&lt;/h3&gt;

&lt;p&gt;This step makes your images accessible at clean URLs like &lt;a href="http://images.yourdomain.com/photo.jpg" rel="noopener noreferrer"&gt;&lt;code&gt;images.yourdomain.com/photo.jpg&lt;/code&gt;&lt;/a&gt; instead of ugly default URLs.&lt;/p&gt;

&lt;p&gt;If you don't have a domain yet, skip this step for now. You can always add it later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you have a domain:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your bucket settings, click the &lt;strong&gt;Settings&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Scroll to &lt;strong&gt;Public Access&lt;/strong&gt; and click &lt;strong&gt;Connect Domain&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter a subdomain—I recommend &lt;a href="http://images.yourdomain.com" rel="noopener noreferrer"&gt;&lt;code&gt;images.yourdomain.com&lt;/code&gt;&lt;/a&gt; or &lt;a href="http://cdn.yourdomain.com" rel="noopener noreferrer"&gt;&lt;code&gt;cdn.yourdomain.com&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Connect domain&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjgtj4cwayyeunkcmn410.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjgtj4cwayyeunkcmn410.jpg" alt="Set R2 Custom Domains.jpg" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloudflare automatically handles everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates the DNS records&lt;/li&gt;
&lt;li&gt;Provisions an SSL certificate (HTTPS)&lt;/li&gt;
&lt;li&gt;Enables CDN caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wait 2-5 minutes for DNS to propagate worldwide. Grab a coffee.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8565pfqcdq1sm3ojqmcd.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8565pfqcdq1sm3ojqmcd.jpg" alt="Active R2 Custom Domains.jpg" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why custom domains matter:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Professional appearance&lt;/li&gt;
&lt;li&gt;You control the URLs (if you switch providers, you keep your domain)&lt;/li&gt;
&lt;li&gt;Better for SEO (search engines see your domain, not Cloudflare's)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Alternative:&lt;/strong&gt; R2 provides default &lt;code&gt;.[r2.dev](http://r2.dev)&lt;/code&gt; URLs that work immediately if you just want to test.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Images Into R2 (Three Easy Methods)
&lt;/h2&gt;

&lt;p&gt;Your R2 bucket is ready. Now let's upload images.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method 1: Dashboard Upload (Simplest)
&lt;/h3&gt;

&lt;p&gt;This is perfect if you're just getting started or uploading occasionally.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your bucket in the R2 dashboard&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Upload&lt;/strong&gt; button&lt;/li&gt;
&lt;li&gt;Drag and drop images (or click to browse)&lt;/li&gt;
&lt;/ol&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxk3ix5yewfrltrmy4li.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxk3ix5yewfrltrmy4li.jpg" alt="Test R2 upload image.jpg" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your files are instantly available at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://images.yourdomain.com/filename.jpg" rel="noopener noreferrer"&gt;&lt;code&gt;https://images.yourdomain.com/filename.jpg&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like this:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fholmhn7at6vo1faa3syj.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fholmhn7at6vo1faa3syj.jpg" alt="Show a example for Cloudflare R2.jpg" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it. No processing time. No compression. Instant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Beginners, one-off uploads, testing&lt;/p&gt;

&lt;h3&gt;
  
  
  Method 2: Using an Upload Tool (Recommended for Regular Use)
&lt;/h3&gt;

&lt;p&gt;If you blog regularly, manually visiting the dashboard gets tedious fast. Upload tools solve this.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://github.com/Molunerfinn/PicGo" rel="noopener noreferrer"&gt;PicGo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These tools add a keyboard shortcut to your system. Take a screenshot, press the hotkey, and the image uploads automatically to R2. The URL copies to your clipboard instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Regular bloggers, Markdown writers, content creators&lt;/p&gt;

&lt;p&gt;I'll write a separate guide on configuring these tools with R2. For now, just know they exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method 3: Command Line (Advanced—Skip if Intimidated)
&lt;/h3&gt;

&lt;p&gt;Developers can use Cloudflare's &lt;strong&gt;Wrangler CLI&lt;/strong&gt; to upload images from the terminal or automate uploads with scripts.&lt;/p&gt;

&lt;p&gt;If you're not comfortable with command-line tools, ignore this method entirely. Methods 1 and 2 handle 99% of use cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers who want automation&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Actually Use Your Images (In Blogs, Markdown, HTML)
&lt;/h2&gt;

&lt;p&gt;Now that your images are uploaded, here's how to use them everywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Markdown:&lt;/strong&gt;&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="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Description of image&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;[https://images.yourdomain.com/my-photo.jpg](https://images.yourdomain.com/my-photo.jpg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;In HTML:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"[https://images.yourdomain.com/my-photo.jpg](https://images.yourdomain.com/my-photo.jpg)"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Description"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;In WordPress, Ghost, or Medium:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just paste the image URL when adding an image block. The platform fetches it automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Organization Tips
&lt;/h3&gt;

&lt;p&gt;As your image library grows, folders keep things sane.&lt;/p&gt;

&lt;p&gt;Create folders in your bucket using forward slashes in filenames:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/blog/2025/january/screenshot.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/social/twitter-banner.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/thumbnails/post-01.jpg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your URLs become:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://images.yourdomain.com/blog/2025/january/screenshot.jpg" rel="noopener noreferrer"&gt;&lt;code&gt;https://images.yourdomain.com/blog/2025/january/screenshot.jpg&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Name your images descriptively. Use &lt;code&gt;homebrew-terminal-screenshot.png&lt;/code&gt; instead of &lt;code&gt;IMG_0234.png&lt;/code&gt;. It's better for SEO, and future you will thank present you when searching for a specific image.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Stay Within the Free Tier (And When You'd Ever Need to Pay)
&lt;/h2&gt;

&lt;p&gt;Let's talk about limits. The R2 free tier includes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ 10GB storage&lt;/strong&gt; = ~10,000 typical blog images (assuming 1MB each)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Unlimited downloads&lt;/strong&gt; = Seriously. No bandwidth charges. Ever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ 1 million upload operations per month&lt;/strong&gt; = Unless you're uploading thousands of images daily, you'll never hit this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Cost Examples
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Small blog (1,000 visitors/month):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cost: &lt;strong&gt;$0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Medium blog (10,000 visitors/month):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cost: &lt;strong&gt;$0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Large blog (100,000 visitors/month):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cost: &lt;strong&gt;Still probably $0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'd only pay if you exceed 10GB of storage. Even then, it's only $0.015 per GB per month—incredibly cheap.&lt;/p&gt;

&lt;p&gt;For context: a typical blog screenshot is 200-500KB. A high-quality photo is 2-3MB. You'd need to upload thousands of images to hit 10GB.&lt;/p&gt;

&lt;p&gt;Most bloggers never pay a cent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: Your Images Are Now Hosted Professionally
&lt;/h2&gt;

&lt;p&gt;In just 15 minutes, you've set up image hosting that would cost $15-30 per month elsewhere—completely free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ R2 gives you 10GB of free storage and unlimited bandwidth&lt;/p&gt;

&lt;p&gt;✅ Setup takes 10-15 minutes with no coding required&lt;/p&gt;

&lt;p&gt;✅ Works with any blog platform, Markdown editor, or website&lt;/p&gt;

&lt;p&gt;✅ Professional-grade reliability backed by Cloudflare's global infrastructure&lt;/p&gt;

&lt;p&gt;Start uploading your images to R2 today and stop worrying about hosting costs, bandwidth limits, or broken image links.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What image hosting solution are you currently using?&lt;/strong&gt; Have you tried R2? Let me know in the comments—I'd love to hear about your experience!&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Resources
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Want to explore other image hosting options?&lt;/strong&gt; Check out my comprehensive guide: &lt;a href="https://www.notion.so/Image-Hosting-for-Markdown-The-Complete-Guide-to-Picture-Beds-1dd4acfb1cac8039b240e72e8795165a?pvs=21" rel="noopener noreferrer"&gt;Image Hosting for Markdown: The Complete Guide to Picture Beds&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Official documentation:&lt;/strong&gt; &lt;a href="https://developers.cloudflare.com/r2/" rel="noopener noreferrer"&gt;Cloudflare R2 Documentation&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; Cloud Storage, Cloudflare, Web Development, Blogging, Tutorial&lt;/p&gt;

</description>
      <category>programming</category>
      <category>marketing</category>
    </item>
    <item>
      <title>How I Stopped Manually Installing Software on Mac (And You Should Too)</title>
      <dc:creator>Leon Wong 282</dc:creator>
      <pubDate>Wed, 22 Oct 2025 09:11:34 +0000</pubDate>
      <link>https://dev.to/leonwong282/how-i-stopped-manually-installing-software-on-mac-and-you-should-too-989</link>
      <guid>https://dev.to/leonwong282/how-i-stopped-manually-installing-software-on-mac-and-you-should-too-989</guid>
      <description>&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feh4csuli9b96lf00exim.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feh4csuli9b96lf00exim.jpg" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last month, I spent three hours setting up my new MacBook. Download Chrome. Wait. Drag to Applications. Open the DMG. Delete the installer. Download VSCode. Repeat. Download Git. Wait, where's the installer? Google "install git mac." Find a sketchy website. Download. Run installer. Click through 12 screens. Repeat this 15 more times.&lt;/p&gt;

&lt;p&gt;By hour three, I was exhausted, my Downloads folder was a mess, and I wasn't even sure which versions I'd installed. Then my developer friend saw what I was doing and laughed. "You're doing it the hard way," he said. "Let me show you something."&lt;/p&gt;

&lt;p&gt;That something was &lt;strong&gt;Homebrew&lt;/strong&gt; — and it changed everything about how I manage software on my Mac.&lt;/p&gt;

&lt;p&gt;In this guide, I'll show you how to install and use Homebrew to install any software with a single command, keep everything updated automatically, and never manually download another .dmg file again. If you spend more than 5 minutes installing software, this is for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Why Manual Installation is Broken
&lt;/h2&gt;

&lt;p&gt;Before Homebrew, my software installation workflow looked like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For every single application:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Google "[app name] download mac"&lt;/li&gt;
&lt;li&gt;Hope the first result is the official website (not an ad or malware)&lt;/li&gt;
&lt;li&gt;Navigate to the downloads page&lt;/li&gt;
&lt;li&gt;Choose the right version (Intel? Apple Silicon? What's the difference?)&lt;/li&gt;
&lt;li&gt;Wait for the download&lt;/li&gt;
&lt;li&gt;Open the .dmg or .pkg file&lt;/li&gt;
&lt;li&gt;Drag the app to Applications (or click through an installer)&lt;/li&gt;
&lt;li&gt;Eject the disk image&lt;/li&gt;
&lt;li&gt;Delete the installer from Downloads&lt;/li&gt;
&lt;li&gt;Remember to check for updates manually later&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The real problems:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time-consuming:&lt;/strong&gt; 5-10 minutes per application, 15 applications = over an hour&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error-prone:&lt;/strong&gt; Wrong versions, outdated downloads, missing dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cluttered:&lt;/strong&gt; Downloads folder filled with installers I'd forget to delete&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update nightmare:&lt;/strong&gt; No way to update everything at once; have to check each app individually&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No consistency:&lt;/strong&gt; Every app has a different installation process&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency hell:&lt;/strong&gt; Some tools require other tools first (Python needs Xcode, Node needs specific libraries)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The breaking point came when I tried to install ffmpeg (a video processing tool). The instructions said "install these 12 dependencies first." Each dependency had its own installation process. After an hour of troubleshooting, I still couldn't get it working.&lt;/p&gt;

&lt;p&gt;There had to be a better way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: Meet Homebrew
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is Homebrew?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Homebrew is a free, open-source &lt;strong&gt;package manager&lt;/strong&gt; for macOS (think of it as an app store for developers, but way more powerful). Instead of hunting down software on websites, you install everything through simple terminal commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One command replaces the entire 10-step process above:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;visual-studio-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Homebrew:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloads the software from the official source&lt;/li&gt;
&lt;li&gt;Installs it to the right location&lt;/li&gt;
&lt;li&gt;Handles all dependencies automatically&lt;/li&gt;
&lt;li&gt;Creates shortcuts so it "just works"&lt;/li&gt;
&lt;li&gt;Tracks versions for easy updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The transformation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before Homebrew:&lt;/strong&gt; 15 apps × 7 minutes = 1 hour 45 minutes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After Homebrew:&lt;/strong&gt; 15 apps × 10 seconds = 2 minutes 30 seconds&lt;/p&gt;

&lt;p&gt;That's not an exaggeration — I timed it.&lt;/p&gt;

&lt;p&gt;"But I'm not a developer. Isn't the terminal scary?"&lt;/p&gt;

&lt;p&gt;I thought so too. But you don't need to be technical to use Homebrew. If you can copy and paste, you can use Homebrew. I'll show you exactly what to do.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started: Install Homebrew in 5 Minutes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Open Terminal
&lt;/h3&gt;

&lt;p&gt;Press &lt;strong&gt;Command + Space&lt;/strong&gt;, type "Terminal", and press Enter. A window with a black background will open. Don't panic — this is where the magic happens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Install Homebrew
&lt;/h3&gt;

&lt;p&gt;Copy this entire command and paste it into Terminal (Command + V), then press Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will happen:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You'll be prompted to enter your Mac password (the one you use to log in)&lt;/li&gt;
&lt;li&gt;The installation will download and set up Homebrew (takes 2-5 minutes)&lt;/li&gt;
&lt;li&gt;You'll see text scrolling by — that's normal!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; If you have an Apple Silicon Mac (M1, M2, M3, M4), you'll need to run one more command when installation finishes. Terminal will show you exactly what to paste — it looks like this:&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(/opt/homebrew/bin/brew shellenv)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zprofile
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/opt/homebrew/bin/brew shellenv&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Verify It Works
&lt;/h3&gt;

&lt;p&gt;Type this command and press Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see something like "Homebrew 4.x.x", congratulations! You're ready to go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Run a Health Check
&lt;/h3&gt;

&lt;p&gt;Homebrew includes a built-in diagnostic tool. Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it says "Your system is ready to brew," you're all set. If it shows warnings, don't worry — it usually suggests how to fix them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Troubleshooting:&lt;/strong&gt; If you see "brew: command not found," close Terminal completely (Command + Q) and open it again. If it still doesn't work, run the Apple Silicon command from Step 2 again.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Your First Apps: Install Software in Seconds
&lt;/h2&gt;

&lt;p&gt;Now for the fun part. Let's install some popular applications using Homebrew.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Command-Line Tools
&lt;/h3&gt;

&lt;p&gt;These are utilities you run in Terminal:&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;# Install Git (version control)&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;git

&lt;span class="c"&gt;# Install wget (download files from the internet)&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;wget

&lt;span class="c"&gt;# Install tree (visualize folder structures)&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;tree
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each installation takes 5-30 seconds. No clicking, no dragging, no mess.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Regular Applications
&lt;/h3&gt;

&lt;p&gt;Homebrew can also install the GUI apps you're used to (browsers, editors, etc.) using something called "casks":&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;# Install Google Chrome&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; google-chrome

&lt;span class="c"&gt;# Install Visual Studio Code&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; visual-studio-code

&lt;span class="c"&gt;# Install Slack&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; slack

&lt;span class="c"&gt;# Install Firefox&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The &lt;code&gt;--cask&lt;/code&gt; flag tells Homebrew you want a graphical application, not a command-line tool.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Multiple Apps at Once
&lt;/h3&gt;

&lt;p&gt;Want to set up everything in one shot? Just list them all:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; google-chrome firefox visual-studio-code slack rectangle iterm2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What just happened?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 60 seconds, you installed 6 applications that would've taken 30-45 minutes manually. They're all in your Applications folder, ready to use.&lt;/p&gt;

&lt;p&gt;Last week, my friend got a new MacBook. Using a list of Homebrew commands I gave them, they installed everything they needed in under 10 minutes. Compare that to the 2-3 hours it used to take.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Game-Changer: Updates in One Command
&lt;/h2&gt;

&lt;p&gt;Here's where Homebrew truly shines: &lt;strong&gt;keeping software updated&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The old way:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Chrome → "Update available" → Download → Install → Restart&lt;/li&gt;
&lt;li&gt;Open VSCode → "Update available" → Download → Install → Restart&lt;/li&gt;
&lt;li&gt;Repeat for every single application&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total time:&lt;/strong&gt; 20-30 minutes every few weeks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Homebrew way:&lt;/strong&gt;&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;# Update all software at once&lt;/span&gt;
brew upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command. Every app. Updated simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My weekly routine (takes 2 minutes):&lt;/strong&gt;&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;# See what's outdated&lt;/span&gt;
brew outdated

&lt;span class="c"&gt;# Update everything&lt;/span&gt;
brew upgrade

&lt;span class="c"&gt;# Clean up old versions (free disk space)&lt;/span&gt;
brew cleanup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Real results:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Last week, I had 12 outdated apps&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;brew upgrade&lt;/code&gt; updated all of them in 90 seconds&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;brew cleanup&lt;/code&gt; freed 3.2GB of disk space from old installers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Before Homebrew:&lt;/strong&gt; 30 minutes of manual updates monthly&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After Homebrew:&lt;/strong&gt; 2 minutes, once a week&lt;/p&gt;




&lt;h2&gt;
  
  
  Essential Commands You'll Actually Use
&lt;/h2&gt;

&lt;p&gt;You don't need to memorize dozens of commands. These five cover 90% of daily use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Search for software&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew search chrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not sure if an app is available? Search for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Install software&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;git                    &lt;span class="c"&gt;# Command-line tool&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox         &lt;span class="c"&gt;# GUI application&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. See what's installed&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Update everything&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update    &lt;span class="c"&gt;# Update Homebrew itself&lt;/span&gt;
brew upgrade   &lt;span class="c"&gt;# Upgrade all apps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Remove software&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew uninstall git
brew uninstall &lt;span class="nt"&gt;--cask&lt;/span&gt; firefox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;💡 Pro tip:&lt;/strong&gt; Create a text file with all your favorite apps. When you get a new Mac, run all the install commands at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; google-chrome firefox visual-studio-code slack zoom rectangle
brew &lt;span class="nb"&gt;install &lt;/span&gt;git wget curl tree htop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bookmark that file. You'll thank me later.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Beginner Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Is Homebrew safe?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. It's open-source, maintained by thousands of developers, and has been the standard Mac package manager since 2009. It only downloads from official sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Will this break my Mac?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Homebrew installs to its own folder (&lt;code&gt;/opt/homebrew&lt;/code&gt; or &lt;code&gt;/usr/local&lt;/code&gt;) and doesn't touch system files. You can uninstall it completely anytime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Do I need to use Terminal for everything now?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No! You can still install apps the traditional way. Homebrew is just a faster option. I use both — Homebrew for developer tools and quick installs, Mac App Store for Apple-specific apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What if something goes wrong?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;brew doctor&lt;/code&gt;. It diagnoses issues and tells you how to fix them. The Homebrew community is also incredibly helpful.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Three months ago, setting up my Mac took hours of downloading, clicking, dragging, and deleting. I dreaded getting a new machine or doing a fresh install. Updates were a monthly chore I'd procrastinate.&lt;/p&gt;

&lt;p&gt;Today? I install 20+ applications in under 5 minutes. I update everything with one command every week. My system is cleaner, faster, and I actually know what software I have installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manual installation wastes time:&lt;/strong&gt; 5-10 minutes per app adds up fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homebrew installs anything with one command:&lt;/strong&gt; &lt;code&gt;brew install [name]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates become effortless:&lt;/strong&gt; &lt;code&gt;brew upgrade&lt;/code&gt; handles everything at once&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup takes 5 minutes:&lt;/strong&gt; Even if you've never used Terminal before&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's beginner-friendly:&lt;/strong&gt; Copy, paste, press Enter. That's it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Homebrew right now (seriously, it takes 5 minutes)&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;brew doctor&lt;/code&gt; to make sure it's working&lt;/li&gt;
&lt;li&gt;Install your first app: &lt;code&gt;brew install --cask google-chrome&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Explore available apps at &lt;a href="http://formulae.brew.sh" rel="noopener noreferrer"&gt;formulae.brew.sh&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The best time to start using Homebrew was when you got your Mac. The second best time is now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the first app you'll install with Homebrew?&lt;/strong&gt; Drop a comment below — I'd love to hear what tools you're excited to try. And if you found this helpful, consider following me for more Mac productivity tips that'll save you hours every week.&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://brew.sh" rel="noopener noreferrer"&gt;Official Homebrew Website&lt;/a&gt; — Installation guide and documentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://formulae.brew.sh" rel="noopener noreferrer"&gt;Homebrew Formulae Search&lt;/a&gt; — Browse all available packages&lt;/li&gt;
&lt;li&gt;My Mac Setup Guide — Complete tutorial for new Mac users (coming soon)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>homebrew</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
