<?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: TamI™</title>
    <description>The latest articles on DEV Community by TamI™ (@tami-cp0).</description>
    <link>https://dev.to/tami-cp0</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%2F1229396%2Fe623350e-d736-4197-9c3b-7b7e35d2940b.png</url>
      <title>DEV Community: TamI™</title>
      <link>https://dev.to/tami-cp0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tami-cp0"/>
    <language>en</language>
    <item>
      <title>Beginner's First Tech Project: Avoiding Mistakes and Achieving Success</title>
      <dc:creator>TamI™</dc:creator>
      <pubDate>Tue, 14 May 2024 11:32:27 +0000</pubDate>
      <link>https://dev.to/tami-cp0/beginners-first-tech-project-avoiding-mistakes-and-achieving-success-36bd</link>
      <guid>https://dev.to/tami-cp0/beginners-first-tech-project-avoiding-mistakes-and-achieving-success-36bd</guid>
      <description>&lt;p&gt;Are you a budding tech enthusiast striving to embark on your first major project? Allow me to share insights and mistakes my small team and I made when we tried to develop a social media web app; that focuses on mental health up keep; as our first ever real tech project under a deadline.&lt;/p&gt;

&lt;p&gt;Simply put, our initial missteps were evident. The lack of comprehensive planning led us down a path of uncertainty and constant alterations. As a team of learners, our decision-making process was often disturbed with constant revisions either because of time or our lack of knowledge with a certain technology, resulting in us deploying a more simplified &lt;strong&gt;Minimal Viable Product&lt;/strong&gt; (MVP) than envisioned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Mistakes Made:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our journey was filled with challenges, notably stemming from poor planning, limited time and limited knowledge. when we were writing the website requirements and initial documentation, we had no idea how big the project we planned out actually was as it couldn’t be completed within the timeframe. The problem was that our proposed MVP was &lt;strong&gt;not&lt;/strong&gt; an MVP!!! So because the realization came mid-development, we found ourselves constantly refactoring code and revisiting the documentation we wrote before coding which was a big hit to our pace coupled with the fact that we also had to learn new technologies on the fly. All that slowed down our pace and wasted a part of the given timeframe for the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So What Should you do to Avoid This Setback?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan&lt;/strong&gt;, it sounds so simple but should be done properly. You should always settle on a small MVP before reaching for the stars. &lt;strong&gt;Thoroughly define&lt;/strong&gt; what features you need for the MVP, how you are going to implement them and whatever technology you would like to use.&lt;br&gt;
Know your short comings, especially when there’s a deadline to meet. As a beginner in tech you should always step back and look at yourself to see if your skills are enough to tackle your project, if not i advise dividing your project into small bits so you can learn and develop on the fly. If you are working on a team, set roles and responsibilities of each member based on your strengths and use project management tools like &lt;a href="https://trello.com/"&gt;trello&lt;/a&gt; to streamline and enhance team communication and workflow.&lt;br&gt;
These two points alone should be helpful enough to any beginner techies out there.&lt;/p&gt;

&lt;p&gt;The essence of meticulous planning, the efficacy of starting small with an MVP, and the paramount role of communication within team projects. I urge you to take note of these lessons and learn from them for your own tech ventures, be it solo or collaborative and let these insights propel you towards excellence in your tech odyssey.&lt;/p&gt;

&lt;p&gt;Oh and check out the desktop MVP social media app at &lt;a href="https://www.tamilore.tech/about"&gt;Ikiru&lt;/a&gt;. Feedback is appreciated, Thank you.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Anatomy of Web Searches: A Beginner’s Guide</title>
      <dc:creator>TamI™</dc:creator>
      <pubDate>Fri, 15 Mar 2024 16:39:35 +0000</pubDate>
      <link>https://dev.to/tami-cp0/the-anatomy-of-web-searches-a-beginners-guide-pl6</link>
      <guid>https://dev.to/tami-cp0/the-anatomy-of-web-searches-a-beginners-guide-pl6</guid>
      <description>&lt;p&gt;Have you ever wondered what happens behind the scenes when you search for a website on the internet? This blog will guide you through the journey of a web request, from the moment you hit &lt;code&gt;Enter&lt;/code&gt; after typing a URL, to the instant a webpage loads on your screen. Whether you're a budding developer or simply curious about the technology you use every day, this exploration is for you. For the purpose of this blog, I will be using &lt;code&gt;https://www.google.com&lt;/code&gt; as the example.&lt;/p&gt;

