<?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: Jenn Herrarte</title>
    <description>The latest articles on DEV Community by Jenn Herrarte (@jennherrarte).</description>
    <link>https://dev.to/jennherrarte</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%2F609540%2Fb94c4888-fd18-4caa-8c08-0f122d01fd6a.png</url>
      <title>DEV Community: Jenn Herrarte</title>
      <link>https://dev.to/jennherrarte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jennherrarte"/>
    <language>en</language>
    <item>
      <title>How to Read Technical Books 📚</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Mon, 08 Jan 2024 05:55:47 +0000</pubDate>
      <link>https://dev.to/jennherrarte/how-to-read-technical-books-18mp</link>
      <guid>https://dev.to/jennherrarte/how-to-read-technical-books-18mp</guid>
      <description>&lt;p&gt;Hello! Happy 2024! THIS is the year where we're picking up the stack of software engineering books that are collecting dust and cracking them open. &lt;/p&gt;

&lt;p&gt;Last year, I started reading &lt;em&gt;Designing Data-Intensive Applications&lt;/em&gt; by Martin Kleppmann. One page in, and I realized reading it was going to be a &lt;em&gt;doozy&lt;/em&gt;. Getting through the material taught me that reading technical books requires a level of effort that goes beyond reading your average book. Here are my top tips for reading technical material. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TIP #1 - Draw it out&lt;/strong&gt; ✍🏽&lt;/p&gt;

&lt;p&gt;For example, if the text lists out the pros and cons of using a specific technology, draw it out in an actual chart. So many of these books don't have pictures (can we please change this)so drawing goes a long way. If there’s an analogy that comes to mind when reading about a concept, draw it out! I enjoy using Figma to create slides containing all my visuals. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9KMxlSiA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98vpjcck59sgobt1vlmt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9KMxlSiA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98vpjcck59sgobt1vlmt.png" alt="figma" width="800" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TIP #2 - Use ChatGPT&lt;/strong&gt; 💻&lt;/p&gt;

&lt;p&gt;Use ChatGPT to look up any keywords or phrases you don’t understand, especially if the text doesn’t explain what it is. For example, if there’s a paragraph talking about how nodes communicate through &lt;em&gt;routing packets&lt;/em&gt; and you’re &lt;em&gt;like what is a route packet???&lt;/em&gt;, just look it up.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;pro tip: use the voice feature in the chaptgpt mobile app for quick answers on the go.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;TIP #3 - Read Blogs&lt;/strong&gt; 💡&lt;/p&gt;

&lt;p&gt;Read engineering blogs that show real-life examples or case studies that help solidify the concepts you are reading about. For example, &lt;a href="https://www.educative.io/blog/taylor-swift-ticketmaster-meltdown?utm_campaign=brand_educative&amp;amp;utm_source=google&amp;amp;utm_medium=ppc&amp;amp;utm_content=performance_max&amp;amp;eid=5082902844932096&amp;amp;utm_term=&amp;amp;utm_campaign=%5BNew%5D+Performance+Max&amp;amp;utm_source=adwords&amp;amp;utm_medium=ppc&amp;amp;hsa_acc=5451446008&amp;amp;hsa_cam=18511913007&amp;amp;hsa_grp=&amp;amp;hsa_ad=&amp;amp;hsa_src=x&amp;amp;hsa_tgt=&amp;amp;hsa_kw=&amp;amp;hsa_mt=&amp;amp;hsa_net=adwords&amp;amp;hsa_ver=3&amp;amp;gad_source=1&amp;amp;gclid=Cj0KCQiAtOmsBhCnARIsAGPa5yZWCNUNOhfx_gA6lN0W18HnXfNUwm1xOwdA-6tzQT0iQx_meh2w7koaAoaEEALw_wcB"&gt;this&lt;/a&gt; blog post from Educative covers the Ticketmaster meltdown from a system design perspective and this might have affected you personally if you’re a swiftie! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip #4 - Teach the material&lt;/strong&gt; 🍎&lt;/p&gt;

&lt;p&gt;My last tip is to teach the material! You can do this via blog posts, YouTube, LinkedIn, etc. I started a book club recently that covers one chapter of Designing Data-Intensive Applications a month, which adds a level of positive pressure to study and understand the material. Teaching the material solidifies it in your brain. &lt;/p&gt;

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

&lt;p&gt;I hope this helps! Let me know in the comments what you're all reading. &lt;/p&gt;

</description>
      <category>technicalbooks</category>
      <category>reading</category>
      <category>career</category>
    </item>
    <item>
      <title>Docker: An Introduction</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Wed, 18 Oct 2023 01:56:00 +0000</pubDate>
      <link>https://dev.to/jennherrarte/docker-an-introduction-4nm2</link>
      <guid>https://dev.to/jennherrarte/docker-an-introduction-4nm2</guid>
      <description>&lt;p&gt;Earlier this month, I had the chance to attend DockerCon in Los Angeles. You can read more about that &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7115771268984950784/" rel="noopener noreferrer"&gt;here&lt;/a&gt;...However, attending DockerCon inspired me to share an introduction to Docker! &lt;/p&gt;

&lt;p&gt;First, let's try to come up with a mental model for what exactly Docker is. Imagine Docker as a standardized shipping container in the world of transport.&lt;/p&gt;

