<?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: Daniel</title>
    <description>The latest articles on DEV Community by Daniel (@dannyslee1996).</description>
    <link>https://dev.to/dannyslee1996</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%2F3736295%2Fc41729c2-867b-4a2f-8872-aefd4f417e5c.png</url>
      <title>DEV Community: Daniel</title>
      <link>https://dev.to/dannyslee1996</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dannyslee1996"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 23 Aug 2026 03:12:31 +0000</pubDate>
      <link>https://dev.to/dannyslee1996/-550e</link>
      <guid>https://dev.to/dannyslee1996/-550e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/pramod_boda/recommended-folder-structure-for-react-2025-48mc" class="crayons-story__hidden-navigation-link"&gt;Recommended Industry-Standard React.js Folder Structure&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/pramod_boda" class="crayons-avatar  crayons-avatar--l  "&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2564856%2Fbecded9b-ab48-4d36-be82-5b37d261696e.jpg" alt="pramod_boda profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/pramod_boda" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Pramod Boda
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Pramod Boda
                
                
              
              &lt;div id="story-author-preview-content-2291264" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/pramod_boda" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2564856%2Fbecded9b-ab48-4d36-be82-5b37d261696e.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Pramod Boda&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/pramod_boda/recommended-folder-structure-for-react-2025-48mc" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 21 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/pramod_boda/recommended-folder-structure-for-react-2025-48mc" id="article-link-2291264"&gt;
          Recommended Industry-Standard React.js Folder Structure
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/reactjsdevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;reactjsdevelopment&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/folderstructure"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;folderstructure&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/pramod_boda/recommended-folder-structure-for-react-2025-48mc" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;270&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/pramod_boda/recommended-folder-structure-for-react-2025-48mc#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              22&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Fixing "g++ Not Found" When Debugging Rails in RubyMine on Fedora</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Mon, 17 Aug 2026 03:10:57 +0000</pubDate>
      <link>https://dev.to/dannyslee1996/fixing-g-not-found-when-debugging-rails-in-rubymine-on-fedora-2nl2</link>
      <guid>https://dev.to/dannyslee1996/fixing-g-not-found-when-debugging-rails-in-rubymine-on-fedora-2nl2</guid>
      <description>&lt;h2&gt;
  
  
  Fixing "g++ Not Found" When Debugging Rails in RubyMine on Fedora
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; If clicking "Debug" in RubyMine on Fedora fails to install &lt;code&gt;debase&lt;/code&gt; because of a missing &lt;code&gt;g++&lt;/code&gt; compiler, the standard &lt;code&gt;@development-tools&lt;/code&gt; group might not be enough. Run &lt;code&gt;sudo dnf install gcc-c++ make redhat-rpm-config&lt;/code&gt; to get the explicit C++ compiler and tools Ruby needs to build native extensions.&lt;/p&gt;




&lt;p&gt;I was recently working on a Rails app on my Fedora machine and wanted to step through some code. I fired up RubyMine, set my breakpoints, and clicked the "Debug" button, fully expecting everything to just work. &lt;/p&gt;

&lt;p&gt;Instead, RubyMine tried to automatically install the &lt;code&gt;debase&lt;/code&gt; and &lt;code&gt;ruby-debug-ide&lt;/code&gt; gems—which it needs under the hood to hook into the Ruby process—and threw a massive wall of error text at me. &lt;/p&gt;

&lt;p&gt;The core of the failure looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Building native extensions. This could take a &lt;span class="k"&gt;while&lt;/span&gt;...
ERROR:  Error installing debase-3.0.17.gem:
    ERROR: Failed to build gem native extension.
...
/path/to/extconf_common.rb:80:in &lt;span class="s1"&gt;'Kernel#`'&lt;/span&gt;: No such file or directory - g++ &lt;span class="o"&gt;(&lt;/span&gt;Errno::ENOENT&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My system was essentially complaining that it couldn't find &lt;code&gt;g++&lt;/code&gt;, the C++ compiler. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Initial (Failed) Attempt
&lt;/h2&gt;

&lt;p&gt;My first thought was, &lt;em&gt;"Oh, I must have forgotten to install the base build tools on this machine."&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Since I'm on Fedora, I reached for the standard DNF command to pull in the development group:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install&lt;/span&gt; @development-tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(Note: If you're on older versions of Fedora, you might be used to &lt;code&gt;dnf groupinstall "Development Tools"&lt;/code&gt;, but DNF5 uses the &lt;code&gt;@&lt;/code&gt; syntax or space-separated &lt;code&gt;group install&lt;/code&gt;).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It downloaded and installed a bunch of packages. I felt confident, went back to RubyMine, clicked "Debug" again, and... got the exact same &lt;code&gt;No such file or directory - g++&lt;/code&gt; error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Didn't That Work?
&lt;/h2&gt;

