<?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: jConn4177</title>
    <description>The latest articles on DEV Community by jConn4177 (@jconn4177).</description>
    <link>https://dev.to/jconn4177</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%2F1130173%2Fe52805dd-6bcc-4f46-99bb-66398dbcff58.jpg</url>
      <title>DEV Community: jConn4177</title>
      <link>https://dev.to/jconn4177</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jconn4177"/>
    <language>en</language>
    <item>
      <title>Building UltimateTracker - A Modern Web App for Tournament Management</title>
      <dc:creator>jConn4177</dc:creator>
      <pubDate>Mon, 11 Dec 2023 01:09:49 +0000</pubDate>
      <link>https://dev.to/jconn4177/building-ultimatetracker-a-modern-web-app-for-tournament-management-2d7n</link>
      <guid>https://dev.to/jconn4177/building-ultimatetracker-a-modern-web-app-for-tournament-management-2d7n</guid>
      <description>&lt;p&gt;In the world of competitive gaming, organizing and tracking tournaments can be a formidable task. UltimateTracker is a web application built to streamline this process. This post explores the technical aspects of creating this app using a stack comprising ReactJS, Flask, Formik, PostgreSQL, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack Overview
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: ReactJS, React-Dom, React-Bootstrap, Formik&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Flask, Flask-Restful, SQLAlchemy, Flask-JWT-Extended, Flask-Bcrypt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management&lt;/strong&gt;: React-Redux, @reduxjs/toolkit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Others&lt;/strong&gt;: Python-dotenv, Marshmallow, Datetime, Flask-Cors&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Backend: Flask with SQLAlchemy and Flask-Restful
&lt;/h2&gt;

&lt;p&gt;The backend of UltimateTracker is built with Flask, offering a lightweight and efficient server. SQLAlchemy, an ORM (Object-Relational Mapping) tool, is used for database interactions. Flask-Restful simplifies the creation of REST APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Models
&lt;/h3&gt;

&lt;p&gt;We defined several models, such as &lt;code&gt;User&lt;/code&gt;, &lt;code&gt;Tournament&lt;/code&gt;, and &lt;code&gt;Match&lt;/code&gt;, using SQLAlchemy. These models handle data related to users, tournaments, and matches respectively.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Tournament&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SerializerMixin&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;__tablename__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tournaments&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="c1"&gt;# ... fields ...
&lt;/span&gt;    &lt;span class="n"&gt;serialize_rules&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-matches&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-registrations&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  API Endpoints
&lt;/h3&gt;

&lt;p&gt;Flask-Restful resources were created for handling different entities like users and tournaments. These resources are then added to routes in &lt;code&gt;routes.py&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TournamentResource&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/tournaments/&amp;lt;int:id&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Frontend: ReactJS with Formik and React-Bootstrap
&lt;/h2&gt;

&lt;p&gt;ReactJS, known for its component-based architecture, is used for the frontend. Formik assists in form handling, while React-Bootstrap offers styled React components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Routing with React-Router-Dom
&lt;/h3&gt;

&lt;p&gt;React-Router-Dom handles navigation within the app. The &lt;code&gt;RouterProvider&lt;/code&gt; from React-Router-Dom is used to define routes in &lt;code&gt;App.jsx&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createBrowserRouter&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Home&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;// ... other routes ...&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  State Management with React-Redux and @reduxjs/toolkit
&lt;/h3&gt;

&lt;p&gt;React-Redux, along with @reduxjs/toolkit, is used for global state management. This setup efficiently manages states like user authentication and tournament data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handling Forms with Formik
&lt;/h3&gt;

&lt;p&gt;Formik is instrumental in managing form states and validations. For instance, the creation of new tournaments is managed using Formik in &lt;code&gt;CreateNewTournament.jsx&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Formik&lt;/span&gt; &lt;span class="na"&gt;initialValues&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* initial values */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onSubmit&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleSubmit&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* Form content */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Formik&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Challenges and Solutions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Challenge: Complex State Management
&lt;/h3&gt;

&lt;p&gt;Managing the state of various components and API calls was complex. React-Redux, along with @reduxjs/toolkit, provided a streamlined way to handle this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge: Form Validation and Handling
&lt;/h3&gt;