&lt;h2&gt;
  
  
  Back in the day...
&lt;/h2&gt;

&lt;p&gt;In the real world of logistics and transportation, goods need to be transported from one place to another efficiently and securely. Traditionally, cargo was loaded and unloaded individually onto various types of vehicles, each with its own specific requirements and limitations. This process was time-consuming, error-prone, and costly.&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%2F6xfvvnomw4wypzu5tf2r.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%2F6xfvvnomw4wypzu5tf2r.jpg" alt="old shipping boat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, consider Docker as the equivalent of a standardized shipping container. Just like a shipping container, Docker containers are designed to be a consistent, self-contained unit that holds everything needed for a particular "cargo" or application. Docker containers provide &lt;strong&gt;consistency&lt;/strong&gt;, &lt;strong&gt;isolation&lt;/strong&gt;, &lt;strong&gt;portability&lt;/strong&gt;, &lt;strong&gt;efficiency&lt;/strong&gt;, and &lt;strong&gt;scalability&lt;/strong&gt;. &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%2Fsou83mw2x2giw7dod6jd.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%2Fsou83mw2x2giw7dod6jd.png" alt="shipping containers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is especially helpful as applications become more complex, with some having separate frontends, backends, and numerous dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here are a few problems Docker can help solve:
&lt;/h2&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%2F14979v1o2j0i8xyt2nsh.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%2F14979v1o2j0i8xyt2nsh.jpg" alt="Dependency Hell"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inconsistent Environments&lt;/strong&gt;&lt;br&gt;
In the world of software development, an application typically goes through multiple stages, from development to testing and then deployment. The challenge here is that each of these environments can be slightly different in terms of configurations, libraries, and dependencies. &lt;br&gt;&lt;br&gt; This inconsistency often leads to the notorious "it works on my machine" problem, where an application behaves differently in different environments. Docker ensures consistency by packaging the application and all its dependencies into a single container. This container behaves the same way across different environments, eradicating the issue of inconsistent environments.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency Hell&lt;/strong&gt;&lt;br&gt;
Application development often requires specific versions of libraries, packages, and software dependencies. Managing these dependencies manually can be a nightmare, especially when multiple projects with conflicting requirements are in progress. &lt;br&gt;&lt;br&gt; Docker simplifies this by encapsulating an application and all its dependencies in a container. You define the required dependencies in a Dockerfile, and Docker takes care of the rest. No more worrying about dependency conflicts or complex installation procedures.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolation and Security&lt;/strong&gt;&lt;br&gt;
Running multiple applications on a single server can be risky. If one application encounters a security vulnerability or a runtime issue, it can potentially affect other applications running on the same server. &lt;br&gt;&lt;br&gt; Docker offers containerization, which means each application runs in an isolated environment. A security breach or an application crash within one container won't jeopardize others, enhancing overall system security and stability.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Portability&lt;/strong&gt;&lt;br&gt;
In a world where applications can be deployed on various platforms, from local development machines to cloud servers and everything in between, ensuring your application works consistently across these platforms can be challenging. &lt;br&gt;&lt;br&gt; Docker solves this problem by making containers portable. You can develop an application on your local machine, package it as a Docker container, and be confident that it will work the same way when deployed in the cloud or on-premises.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource Efficiency&lt;/strong&gt;&lt;br&gt;
In traditional virtualization, each virtual machine requires its own operating system, which consumes a significant amount of resources. &lt;br&gt;&lt;br&gt; Docker containers share the host operating system's kernel, making them incredibly lightweight and efficient. This results in reduced overhead, better resource utilization, and the ability to run more containers on the same hardware.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Docker's Architecture&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Docker's architecture is designed around a client-server model, which includes:&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%2Fyf24ixvi999villd8acf.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%2Fyf24ixvi999villd8acf.png" alt="Docker Architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docker Client&lt;/strong&gt;&lt;br&gt;
The Docker client, also known as the Docker CLI, is the primary interface for users to interact with Docker. Users issue commands to the Docker client, which in turn communicates with the Docker daemon to carry out requested operations. These commands can be used to build, run, and manage containers, as well as interact with images and registries.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docker Daemon&lt;/strong&gt;&lt;br&gt;
The Docker daemon, or simply Docker, is a background service that manages container lifecycles. It listens for Docker API requests, processes these requests, and interacts with the host operating system to create and run containers. &lt;br&gt;&lt;br&gt; The daemon is responsible for building and managing containers based on Docker images. It ensures that containers run in isolated environments and communicates with the kernel of the host operating system to control resource allocation.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docker Images&lt;/strong&gt;&lt;br&gt;
Images are at the core of Docker's architecture. An image is a read-only template that includes a set of instructions for creating a container. Images are composed of multiple layers, which are stacked to form the final image. The layered approach enables images to be lightweight and efficient. Images can be created manually using Dockerfiles or pulled from registries.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Containers&lt;/strong&gt;&lt;br&gt;
Containers are the runtime instances of Docker images. When you run a container, it's created from an image, and a writable container layer is added on top. This container layer allows the application to make changes without affecting the underlying image. Containers are isolated, lightweight, and ephemeral, making them perfect for running applications and services.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docker Registry&lt;/strong&gt;&lt;br&gt;
A Docker registry is a repository that stores and distributes Docker images. Docker Hub is the most well-known public registry, but organizations can set up private registries to store their images securely. Images can be pushed to and pulled from registries, making it easy to share and collaborate on software projects.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How Docker's Architecture Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;With this architectural foundation in mind, let's dive into how Docker operates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Building an Image&lt;/strong&gt;: You create an image by defining its configuration in a Dockerfile. This configuration includes specifying a base image, adding files, setting up environment variables, and executing commands. The Dockerfile is used to build the image.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Layered Filesystem&lt;/strong&gt;: Images are composed of multiple layers. Each instruction in the Dockerfile creates a new layer, and these layers are cached and can be reused to speed up image creation.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Running a Container&lt;/strong&gt;: You run a container from an image using the docker run command. The Docker Engine leverages the image's filesystem and adds a writable container layer on top. This container layer allows your application to make changes without affecting the underlying image.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F4niff5jbs21pjkn8zy17.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%2F4niff5jbs21pjkn8zy17.png" alt="Docker Engine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolation&lt;/strong&gt;: Containers provide process and filesystem isolation. Each container runs in its isolated environment, separate from the host and other containers. This isolation enhances security and prevents conflicts between applications.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource Control&lt;/strong&gt;: Docker allows you to control the resources allocated to containers, such as CPU and memory. You can also limit network access, making it possible to run multiple containers on the same host without interference.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interacting with Containers&lt;/strong&gt;: The Docker CLI and Docker API provide interfaces to interact with containers. You can start, stop, and manage containers, and even execute commands inside running containers.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cleanup and Portability&lt;/strong&gt;: Containers can be stopped and removed when no longer needed. Images can be shared with others, pushed to registries, and pulled to different environments. This makes applications highly portable and easy to manage.&lt;br&gt;&lt;br&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker's architecture, with its client-server model, layered filesystem, and containerization principles, plays a pivotal role in its success. Understanding this architecture is crucial for harnessing Docker's power and streamlining your software development workflow. &lt;br&gt; &lt;br&gt; With Docker, you're equipped to create, package, and deploy applications more efficiently and reliably than ever before. Docker, with its architecture and containerization, offers a seamless and reliable way to streamline the development and deployment of applications. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>docker</category>
      <category>backend</category>
      <category>devops</category>
    </item>
    <item>
      <title>Catch me at the 2023 Discord App Pitches!</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Mon, 25 Sep 2023 19:24:12 +0000</pubDate>
      <link>https://dev.to/jennherrarte/discord-app-pitches-2023-1ail</link>
      <guid>https://dev.to/jennherrarte/discord-app-pitches-2023-1ail</guid>
      <description>&lt;p&gt;Hello Dev Community! &lt;/p&gt;

