<?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: Kunal Agrawal</title>
    <description>The latest articles on DEV Community by Kunal Agrawal (@itskunal).</description>
    <link>https://dev.to/itskunal</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%2F830225%2Ffa5880f7-1ebd-4498-acb3-be64f6b07273.jpeg</url>
      <title>DEV Community: Kunal Agrawal</title>
      <link>https://dev.to/itskunal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itskunal"/>
    <language>en</language>
    <item>
      <title>When Shouldn't You Use Redis?</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Tue, 28 May 2024 17:58:00 +0000</pubDate>
      <link>https://dev.to/itskunal/when-shouldnt-you-use-redis-1hd1</link>
      <guid>https://dev.to/itskunal/when-shouldnt-you-use-redis-1hd1</guid>
      <description>&lt;p&gt;Well we can say that - &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Redis: Where your data goes to wait for someone to remember it exists. 💀&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExdGFhNGZ4MXljcnZ4bGl2bTcwYm1hNzRqbGNyMGJyaTB4bm10cXYwYyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/pjPfdL0lAmhuwcuM59/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExdGFhNGZ4MXljcnZ4bGl2bTcwYm1hNzRqbGNyMGJyaTB4bm10cXYwYyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/pjPfdL0lAmhuwcuM59/giphy.gif" alt="image" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or an extra layer of database to make your application fast.&lt;/p&gt;

&lt;p&gt;This is not enough to learn and understand the use cases of Redis.&lt;/p&gt;

&lt;p&gt;Redis offers a versatile toolkit for various application functionalities. Let's explore some key use cases, their architectural considerations, advantages, alternatives, and limitations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Session Store&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: You can deploy Redis as a single instance for smaller applications. For scalability, consider using Redis Cluster, which distributes data across multiple nodes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;: Redis excels at storing session data due to its blazing-fast speed. This allows web applications to manage user sessions efficiently and personalize experiences quickly. Additionally, Redis Cluster facilitates easy horizontal scaling as your application grows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alternatives&lt;/strong&gt;: Memcached is a simpler alternative, but it offers fewer features compared to Redis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;: While Redis offers persistence options to mitigate data loss on server failure, it's crucial to consider this potential limitation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Caching&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: Similar to session storage, a single Redis instance or a Redis Cluster can be employed for caching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;: By caching frequently accessed data from your main database in Redis, you can significantly boost application performance. Since Redis retrieves data much faster than a traditional database, the overall responsiveness of your application improves. Furthermore, caching reduces the load on your main database, improving its overall efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alternatives&lt;/strong&gt;: In-memory caching libraries can be integrated within your application code. However, these libraries typically offer less functionality compared to a dedicated caching solution like Redis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;: The primary limitation of caching with Redis is the data size constraint due to its in-memory storage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Message Queues&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: Redis can function as a message queue using a single instance or a Redis Cluster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;: Leveraging Redis as a message queue enables asynchronous task processing within your application. This improves scalability and fault tolerance by decoupling different parts of your application. Tasks can be processed independently, improving overall performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alternatives&lt;/strong&gt;: RabbitMQ and Apache Kafka are more complex message queueing systems that offer features like persistence, which might be beneficial for high-throughput workloads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;: While Redis is a capable message queue, it might not be suitable for very large message sizes or require complex features for extremely high-volume message processing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Real-time Applications&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: To build real-time applications with Redis, you can utilize a single instance or a Redis Cluster configured with Pub/Sub messaging. Pub/Sub allows real-time data broadcasting to multiple clients simultaneously.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;: The low-latency data broadcasting capabilities of Redis Pub/Sub are ideal for building features like live chat or social media feeds. This enables real-time updates and interactions within your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alternatives&lt;/strong&gt;: WebSockets and Server-Sent Events are alternative approaches for real-time functionality, but they can be more complex to implement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;: The number of concurrent subscribers that Redis Pub/Sub can handle might be limited for very high-traffic applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Leaderboards&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: A single instance or a Redis Cluster can be used for leaderboards, leveraging Redis Sorted Sets. Sorted Sets provide efficient storage and retrieval of ranked data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;: Maintaining leaderboards becomes effortless with Redis Sorted Sets. They allow for efficient storage, retrieval, and updates of ranked data, making it easy to keep leaderboards current.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alternatives&lt;/strong&gt;: Relational databases can be used for leaderboards, but they might require complex queries and offer less performance compared to Redis Sorted Sets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;: While Redis excels at basic leaderboards, it might lack functionalities for highly complex leaderboard logic requiring additional features beyond its core capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well, let's look at some of the use cases where we should not consider Redis.&lt;/p&gt;

