<?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: Rouwel Ngacha</title>
    <description>The latest articles on DEV Community by Rouwel Ngacha (@rrouwelng).</description>
    <link>https://dev.to/rrouwelng</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%2F3924978%2F2d5c38e4-653e-4d1b-8628-91c93c7fd86c.png</url>
      <title>DEV Community: Rouwel Ngacha</title>
      <link>https://dev.to/rrouwelng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rrouwelng"/>
    <language>en</language>
    <item>
      <title>Getting Started with Django: From Zero to 70% in Record Time . Step 1 :Starting phase (For Linux this time)</title>
      <dc:creator>Rouwel Ngacha</dc:creator>
      <pubDate>Sat, 23 May 2026 20:05:31 +0000</pubDate>
      <link>https://dev.to/rrouwelng/getting-started-with-django-from-zero-to-70-in-record-time-step-1-starting-phase-for-linux-c4d</link>
      <guid>https://dev.to/rrouwelng/getting-started-with-django-from-zero-to-70-in-record-time-step-1-starting-phase-for-linux-c4d</guid>
      <description>&lt;p&gt;Quick disclaimer (the post below is meant to mirror the previous post but for the Linux operating system. Please try to implement these methods and if they do not work on your machine leave a comment and allow me to find a solution.)&lt;/p&gt;

&lt;p&gt;For this post, I would like to help anyone who is not familiar with Django to get somewhat of an understanding on how to use it to get from 0 to maybe 70% completion of a project in record time. &lt;br&gt;
The objective today is to learn how to start, after 2 posts you should be able to speedrun projects.&lt;/p&gt;

&lt;p&gt;First things first, you have to understand that there are multiple Python frameworks out there(Flask, FastAPI). The choice of which one to use is always up to you and the constraints on the project your working on.&lt;/p&gt;

&lt;p&gt;With that being said let's dive in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Ensure that you download Python&lt;/strong&gt;&lt;br&gt;
For my device I am using Windows Subsystem For Linux (for more information : &lt;a href="https://learn.microsoft.com/en-us/windows/wsl/install" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/windows/wsl/install&lt;/a&gt;) this allows me to run an Linux Ubuntu terminal on my machine.&lt;br&gt;
For the installation we will use apt (Advanced Package Tool) to install python3.&lt;br&gt;
1.&lt;code&gt;sudo apt update&lt;/code&gt;&lt;br&gt;
2.&lt;code&gt;sudo apt install python3&lt;/code&gt;&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%2Fzyk2zpd7h78afh0ia0if.png" 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%2Fzyk2zpd7h78afh0ia0if.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Ensure you have to have Django installed&lt;/strong&gt;&lt;br&gt;
To install Django we will be using pip(a python package installer) which means you should have Python downloaded and configured in your path.&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%2Fcgy3t608xfl189nmwyn0.png" 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%2Fcgy3t608xfl189nmwyn0.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Something else I would like to encourage is the use of a Python virtual environment. You may not be familiar with this concept but trust me - there is not better time to learn how to use it.&lt;br&gt;
The idea behind it is that, you install all your python packages while inside your project environment and as long as you initialize your environment all your project dependencies will work (eg Django, pillow). Sounds good? &lt;/p&gt;

&lt;p&gt;Considering that we are on Linux we will need to download the specific packages that we want to use (  eg venv) in order to get our virtual environments active. &lt;br&gt;
This is because unlike windows, downloading python3 does not come with the venv package already installed.&lt;br&gt;
This means that if you try to run &lt;code&gt;python3 -m venv MyProject&lt;/code&gt;&lt;br&gt;
you will be met by an error.&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%2F1a9691spd6n8dr3nguqs.png" 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%2F1a9691spd6n8dr3nguqs.png" alt="Creating a python environment" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for every individual package we want to use we will have to install it as we go along.&lt;br&gt;
1.&lt;code&gt;sudo apt install python3-venv&lt;/code&gt;&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%2Fn9ohban6z5mvvz7zjy8t.png" 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%2Fn9ohban6z5mvvz7zjy8t.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here we create and activate the project environment using&lt;br&gt;
&lt;code&gt;python3 -m venv Project&lt;/code&gt; and &lt;code&gt;source Project/bin/activate&lt;/code&gt;&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%2F9joaf7m4sah5ufwqp5af.png" 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%2F9joaf7m4sah5ufwqp5af.png" alt="Creating the virtual environment" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you are in your environment,  use pip to install Django.&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%2Fdeluipxjam4s9yfs6npe.png" 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%2Fdeluipxjam4s9yfs6npe.png" alt="Installing Django" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Creating a project&lt;/strong&gt;&lt;br&gt;
So to start a project the command is &lt;code&gt;django-admin startproject ProjectName&lt;/code&gt;&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%2Fj7jr9ua8fcpymkuhamkj.png" 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%2Fj7jr9ua8fcpymkuhamkj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you ran this command, it will create a folder where there are a few preconfigured python code files inside.&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%2Fur85oq34djlhkl2h777v.png" 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%2Fur85oq34djlhkl2h777v.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
(Pre-configured project files)&lt;/p&gt;