&lt;p&gt;Formik was instrumental in simplifying form handling and validation, especially in cases like tournament creation and user registration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building UltimateTracker was a comprehensive exercise in full-stack development. Utilizing a blend of technologies like ReactJS, Flask, and Redux, along with supportive libraries and tools, allowed us to create a robust and user-friendly app for tournament management.&lt;/p&gt;

&lt;p&gt;Stay tuned for further updates and expansions to UltimateTracker as I continue to enhance its features and capabilities!&lt;/p&gt;




&lt;p&gt;For more information, insights, or to contribute to the project, feel free to reach out or visit our GitHub repository. Your feedback and contributions are always welcome!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jConn4177/UltimateTrackerV2"&gt;https://github.com/jConn4177/UltimateTrackerV2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Mastering Vertical Slicing: The Cornerstone of Agile Development</title>
      <dc:creator>jConn4177</dc:creator>
      <pubDate>Mon, 23 Oct 2023 15:30:20 +0000</pubDate>
      <link>https://dev.to/jconn4177/mastering-vertical-slicing-the-cornerstone-of-agile-development-2bbm</link>
      <guid>https://dev.to/jconn4177/mastering-vertical-slicing-the-cornerstone-of-agile-development-2bbm</guid>
      <description>&lt;p&gt;In the dynamic realm of software development, agility and efficiency are paramount. To maximize these qualities, a practice known as "vertical slicing" has emerged as a game-changing strategy. Instead of approaching projects in a horizontal manner, where each layer of the software stack is developed separately, vertical slicing encourages developers to focus on one feature at a time, building all the necessary components from top to bottom. In this blog post, we'll delve into the concept of vertical slices and explore its significance in the world of agile software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Vertical Slicing
&lt;/h2&gt;

&lt;p&gt;Visualize your software project as a grid, with desired features listed in columns and different layers of the software stack in rows. This grid may encompass items such as migrations, models, seed data, controller actions, view logic, data fetching, and styling. Each feature, represented as a column, is treated as a vertical slice that traverses all architectural layers to deliver visible value to the end user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Story Splitting Matters
&lt;/h2&gt;

&lt;p&gt;Breaking down a project into prioritized, small user stories is essential for agile teams. However, many teams struggle to divide extensive user stories into more manageable units. Instead of achieving small vertical slices that cut through their architecture, they end up with stories that resemble tasks or architectural components. This approach falls short of delivering the value or feedback that small stories should provide.&lt;/p&gt;

&lt;p&gt;Fortunately, the skill of story splitting can be acquired relatively quickly, significantly enhancing a team's efficiency and agility. Let's explore what constitutes a good user story and how it aligns with the concept of vertical slicing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a Good User Story?
&lt;/h2&gt;

&lt;p&gt;Before delving into story splitting, it's imperative to understand the elements of a good user story. At its core, a user story is a description of a change in system behavior from the user's perspective. It outlines something a user wants to accomplish with the system or something they expect the system to do for them, which it currently does not.&lt;/p&gt;

&lt;p&gt;User stories are typically structured as follows:&lt;/p&gt;

&lt;p&gt;As a [role], I want [action or feature] so that [value or goal].&lt;br&gt;
This format aids in addressing three essential questions:&lt;/p&gt;

&lt;p&gt;Who is the intended user?&lt;br&gt;
What do they want to achieve or have the system do?&lt;br&gt;
Why do they want this?&lt;br&gt;
While this template is valuable, it is not always necessary to use it in its entirety. A concise title, supported by additional context, can often suffice. The goal is to maintain a focus on the user's perspective throughout the development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  INVEST in Good User Stories
&lt;/h2&gt;

&lt;p&gt;Bill Wake introduced the INVEST acronym to highlight six crucial attributes of good user stories:&lt;/p&gt;

&lt;p&gt;Independent&lt;br&gt;
Negotiable&lt;br&gt;
Valuable&lt;br&gt;
Estimable&lt;br&gt;
Small&lt;br&gt;
Testable&lt;br&gt;
These attributes guide the creation of effective user stories. For instance, stories should be independent, meaning they can be prioritized without relying on technical dependencies. They should also be negotiable, allowing room for collaboration on details. Additionally, stories must deliver visible value to users, be estimable in terms of effort, small enough to fit into a sprint, and testable to determine when they are complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  User Stories Are Vertical Slices
&lt;/h2&gt;

