<?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: Jonatan Jansson</title>
    <description>The latest articles on DEV Community by Jonatan Jansson (@dotmavriq).</description>
    <link>https://dev.to/dotmavriq</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F348033%2F753f2df0-27f6-436f-865d-0ea61957bbfc.png</url>
      <title>DEV Community: Jonatan Jansson</title>
      <link>https://dev.to/dotmavriq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dotmavriq"/>
    <language>en</language>
    <item>
      <title>On the Precarious Nature of Coding Jobs in 2025</title>
      <dc:creator>Jonatan Jansson</dc:creator>
      <pubDate>Thu, 27 Mar 2025 14:45:44 +0000</pubDate>
      <link>https://dev.to/dotmavriq/on-the-precarious-nature-of-coding-jobs-in-2025-47hn</link>
      <guid>https://dev.to/dotmavriq/on-the-precarious-nature-of-coding-jobs-in-2025-47hn</guid>
      <description>&lt;h2&gt;
  
  
  On the Precarious Nature of Coding Jobs in 2025
&lt;/h2&gt;

&lt;p&gt;In the past few months, I decided it was time to try my wings on the job market again. Ideally, I’ve been looking for a hybrid role somewhere around Marquês de Pombal, a spot in Cascais, or just an office in Lisbon where I don’t lose two hours every day commuting (or more—Portugal’s public transport system had over 110 strike days in 2023 alone. It’s a coin toss whether your train shows up on time, or at all).&lt;/p&gt;

&lt;p&gt;Things started promising. I got fairly deep into one application process—third stage in, solid rapport, good vibes—then, radio silence. Ghosted for weeks. Eventually, I found out they went with someone else. And look, it doesn’t intimidate me. These things happen. But it was the first time I truly felt like I had a gig in the bag, only to have it snatched away at the last minute. Apparently, I’m not alone. Others have told me the exact same story, down to the eerie vanishing act right after the final interview.&lt;/p&gt;

&lt;p&gt;Then came another opportunity, or what I thought was one. A company that basically acts like a Craigslist for dev jobs—they broker out developers to other companies and skim your pay off the top. But you don’t even get the benefits or stability of a traditional agency in return.&lt;/p&gt;

&lt;p&gt;Their candidate onboarding? A stale HTML form with dry questions. Forty minutes of form-filling later—silence. Then, eventually: “You haven’t sent in a video.”&lt;/p&gt;

&lt;p&gt;A video?&lt;/p&gt;

&lt;p&gt;No interview? I’m supposed to record myself for a WordPress Developer gig?&lt;/p&gt;

&lt;p&gt;I talked myself into it—don’t be too prude, I thought. Maybe it’s good to see how things are changing, and maybe, just maybe, it’ll lead to something useful.&lt;/p&gt;

&lt;p&gt;Then came some pop-up from something called Hireflix. An HR rep from the company read off an A4 sheet for four minutes, then some stuff popped up asking me to start my mic and camera.&lt;/p&gt;

&lt;p&gt;It didn’t work.&lt;/p&gt;

&lt;p&gt;Okay—stock Chrome on a Linux laptop. Fine. Could be a driver issue. Let’s try my partner’s IdeaPad with Windows 11 and stock Chrome.&lt;/p&gt;

&lt;p&gt;Still didn’t work.&lt;/p&gt;

&lt;p&gt;So I caved and used my phone.&lt;/p&gt;

&lt;p&gt;Ten minutes, they said. But they didn’t mention the format.&lt;/p&gt;

&lt;p&gt;You get a question. You get 1 minute to read it. Then around 3 minutes to respond. Four times. You have no way to gauge what they’re actually looking for. No feedback, no interaction, just you, your webcam, and a timer.&lt;/p&gt;

&lt;p&gt;I’ve worked with WordPress for over a decade. I don’t walk around with a neat collection of “top 3 hardest projects” loaded in RAM. And even then, what do you put across in 3 minutes or less? &lt;/p&gt;

&lt;p&gt;You remember tight deadlines, rough clients, crashes, and how you fixed them—but do I have a story that slots perfectly into this rigid format? No. Not even when you’ve done this stuff for ten years straight. I gave it a shot, though, what else could I do?&lt;/p&gt;