&lt;p&gt;I'm thrilled to share that I'll be one of the judges for Discord's 2023 App Pitches, and I'll be in awesome company with some super cool people. Discord has been my go-to for connecting with folks, whether it's about my love for hip-hop 🎧 or diving into web development 💻 discussions. And because I work at a creative agency and have been in quite a few pitch sessions, I can't wait to see what creative ideas people come up with! 💫&lt;/p&gt;

&lt;p&gt;Need inspiration or want to upgrade your server? Check out the app directory here! &lt;br&gt;
&lt;a href="https://discord.com/application-directory"&gt;https://discord.com/application-directory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cAoeBZ_y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xo5fp1uf25b2n3j1ctg6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cAoeBZ_y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xo5fp1uf25b2n3j1ctg6.png" alt="Image of Discord App Directory" width="800" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find more info about how to create your pitch, details about the requirements, and judges here: &lt;a href="https://discord.com/build/app-pitches-2023"&gt;https://discord.com/build/app-pitches-2023&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discord</category>
      <category>productivity</category>
      <category>career</category>
      <category>api</category>
    </item>
    <item>
      <title>Exploring Two-Way Data Binding in Vue.js: Building Interactive Web Apps</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Sun, 03 Sep 2023 20:22:51 +0000</pubDate>
      <link>https://dev.to/jennherrarte/exploring-two-way-data-binding-in-vuejs-building-interactive-web-apps-2gc7</link>
      <guid>https://dev.to/jennherrarte/exploring-two-way-data-binding-in-vuejs-building-interactive-web-apps-2gc7</guid>
      <description>&lt;p&gt;In today's dynamic web development landscape, creating interactive and responsive web applications is key to providing engaging user experiences. Vue.js, a popular JavaScript framework, simplifies this process by offering a powerful feature known as two-way data binding. In this post, we'll explore what two-way data binding is and how you can use it effectively in Vue.js to create highly interactive web applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real quick...Let's Talk About One-Way vs. Two-Way Data Binding
&lt;/h2&gt;

&lt;p&gt;One-way data binding is a technique where data flows in a single direction, typically from the data source (model) to the user interface (UI). Changes in the model update the UI, ensuring that users see up-to-date information. While one-way data binding simplifies data display, it doesn't facilitate user interactions that update the data model. This is where two-way data binding shines. &lt;/p&gt;