&lt;p&gt;The term "vertical slice" is closely associated with good user stories. A vertical slice represents a work item that delivers a valuable change in system behavior, necessitating adjustments across multiple architectural layers. When a vertical slice is completed, the system becomes observably more valuable to users.&lt;/p&gt;

&lt;p&gt;In contrast, a horizontal slice refers to a work item that concentrates on changes to a single component or architectural layer. Such slices must be combined with changes in other layers to provide observable value to users.&lt;/p&gt;

&lt;p&gt;To achieve most of the INVEST attributes, a story often needs to touch all three core architectural layers: the UI, business logic, and the database. This is why a story is considered a vertical slice through the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Working with Vertical Slices
&lt;/h2&gt;

&lt;p&gt;When teams embrace vertical slicing, several advantages emerge:&lt;/p&gt;

&lt;p&gt;Explicit Value: The backlog reflects the value delivered to users, making it easier to prioritize and plan.&lt;/p&gt;

&lt;p&gt;Value-Centric Conversations: Teams engage in more discussions about the value of features, fostering a deeper understanding.&lt;/p&gt;

&lt;p&gt;Reduced Low-Value Work: Vertical slices discourage the development of low-value changes or unnecessary features.&lt;/p&gt;

&lt;p&gt;Faster Value Delivery: Teams deliver value sooner in the development process.&lt;/p&gt;

&lt;p&gt;High-Quality Feedback: Early feedback ensures higher-quality results.&lt;/p&gt;

&lt;p&gt;Improved Visibility: Constraints and inventory become more visible, allowing teams to respond effectively.&lt;/p&gt;

&lt;p&gt;Predictability: Working software becomes the primary measure of progress, enhancing predictability.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Conclusion:
&lt;/h2&gt;

&lt;p&gt;In the ever-evolving landscape of software development, the concept of vertical slicing has proven to be a powerful strategy for building agile, efficient, and value-driven software. By focusing on delivering small, valuable, and testable user stories that cut across architectural layers, development teams can maximize their productivity, respond to user needs more effectively, and ultimately deliver high-quality software that meets customer expectations. So, the next time you embark on a software project, consider adopting the vertical slicing approach to enhance your development process.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Guide to the Best Python Libraries and Modules for SQL</title>
      <dc:creator>jConn4177</dc:creator>
      <pubDate>Sun, 01 Oct 2023 17:05:18 +0000</pubDate>
      <link>https://dev.to/jconn4177/guide-to-the-best-python-libraries-and-modules-for-sql-21p0</link>
      <guid>https://dev.to/jconn4177/guide-to-the-best-python-libraries-and-modules-for-sql-21p0</guid>
      <description>&lt;p&gt;Python and SQL are two powerful technologies that are often used in tandem for data manipulation, analysis, and management. Python provides a versatile programming environment, while SQL (Structured Query Language) is the go-to language for working with relational databases. To harness the full potential of these technologies, developers often rely on a range of Python libraries and modules that facilitate seamless integration with SQL databases. In this blog post, we will explore the best libraries and modules for Python when working with SQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. SQLAlchemy
&lt;/h2&gt;

&lt;p&gt;SQLAlchemy is a popular Python library that provides a high-level, database-agnostic interface for working with relational databases. It supports various database systems, including PostgreSQL, MySQL, SQLite, and more. SQLAlchemy enables developers to interact with databases using Python objects and expressions, making database operations more Pythonic and expressive. Whether you need to query databases, create tables, or perform complex joins, SQLAlchemy has you covered.&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%2Fgwz487ge5jd6wt4hn4wa.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%2Fgwz487ge5jd6wt4hn4wa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. psycopg2 (for PostgreSQL)
&lt;/h2&gt;

&lt;p&gt;If you're working with PostgreSQL, psycopg2 is a must-have library for Python. It provides a low-level interface to interact with PostgreSQL databases, allowing you to execute SQL queries, manage transactions, and work with database connections efficiently.&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%2F5acqp551r1o49664xeqa.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%2F5acqp551r1o49664xeqa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. PyMySQL (for MySQL)
&lt;/h2&gt;