&lt;p&gt;Weeks later, I get a no. Not surprised. I probably came off as too blunt, too visibly uncomfortable with being commodified like this.&lt;/p&gt;

&lt;p&gt;If this is the future of international tech hiring, it’s bleak.&lt;/p&gt;

&lt;p&gt;But there’s been light. Some far better offers have started to come in lately, and I believe I’ll land something soon.&lt;/p&gt;

&lt;p&gt;Still, 2025 feels different from 2024 in one significant way.&lt;/p&gt;

&lt;h3&gt;
  
  
  The &lt;strong&gt;AI slop&lt;/strong&gt; is &lt;strong&gt;everywhere&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;LinkedIn, Indeed, X Jobs—you name it. Job ads are full of broken links that lead to &lt;code&gt;https://You.you&lt;/code&gt; or &lt;code&gt;https://Store.you&lt;/code&gt;. Applications half-generated and never reviewed. I saw one that said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(Add the JS frameworks your company uses here)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…in a published ad. You’re asking for someone with an MIT degree and 18 years of experience in Erlang’s illegitimate cousin Gleam, but you can’t be bothered to clean up your bullet list?&lt;/p&gt;

&lt;p&gt;And while the tech world worries about junior devs who “can’t really code,” I think we need to apply that same critical eye to the people hiring us, too. I keep hearing horror stories of project briefs and onboarding documents that are clearly AI-generated—full of perfect grammar but completely incoherent logic—that somehow got past team leads and board members alike.&lt;/p&gt;

&lt;p&gt;On the funny-but-also-a-bit-tragic side of things: JIRA is now offering certifications to help get more users into their ecosystem. Their own onboarding prep points you to Trello. Yes, &lt;strong&gt;Trello&lt;/strong&gt;. You can’t make this stuff up.&lt;/p&gt;

&lt;p&gt;—&lt;/p&gt;

&lt;p&gt;I don’t mean to sound sardonic. I’ve worked in recruitment. I know how hard it is. I know most recruiters are doing their best. But something is fundamentally broken right now, and we need to talk about it—not in LinkedIn hustle culture platitudes, but in honest terms, with real stories from the ground.&lt;/p&gt;

&lt;p&gt;I’m sharing mine. Would love to hear yours.&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>devjournal</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Running Laravel 12 on WSL2 with PHP 8.2</title>
      <dc:creator>Jonatan Jansson</dc:creator>
      <pubDate>Wed, 26 Mar 2025 11:31:20 +0000</pubDate>
      <link>https://dev.to/dotmavriq/running-laravel-12-on-wsl2-with-php-82-k6g</link>
      <guid>https://dev.to/dotmavriq/running-laravel-12-on-wsl2-with-php-82-k6g</guid>
      <description>&lt;p&gt;Usually I sit on my &lt;strong&gt;SER6 PRO running Fedora 41&lt;/strong&gt;, and I love that — fast, clean, and full Linux. But I’ve had a stint of the cold lately and figured: why not cozy up in the living room with my partner for a day of Laravel?&lt;/p&gt;

&lt;p&gt;So I fired up &lt;strong&gt;WSL2 on her Lenovo IdeaPad 3 (Ryzen 5 5500U, 8GB RAM, Windows 11)&lt;/strong&gt; to get some work done on my Laravel-based aggregator project, &lt;strong&gt;T.E.A.L.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What followed was a mini side-quest of versioning and extension wrangling — here’s how I got &lt;strong&gt;Laravel 12&lt;/strong&gt; running on &lt;strong&gt;Ubuntu 22.04 via WSL2&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚨 Laravel 12 Requires PHP 8.2+
&lt;/h2&gt;

&lt;p&gt;By default, Ubuntu 22.04 ships with &lt;strong&gt;PHP 8.1&lt;/strong&gt;, which is not sufficient for Laravel 12. Composer will fail with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Cannot use laravel/laravel&lt;span class="s1"&gt;'s latest version v12.0.3 as it requires php ^8.2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔧 Step 1: Add the PHP 8.2 Repository
&lt;/h2&gt;

