<?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>Forem: Justin Dominic S. Veloso</title>
    <description>The latest articles on Forem by Justin Dominic S. Veloso (@thatdot).</description>
    <link>https://forem.com/thatdot</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%2F1284818%2F0317ea4b-3288-4a49-8962-390bba63e889.png</url>
      <title>Forem: Justin Dominic S. Veloso</title>
      <link>https://forem.com/thatdot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/thatdot"/>
    <language>en</language>
    <item>
      <title>What If Exam Finals Were a Game? A Pinoy College-Themed Endless Arcade Made with Amazon Q and Pygame-CE</title>
      <dc:creator>Justin Dominic S. Veloso</dc:creator>
      <pubDate>Tue, 17 Jun 2025 00:07:26 +0000</pubDate>
      <link>https://forem.com/thatdot/what-if-exam-finals-were-a-game-a-pinoy-college-themed-parody-game-made-with-amazon-q-and-pygame-ce-k49</link>
      <guid>https://forem.com/thatdot/what-if-exam-finals-were-a-game-a-pinoy-college-themed-parody-game-made-with-amazon-q-and-pygame-ce-k49</guid>
      <description>&lt;p&gt;As a student developer who is exploring &lt;strong&gt;AWS technologies&lt;/strong&gt;, I recently came across &lt;strong&gt;Amazon Q&lt;/strong&gt; and its current event. The event encouraged participants to build a game, and that instantly hit a nostalgic chord in me. A few years ago, I've created a simple game in Unity without knowing how to code. Now, equipped with two years of coding experience and the help of Amazon Q, I managed to recreate that idea as a full parody arcade game using &lt;strong&gt;pygame-ce&lt;/strong&gt; in just one day!&lt;/p&gt;

&lt;p&gt;Although AI tools are not new to me and to everybody, it still amazes me how much faster development becomes with the use of it. So in this short post, I’ll be sharing a quick look at how Amazon Q helped me bring this fun small project to life. The game is called the "The Last Bluebook".&lt;/p&gt;

&lt;p&gt;Github Repository: &lt;a href="https://github.com/ThatDott/The-Last-Bluebook" rel="noopener noreferrer"&gt;https://github.com/ThatDott/The-Last-Bluebook&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Game Concept
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The Last Bluebook&lt;/em&gt; is an arcade-style projectile-avoiding game where you play as the final bluebook (exam book) during the final exam of the last semester. Inspired by the real academic pressure in Philippine universities, the game pokes fun at our collective fear of the &lt;em&gt;singko&lt;/em&gt; or 5.00 (failing grade). You collect checkmarks representing correct answers while dodging flying numeric grades, starting from 5.00 all the way to 1.00 (highest grade).&lt;/p&gt;

&lt;p&gt;Honestly, this was just a fun random idea that I thought of. Nothing serious, just a cutesy parody of Filipino college experience during the finals. The mechanics of the game is similar to the game I made before, but with a better and a relatable concept, meme sound effects, and better gameplay.&lt;/p&gt;

&lt;p&gt;Thanks to Amazon Q and &lt;code&gt;pygame-ce&lt;/code&gt;, I was able to rebuild the game from scratch in just &lt;strong&gt;one day&lt;/strong&gt;. The idea was goofy, but AI made it real—and fast, which shows how easy ideas become reality with these technology.&lt;/p&gt;




&lt;h2&gt;
  
  
  Effective Prompting Techniques I Discovered
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Be Specific About Implementation Details
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;"I want the multiplier to change color per level. Purple for highest, white for lowest."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Result:&lt;/strong&gt; Amazon Q generated a full system for visual feedback based on multiplier values.&lt;/p&gt;


&lt;h3&gt;
  
  
  Provide Clear Visual/Functional Requirements
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;"I want the projectiles to be numeric grades that evolve with difficulty (from 5.00 to 1.00)."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Result:&lt;/strong&gt; Amazon Q handled sprite asset switching logic, making implementation smooth and bug-free; leaving me a template wherein I can easily just import my assets.&lt;/p&gt;


&lt;h3&gt;
  
  
  Request Incremental Changes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;"Add background music and loop it."&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;"Now add two game over sound effects: one for passing, one for failing."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Benefit:&lt;/strong&gt; Helped build features layer by layer. This retains code context, reducing more bugs and confusion.&lt;/p&gt;


&lt;h3&gt;
  
  
  Refine and Simplify When Needed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;"Undo the multiple game over sounds; just have two types based on pass/fail."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Benefit:&lt;/strong&gt; Fast iteration when something felt too bloated.&lt;/p&gt;