&lt;p&gt;Now that we have created a project, we will need to initialize a Django app while inside that folder. The command is &lt;br&gt;
&lt;code&gt;python3 manage.py startapp &amp;lt;name_of_your_app&amp;gt;&lt;/code&gt;&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%2F5xqyxcgx5yllcw8kg5mp.png" 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%2F5xqyxcgx5yllcw8kg5mp.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now once you open your IDE, you will realized that you have a few code files inside your NewProject folder. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Running the server&lt;/strong&gt;&lt;br&gt;
The final part of this post focuses on how to run the server. In later entries we will dive deeper and create a small-scale working example using all of Django's extensive features, but that is for later.&lt;/p&gt;

&lt;p&gt;To run the server use &lt;code&gt;python3 manage.py runserver&lt;/code&gt;. &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%2Fcrotukdu2pixjahneyve.png" 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%2Fcrotukdu2pixjahneyve.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So when you go to localhost at port 8000 you will find &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%2Fmgzoei0fhvzc8jevw2ve.png" 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%2Fmgzoei0fhvzc8jevw2ve.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there you have it! You have successfully installed Django, created a project, initialized an app, and got your development server running (on linux). &lt;br&gt;
While this may seem like a small set of steps, this is the foundation that every Django project is built on.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Getting Started with Django: From Zero to 70% in Record Time : Step 1</title>
      <dc:creator>Rouwel Ngacha</dc:creator>
      <pubDate>Thu, 21 May 2026 22:06:54 +0000</pubDate>
      <link>https://dev.to/rrouwelng/getting-started-with-django-from-zero-to-70-in-record-time-1fcb</link>
      <guid>https://dev.to/rrouwelng/getting-started-with-django-from-zero-to-70-in-record-time-1fcb</guid>
      <description>&lt;p&gt;For this post, I would like to help anyone who is not familiar with Django to get somewhat of an understanding on how to use it to get from 0 to maybe 70% completion of a project in record time.&lt;/p&gt;

&lt;p&gt;So first you have to understand that there are multiple Python frameworks out there(Flask, FastAPI). The choice of which one to use is always up to you and the constraints on the project your working on.&lt;/p&gt;

&lt;p&gt;With that being said let's dive in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Ensure you have to have Django installed&lt;/strong&gt;&lt;br&gt;
To install Django we will be using pip(a python package installer) which means you should have Python downloaded and configured in your path.&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%2Fminimeg83k0lwe9pzwpa.png" 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%2Fminimeg83k0lwe9pzwpa.png" alt="Creating a folder and checking if python is installed" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
(Creating a folder and checking if python is installed)&lt;/p&gt;

&lt;p&gt;Something else I would like to encourage is the use of a Python virtual environment. You may not be familiar with this concept but trust me - there is not better time to learn how to use it. &lt;/p&gt;

&lt;p&gt;The idea behind it is that, inside that environment you can install all you python packages while inside the environment and as long as you initialize your environment  all your project dependencies will be inside. Sounds good? &lt;br&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%2Fq3yuggh99imd70gbbc42.png" 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%2Fq3yuggh99imd70gbbc42.png" alt="Creating a python environment" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
(Creating a python environment)&lt;/p&gt;

