<?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: Rhonajoy</title>
    <description>The latest articles on DEV Community by Rhonajoy (@rhonajoyke).</description>
    <link>https://dev.to/rhonajoyke</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%2F877177%2Fa52c7db4-c5d7-45ab-8de9-fa4e66506d99.jpeg</url>
      <title>DEV Community: Rhonajoy</title>
      <link>https://dev.to/rhonajoyke</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rhonajoyke"/>
    <language>en</language>
    <item>
      <title>An introduction to Agile</title>
      <dc:creator>Rhonajoy</dc:creator>
      <pubDate>Mon, 18 Sep 2023 08:57:32 +0000</pubDate>
      <link>https://dev.to/rhonajoyke/an-introduction-to-agile-328a</link>
      <guid>https://dev.to/rhonajoyke/an-introduction-to-agile-328a</guid>
      <description>&lt;p&gt;The very first time I heard of the word “Agile” was in a software development interview. The interviewer asked me “Are you familiar with Agile ” to which I gave an enthusiastic yes. They later proceeded to ask me to explain what it means and explain agile methodologies. I fumbled my way through at the time and after the interview, I decided never to fumble again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what is Agile?&lt;/strong&gt;&lt;br&gt;
The dictionary definition of the word is able to &lt;em&gt;move quickly and easily.&lt;/em&gt;&lt;br&gt;
In software development terms agile is &lt;em&gt;an approach to project management that promotes iteration throughout the software development cycle(i.e. Planning, Design, development, Testing, Deployment, Maintenance).&lt;/em&gt; With Agile requirements, plans, and results are evaluated continuously so as to respond quickly to change. &lt;br&gt;
&lt;strong&gt;What was there before Agile?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Waterfall methodology&lt;/strong&gt; was what was used before the evolution to agile. In a waterfall, the phases are sequentially arranged such that one cannot move to the next phase without completing the previous phase because the outcome of the previous step would affect the coming phase. &lt;br&gt;
The matter of flexibility becomes a challenge in this methodology.  Also, what if we realize that an error was made during the design phase when we are in the implementation phase? Then it means we have to go back to the designs and restart on implementation. This depicts that room for change (which is common in software development) is not accommodated, it also translates to a lot of time and resource wastage.&lt;br&gt;
Imagine you are in college, and your professors come and announce to the class that in a week’s time they would want everyone to submit their project proposals with designs, implementation, and generally everything. They expect by the time you meet you have everything fully functional and working. Another professor says that they would want the same project but rather than submitting everything at once, they want the work done in stages, the design first, and on submitting the design one gets feedback, and gets back to implement changes in short it is an ongoing conversation of “oh you did this? okay, if you changed this a bit, adjusted this a little, would be better” and this is carried over all the stages. Which Professor simulates Agile, and which one waterfall?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agile values&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Individuals and Interactions over Processes and Tools&lt;/strong&gt;- This prioritizes the need to have people interact, collaborate, share ideas, and share feedback over tools and processes. Agile recognizes that at the end of the day, the people who work on the projects have more weight than the tools because they bring in skills and creativity. The tools and processes will always rely on the people to work.&lt;br&gt;
&lt;strong&gt;Working Software over Comprehensive Documentation&lt;/strong&gt;-  Can you imagine going to a showroom to buy a car, and when you identify the type of car you want to buy rather than the salesperson giving you the car for you to go for a test drive, they give you a large documentation on how the car works. &lt;br&gt;
Yes, documentation is very important but at the end of the day, people want to see the practical bit of every system or software. So Agile will always prioritize working software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customer Collaboration over Contract Negotiation&lt;/strong&gt;- When I hear the word ‘contract’ and ‘contract negotiation’ what comes to mind is that these occurrences happen once. It would be strange for people to negotiate a contract every week.  For Customer Collaboration to happen then there’s a need to constantly meet, talk, and most importantly listen to the Customer. &lt;br&gt;
&lt;strong&gt;Responding to Change over Following a Plan&lt;/strong&gt;- Software development in itself is a field of change.And so with this in mind agile advocates for the need to be able to adapt to change rather than following a plan. A new law is introduced that all software/systems have to adhere to, How flexible are we today able to handle that? &lt;/p&gt;

