<?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: Ahmad Akkilah</title>
    <description>The latest articles on DEV Community by Ahmad Akkilah (@akkilah).</description>
    <link>https://dev.to/akkilah</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%2F1070995%2F3d7bcf19-3854-435c-a1bf-a4296e63b005.jpeg</url>
      <title>DEV Community: Ahmad Akkilah</title>
      <link>https://dev.to/akkilah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akkilah"/>
    <language>en</language>
    <item>
      <title>KM Deployment - intro</title>
      <dc:creator>Ahmad Akkilah</dc:creator>
      <pubDate>Sun, 23 Nov 2025 10:56:18 +0000</pubDate>
      <link>https://dev.to/akkilah/km-deployment-intro-52ap</link>
      <guid>https://dev.to/akkilah/km-deployment-intro-52ap</guid>
      <description>&lt;p&gt;First, let me explain this clearly:&lt;br&gt;
Verint KM is part of a larger application called Channel Automation. Here, we will focus only on how to deploy KM, not the entire suite.&lt;/p&gt;

&lt;p&gt;We will also be deploying KM in a High Availability (HA) setup. The architecture we are aiming for is as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rzx5dbb94kyfm7ms7yb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rzx5dbb94kyfm7ms7yb.jpg" alt=" " width="800" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;as let point some of the flows of this design&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;We do not currently have High Availability (HA) for the database. If you want to implement HA, I recommend using an active-active synchronized database and configuring a DNS name that KM can use to connect to the database.&lt;br&gt;
This is important because performing a manual switchover for KM in any other way is difficult and can cause a lot of trouble.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;According to the documentation, I’m supposed to provide both the external and internal load balancer details. I’m not planning to set that up right now to keep the work simpler, but if this project gets extended, I may consider doing it later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In a which over the user need to change the link &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Verint KM - Deployment Series</title>
      <dc:creator>Ahmad Akkilah</dc:creator>
      <pubDate>Sun, 23 Nov 2025 10:24:18 +0000</pubDate>
      <link>https://dev.to/akkilah/verint-km-deployment-series-ii4</link>
      <guid>https://dev.to/akkilah/verint-km-deployment-series-ii4</guid>
      <description>&lt;p&gt;This is a the index page of my serious of explaining how to deploy Verint KM into your own server&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/akkilah/km-deployment-intro-52ap"&gt;km deployment intro&lt;/a&gt;&lt;/p&gt;

</description>
      <category>verint</category>
      <category>knowledgemanagement</category>
      <category>systemengineering</category>
    </item>
    <item>
      <title>How to Implement Role-Based Access with Supabase</title>
      <dc:creator>Ahmad Akkilah</dc:creator>
      <pubDate>Sun, 21 May 2023 15:15:12 +0000</pubDate>
      <link>https://dev.to/akkilah/how-to-implement-role-based-access-with-supabase-3a2</link>
      <guid>https://dev.to/akkilah/how-to-implement-role-based-access-with-supabase-3a2</guid>
      <description>&lt;h2&gt;
  
  
  The Setup:
&lt;/h2&gt;

&lt;p&gt;Before discussing the role-based aspect, let me provide an overview of the project setup. Initially, my objective was to develop an API middleware between the frontend and backend components. The main idea behind this approach was to enhance flexibility and simplify the process of migrating between different services. However, upon reflection, I must admit that I made a mistake. The API middleware I created turned out to be nothing more than a wrapper for the Supabase JavaScript SDK. If I were to rewrite it, I would opt for a solution like Prisma, which would have significantly streamlined the migration process. Nevertheless, life is a constant learning experience. Now, let me provide you with a high-level overview of the architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fomswkg654n6k653b8r3m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fomswkg654n6k653b8r3m.png" alt="high-level overview of the architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication:
&lt;/h2&gt;