&lt;p&gt;Two-way data binding extends the concept by allowing changes in the UI to automatically update the data model as well. It enables real-time synchronization between the UI and the data, creating a more interactive and responsive user experience. Developers choose two-way data binding when they need to build applications where user input directly influences the data, resulting in a seamless and efficient flow of information between users and the application's underlying logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Two-Way Data Binding
&lt;/h2&gt;

&lt;p&gt;Two-way data binding is a mechanism that establishes a seamless connection between the data model and the user interface. As discussed, with traditional one-way data binding, changes in the model (data) update the UI, but not the other way around. Two-way data binding, on the other hand, ensures that changes in the UI also update the data model. This bidirectional synchronization simplifies development and enhances user interactions.&lt;/p&gt;

&lt;p&gt;Let's illustrate this concept with a basic example using Vue.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Type something&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;You&lt;/span&gt; &lt;span class="nx"&gt;typed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this Vue.js code snippet, the v-model directive binds the input field to the message data property. As the user types, the message property updates in real-time, and any changes to the message property are instantly reflected in the paragraph element.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Two-Way Data Binding in Vue.js
&lt;/h2&gt;

&lt;p&gt;Vue.js's implementation of two-way data binding offers several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Productivity&lt;/strong&gt;: Vue.js provides a clean and concise syntax for two-way data binding, reducing the complexity of manual data synchronization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Experience&lt;/strong&gt;: Changes made by users are immediately visible in the UI, enhancing the responsiveness and interactivity of your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Clarity&lt;/strong&gt;: Vue.js abstracts much of the data binding logic, resulting in cleaner and more readable code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementing Two-Way Data Binding in Vue.js
&lt;/h2&gt;

&lt;p&gt;Getting started with two-way data binding in Vue.js is straightforward. First, include the Vue.js library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create an instance of Vue and define your data properties:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Type something&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;You&lt;/span&gt; &lt;span class="nx"&gt;typed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;el&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By binding the message property using v-model, Vue.js automatically sets up the two-way data binding for you.&lt;/p&gt;

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

&lt;p&gt;While two-way data binding is a powerful tool, it's essential to keep a few best practices in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: In complex applications, excessive use of two-way data binding can impact performance. Be mindful of the number of data-bound elements and the frequency of updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Debugging&lt;/strong&gt;: Debugging can be challenging when unexpected changes occur. Vue.js provides debugging tools to help trace data flow and troubleshoot issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning Curve&lt;/strong&gt;: Familiarize yourself with Vue's directives and concepts to maximize the benefits of two-way data binding effectively.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two-way data binding is a valuable feature that Vue.js brings to the table, enabling developers to create highly interactive and responsive web applications. By effortlessly synchronizing data between the model and the UI, Vue.js streamlines development and improves user experiences. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vue</category>
      <category>tutorial</category>
      <category>data</category>
    </item>
    <item>
      <title>What is State Management and Why Is It Important?</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Mon, 07 Aug 2023 15:00:00 +0000</pubDate>
      <link>https://dev.to/jennherrarte/what-is-state-management-and-why-is-it-important-1i8d</link>
      <guid>https://dev.to/jennherrarte/what-is-state-management-and-why-is-it-important-1i8d</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is State Management?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"State"&lt;/strong&gt; is any data that describes the current behavior of an application. This could include values like "a list of objects fetched from the server", "which item is currently selected", "name of the currently logged-in user", and "is this modal open?".It's like a snapshot of what's happening inside the app at any given moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"State Management"&lt;/strong&gt; is the process of dealing with changes and updates to state over time. This means having ways to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;store an initial value&lt;/li&gt;
&lt;li&gt;read the current value&lt;/li&gt;
&lt;li&gt;update a value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's also typically a way to be notified when the current value has changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of State​&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to an app, there are different types of state we can talk about. Here are some of them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data&lt;/strong&gt;: This is about values that handle specific features or how the app works, like a list of todos.&lt;br&gt;
&lt;strong&gt;Control/UI state&lt;/strong&gt;: Here, we're talking about values that deal with how the user interacts with the app, such as which todo item they've picked.&lt;br&gt;
&lt;strong&gt;Session state&lt;/strong&gt;: This is all about values related to the current user, like their username or profile info.&lt;br&gt;
&lt;strong&gt;Communication state&lt;/strong&gt;: These values describe stuff that's going on when the app talks to other servers, like a "loading" indicator.&lt;br&gt;
&lt;strong&gt;Location state&lt;/strong&gt;: This type of state keeps track of where we are in the browser, like the website's domain, the path, query parameters, and the navigation history. It's like knowing where you are on a map.&lt;/p&gt;