&lt;p&gt;Now that you are in your environment,  use pip to install Django.&lt;br&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%2Ftmbjf992yuiuee60tgy6.png" 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%2Ftmbjf992yuiuee60tgy6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Creating a project&lt;/strong&gt;&lt;br&gt;
So to start a project the command is &lt;code&gt;django-admin startproject projectname&lt;/code&gt;&lt;br&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%2Fxosutvuugnahcdroku40.png" 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%2Fxosutvuugnahcdroku40.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you ran this command, it will create a folder where there are a few preconfigured python code files inside.&lt;br&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%2F8a1lrtvo1ytuc6wpyhmw.png" 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%2F8a1lrtvo1ytuc6wpyhmw.png" alt="Pre comfigured project files" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
(Pre-configured project files)&lt;/p&gt;

&lt;p&gt;Now that we have created a project, we will need to initialize a Django app while inside that folder. The command is python manage.py startapp &lt;br&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%2F36jfdr8padgvhwsvongs.png" 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%2F36jfdr8padgvhwsvongs.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now once you open your IDE, you will realized that you have a few code files inside your NewProject folder. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Running the server&lt;/strong&gt;&lt;br&gt;
The final part of this post focuses on how to run the server. In later entries we will dive deeper and create a small-scale working example using all of Django's extensive features, but that is for later.&lt;/p&gt;

&lt;p&gt;To run the server use &lt;code&gt;py manage.py runserver&lt;/code&gt;. &lt;br&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%2Fg4pcik9wpruwzruzimew.png" 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%2Fg4pcik9wpruwzruzimew.png" alt="terminal image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So when you go to localhost at port 8000 you will find &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%2Fmgzoei0fhvzc8jevw2ve.png" 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%2Fmgzoei0fhvzc8jevw2ve.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there you have it! You have successfully installed Django, created a project, initialized an app, and got your development server running. While this may seem like a small set of steps, this is the foundation that every Django project is built on.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Device drivers : The Unsung Heroes of Your Computer</title>
      <dc:creator>Rouwel Ngacha</dc:creator>
      <pubDate>Thu, 14 May 2026 18:29:00 +0000</pubDate>
      <link>https://dev.to/rrouwelng/device-drivers-the-unsung-heroes-of-your-computer-2gdh</link>
      <guid>https://dev.to/rrouwelng/device-drivers-the-unsung-heroes-of-your-computer-2gdh</guid>
      <description>&lt;p&gt;You have probably never heard of device drivers, but without them, you would not be able to use your computer.&lt;/p&gt;

&lt;p&gt;So picture your computer &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%2Fpfqtgeb11bhlgkvrsakt.png" 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%2Fpfqtgeb11bhlgkvrsakt.png" alt="Image of Laptop computer" width="469" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— you can see the keyboard, the touchpad, the power button, maybe a fingerprint sensor, and a touchscreen. For all of that hardware to function (for the keyboard to actually put letters on the screen, for the mouse to actually move and click items, for your touchscreen to work), something has to bridge the gap between the physical components and the operating system. That something is called a device driver.&lt;/p&gt;

&lt;p&gt;Device drivers are essentially the compatibility layer between a device's hardware and its software.&lt;/p&gt;

&lt;p&gt;On Windows, the graphical interface for managing drivers is called Device Manager. It is accessible by right-clicking the Windows icon and selecting "Device Manager" from the pop-up menu, and it looks like this:&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%2Fs5cndwiyw3qpsoc7hbg0.png" 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%2Fs5cndwiyw3qpsoc7hbg0.png" alt="Image of Device manager" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the popular Linux distribution Ubuntu, the equivalent interface looks like this:&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%2Fipq75kgky2kxft7scivq.png" 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%2Fipq75kgky2kxft7scivq.png" alt="Image of HardInfo interface on Ubuntu" width="745" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But we are just scratching the surface.&lt;br&gt;
To recap: every piece of hardware on a system requires a driver to function as intended. This includes externally connected devices.&lt;br&gt;
A good example is a printer — to use one, you first connect it to your system (laptop or desktop). In many cases, your operating system will automatically detect and install the necessary drivers for you. However, if it does not, you can manually download and install them from the manufacturer's website.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Unused Potential: Disabling and or Deleting Drivers&lt;/strong&gt;&lt;br&gt;
This brings me to a lesser-known but useful aspect of drivers. Just as you can download and install them, you can also disable or delete them. This might sound counterproductive at first, but there are situations where it becomes a practical solution.&lt;br&gt;
A problem I recently encountered was my laptop's touchscreen registering phantom presses in one corner of the screen on its own. I had two options:&lt;/p&gt;