&lt;p&gt;Agile has become such a force in the Software development industry that we cannot bear to ignore it mostly because when you critically think about it. &lt;strong&gt;Agile is a mindset&lt;/strong&gt;. A mindset of growth, adaptability, embracing change, and proving to be flexible and of flexible mindset. Agile may be mistaken sometimes for speed, how fast one is able to complete a task, but rather it is slow but steady. The steady is the ability to polish processes and make them better with time with the collaborative feedback that is given.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>softwaredevelopment</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Chaos Engineering</title>
      <dc:creator>Rhonajoy</dc:creator>
      <pubDate>Mon, 24 Jul 2023 16:09:09 +0000</pubDate>
      <link>https://dev.to/rhonajoyke/chaos-engineering-33de</link>
      <guid>https://dev.to/rhonajoyke/chaos-engineering-33de</guid>
      <description>&lt;p&gt;A few years ago, if you were a software developer and you asked your manager/team leader if you could test the system in production, they probably would have given you a bombastic sideways glance, which was a clear sign of how absurd the idea was, but guess what? Nowadays, thanks to technological development and research conducted, it is possible to test in production through a technique called Chaos Engineering. So &lt;strong&gt;what is Chaos Engineering&lt;/strong&gt; and &lt;strong&gt;why is it important&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chaos engineering&lt;/strong&gt; is  a method of testing or experimenting with a system or software by intentionally introducing errors or rather turbulent situations with the goal of building resilience and confidence in the system.&lt;br&gt;
Imagine going on a boat ride with your friend who can swim but is not a very good swimmer, and you decide to push them into the lake to boost their confidence. Now this could result in them struggling to stay afloat(&lt;em&gt;hating you,lol!&lt;/em&gt;), but boosting their confidence in their swimming skills, which means that the next time they are at a lake/swimming pool, their swimming skills will have improved.&lt;br&gt;
&lt;strong&gt;Chaos engineering vs Software testing&lt;/strong&gt;&lt;br&gt;
Chaos engineering differs from software testing in that it &lt;em&gt;intentionally introduces bugs into the system&lt;/em&gt; and its goal is to build resilience. In contrast, software testing is more focused on &lt;em&gt;ensuring that the system works as expected&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Chaos engineering can help answer functionality questions such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What would happen if the application fails or receives too much traffic?&lt;/li&gt;
&lt;li&gt;What happens if a particular service is unavailable?&lt;/li&gt;
&lt;li&gt;Because chaos engineering allows us to test a system under "stressful circumstances," it provides insights into how applications can be improved for the future.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;History of Chaos Engineering&lt;/strong&gt;&lt;br&gt;
Chaos Engineering was developed at Netflix in 2010 after the company moved to an Aws cloud infrastructure to deliver its entertainment services to its growing number of customers. They developed Chaos Monkey to test and ensure that a failed AWS component would not impact Netflix’s streaming experience. Why the name “Chaos Monkey” describes a scenario of what would happen if a wild monkey was placed in a data center and started chewing away at various cables in the data center, causing a lot of “chaos," right?&lt;/p&gt;