&lt;p&gt;Another set of categories might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local client state&lt;/strong&gt;: values that are scoped directly to a single component or its descendants&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global client state&lt;/strong&gt;: values that are broadly needed in many places throughout an application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What are the benefits of introducing State Management into your application?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Centralized Data Management&lt;/strong&gt;: State management provides a single, centralized store for all the data and application state, making it easier to access and modify the data from different components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictable and Consistent State Updates&lt;/strong&gt;: State management libraries, like Redux or MobX, enforce strict rules for updating state, ensuring predictability and consistency in state changes throughout the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Debugging&lt;/strong&gt;: With centralized state, debugging becomes more manageable as you can easily trace the flow of data and monitor state changes in a controlled environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easier Collaboration&lt;/strong&gt;: State management fosters better collaboration among developers since it establishes clear patterns for data handling and reduces code entanglement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Performance&lt;/strong&gt;: By organizing state updates, state management can optimize re-renders and prevent unnecessary rendering of components, leading to better application performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplified UI Logic&lt;/strong&gt;: State management reduces the need for passing props through multiple components, as components can access the necessary state directly from the store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support for Time Travel Debugging&lt;/strong&gt;: Some state management libraries offer time travel debugging, allowing developers to rewind and replay state changes for easier bug identification and resolution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: As your application grows in complexity, state management ensures maintainability and scalability by handling state in a structured manner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separation of Concerns&lt;/strong&gt;: State management helps to separate the business logic and presentation concerns, promoting a more organized and manageable codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent State Across Components&lt;/strong&gt;: State management ensures that all components access the same up-to-date state, avoiding discrepancies and inconsistencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform Compatibility&lt;/strong&gt;: State management can work with different frameworks and platforms, making it easier to share code and state management logic across multiple projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How do popular libraries and frameworks such as React and Vue handle state management?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because state management is such a vital part of writing applications, most frameworks and libraries have developed many different tools and patterns for working with state. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State-Management in React&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redux&lt;/strong&gt; is a popular state management library, often used with React, which is known for its simplicity and flexibility. It is based on the Flux architecture, which makes it easy to reason about and debug your state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplicity and flexibility&lt;/li&gt;
&lt;li&gt;Well-documented and supported&lt;/li&gt;
&lt;li&gt;Large community of users and developers&lt;/li&gt;
&lt;li&gt;Extensive ecosystem of third-party libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can be complex to learn and use&lt;/li&gt;
&lt;li&gt;Not as performant as some other libraries&lt;/li&gt;
&lt;li&gt;Can be difficult to debug&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in learning more about Redux, I highly recommend watching the video below: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=_shA5Xwe8_4&amp;amp;t=83s" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.youtube.com%2Fvi%2F_shA5Xwe8_4%2F0.jpg" alt="100 Seconds of Redux"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State-Management in Vue&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The official state management library for Vue has changed from Vuex to &lt;strong&gt;Pinia&lt;/strong&gt;. Pinia is gaining popularity within the Vue community, and quickly becoming known for its simplicity. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cute pineapple logo &lt;/li&gt;
&lt;li&gt;Has a Simpler API than Vuex&lt;/li&gt;
&lt;li&gt;Did I mention it has a smiling pineapple logo???&lt;/li&gt;
&lt;li&gt;Comes with Devtools&lt;/li&gt;
&lt;li&gt;Has built-in Typescript support &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It doesn't have large community support and solutions compared to Vuex&lt;/li&gt;
&lt;li&gt;Pinia doesn't support debugging functions, like time travel and editing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a nutshell, state management is super important for making scalable apps. It helps keep all the data in check, making sure it's organized and consistent. Plus, it makes it a breeze to handle lots of users and different parts of the app without everything going haywire. &lt;/p&gt;

</description>
      <category>state</category>
      <category>webdev</category>
      <category>react</category>
      <category>vue</category>
    </item>
    <item>
      <title>Tech Terms You Need to Know 💭</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Mon, 09 Jan 2023 18:01:23 +0000</pubDate>
      <link>https://dev.to/jennherrarte/things-tech-people-say-2a3e</link>
      <guid>https://dev.to/jennherrarte/things-tech-people-say-2a3e</guid>
      <description>&lt;p&gt;Today's post will be dedicated to a few terms and phrases that are software, development, and tech specific. I was inspired by this &lt;a href="https://twitter.com/GergelyOrosz/status/1610292534726508544"&gt;tweet&lt;/a&gt; where Gergely Orosz, author of The Pragmatic Engineer newsletter (if you haven't checked it out, I &lt;em&gt;highly&lt;/em&gt; recommend it), asks what terms many software engineers understand, but can confuse people outside of tech. &lt;/p&gt;

&lt;p&gt;I related to many of the replies, as I was so confused by terms like &lt;em&gt;production&lt;/em&gt; and &lt;em&gt;staging&lt;/em&gt; on my first day as a junior developer. &lt;/p&gt;

&lt;p&gt;Live footage of me on my first day:&lt;br&gt;
&lt;a href="https://i.giphy.com/media/WRQBXSCnEFJIuxktnw/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/WRQBXSCnEFJIuxktnw/giphy.gif" width="504" height="322"&gt;&lt;/a&gt;   &lt;/p&gt;

