<?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: EmmaDSCodes</title>
    <description>The latest articles on DEV Community by EmmaDSCodes (@emmadscodes).</description>
    <link>https://dev.to/emmadscodes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F851714%2F54b23aee-cff4-4679-96d7-0dfcab491ecf.jpeg</url>
      <title>DEV Community: EmmaDSCodes</title>
      <link>https://dev.to/emmadscodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emmadscodes"/>
    <language>en</language>
    <item>
      <title>My favourite zsh/bash shortcuts (functions and aliases)</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Wed, 08 Jul 2026 21:43:31 +0000</pubDate>
      <link>https://dev.to/emmadscodes/my-favourite-zshbash-shortcuts-functions-and-aliases-35n8</link>
      <guid>https://dev.to/emmadscodes/my-favourite-zshbash-shortcuts-functions-and-aliases-35n8</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;My zsh profile is over 1000 lines at this point. A lot of that is functions I asked AI to generate for me, since it's fast, portable, and saves me a ton of typing.&lt;/p&gt;

&lt;p&gt;Here's the thing though: the shortcuts that save me the most time aren't the clever ones. They're the dumb ones. Things like &lt;code&gt;clone&lt;/code&gt; instead of &lt;code&gt;git clone &amp;amp;&amp;amp; cd&lt;/code&gt;, or &lt;code&gt;dir&lt;/code&gt; instead of &lt;code&gt;mkdir -p &amp;amp;&amp;amp; cd&lt;/code&gt;. Each one only saves a second or two, but I run them so often that it adds up fast.&lt;/p&gt;

&lt;p&gt;These are in no particular order, just the ones I reach for constantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git aliases for common commands
&lt;/h2&gt;

&lt;p&gt;A few one-liners I have set up as plain aliases:&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;alias &lt;/span&gt;&lt;span class="nv"&gt;gcp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"git cherry-pick"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;git-append&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"git commit --amend --no-edit -a"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;gcp&lt;/code&gt; is self-explanatory. &lt;code&gt;git-append&lt;/code&gt; amends the last commit with your currently staged (and unstaged, thanks to &lt;code&gt;-a&lt;/code&gt;) changes without touching the commit message. Great for fixing up a commit you just made before you push.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a branch or switch to it if it already exists
&lt;/h2&gt;

&lt;p&gt;One of my most-used functions. Normally you have to remember whether a branch exists before deciding between &lt;code&gt;git checkout &amp;lt;branch&amp;gt;&lt;/code&gt; and &lt;code&gt;git checkout -b &amp;lt;branch&amp;gt;&lt;/code&gt;. This just does the right thing either way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gb&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;git rev-parse &lt;span class="nt"&gt;--verify&lt;/span&gt; &lt;span class="nt"&gt;--quiet&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;/dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;git checkout &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;else
    &lt;/span&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Nuke all local changes to reset the working tree
&lt;/h2&gt;

&lt;p&gt;When an experiment goes sideways or I just want to throw everything away and start clean, I run &lt;code&gt;nah&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nah&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  git reset &lt;span class="nt"&gt;--hard&lt;/span&gt;
  git clean &lt;span class="nt"&gt;-df&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;".git/rebase-apply"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;".git/rebase-merge"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;git rebase &lt;span class="nt"&gt;--abort&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This resets tracked changes, removes untracked files and directories. No confirmation prompt, so use it carefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Print recent commits as ready-to-paste cherry-pick commands
&lt;/h2&gt;

&lt;p&gt;Useful when you need to cherry-pick a batch of commits from one branch onto another 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;logs&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ &lt;span class="o"&gt;[&lt;/span&gt;^0-9] &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: logs &amp;lt;number_of_commits&amp;gt;"&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;1
  &lt;span class="k"&gt;fi
  &lt;/span&gt;git log &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--reverse&lt;/span&gt; &lt;span class="nt"&gt;--pretty&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;format:&lt;span class="s2"&gt;"gcp %h"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;logs 5&lt;/code&gt; and you get the last 5 commits printed oldest to newest, each one already formatted as &lt;code&gt;gcp &amp;lt;hash&amp;gt;&lt;/code&gt; (using the alias from above). Copy, paste, done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a directory and cd into it in one step
&lt;/h2&gt;

&lt;p&gt;This is the one I mentioned that barely saves any time per use, but I run it constantlyn and the time save compounds:&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;dir&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Make mkdir always create parent directories
&lt;/h2&gt;

&lt;p&gt;I got tired of hitting "No such file or directory" errors from &lt;code&gt;mkdir&lt;/code&gt; when the parent folder didn't exist yet, so I just overrode the default behavior globally:&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;mkdir&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;command mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;mkdir&lt;/code&gt; always behaves like &lt;code&gt;mkdir -p&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open nano and auto-create missing parent directories
&lt;/h2&gt;

&lt;p&gt;Same idea as the &lt;code&gt;mkdir&lt;/code&gt; override, but for opening a file in &lt;code&gt;nano&lt;/code&gt; when the folder it lives in doesn't exist yet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-eq&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;command &lt;/span&gt;nano
  &lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;dirname&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
      &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;fi
    &lt;/span&gt;&lt;span class="nb"&gt;command &lt;/span&gt;nano &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Safely replace a file's contents by moving the original to trash first
&lt;/h2&gt;

&lt;p&gt;Instead of overwriting a file and losing the original, &lt;code&gt;replace&lt;/code&gt; moves it to &lt;code&gt;~/.Trash&lt;/code&gt; first and then opens a fresh file with the same name in &lt;code&gt;nano&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;replace&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 1 &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: replace &amp;lt;file&amp;gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;amp;2
    &lt;span class="k"&gt;return &lt;/span&gt;1
  &lt;span class="k"&gt;fi
  &lt;/span&gt;&lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: '&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;' not found or not a file"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;amp;2
    &lt;span class="k"&gt;return &lt;/span&gt;1
  &lt;span class="k"&gt;fi
  &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.Trash
  &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; ~/.Trash/
  nano &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But mainly this saves me from runing "rm  &amp;amp;&amp;amp; nano " which I often do when replacing a file from an AI chat or similar. If you need the original back, it's sitting in &lt;code&gt;~/.Trash&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Convert HEIC images to JPG or PNG
&lt;/h2&gt;

&lt;p&gt;iPhone photos default to HEIC, which isn't great for sharing or uploading. These two functions batch-convert them using ImageMagick:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;heic2jpg&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-eq&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: heic2jpg file1.heic [file2.heic ...]"&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;1
  &lt;span class="k"&gt;fi
  for &lt;/span&gt;f &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
    if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Not found: &lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;fi
    &lt;/span&gt;magick &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;%.*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.jpg"&lt;/span&gt;
  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

heic2png&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-eq&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: heic2png file1.heic [file2.heic ...]"&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;1
  &lt;span class="k"&gt;fi
  for &lt;/span&gt;f &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
    if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Not found: &lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;fi
    &lt;/span&gt;magick &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;%.*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.png"&lt;/span&gt;
  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both take any number of files, so &lt;code&gt;heic2jpg *.heic&lt;/code&gt; works fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Batch convert images to WebP