&lt;p&gt;Assuming you are now convinced that chaos engineering is relevant, the next question is&lt;br&gt;
&lt;strong&gt;How does chaos engineering work&lt;/strong&gt;? Here are some &lt;strong&gt;principles that govern chaos engineering&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Define the normal state of your system&lt;/strong&gt; - This means that you fully understand the behavior of your system using some metrics such as system response times, error rates, and the number of services that need to run in the best case.&lt;br&gt;
&lt;strong&gt;Create a hypothesis for stable behavior&lt;/strong&gt; - After you understand the stable state, you can create a hypothesis for the behavior of the system if there is a failure of any of the components or microservices. Some key clues might be as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does the I/O behave?&lt;/li&gt;
&lt;li&gt;Does latency occur? If so, to what extent?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Simulate various real-world events&lt;/strong&gt; - Think of some real-world scenarios that could cause disruptions in your system. For example, a server failure or a software error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conduct experiments in production&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate experiments and run them continuously&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimize the blast radius&lt;/strong&gt; - Chaos engineering experiments can have some negative effects. Therefore, it is important to regulate the process by ‘starting small” with the type of aftereffect you would experience and gradually increasing to reach full scale&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools for Chaos Engineering&lt;/strong&gt;&lt;br&gt;
Some of the tools available for chaos engineering include&lt;br&gt;
Chaos Monkey, Litmus, Chaos Mesh, Chaos Blade&lt;br&gt;
Chaos Native, Gremlin&lt;/p&gt;

</description>
      <category>learning</category>
      <category>productivity</category>
      <category>programming</category>
      <category>development</category>
    </item>
    <item>
      <title>What are CRUD Methods? How can we Implement them in Django?</title>
      <dc:creator>Rhonajoy</dc:creator>
      <pubDate>Mon, 18 Jul 2022 08:26:58 +0000</pubDate>
      <link>https://dev.to/rhonajoyke/what-are-crud-methodshow-can-we-implement-them-in-django-1geh</link>
      <guid>https://dev.to/rhonajoyke/what-are-crud-methodshow-can-we-implement-them-in-django-1geh</guid>
      <description>&lt;p&gt;The acronym CRUD stands for &lt;strong&gt;CREATE, READ,UPDATE&lt;/strong&gt; and &lt;strong&gt;DELETE&lt;/strong&gt;. They refer to the four basic functions that can be executed on a set of data. Each of these functions represent a specific HTTP method.&lt;/p&gt;

&lt;p&gt;In this article, we are going to create a django project that can create,read,update and delete posts from scratch  to demonstrate these four concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Implement CRUD Methods in Django&lt;/strong&gt;&lt;br&gt;
Create  virtual environment using &lt;br&gt;
&lt;code&gt;python3  -m venv &amp;lt;name of virtual&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Activate your virtual:(for Ubuntu users):&lt;br&gt;
&lt;code&gt;source &amp;lt;name of your virtual&amp;gt;/bin/activate&lt;/code&gt;&lt;br&gt;
 For windows Users:&lt;br&gt;
&lt;code&gt;.\venv\Scripts\activate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Install Django :q&lt;br&gt;
&lt;code&gt;pip install django&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a django project&lt;br&gt;
&lt;code&gt;django-admin startproject &amp;lt;projectname&amp;gt;.&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a django application&lt;br&gt;
&lt;code&gt;python3 manage.py startapp &amp;lt;appname&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We’ll start by creating our model for our posts&lt;br&gt;
Ensure to have created a database prior and linked it in the settings.py file like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql',
       'NAME': ‘&amp;lt;database name&amp;gt;’,
       'USER': '&amp;lt;database user&amp;gt;',
   'PASSWORD':'&amp;lt;password&amp;gt;',
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NB if you are using the postgresql database, you need to install psycopg2 i.e (pip install pyscopg2)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.db import models

# Create your models here.
class Posts(models.Model):
   name = models.CharField(max_length = 50)
   picture = models.ImageField()
   author = models.CharField(max_length = 30, default="anonymous")
   email = models.EmailField(blank = True)
   describe = models.TextField(default = " Django tutorials")
   def __str__(self):
       return self.name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make the models known to the database by initializing migrations &lt;br&gt;