&lt;p&gt;Of all the terms mentioned, here are my favorites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rubber Ducking&lt;/strong&gt; 🦆 &lt;br&gt;
Rubber Ducking is a term often used when talking about debugging. The term “rubber duck debugging” comes from a book by Andrew Hunt and David Thomas called “The Pragmatic Programmer.” In the book, the authors describe a programmer who carries a rubber duck around and debugs their code by explaining it, line-by-line, to the duck. &lt;br&gt; &lt;br&gt;While the practice of talking to a rubber duck may sound silly, it’s actually proven to be a helpful strategy for finding and solving problems with code. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Daily Standup&lt;/strong&gt; 🤝🏽&lt;br&gt;
Daily Stand Ups are part of the Agile Software development process (and SCRUM). They are usually at the same time every day and can cover topics such as what you accomplished the day before, what you plan on accomplishing that day, and blockers. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blockers&lt;/strong&gt; 🛑 &lt;br&gt;
Something preventing (blocking) you from moving forward with a task, often code-related. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Do a Git Blame&lt;/strong&gt; 🙃 &lt;br&gt;
A git-blame is used to show what revision and author last modified each line of a file. It's like checking the history of the development of a file. More formal definition from &lt;a href="https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file"&gt;GitHub&lt;/a&gt;: &lt;br&gt;&lt;br&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The blame command is a Git feature, designed to help you determine who made changes to a file. Despite its negative-sounding name, git blame is actually pretty innocuous; its primary function is to point out who changed which lines in a file, and why. It can be a useful tool to identify changes in your code.&lt;/p&gt;


&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lead the Postmortem&lt;/strong&gt; 💀&lt;br&gt;
A post-mortem is when a team reflects on a project, how it was executed, what went right, what went wrong, how to prevent mistakes, and how to do better next time. I've heard this phrase used outside of tech many times. &lt;br&gt;&lt;br&gt; In my opinion, postmortems are really a helpful exercise regardless of industry. Oftentimes, someone is chosen to lead this, therefore leading the postmortem. I love &lt;a href="https://www.freecodecamp.org/news/what-is-a-software-post-mortem/"&gt;this&lt;/a&gt; article from Free Code Camp on what postmortems can look like for software. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical Debt&lt;/strong&gt; 💵 &lt;br&gt;
Technical debt is the term used to describe the result of making decisions based on speed above all else. These quick, real-time decisions can make or break software updates. But there should be a balance between good decisions and fast ones. Technical debt can result in negative outcomes or be well worth it—depending on what you and your team decide. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spaghetti Code&lt;/strong&gt; 🍝 &lt;br&gt;
Spaghetti Code is a term used when describing unstructured and difficult-to-read code. Spaghetti Code can lead to problems over time, as it's often tricky to build on top of. If not resolved, it can lead to folks spending time and energy fixing and finding bugs due to the lack of structure in the code. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kill All&lt;/strong&gt; ☠️&lt;br&gt;
killall is a tool for terminating running processes on your system based on name. You can run it like this: &lt;br&gt;&lt;br&gt;&lt;code&gt;killall [process name]&lt;/code&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Development (aka Dev)&lt;/strong&gt; 💡&lt;br&gt;
Commonly referred to as dev, this is where developers build the code. For example, your company may have a 'dev' version of the site where you push up code for review. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Staging (aka Stage)&lt;/strong&gt; 🧪&lt;br&gt;
This environment is used to test the software using real data to validate it is ready for use. For example, your company may have a 'staging' version of the site where you push up code. In my experience, this step comes after testing code on dev.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Production (aka Prod)&lt;/strong&gt; ✅&lt;br&gt;
Commonly referred to as prod, this is where the software is made available to users (aka friends, family, the general public, etc.) &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ship to Production&lt;/strong&gt;&lt;br&gt;
Shipping to production essentially means pushing code live to where it is available to all users. However, this can happen differently depending on your company. I love &lt;a href="https://blog.pragmaticengineer.com/shipping-to-production/"&gt;this &lt;/a&gt; article from Gergely Orosz on the different approaches to pushing code live. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cut a Release&lt;/strong&gt; 📋 &lt;br&gt;
Cutting a release means taking the state of a code base, project, or repo, and locking it down so no further changes are made. This state is then given a release name and/or release version. &lt;br&gt;&lt;br&gt;An example would be how different versions of operating systems are released for your laptop or phone. Releases are helpful because when consistent versions of the software are given to users, it is easier for them to ask for help based on what version they are using. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Change List&lt;/strong&gt; ✔️&lt;br&gt;
New features and/or fixed bugs that are new from one version of software to the next. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Grok&lt;/strong&gt; 🧘&lt;br&gt;
Grok can be used to describe understanding a subject matter (for example, a programming language) so well that you become &lt;em&gt;one&lt;/em&gt; with it. &lt;br&gt;&lt;br&gt;Two definitions from &lt;a href="https://www.amazon.com/gp/product/0262680920?ie=UTF8&amp;amp;tag=grok-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0262680920"&gt;The New Hackers Dictionary&lt;/a&gt; by Eric S. Raymond state:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;To understand. Connotes intimate and exhaustive knowledge. When you claim to ‘grok’ some knowledge or technique, you are asserting that you have not merely learned it in a detached instrumental way but that it has become part of you, part of your identity. For example, to say that you “know” LISP is simply to assert that you can code in it if necessary — but to say you “grok” LISP is to claim that you have deeply entered the world-view and spirit of the language, with the implication that it has transformed your view of programming. Contrast zen, which is similar supernal understanding experienced as a single brief flash. See also glark.&lt;/li&gt;
&lt;li&gt;Used of programs, may connote merely sufficient understanding. “Almost all C compilers grok the void type these days.”&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can read more about its origins &lt;a href="http://www.grokcode.com/95/definition-and-origin-of-grok/"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
Comment down below with any of your favorites!&lt;/p&gt;