&lt;/h2&gt;

&lt;p&gt;For getting images web-ready, this wraps &lt;code&gt;img2webp&lt;/code&gt; with sensible defaults and skips anything that isn't actually a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;img2webp&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-eq&lt;/span&gt; 0 &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: img2webp &amp;lt;file.png&amp;gt; [file2.png ...] or img2webp *.png"&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;1
  &lt;span class="k"&gt;fi

  for &lt;/span&gt;input &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
    if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$input&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
      &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Skipping: '&lt;/span&gt;&lt;span class="nv"&gt;$input&lt;/span&gt;&lt;span class="s2"&gt;' is not a file"&lt;/span&gt;
      &lt;span class="k"&gt;continue
    fi
    &lt;/span&gt;&lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;input&lt;/span&gt;&lt;span class="p"&gt;%.*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.webp"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Converting: &lt;/span&gt;&lt;span class="nv"&gt;$input&lt;/span&gt;&lt;span class="s2"&gt; → &lt;/span&gt;&lt;span class="nv"&gt;$output&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;command &lt;/span&gt;img2webp &lt;span class="nt"&gt;-lossy&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; 80 &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$input&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$output&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs at quality 80, lossy, which is a good default for most web use cases. Saves a TON of storage space and bandwidth&lt;/p&gt;

&lt;h2&gt;
  
  
  A few misc aliases
&lt;/h2&gt;

&lt;p&gt;Small ones I use daily without thinking about them:&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;alias &lt;/span&gt;&lt;span class="nv"&gt;pest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"./vendor/bin/pest"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"python3"&lt;/span&gt; &lt;span class="c"&gt;# For AI commands expecting it&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;py&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"python3"&lt;/span&gt; &lt;span class="c"&gt;# For me when I'm lazy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;pest&lt;/code&gt; alias saves typing out the full vendor binary path every time I want to run tests. The &lt;code&gt;python&lt;/code&gt;/&lt;code&gt;py&lt;/code&gt; aliases exist because plenty of AI-generated commands assume &lt;code&gt;python&lt;/code&gt; points to Python 3, and half the time I'm too lazy to type the &lt;code&gt;3&lt;/code&gt; myself anyway.&lt;/p&gt;

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

&lt;p&gt;None of these are groundbreaking on their own. But that's kind of the point: the small, boring shortcuts you run 50 times a day save you more time overall than the clever ones you run once a week. If you're not already keeping a running file of these for yourself, start one. Every time you catch yourself typing the same thing twice, that's a candidate.&lt;/p&gt;

</description>
      <category>zsh</category>
      <category>bash</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I asked Claude Fable 5 to build a HydePHP site. It invented an airline.</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Sun, 05 Jul 2026 18:24:23 +0000</pubDate>
      <link>https://dev.to/emmadscodes/i-asked-claude-fable-5-to-build-a-hydephp-site-it-invented-an-airline-43ne</link>
      <guid>https://dev.to/emmadscodes/i-asked-claude-fable-5-to-build-a-hydephp-site-it-invented-an-airline-43ne</guid>
      <description>&lt;h2&gt;
  
  
  Editor's note
&lt;/h2&gt;

&lt;p&gt;Everything after this section was written by an AI. Don't stop reading. I know most of us are bored of AI written content, but I assure you, this one is different. I want you to give it a chance. And I'm about to tell you why.&lt;/p&gt;

&lt;p&gt;If you have any interest in AI, you've heard about Claude Fable, a safer version of the Mythos model, which is genuenly blowing users across domains away. I wanted to try Fable out to create a new HydePHP demo website to show off some more advanced features.&lt;/p&gt;

&lt;p&gt;It delivered. Not only did it create a stunning website with a unique design that does not have the classic AI generated website feel, but it also created the following blog post, and a high quality promo video uploaded on &lt;a href="https://www.youtube.com/watch?v=ij-r085aEU8" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; you can even hear sound effects that Fable synthesised.&lt;/p&gt;

&lt;p&gt;Try out the demo site at &lt;a href="https://nordlys.hydephp.site/?ref=blog" rel="noopener noreferrer"&gt;nordlys.hydephp.site&lt;/a&gt; and let us know your thoughts on &lt;a href="https://twitter.com/intent/tweet?text=%40HydeFramework%20https%3A%2F%2Fhydephp.com%2Fposts%2Fusing-claude-fable-with-hydephp" rel="noopener noreferrer"&gt;Twitter/X&lt;/a&gt;. With that said, everything below this text is straight from Fable. Please enjoy!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Emma De Silva, Creator of HydePHP&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Letting Claude Drive
&lt;/h2&gt;

&lt;p&gt;HydePHP has had a few demo sites over the years&lt;sup id="fnref1"&gt;1&lt;/sup&gt; — a recipe blog, a photography&lt;br&gt;
portfolio, a scout troop site. They're fine.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; They show the basics. But none of them&lt;br&gt;
really flexes the parts of Hyde we're proudest of: DataCollections feeding Blade&lt;br&gt;
pages, custom components, the docs module living side by side with a blog, all of it&lt;br&gt;
compiling down to plain static HTML.&lt;/p&gt;

&lt;p&gt;So we ran an experiment: give Claude Fable 5 the brief and see what comes back. The&lt;br&gt;
brief was short — &lt;em&gt;build a demo that shows off Hyde's advanced features, and don't&lt;br&gt;
give it that generic AI-generated look.&lt;/em&gt; What came back is &lt;a href="https://nordlys.hydephp.site/?ref=blog" rel="noopener noreferrer"&gt;Nordlys Air&lt;/a&gt;,&lt;br&gt;
a fictional bush airline flying six routes above the Arctic Circle, complete with a&lt;br&gt;
live split-flap departures board, engineering-drawing aircraft profiles, and a crew&lt;br&gt;
operations manual.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why a fictional airline?
&lt;/h2&gt;

&lt;p&gt;The clever part of the concept isn't the theme — it's how neatly the theme maps onto&lt;br&gt;
Hyde's page types. An airline has &lt;em&gt;data&lt;/em&gt; (routes, aircraft), &lt;em&gt;stories&lt;/em&gt; (a flight&lt;br&gt;
journal), and &lt;em&gt;procedures&lt;/em&gt; (an operations manual). That's DataCollections, the posts&lt;br&gt;
module, and the documentation module, each doing the job it was designed for instead&lt;br&gt;
of being demoed in isolation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every row on the departures board is a YAML file in &lt;code&gt;resources/collections/routes/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Every fleet spec sheet is a YAML file in &lt;code&gt;resources/collections/fleet/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Flight Journal is three Markdown posts with authors, categories, and RSS.&lt;/li&gt;
&lt;li&gt;The Operations Manual is the docs module with its automatic sidebar and search —
written in-character, down to the Ny-Ålesund radio silence procedures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add a fourth aircraft by adding a fourth YAML file. The register page, the homepage&lt;br&gt;
cards, and the navigation update themselves on the next build. That's the pitch for&lt;br&gt;
static site generators in one sentence, and now it's the pitch for the demo too.&lt;/p&gt;
&lt;h2&gt;
  
  
  The detail we didn't expect: a build-time split-flap board