&lt;code&gt;python3 manage.py makemigrations&lt;/code&gt;&lt;br&gt;
And then make migrations&lt;br&gt;
&lt;code&gt;python3 manage.py  migrate&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CREATE function&lt;/strong&gt;.&lt;br&gt;
The CREATE function translates to the POST http method . Through Create we are able to add items into our database/data. In this case, to be able to add posts into our database. We need to provide an interface for our users to add posts, therefore we create a forms.py file in our app and then inside it  we create a form that borrows from  our models&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django import forms
from .models import Posts
class PostCreate(forms.ModelForm):
   class Meta:
       model=Posts
       fields='__all__'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We now proceed to our views.py to create the logic . Ensure to import the following at the beginning of the views.py file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.shortcuts import render, redirect
from .models import Posts
from .forms import PostCreate
from django.http import HttpResponse

def upload(request):
   upload=PostCreate()
   if request.method=='POST':
       upload=PostCreate(request.POST,request.FILES)
       if upload.is_valid():
           upload.save()
           return redirect('index')
       else:
           return HttpResponse("Your form is wrong")

   else:
       return render(request,'upload_form.html',{'upload_form':upload})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our upload function, we initialize a variable that stores our form and then specify that the method we are targeting is the POST method,reason being we want to send posts to our database. We check if the form is correctly filled,if yes we save the posts in the database. If not we send an error message.&lt;br&gt;
And if the method is not a POST method, we return a blank form.&lt;br&gt;
&lt;strong&gt;READ&lt;/strong&gt;&lt;br&gt;
This translates to the GET HTTP method. It helps us to access all the posts that have been stored in the database so far. &lt;br&gt;
We do this using the objects.all() to query all posts that are in the database.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def index(request):
   posts=Posts.objects.all()
   return render(request,'index.html',{'posts':posts})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt; &lt;br&gt;
This translates to the PUT HTTP method. It helps us to not only  access posts that are already stored in the database but also, to be able to edit them and store them again.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def update_post(request,post_id):
   post_id=int(post_id)
   try:
       post_up=Posts.objects.get(id=post_id)
   except Posts.DoesNotExist:
       return redirect('index' )
   post_form=PostCreate(request.POST or None,instance=post_up)
   if post_form.is_valid():
       post_form.save()
       return redirect('index')
   return render(request,'upload_form.html',{'upload_form':post_form})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since, we want to access a post that is already stored in the database, we have to have a way to reference to that particular post. We will make use of the id field since it is the primary key meaning that all posts have unique ids.&lt;br&gt;
We initialize a variable that is going to be used to store the id of the post that is being referenced to.&lt;br&gt;
Using the try and except, we look up if such an id exists in the database.if no, we redirect user to index function. If yes, we query the form with the data that was in it, we then check if has been correctly filled,if yes we save it and redirect to index function.&lt;br&gt;
&lt;strong&gt;DELETE&lt;/strong&gt; &lt;br&gt;
This equates to the DELETE HTTP request method which translates to getting rid of posts in the database. In terms of logic,it is very similar to the update function since we are going to use the post’s id to reference to the post we want to delete. We use the .delete() method to achieve ths functionality.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def delete_post(request,post_id):
   post_id=int(post_id)
   try:
       post_up=Posts.objects.get(id=post_id)
   except Posts.DoesNotExist:
       return redirect('index')
   post_up.delete()
   return redirect('index')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt; &lt;br&gt;