&lt;p&gt;Option 1 — Pay to have it repaired, which is the best long-term solution.&lt;br&gt;
Option 2 — Disable the touchscreen driver entirely to stop the erratic behavior.&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%2Fqvyxxkg7pmfhl0s2db6m.png" 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%2Fqvyxxkg7pmfhl0s2db6m.png" alt="Image of driver being disabled on Device manager" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Since the touchscreen is not essential to how I use my laptop, I chose to disable it. The names of all the drivers and how they affect your computer are available online, so it is advisable to search first and confirm that what you want to do is safe and achievable before proceeding. &lt;/p&gt;

&lt;p&gt;Always remember that messing with the wrong drivers could have serious consequences, such as losing Wi-Fi connectivity or being unable to use your keyboard. That said, the choice is always yours to make based on your own needs and priorities.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <title>the CSRF token</title>
      <dc:creator>Rouwel Ngacha</dc:creator>
      <pubDate>Mon, 11 May 2026 18:39:13 +0000</pubDate>
      <link>https://dev.to/rrouwelng/the-csrf-token-593p</link>
      <guid>https://dev.to/rrouwelng/the-csrf-token-593p</guid>
      <description>&lt;p&gt;Hello world, my name is rrouwelng and I am here to talk about the CSRF token. &lt;/p&gt;

&lt;p&gt;So, what is a CSRF token? A Cross-Site Request Forgery token is a unique and unpredictable value generated by server-side application. This was developed as a countermeasure to the &lt;strong&gt;Cross-Site Request Forgery attack&lt;/strong&gt; that was first documented in the early 2000's. &lt;/p&gt;

&lt;p&gt;What is a &lt;strong&gt;Cross-Site Request Forgery attack&lt;/strong&gt; ? Allow me to give an example.&lt;/p&gt;

&lt;p&gt;This is Bob,&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%2Fj1lrnh879rc547u6jqnf.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%2Fj1lrnh879rc547u6jqnf.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bob, logs into his bank at &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%2Fulq6a5yw4jutlzwlf5ks.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%2Fulq6a5yw4jutlzwlf5ks.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bob then decided to go read an article at a certain website at &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%2F2vpnks4och1uvcb198l4.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%2F2vpnks4och1uvcb198l4.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please note that Bob hasn't logged out of his bank account.&lt;/p&gt;

&lt;p&gt;The site &lt;strong&gt;'welikekittens.com'&lt;/strong&gt; is set up by a malicious actor(call him swipper). &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%2Fh6h6xeko47lri6sotot3.png" 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%2Fh6h6xeko47lri6sotot3.png" alt=" " width="478" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The website(welikekittens.com) is set up to send a form that is just a  POST request to Bob's bank website that basically tells it to credit a certain amount of money to the account of the attackers choosing.&lt;/p&gt;

&lt;p&gt;Because of how browsers work, every request(GET, POST or otherwise ) sent from bob's browser to the bank's server has the authentication cookies that Bob was given when he logged into the bank. This includes requests that weren't sent by Bob himself and are being sent by the malicious site.&lt;/p&gt;

&lt;p&gt;To counteract this, Bob's bank decides to use a CSRF-Token. When Bob interacts with the Bank interface, he receives a CSRF token that is embedded on the page. So now, if &lt;strong&gt;welikekittens.com&lt;/strong&gt; tries to send a request from bob's browser, the bank's server checks the form to see if the CSRF token is included in the form. &lt;/p&gt;

&lt;p&gt;Since  it is not included the request is automatically denied because the request doesn't include the CSRF token.  As a bonus because of the Same-Origin Policy(basically means that one website cannot read the contents of another website unless they are from the same host. Feel free to look it up) &lt;strong&gt;welikekittens.com&lt;/strong&gt; is unable to see the token and bob's bank account is safe for now.&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%2F4xb9al3tj93v7o2mr1u1.png" 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%2F4xb9al3tj93v7o2mr1u1.png" alt=" " width="444" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that is CSRF tokens in a nutshell, feel free add or discredit what I have written (with proof of course :) ).&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cybersecurity</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