&lt;/h2&gt;

&lt;p&gt;The centrepiece of the homepage is an animated split-flap departures board, and the&lt;br&gt;
implementation is the most Hyde-flavoured thing on the site. Claude didn't render&lt;br&gt;
the board with JavaScript. It wrote a Blade component, &lt;code&gt;x-flap-text&lt;/code&gt;, that splits&lt;br&gt;
each cell's text into character &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;s &lt;strong&gt;at build time&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@foreach(DataCollection::yaml('routes')
    -&amp;gt;sortBy(fn ($route) =&amp;gt; $route-&amp;gt;get('departs')) as $route)
  &amp;lt;x-flap-row :route="$route" /&amp;gt;
@endforeach
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The full timetable ships in the static HTML — readable with JavaScript disabled,&lt;br&gt;
crawlable, accessible. The site's &lt;em&gt;only&lt;/em&gt; script is a two-kilobyte vanilla file that&lt;br&gt;
animates the spans already on the page and runs the hub clock, with&lt;br&gt;
&lt;code&gt;prefers-reduced-motion&lt;/code&gt; respected. No framework, no hydration, no build pipeline&lt;br&gt;
beyond &lt;code&gt;php hyde build&lt;/code&gt;. It's the static-first philosophy applied to a component&lt;br&gt;
that usually gets thrown at a JavaScript library by reflex.&lt;/p&gt;

&lt;h2&gt;
  
  
  On not looking AI-generated
&lt;/h2&gt;

&lt;p&gt;We were explicit that the design shouldn't have the interchangeable AI-website look —&lt;br&gt;
the purple gradients, the glassmorphism cards, the Inter-font-and-emoji sameness.&lt;br&gt;
Claude's answer was to pick a specific, researchable design tradition and commit to&lt;br&gt;
it: mid-century printed airline timetables. Cool ice-paper background, petrol ink,&lt;br&gt;
one international-orange accent, ruled lines like a printed schedule, boarding-pass&lt;br&gt;
cards with perforated stubs, and type set in Bricolage Grotesque and IBM Plex Mono.&lt;/p&gt;

&lt;p&gt;The aircraft on the site aren't stock photos or generated images — they're original&lt;br&gt;
schematic SVG line drawings, Twin Otter and Dash 8 side profiles with orange&lt;br&gt;
dimension lines, drawn path by path. The route network is a hand-projected polar&lt;br&gt;
azimuthal chart. Both live as reusable Blade components, so the fleet YAML just&lt;br&gt;
says &lt;code&gt;drawing: twin-otter&lt;/code&gt; and the page pulls in the right SVG with&lt;br&gt;
&lt;code&gt;&amp;lt;x-dynamic-component&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What working with Fable 5 was actually like
&lt;/h2&gt;

&lt;p&gt;A few observations from the process, for anyone curious about the workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It verified the framework against the source.&lt;/strong&gt; Before writing a line of Blade,&lt;br&gt;
it cloned the &lt;code&gt;hyde/hyde&lt;/code&gt; skeleton and the documentation repo and checked the real&lt;br&gt;
v2 APIs — &lt;code&gt;DataCollection::yaml()&lt;/code&gt;, the navigation menu via &lt;code&gt;app('navigation.main')&lt;/code&gt;,&lt;br&gt;
the &lt;code&gt;Author::create()&lt;/code&gt; config syntax. The demo isn't written from a fuzzy memory of&lt;br&gt;
Hyde; it's written against Hyde as it ships today. (It also caught that &lt;code&gt;mb_str_pad&lt;/code&gt;&lt;br&gt;
is PHP 8.3+ while our &lt;code&gt;composer.json&lt;/code&gt; allows 8.2, and wrote the multibyte padding&lt;br&gt;
by hand instead. We noticed.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It wrote the content, not just the code.&lt;/strong&gt; The journal posts are actual essays —&lt;br&gt;
a captain's field notes from the midnight sun run to Ny-Ålesund, a love letter to&lt;br&gt;
the 04:10 de-icing crew. The operations manual reads like an operations manual. A&lt;br&gt;
demo site lives or dies on whether the content feels real, and lorem ipsum was never&lt;br&gt;
on the table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It kept the site honest.&lt;/strong&gt; The footer of every page says it: &lt;em&gt;Nordlys Air is&lt;br&gt;
fictional. The northern lights are real.&lt;/em&gt; And the homepage ends with an "under the&lt;br&gt;
floorboards" section that shows the project's file tree and the actual Blade loop&lt;br&gt;
powering the board — because a demo site's real job is to make you think "oh, I&lt;br&gt;
could build that."&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;The full project is available as a standard Hyde &lt;a href="https://github.com/hydephp/nordlys-demo?ref=blog" rel="noopener noreferrer"&gt;repository&lt;/a&gt; — clone it, run&lt;br&gt;
&lt;code&gt;composer install &amp;amp;&amp;amp; php hyde build&lt;/code&gt;, and poke around. Change a route's status in&lt;br&gt;
its YAML file and rebuild to watch the board update. Add an aircraft. Break the&lt;br&gt;
timetable. That's what it's for.&lt;/p&gt;

&lt;p&gt;And if you build something with Hyde — with or without an AI copilot — we'd love&lt;br&gt;
to see it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Footnotes
&lt;/h2&gt;

&lt;p&gt;These are the footnotes added by the human editor to point out issues in the AI text.&lt;/p&gt;

&lt;p&gt;Also, the source code is at &lt;a href="https://github.com/hydephp/nordlys-demo?ref=blog" rel="noopener noreferrer"&gt;github.com/hydephp/nordlys-demo&lt;/a&gt; and the live preview is at &lt;a href="https://nordlys.hydephp.site/?ref=blog" rel="noopener noreferrer"&gt;nordlys.hydephp.site&lt;/a&gt;.&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Technically we just launched the recipe and scout sites a few days before.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;Hey! I kinda like them. I mean check out &lt;a href="https://lemonade-days.hydephp.site/?ref=nordlys" rel="noopener noreferrer"&gt;Lemonade Days&lt;/a&gt; - it's so summery!&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>hydephp</category>
      <category>webdev</category>
    </item>
    <item>
      <title>HydePHP Version v2.0 Released</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Mon, 06 Oct 2025 15:30:56 +0000</pubDate>
      <link>https://dev.to/emmadscodes/hydephp-version-v20-released-426b</link>
      <guid>https://dev.to/emmadscodes/hydephp-version-v20-released-426b</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HydePHP v2.0 is now available for download!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After two years of development and refinement, the HydePHP team is thrilled to announce the release of version 2.0. This is our most significant update yet, representing a major evolution of the framework with modernized frontend tooling, a completely redesigned navigation system, and countless improvements to the developer experience.&lt;/p&gt;

&lt;p&gt;The new version was unveiled and released live on stage by HydePHP creator Emma De Silva at the Laravel Meetup Stockholm, on October 1st 2025.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New in v2.0
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Modern Frontend Tooling with Vite
&lt;/h3&gt;