&lt;h2&gt;
  
  
  How AI Handled Classic Programming Challenges
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Resource Management&lt;/strong&gt;&lt;br&gt;
Amazon Q helped build a reliable system for loading images and sounds with fallback behavior if assets were missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State Management&lt;/strong&gt;&lt;br&gt;
It organized game states like the start screen, gameplay, and game over screen using simple flags and clear conditions. This made transitions smooth and easy to control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collision Detection&lt;/strong&gt;&lt;br&gt;
It helped me implement sprite collision logic using bounding boxes, which made both the collectibles (checkmarks) and hazards (grades) work exactly as they should.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difficulty Scaling&lt;/strong&gt;&lt;br&gt;
The game gets harder every 5 points scored, and Amazon Q helped create a dynamic system that reasonably increased projectile rate that keeps the game hard but still enjoyable.&lt;/p&gt;


&lt;h2&gt;
  
  
  Examples of Development Automation That Saved Me Time
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Audio System Setup&lt;/strong&gt;&lt;br&gt;
I asked for background music with a mute toggle, and Amazon Q gave me the full implementation, including a looping playback using pygame-ce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprite Variants &amp;amp; Grade System&lt;/strong&gt;&lt;br&gt;
I prompted that different projectile should have different sprites based on difficulty, and it automatically mapped each grade (5.00 to 1.00) to a respective sprite. All I had to do is match the asset names.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multiplier System&lt;/strong&gt;&lt;br&gt;
I wanted a score multiplier that changed color based on level, and Q generated a complete UI system with color feedback, score tracking, and timer-based reset. I also followed up a prompt to add a pop-up effect for each collected score, and it implemented it the way I wanted it to be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Game-Over Logic&lt;/strong&gt;&lt;br&gt;
I asked Q to revert my initial complex changes and just use two different sounds and messages based on whether the player passed or failed, and the AI handled the whole logic and conditionals perfectly.&lt;/p&gt;


&lt;h2&gt;
  
  
  Code Examples of Interesting AI-Generated Solutions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Grade Sprite Selection&lt;/strong&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_projectile_image_for_level&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GRADE_SEQUENCE&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GRADE_SEQUENCE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;load_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.png&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;p&gt;This function matches the right sprite depending on the difficulty level (e.g. 5.00, 3.00, 1.00).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Randomized Projectile Angle&lt;/strong&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;angle_deviation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;radians&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uniform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;max_angle_deviation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_angle_deviation&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;final_angle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base_angle&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;angle_deviation&lt;/span&gt;
&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;final_angle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;projectile_speed&lt;/span&gt;
&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;final_angle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;projectile_speed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives projectiles a bit of unpredictability, so dodging them becomes more engaging over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart Point Placement to Avoid Spawning at Center&lt;/strong&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_point_position&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Generate a random position for the point object away from the center&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;point_size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SCREEN_WIDTH&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;point_size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;point_size&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SCREEN_HEIGHT&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;point_size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Check distance from center
&lt;/span&gt;        &lt;span class="n"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;CENTER_X&lt;/span&gt;
        &lt;span class="n"&gt;dy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;CENTER_Y&lt;/span&gt;
        &lt;span class="n"&gt;distance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dx&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;dy&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;dy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;distance&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;min_distance_from_center&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function ensures that new collectible points spawn randomly, but not too close to the center, where projectiles often originate. This small detail keeps gameplay fair and engaging.&lt;/p&gt;




&lt;h2&gt;
  
  
  Screenshots of Gameplay
&lt;/h2&gt;

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

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

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

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




&lt;p&gt;And that sums up my short journey! Honestly, I never thought I’d actually recreate this game. But with Amazon Q and a bit of free time, I pulled it off in a day. Super fun experience to explore game development with py-game too! Hope this game gets to Filipino College students. &lt;em&gt;Unta relatable siya sainyo! HAHAHAHA&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Download Link Here:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/ThatDott/The-Last-Bluebook/releases/tag/v1.1" rel="noopener noreferrer"&gt;https://github.com/ThatDott/The-Last-Bluebook/releases/tag/v1.1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>pygame</category>
      <category>ai</category>
    </item>
    <item>
      <title>Get Started with NoSQL: AWS DynamoDB Fundamentals</title>
      <dc:creator>Justin Dominic S. Veloso</dc:creator>
      <pubDate>Mon, 04 Nov 2024 15:51:14 +0000</pubDate>
      <link>https://forem.com/thatdot/get-started-with-nosql-aws-dynamodb-fundamentals-for-beginners-3ahb</link>
      <guid>https://forem.com/thatdot/get-started-with-nosql-aws-dynamodb-fundamentals-for-beginners-3ahb</guid>
      <description>&lt;p&gt;Behind the scenes of most modern applications is a vital component that brings websites and apps to life, the database. &lt;strong&gt;Databases&lt;/strong&gt; are in charge of storing all the different data and information that a web application uses. It is relied upon to store, retrieve, update, and query data for various purposes.&lt;/p&gt;