&lt;p&gt;When working with MySQL databases, PyMySQL is a reliable library for Python. It provides a Pythonic interface for MySQL, allowing you to connect to the database, execute queries, and manage data seamlessly.&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%2F0cpmj87tq1g68rof6ny8.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%2F0cpmj87tq1g68rof6ny8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. pandas
&lt;/h2&gt;

&lt;p&gt;pandas is a versatile data manipulation library for Python that works exceptionally well with SQL databases. It allows you to read SQL query results directly into dataframes, making it easy to analyze and manipulate data. pandas also supports various data formats, making it an excellent tool for data preprocessing before storing it in a database or extracting data for analysis.&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%2Fuga8pq2f67t78hbh0usa.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%2Fuga8pq2f67t78hbh0usa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In Conclusion
&lt;/h2&gt;

&lt;p&gt;Python's versatility and SQL's data management capabilities make them a powerful combination for a wide range of applications. To harness this power effectively, developers can rely on libraries and modules like SQLAlchemy, psycopg2, PyMySQL, and pandas. These tools streamline database operations, enhance data analysis, and simplify the development process, ultimately allowing you to build robust and data-driven applications. Whether you're working with PostgreSQL, MySQL, SQLite, or other databases, the right Python library can significantly improve your workflow and productivity. So, choose the ones that best fit your project's needs, and start building amazing database-driven applications today!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>sql</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Exploring React: Power in Structure</title>
      <dc:creator>jConn4177</dc:creator>
      <pubDate>Sat, 09 Sep 2023 04:33:39 +0000</pubDate>
      <link>https://dev.to/jconn4177/exploring-react-power-in-structure-20k2</link>
      <guid>https://dev.to/jconn4177/exploring-react-power-in-structure-20k2</guid>
      <description>&lt;p&gt;  In the world of web development, understanding the intricacies of React can sometimes feel like navigating a bustling city. With its diverse neighborhoods, modular buildings, urban planning, customized architecture, dynamic streets, and efficient infrastructure, React serves as the thriving cityscape where your web applications come to life. &lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3kM6RTL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1wsddodktt7ql3bxm681.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3kM6RTL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1wsddodktt7ql3bxm681.jpg" alt="Image description" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Diverse Neighborhoods
&lt;/h2&gt;

&lt;p&gt;  Imagine React as a city where every neighborhood is unique, just like each React component serves a distinct purpose in your application. These neighborhoods can be compared to residential, commercial, or recreational areas, similar to how React components can handle content display, form handling, or data management.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aocqBveq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gqcmx7imm4c4kewsi88m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aocqBveq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gqcmx7imm4c4kewsi88m.png" alt="Image description" width="800" height="472"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Modular Buildings
&lt;/h2&gt;

&lt;p&gt;  Within each neighborhood of React's city, you'll find modular buildings, just like React components that are designed for reuse throughout your application. These buildings can be customized to suit different parts of the city, ensuring flexibility and efficiency.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q8fCf_IV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3jvyfv2d9cgz13y3c71z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q8fCf_IV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3jvyfv2d9cgz13y3c71z.png" alt="Image description" width="800" height="1010"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Urban Planning
&lt;/h2&gt;

&lt;p&gt;  The layout of streets and neighborhoods in this React city closely mirrors the structure of your application. You play the role of the urban planner, deciding where to position each neighborhood (component) to create a well-organized and user-friendly environment for your users.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YB8Algbk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7fkuo2mqoi41lv8whttm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YB8Algbk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7fkuo2mqoi41lv8whttm.png" alt="Image description" width="800" height="1209"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Customized Architecture
&lt;/h2&gt;

&lt;p&gt;  In our React city, each building boasts its own architectural style, interiors, and purposes. Similarly, React components can be customized with unique styles, behaviors, and interactions to perfectly align with your application's specific needs and aesthetics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s6EPejCP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hrt1dqvfjs0aeyvi3zrp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s6EPejCP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hrt1dqvfjs0aeyvi3zrp.png" alt="Image description" width="800" height="1253"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Dynamic Streets
&lt;/h2&gt;