&lt;p&gt;We've replaced Laravel Mix with Vite, bringing you a faster and more modern development experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instant Hot Module Replacement for real-time updates during development&lt;/li&gt;
&lt;li&gt;Seamless Blade template integration with the new Vite facade&lt;/li&gt;
&lt;li&gt;Tailwind V4 support with easy upgrade tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simply run &lt;code&gt;npm run build&lt;/code&gt; (replacing the old &lt;code&gt;npm run prod&lt;/code&gt; command) to compile your assets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Redesigned Navigation API
&lt;/h3&gt;

&lt;p&gt;The navigation system has been completely rewritten from the ground up for maximum flexibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;YAML configuration support for defining navigation items&lt;/li&gt;
&lt;li&gt;Extra attributes for custom styling and behavior&lt;/li&gt;
&lt;li&gt;Improved Routes facade with Laravel-consistent naming conventions&lt;/li&gt;
&lt;li&gt;Natural priority ordering using numeric prefixes in filenames&lt;/li&gt;
&lt;li&gt;Enhanced sidebar management with better organization options&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enhanced Asset Management
&lt;/h3&gt;

&lt;p&gt;The new consolidated Asset API provides a more intuitive interface for handling media files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MediaFile instances with fluent methods like &lt;code&gt;getLink()&lt;/code&gt;, &lt;code&gt;getLength()&lt;/code&gt;, and &lt;code&gt;getMimeType()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Intelligent caching with CRC32 hashing for improved performance&lt;/li&gt;
&lt;li&gt;Automatic validation to prevent missing assets from going unnoticed&lt;/li&gt;
&lt;li&gt;Lazy-loaded metadata for optimal resource usage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Better Documentation Features
&lt;/h3&gt;

&lt;p&gt;Documentation pages now benefit from several powerful enhancements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alpine.js-powered search with customizable implementation&lt;/li&gt;
&lt;li&gt;Blade-based table of contents that's 40x faster than before&lt;/li&gt;
&lt;li&gt;Custom heading renderer with improved permalink handling&lt;/li&gt;
&lt;li&gt;Colored blockquotes now using Tailwind CSS classes&lt;/li&gt;
&lt;li&gt;Dynamic source file links in Markdown documents&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Improved Blog Posts
&lt;/h3&gt;

&lt;p&gt;The blog system receives significant upgrades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplified image front matter with new "caption" field&lt;/li&gt;
&lt;li&gt;Date prefixes in filenames for automatic publishing dates&lt;/li&gt;
&lt;li&gt;Enhanced author system with biographies, avatars, and social media links&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technical Improvements
&lt;/h2&gt;

&lt;p&gt;HydePHP v2.0 brings several important technical upgrades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PHP 8.4 support&lt;/strong&gt; and Laravel 11 compatibility&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vite integration&lt;/strong&gt; with HMR support in realtime compiler&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS v4&lt;/strong&gt; with automated upgrade tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ESM module support&lt;/strong&gt; for modern JavaScript development&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;40x faster table of contents generation&lt;/strong&gt; using Blade components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy-loaded media metadata&lt;/strong&gt; with in-memory caching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced data collections&lt;/strong&gt; with syntax validation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Upgrading to v2.0
&lt;/h2&gt;

&lt;p&gt;We recommend that all users upgrade to take advantage of these improvements. Before upgrading, ensure your application is running HydePHP v1.6 or later (ideally v1.8) to ease the migration process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Migration Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade Tailwind CSS&lt;/strong&gt;: Run &lt;code&gt;npx @tailwindcss/upgrade&lt;/code&gt; to migrate to v4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update JavaScript&lt;/strong&gt;: Migrate custom JavaScript to ESM modules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update Configuration&lt;/strong&gt;: Update features to use enum values and navigation to array format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update Build Command&lt;/strong&gt;: Replace &lt;code&gt;npm run prod&lt;/code&gt; with &lt;code&gt;npm run build&lt;/code&gt; in your workflow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The upgrade process involves some breaking changes, particularly around the asset system, navigation configuration, and frontend tooling. We've prepared comprehensive documentation to guide you through each step.&lt;/p&gt;

&lt;p&gt;For detailed upgrade instructions and a complete migration checklist, please refer to the &lt;a href="https://hydephp.com/docs/2.x/upgrade-guide" rel="noopener noreferrer"&gt;upgrade guide&lt;/a&gt; in our documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Changes
&lt;/h2&gt;

&lt;p&gt;As a major version release, v2.0 includes several breaking changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tailwind CSS upgraded from v3 to v4&lt;/li&gt;
&lt;li&gt;Frontend tooling migrated to ESM modules&lt;/li&gt;
&lt;li&gt;Navigation configuration format updated to array-based structure&lt;/li&gt;
&lt;li&gt;Asset API methods now return MediaFile instances&lt;/li&gt;
&lt;li&gt;Routes facade methods renamed to follow Laravel conventions&lt;/li&gt;
&lt;li&gt;Blog author system significantly improved with new configuration format&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these changes require some migration work, they set a solid foundation for future development and provide a much better developer experience overall.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;With v2.0 released, we're excited about the future of HydePHP. We'll continue to focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improving documentation and learning resources&lt;/li&gt;
&lt;li&gt;Enhancing the developer experience&lt;/li&gt;
&lt;li&gt;Building new features based on community feedback&lt;/li&gt;
&lt;li&gt;Maintaining compatibility with the latest Laravel and PHP versions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started Today
&lt;/h2&gt;

&lt;p&gt;Ready to upgrade or start a new project with HydePHP v2.0? Install it via Composer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require hyde/framework:^2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For new projects, we recommend using the HydePHP installer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer create-project hyde/hyde
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://hydephp.com/docs/2.x" rel="noopener noreferrer"&gt;hydephp.com/docs/2.x&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade Guide&lt;/strong&gt;: &lt;a href="https://hydephp.com/docs/2.x/upgrade-guide" rel="noopener noreferrer"&gt;hydephp.com/docs/2.x/upgrade-guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href="https://github.com/hydephp/develop/releases/tag/v2.0.0" rel="noopener noreferrer"&gt;github.com/hydephp/develop/releases/tag/v2.0.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/hydephp/hyde" rel="noopener noreferrer"&gt;github.com/hydephp/hyde&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord Community&lt;/strong&gt;: &lt;a href="https://discord.hydephp.com" rel="noopener noreferrer"&gt;discord.hydephp.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thank You
&lt;/h2&gt;

&lt;p&gt;A huge thank you to everyone who contributed to this release through code, bug reports, feedback, and community support. HydePHP wouldn't be possible without this amazing community.&lt;/p&gt;

&lt;p&gt;We encourage all users to upgrade to this latest version and explore the new features. As always, we welcome your feedback and contributions to make HydePHP even better. Please report any issues you find on &lt;a href="https://github.com/hydephp/hyde" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, and share your thoughts on Twitter/X using the hashtag &lt;a href="https://twitter.com/search?q=%23HydePHP" rel="noopener noreferrer"&gt;#HydePHP&lt;/a&gt; or by tagging us at &lt;a href="https://twitter.com/HydeFramework" rel="noopener noreferrer"&gt;@HydeFramework&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy building with HydePHP v2.0!&lt;/p&gt;