&lt;p&gt;In the programming world, one of the most important types of database is a non-relational database, often known as &lt;strong&gt;NoSQL databases&lt;/strong&gt;. These are typically used to store flexible, dynamic data that needs quick access. It is a very useful tool for web applications that require fast and flexible data exchange between the web server and the database.&lt;/p&gt;

&lt;p&gt;But here's the problem: dealing with databases is frequently regarded as &lt;strong&gt;one of the most difficult&lt;/strong&gt; aspects of development. In fact, it is an established joke in the programming community that the &lt;em&gt;backend&lt;/em&gt; side of development, where database maintenance occurs, is so much more difficult than the, often more visually satisfying, &lt;em&gt;frontend&lt;/em&gt;.&lt;/p&gt;

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




&lt;p&gt;So then, this is where &lt;strong&gt;Amazon Web Services (AWS)&lt;/strong&gt; comes in. Allowing us to worry no more, introducing their serverless, NoSQL, fully managed database: &lt;strong&gt;AWS DynamoDB&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2nw3dqd3qnuofnv5rpa.png" alt="Image description" width="240" height="160"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What is AWS DynamoDB
&lt;/h2&gt;

&lt;p&gt;DynamoDB is a scalable NoSQL database service that is completely managed and programmed for fast and consistent performance, &lt;strong&gt;with response times measured in single-digit milliseconds&lt;/strong&gt;. Since its creation in 2012, it has been an excellent match for modern serverless apps, catering to businesses of all sizes. DynamoDB effectively handles &lt;strong&gt;large workloads&lt;/strong&gt;, handling over a billion queries per hour and accommodating table sizes more than 200 TB, all while providing &lt;strong&gt;continuous availability and resiliency&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why use AWS DynamoDB?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High Availability and Resilience with Global Tables&lt;/strong&gt;: DynamoDB offers global tables that enable multi-active data replication across selected AWS Regions, ensuring 99.999% availability. This feature allows applications to access data locally, maintaining high performance in data delivery. This also avoids the probability of server downfalls due to its multiple tables around regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Integrations&lt;/strong&gt;: DynamoDB seamlessly integrates with various AWS services, facilitating the development of serverless applications. It integrates with AWS Lambda to automatically respond to events, Amazon S3 for simple data import and export, and Amazon Redshift for easy analytics without needing to move the data around. Having this feature provides your application easy access to other AWS technologies to assist you in development.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When to use AWS DynamoDB?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Need fast and reliable access to data for real-time applications, like finance or gaming.&lt;/li&gt;
&lt;li&gt;Want to reduce management tasks with automatic scaling and easy setup.&lt;/li&gt;
&lt;li&gt;Require low-latency access to data from different locations around the world.&lt;/li&gt;
&lt;li&gt;Need to handle changing amounts of traffic smoothly, like during busy gaming sessions or streaming events.&lt;/li&gt;
&lt;li&gt;Want strong data safety with features that ensure everything stays consistent and reliable.&lt;/li&gt;
&lt;li&gt;Need a system that grows easily as your data and user demands increase&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Intro to AWS DynamoDB (via CLI)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;. Make sure to install AWS CLI&lt;br&gt;
&lt;a href="https://aws.amazon.com/cli/" rel="noopener noreferrer"&gt;Install AWS CLI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;. Configure your IAM credentials in AWS CLI&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html" rel="noopener noreferrer"&gt;Configure AWS CLI&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Creating a Table
&lt;/h3&gt;

