<?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: Tone Gabes</title>
    <description>The latest articles on DEV Community by Tone Gabes (@tonegabes).</description>
    <link>https://dev.to/tonegabes</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%2F3224173%2Fb1f3db14-10a8-4a3d-b25b-2464349a34bd.jpg</url>
      <title>DEV Community: Tone Gabes</title>
      <link>https://dev.to/tonegabes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tonegabes"/>
    <language>en</language>
    <item>
      <title>Phosphor Icons for Filament 4</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Sat, 23 Aug 2025 22:20:25 +0000</pubDate>
      <link>https://dev.to/tonegabes/phosphor-icons-for-filament-4-5477</link>
      <guid>https://dev.to/tonegabes/phosphor-icons-for-filament-4-5477</guid>
      <description>&lt;p&gt;A Phosphor icon set ready to be used as Enums in a Filament 4 application.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tonegabes" rel="noopener noreferrer"&gt;
        tonegabes
      &lt;/a&gt; / &lt;a href="https://github.com/tonegabes/filament-phosphor-icons" rel="noopener noreferrer"&gt;
        filament-phosphor-icons
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Phosphor Icons ready to be used in Filament 4
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/tonegabes/filament-phosphor-icons/images/thumbnail.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ftonegabes%2Ffilament-phosphor-icons%2Fimages%2Fthumbnail.png" alt="Banner"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Filament Phosphor Icons&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;A Phosphor icon set ready to be used as Enums in a Filament 5 application.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;You can install the package via composer:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;composer require tonegabes/filament-phosphor-icons&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;All icons are available through an enum providing convenient usage throughout your Filament app. For more information, check the &lt;a href="https://filamentphp.com/docs/4.x/styling/icons" rel="nofollow noopener noreferrer"&gt;Filament docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For all available icons check the &lt;a href="https://phosphoricons.com/" rel="nofollow noopener noreferrer"&gt;Phosphor Icons&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight highlight-text-html-php notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;Filament&lt;/span&gt;\&lt;span class="pl-v"&gt;Actions&lt;/span&gt;\&lt;span class="pl-smi"&gt;Action&lt;/span&gt;;
&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;Filament&lt;/span&gt;\&lt;span class="pl-v"&gt;Forms&lt;/span&gt;\&lt;span class="pl-v"&gt;Components&lt;/span&gt;\&lt;span class="pl-smi"&gt;Toggle&lt;/span&gt;;
&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;ToneGabes&lt;/span&gt;\&lt;span class="pl-v"&gt;Filament&lt;/span&gt;\&lt;span class="pl-v"&gt;Icons&lt;/span&gt;\&lt;span class="pl-v"&gt;Enums&lt;/span&gt;\&lt;span class="pl-smi"&gt;Phosphor&lt;/span&gt;;