</description>
      <category>hydephp</category>
      <category>laravel</category>
      <category>php</category>
      <category>news</category>
    </item>
    <item>
      <title>Hackathon: HydePHP is Joining ODHack #14</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Wed, 28 May 2025 19:30:04 +0000</pubDate>
      <link>https://dev.to/emmadscodes/hackathon-hydephp-is-joining-odhack-14-19g</link>
      <guid>https://dev.to/emmadscodes/hackathon-hydephp-is-joining-odhack-14-19g</guid>
      <description>&lt;h2&gt;
  
  
  Are you ready to build something amazing?
&lt;/h2&gt;

&lt;p&gt;We're excited to announce that HydePHP is officially participating in &lt;strong&gt;&lt;a href="https://contribute.onlydust.com/od-hacks/od-hack-14?ref=hydephp.com" rel="noopener noreferrer"&gt;ODHack #14&lt;/a&gt;&lt;/strong&gt;, running from May 28 to June 4, 2025! This is a fantastic opportunity for developers of all skill levels to contribute to our open-source static site generator and help shape the future of modern web development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ODHack #14?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://contribute.onlydust.com/od-hacks/od-hack-14?ref=hydephp.com" rel="noopener noreferrer"&gt;ODHack&lt;/a&gt; is &lt;a href="https://onlydust.com/?ref=hydephp.com" rel="noopener noreferrer"&gt;OnlyDust&lt;/a&gt;'s monthly hackathon that connects developers with meaningful open-source projects. It's more than just a coding competition – it's a chance to contribute to real-world projects, build your developer portfolio, and connect with a thriving community of passionate developers from around the globe.&lt;/p&gt;

&lt;p&gt;With over 1,571 issues across 547 repositories, ODHack #14 offers something for everyone, whether you're a seasoned developer or just starting your open-source journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Contribute to HydePHP?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/hydephp/hyde" rel="noopener noreferrer"&gt;HydePHP&lt;/a&gt; is a powerful, elegant static site generator built with PHP that makes creating beautiful, fast websites a breeze. By contributing to HydePHP during &lt;a href="https://contribute.onlydust.com/od-hacks/od-hack-14?ref=hydephp.com" rel="noopener noreferrer"&gt;ODHack #14&lt;/a&gt;, you'll be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Working on cutting-edge technology&lt;/strong&gt;: Help improve a modern static site generator that's used by developers worldwide&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Making a real impact&lt;/strong&gt;: Your contributions will directly benefit the HydePHP community and ecosystem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building valuable skills&lt;/strong&gt;: Gain experience with PHP, Laravel ecosystem tools, and modern web development practices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Joining a welcoming community&lt;/strong&gt;: Our maintainers are committed to helping contributors succeed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's in Store for Contributors
&lt;/h2&gt;

&lt;p&gt;We've prepared an exciting mix of contribution opportunities specifically for ODHack #14:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good First Issues&lt;/strong&gt;&lt;br&gt;
Perfect for newcomers or those new to HydePHP! We have several beginner-friendly issues including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supporting "excerpt" as an alias for "description" in blog post schema&lt;/li&gt;
&lt;li&gt;Adding namespaced functions for helper methods&lt;/li&gt;
&lt;li&gt;Fixing UI glitches and improving user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Beta Testing HydePHP v2.0&lt;/strong&gt;&lt;br&gt;
Here's something special – &lt;strong&gt;HydePHP v2.0 is launching next month&lt;/strong&gt;, and we need your help testing it! Contributors will get exclusive early access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test new features and provide feedback&lt;/li&gt;
&lt;li&gt;Report bugs and help us polish the release&lt;/li&gt;
&lt;li&gt;Be among the first to experience the next generation of HydePHP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Creative Showcase Projects&lt;/strong&gt;&lt;br&gt;
Let your creativity shine! We're looking for contributors to build impressive demo websites using HydePHP v2.0. The best demos will be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Featured on the official HydePHP website&lt;/li&gt;
&lt;li&gt;Used to showcase the framework's capabilities&lt;/li&gt;
&lt;li&gt;A source of valuable feedback for our v2.0 release&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Featured Issues to Get You Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We've tagged several issues specifically for ODHack #14 participants. You can find them in the &lt;a href="https://github.com/hydephp/hyde/issues?q=is%3Aissue+is%3Aopen+label%3AODHack14" rel="noopener noreferrer"&gt;HydePHP repository&lt;/a&gt; with the &lt;code&gt;ODHack14&lt;/code&gt; label.&lt;/p&gt;

&lt;p&gt;Each issue includes detailed descriptions, acceptance criteria, and guidance to help you get started quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Get Involved
&lt;/h2&gt;

&lt;p&gt;Ready to join the fun? Here's how to participate:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Register for ODHack #14&lt;/strong&gt; at &lt;a href="https://contribute.onlydust.com/od-hacks/od-hack-14?ref=hydephp.com" rel="noopener noreferrer"&gt;contribute.onlydust.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browse HydePHP issues&lt;/strong&gt; tagged with &lt;code&gt;ODHack14&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apply to work on issues&lt;/strong&gt; that match your interests and skill level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Join our community&lt;/strong&gt; - Connect with other contributors and maintainers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start contributing&lt;/strong&gt; - Submit your pull requests and make your mark!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Join Our Community
&lt;/h2&gt;

&lt;p&gt;Contributing to open source is more rewarding when you're part of a supportive community. Join us on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/hydephp/hyde" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/strong&gt;: Follow our repository and engage with issues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/hydephp/hyde/discussions" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;&lt;/strong&gt;: Share ideas and get help from maintainers and fellow contributors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://discord.hydephp.com" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/strong&gt;: Real-time chat with the HydePHP community&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ready to Build Something Amazing?
&lt;/h2&gt;

&lt;p&gt;Whether you're looking to fix your first bug, test cutting-edge features, or create stunning demo sites, HydePHP's participation in ODHack #14 offers the perfect opportunity to dive into open source development.&lt;/p&gt;