&lt;p&gt;The first action that you would do is to create a table. So, assuming we want to store data about video games. You would create a &lt;em&gt;Games&lt;/em&gt; table in DynamoDB with the following details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Partition key&lt;/strong&gt; — Developer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sort key&lt;/strong&gt; — GameTitle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Windows CMD):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb create-table ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--attribute-definitions&lt;/span&gt; ^
        &lt;span class="nv"&gt;AttributeName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Developer,AttributeType&lt;span class="o"&gt;=&lt;/span&gt;S ^
        &lt;span class="nv"&gt;AttributeName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;GameTitle,AttributeType&lt;span class="o"&gt;=&lt;/span&gt;S ^
    &lt;span class="nt"&gt;--key-schema&lt;/span&gt; ^
        &lt;span class="nv"&gt;AttributeName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Developer,KeyType&lt;span class="o"&gt;=&lt;/span&gt;HASH ^
        &lt;span class="nv"&gt;AttributeName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;GameTitle,KeyType&lt;span class="o"&gt;=&lt;/span&gt;RANGE ^
    &lt;span class="nt"&gt;--provisioned-throughput&lt;/span&gt; ^
        &lt;span class="nv"&gt;ReadCapacityUnits&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5,WriteCapacityUnits&lt;span class="o"&gt;=&lt;/span&gt;5 ^
    &lt;span class="nt"&gt;--table-class&lt;/span&gt; STANDARD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;/p&gt;

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




&lt;h3&gt;
  
  
  Writing Data
&lt;/h3&gt;

&lt;p&gt;After creating a table, you can then also insert several items into the &lt;em&gt;Games&lt;/em&gt; table that you created.&lt;/p&gt;

&lt;p&gt;(Windows CMD):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb put-item ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--item&lt;/span&gt; ^
        &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Epic Games&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;GameTitle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Fortnite&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Genre&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Battle Royale&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Rating&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;N&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;9&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt;

aws dynamodb put-item ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--item&lt;/span&gt; ^
        &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Rockstar Games&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;GameTitle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Grand Theft Auto V&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Genre&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Action-Adventure&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Rating&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;N&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt;

aws dynamodb put-item ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--item&lt;/span&gt; ^
        &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Valve&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;GameTitle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Half-Life 2&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Genre&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;First-Person Shooter&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Rating&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;N&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;9&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt;

aws dynamodb put-item ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--item&lt;/span&gt; ^
        &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Naughty Dog&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;GameTitle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;The Last of Us&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Genre&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Action-Adventure&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Rating&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;N&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Reading Data
&lt;/h3&gt;

&lt;p&gt;If you'd like to retrieve data about the data you wrote, you can also read the items that you created in the table.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;--consistent-read&lt;/code&gt; refers to the latest changes of your table&lt;/p&gt;

&lt;p&gt;(Windows CMD):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb get-item &lt;span class="nt"&gt;--consistent-read&lt;/span&gt; ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--key&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Valve&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;GameTitle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Half-Life 2&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;/p&gt;

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




&lt;h3&gt;
  
  
  Updating Data
&lt;/h3&gt;

&lt;p&gt;And of course! If you can write and read, you can also update existing data!&lt;/p&gt;

&lt;p&gt;(Windows CMD):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb update-item ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--key&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Developer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Valve&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;GameTitle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Half-Life 2&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt; ^
    &lt;span class="nt"&gt;--update-expression&lt;/span&gt; &lt;span class="s2"&gt;"SET Genre = :newval"&lt;/span&gt; ^
    &lt;span class="nt"&gt;--expression-attribute-values&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:newval&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;First-Person Shooter, Puzzle&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt; ^
    &lt;span class="nt"&gt;--return-values&lt;/span&gt; ALL_NEW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output: &lt;/p&gt;

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




&lt;h3&gt;
  
  
  Query Data
&lt;/h3&gt;

&lt;p&gt;With your existing table &lt;em&gt;Games&lt;/em&gt;, you can query the data that you wrote  by specifying &lt;em&gt;Developer&lt;/em&gt;. This will display all games that are associated with the partition key: &lt;em&gt;Developer&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;(Windows CMD):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb query ^
    &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games ^
    &lt;span class="nt"&gt;--key-condition-expression&lt;/span&gt; &lt;span class="s2"&gt;"Developer = :name"&lt;/span&gt; ^
    &lt;span class="nt"&gt;--expression-attribute-values&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:name&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;S&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Naughty Dog&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;/p&gt;

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




&lt;h3&gt;
  
  
  Deleting a Table
&lt;/h3&gt;

&lt;p&gt;Lastly, this step helps ensure that you aren't charged for resources that you aren't using by deleting the table you created.&lt;/p&gt;

&lt;p&gt;(Windows CMD):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws dynamodb delete-table &lt;span class="nt"&gt;--table-name&lt;/span&gt; Games
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;/p&gt;

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




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