&lt;strong&gt;Create Function&lt;/strong&gt;&lt;br&gt;
Using our form we add a new post,and we click on submit. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QRmiyTrC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbyp27ohu8uns3t9bsft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QRmiyTrC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbyp27ohu8uns3t9bsft.png" alt="Form for creating a post" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Read Function&lt;/strong&gt;&lt;br&gt;
When we view our home page, we see the post that we created being displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4PhaWHdO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4xrxsxynuyq4bvghaar6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4PhaWHdO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4xrxsxynuyq4bvghaar6.png" alt="our dog post" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Update Function&lt;/strong&gt;&lt;br&gt;
We will use the edit button on the post to change the description in our post to” Dogs are loyal and beautiful creatures.They make good pets’. Clicking on edit button takes me to the form with all its content. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IXEN1DSF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cjp4nnpqjxttap7a1x88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IXEN1DSF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cjp4nnpqjxttap7a1x88.png" alt="post with initial contents" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Once edited, I click on submit .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RwCyIiWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hml6uzu6s81ajp6gt4cc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RwCyIiWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hml6uzu6s81ajp6gt4cc.png" alt="updating post" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
On checking our post on the home page, we see that its contents have changed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iPvagHqB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arcg6emrdywtfkxkqots.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iPvagHqB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arcg6emrdywtfkxkqots.png" alt="updated post" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Delete Function&lt;/strong&gt;&lt;br&gt;
We will use the delete button to remove this post. On clicking the button,we notice that the post is no longer there.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LZWAuuFp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8ycri5iizs0109v7uzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LZWAuuFp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8ycri5iizs0109v7uzo.png" alt="clear page " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
The CRUD acronym translates to all the major operations done in relational databases such as &lt;br&gt;
Microsoft SQL Server, Oracle Database, MySQL and IBM DB2. They are used in real life applications like in ecommerce sites, social media websites.In the very simplest of forms CRUD methods are used to maintain  students records, employee records.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>DATASTRUCTURES IN PYTHON</title>
      <dc:creator>Rhonajoy</dc:creator>
      <pubDate>Tue, 05 Jul 2022 13:51:49 +0000</pubDate>
      <link>https://dev.to/rhonajoyke/datastructures-in-python-2ofe</link>
      <guid>https://dev.to/rhonajoyke/datastructures-in-python-2ofe</guid>
      <description>&lt;p&gt;From my previous &lt;a href="https://dev.to/rhonajoyke/introduction-to-data-structures-and-algorithms-43po"&gt;article&lt;/a&gt;, I covered the basics and the importance of Data structures and algorithms &lt;br&gt;
For this article we dive into data structures in python.Python is a general purpose programming language that can be used in different fields such as web development,data science and data visualization, machine learning and artificial intelligence, game development.its syntax is very easy to learn given that it uses English-like statements.&lt;br&gt;
There are four built-in data structures in python. These include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lists&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sets&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tuples&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dictionaries&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;LISTS&lt;/strong&gt;&lt;br&gt;
Lists are containers that can store data of any type. They carry the same concept as arrays in c++ or java only that python doesn't support them.&lt;br&gt;
&lt;strong&gt;How is a List created?&lt;/strong&gt;&lt;br&gt;
By use of square brackets [] and assigning the list a variable name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   myhobbies=['swimming','dancing','climbing']
   print(type(myhobbies))

 Print Output:
 &amp;lt;class 'list'&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Characteristics of a list&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lists are mutable, meaning they can be changed. Items can be added, removed,or updated in the lists.Let us try to update an item on our list to demonstrate this using indexes.(Recall that we start counting from index [0])
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myhobbies=['swimming','dancing','climbing']
myhobbies[1]='baking'
print(myhobbies)

Print Output:
['swimming', 'baking', 'climbing']

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

&lt;/div&gt;



&lt;p&gt;2.They are ordered. The particular way in which things were initially arranged cannot be changed.However, there are some methods that can be used to mitigate this.&lt;/p&gt;

&lt;p&gt;3.They allow duplicates. We can have similar items in a list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myhobbies=['swimming','dancing','climbing','swimming']