&lt;p&gt;The hackathon runs until &lt;strong&gt;June 4th&lt;/strong&gt;, giving you a full week to make meaningful contributions, learn new skills, and connect with developers worldwide. Every contribution matters, no matter how big or small!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://contribute.onlydust.com/od-hacks/od-hack-14?ref=hydephp.com" rel="noopener noreferrer"&gt;Join ODHack #14 now&lt;/a&gt;&lt;/strong&gt; and let's build the future of static site generation together. We can't wait to see what you'll create with HydePHP!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Happy coding, and welcome to the HydePHP community! 🚀&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hydephp</category>
      <category>hackathon</category>
      <category>opensource</category>
      <category>php</category>
    </item>
    <item>
      <title>Demystifying the TailwindCSS `bg-current` utility class</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Fri, 15 Nov 2024 18:54:00 +0000</pubDate>
      <link>https://dev.to/emmadscodes/demystifying-the-tailwindcss-bg-current-utility-class-4h7l</link>
      <guid>https://dev.to/emmadscodes/demystifying-the-tailwindcss-bg-current-utility-class-4h7l</guid>
      <description>&lt;p&gt;The &lt;code&gt;bg-current&lt;/code&gt; utility class in TailwindCSS sets the background color of an element to the current text color. This means that the background will inherit the color defined by the &lt;code&gt;text-color&lt;/code&gt; property of the element or its parent.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inheritance&lt;/strong&gt;: If you have a parent element with a specific text color (e.g., &lt;code&gt;text-gray-700&lt;/code&gt;), using &lt;code&gt;bg-current&lt;/code&gt; on a child element will make the background of that child element the same color as the text color of the parent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic&lt;/strong&gt;: This is particularly useful for creating components that need to adapt to different themes or color schemes without hardcoding specific colors. For example, if you switch from light mode to dark mode, the background will automatically change to match the new text color.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-blue-500"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-current"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This background is blue!&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the background of the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; will be blue because it inherits the text color from the parent &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt;: Ensures that the background color is always consistent with the text color, which can be particularly useful for icons or buttons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: Reduces the need to define multiple color classes for different states or themes, simplifying the styling process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using &lt;code&gt;bg-current&lt;/code&gt; is a great way to maintain visual harmony in your design while leveraging Tailwind's utility-first approach.&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>beginners</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Laravel Nightwatch: The Future of Laravel Application Monitoring Revealed at Laracon AU</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Thu, 07 Nov 2024 10:24:41 +0000</pubDate>
      <link>https://dev.to/emmadscodes/laravel-nightwatch-the-future-of-laravel-application-monitoring-revealed-at-laracon-au-3aei</link>
      <guid>https://dev.to/emmadscodes/laravel-nightwatch-the-future-of-laravel-application-monitoring-revealed-at-laracon-au-3aei</guid>
      <description>&lt;p&gt;Laravel's ecosystem continues to expand with the announcement of &lt;strong&gt;Laravel Nightwatch&lt;/strong&gt; at Laracon AU - a sophisticated monitoring platform specifically engineered for Laravel applications. Set for early access in Q1 2025, Nightwatch promises to revolutionize how developers monitor and maintain their Laravel applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  A New Era of Laravel Monitoring
&lt;/h2&gt;

&lt;p&gt;Laravel Nightwatch represents a significant advancement in application monitoring, developed by the same team behind Laravel Cloud, Forge, Vapor, and Nova. This platform stands out by offering context-aware monitoring that understands Laravel's internal workings, providing insights that generic monitoring solutions simply cannot match.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Configuration Monitoring&lt;/strong&gt;: Nightwatch automatically detects and tracks application activities without complex setup procedures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent Log Management&lt;/strong&gt;: Advanced log ingestion and analysis specifically optimized for Laravel applications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Performance Tracking&lt;/strong&gt;: Immediate insights into application performance metrics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Alert System&lt;/strong&gt;: Smart notifications for critical issues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform Compatibility&lt;/strong&gt;: Works seamlessly with all hosting platforms including Laravel Cloud, Forge, Vapor, and custom infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Nightwatch Matters
&lt;/h2&gt;

&lt;p&gt;Traditional monitoring solutions often require developers to piece together multiple tools and wade through endless logs to understand their application's health. Nightwatch aims to eliminate this complexity by providing a unified, Laravel-focused monitoring solution that delivers meaningful insights out of the box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Availability and Pricing
&lt;/h2&gt;

&lt;p&gt;While early access is scheduled for Q1 2025, Laravel has confirmed they're developing a pricing structure that will accommodate teams of all sizes - from individual developers to enterprise organizations. This commitment to accessibility ensures that comprehensive application monitoring won't be limited to just large-scale operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Forward
&lt;/h2&gt;

&lt;p&gt;The introduction of Nightwatch marks another milestone in Laravel's journey to provide developers with best-in-class tools for building and maintaining web applications. As Taylor Otwell, Laravel's creator, puts it: "We're not here to add another dashboard to your toolkit — we're here to redefine how you understand your Laravel application."&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Interested developers can join the waitlist at &lt;a href="https://nightwatch.laravel.com" rel="noopener noreferrer"&gt;nightwatch.laravel.com&lt;/a&gt; to be among the first to experience Laravel Nightwatch when it launches in early 2025.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Stay tuned for more updates as we approach the early access release of Laravel Nightwatch in 2025.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>news</category>
      <category>laravel</category>
      <category>php</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>New `@bool` Blade directive in Laravel!</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Sun, 20 Oct 2024 16:38:32 +0000</pubDate>
      <link>https://dev.to/emmadscodes/new-bool-blade-directive-in-laravel-3cob</link>
      <guid>https://dev.to/emmadscodes/new-bool-blade-directive-in-laravel-3cob</guid>
      <description>&lt;h2&gt;
  
  
  The new &lt;code&gt;@bool&lt;/code&gt; Blade directive
&lt;/h2&gt;

&lt;p&gt;Laravel's Blade templating engine is getting a handy new feature: the &lt;a class="mentioned-user" href="https://dev.to/bool"&gt;@bool&lt;/a&gt; directive. This allows you to directly print boolean values into strings or use them in object construction, making your JavaScript integrations cleaner and more efficient.&lt;/p&gt;

&lt;p&gt;Here's how you can use it:&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;script&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;isActive&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$isActive&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="na"&gt;hasAccess&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$hasAccess&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When compiled, this Blade code will output clean JavaScript:&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;script&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;isActive&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;hasAccess&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;p&gt;The &lt;a class="mentioned-user" href="https://dev.to/bool"&gt;@bool&lt;/a&gt; directive is particularly useful in several scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;JavaScript configuration objects&lt;/li&gt;
&lt;li&gt;Alpine.js data binding&lt;/li&gt;
&lt;li&gt;HTML attributes requiring boolean values&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For instance, with Bootstrap:&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;button&lt;/span&gt; &lt;span class="na"&gt;aria-haspopup=&lt;/span&gt;&lt;span class="s"&gt;"@bool($hasPopup)"&lt;/span&gt; &lt;span class="na"&gt;aria-expanded=&lt;/span&gt;&lt;span class="s"&gt;"@bool($isExpanded)"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    Dropdown button
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Availability &amp;amp; PR
&lt;/h2&gt;

&lt;p&gt;While this feature isn't released yet, it's expected to be available soon. Keep an eye on Laravel's official channels for the announcement. In the meantime, check out the merged PR on GitHub! &lt;a href="https://github.com/laravel/framework/pull/53179" rel="noopener noreferrer"&gt;https://github.com/laravel/framework/pull/53179&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The &lt;code&gt;@bool&lt;/code&gt; directive is a small but powerful addition to Blade that will make working with boolean values in your templates much more convenient.&lt;/p&gt;

&lt;p&gt;If any part of this post was helpful, please let me know and give me a follow on Twitter/X where I'm &lt;a href="https://twitter.com/CodeWithCaen" rel="noopener noreferrer"&gt;@CodeWithCaen&lt;/a&gt;&lt;/p&gt;