&lt;p&gt;In this short article, you have learned the fundamentals of AWS DynamoDB, specifically on creating a table, inserting and updating data, all the while using the command-line interface to perform such actions. DynamoDB is a good choice for developers trying to produce quick, dependable, and serverless apps. It is because of its high availability, scalability, and seamless connection with other AWS services. You are now ready to implement NoSQL on your applications. You may learn more about AWS DynamoDB in their official documentation below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/dynamodb/?icmpid=docs_homepage_featuredsvcs" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/dynamodb/?icmpid=docs_homepage_featuredsvcs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>dynamodb</category>
      <category>aws</category>
    </item>
    <item>
      <title>Improving User Experience: The Role of Lazy Loading in Web Development using ReactJs</title>
      <dc:creator>Justin Dominic S. Veloso</dc:creator>
      <pubDate>Mon, 19 Feb 2024 13:25:55 +0000</pubDate>
      <link>https://forem.com/up_min_sparcs/improving-user-experience-the-role-of-lazy-loading-in-web-development-using-reactjs-4c7h</link>
      <guid>https://forem.com/up_min_sparcs/improving-user-experience-the-role-of-lazy-loading-in-web-development-using-reactjs-4c7h</guid>
      <description>&lt;p&gt;This article was co-authored by &lt;a class="mentioned-user" href="https://dev.to/teocutie0213"&gt;@teocutie0213&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;In today's continuously evolving digital era, where online visibility has become synonymous with success, the performance of a website plays a significant impact on influencing user experiences. The internet has evolved into a dynamic environment in which users expect smooth and quick interactions. In such a setting, &lt;strong&gt;web performance&lt;/strong&gt; can be a very essential key in constructing a successful website.&lt;/p&gt;

&lt;p&gt;Web performance refers to how quickly and efficiently a website or web application loads and responds to user interactions. It includes several factors such as &lt;strong&gt;page load times, responsiveness, and general efficiency&lt;/strong&gt; in providing material to visitors. In today's digital environment filled with fast-paced transactions, users have increasingly high expectations about the speed and smoothness of their online interactions.&lt;/p&gt;

&lt;p&gt;At the core of effective web design is &lt;strong&gt;User Experience (UX)&lt;/strong&gt;, wherein web performance stands out as a critical component. Users, consciously or unconsciously, criticize a website based on how quickly it responds. A slow and complicated website can cause dissatisfaction, a poor user experience, ultimately leading to shorter and lesser page visits.&lt;/p&gt;

&lt;p&gt;Following that, web performance is fundamentally linked to &lt;strong&gt;user satisfaction&lt;/strong&gt; in the digital space. As customers want quick services and seamless experiences, designers and developers must prioritize the optimization of the performance of their websites. In the following section, we will look deeper into a specific technique, known as &lt;strong&gt;lazy loading&lt;/strong&gt;, that helps to improve web performance, and as a result, a better overall user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Lazy Loading?
&lt;/h2&gt;

&lt;p&gt;Lazy loading, also called &lt;em&gt;on-demand loading&lt;/em&gt;, is a technique used in web development to improve web performance by delaying the loading of unnecessary content until when it is actually required. This method enables websites to prioritize the loading of key elements, such as images, scripts, or other resources, that users see instantly when they arrive on a page.&lt;/p&gt;

&lt;p&gt;Meanwhile, in the traditional method, page elements are loaded all at once, which can result in lengthier loading times; where its drop in loading speed is caused by the loaded content that is not immediately required. On the other hand, lazy loading selectively loads material according to the user’s perspective and interactions, reducing the initial page load time and offering a faster and more responsive user interface.&lt;/p&gt;