&lt;p&gt;One of the initial challenges I encountered was obtaining a JWT token for the client (customer) to be passed with the API requests. I came across several online tutorials, but most of them were either outdated or provided incorrect information. After research, I found that the correct method for obtaining the token using Supabase is as follows:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;public&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;auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;autoRefreshToken&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;persistSession&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;detectSessionInUrl&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="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;global&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;supabase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;supabaseUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;supabaseKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;All other suggestions I found online, such as &lt;code&gt;supabase.auth.setSession()&lt;/code&gt; or &lt;code&gt;const { user, error } = supabase.auth.setAuth(access_token)&lt;/code&gt;, were not functioning. if it work for you I would like to know .&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Role-Based System:
&lt;/h2&gt;

&lt;p&gt;By default, Supabase provides three types of users: server_role, which bypasses low-level security RLS (Row-Level Security); anon, representing anonymous users; and authenticated, referring to users who are authenticated.&lt;/p&gt;

&lt;p&gt;Supabase does not currently have built-in support for role-based access as of May 21, 2023. However, they are actively working on implementing it in the future. In the meantime, you can leverage the functionality provided by the &lt;a href="https://github.com/supabase-community/supabase-custom-claims" rel="noopener noreferrer"&gt;supabase-custom-claims&lt;/a&gt; library. I have personally found this library effective and have successfully integrated it into my system using the SQL functions it offers.&lt;/p&gt;

&lt;p&gt;The supabase-custom-claims library offers the following benefits for role-based access implementation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ease of understanding: It involves creating PostgreSQL functions that can be deleted at any time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Utilizes a special colume row_app_meta_data in auth.user table which is designed for additional information by Supabase: This reduces the likelihood of future issues compared to modifying database privileges, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  To use this library, follow these steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to the following link: &lt;a href="https://github.com/supabase-community/supabase-custom-claims/blob/main/install.sql" rel="noopener noreferrer"&gt;Install.sql&lt;/a&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy and paste the SQL script into your Supabase SQL editor and execute it (the script should run successfully).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Upon executing the script, you will create 6 Supabase functions, which can be found under "Database" -&amp;gt; "Function".&lt;/p&gt;

&lt;p&gt;The six SQL functions provided by the library are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;get_my_claims&lt;/li&gt;
&lt;li&gt;get_my_claim&lt;/li&gt;
&lt;li&gt;get_claims&lt;/li&gt;
&lt;li&gt;set_claim&lt;/li&gt;
&lt;li&gt;delete_claim&lt;/li&gt;
&lt;li&gt;is_claims_admin&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For our use case, the most important function is &lt;code&gt;set_claim&lt;/code&gt;.To use it, execute the following SQL statement in the Supabase SQL editor:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

set_claim(uid uuid, claim text, value jsonb);


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;uid&lt;/strong&gt;: Provide the user UUID to whom you want to assign the role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;claim&lt;/strong&gt;: Set it as 'userrole'.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;value&lt;/strong&gt;: Specify the role you want to assign.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

set_claim('03acaa13-7989-45c1-8dfb-6eeb7cf0b92e', 'userrole', '"webadmin"');


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Applying the Role-Based System:
&lt;/h3&gt;

&lt;p&gt;By default, Supabase provides three types of users: server_role, which bypasses low-level security RLS (Row-Level Security); anon, representing anonymous users; and authenticated, referring to users who are authenticated.&lt;/p&gt;

&lt;p&gt;If you want to implement role-based access in your system, Supabase does not yet provide built-in functionality for that as of May 21, 2023. However, they appear to be working towards implementing it soon. In the meantime, you can utilize a method I found effective and implemented in my system using the 4vsql function provided by the supabase-custom-claims library.&lt;/p&gt;