&lt;p&gt;We’ll use the widely trusted &lt;a href="https://deb.sury.org/" rel="noopener noreferrer"&gt;&lt;code&gt;ondrej/php&lt;/code&gt;&lt;/a&gt; PPA to install PHP 8.2:&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;add-apt-repository ppa:ondrej/php
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're on a locale that breaks &lt;code&gt;add-apt-repository&lt;/code&gt;, use:&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="nv"&gt;LC_ALL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C.UTF-8 &lt;span class="nb"&gt;sudo &lt;/span&gt;add-apt-repository ppa:ondrej/php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔧 Step 2: Install PHP 8.2 and Required Extensions
&lt;/h2&gt;

&lt;p&gt;Laravel needs a handful of extensions. Install them all in one go:&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;apt &lt;span class="nb"&gt;install &lt;/span&gt;php8.2 php8.2-cli php8.2-mbstring php8.2-xml php8.2-curl php8.2-mysql php8.2-zip php8.2-bcmath php8.2-tokenizer php8.2-common php8.2-readline php8.2-opcache unzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔄 Step 3: Set PHP 8.2 as the Default
&lt;/h2&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;update-alternatives &lt;span class="nt"&gt;--config&lt;/span&gt; php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose the option corresponding to &lt;code&gt;/usr/bin/php8.2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧩 Step 4: Enable Missing Extensions (like &lt;code&gt;curl&lt;/code&gt;)
&lt;/h2&gt;

&lt;p&gt;Even after installing &lt;code&gt;php8.2-curl&lt;/code&gt;, I noticed Composer still complained that the extension wasn’t enabled. Here's how to fix that:&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;phpenmod &lt;span class="nt"&gt;-v&lt;/span&gt; 8.2 curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then check it’s active:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php &lt;span class="nt"&gt;-m&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Composer should stop complaining about missing &lt;code&gt;curl&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Step 5: Create the Laravel Project
&lt;/h2&gt;

&lt;p&gt;Now you're ready to install Laravel:&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 laravel/laravel &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've already created the directory and it’s not empty, you can instead run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Access your app via &lt;code&gt;http://localhost:8000&lt;/code&gt; from your browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Summary
&lt;/h2&gt;

&lt;p&gt;Running Laravel 12 on WSL2 takes a bit of setup, but once PHP 8.2 is installed and extensions are enabled, it’s smooth sailing. Whether you’re on bare metal Fedora or cozy in WSL2 on a borrowed machine, this flow gets Laravel 12 up and running like a charm.&lt;/p&gt;

&lt;p&gt;Next up: actually building out T.E.A.L — a Laravel-powered aggregator that pulls and stores data from Steam, IMDb, and Goodreads.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>linux</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Fixing Bluetooth and Chrome Issues on Fedora 41 (Beelink SER6 PRO, Intel AX200)</title>
      <dc:creator>Jonatan Jansson</dc:creator>
      <pubDate>Wed, 19 Mar 2025 15:37:34 +0000</pubDate>
      <link>https://dev.to/dotmavriq/fixing-bluetooth-and-chrome-issues-on-fedora-41-beelink-ser6-pro-intel-ax200-15b5</link>
      <guid>https://dev.to/dotmavriq/fixing-bluetooth-and-chrome-issues-on-fedora-41-beelink-ser6-pro-intel-ax200-15b5</guid>
      <description>&lt;p&gt;So, I have been &lt;strong&gt;mainlining Fedora Workstation&lt;/strong&gt; for a couple of years now. My latest setup (which I bought before moving to Portugal!) is the &lt;strong&gt;Beelink SER6 PRO&lt;/strong&gt;, currently running &lt;strong&gt;Fedora 41&lt;/strong&gt; at the time of writing.  &lt;/p&gt;

&lt;p&gt;It was initially a bit too fussy for me to mess around with, so I started off with Ubuntu on it (with Regolith). But the more I used Ubuntu, the more I felt disenfranchised with it as a personal computing distro. Fedora, while not perfect, is stable, modern, and the closest thing to what I want in a Linux desktop.  &lt;/p&gt;