&lt;p&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%2Fof330lrnzze8mm23zxck.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%2Fof330lrnzze8mm23zxck.png" alt="Lazy Loaded Image" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following are the benefits or advantages of adapting Lazy loading in websites:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Faster Initial Page Load&lt;/strong&gt; - By loading only the necessary material in the beginning, websites may greatly decrease the amount of data transferred over the network, resulting in faster page loading times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Resource Management&lt;/strong&gt; - Lazy loading minimizes the use of system resources, and avoids using unnecessary memory and rendering power.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced User Engagement&lt;/strong&gt; - Visitors can begin interacting with the accessible material sooner, without being slowed by lengthy loading times. This can improve user satisfaction and encourage longer engagement periods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimized Performance for Graphic-Heavy Websites&lt;/strong&gt; - From a user experience perspective, a smoother experience can be achieved, particularly for pages with a lot of images and videos as content.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Implementing Lazy Loading using ReactJs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native Lazy Loading:&lt;/strong&gt; Use the loading="lazy" attribute on your img tags to enable native lazy loading in modern browsers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Foyjwd0viu31k122p2k2z.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%2Foyjwd0viu31k122p2k2z.png" alt="Native Lazy Loading" width="512" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React Lazy and Suspense:&lt;/strong&gt; You can combine React.lazy() and React.Suspense to dynamically load components only when they are needed, while also providing a fallback UI during the loading process. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Feozdizx2h5gl1kti9693.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%2Feozdizx2h5gl1kti9693.png" alt="React Lazy" width="512" height="29"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fjlp7q7ez430a5y17s2ry.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%2Fjlp7q7ez430a5y17s2ry.png" alt="Suspense" width="512" height="82"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error Boundaries:&lt;/strong&gt; Use error boundaries to handle any errors that occur when lazy-loaded components fail to load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Fdrdgvrxw0dq94s6e4xu6.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%2Fdrdgvrxw0dq94s6e4xu6.png" alt="Error Boundaries" width="512" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Route-based Lazy Loading:&lt;/strong&gt; Use dynamic imports with React Router to lazily load route components
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2F8vtnlw1c46v4fe69k9z6.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%2F8vtnlw1c46v4fe69k9z6.png" alt="Route-based Lazy Loading" width="512" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices and Tips
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;General best practices for implementing lazy loading effectively&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prioritize Content:&lt;/strong&gt; Identify and prioritize the critical content that needs to be loaded initially to ensure a smooth user experience. Lazy load non-essential information to minimize initial loading times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimize Images:&lt;/strong&gt; Optimize images for the web to reduce file sizes without compromising quality. Consider using responsive image techniques and formats like WebP to further enhance performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chunking and Code Splitting:&lt;/strong&gt; Implement code splitting techniques to break down your codebase into smaller, manageable chunks. This allows for more efficient lazy loading of components and resources, reducing the initial payload size.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Loading Priorities:&lt;/strong&gt; Determine the loading priorities for different resources based on user interactions and page structure. Load critical resources first and progressively load less important content as the user engages with the page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fallback Mechanisms:&lt;/strong&gt; Implement fallback mechanisms, such as placeholders or loading spinners, to provide users with visual feedback while lazy-loaded content is being fetched. This helps manage user expectations and improves perceived performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Common pitfalls to avoid&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Over-Lazy Loading:&lt;/strong&gt; Avoid excessive lazy loading, as it can lead to unnecessary delays in content delivery and degrade the user experience. Strike a balance between lazy loading and loading critical resources upfront for optimal performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ignoring SEO Impact:&lt;/strong&gt; Consider the SEO implications of lazy loading, especially for content that contributes to search engine rankings. Ensure that lazy-loaded content is accessible to search engine crawlers and properly indexed for improved visibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incomplete Fallbacks:&lt;/strong&gt; Ensure that fallback mechanisms are implemented effectively to handle cases where lazy-loaded content fails to load or encounters errors. Provide informative error messages and graceful degradation to mitigate user frustration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of Monitoring and Optimization:&lt;/strong&gt; Continuously monitor and optimize lazy loading performance based on real user data and feedback. Regularly review and refine lazy loading strategies to address evolving user needs and technological advancements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Lazy Loading is an effective strategy for speeding up and improving website performance. It's all about having web pages load and respond to user input more swiftly. Lazy Loading makes your website more efficient, providing a better experience for your web users. Today's digital world is full of fancy websites with interesting designs and animations. However, making these sites run smoothly can be difficult. This is where Lazy Loading comes in useful. It is becoming increasingly significant since it allows websites to keep up with designers' creative ideas.&lt;/p&gt;

&lt;p&gt;Lazy Loading is a behind-the-scenes assistance, ensuring that content loads quickly, providing users with a seamless experience when exploring your website. It's more than simply a great idea; it should become a regular practice for web developers, and that aspiring designers should also look into it to improve and make their websites more accessible to everybody.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Sources: *&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://www.geeksforgeeks.org/what-is-lazy-loading/"&gt;https://www.geeksforgeeks.org/what-is-lazy-loading/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://ijcrt.org/papers/IJCRT2006238.pdf"&gt;https://ijcrt.org/papers/IJCRT2006238.pdf&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>lazyloading</category>
      <category>optimization</category>
      <category>react</category>
    </item>
  </channel>
</rss>