&lt;p&gt;Before we proceed, it is essential to grasp two fundamental concepts that form the cornerstone of our discussion: TCP/IP (address) protocol and the role of a client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a client?&lt;/strong&gt;&lt;br&gt;
A client is a host or device capable of interacting with a service. A client is the device that submits a request and waits for a response from the server. The term "client" can refer to both your laptop and your browser. Your laptop acts as a client device, and the browser is the client application. The browser enables your laptop to send requests and receive information from the internet, thus acting as a client in the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is TCP/IP?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;TCP/IP&lt;/strong&gt; stands for &lt;strong&gt;Transmission Control Protocol/Internet Protocol&lt;/strong&gt;. TCP protocol is a set of rules for ensuring reliable delivery of data packets from one host to another while IP protocol is a set of rules that govern the routing and addressing of data packets ensuring they can travel across networks and reach the correct host. IP &lt;strong&gt;address&lt;/strong&gt; is a unique identifier given to any device connected to a network to allow communication between each other.&lt;/p&gt;




&lt;p&gt;Upon pressing &lt;code&gt;Enter&lt;/code&gt; after typing &lt;code&gt;https://www.google.com&lt;/code&gt; into your browser, the client first searches the local DNS cache to see if it has a record of the domain name's IP address (the domain name is google.com) if the IP is not found, the following operations are a simplified overview of DNS resolution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNS Query:&lt;/strong&gt; Also referred to as &lt;strong&gt;DNS request&lt;/strong&gt;, this sends a query to a recursive DNS server (usually provided by your ISP, &lt;strong&gt;Internet Service Provider&lt;/strong&gt;) asking for the IP address associated with the domain name requested.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS Recursor:&lt;/strong&gt; After receiving the requests, this server acts as a middleman between the client and the &lt;strong&gt;DNS nameservers&lt;/strong&gt;, querying DNS nameservers like root, TLD, Authoritative nameserver respectively. after receiving the requested IP address from the Authoritative nameserver, it sends the response (requested IP address) back to the client. During this process, the recursor will cache information received for future use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you may be wondering why the client (your browser) cannot use domain names? This is because domain names are only human-readable, meant for human use. The internet is based on IP addresses. Imagine trying to go to google.com but to get there you have to memorize 8.8.8.8, okay google has a short IP. But what about other websites that could have IPs like 176.89.229.128; what if you need to use 5 different websites? trying to memorize IPs would be a hassle!&lt;/p&gt;

&lt;p&gt;This is where DNS nameservers become handy. They act as the internet's phonebook, receiving queries and responding with the domain name's IP addresses. Now that you understand the basics of what a DNS request and response is, I will talk about firewalls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Firewall?&lt;/strong&gt;&lt;br&gt;
A firewall is a network security that monitors all incoming and outgoing traffic (request and response) and selectively filters them based on a defined set of security policies. while firewall helps to prevent unauthorized access, secure communication is also needed which is the work of HTTPS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is HTTPS?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;HTTPS&lt;/strong&gt; stands for &lt;strong&gt;Hypertext Transfer Protocol Secure&lt;/strong&gt;. HTTPS is the results of layering the HTTP protocol on top of the SSL/TLS protocol. The &lt;strong&gt;SSL/TLS&lt;/strong&gt; &lt;strong&gt;(Secure Sockets Layer/Transport Layer Security)&lt;/strong&gt; packs, encrypts data being communicated and authenticates the site being accessed is the original one ensuring integrity. This helps prevent attacks such as phishing, where a malicious site pretends to be a legitimate one. HTTPS works in such a way that if your data is intercepted, they won't be able to decrypt it therefore making the interception useless. Taking a look at our example; &lt;code&gt;https://www.google.com&lt;/code&gt; you will see the 's' in front of http, which stands for 'secure' indicating the connection is encrypted through SSL/TLS. SSL/TSL is typically identified by a padlock next to the URL in your browser. Beware of unsecure sites!&lt;/p&gt;




&lt;p&gt;We've explored the way a client accesses websites and delved into security layers such as firewalls and HTTPS.&lt;/p&gt;