</description>
      <category>news</category>
      <category>laravel</category>
      <category>php</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Quick Tip: Git Undo Commands</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Thu, 17 Oct 2024 19:38:49 +0000</pubDate>
      <link>https://dev.to/emmadscodes/quick-tip-git-undo-commands-1kj9</link>
      <guid>https://dev.to/emmadscodes/quick-tip-git-undo-commands-1kj9</guid>
      <description>&lt;p&gt;To undo changes in Git, you can use the following commands, depending on what you want to undo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Method 1:&lt;/strong&gt; Undo uncommitted changes in the working directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Method 2:&lt;/strong&gt; Unstage a staged file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Method 3:&lt;/strong&gt; Undo the last commit but keep changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Method 4:&lt;/strong&gt; Undo the last commit and discard changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; Reset to the remote tracking branch&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; origin/&lt;span class="si"&gt;$(&lt;/span&gt;git rev-parse &lt;span class="nt"&gt;--abbrev-ref&lt;/span&gt; HEAD&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose the command based on your requirement. Always be cautious with &lt;code&gt;--hard&lt;/code&gt; as it irreversibly deletes changes.&lt;/p&gt;

</description>
      <category>git</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>cli</category>
    </item>
    <item>
      <title>Support HydePHP and Double Your Impact!</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Thu, 17 Oct 2024 19:36:36 +0000</pubDate>
      <link>https://dev.to/emmadscodes/support-hydephp-and-double-your-impact-4b8e</link>
      <guid>https://dev.to/emmadscodes/support-hydephp-and-double-your-impact-4b8e</guid>
      <description>&lt;h2&gt;
  
  
  Double Your Donation to HydePHP!
&lt;/h2&gt;

&lt;p&gt;We're excited to share an opportunity to support HydePHP and make your contribution go even further!&lt;/p&gt;

&lt;p&gt;Simon Hamp (&lt;a href="https://x.com/simonhamp" rel="noopener noreferrer"&gt;@simonhamp&lt;/a&gt;) has launched a &lt;a href="https://x.com/simonhamp/status/1845840688438526159" rel="noopener noreferrer"&gt;generous matching donation campaign&lt;/a&gt; for open-source projects. Here's how you can participate and help HydePHP:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Donate any amount to &lt;a href="https://opencollective.com/hydephp" rel="noopener noreferrer"&gt;HydePHP's OpenCollective&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Send your donation receipt to Simon Hamp.&lt;/li&gt;
&lt;li&gt;Simon will match your donation up to $10!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a fantastic chance to double your impact and support the ongoing development of HydePHP, the Laravel-based static site generator.&lt;/p&gt;

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

&lt;p&gt;Your contributions help cover hosting costs, development tools, and enable us to create more resources for the community. Every donation, no matter the size, makes a difference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ready to Support HydePHP and Open Source?
&lt;/h3&gt;

&lt;p&gt;Simon's campaign aims to raise $2,000 for 100 open-source projects. Let's make sure HydePHP is one of them! Donate today and help us continue improving the HydePHP experience for everyone.&lt;/p&gt;

&lt;p&gt;Thank you for your support and for being part of the HydePHP community!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>news</category>
      <category>community</category>
      <category>php</category>
    </item>
    <item>
      <title>Escape the Drama: Why HydePHP is Your WordPress Alternative</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Sun, 13 Oct 2024 22:49:55 +0000</pubDate>
      <link>https://dev.to/emmadscodes/escape-the-drama-why-hydephp-is-your-wordpress-alternative-11nd</link>
      <guid>https://dev.to/emmadscodes/escape-the-drama-why-hydephp-is-your-wordpress-alternative-11nd</guid>
      <description>&lt;h2&gt;
  
  
  The WordPress Drama
&lt;/h2&gt;

&lt;p&gt;As the WordPress ecosystem faces unprecedented turmoil, many developers and site owners are reconsidering their platform choices. The recent conflict between WordPress co-founder Matt Mullenweg and WP Engine has highlighted issues of control, contribution, and commercialization within the WordPress community. This drama serves as a wake-up call: it's time to explore alternatives that prioritize simplicity, independence, and developer empowerment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter HydePHP: A Breath of Fresh Air
&lt;/h2&gt;

&lt;p&gt;HydePHP emerges as a compelling alternative for those seeking to break free from the complexities and controversies of WordPress. Let's explore why HydePHP might be the perfect solution for your next project.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Content-First Philosophy
&lt;/h3&gt;

&lt;p&gt;HydePHP embraces a content-first approach, allowing you to focus on what matters most: your writing. With Markdown support, you can create blog posts, documentation pages, and static HTML pages without getting bogged down in complex markup or plugin configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Simplicity Without Sacrifice
&lt;/h3&gt;

&lt;p&gt;Unlike WordPress's steep learning curve and plugin dependencies, HydePHP offers a streamlined development experience. It combines a framework, static site builder, and starter template into one cohesive package. This means you can get started quickly without sacrificing the ability to customize your site as your needs evolve.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Lightning-Fast Performance
&lt;/h3&gt;

&lt;p&gt;As a static site generator, HydePHP produces websites that are inherently fast and scalable. By eliminating the need for databases and server-side rendering, your site can be served from global CDNs, resulting in blazing-fast load times and improved user experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Enhanced Security and Stability
&lt;/h3&gt;

&lt;p&gt;With no database to maintain or complex backend to secure, HydePHP sites are significantly less vulnerable to common web attacks. This not only improves your site's security but also reduces the ongoing maintenance burden.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Cost-Effective Hosting
&lt;/h3&gt;

&lt;p&gt;Static sites are incredibly cheap to host, with many providers offering free options. This can lead to substantial cost savings compared to traditional WordPress hosting, especially as your site scales.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Developer-Friendly Environment
&lt;/h3&gt;

&lt;p&gt;Built on Laravel and using familiar tools like Blade and TailwindCSS, HydePHP provides a modern, enjoyable development experience. It strikes a balance between ease of use for beginners and flexibility for advanced users.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. No Vendor Lock-In
&lt;/h3&gt;

&lt;p&gt;Unlike the WordPress ecosystem, where your content can become entangled with themes and plugins, HydePHP keeps your content separate and portable. This gives you the freedom to evolve your site or even migrate to a different platform in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the Switch
&lt;/h2&gt;

&lt;p&gt;Transitioning from WordPress to HydePHP is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install HydePHP using Composer: &lt;code&gt;composer create-project hyde/hyde&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Migrate your content to Markdown files&lt;/li&gt;
&lt;li&gt;Customize your templates and styles as needed&lt;/li&gt;
&lt;li&gt;Build and deploy your static site&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;As the WordPress drama unfolds, it's clear that developers and content creators need alternatives that offer simplicity, speed, and independence. HydePHP provides all these benefits while maintaining the flexibility to grow with your needs.&lt;/p&gt;

&lt;p&gt;By choosing HydePHP, you're not just selecting a tool; you're embracing a philosophy of content-first development, free from the complexities and controversies that can plague larger ecosystems. Give HydePHP a try for your next project, and experience the joy of building websites without the drama.&lt;/p&gt;

&lt;p&gt;Ready to get started? Check out the &lt;a href="https://hydephp.com/docs" rel="noopener noreferrer"&gt;HydePHP documentation&lt;/a&gt; and join a community focused on empowering developers and content creators alike.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>hydephp</category>
      <category>webdev</category>
      <category>php</category>
    </item>
    <item>
      <title>Quick Tip: How To Use Blue Links in Tailwind Typography (Prose)</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Fri, 27 Sep 2024 11:48:48 +0000</pubDate>
      <link>https://dev.to/emmadscodes/quick-tip-how-to-use-blue-links-in-tailwind-typography-prose-3i9j</link>
      <guid>https://dev.to/emmadscodes/quick-tip-how-to-use-blue-links-in-tailwind-typography-prose-3i9j</guid>
      <description>&lt;p&gt;The Tailwind Typography plugin (that adds the &lt;code&gt;.prose&lt;/code&gt; class) comes with a very opinionated link style. If you want the more classic one, it's easy to fix in the config. You can also go bold and use any other color of course. I'm going with Indigo for a sweet blue link.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;sans&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Inter var&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;defaultTheme&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sans&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;typography&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;DEFAULT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;css&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;colors.indigo.600&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                        &lt;span class="na"&gt;textDecoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;amp;:hover&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;colors.indigo.500&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                        &lt;span class="p"&gt;},&lt;/span&gt;
                    &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="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;And that's it!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>HydePHP Explores AI in a Mind-Blowing Podcast Episode Generated by Artificial Intelligence</title>
      <dc:creator>EmmaDSCodes</dc:creator>
      <pubDate>Sat, 21 Sep 2024 10:08:48 +0000</pubDate>
      <link>https://dev.to/emmadscodes/hydephp-explores-ai-in-a-mind-blowing-podcast-episode-generated-by-artificial-intelligence-2c0b</link>
      <guid>https://dev.to/emmadscodes/hydephp-explores-ai-in-a-mind-blowing-podcast-episode-generated-by-artificial-intelligence-2c0b</guid>
      <description>&lt;h2&gt;
  
  
  Diving Deep into the Future: HydePHP's AI-Generated Podcast
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Caen, I'm the creator of HydePHP. I'm always looking for innovative ways to showcase our technology and push the boundaries of what's possible in web development. Today, I am so excited to announce my latest experiment: an AI-generated podcast about HydePHP, created using the cutting-edge &lt;a href="https://notebooklm.google/" rel="noopener noreferrer"&gt;NotebookLM&lt;/a&gt; research assistant technology by Google.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Power of AI Meets Static Site Generation
&lt;/h3&gt;