&lt;p&gt;While Redis is a powerful tool, there are situations where it might not be the ideal choice. Here are 5 worst-case scenarios to consider when evaluating if Redis is the right fit for your needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Large Datasets&lt;/strong&gt;:  Redis is an in-memory data store.  If your data volume is massive and exceeds what can be comfortably stored in memory, Redis becomes impractical.  The cost of maintaining enough RAM to hold the entire dataset can be prohibitive. In such cases, traditional databases or distributed file systems like HDFS are better suited for handling large data volumes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Durability Requirements&lt;/strong&gt;:  While Redis offers persistence options like snapshots and AOF (Append-only File), it's not designed for situations where absolute data consistency and zero downtime are paramount. Frequent data updates and the potential for data loss during failures make Redis less suitable for scenarios requiring the highest level of data durability. Relational databases with strong ACID (Atomicity, Consistency, Isolation, Durability) guarantees might be a better choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complex Data Relationships&lt;/strong&gt;:  Redis excels at storing simple key-value pairs, sorted sets, and lists.  However, it's not ideal for modeling complex data relationships often found in relational databases.  If your application heavily relies on JOINs, complex queries involving multiple data entities, or intricate data schemas, a traditional relational database would be a more appropriate choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High-Throughput Writes&lt;/strong&gt;:  While Redis can handle a significant write volume, it might not be the best fit for scenarios with an extremely high number of writes per second. The in-memory nature of Redis can become a bottleneck for write-heavy workloads. Alternative solutions like Apache Kafka, designed specifically for high-throughput messaging, might be better suited for such use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limited Geographical Distribution&lt;/strong&gt;:  If your application requires low-latency data access across geographically distributed regions, Redis might not be the optimal solution. Setting up and managing multiple Redis clusters in different locations can be complex. Database solutions with built-in geographic replication or cloud-based offerings with global reach might be a better fit for geographically distributed deployments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Do share your thoughts about this article, and queries related to Redis in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>redis</category>
      <category>database</category>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Running Redis with Docker</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Sun, 26 May 2024 07:30:07 +0000</pubDate>
      <link>https://dev.to/itskunal/running-redis-with-docker-323p</link>
      <guid>https://dev.to/itskunal/running-redis-with-docker-323p</guid>
      <description>&lt;p&gt;Redis is an open-source, in-memory data structure store that brings high performance to your applications. Imagine needing to store data for quick retrievals, like shopping cart contents in an e-commerce app. Redis is perfect for this task, acting as a super-fast cache or even a database for specific use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redis Functionalities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Structures&lt;/strong&gt;: Redis offers flexibility by supporting various data structures like strings, lists, sets, and sorted sets. You can choose the most efficient structure for your data type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blazing Speed&lt;/strong&gt;: In-memory storage makes Redis extremely fast for data access, ideal for real-time applications and caching frequently used data.&lt;br&gt;
Optional Persistence: While primarily working with in-memory data, Redis allows you to persist data to disk for recovery after restarts using snapshots or append-only files (AOF).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Publish/Subscribe Messaging&lt;/strong&gt;: Redis can act as a message broker, enabling applications to communicate with each other using a publish-subscribe pattern.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Dockerize Your Redis?
&lt;/h2&gt;

&lt;p&gt;While traditional Redis installation gets the job done, Docker offers a compelling alternative for running Redis, especially in development environments. Here's why you should consider the Docker approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolation and Consistency&lt;/strong&gt;: Docker creates a self-contained environment for Redis, isolating it from your system dependencies. This prevents conflicts and ensures a consistent Redis experience across different development machines, regardless of the underlying operating system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Effortless Setup and Teardown&lt;/strong&gt;: Forget complex installation steps! Docker allows you to pull a pre-built Redis image and launch it with a single command. Similarly, removing a Redis instance is as easy as stopping and deleting the container. This streamlines your development workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Version Control Made Easy&lt;/strong&gt;: Docker excels at managing different versions of software. You can easily switch between Redis versions by pulling the desired image, enabling you to test compatibility and experiment with different functionalities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Portability with Docker Volumes&lt;/strong&gt;: Docker volumes are directories on your host machine that persist data outside of containers. By mounting a volume to your Redis container's data directory, you can ensure your data survives container restarts and even transfers between machines. This makes your Redis setup truly portable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run Different Databases with Different Versions&lt;/strong&gt;: Docker excels at managing isolated environments. You can run multiple database containers, each with a different version of the software (e.g., MySQL 8 and PostgreSQL 14) on the same machine.  Docker ensures each container operates independently, preventing conflicts between database versions or configurations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clean Development Environment&lt;/strong&gt;: By keeping Redis (and potentially other databases) within containers, you avoid cluttering your local system with their dependencies. This maintains a clean development environment and simplifies troubleshooting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability Potential&lt;/strong&gt;: While Docker containers excel at single instances, they also pave the way for future exploration. Docker provides the foundation for easily scaling your Redis setup by managing multiple containers in a cluster if your needs evolve.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configure Redis on the Host Machine
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pull the Redis Image:
&lt;/h3&gt;

&lt;p&gt;Open your terminal and run the following command to download the official Redis image from Docker Hub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run the Redis Container:
&lt;/h3&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%2Fcsga1m332jnmkaonwqlb.jpg" 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%2Fcsga1m332jnmkaonwqlb.jpg" alt="Image description" width="800" height="486"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; my-redis &lt;span class="nt"&gt;-p&lt;/span&gt; 6379:6379 redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-d&lt;/code&gt;: Detaches the container from the terminal, allowing it to run in the background.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--name my-redis&lt;/code&gt;: Assigns a custom name (my-redis) to the container for easier identification.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-p 6379:6379&lt;/code&gt;: Maps the container's port 6379 (default Redis port) to the host machine's port 6379. This allows you to connect to Redis from the host using localhost:6379. If you omit this flag, Redis will be accessible only from within the container itself.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;redis&lt;/code&gt;: Specifies the image to use, which is redis in this case.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Test Redis Functionality:
&lt;/h3&gt;