&lt;p&gt;I’ve been using Linux for &lt;strong&gt;15 years now&lt;/strong&gt;. Started off just before I turned 18 with an old 17-inch HP laptop that could barely run &lt;strong&gt;alpha builds of Minecraft&lt;/strong&gt; without crashing. I got tired of it, wiped Windows, and installed &lt;strong&gt;Ubuntu 10.04 LTS (Lucid Lynx)&lt;/strong&gt;. That was my entry point. Since then, I’ve gone through the usual distro-hopping phase, but Fedora has been my home for personal use for a while now.  &lt;/p&gt;

&lt;p&gt;Here's a quick look at my current setup:  &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jLff90mIXE0"&gt;
&lt;/iframe&gt;
  &lt;/p&gt;

&lt;p&gt;I might write an article about the &lt;strong&gt;Moonlander MK I&lt;/strong&gt; soon enough.  &lt;/p&gt;


&lt;h3&gt;
  
  
  So yeah, Fedora is a very nice distro.
&lt;/h3&gt;

&lt;p&gt;But no distro is perfect.  &lt;/p&gt;

&lt;p&gt;And I’m not sure why it has decided to act up as of late, but today it did—and it’s the &lt;strong&gt;second time&lt;/strong&gt; it has.  &lt;/p&gt;

&lt;p&gt;This morning, I sat down to get some work done, and &lt;strong&gt;two very important things&lt;/strong&gt; didn’t work:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Bluetooth was completely unresponsive.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Chrome refused to open due to a profile lock issue.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These weren’t minor annoyances. These were core components of my workflow. Here’s what happened and how I fixed them.  &lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;Fixing Bluetooth on the Beelink SER6 PRO (Intel AX200) on Fedora 41&lt;/strong&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;The Problem&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Bluetooth service was running&lt;/strong&gt;, but my adapter wasn’t detected in &lt;code&gt;bluetoothctl&lt;/code&gt;. Running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dmesg | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; bluetooth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;revealed this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bluetooth: hci0: command 0xfc05 tx timeout
Bluetooth: hci0: Reading Intel version command failed (-110)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This error suggests that the &lt;strong&gt;Intel AX200 Bluetooth firmware failed to load&lt;/strong&gt;, which is a known issue with some kernel versions and Intel chipsets. The system loads the driver (&lt;code&gt;btusb&lt;/code&gt;), but something in the initialization process fails.  &lt;/p&gt;

&lt;p&gt;This can be caused by:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;firmware bug&lt;/strong&gt; in the current Fedora kernel.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power management quirks&lt;/strong&gt;, where the system suspends Bluetooth and fails to wake it.
&lt;/li&gt;
&lt;li&gt;An issue with the &lt;strong&gt;&lt;code&gt;btusb&lt;/code&gt; kernel module&lt;/strong&gt;, requiring a reload.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Fix&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The easiest way to resolve this issue was to &lt;strong&gt;manually reload the &lt;code&gt;btusb&lt;/code&gt; module&lt;/strong&gt; and restart the Bluetooth service:&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;modprobe &lt;span class="nt"&gt;-r&lt;/span&gt; btusb
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe btusb
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart bluetooth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Immediately after running these commands, &lt;code&gt;bluetoothctl list&lt;/code&gt; showed my adapter again.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Making the Fix Permanent&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Since this happened &lt;strong&gt;twice&lt;/strong&gt;, I didn’t want to manually fix it every time my system booted. The best way to &lt;strong&gt;automate&lt;/strong&gt; the fix was by setting up a &lt;strong&gt;systemd service&lt;/strong&gt; to reload the module at startup.  &lt;/p&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Create a systemd service file:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/systemd/system/bluetooth-fix.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ &lt;strong&gt;Add the following content:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[Unit]&lt;/span&gt;
&lt;span class="py"&gt;Description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Fix Intel AX200 Bluetooth on Boot&lt;/span&gt;
&lt;span class="py"&gt;After&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;bluetooth.service&lt;/span&gt;
&lt;span class="py"&gt;Wants&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;bluetooth.service&lt;/span&gt;