print(myhobbies)
Print Output:
['swimming', 'dancing', 'climbing', 'swimming']

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SETS&lt;/strong&gt;&lt;br&gt;
This is a collection of unordered items.&lt;br&gt;
&lt;strong&gt;How they are created?&lt;/strong&gt;&lt;br&gt;
Sets are created by use of the set function or using {}.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;method 1:
myhobbies={'swimming','dancing','climbing','swimming'}
print(myhobbies)`

Print Output:
&amp;lt;class 'set'&amp;gt;

method 2:
myhobbies=set(['swimming','dancing','climbing'])
print(type(myhobbies))
Print Output:
&amp;lt;class 'set'&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Characteristics of a set&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.They do not allow duplicates.&lt;br&gt;
In the example below, the sets stores two similar hobbies,but on printing,only one 'swimming' is printed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myhobbies={'swimming','dancing','climbing','swimming'}

print(myhobbies)

Print Output:
{'dancing', 'swimming', 'climbing'}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Specific items in a set are immutable,but the set as whole can be changed.&lt;br&gt;
Let's try to add one more hobby into the set.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myhobbies={'swimming','dancing','climbing'}
myhobbies[1]='acting'
print(myhobbies)

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

&lt;/div&gt;



&lt;p&gt;We get an error that &lt;br&gt;
&lt;code&gt;TypeError: 'set' object does not support item assignment&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3.They are unordered. Meaning that items cannot be accessed using indexes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TUPLES&lt;/strong&gt;&lt;br&gt;
They can store a collection of items.They are created by use of parenthesis ().&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myhobbies=('swimming','dancing','climbing')

print(type(myhobbies))
Print Output:
&amp;lt;class 'tuple'&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Characteristics of a tuple&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tuples are ordered,&lt;/li&gt;
&lt;li&gt;They are immutable.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myhobbies=('swimming','dancing','dancing','climbing')
myhobbies[0]='baking'
print((myhobbies))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The following error is raised.&lt;code&gt;TypeError: 'tuple' object does not support item assignment&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
3.They allow duplicates.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; myhobbies=('swimming','dancing','dancing','climbing')

 print((myhobbies))
 Print Output:
('swimming', 'dancing', 'dancing', 'climbing')

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;DICTIONARIES&lt;/strong&gt;&lt;br&gt;
They are used to store data in terms of keys and values. Think of it this way, for one to open a room in their house they have to own a key to that particular room. Similar concept with the dictionary where each value has to have its own unique key.&lt;br&gt;
&lt;strong&gt;How they are created?&lt;/strong&gt;&lt;br&gt;
By use of the curly braces and assigning them a variable name.Like so:&lt;br&gt;
&lt;code&gt;dict={&lt;br&gt;
    &amp;lt;key&amp;gt;:&amp;lt;value&amp;gt;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
where 1 is the key and red is the value&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dict={
    1:'red',
    2:'blue'
}
print (type(dict))
Print Output:
&amp;lt;class 'dict'&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;Dictionaries are ordered,they do not allow duplication of keys, and are changeable.&lt;br&gt;
&lt;strong&gt;CONCLUSION&lt;/strong&gt;&lt;br&gt;
It is important to understand the following data structures and their different characteristics to ensure that given different scenarios one can be able to choose the most effective data structure  to use based on the expected requirements. &lt;br&gt;
In my next article, we will cover on the different methods that are used for different operations in these data structures.&lt;/p&gt;

</description>
      <category>python</category>
      <category>computerscience</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>INTRODUCTION TO DATA STRUCTURES AND ALGORITHMS</title>
      <dc:creator>Rhonajoy</dc:creator>
      <pubDate>Mon, 27 Jun 2022 20:36:54 +0000</pubDate>
      <link>https://dev.to/rhonajoyke/introduction-to-data-structures-and-algorithms-43po</link>
      <guid>https://dev.to/rhonajoyke/introduction-to-data-structures-and-algorithms-43po</guid>
      <description>&lt;p&gt;Data Structures and Algorithms is such an essential unit in computer science and programming because it helps us understand the nature of a programming problem at a deeper level. &lt;br&gt;
The name Data basically means a collection of Information, while structure would mean someplace holding in things.&lt;br&gt;
So therefore &lt;strong&gt;data structure&lt;/strong&gt; in technical terms translates to a named place that can be used for storing,organizing,manipulating data.&lt;br&gt;
An &lt;strong&gt;Algorithm&lt;/strong&gt; is simply a set of finite steps or instructions to solve a particular problem.&lt;br&gt;
Let us take for example that our goal is bake a cake, the algorithm to it would probably look like:&lt;br&gt;
&lt;em&gt;Mix up dry ingredients&lt;br&gt;
Mix up wet ingredients&lt;br&gt;
Mix-up the dry and wet ingredients &lt;br&gt;
Preheat oven&lt;br&gt;
Put cake in the oven for 45 minutes at 400 degrees celsius&lt;/em&gt;&lt;br&gt;
There are two main types of data structures. These include:&lt;br&gt;
&lt;strong&gt;Primitive Data structures&lt;/strong&gt;- They store data in one type.&lt;br&gt;
&lt;strong&gt;Non-Primitive Data Structures&lt;/strong&gt;-These store data of different types in a single unit.They  are further divided into two categories:&lt;br&gt;
&lt;strong&gt;LINEAR DATA STRUCTURES&lt;/strong&gt;&lt;br&gt;
These are those that are arranged in a line form. Meaning items come one after the other. Examples : Arrays,Queues,Stacks and Linked Lists&lt;br&gt;
&lt;strong&gt;NON-LINEAR DATA STRUCTURES&lt;/strong&gt;&lt;br&gt;
For these items are not arranged sequentially rather they are arranged in a hierarchical manner using nodes. Each node may be connected to two or more items. They are majorly categorized into two types, that is trees and graphs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GrVa8C9A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s6kqr2us0sc389lk2i9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GrVa8C9A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s6kqr2us0sc389lk2i9z.png" alt="primitive and non primitive data structures" width="469" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REAL LIFE APPLICATIONS DATA STRUCTURES&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Online bus booking systems&lt;/li&gt;
&lt;li&gt;Web Browsers&lt;/li&gt;
&lt;li&gt;Music player applications&lt;/li&gt;
&lt;li&gt;Google Maps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CHARACTERISTICS OF AN ALGORITHM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finiteness&lt;/strong&gt; - An algorithm must always stop after a finite number of steps.&lt;br&gt;
&lt;strong&gt;Definiteness&lt;/strong&gt; - Each step of an algorithm must be precisely defined,put in a clear and concise manner.&lt;br&gt;
&lt;strong&gt;Input&lt;/strong&gt; -An algorithm has zero or more inputs.&lt;br&gt;
&lt;strong&gt;Output&lt;/strong&gt;- An algorithm has one or more outputs.&lt;br&gt;
&lt;strong&gt;Effectiveness&lt;/strong&gt;- An algorithm is also generally expected to be effective. &lt;/p&gt;

&lt;p&gt;An algorithm’s performance is tested against two major metrics:&lt;br&gt;
The amount it takes to run- &lt;strong&gt;Time complexity&lt;/strong&gt;&lt;br&gt;
The amount of space it uses up during its execution- &lt;strong&gt;space complexity&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Guidelines of writing a good algorithm are:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An algorithm will be enclosed by START (or BEGIN) and STOP (or END).&lt;/li&gt;
&lt;li&gt;To accept user input we use statements such as INPUT, READ.&lt;/li&gt;
&lt;li&gt;To showcase results/ outputs  we use statements such as  PRINT, DISPLAY&lt;/li&gt;
&lt;li&gt;COMPUTE or CALCULATE is used while describing mathematical expressions and based on situation relevant operators can be used.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1: Start
Step 2: Declare variables num1, num2 and multiple.
Step 3: Read values num1 and num2.
Step 4: Multiply num1 and num2 and assign the result to multiple.
       multiple←num1*num2
Step 5: Display multiple
Step 6: Stop

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

&lt;/div&gt;



</description>
      <category>algorithms</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