&lt;p&gt;To connect with the container running Redis database, enter the following command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker exec -it my-redis redis-cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or you may need to use this command, while using git bash in windows.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;winpty docker exec -it my-redis redis-cli&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker&lt;/code&gt;: This is the Docker command-line tool used to interact with Docker containers.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;exec&lt;/code&gt;: This subcommand instructs Docker to execute a process within a running container.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-i&lt;/code&gt;: This flag stands for "interactive" and tells Docker to keep the standard input (STDIN) open for the container. This allows you to type commands within the container.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-t&lt;/code&gt;: This flag stands for "pseudo-tty" and allocates a pseudo-terminal for the container. This provides a shell-like experience within the container.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;my-redis&lt;/code&gt;: This is the name you assigned to your Redis container when you ran it using docker run. It specifies which container you want to execute the command in.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;redis-cli&lt;/code&gt;: This is the actual command you want to run within the container. In this case, it's the redis-cli tool, which is the command-line interface for interacting with Redis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Redis Insight: A GUI Suite for Effortless Redis Management
&lt;/h2&gt;

&lt;p&gt;Redis Insight simplifies working with Redis by offering a user-friendly GUI for developers. Here are its key strengths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visualize &amp;amp; Manage Data&lt;/strong&gt;: Effortlessly browse, filter, and interact with your Redis data structures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports Various Structures&lt;/strong&gt;: Work seamlessly with strings, lists, sets, sorted sets, and hashes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Data Display&lt;/strong&gt;: Choose from various data formats like JSON, hexadecimal, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis Module Friendly&lt;/strong&gt;: Interact with custom functionalities provided by Redis modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Integration&lt;/strong&gt;: Manage Redis instances running within Docker containers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setup with Redis Insight
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;docker run -d --name my-redis -p 6379:6379 -p 8001:8001 -e REDIS_ARGS="--requirepass mypassword" redis/redis-stack:latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Using this you can have a nice GUI for your database along with the terminal available at &lt;code&gt;localhost:8001&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do share your thoughts about this article, and queries related to Redis in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>redis</category>
      <category>docker</category>
      <category>database</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Great Web Challenges</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Wed, 22 May 2024 04:20:54 +0000</pubDate>
      <link>https://dev.to/itskunal/the-great-web-challenges-5bog</link>
      <guid>https://dev.to/itskunal/the-great-web-challenges-5bog</guid>
      <description>&lt;p&gt;Your web development life is going to end now. 🔚&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%2Ftt39mqfmosbgntqdfusf.jpg" 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%2Ftt39mqfmosbgntqdfusf.jpg" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey coders, let's face it 🙃. This web dev life is a rollercoaster. We spend hours crafting beautiful code, only to have it haunted by the ghosts of deprecated APIs. We dream up million-dollar ideas in a caffeine-fueled haze, then drown in the reality of unplanned projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Framework Frenzy:
&lt;/h2&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%2Fj01aoctgqhtqq26jvocl.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%2Fj01aoctgqhtqq26jvocl.png" alt="Image description" width="740" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next.js, Nuxt.js – these frameworks sing a siren song of next-gen awesomeness. But hold on there, cowboy! Before you dive headfirst, remember that clean, maintainable code is a developer's best friend. People would rather have a working app today than a feature-packed monster tomorrow. Let's focus on getting things done, and then optimize for greatness.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Feature Creep Blues:
&lt;/h2&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%2Fmwcllbvhhhn6v1y9vkmv.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%2Fmwcllbvhhhn6v1y9vkmv.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Machine learning! Enterprise-grade components! Our apps are gonna be glorious! Except... wait, where'd the deadline go? We're lost in a tutorial hell, adding features like a squirrel collecting nuts. Sometimes, "good enough" is good enough. Let's ship it, iterate, and avoid becoming feature-creep zombies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developer's Lament:
&lt;/h2&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%2Fl8yatfex125dzolauv80.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%2Fl8yatfex125dzolauv80.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We write, we repeat, we wrestle with code that sometimes feels like it has a mind of its own (Ps: This is me). But hey, that's the beauty ✨(and sometimes the curse 😈) of this crazy world we call web development.&lt;/p&gt;

&lt;p&gt;So, the next time you're neck-deep in code, take a breath, fellow developer. We're in this together.  Maybe a call to action? Share your dev woes in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Say No to SQL 🙅</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Mon, 06 May 2024 04:51:28 +0000</pubDate>
      <link>https://dev.to/itskunal/say-no-to-sql-hce</link>
      <guid>https://dev.to/itskunal/say-no-to-sql-hce</guid>
      <description>&lt;h2&gt;
  
  
  Attention Developers!
&lt;/h2&gt;

&lt;p&gt;Are you facing these problems with the current application architecture?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High Throughput to the SQL database.&lt;/li&gt;
&lt;li&gt;Bottleneck in the SQL database.&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%2Fcqi3texvck7ns3c31xv3.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%2Fcqi3texvck7ns3c31xv3.png" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An In-memory data store will be the solution to the problem. Redis is the most popular option available in the market for In-memory data storage, and cache. Redis has a wide ecosystem because major tech giants adopt it, it's an open-source project developed by Salvatore Sanfilippo. Redis stands for Remote Dictionary Server.&lt;/p&gt;