&lt;span class="nn"&gt;[Service]&lt;/span&gt;
&lt;span class="py"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;oneshot&lt;/span&gt;
&lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/sbin/modprobe -r btusb&lt;/span&gt;
&lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/sbin/modprobe btusb&lt;/span&gt;
&lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/bin/systemctl restart bluetooth&lt;/span&gt;

&lt;span class="nn"&gt;[Install]&lt;/span&gt;
&lt;span class="py"&gt;WantedBy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3️⃣ &lt;strong&gt;Enable and start the service:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;bluetooth-fix.service
&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After this, Bluetooth started working on boot &lt;strong&gt;without any manual intervention&lt;/strong&gt;.  &lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Fixing Chrome’s Profile Lock Issue&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Problem&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When I tried to launch &lt;strong&gt;Google Chrome&lt;/strong&gt;, I got this error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The profile appears to be in use by another Google Chrome process on another computer. 
Chrome has locked the profile so that it doesn’t get corrupted.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This happens when Chrome &lt;strong&gt;doesn’t shut down properly&lt;/strong&gt; and leaves behind a &lt;strong&gt;profile lock file&lt;/strong&gt;. It thinks another process is using it, but there’s actually nothing running.  &lt;/p&gt;

&lt;p&gt;The likely causes:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome &lt;strong&gt;crashed&lt;/strong&gt; or was &lt;strong&gt;force closed&lt;/strong&gt; while running.
&lt;/li&gt;
&lt;li&gt;A previous session &lt;strong&gt;didn’t clean up the profile lock file&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Chrome &lt;strong&gt;was left running in the background&lt;/strong&gt; after closing.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Fix&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;First, I killed any lingering Chrome processes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-9&lt;/span&gt; chrome
pkill &lt;span class="nt"&gt;-9&lt;/span&gt; google-chrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, I &lt;strong&gt;removed the lock files manually&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ~/.config/google-chrome/SingletonLock
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ~/.config/google-chrome/Singleton&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, Chrome opened normally.  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Final Thoughts&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Fedora is &lt;strong&gt;a solid distro&lt;/strong&gt;, but like any system, it has its quirks. The &lt;strong&gt;Bluetooth issue&lt;/strong&gt; was a firmware-related bug that required a systemd fix, while the &lt;strong&gt;Chrome issue&lt;/strong&gt; was a profile lock left over from a previous session.  &lt;/p&gt;

&lt;p&gt;Both problems had simple enough solutions, but if they’re happening to you, hopefully, this guide saves you some time.  &lt;/p&gt;

</description>
      <category>fedora</category>
      <category>workplace</category>
      <category>linux</category>
      <category>opensource</category>
    </item>
    <item>
      <title>News on Fedora Linux 42 Beta</title>
      <dc:creator>Jonatan Jansson</dc:creator>
      <pubDate>Tue, 18 Mar 2025 23:39:03 +0000</pubDate>
      <link>https://dev.to/dotmavriq/news-on-fedora-linux-42-beta-5acp</link>
      <guid>https://dev.to/dotmavriq/news-on-fedora-linux-42-beta-5acp</guid>
      <description>&lt;p&gt;Fedora Linux 42 Beta just dropped, and I'm honestly super stoked! 🎉 &lt;/p&gt;

&lt;p&gt;As someone who daily-drives Fedora Workstation on my SER6 PRO, this release feels like exactly what I needed.&lt;/p&gt;

&lt;p&gt;What really grabbed my attention is the new "Reinstall Fedora" option in Anaconda. Finally, reinstalling Fedora won't feel like solving a puzzle. The new Web UI also looks slick—guided partitioning, simpler dual-boot setups, and overall smoother installations are a welcome improvement. Less hassle means more time actually using Fedora, and that's what I'm all about.&lt;/p&gt;

&lt;p&gt;I'm curious to check out the improved key management in DNF5. Cleaner management of repository keys sounds like something that'll make updates smoother overall.&lt;/p&gt;

&lt;p&gt;Wayland becoming the default for SDL apps on Fedora Workstation is also a big deal. It's a great step toward a smoother, modern desktop experience. I'm especially intrigued by the new GNOME well-being feature—managing screen time and keeping a balanced workflow is something we all could use a bit of help with.&lt;/p&gt;