&lt;p&gt;When you install Ruby gems that contain native C or C++ extensions (like &lt;code&gt;debase&lt;/code&gt;), Ruby doesn't just download a pre-built binary. It actually compiles the raw source code down to machine code directly on your machine so it runs as fast as possible. &lt;/p&gt;

&lt;p&gt;While the &lt;code&gt;@development-tools&lt;/code&gt; group pulls in a ton of great utilities like &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt;, and standard &lt;code&gt;gcc&lt;/code&gt; (for C code), it doesn't always explicitly guarantee that the C++ compiler (&lt;code&gt;g++&lt;/code&gt;) and Red Hat-specific RPM configuration headers are placed right where Ruby's &lt;code&gt;extconf.rb&lt;/code&gt; script is looking for them on a fresh environment. &lt;/p&gt;

&lt;p&gt;Without &lt;code&gt;g++&lt;/code&gt; explicitly available in the &lt;code&gt;PATH&lt;/code&gt;, the compilation halts immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Actual Fix
&lt;/h2&gt;

&lt;p&gt;To fix this, I needed to bypass the generic group install and specifically target the C++ toolchain and the Red Hat configuration files that native Ruby extensions rely on. &lt;/p&gt;

&lt;p&gt;I ran this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;gcc-c++ make redhat-rpm-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To verify it worked, I double-checked that my shell could now see the compiler:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
which g++
# Output: /usr/bin/g++
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>fedora</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Fixing Low USB-C Audio on Fedora Linux: My Battle with the Razer Leviathan</title>
      <dc:creator>Daniel</dc:creator>
      <pubDate>Sun, 16 Aug 2026 19:35:00 +0000</pubDate>
      <link>https://dev.to/dannyslee1996/fixing-low-usb-c-audio-on-fedora-linux-my-battle-with-the-razer-leviathan-1bie</link>
      <guid>https://dev.to/dannyslee1996/fixing-low-usb-c-audio-on-fedora-linux-my-battle-with-the-razer-leviathan-1bie</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; If you have a Razer Leviathan connected via USB-C on Linux and the volume is incredibly quiet even at 100%, PipeWire is likely crushing your ALSA hardware baseline on boot. Just paste this script into your terminal to automatically fix it every time you log in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Create the necessary directories&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.local/bin
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.config/autostart

&lt;span class="c"&gt;# 2. Write the volume-fixing script&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;' &amp;gt; ~/.local/bin/fix-razer.sh
#!/bin/bash
# Wait for PipeWire to finish initializing
sleep 3

# Dynamically find the Leviathan's ALSA card ID
CARD=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'/Leviathan/ {print $1}'&lt;/span&gt; /proc/asound/cards | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;

if [ -n "&lt;/span&gt;&lt;span class="nv"&gt;$CARD&lt;/span&gt;&lt;span class="sh"&gt;" ]; then
    # Find the exact name of the volume control (e.g., 'PCM' or 'Speaker')
    CTRL=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;amixer &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nv"&gt;$CARD&lt;/span&gt; scontrols | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s2"&gt;"'"&lt;/span&gt; &lt;span class="s1"&gt;'NR==1 {print $2}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
    # Max out the hardware baseline
    amixer -c &lt;/span&gt;&lt;span class="nv"&gt;$CARD&lt;/span&gt;&lt;span class="sh"&gt; sset "&lt;/span&gt;&lt;span class="nv"&gt;$CTRL&lt;/span&gt;&lt;span class="sh"&gt;" 100%
fi
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="c"&gt;# 3. Make the script executable&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x ~/.local/bin/fix-razer.sh

&lt;span class="c"&gt;# 4. Create the desktop autostart entry&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; ~/.config/autostart/razer-volume.desktop
[Desktop Entry]
Type=Application
Exec=&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.local/bin/fix-razer.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Fix Razer Volume
Comment=Max out Leviathan hardware volume on boot
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Struggle: New Hardware Meets Linux Audio
&lt;/h2&gt;