&lt;p&gt;In layman's terms, consider Redis an index page in the textbook. &lt;br&gt;
Here key-value pairs are stored. Where value can be in different data structures like sorted sets, lists, stacks, strings, and integers.&lt;br&gt;
The limitation of this In-Memory data store is, that it comes with a significant increase in costs. The solution is to use a memory hierarchy according to the application requirements. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FYI: Even your device uses a Memory Hierarchy to provide the best storage organization corresponding to its value.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Memory Hierarchy
&lt;/h2&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%2Fcaiwara5yilzuph6eksg.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%2Fcaiwara5yilzuph6eksg.png" alt="Image description" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Memory Hierarchy is the design to organize computer memory components according to their response time. It includes the use of several memory components like Cache, RAM, ROM, and SSD/HDD.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why to use In-Memory data store?
&lt;/h2&gt;

&lt;p&gt;Ques - Why should we use something like Redis, where we can simply store the value in a &lt;code&gt;Map&lt;/code&gt; data structure with the key corresponding to it, and serve the concurrent requests with it?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Scaling
&lt;/h3&gt;

&lt;p&gt;Yes, It will work with Monolith architecture. However, it is required to vertically scale up the system by adding more resources like RAM and CPUs. But by using Redis we can horizontally scale up the infrastructure by adding more Redis servers to the cluster. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  ACID Compliance
&lt;/h3&gt;

&lt;p&gt;Redis supports partial ACID compliance because it's single-threaded which guarantees consistency and isolation. The use of system memory will heavily increase CPU usage and RAM consumption which slows the application process. Also, redis supports the expiration of keys, regarding time or use of the record. so it automatically deletes the record when no longer in use.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Community Support
&lt;/h3&gt;

&lt;p&gt;Redis is an open-source project with services like Pub-Sub, Data Streams, Vector Search, etc. Where each of the services is backed by the most optimized algorithms and data structures available to the market.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;h3&gt;
  
  
  Concurrent Request
&lt;/h3&gt;&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%2Fg0chm2eqj7cd2v08p7zn.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%2Fg0chm2eqj7cd2v08p7zn.png" alt="Image description" width="591" height="466"&gt;&lt;/a&gt;&lt;br&gt;
Redis uses single-threaded event-driven architecture, also the response time for Redis is 1000 times faster compared to SQL databases when 100 users read the database. Also by using event-driven architecture, it can handle high throughput with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Redis a replacement for SQL Databases?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Consider Redis as a plugin for your database infrastructure, which makes your application blazingly fast.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;That's it for this article, I hope you learn something useful. Share your thoughts on this article on socials.&lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20Folks%20recently%20read%20this%20article%20on%20Say%20No%20to%20SQL%20by%20%40kunalpy3%20on%20dev.to.%20Its%20been%20great%20help%20to%20understand%20the%20basic%20concepts%20of%20redis.%20Please%20check%20out%20the%20article."&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;https://linktr.ee/kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>redis</category>
      <category>sql</category>
      <category>devops</category>
    </item>
    <item>
      <title>Craft your perfect VSCode experience.</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Thu, 15 Jun 2023 16:28:36 +0000</pubDate>
      <link>https://dev.to/itskunal/craft-your-perfect-vscode-experience-1jc4</link>
      <guid>https://dev.to/itskunal/craft-your-perfect-vscode-experience-1jc4</guid>
      <description>&lt;p&gt;The Visual Studio Code, most of us love this code editor. Didn't we but &lt;strong&gt;"Love, like any flame, can grow dim with time if not tended to with care and effort."&lt;/strong&gt; &lt;br&gt;
Here is the following tips to make most of your code editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Themes
&lt;/h2&gt;

&lt;p&gt;Themes are great to get tailor experience of code editor.&lt;/p&gt;

&lt;p&gt;Here are some of my favorite themes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dracula &lt;code&gt;dracula-theme.theme-dracula&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;One atom &lt;code&gt;akamud.vscode-theme-onedark&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Monokai &lt;code&gt;monokai.theme-monokai-pro-vscode&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Batman Mono &lt;code&gt;IsaGoksu.batman-mono-theme&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Abyss &lt;code&gt;MatongoMulindi.abyss&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Just try this ones or search &lt;code&gt;@category:"themes"&lt;/code&gt; in your extension bar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fonts
&lt;/h2&gt;

&lt;p&gt;Font style matters most in code editor. you can use any mono type font available in your system. I recommend using &lt;a href="https://fonts.google.com/"&gt;Google Fonts&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Some of my favorite fonts are - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Space Mono&lt;/li&gt;
&lt;li&gt;Ubuntu Mono&lt;/li&gt;
&lt;li&gt;Roboto Mono&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Icons
&lt;/h2&gt;