&lt;p&gt;The Fedora COSMIC Spin sounds cool too, but the practical upgrades like Reinstall Fedora and Wayland-by-default really have me hyped.&lt;/p&gt;

&lt;p&gt;Fedora Linux 42 Beta is shaping up nicely. If you use Fedora or just love Linux in general, check this out, kick the tires, and let's help make this release rock solid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://fedoramagazine.org/announcing-fedora-linux-42-beta/" rel="noopener noreferrer"&gt;Fedora Magazine - Fedora 42 Beta announced!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fedora</category>
      <category>linux</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Something in the way</title>
      <dc:creator>Jonatan Jansson</dc:creator>
      <pubDate>Thu, 13 Mar 2025 15:23:51 +0000</pubDate>
      <link>https://dev.to/dotmavriq/something-in-the-way-48ci</link>
      <guid>https://dev.to/dotmavriq/something-in-the-way-48ci</guid>
      <description>&lt;p&gt;There’s a scene in The Batman—you know the one. Bruce, rain-soaked and brooding, watches Gotham unravel while Nirvana’s “Something in the Way” drones on. It’s a perfect metaphor for the way we feel about AI in software development right now.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Something’s coming. Something is already here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And honestly? It feels different this time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been around long enough to see programming “die” over and over again. Assembly killed machine code. C killed assembly. JavaScript and Python killed the need for memory management. Frameworks abstracted entire stacks. Low-code tools let non-devs do what once required a CS degree. Each time, programmers adapted, the industry expanded, and demand grew.&lt;/p&gt;

&lt;p&gt;But this time, it’s not just abstraction. It’s automation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rise of Vibe Coding
&lt;/h3&gt;

&lt;p&gt;AI-generated code isn’t new, but Large Language Models (LLMs) have made it so effortless that we’ve hit a breaking point. What was once a niche productivity boost is now something else entirely. We used to call it CHOP (Chat-Oriented Programming), but the internet has already given it a more fitting name: Vibe Coding.&lt;/p&gt;

&lt;p&gt;Why struggle with syntax when you can just… describe what you want?&lt;/p&gt;

&lt;p&gt;Vibe Coding means that non-programmers can build things that, a year ago, required skilled developers. It means that entire classes of programming work—CRUD apps, integrations, even bug fixing—are now something AI can handle in seconds. Sure, it’s messy, sure, it’s not perfect, but it doesn’t have to be.&lt;/p&gt;

&lt;p&gt;And that’s the part that makes people nervous.&lt;/p&gt;

&lt;p&gt;Because if AI can generate a working prototype in seconds, what happens to all the devs who spent years honing their skills to do the same thing?&lt;/p&gt;

&lt;h3&gt;
  
  
  The Changing Role of the Developer
&lt;/h3&gt;

&lt;p&gt;This is where the old “AI won’t replace programmers, programmers who use AI will” cliché comes in. But let’s be real: some programmers will absolutely get replaced.&lt;/p&gt;

&lt;p&gt;Not because AI is perfect, but because some companies don’t care about perfect. They care about fast, cheap, and good enough.&lt;/p&gt;

&lt;p&gt;But that’s not the whole picture.&lt;/p&gt;

&lt;p&gt;The reality is, not every company has the same priorities. There are startups running on fumes, agencies that need to pump out MVPs, and massive enterprises that optimize for stability over speed. AI is already disrupting parts of the industry where velocity is valued over craftsmanship—but in places where performance, security, and maintainability matter, human developers are still indispensable.&lt;/p&gt;

&lt;p&gt;The difference is where and how we bring value.&lt;/p&gt;

&lt;p&gt;If all you’re doing is churning out basic, repetitive code, yeah—you should be worried. But programming isn’t just about writing code. It never has been. It’s about understanding problems, designing architectures, making trade-offs, and knowing how to glue everything together into something that actually works.&lt;/p&gt;

&lt;p&gt;AI is just another tool. It’s an insanely powerful one, but it’s still just a tool. The best programmers will adapt—not by writing less code, but by focusing on better code, bigger problems, and smarter solutions.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