</description>
      <category>tech</category>
      <category>webdev</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>An Introduction to Rest APIs</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Wed, 28 Dec 2022 19:59:05 +0000</pubDate>
      <link>https://dev.to/jennherrarte/an-introduction-to-rest-apis-5hjn</link>
      <guid>https://dev.to/jennherrarte/an-introduction-to-rest-apis-5hjn</guid>
      <description>&lt;p&gt;I know in my last post I said the internet doesn't need another explanation of REST APIs, but that's exactly what I'm writing about today because, well, they're important. 🙃 &lt;/p&gt;

&lt;p&gt;Below we'll be discussing concepts such as REST, APIs, and how they come together to create RESTful APIs.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is an API?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;API stands for Application Programming Interface, which is a set of rules two software programs use to communicate with each other and exchange data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's use an everyday example:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Imagine you went to the hottest 🍕pizza🍕 place in town for dinner. Upon getting there, the waiter takes your order and delivers it to the kitchen. The kitchen makes your pizza and gives it to the waiter, who delivers it back to you. All of this happens without you ever having to step foot in the kitchen or talk to the chef. An API does the same by taking your request, telling the server what you want, and giving a response back to you.&lt;/p&gt;

&lt;p&gt;Similar to how waiters act as an in-between for guests and the kitchen, APIs process data transfer between servers and an application. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How APIs actually work:&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1&lt;/strong&gt; 💡
&lt;/h3&gt;

&lt;p&gt;A client application makes an API call (aka a request) to an &lt;strong&gt;endpoint&lt;/strong&gt; to retrieve information. &lt;/p&gt;

&lt;p&gt;An endpoint contains a Uniform Resource Identifier (URI)   indicating where and how to find the resource on the Internet. The most common type of &lt;a href="https://www.abstractapi.com/api-glossary/uri" rel="noopener noreferrer"&gt;URI &lt;/a&gt;is a Unique Resource Location (URL), serving as a complete web address.&lt;br&gt;
URI's include a request verb, headers, and a body. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Headers&lt;/strong&gt; store information relevant to both the client and server. Headers provide important authentication data — such as an API key, the name or IP address of the computer where the server is installed, and information about the response format.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;body&lt;/strong&gt; gives additional information to the server. For instance, it may be a piece of data you want to add or replace.&lt;/p&gt;

&lt;p&gt;When making a request, most APIs use &lt;strong&gt;HTTP&lt;/strong&gt; verbs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is HTTP?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTP (Hypertext Transfer Protocol) is a standard way of transmitting data over the web that defines how messages are formatted and transmitted, and what actions web servers and clients should take in response to various commands. It is a request-response protocol, meaning that a client sends a request to a server and the server returns a response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are HTTP Verbs and Why do APIs use them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTP uses a set of standard verbs to specify the intended action to be performed on a resource. These include &lt;strong&gt;GET&lt;/strong&gt;, &lt;strong&gt;POST&lt;/strong&gt;, &lt;strong&gt;PUT&lt;/strong&gt;, and &lt;strong&gt;DELETE&lt;/strong&gt;. The acronym &lt;strong&gt;CRUD&lt;/strong&gt; also describes what kind of requests we can send in relation to HTTP verbs:&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%2Fqwjglnsntbr2jqxhd1dp.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%2Fqwjglnsntbr2jqxhd1dp.png" alt="CRUD VERBS" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTTP Status Codes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTP also defines a set of status codes that are used to indicate the result of a request. For example, a status code of 200 OK indicates that the request was successful, while a code of 404 Not Found indicates that the requested resource could not be found.&lt;/p&gt;

&lt;p&gt;Although developers often make use of HTTP verbs to provide a standard way of interacting with resources over the web, it is important to note that APIs and HTTP verbs are &lt;em&gt;not&lt;/em&gt; the same things. APIs can use different methods of communication besides HTTP.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2&lt;/strong&gt; 💡
&lt;/h3&gt;

&lt;p&gt;After receiving the request, the API makes a call to the web server. &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%2F3kqalssoqqoqmp0lhbnd.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%2F3kqalssoqqoqmp0lhbnd.png" alt="API Request Diagram" width="800" height="600"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3&lt;/strong&gt; 💡
&lt;/h3&gt;

&lt;p&gt;The server sends a response to the API with the requested information. The response also includes an HTTP status code.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 4&lt;/strong&gt;💡
&lt;/h3&gt;

&lt;p&gt;The API transfers the data to the initial requesting application.&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%2Fmqb960i1crndm87218xe.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%2Fmqb960i1crndm87218xe.png" alt="Infographic about API Calls" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is REST?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As the use of APIs became more common, protocols and sets of rules were created to provide users with defined rules that specify accepted data types and commands. These include SOAP (Simple Object Access Protocol), XML-RPC, but the one we care about in &lt;em&gt;this&lt;/em&gt; post is REST. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt; stands for &lt;strong&gt;Representational State Transfer&lt;/strong&gt;, and is a set of Web API architecture principles. To be a REST API (also known as a RESTful API), the API must adhere to certain architectural constraints. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TLDR&lt;/strong&gt; - REST is a standard that APIs follow, but there are other ways APIs can work. &lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐ &lt;strong&gt;RESTful APIs: How it all comes together&lt;/strong&gt;⭐
&lt;/h2&gt;