&lt;p&gt;There are bunch of libraries, tools and frameworks we use while development. It will be great that we get there icons right in our IDE. Here's a look using icon themes in vscode.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6YpUi_Tp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ekl823vgjjnoa69h53a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6YpUi_Tp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ekl823vgjjnoa69h53a.jpg" alt="Image description" width="688" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of my favorite icon themes are - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Atom Material Icons&lt;/li&gt;
&lt;li&gt;Material Icon theme&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;for more icon themes search &lt;code&gt;tag:icon-theme&lt;/code&gt; in extension bar.&lt;/p&gt;

&lt;p&gt;You can also change icons on the sidebar in vscode &lt;code&gt;settings &amp;gt; themes &amp;gt; product icon themes&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Tailwind Fold &lt;code&gt;stivo.tailwind-fold&lt;/code&gt; - want to view your markup code and stuck with multiple lines of unwanted tailwind classes use this tool. It will hide the tailwind utility classes which gives you clear idea of your markup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git Graph &lt;code&gt;mhutchie.git-graph&lt;/code&gt; - Most of us developers uses version control systems like git. We can see commits with a GUI using git graph right in IDE.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Extra Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;if you're using git bash in windows machine you can install &lt;a href="https://github.com/ohmybash/oh-my-bash"&gt;&lt;code&gt;oh-my-bash&lt;/code&gt;&lt;/a&gt; for themes available for terminal.&lt;/li&gt;
&lt;li&gt;Horizontal scroll your code is always a pain. you can use word-wrap just hit &lt;code&gt;alt+z&lt;/code&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This tips and themes are slightly oriented for web developers but feel free to comment down your suggestions below.&lt;/p&gt;

&lt;p&gt;Hope you find this blog informational. Consider to shower it with your love.&lt;/p&gt;

&lt;p&gt;Share about this blog on socials - &lt;a href="https://twitter.com/intent/tweet?text=Hey%20Folks%20%E2%9C%A8%2C%20%20read%20this%20blog%20about%20craft%20your%20perfect%20vs%20code%20experience%20by%20%40KunalPy3.%20Loved%20it%2C%20definetly%20recommend%20you%20to%20read"&gt;&lt;br&gt;
Tweet&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's Connect.&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;LinkTree&lt;/a&gt;&lt;/p&gt;

</description>
      <category>development</category>
      <category>dx</category>
      <category>productivity</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Mastering Express: Building Robust TypeScript Servers with Ease.</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Fri, 05 May 2023 18:04:47 +0000</pubDate>
      <link>https://dev.to/itskunal/mastering-express-building-robust-typescript-servers-with-ease-ab9</link>
      <guid>https://dev.to/itskunal/mastering-express-building-robust-typescript-servers-with-ease-ab9</guid>
      <description>&lt;p&gt;This article is a step by step tutorial to create a express server using typescript.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Typescript cannot be run directly into node runtime environment, although runtime like Deno, Bun supports typescript. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Create a folder, initialize &lt;code&gt;npm&lt;/code&gt; package using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;--y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's install dependencies required to create express server.&lt;br&gt;
&lt;code&gt;express&lt;/code&gt;, &lt;code&gt;@types/express&lt;/code&gt; to use type definitions, intellisense in code editor. Also few developer dependencies like &lt;code&gt;typescript&lt;/code&gt; to convert typescript file into javascript file, &lt;code&gt;nodemon&lt;/code&gt; to ease our development (it automatically watch for changes, and reload your code in runtime), &lt;code&gt;concurrently&lt;/code&gt; to run both the above developer dependencies simultaneously.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i express @types/express &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm i &lt;span class="nt"&gt;-d&lt;/span&gt; nodemon concurrently
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's initialize typescript in the project. using the following command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;code&gt;tsconfig.json&lt;/code&gt; file will be created in the  project. In the &lt;code&gt;tsconfig.json&lt;/code&gt; file uncomment &lt;code&gt;outDir&lt;/code&gt; line and enter a outDir (&lt;code&gt;dist&lt;/code&gt; here):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"outDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./dist"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's create a NPM script for this typescript express configuration.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;pacakage.json&lt;/code&gt; file add following code,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"concurrently &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; tsc --watch&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;nodemon dist/index.js&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;also remove a line&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"index.js"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;now the final part, create &lt;code&gt;index.ts&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&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="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the &lt;code&gt;dev&lt;/code&gt; script you just created in command line using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it you're good to go, your express typescript server is ready at localhost, port 3000 &lt;a href="http://localhost:3000"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20folks%20i%20recently%20read%20this%20article%20about%20Mastering%20Express%3A%20Building%20Robust%20TypeScript%20Servers%20with%20Ease%20on%20Dev.to%20by%20Kunal.py3%20do%20check%20this%20out%20%23webdev%20%23express%20%23javascript%20%23typescript"&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;LinkTree&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Prompt (Proompt) Engineering in ChatGPT.</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Mon, 10 Apr 2023 10:12:33 +0000</pubDate>
      <link>https://dev.to/itskunal/prompt-proompt-engineering-in-chatgpt-5gp8</link>
      <guid>https://dev.to/itskunal/prompt-proompt-engineering-in-chatgpt-5gp8</guid>
      <description>&lt;p&gt;Since a lot of us are using the ChatGPT (3.5), copilot tools like Github Copilot and other Generative AI to easily do our tasks. It's a while now using prompt to generate content, code.&lt;/p&gt;

&lt;p&gt;so this article is all about prompt and how to develop prompt to get desired results in the chatGPT.&lt;/p&gt;