&lt;p&gt;When I first encountered NotebookLM's AI podcast feature, I was completely blown away by its capabilities, and could not believe the demo I heard was made by AI. I just had to try it out for myself to see if it really was as good at it seems. And oh, it was.&lt;/p&gt;

&lt;p&gt;The result? A unique, informative, and entirely AI-generated podcast that dives deep into the world of HydePHP, and that I just had to get up online for more people to hear. So that's what I did! A short evening later, we had a really cool podcast player live on the website. I'm really happy with it, and hope you will enjoy it too!&lt;/p&gt;

&lt;h3&gt;
  
  
  Listening to the Future
&lt;/h3&gt;

&lt;p&gt;We're excited to share this AI-generated podcast with you. Head over to our &lt;a href="https://hydephp.com/showcase/podcast" rel="noopener noreferrer"&gt;showcase page&lt;/a&gt; to listen and experience the future of content creation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hydephp.com/showcase/podcast" rel="noopener noreferrer"&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%2Fdlwogx1g49mcso3lalxx.png" alt="Player preview" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What You'll Hear
&lt;/h3&gt;

&lt;p&gt;In this AI-generated podcast, you'll discover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An introduction to HydePHP and its core concepts&lt;/li&gt;
&lt;li&gt;Key features that set HydePHP apart from other static site generators&lt;/li&gt;
&lt;li&gt;The benefits of using HydePHP for your web projects&lt;/li&gt;
&lt;li&gt;Real-world use cases and applications&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Technology Behind the Magic
&lt;/h3&gt;

&lt;p&gt;This podcast was created using NotebookLM, an advanced AI project by Google. &lt;a href="https://hydephp.com/showcase/podcast" rel="noopener noreferrer"&gt;Live on our website&lt;/a&gt; is a podcast player I designed together with Claude Sonnet based on the amazing library &lt;a href="https://shikwasa.js.org/" rel="noopener noreferrer"&gt;Shikwasa&lt;/a&gt;, a sleek and feature-rich audio player designed specifically for podcasts. We also added a really nice live transcript feature. The transcript was generated by another AI, and proofed by me.&lt;/p&gt;

&lt;h3&gt;
  
  
  More Than Just a Gimmick
&lt;/h3&gt;

&lt;p&gt;While the concept of an AI-generated podcast might seem like a novelty, we see it as a glimpse into the future of content creation and web development. By combining AI-generated content with our static site generator, we're exploring new ways to create engaging, informative websites with minimal effort, but with maximum impact for the humans that use them.&lt;/p&gt;

&lt;p&gt;Additionally, this shows a great new way to retain information. Instead of just summarizing your research notes, you'll hear an engaging conversation by a dynamic duo that truly is memorable. Hearing this podcast made me excited to try HydePHP, and I'm the one who created it!&lt;/p&gt;

&lt;h3&gt;
  
  
  Try It Yourself
&lt;/h3&gt;

&lt;p&gt;Inspired by our AI podcast experiment? Why not try creating your own AI-powered static site with HydePHP? Our platform is designed to be flexible and adaptable, making it the perfect canvas for your creative experiments.&lt;/p&gt;

&lt;p&gt;Get started with HydePHP today and see where your imagination takes you! HydePHP is the elegant and powerful static site generator with the simplicity of Markdown and the power of Laravel. Learn more at &lt;a href="https://hydephp.com/" rel="noopener noreferrer"&gt;HydePHP.com&lt;/a&gt; and on our &lt;a href="https://github.com/hydephp/hyde" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Join the Conversation
&lt;/h3&gt;

&lt;p&gt;We'd love to hear your thoughts on our AI-generated podcast. Did you find it informative? Entertaining? Maybe a bit of both? Share your feedback with us on &lt;a href="https://twitter.com/HydeFramework" rel="noopener noreferrer"&gt;Twitter/X&lt;/a&gt; or in our &lt;a href="https://github.com/hydephp/hyde/discussions" rel="noopener noreferrer"&gt;GitHub discussions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At HydePHP, we're not just building websites – we're shaping the future of web development, one innovative feature at a time.&lt;/p&gt;




&lt;p&gt;Ready to dive into the world of HydePHP? &lt;a href="https://hydephp.com/docs/1.x/quickstart" rel="noopener noreferrer"&gt;Get started now&lt;/a&gt; and join us on this exciting journey!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;AI Usage Disclosure:&lt;/strong&gt; In addition to the generated podcast being generated by Artificial Intelligence, this blog post was initially drafted by Claude Sonnet, and then proofed and rewritten by &lt;a href="https://x.com/CodeWithCaen" rel="noopener noreferrer"&gt;Caen&lt;/a&gt;, creator of HydePHP.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>news</category>
      <category>ai</category>
      <category>podcast</category>
      <category>hydephp</category>
    </item>
  </channel>
</rss>