&lt;p&gt;  As you stroll through this vibrant React city, you'll notice that some streets are bustling with activity, while others exude a peaceful and serene ambiance. Likewise, in React, you have the power to add dynamic interactions and animations to certain components, creating a lively and engaging user experience.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2leJil0X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/edvgrnej0gfvr22y1ybs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2leJil0X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/edvgrnej0gfvr22y1ybs.png" alt="Image description" width="800" height="899"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Efficient Infrastructure
&lt;/h2&gt;

&lt;p&gt;  Every thriving city relies on efficient infrastructure for transportation and resource distribution. In React, the virtual DOM serves as the backbone, optimizing the rendering process to ensure that updates are carried out efficiently and responsively, just like a well-maintained city infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qunZNmTu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qbprcktqh6va6v2pn1ww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qunZNmTu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qbprcktqh6va6v2pn1ww.png" alt="Image description" width="800" height="1032"&gt;&lt;/a&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;  In conclusion, thinking of React as a bustling city with its neighborhoods, buildings, streets, and infrastructure can provide you with a vivid and relatable way to understand its component-based approach. As you continue your journey into the world of React, remember that each component plays a unique role in building a vibrant and user-friendly digital landscape, much like the diverse elements that make a city come alive.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>Exploring CRUD Operations and Fetch Methods in JavaScript</title>
      <dc:creator>jConn4177</dc:creator>
      <pubDate>Fri, 18 Aug 2023 21:34:28 +0000</pubDate>
      <link>https://dev.to/jconn4177/exploring-crud-operations-and-fetch-methods-in-javascript-187l</link>
      <guid>https://dev.to/jconn4177/exploring-crud-operations-and-fetch-methods-in-javascript-187l</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;    For web developers, understanding how to manipulate data is crucial. An important acronym for describing these operations is CRUD: Create, Read, Update, and Delete.  These operations form the backbone of data management.&lt;br&gt;
    Fetch methods are an example of the means in which developers can use JavaScript to interact with APIs and databases with ease.  In this blog I will be going into detail about some of the functionality of CRUD operations and explore the Fetch API.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Basics of C.R.U.D. Operations
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  Create:
&lt;/h3&gt;

&lt;p&gt;    The first word in the CRUD acronym, &lt;strong&gt;Create&lt;/strong&gt;, entails the adding &lt;em&gt;new&lt;/em&gt; data to a data source. This can include a range of actions from submitting a form on an App to creating a user profile.&lt;br&gt;&lt;br&gt;
     &lt;/p&gt;

&lt;h3&gt;
  
  
  Read:
&lt;/h3&gt;

&lt;p&gt;    The second word in the CRUD acronym, &lt;strong&gt;Read&lt;/strong&gt;, describes the process of retrieving data from a source. This could, for example, include fetching a user's profile information after logging in, or returning data from a search function.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mcuPOMYF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3b88o6nl9kur5icm7ka3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mcuPOMYF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3b88o6nl9kur5icm7ka3.png" alt="Picture of a search bar" width="594" height="92"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  Update:
&lt;/h3&gt;

&lt;p&gt;    The &lt;strong&gt;U&lt;/strong&gt; in CRUD stands for &lt;strong&gt;Update&lt;/strong&gt;.  When you update data, you're modifying an existing data-point.  You could be replacing data with entirely new data or even just modifying a specific piece of data.  An example would be modifying your profile picture, or editing an embarrassing list of your favorite bands.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E6oUd2zY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1iakb6aqx3673xkz22r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E6oUd2zY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1iakb6aqx3673xkz22r.png" alt="picture of Band Names crossed out" width="413" height="155"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  Delete:
&lt;/h3&gt;

&lt;p&gt;    The final word of the CRUD acronym is &lt;strong&gt;Delete&lt;/strong&gt;.  This operation, as its name implies, encompasses deleting data from a source. An example of &lt;strong&gt;Delete&lt;/strong&gt; would be removing a regrettable post on a social media platform.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XD6_zKBe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8by5tpzmjb1ypgwocymk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XD6_zKBe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8by5tpzmjb1ypgwocymk.png" alt="Image of #covfefe" width="206" height="65"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Fetch API
&lt;/h2&gt;