&lt;p&gt;The supabase-custom-claims library offers the following benefits for role-based access implementation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ease of understanding: It involves creating PostgreSQL functions that can be deleted at any time.&lt;/li&gt;
&lt;li&gt;Utilizes a special column &lt;code&gt;row_app_meta_data&lt;/code&gt; which is designed for additional information by Supabase: This reduces the likelihood of future issues compared to modifying database privileges, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To use this library, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the following link: &lt;a href="https://github.com/supabase-community/supabase-custom-claims/blob/main/install.sql" rel="noopener noreferrer"&gt;https://github.com/supabase-community/supabase-custom-claims/blob/main/install.sql&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Copy and paste the SQL script into your Supabase SQL editor and execute it (the script should run successfully).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Upon executing the script, you will create 6 Supabase functions, which can be found under "Database" -&amp;gt; "Function".&lt;/p&gt;

&lt;p&gt;The six SQL functions provided by the library are:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get_my_claims
get_my_claim
get_claims
set_claim
delete_claim
is_claims_admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;For our use case, the most important function is &lt;code&gt;set_claim&lt;/code&gt;.To use it, execute the following SQL statement in the Supabase SQL editor:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;set_claim(uid uuid, claim text, value jsonb);&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;uid&lt;/strong&gt;: Provide the user UUID to whom you want to assign the role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;claim&lt;/strong&gt;: Set it as 'userrole'.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;value&lt;/strong&gt;: Specify the role you want to assign.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;select set_claim('72e699aa-d50c-4ee3-9eb6-e29c169b5eff', 'userrole', '"webadmin"');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can add any role you want to check for later in RLS.&lt;/p&gt;

&lt;h2&gt;
  
  
  let's see how to check for the role in RLS.
&lt;/h2&gt;

&lt;p&gt;In the Supabase UI:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fsw3j2sq50e7p3g985zus.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fsw3j2sq50e7p3g985zus.jpg" alt="In the Supabase UI adding RLS Role"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Policy name: Choose any name.&lt;/li&gt;
&lt;li&gt;Target roles: Set it as 'authenticated'.&lt;/li&gt;
&lt;li&gt;USING expression: &lt;code&gt;get_my_claim('userrole') = '"webadmin"'&lt;/code&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note the double quotes before the single quote; they are important.&lt;/strong&gt;&lt;br&gt;
    WITH CHECK expression: &lt;code&gt;get_my_claim('userrole') = '"webadmin"'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With this setup, the system will check for the role, and if it evaluates to true, it will allow access; otherwise, it will reject it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Exploring the Advantages and Challenges of Linux: A Personal Reflection</title>
      <dc:creator>Ahmad Akkilah</dc:creator>
      <pubDate>Mon, 08 May 2023 08:32:29 +0000</pubDate>
      <link>https://dev.to/akkilah/exploring-the-advantages-and-challenges-of-linux-a-personal-reflection-1oe9</link>
      <guid>https://dev.to/akkilah/exploring-the-advantages-and-challenges-of-linux-a-personal-reflection-1oe9</guid>
      <description>&lt;p&gt;Firstly, I would like to clarify that this piece is not an attempt to persuade you to switch to Linux. Rather, it is a personal reflection where I aim to explore the advantages and disadvantages of using Linux, evaluate my own experiences, and determine whether it is worthwhile for me to continue down this path or consider other options moving forward.&lt;/p&gt;

&lt;p&gt;I have intermittently used Linux for a significant period, both for personal experimentation and as a server or personal desktop. However, I have often questioned whether my attraction to Linux is simply due to my inclination towards tinkering, or if there are indeed tangible benefits to using it.&lt;/p&gt;

&lt;p&gt;I must admit that my journey with Linux has been challenging, as it is not the most user-friendly operating system out there. However, I can confidently say that the difficulties I faced have taught me a great deal. Every obstacle I encountered provided a unique opportunity for me to learn and deepen my understanding of how operating systems work. I am certain that if I had stuck with Windows, I would not have had the chance to acquire the same level of knowledge and experience that I have gained through my use of Linux.&lt;/p&gt;