&lt;p&gt;I asked chatGPT itself like when you'll give correct answers 😂.&lt;br&gt;
Explain me the answers like this man.&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%2Fmfye4zynvfqtakyddair.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%2Fmfye4zynvfqtakyddair.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Input and Output to ChatGPT has some limits, 500 words for Input and 3000 words for Output. This is just approximate values as limit chatGPT totally depends on number of tokens.&lt;/p&gt;

&lt;p&gt;Let's build an Ecommerce Application with ChatGPT&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Create an Ecommerce Application using Web3 and machine learning.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fs0cyhmlyd3vyl9kb2pyw.jpg" 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%2Fs0cyhmlyd3vyl9kb2pyw.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You just need to be more informative. ℹ️&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can talk to GPT more about the process like how to setup backend.&lt;/li&gt;
&lt;li&gt;how's your codebase structure.&lt;/li&gt;
&lt;li&gt;Which language, framework to choose.&lt;/li&gt;
&lt;li&gt;Data Flow of Application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since, output is limited to certain number of tokens you can ask chatGPT to return only code.&lt;/p&gt;

&lt;p&gt;Prompt results vary based on previous conversations. so there is no proper way to get same response everytime.&lt;/p&gt;

&lt;p&gt;You shouldn't ask questions about news, current affairs because it's trained on past data.&lt;/p&gt;

&lt;h3&gt;
  
  
  This is Serious 👇
&lt;/h3&gt;

&lt;p&gt;Recently Vector Databases like Pinecone, Weaviate is launched and can help models like GPT to improve themeselves and provide results faster. Also there is a new GitHub repo called AutoGPT &lt;a href="https://github.com/Torantulino/Auto-GPT" rel="noopener noreferrer"&gt;Link&lt;/a&gt; that demonstrates capabilities of GPT Model, it can make GPT model to act like a person with specific configuration. It's an example of how model can improve themselves. &lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20folks%20i%20recently%20read%20this%20article%20on%20Dev.to%20by%20Kunal.py3%20do%20check%20this%20out#webdev%20#react%20#" rel="noopener noreferrer"&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev" rel="noopener noreferrer"&gt;https://linktr.ee/kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>chatgpt</category>
      <category>ai</category>
    </item>
    <item>
      <title>Rev Up Your Web Development with These Must-Try CSS Frameworks and Libraries</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Wed, 05 Apr 2023 02:10:28 +0000</pubDate>
      <link>https://dev.to/itskunal/rev-up-your-web-development-with-these-must-try-css-frameworks-and-libraries-1ejm</link>
      <guid>https://dev.to/itskunal/rev-up-your-web-development-with-these-must-try-css-frameworks-and-libraries-1ejm</guid>
      <description>&lt;h1&gt;📝 A Guide to Different CSS Frameworks and Libraries&lt;/h1&gt;
&lt;p&gt;CSS (Cascading Style Sheets) is an essential component of web development, and using CSS frameworks and libraries can help streamline the development process. Here, we'll explore some of the most popular CSS frameworks and libraries and discuss how they can be used to enhance your web development projects.&lt;/p&gt;
&lt;h2&gt;💻 SASS&lt;/h2&gt;
&lt;p&gt;SASS (Syntactically Awesome Style Sheets) is a CSS preprocessor that allows developers to write code in a more efficient and organized way. SASS offers features like variables, mixins, and functions that simplify the code and make it more maintainable. The preprocessor also supports nesting and inheritance, allowing developers to write clean and concise code.&lt;/p&gt;
&lt;p&gt;SASS is particularly useful for large-scale projects where stylesheets can become unmanageable. By using SASS, developers can keep their code organized and maintainable, resulting in faster and more efficient development.&lt;/p&gt;
&lt;h2&gt;🚀 Bootstrap&lt;/h2&gt;
&lt;p&gt;Bootstrap is one of the most widely used CSS frameworks and is known for its extensive library of components, responsive design, and ease of use. Bootstrap is particularly useful for developers who need to create web applications quickly, as it provides a range of pre-built components that can be easily customized.&lt;/p&gt;
&lt;p&gt;Bootstrap is also known for its mobile-first approach, which makes it easy to create responsive websites that look great on any device. With its large community and extensive documentation, Bootstrap is an excellent choice for developers who need to build web applications quickly and efficiently.&lt;/p&gt;
&lt;h2&gt;🎨 Tailwind CSS&lt;/h2&gt;
&lt;p&gt;Tailwind CSS is a utility-first CSS framework that allows developers to create custom designs quickly and easily. Tailwind provides a range of pre-built CSS classes that can be used to create custom designs, allowing developers to focus on creating unique layouts and designs.&lt;/p&gt;
&lt;p&gt;Tailwind is particularly useful for developers who want to create custom designs without writing custom CSS code. With its extensive library of classes, developers can create complex layouts and designs quickly and efficiently, resulting in faster development times.&lt;/p&gt;
&lt;h2&gt;🌟 Materialize&lt;/h2&gt;
&lt;p&gt;Materialize is a CSS framework based on Google's Material Design guidelines. Materialize provides a range of pre-built components that can be used to create beautiful and responsive websites quickly and easily. Materialize is known for its clean and modern design, making it an excellent choice for developers who want to create websites that look great on any device.&lt;/p&gt;
&lt;p&gt;Materialize also provides a range of JavaScript components, making it easy to create interactive and dynamic websites. With its extensive documentation and active community, Materialize is an excellent choice for developers who want to create beautiful and responsive websites quickly and efficiently.&lt;/p&gt;
&lt;h2&gt;💡 Conclusion&lt;/h2&gt;
&lt;p&gt;CSS frameworks and libraries can help streamline the development process and make it easier to create beautiful and responsive websites quickly and efficiently. By choosing the right CSS framework or library, developers can save time and create better designs.&lt;/p&gt;
&lt;p&gt;Whether you're looking for a pre-built library of components or a utility-first CSS framework, there are many options available to choose from. By exploring different frameworks and libraries, you can find the right tools to help you create stunning websites that look great on any device.&lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20folks%20i%20recently%20read%20this%20article%20about%20node_modules%20and%20how%20to%20delete%20them%20on%20Dev.to%20by%20Kunal.py3%20do%20check%20this%20out#webdev%20#react%20#"&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;https://linktr.ee/kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cssframeworks</category>
      <category>sass</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>JavaScript, useState React Array Handling methods.</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Thu, 30 Mar 2023 07:35:46 +0000</pubDate>
      <link>https://dev.to/itskunal/javascript-usestate-react-array-handling-methods-1lag</link>
      <guid>https://dev.to/itskunal/javascript-usestate-react-array-handling-methods-1lag</guid>
      <description>&lt;p&gt;we often used variable of array type with &lt;code&gt;useState&lt;/code&gt; hook in react and came in a dead end where our variable doesn't update as wanted.&lt;/p&gt;