&lt;p&gt; &lt;br&gt;&lt;br&gt;
    The Fetch API functions as a versatile (and powerful) tool in JavaScript for accomplishing your CRUD goals and interacting with API's. It is one of the first thing new developers learn after grasping the basics of JavaScript.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  fetch() GET Method; Reading the Data:
&lt;/h3&gt;

&lt;p&gt;    The fetch() function will start a GET request to a specific URL (placed in the fetch parentheses 'fetch(urlHere)'), and return a "Promise" that turns into whatever server you are accessing's data into a response from the server. In turn, this response can be turned into a readable format, such as JSON.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ReaOia_v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i716o0b8410mijz1byej.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ReaOia_v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i716o0b8410mijz1byej.png" alt="visual for fetching data" width="800" height="247"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  fetch() POST Method; Creating the Data:
&lt;/h3&gt;

&lt;p&gt;    When you are writing or creating new data, you will be utilizing the fetch() POST method. When using the POST method, you have to supply the URL (same as with the GET method!), and an object that holds specifies the type of method ("POST" in this example), the headers, and the specific data you want to send to the server.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MhEi7PGw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ma1zxsxr0vlc3ezyxol0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MhEi7PGw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ma1zxsxr0vlc3ezyxol0.png" alt="visual for posting data" width="800" height="259"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  fetch() PUT or PATCH Method; Updating the Data:
&lt;/h3&gt;

&lt;p&gt;    To update data, you would utilize the fetch() PUT or PATCH methods.  Like the POST method, you need to use the server URL and provide an object with the information you need to edit, along with how to that information.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nn25cXyC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4mi2cxpflrozixekqzhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nn25cXyC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4mi2cxpflrozixekqzhu.png" alt="visual for patching data" width="800" height="259"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  fetch() DELETE; Deleting the Data:
&lt;/h3&gt;

&lt;p&gt;    To remove data from a dataset, you will utilize the fetch() DELETE method.  It will send a request to the server to delete a particular set of data, and the server in turn will remove the specified bit.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EJPxfsle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7gpcj3mwf7wzafdf6hp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EJPxfsle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7gpcj3mwf7wzafdf6hp0.png" alt="visual for deleting data" width="800" height="180"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h2&gt;
  
  
  In Conclusion:
&lt;/h2&gt;

&lt;p&gt;    Learning the ins and outs of CRUD operations and how to utilize fetch methods in order to achieve those CRUD operations will be imperative to your development as a developer.  These tools and strategies will empower you to create cool and dynamic web applications that have a highly interactive user experience.  Mastering how to utilize &lt;strong&gt;Create&lt;/strong&gt;, &lt;strong&gt;Read&lt;/strong&gt;, &lt;strong&gt;Update&lt;/strong&gt;, and &lt;strong&gt;Delete&lt;/strong&gt; using fetch methods &lt;strong&gt;GET&lt;/strong&gt;, &lt;strong&gt;POST&lt;/strong&gt;, &lt;strong&gt;PATCH&lt;/strong&gt;, and &lt;strong&gt;DELETE&lt;/strong&gt; will be a major step in your learning journey.&lt;br&gt;&lt;br&gt;
   &lt;/p&gt;

&lt;h3&gt;
  
  
  On a More Personal Note About My Experiences:
&lt;/h3&gt;

&lt;p&gt; &lt;br&gt;&lt;br&gt;
    I chose to write about this particular subject in my first blog-post because I know i struggled with the concept of understanding how fetch() communicates with the server.  While learning about it I was hoping to find a less technical explanation with visual aids, but I struggled to find anything that I found satisfactory in that regard.&lt;br&gt;
    I am really hoping that this post can provide that to another person out there in the world.  I would also like to add that if anyone is struggling to understand coding concepts and functions:  &lt;em&gt;Don't give up!&lt;/em&gt;&lt;br&gt;&lt;br&gt;
    Learning a new skill is incredibly difficult, but hopefully the task can be rewarding and push you to grow through the experience.  I implore you to keep struggling (or if not if you are a savant), and whether you succeed or fail, know that in the end you have bettered yourself, one way or another.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>database</category>
    </item>
  </channel>
</rss>