&lt;p&gt;On the other hand, I must also acknowledge that Linux has posed challenges for me in professional settings. There have been instances where I needed to complete tasks for my boss, only to be faced with a seemingly insurmountable hurdle that left me feeling frustrated and embarrassed. However, with time, these challenges have become easier to overcome. That said, if it were not for my supportive teammates, I would likely have given up on the idea of making Linux my daily driver at work.&lt;/p&gt;

&lt;p&gt;As such, I am currently evaluating whether or not Linux provides sufficient value for my needs, and identifying cases where other operating systems may be a more optimal choice. Ultimately, the decision of when to use Linux versus other options is dependent on individual preferences and circumstances. For instance, if one works in a field such as graphic design, professional editing, or gaming, it may be more practical to use Windows instead of Linux, as the latter may not yet be suitable for these types of applications.&lt;/p&gt;

&lt;p&gt;The first question that I need to address is the motivation behind my use of Linux. Am I using it solely for personal reasons, to appear "cool," or to improve my job performance? Or, am I using it due to the benefits of security, open-source options, and customization? Alternatively, is it a combination of these factors? These are important questions to consider, as I find myself questioning the reasoning behind my use of Linux.&lt;/p&gt;

&lt;p&gt;When I find myself in a dilemma, I often try to establish a set of rules to clarify my decision-making process. This approach helps me address most of my problems systematically. In the case of software decisions,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I tend to favor simplicity over complexity.&lt;/li&gt;
&lt;li&gt;I also consider the reputation of the software's creators and their respect for their users. For instance, I avoid using Macs due to Their disrespect to the user &lt;/li&gt;
&lt;li&gt;I prefer using free software that offers paid support, such as pfSense and Red Hat.&lt;/li&gt;
&lt;li&gt;I prefer open-source software but remain open to using closed-source software if it offers better features or functionality.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While I still appreciate Linux and wish to continue using it, I'm looking for a different approach from my previous experience. Currently, I'm using Ubuntu as my main driver , but I'm exploring new ways to utilize Linux to address my requirements. Rather than simply replacing Windows, I want to use Linux to enhance my organizational abilities, maintain a record of my activities, and automate my tasks. I aspire to build Linux the way Arch users do, starting with Debian as it's better suited for professional work and Im not concern with cutting edge . Then, I can tailor the OS to my preferences. By documenting my installations and automating tasks whenever feasible, I believe the benefits of using Linux outweigh the challenges or learning curve. &lt;/p&gt;

&lt;p&gt;However, if the approach I mentioned doesn't suit your needs, using Mint as a drop-in replacement for Windows might be a good option. it will reduce you barrier to entry, give your customization options, eliminates the need to relearn the system every few years and prevents unnecessary bloat on your system.&lt;/p&gt;

&lt;p&gt;Linux users must understand that most Linux distributions are similar, with different themes and some technical differences in packages and software. For new users, it's important to know that transitioning from one distribution to another, such as from Ubuntu to Mint or PopOS, can be relatively easy. While there may be some differences in customization and ease of use with certain distributions, most packages can be installed, uninstalled, or configured across different distributions. Ubuntu, for example, has a lot of customization made by the company and it has its twist, but it is still possible to achieve similar configurations with other distributions.&lt;/p&gt;

&lt;p&gt;If you have issues with proprietary software, tracking, or the fact that Windows changes the way things are done without reason every few years, then switching to Linux with Mint or Ubuntu might be a better option for you. Linux distributions are known for being more customizable and transparent, with many free and open-source software options available. Additionally, Linux is generally considered more secure and private than Windows, with less tracking of user data.&lt;/p&gt;

&lt;p&gt;Additionally, I strongly believe in avoiding bloated software and valuing simplicity. I find that simplicity not only makes things easier to use but also provides a better understanding of what's happening on my system. By avoiding unnecessary software and keeping things streamlined, I can better manage and maintain my system.&lt;/p&gt;

&lt;p&gt;So I guess my conclusion is that I will still use Linux, but the Arch way. This means a non-bloated system, deleting unnecessary components, and trying to build automation to see how things will work, insha'Allah.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