&lt;p&gt;I recently picked up a Razer Leviathan speaker and plugged it right into my Fedora Linux machine via USB-C. I expected it to just work. At first glance, it seemed perfectly integrated: pressing the physical volume buttons on the Leviathan actually moved the volume slider on my screen. &lt;/p&gt;

&lt;p&gt;But there was one massive problem: &lt;strong&gt;even with my system volume cranked to 100%, the audio was basically a whisper.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I knew the USB connection was passing a pristine digital signal, so it wasn't a degraded cable issue. Instead, I had stumbled into the classic Linux audio tug-of-war between low-level drivers and modern session managers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The First Clue: Uncovering the Double Volume Limit
&lt;/h2&gt;

&lt;p&gt;In Linux, there are often two volume limits happening at once when dealing with USB audio gear: a software limit (what you see on your desktop) and a hardware limit (controlled deep in the system). &lt;/p&gt;

&lt;p&gt;I opened my terminal and fired up &lt;code&gt;alsamixer&lt;/code&gt;, the low-level audio interface. Sure enough, when I selected the Razer Leviathan, I found a hidden volume slider sitting at the bottom. By pushing that slider to 100, the room-shaking volume instantly returned. My desktop slider and the speaker were finally synced.&lt;/p&gt;

&lt;p&gt;Problem solved, right? &lt;/p&gt;

&lt;p&gt;Not quite.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Amnesia Problem: Fighting Reboots and Sleep States
&lt;/h2&gt;

&lt;p&gt;Every time I restarted my Fedora machine, or even if the speaker just went to sleep and woke back up, the volume would plummet back to a whisper. It was infuriating. Linux was treating the speaker as a brand-new device every time it initialized, dropping the hardware floor back down to its ultra-quiet default.&lt;/p&gt;

&lt;p&gt;Here is a quick rundown of all the things I tried that &lt;strong&gt;completely failed&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;sudo alsactl store&lt;/code&gt;:&lt;/strong&gt; I tried saving the ALSA state permanently. It worked until a reboot, at which point modern Linux audio demons intervened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing rigid &lt;code&gt;udev&lt;/code&gt; rules:&lt;/strong&gt; I grabbed the vendor and product ID (&lt;code&gt;1532:054a&lt;/code&gt;) and wrote a strict kernel rule to force the ALSA volume to 100% the millisecond the device reconnected. But it still got steamrolled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The PipeWire Soft-Mixer Hack:&lt;/strong&gt; I learned that WirePlumber (PipeWire's session manager) was loading &lt;em&gt;after&lt;/em&gt; my &lt;code&gt;udev&lt;/code&gt; rules, misinterpreting the Leviathan's hardware volume curve, and aggressively crushing the sound. I wrote a custom &lt;code&gt;wireplumber.conf.d&lt;/code&gt; rule to force a "soft-mixer" and ignore hardware decibel limits. That severed the connection entirely, locking the speaker at its low boot volume permanently.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Winning Solution: The Delayed Autostart Script
&lt;/h2&gt;

&lt;p&gt;The core issue was a timing conflict. PipeWire needed to finish booting up and applying its broken hardware limits &lt;em&gt;before&lt;/em&gt; I could safely override them.&lt;/p&gt;

&lt;p&gt;I realized I needed a script that could dynamically find the speaker, identify its ALSA control name, and push it to 100%—but it had to run automatically, slightly delayed, every time I logged in.&lt;/p&gt;

&lt;p&gt;That's where the TL;DR script at the top of this post comes in. &lt;/p&gt;

&lt;p&gt;It drops a tiny bash script (&lt;code&gt;fix-razer.sh&lt;/code&gt;) into your &lt;code&gt;~/.local/bin/&lt;/code&gt; folder. The magic is in the &lt;code&gt;sleep 3&lt;/code&gt; command at the start, which gives PipeWire enough time to completely initialize and settle. Then, the script uses &lt;code&gt;awk&lt;/code&gt; to dynamically hunt down the Razer Leviathan's current USB card ID, finds the correct volume channel name, and uses &lt;code&gt;amixer&lt;/code&gt; to force the hardware baseline to 100%. &lt;/p&gt;

&lt;p&gt;Finally, it creates a &lt;code&gt;.desktop&lt;/code&gt; autostart entry so the GNOME/desktop environment triggers the script silently in the background right after login.&lt;/p&gt;

&lt;p&gt;No more manual terminal tweaking. No more whisper-quiet YouTube videos. Just booming sound every time I boot up Fedora.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>fedora</category>
      <category>audio</category>
      <category>bash</category>
    </item>
  </channel>
</rss>