&lt;p&gt;To recap, we know REST isn’t linked to any particular technology or platform. Instead, it introduces constraints that describe how the server processes requests and responds to them. &lt;/p&gt;

&lt;p&gt;To be considered RESTful, an API must adhere to the following constraints:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Client-server autonomy&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With REST APIs, the client and server work independently and use different tech stacks. The server has no idea what you're seeing as a user, and the client doesn't know anything about the server. Having this separation means the API providers and consumers can be modified without interrupting communication. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this good?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Easy modifiability, better system reliability. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uniform interface&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A uniform interface dictates a standardized way to communicate with a given server, no matter the client app or device that runs it. This includes having a unique identifier (URI) assigned to each resource, self-descriptive messages explaining how to interpret them and what to do next, and the ability to manipulate a resource through its representation in JSON or XML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this good?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Easier to use and understand.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Layered architecture&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The client does not need to know the details of the server implementation, as the communication between the client and server takes place over a uniform interface. When calling a server, a client doesn’t know whether there are any intermediaries along the way. This allows us to place a proxy or load balancer between the client and server, which improves scalability. Adding security as a separate layer also enhances system safety. Although these services are involved in producing the response, the client doesn’t have to worry about what’s behind the interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this good?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Better for overall scaling and security.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Caching&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With REST APIs, we can allow clients to store frequently accessed data on their side instead of requesting them again and again. As a result, the app makes fewer calls, which reduces the load on the server and its latency. This allows the application becomes more responsive and reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this good?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Low server latency, increase in app speed and responsiveness.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Code on demand (CoD)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The server can send code to the client to be executed, allowing the server to adapt to the needs of the client on the fly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this good?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Feature customization, extended functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Stateless interactions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The server does not store any state about the client sessions, so each request from a client must contain all the information necessary to understand the request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this good?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enhanced performance, and app reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;API stands for Application Programming Interface, which is a set of rules two software programs use to communicate with each other and exchange data.&lt;/li&gt;
&lt;li&gt;APIs use HTTP Protocol when making requests.&lt;/li&gt;
&lt;li&gt;HTTP (Hypertext Transfer Protocol) is a standard way of transmitting data over the web that defines how messages are formatted and transmitted, and what actions web servers and clients should take in response to various commands.&lt;/li&gt;
&lt;li&gt;REST stands for Representational State Transfer, and is a set of Web API architecture principles.&lt;/li&gt;
&lt;li&gt;To be considered RESTFUL, APIs must adhere to these constraints:

&lt;ul&gt;
&lt;li&gt;Client-server architecture&lt;/li&gt;
&lt;li&gt;Statelessness&lt;/li&gt;
&lt;li&gt;Cacheability&lt;/li&gt;
&lt;li&gt;Layered system&lt;/li&gt;
&lt;li&gt;Code on demand &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I'm hoping to write a follow-up post with an API tutorial but until then, here are some APIs with great documentation: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stripe.com/docs/api" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.twilio.com" rel="noopener noreferrer"&gt;Twilio&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>cloud</category>
    </item>
    <item>
      <title>First and (Maybe) Last Post of 2022...</title>
      <dc:creator>Jenn Herrarte</dc:creator>
      <pubDate>Sat, 17 Dec 2022 03:45:01 +0000</pubDate>
      <link>https://dev.to/jennherrarte/first-and-maybe-last-post-of-2022-pba</link>
      <guid>https://dev.to/jennherrarte/first-and-maybe-last-post-of-2022-pba</guid>
      <description>&lt;p&gt;Definitely more posts to come in 2023, but first, a little about me...&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;About Me&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Hello! My name is Jenn and I'm a software developer at a creative agency in Los Angeles. Before becoming a developer, I worked in the entertainment industry (showbiz, baby 🎥). Although it was a fun career choice for a while (Ok, I did meet Tom Cruise, twice), I knew it wasn't what I wanted to do long term. I always had an interest in tech and software development (especially when I read &lt;a href="https://www.theverge.com/2020/10/22/21529477/mcdonalds-mcbroken-bot-ice-cream-machines-app-engineering"&gt;this&lt;/a&gt;) so I took a leap of faith and enrolled in a coding bootcamp, which brings me to where I am today! A dev with a little bit of imposter syndrome. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why I'm starting this blog&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I think many career switchers and bootcamp grads feel overwhelmed by the amount you have to learn, like &lt;em&gt;REALLY FAST&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3oFzmn3wtyBWUKO52w/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3oFzmn3wtyBWUKO52w/giphy.gif" width="366" height="274"&gt;&lt;/a&gt; ...What's that thing people say about learning development? It's like drinking out of a firehouse? Yeah, that's it...&lt;/p&gt;

&lt;p&gt;There are concepts and technologies that I &lt;em&gt;still&lt;/em&gt; don't fully have a grasp on (kubernetes anyone??). Although I don't think the internet needs another explanation on how REST APIs work, I've decided to start this blog anyway as a way to teach myself, and hopefully you, concepts by writing about them. I would appreciate any feedback from anyone who reads my posts, especially if there's an error or gap in my explanations. &lt;/p&gt;

&lt;p&gt;That's all for now folks. 👋  &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