&lt;p&gt;so here are some ways- &lt;/p&gt;

&lt;h4&gt;
  
  
  Consider
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fruits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;grapes&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;strawberry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;fruitsState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setFruits&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Read
&lt;/h4&gt;

&lt;p&gt;To read data in variable u can simply write&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;&amp;gt;&lt;/span&gt;
    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="cm"&gt;/* console.log(fruits) */&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;fruitsState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&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;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Update
&lt;/h4&gt;

&lt;p&gt;To update elements in array&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="nx"&gt;setFruits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;setFruitsState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`Lovely, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Add
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;setFruits&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;newFruit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;fruitsState&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Delete
&lt;/h4&gt;

&lt;p&gt;To delete elements from array&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="c1"&gt;// select a fruit&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deleteFruit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="nx"&gt;setFruits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fruitsState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fruit&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;fruit&lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="nx"&gt;deleteFruit&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Enjoy Hacking&lt;/code&gt; CRA (create react app). 😂&lt;br&gt;
Read more articles about react and its libraries.&lt;/p&gt;

&lt;p&gt;That's it for this article, hope you get something useful. Share your thoughts on this article in socials.&lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20folks%20i%20recently%20read%20this%20article%20about%20useState%20hooks%20in%20react%20handle%20lists,%20on%20Dev.to%20by%20Kunal.py3%20do%20check%20this%20out#webdev%20#react%20#"&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;https://linktr.ee/kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>programming</category>
    </item>
    <item>
      <title>Kill node_modules 😡</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Sun, 26 Mar 2023 16:22:02 +0000</pubDate>
      <link>https://dev.to/itskunal/kill-nodemodules-38hp</link>
      <guid>https://dev.to/itskunal/kill-nodemodules-38hp</guid>
      <description>&lt;h2&gt;
  
  
  Why node_modules?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;node_modules&lt;/code&gt;, each of our incomplete million dollar project contains this folder, which is taking some fair amount of space in your PC. so how to remove it?&lt;/p&gt;

&lt;p&gt;One way is that you can sink your ship 🚢 into your codebase hell and delete node_modules folder one by one.&lt;/p&gt;

&lt;p&gt;or you can run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx npkill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives you a nice CLI to delete node_modules from your million dollar projects. &lt;/p&gt;

&lt;p&gt;Just hit space and that will delete node_modules from that folder.&lt;/p&gt;

&lt;p&gt;But that seems like u're using a node module to delete a node_modules.&lt;/p&gt;

&lt;p&gt;If you love 💖 to use terminal, and more concerning about Developer Experience (DX). you can use this command instead&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="k"&gt;**&lt;/span&gt;/node_modules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this will remove all sub &lt;code&gt;node_modules&lt;/code&gt; folder inside your project.&lt;/p&gt;




&lt;p&gt;Now we have modern javascript runtime like deno, bun. That's support out of the box TypeScript Support, can manage packages using URL based configuration. So stop using &lt;code&gt;node_modules&lt;/code&gt; 😂&lt;/p&gt;

&lt;p&gt;That's it for this article, hope you get something useful. Share your thoughts on this article in socials.&lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20folks%20i%20recently%20read%20this%20article%20about%20node_modules%20and%20how%20to%20delete%20them%20on%20Dev.to%20by%20Kunal.py3%20do%20check%20this%20out#webdev%20#react%20#"&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;https://linktr.ee/kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Must use libraries with react -&gt; Framework ;)</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Tue, 21 Mar 2023 08:37:44 +0000</pubDate>
      <link>https://dev.to/itskunal/must-use-libraries-with-react-framework--47cb</link>
      <guid>https://dev.to/itskunal/must-use-libraries-with-react-framework--47cb</guid>
      <description>&lt;p&gt;Hey folks, a lot of us struggle to work with react, where to start, how to do, because of wide variety of libraries, frameworks are available to use with react.&lt;/p&gt;

&lt;p&gt;with new react.js documentation out, it's now time to upgrade our web development workflow, In this article we will going to see some react libraries to make react a complete framework.&lt;/p&gt;




&lt;h2&gt;
  
  
  Libraries
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React Router Dom &lt;a href="https://reactrouter.com/en/main"&gt;📃&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's hard to navigate between different routes using only react library, by using context, state hooks may make it possible but it's get harder and harder when the app complexity grows. &lt;/p&gt;

&lt;p&gt;Handling dynamic routes, user navigation, navigation history are some of the key features of this library. It's among top libraries in the npmjs for routing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formik&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another useful library to handle forms in react is Formik, they have drip'in title saying &lt;strong&gt;Build forms in React, without the tears&lt;/strong&gt;. Sure forms can be handled using useRef hooks but if you're using typescript this hooks can be painful, also more errors like type of HTML Input element you are using in the component.&lt;/p&gt;

&lt;p&gt;This library contains hooks like&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;useField, useFormik&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 to ease the form building, validation and error handling process. You'll love it just give it a try. &lt;a href="https://formik.org/"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Creating custom components, that too with responsive and good design is time taking. You can use UI library components like MUI &lt;a href="https://mui.com/"&gt;Link&lt;/a&gt;, React-Bootstrap &lt;a href="https://react-bootstrap.github.io/"&gt;Link&lt;/a&gt;, there are some new libraries you must try out like Fluent UI by microsoft &lt;a href="https://developer.microsoft.com/en-us/fluentui#/"&gt;Link&lt;/a&gt;, Ant Design &lt;a href="https://ant.design/"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build Tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CRA (create react app) is now deprecated, even new official react documentation is not supporting it. You should be using frameworks like Vite &lt;a href="https://vitejs.dev/"&gt;Link&lt;/a&gt;, metaframeworks like Next.js &lt;a href="https://nextjs.org/"&gt;Link&lt;/a&gt; to work with react.&lt;/p&gt;




&lt;p&gt;That's it for this article, hope you get something useful. Share your thoughts on this article in socials.&lt;/p&gt;

&lt;p&gt;Let's Connect - &lt;br&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Hey%20folks%20i%20recently%20read%20this%20article%20about%20React%20Libraries%20%20Framework%20on%20Dev.to%20by%20Kunal.py3%20do%20check%20this%20out#webdev%20#react%20#"&gt;Tweet Thanks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;https://linktr.ee/kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>node</category>
    </item>
    <item>
      <title>Does Typescript make you slower?</title>
      <dc:creator>Kunal Agrawal</dc:creator>
      <pubDate>Thu, 16 Mar 2023 16:31:42 +0000</pubDate>
      <link>https://dev.to/itskunal/does-typescript-make-you-slower-1bh1</link>
      <guid>https://dev.to/itskunal/does-typescript-make-you-slower-1bh1</guid>
      <description>&lt;p&gt;This Post is all about Typescript and DX (Developer Experience) 😎.&lt;/p&gt;

&lt;p&gt;Many folks think writing down code in typescript creates more errors, and writing unnecessary code.&lt;br&gt;
Even I had also the same thoughts at a point in time when I started learning about TypeScript and replacing it with JavaScript in my development workflow.&lt;/p&gt;

&lt;p&gt;It seems difficult to set up a typescript express server on your own, without using any templates.&lt;/p&gt;

&lt;p&gt;Earlier, using TypeScript in your codebase increases one extra step that’s to convert typescript into javascript and then run it in an environment like Node.js. But with the increasing popularity of Typescript among developers, new runtime environments like Bun and Deno supports, Typescript as First Class Language that’s Typescript can directly be compiled and run. &lt;/p&gt;

&lt;p&gt;So, why use TypeScript?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intellisense&lt;/li&gt;
&lt;li&gt;Standard Documentation&lt;/li&gt;
&lt;li&gt;Can be converted to the previous version of the javascript&lt;/li&gt;
&lt;li&gt;Type Safety&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Editors like Vs code provides special privileges like intellisense, error checking and more when working with well documented languages like TypeScript.&lt;/p&gt;

&lt;p&gt;Using typescript allows to convert code into any other javascript version, so compatibility not being an issue working with typescript.&lt;/p&gt;

&lt;p&gt;Type Safety, dynamically typed languages like javascript are very great for writing well structured code, but increases chances of error also when a variable is undefined or null. although it can be handled using try and catch. but this doesn't seems efficient way throughout codebase.&lt;/p&gt;

&lt;p&gt;Typescript is among top 4 in most loved programming language. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VyU-BjP1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y6p115spaxlgg2dpauiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VyU-BjP1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y6p115spaxlgg2dpauiv.png" alt="Image description" width="880" height="1820"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading this article. &lt;br&gt;
For more, follow&lt;br&gt;
&lt;a href="https://linktr.ee/kunal.dev"&gt;kunal.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