&lt;p&gt;Now, let's take a look at how the client actually receives responses. We'll begin with a simplified overview of load balancers, which ensures efficient traffic management and high availability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a load balancer?&lt;/strong&gt;&lt;br&gt;
A load balancer is a system that distributes incoming traffic across multiple servers, ensuring high availability, efficient utilization of servers, and high performance. The primary goal of a load balancer is to minimize server crashes due to overload of users and so on, also ensures low latency and high performance. This is possible through the distribution of load using difference algorithms like round robin or least connection e.t.c.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Facts:&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;Google's cloud load balancer (GCLB)&lt;/strong&gt; has an availability &lt;strong&gt;SLA OF 99.99% per month&lt;/strong&gt; even though it has over &lt;strong&gt;4 billion users!&lt;/strong&gt; Amazing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service Level Agreement (SLA)&lt;/strong&gt; is simply expressed as a percentage that indicates the expected uptime for a service within a given period.&lt;/p&gt;




&lt;p&gt;Now that we understand how web servers stay available even if they have billions of users, lets talk about servers themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a server?&lt;/strong&gt;&lt;br&gt;
A server is a hardware device or software that handles requests sent over a network and sends out responses. For the scope of this blog, our focus will be on software servers. Among the different server types such - as FTP, proxy, and game servers - we will delve into three essential varieties for a 3-tier application model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web server:&lt;/strong&gt; A web server is a software application or hardware device that stores content (HTML, CSS and scripts e.t.c), processes, and serves web content to users over the internet. It operates on the HTTP or HTTPS protocols which are the foundation for communication on the world wide web. &lt;em&gt;"So how do you actually see a web page? he asked."&lt;/em&gt;. Well a process called &lt;strong&gt;DOM rendering&lt;/strong&gt; with CSSOM and others are utilized by your web browser. Simply put, your web browser downloads web files from the web server, creates the Render Tree, paints and displays them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Application server:&lt;/strong&gt; This sits between the web server and database server. It is essential for providing the business logic behind any application. It is a type of server designed to install, operate and host applications and associated services for clients. It facilitates the hosting and delivery of high-end applications. It interacts with the database to fetch and store data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Database Server:&lt;/strong&gt; This is a computer system that manages and provides access to databases. It runs a &lt;strong&gt;Database Management System (DBMS)&lt;/strong&gt; and is responsible for storing, retrieving, and managing data in a database allowing multiple clients i.e users or applications, to interact with the database concurrently.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is a schema illustrating the flow of the request created when you type &lt;code&gt;https://www.google.com&lt;/code&gt; in your browser and press Enter.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhyd1hnlo3xkqux86ggzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhyd1hnlo3xkqux86ggzx.png" alt="My Simple Web Infrastructure Design" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In conclusion your web browser is performing modern day magic, weaving web pages into existence in seconds, right before your eyes.&lt;/p&gt;

&lt;p&gt;That's it for this beginner guide, Now you should have a fair understanding of what happens when you type &lt;code&gt;https://www.google.com&lt;/code&gt; in your browser and press Enter.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to clone a WSL 2 distro and set it up</title>
      <dc:creator>TamI™</dc:creator>
      <pubDate>Sat, 09 Dec 2023 04:23:22 +0000</pubDate>
      <link>https://dev.to/tami-cp0/how-to-clone-wsl-2-and-set-it-up-3693</link>
      <guid>https://dev.to/tami-cp0/how-to-clone-wsl-2-and-set-it-up-3693</guid>
      <description>&lt;p&gt;If you are a fan of Ubuntu and you want to move your existing distro to a new device, you might be wondering how to do it without losing your data and settings. In this blog post, I will show you how to export and import your Ubuntu distro using Windows Subsystem for Linux, &lt;strong&gt;specifically&lt;/strong&gt; (WSL) version 2.&lt;/p&gt;

&lt;p&gt;Before we start, make sure you have WSL version 2 installed embedded and enabled on both your old and new devices. You can check your WSL version by opening PowerShell as an administrator and running the command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --list --verbose&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you see version 2 under the STATE column, you are good to go. If not, refer to a different article. WSL 1 does not support the import/export functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Export Your Ubuntu Distro
&lt;/h3&gt;