Action::&lt;span class="pl-en"&gt;make&lt;/span&gt;(&lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;star&lt;/span&gt;'&lt;/span&gt;)
  -&amp;gt;&lt;span class="pl-en"&gt;icon&lt;/span&gt;(Phosphor::StarBold);

Toggle::&lt;span class="pl-en"&gt;make&lt;/span&gt;(&lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;is_starred&lt;/span&gt;'&lt;/span&gt;)
  -&amp;gt;&lt;span class="pl-en"&gt;onIcon&lt;/span&gt;(Phosphor::Star)&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Weights&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;This package includes a enum with weights you can use:&lt;/p&gt;

&lt;div class="highlight highlight-text-html-php notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;enum&lt;/span&gt; Weight: &lt;span class="pl-smi"&gt;string&lt;/span&gt;
{
    &lt;span class="pl-k"&gt;case&lt;/span&gt; Thin = &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;thin&lt;/span&gt;'&lt;/span&gt;
    &lt;span class="pl-k"&gt;case&lt;/span&gt; Light = &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;light&lt;/span&gt;'&lt;/span&gt;;
    &lt;span class="pl-k"&gt;case&lt;/span&gt; Fill = &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;fill&lt;/span&gt;'&lt;/span&gt;;
    &lt;span class="pl-k"&gt;case&lt;/span&gt; Duotone = &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;duotone&lt;/span&gt;'&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tonegabes/filament-phosphor-icons" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>php</category>
      <category>laravel</category>
      <category>filament</category>
      <category>dx</category>
    </item>
    <item>
      <title>Why Does AI Write Better React Than Laravel? Understanding Bias in Code Generation</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Wed, 09 Jul 2025 14:13:03 +0000</pubDate>
      <link>https://dev.to/tonegabes/why-does-ai-write-better-react-than-laravel-understanding-bias-in-code-generation-27k6</link>
      <guid>https://dev.to/tonegabes/why-does-ai-write-better-react-than-laravel-understanding-bias-in-code-generation-27k6</guid>
      <description>&lt;p&gt;You ask an AI to generate a CRUD using &lt;strong&gt;Laravel with Livewire&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
What you get? Weird syntax, broken &lt;code&gt;wire:model&lt;/code&gt;, violated conventions.&lt;/p&gt;

&lt;p&gt;Now you try the same thing... but with &lt;strong&gt;React and Next.js&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Boom: clean code, solid JSX, working auth flow.&lt;/p&gt;

&lt;p&gt;It's not just coincidence.&lt;br&gt;&lt;br&gt;
There’s &lt;strong&gt;bias in the data that trains these AIs&lt;/strong&gt;, and it shapes more than just syntax.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI Isn’t Neutral, It Just Repeats What It Saw
&lt;/h2&gt;

&lt;p&gt;AI promises productivity, impartiality, intelligence.&lt;br&gt;&lt;br&gt;
But what it &lt;em&gt;generates&lt;/em&gt; is based on what it &lt;em&gt;consumed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And what dominates the training data?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public GitHub repos (mostly JavaScript-heavy)&lt;/li&gt;
&lt;li&gt;Stack Overflow threads packed with React&lt;/li&gt;
&lt;li&gt;Mass tutorials and boilerplate templates&lt;/li&gt;
&lt;li&gt;Popular documentation and frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It doesn't create, it recombines.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
And it’s better at recombining what it saw the most.&lt;/p&gt;




&lt;h2&gt;
  
  
  React &amp;amp; Next.js: Fluent in the AI’s Native Language
&lt;/h2&gt;

&lt;p&gt;Stacks like React and Next.js are basically first-class citizens in AI models.&lt;br&gt;&lt;br&gt;
Not because they’re better, but because they’re &lt;strong&gt;everywhere&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Why is React favored?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Massive GitHub repos
&lt;/li&gt;
&lt;li&gt;Huge, loud global community
&lt;/li&gt;
&lt;li&gt;Predictable functional patterns
&lt;/li&gt;
&lt;li&gt;Endless repetition across tutorials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI knows &lt;code&gt;useState&lt;/code&gt;, &lt;code&gt;useEffect&lt;/code&gt;, &lt;code&gt;AuthProvider&lt;/code&gt;, &lt;code&gt;getServerSideProps&lt;/code&gt; like the back of its digital hand.&lt;/p&gt;




&lt;h2&gt;
  
  
  Laravel + Livewire: Where AI Starts to Fumble
&lt;/h2&gt;

&lt;p&gt;Now compare that to &lt;strong&gt;Laravel + Livewire + Filament&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breaks &lt;code&gt;wire:model&lt;/code&gt; or misuses bindings
&lt;/li&gt;
&lt;li&gt;Ignores Livewire lifecycle methods
&lt;/li&gt;
&lt;li&gt;Mixes up reactivity with Alpine.js
&lt;/li&gt;
&lt;li&gt;Writes generic solutions that break the opinionated flow of the framework&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fewer public examples in English
&lt;/li&gt;
&lt;li&gt;Laravel has regional popularity (strong in Brazil, weak globally)
&lt;/li&gt;
&lt;li&gt;Livewire has “magic” abstractions that confuse generative models
&lt;/li&gt;
&lt;li&gt;Less noise in forums, fewer mentions in tutorials&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Bias Is Structural
&lt;/h2&gt;

&lt;p&gt;AI doesn’t prefer React because it’s “better.”&lt;br&gt;&lt;br&gt;
It just &lt;strong&gt;knows React better&lt;/strong&gt;, because it had more of it in training.&lt;/p&gt;

&lt;p&gt;And that creates systemic effects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popular stacks become even more dominant
&lt;/li&gt;
&lt;li&gt;Alternative stacks are treated like fringe cases
&lt;/li&gt;
&lt;li&gt;Junior devs assume React is the "correct" or only modern choice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's the algorithm &lt;strong&gt;reinforcing the mainstream&lt;/strong&gt;, and quietly shaping the tech landscape.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Break the Cycle
&lt;/h2&gt;

&lt;p&gt;AI isn't the enemy. But it demands mindful use.&lt;/p&gt;

&lt;p&gt;Here’s how you can stay in control:&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Practical Tips:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Master your stack.&lt;/strong&gt; Know when the AI is wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add context to your prompts.&lt;/strong&gt; Tell it you’re using Livewire or Filament.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correct its mistakes.&lt;/strong&gt; Every fix helps both you and the AI learn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use custom GPTs.&lt;/strong&gt; Fine-tune with your own standards and stack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Treat AI as a partner, not a prophet.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI doesn’t know which stack is “better.”&lt;br&gt;&lt;br&gt;
It just knows which one got the most GitHub stars in 2022.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you’re not paying attention, you’ll end up coding like the algorithm wants —&lt;br&gt;&lt;br&gt;
not like your project actually needs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  What About You?
&lt;/h3&gt;

&lt;p&gt;Ever caught your AI suggesting React when you asked for Vue?&lt;br&gt;&lt;br&gt;
Or generating Laravel code that breaks its own conventions?&lt;/p&gt;

&lt;p&gt;Let’s talk about it, drop your experience below 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javacript</category>
      <category>php</category>
      <category>programming</category>
    </item>
    <item>
      <title>Are We Programming Machines... or Programming Ourselves?</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Wed, 02 Jul 2025 03:05:45 +0000</pubDate>
      <link>https://dev.to/tonegabes/are-we-programming-machines-or-programming-ourselves-2iik</link>
      <guid>https://dev.to/tonegabes/are-we-programming-machines-or-programming-ourselves-2iik</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;AI watches us, learns from us, suggests—and we follow.&lt;br&gt;&lt;br&gt;
So… are we still the authors of our own digital behavior?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Invisible Feedback Loop
&lt;/h2&gt;

&lt;p&gt;Here’s how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You use AI.&lt;/li&gt;
&lt;li&gt;It learns your habits and data.&lt;/li&gt;
&lt;li&gt;It starts predicting what you’ll do next.&lt;/li&gt;
&lt;li&gt;You follow its suggestions because they’re “smart”.&lt;/li&gt;
&lt;li&gt;You repeat the pattern.&lt;/li&gt;
&lt;li&gt;It learns again—and tightens the loop.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And just like that, &lt;em&gt;your behavior becomes training data for your own automation&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  When the Tool Becomes the Master
&lt;/h2&gt;

&lt;p&gt;Let’s get practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spotify&lt;/strong&gt; recommends more of what you already liked. You stop exploring.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TikTok&lt;/strong&gt; optimizes your feed so well, it rewires your attention span.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copilot/ChatGPT&lt;/strong&gt; complete your code or thoughts—faster, but maybe not &lt;em&gt;you&lt;/em&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At some point, you're not just using tools.&lt;br&gt;&lt;br&gt;
You're adopting the mindset they were trained to reinforce.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Illusion of Choice
&lt;/h2&gt;

&lt;p&gt;When everything is optimized, &lt;em&gt;is your decision still yours&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;AI is great at pattern recognition. But it’s also great at making you predictable.&lt;br&gt;&lt;br&gt;
When suggestions become default, how much space is left for friction? Or randomness? Or you?&lt;/p&gt;




&lt;h2&gt;
  
  
  Predictability Becomes the Default
&lt;/h2&gt;

&lt;p&gt;AI doesn't like ambiguity.&lt;br&gt;&lt;br&gt;
It works with patterns, stats, probabilities.&lt;/p&gt;

&lt;p&gt;So the more predictable you are,&lt;br&gt;&lt;br&gt;
The easier it is to model you.&lt;/p&gt;

&lt;p&gt;That’s why—consciously or not—&lt;br&gt;&lt;br&gt;
We start behaving &lt;em&gt;how AI expects&lt;/em&gt; us to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We write like a prompt.
&lt;/li&gt;
&lt;li&gt;We reply like we’re being graded by an algorithm.
&lt;/li&gt;
&lt;li&gt;We create content chasing reach, not truth.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re programming ourselves to be &lt;strong&gt;machine-readable&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  So... Who’s Training Who?
&lt;/h2&gt;

&lt;p&gt;AI is supposed to learn from us.&lt;br&gt;&lt;br&gt;
But now we’re adjusting &lt;em&gt;ourselves&lt;/em&gt; to work better with AI.&lt;/p&gt;

&lt;p&gt;It’s not just about ethics, privacy, or job disruption.&lt;br&gt;&lt;br&gt;
It’s about &lt;strong&gt;creative agency&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Are we still creators?&lt;br&gt;&lt;br&gt;
Or just high-functioning prompters?&lt;/p&gt;




&lt;h2&gt;
  
  
  So... Now What?
&lt;/h2&gt;

&lt;p&gt;No, I’m not saying stop using AI.&lt;br&gt;&lt;br&gt;
(Heck, this very article had its grammar and typos cleaned up by one.)&lt;/p&gt;

&lt;p&gt;The idea is: don’t let it think &lt;em&gt;for&lt;/em&gt; you.&lt;/p&gt;

&lt;p&gt;Let’s reflect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many of your decisions are actually yours?&lt;/li&gt;
&lt;li&gt;How much of your thinking has been quietly automated?&lt;/li&gt;
&lt;li&gt;And what if we’re becoming too legible—too optimized—for our own good?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Final Thought
&lt;/h2&gt;

&lt;p&gt;We worry about AI taking control.&lt;br&gt;&lt;br&gt;
But what if we’re just &lt;em&gt;giving it away&lt;/em&gt;?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Maybe AI won’t need to dominate us.&lt;br&gt;&lt;br&gt;
Maybe we’ll just reshape ourselves so much that we &lt;strong&gt;become&lt;/strong&gt; the algorithm.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What do you think?
&lt;/h2&gt;

&lt;p&gt;Have you ever caught yourself thinking, writing or coding in a way just to “please the machine”?&lt;/p&gt;

&lt;p&gt;Drop your thoughts below 👇&lt;br&gt;&lt;br&gt;
Let's talk about it like &lt;em&gt;humans&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How Filament Saved (or Complicated) My Admin Panel: An Honest Review</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Fri, 27 Jun 2025 02:31:04 +0000</pubDate>
      <link>https://dev.to/tonegabes/how-filament-saved-or-complicated-my-admin-panel-an-honest-review-156b</link>
      <guid>https://dev.to/tonegabes/how-filament-saved-or-complicated-my-admin-panel-an-honest-review-156b</guid>
      <description>&lt;p&gt;I recently had to build an internal admin panel for a client. Nothing too fancy: manage users, roles, logs, settings, and a couple of modules with lots of relationships. You know the drill.&lt;/p&gt;

&lt;p&gt;The stack was Laravel 12, and I didn’t want to go full SPA or spend time wrangling Vue or React just to make forms look half-decent. I wanted something quick, modern, maintainable, and preferably PHP-based.&lt;/p&gt;

&lt;p&gt;Enter Filament — a Laravel admin panel that promises beauty, speed, and developer happiness.&lt;/p&gt;

&lt;p&gt;And yeah… it mostly delivered. But also bit me a few times.&lt;/p&gt;

&lt;p&gt;Here’s my honest, no-BS review of Filament, after using it for real.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Why I Chose Filament
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I’d already worked with Livewire.&lt;/li&gt;
&lt;li&gt;Bootstrap-based admin panels feel like stepping into 2014.&lt;/li&gt;
&lt;li&gt;I didn’t want to reinvent CRUDs for the 100th time.&lt;/li&gt;
&lt;li&gt;Filament looked polished, Laravel-native, and productive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honestly, I saw their landing page and thought: “If this thing works half as good as it looks, I’m in.”&lt;/p&gt;

&lt;p&gt;Spoiler: it does. Mostly.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ What Filament Gets Really Right
&lt;/h2&gt;

&lt;h4&gt;
  
  
  1. Blazingly Fast CRUDs
&lt;/h4&gt;

&lt;p&gt;Creating a full resource (index, create, edit, delete, with filters and relations) takes minutes. You define a model and a resource class, and boom — a usable UI is born.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Just register this&lt;/span&gt;
&lt;span class="nc"&gt;UserResource&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;// And you get full CRUD with filters, actions, and forms&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Gorgeous Out-of-the-Box UI
&lt;/h4&gt;

&lt;p&gt;Filament uses Tailwind and has a clean, modern design. It feels like working in an app that was actually designed in the last 5 years.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Smart Abstractions
&lt;/h4&gt;

&lt;p&gt;The structure — Resources, Pages, Widgets, Actions — keeps things modular and clean. Want a dashboard with charts? A custom page? Easy.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Relationship Handling is 🔥
&lt;/h4&gt;

&lt;p&gt;HasMany, BelongsTo, Morphs... Filament handles it all smoothly. You can edit nested relations inline with just a few lines.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Plugin Ecosystem
&lt;/h4&gt;

&lt;p&gt;There’s already a healthy ecosystem of plugins and community packages (Spatie roles integration, log viewers, translations, etc.). It’s growing fast and actually maintained.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤕 But Here's Where It Gets Messy
&lt;/h2&gt;

&lt;p&gt;Look, Filament isn’t perfect. And when things break, they break in non-obvious ways.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Livewire Quirks
&lt;/h4&gt;

&lt;p&gt;Since it’s all built on Livewire, you inherit all its headaches: wire:model desyncs, debounce glitches, JS interop oddities. If you try to add Alpine/JS yourself, expect a few fights.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Customization Gets Painful Fast
&lt;/h4&gt;

&lt;p&gt;The default UI is beautiful — but very opinionated. Going beyond the standard layout, or implementing custom layouts per user role? Yeah… that rabbit hole gets deep.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Conditional Logic Can Get Messy
&lt;/h4&gt;

&lt;p&gt;Form fields that appear/disappear based on other fields? Possible, but not always intuitive — especially with Livewire reactivity in the mix.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Policy and Authorization Headaches
&lt;/h4&gt;

&lt;p&gt;Filament has its own way of handling permissions, but if you have complex access control logic or need dynamic policies, prepare for some extra legwork.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Magic Comes With Trade-Offs
&lt;/h4&gt;

&lt;p&gt;You’re effectively working inside a framework within a framework (Laravel → Livewire → Filament). That’s powerful, but it also means more layers to debug.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 When to Use (and Not Use) Filament
&lt;/h2&gt;

&lt;h4&gt;
  
  
  💚 Use Filament If:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;You need an internal admin panel, fast&lt;/li&gt;
&lt;li&gt;You’re solo or in a small team&lt;/li&gt;
&lt;li&gt;You already use Livewire or want to avoid frontend-heavy stacks&lt;/li&gt;
&lt;li&gt;You prefer PHP over full-stack JS solutions&lt;/li&gt;
&lt;li&gt;You’re building tools, not end-user UIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ❌ Avoid It If:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;You need pixel-perfect UI or heavy interactivity&lt;/li&gt;
&lt;li&gt;Your app needs a full SPA experience&lt;/li&gt;
&lt;li&gt;You have complex dynamic forms or custom JS logic&lt;/li&gt;
&lt;li&gt;You hate black-box abstractions or hidden magic&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;Filament is perfect for MVPs, internal tools, backoffice UIs, and admin dashboards.&lt;/li&gt;
&lt;li&gt;But if your app is long-lived or has complex logic, you’ll eventually need to break out of the magic box — and that’s where it can get frustrating.&lt;/li&gt;
&lt;li&gt;Still, the amount of work it saves early on is ridiculous.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧾 Final Verdict
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Filament is a fantastic tool — if you understand what it’s for.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It gave me an admin panel in hours, not days. It looks good, works well, and made me fall in love with Laravel again.&lt;/p&gt;

&lt;p&gt;But like all abstractions, it has sharp edges once you push past the “happy path.”&lt;/p&gt;

&lt;p&gt;If you go in with your eyes open, Filament will save your ass. If you expect it to be a no-brainer for all use cases… you’ll eventually hit a wall.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What About You?
&lt;/h2&gt;

&lt;p&gt;Have you used Filament in a real-world project?&lt;br&gt;
Did it blow your mind or drive you nuts?&lt;br&gt;
Let me know in the comments — I want to hear your take.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>filament</category>
      <category>webdev</category>
    </item>
    <item>
      <title>7 Laravel 12 Methods You Won’t Find Easily in the Docs</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Mon, 16 Jun 2025 00:14:58 +0000</pubDate>
      <link>https://dev.to/tonegabes/7-laravel-12-methods-you-wont-find-easily-in-the-docs-450n</link>
      <guid>https://dev.to/tonegabes/7-laravel-12-methods-you-wont-find-easily-in-the-docs-450n</guid>
      <description>&lt;p&gt;Laravel 12 came with a lot of great features, but some of the best additions don’t show up in the documentation.&lt;/p&gt;

&lt;p&gt;These “hidden” methods can make your code cleaner, faster, and more readable — if you know where to look.&lt;/p&gt;

&lt;p&gt;Here are 7 lesser-known Laravel 12 helpers that deserve a place in your toolbox.👇&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Collection::range(start, end, step)
&lt;/h2&gt;

&lt;p&gt;Finally, you can generate ranges with a step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nf"&gt;collect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// [1, 3, 5, 7, 9]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No more &lt;code&gt;filter()&lt;/code&gt; gymnastics after a &lt;code&gt;range()&lt;/code&gt;. This improves both clarity and performance when generating sequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Arr::partition()
&lt;/h2&gt;

&lt;p&gt;Split an array into two groups based on a condition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$evens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$odds&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arr&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;partition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get two clean arrays in one go. No need to convert to a collection just to split things.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. TestResponse::ddJson() &amp;amp; ddBody()
&lt;/h2&gt;

&lt;p&gt;Debugging test responses just got easier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/api/test'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;ddJson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'data'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No more digging through getContent() and decoding JSON manually. These new methods let you inspect responses directly in your test flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Model::except([...])
&lt;/h2&gt;

&lt;p&gt;Want to remove some fields from a model (like sensitive ones)?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;except&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'password'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much cleaner than calling makeHidden() — especially in API responses where you only want to exclude a couple fields.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Model::fillAndInsert([...])
&lt;/h2&gt;

&lt;p&gt;Need to bulk-insert records with model casts, timestamps, or UUIDs?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;fillAndInsert&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Alice'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Bob'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's insert() with all the benefits of model behavior. No hacks, just Eloquent.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Uri::of(...)-&amp;gt;pathSegments()
&lt;/h2&gt;

&lt;p&gt;Parse a URL and get its path segments cleanly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Uri&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://site.com/2025/06'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;pathSegments&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// ['2025', '06']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No more explode() or string slicing. Just semantic URL handling.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Str::encrypt() &amp;amp; decrypt()
&lt;/h2&gt;

&lt;p&gt;Want to encrypt a value in a fluent way?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'secret'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;prepend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'x_'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;after&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'x_'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;decrypt&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple, elegant encryption for small secrets or tokens — perfect for short-lived data.&lt;/p&gt;




&lt;p&gt;Final Thoughts&lt;br&gt;
Laravel 12 is full of gems — not just the ones in the docs.&lt;/p&gt;

&lt;p&gt;By using these lesser-known helpers, you can:&lt;/p&gt;

&lt;p&gt;✅ Write less boilerplate&lt;br&gt;
✅ Reduce bugs&lt;br&gt;
✅ Improve performance and readability&lt;/p&gt;

&lt;p&gt;If you found this helpful, consider sharing it with your team or saving it for later.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Prompt for Comprehensive Codebase Exploration and Documentation from Multi-Perspective Analysis</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Thu, 05 Jun 2025 19:49:36 +0000</pubDate>
      <link>https://dev.to/tonegabes/prompt-for-comprehensive-codebase-exploration-and-documentation-from-multi-perspective-analysis-1h55</link>
      <guid>https://dev.to/tonegabes/prompt-for-comprehensive-codebase-exploration-and-documentation-from-multi-perspective-analysis-1h55</guid>
      <description>&lt;p&gt;Sharing here a prompt that has helped me a lot to understand projects in which I am inserted, or that I use to make material ready for new developers to enter the project.&lt;/p&gt;

&lt;p&gt;In a few seconds you have a comprehensive view of code that can save too much alignments and unnecessary questions, leaving more time for you to focus on what you really want to work with.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Explore the entire code repository thoroughly. Analyze and understand the codebase from three key perspectives:

- Software Architect – Focus on system design, architecture patterns, and scalability.

- Software Developer – Examine code structure, implementation details, and maintainability.

- Product Manager – Evaluate features, usability, user flows, and alignment with business goals. 

After your analysis, compile all findings into a comprehensive README.md or OVERVIEW.md file placed at the root of the repository. This document must:

- Be written in Markdown.
- Include Mermaid diagrams to explain system architecture, workflows, or processes.
- Be clearly structured and easy to navigate.
- Provide actionable insights or questions that could guide further development or refinement.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>webdev</category>
      <category>coding</category>
    </item>
    <item>
      <title>What Don’t Make Me Think Taught Me About Intuitive Design</title>
      <dc:creator>Tone Gabes</dc:creator>
      <pubDate>Fri, 30 May 2025 13:40:39 +0000</pubDate>
      <link>https://dev.to/tonegabes/what-dont-make-me-think-taught-me-about-intuitive-design-4b2k</link>
      <guid>https://dev.to/tonegabes/what-dont-make-me-think-taught-me-about-intuitive-design-4b2k</guid>
      <description>&lt;p&gt;If you work with design, development, or digital products, you need to read Don't Make Me Think by Steve Krug. Even though it was first published in the early 2000s, its lessons are more relevant than ever.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Good interfaces don’t make us think.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Below, I share the key takeaways from the book — simple, practical principles that can radically improve your users' experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Don’t make me think
&lt;/h2&gt;

&lt;p&gt;When users open a site or app, they want to act fast. If the interface requires mental effort just to understand how to use it, something’s wrong.&lt;/p&gt;

&lt;p&gt;Great interfaces are invisible — they guide users without them even noticing.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Nobody reads. Everyone scans.
&lt;/h2&gt;

&lt;p&gt;Let’s face it: users don’t read. They scan, looking for visual cues — keywords, buttons, icons.&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use clear headings;&lt;/li&gt;
&lt;li&gt;Highlight what matters;&lt;/li&gt;
&lt;li&gt;Avoid big blocks of text.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. People go with “good enough”
&lt;/h2&gt;

&lt;p&gt;Users don’t analyze every option. They pick the first thing that looks like it’ll work — a behavior known as satisficing.&lt;/p&gt;

&lt;p&gt;Don't expect your users to be detectives. Make the right option obvious and easy to find.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Conventions are your friends
&lt;/h2&gt;

&lt;p&gt;It’s not the time to reinvent the wheel. Design conventions exist because they work.&lt;br&gt;
Blue links, trash bin icons, search magnifying glasses — they already have meaning.&lt;/p&gt;

&lt;p&gt;Using familiar elements reduces friction and builds trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Clicks aren’t the problem. Effort is.
&lt;/h2&gt;

&lt;p&gt;Don't stress over the number of clicks — stress over how hard each click is.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A few easy, clear steps are better than one confusing shortcut.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  6. Navigation should be obvious
&lt;/h2&gt;

&lt;p&gt;Users should always know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where they are;&lt;/li&gt;
&lt;li&gt;What they can do;&lt;/li&gt;
&lt;li&gt;How to go back.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good navigation is like a reliable map — it keeps users oriented and confident.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Test early and often
&lt;/h2&gt;

&lt;p&gt;Krug makes it clear: you don’t need a fancy lab to do usability testing.&lt;br&gt;
With just 3 to 5 users, you’ll uncover most of the major issues.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Test early, test small, fix fast.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  8. Cut the clutter
&lt;/h2&gt;

&lt;p&gt;Every unnecessary word or element is one more thing that gets in the user’s way.&lt;/p&gt;

&lt;p&gt;Eliminate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generic promo language;&lt;/li&gt;
&lt;li&gt;Words that don’t help users act;&lt;/li&gt;
&lt;li&gt;Redundant explanations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other valuable lessons
&lt;/h2&gt;

&lt;p&gt;Your homepage should immediately explain what your site does;&lt;/p&gt;

&lt;p&gt;Avoid fluff and filler language;&lt;/p&gt;

&lt;p&gt;Accessibility matters — make your design usable for everyone, including people with disabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: usability is empathy
&lt;/h2&gt;

&lt;p&gt;The most powerful lesson in Don't Make Me Think is this: Usability is about respect — for the user’s time, attention, and mental energy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The best design disappears. It just works.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>design</category>
      <category>ux</category>
      <category>webdev</category>
      <category>uidesign</category>
    </item>
  </channel>
</rss>