&lt;p&gt;On your old device, open PowerShell as an administrator and run the following command to shut down any running instances of your Ubuntu distro:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --shutdown&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then, run the following command to export your Ubuntu distro to a tar file:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --export &amp;lt;DistributionName&amp;gt; &amp;lt;FilePath&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;&amp;lt;DistributionName&amp;gt;&lt;/code&gt; with the name of your Ubuntu distro (you can find it by running wsl --list) and &lt;code&gt;&amp;lt;FilePath&amp;gt;&lt;/code&gt; is the full path to the destination location for your tar file. For example: hello&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --export Ubuntu C:\Users\Alice\ubuntu-backup.tar&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will create a tar file named ubuntu-backup.tar in the C:\Users\Alice folder. You can choose any name and location for your tar file, but make sure it has enough space to store your distro.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Transfer Your Tar File
&lt;/h3&gt;

&lt;p&gt;Now that you have exported your Ubuntu distro, you need to transfer it to your new device. You can use any method you prefer, such as a USB drive, cloud storage, or network sharing. Just make sure you copy the tar file to a location that is accessible from your new device.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Import Your Ubuntu Distro
&lt;/h3&gt;

&lt;p&gt;On your new device, open PowerShell as an administrator and run the following command to import your Ubuntu distro from the tar file:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --import &amp;lt;DistributionName&amp;gt; &amp;lt;InstallLocation&amp;gt; &amp;lt;PathToYourUbuntuExport&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;&amp;lt;DistributionName&amp;gt;&lt;/code&gt; with the name you want to give to your imported Ubuntu distro (it can be different from the original name), &lt;code&gt;&amp;lt;InstallLocation&amp;gt;&lt;/code&gt; with the directory where you want to install the distro (preferably create a new folder in the current drive), and &lt;code&gt;&amp;lt;PathToYourUbuntuExport&amp;gt;&lt;/code&gt; with the full path to the tar file. For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --import Ubuntu-old C:\WSL\Ubuntu-old C:\Users\Alice\ubuntu-backup.tar&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will create a new WSL distribution named Ubuntu-old in the C:\WSL\Ubuntu-old folder.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/strong&gt; You can choose any name and location for your imported distro, but ensure they are not already used by another WSL distribution.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 4: Set Your Imported Ubuntu Distro as Default
&lt;/h3&gt;

&lt;p&gt;To use your imported Ubuntu distro, you need to set it as the default WSL distribution. You can do this by running the following command in powershell:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl.exe -d &amp;lt;DistributionName&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;&amp;lt;DistributionName&amp;gt;&lt;/code&gt; with the name of your imported Ubuntu distro. For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl.exe -d Ubuntu-old&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will launch your imported Ubuntu distro in PowerShell. You can also use Visual Studio Code or the Ubuntu app to access your imported distro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/strong&gt; You might find yourself logged in as the root user when you launch your imported distro. Use &lt;strong&gt;&lt;code&gt;su &amp;lt;Username&amp;gt;&lt;/code&gt;&lt;/strong&gt; to login to any user that was on the imported distro. Replace &lt;code&gt;&amp;lt;UserName&amp;gt;&lt;/code&gt; with the actual username.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;optional setting&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
If you wish to set a user as the default user in your imported distro&lt;/p&gt;

&lt;p&gt;The current &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/wsl-config#user-settings"&gt;Microsoft recommended&lt;/a&gt; way of setting the default username in an instance is to create a /etc/wsl.conf or append to the already existing file, the following setting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[user]
default=&amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;&amp;lt;username&amp;gt;&lt;/code&gt; to be your selected default username.&lt;/p&gt;

&lt;p&gt;Exit your distro/instance, then issue a &lt;strong&gt;&lt;code&gt;wsl --terminate &amp;lt;distroname&amp;gt;&lt;/code&gt;&lt;/strong&gt; from PowerShell or CMD. When you restart, the default user should be set.&lt;/p&gt;

&lt;p&gt;This is safer and less error-prone than the registry-based methods.&lt;/p&gt;

&lt;p&gt;If the optional setting doesn't work, other methods including this one were gotten from &lt;a href="https://superuser.com/questions/1566022/how-to-set-default-user-for-manually-installed-wsl-distro/1627461#1627461"&gt;here&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That's it! You have successfully transferred your Ubuntu distro to a new device using WSL version 2. Enjoy!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ubuntu</category>
      <category>wsl2</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
