<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: sierrat2011</title>
    <description>The latest articles on Forem by sierrat2011 (@sierrat2011).</description>
    <link>https://forem.com/sierrat2011</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%2F3641745%2Fcceef931-dd69-41e2-88b8-1db10e6ea9f0.jpeg</url>
      <title>Forem: sierrat2011</title>
      <link>https://forem.com/sierrat2011</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sierrat2011"/>
    <language>en</language>
    <item>
      <title>Understanding CRUD: The Foundation of Modern Applications</title>
      <dc:creator>sierrat2011</dc:creator>
      <pubDate>Mon, 02 Feb 2026 15:25:53 +0000</pubDate>
      <link>https://forem.com/sierrat2011/understanding-crud-the-foundation-of-modern-applications-d9c</link>
      <guid>https://forem.com/sierrat2011/understanding-crud-the-foundation-of-modern-applications-d9c</guid>
      <description>&lt;p&gt;If you’ve ever signed up for a service, updated your social media bio, or deleted an old email, you are already familiar with CRUD. While the term sounds like technical mumbo jumbo, it is actually a universal language of how applications manage information.&lt;br&gt;
CRUD is the backbone of most modern applications. Lets break down what CRUD is, why it matters, and how it works in the real world.&lt;/p&gt;

&lt;p&gt;CRUD stands for Create, Read, Update, and Delete. These four basic functions are used to manage data in a database. These operations represent the lifecycle of any piece of information—from the moment it's entered into a system until the moment it's removed. &lt;br&gt;
Most modern websites and mobile apps are created with CRUD operations Think of Twitter:&lt;br&gt;
• Create: You write and post a new tweet.&lt;br&gt;
• Read: You scroll through your timeline to see tweets from others.&lt;br&gt;
• Update: You edit a tweet (if you have a premium subscription) or update your profile photo.&lt;br&gt;
• Delete: You remove a tweet you no longer want on your profile.&lt;/p&gt;

&lt;p&gt;Let’s take a closer look at each of the four operations&lt;br&gt;
C - Create&lt;br&gt;
The Create operation is used to add new records to a storage system. When you fill out a "Sign Up" form, the application takes your input and "creates" a new user record in its database. &lt;br&gt;
R - Read&lt;br&gt;
The Read operation is the most frequent action. It involves retrieving or viewing existing data without changing it. Every time you open a profile or search for a product, you are "reading" from a database. &lt;br&gt;
U - Update&lt;br&gt;
Update is used when you need to modify data that already exists. If you change your shipping address on an order, the system doesn't create a "new" you; it simply "updates" your existing record with the new details. &lt;br&gt;
D - Delete&lt;br&gt;
The Delete operation removes data that is no longer needed. Developers often differentiate between a "hard delete" (erasing the record entirely) and a "soft delete" (marking the record as hidden so it can be recovered later). &lt;/p&gt;

&lt;p&gt;Standardizing data into these four categories makes building software much more efficient. By following a CRUD pattern, developers can:&lt;br&gt;
• Improve Security: By defining exactly who can "Read" or "Delete" certain data, apps stay secure.&lt;br&gt;
• Scale Faster: Most development frameworks (like Ruby on Rails or Django) are designed around CRUD, allowing developers to generate basic app structures in minutes.&lt;br&gt;
• Standardize APIs: It allows different apps to "talk" to each other using the same&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
CRUD is like the heartbeat of the digital world. Whether you are browsing online commerce site or managing a content management system, these four operations are working constantly behind the scenes. Now that you know the basics, you're ready to start building.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Revolutionary Node.js</title>
      <dc:creator>sierrat2011</dc:creator>
      <pubDate>Mon, 26 Jan 2026 14:12:15 +0000</pubDate>
      <link>https://forem.com/sierrat2011/the-revolutionary-nodejs-58d0</link>
      <guid>https://forem.com/sierrat2011/the-revolutionary-nodejs-58d0</guid>
      <description>&lt;p&gt;For a long time, JavaScript lived only inside your web browser. It was the thing used to make pop-up alerts or animate images. One day in 2009, Ryan Dahl asked himself 'what if you could take that same language and use it to expand the website and create a part that lives on a server, talks to databases, and handles user accounts?'&lt;br&gt;
That is exactly what Node.js does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Node.js?&lt;/strong&gt;&lt;br&gt;
In simple terms, Node.js is a way to run JavaScript on a computer or server instead of just inside a browser.&lt;br&gt;
It uses the V8 engine. This is the same "engine" that makes Google Chrome so fast and pulls it out of the browser so it can run on its own. This means you can now use JavaScript to create files, connect to databases, and build entire web servers.&lt;/p&gt;

&lt;p&gt;Node.js is so special because of the way it handles blocking and nonblocking calls. Imagine a waiter at a restaurant:&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Blocking (The Slow Way):&lt;/strong&gt;&lt;/em&gt; The waiter takes an order for a steak, goes into the kitchen, and stands there staring at the chef until the steak is cooked. They cannot help any other customers until that one steak is done. The whole restaurant slows down because the waiter is "blocked" by one task.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Non-Blocking (The Node.js Way):&lt;/em&gt;&lt;/strong&gt; The waiter takes the steak order, hands the ticket to the chef, and immediately goes to give another table their drinks. When the steak is finally ready, the waiter comes back to pick it up.&lt;br&gt;
Node.js is that efficient waiter. When it asks a database for information, it doesn't sit around waiting. It moves on to the next visitor’s request. This is why a single Node.js server can handle thousands of people at the same time with no trouble at all&lt;br&gt;
It uses something called the event loop. Think of this as a continuous cycle that Node.js runs.&lt;br&gt;
Node.js sends a task (like "fetch this user's photo") to the background.&lt;br&gt;
It keeps moving through the loop and handling other tasks.&lt;br&gt;
When the photo is ready, an "event" is triggered (like the chef ringing a bell).&lt;br&gt;
The event loop sees the task is done and delivers the photo to the user at the next available moment.&lt;/p&gt;

&lt;p&gt;**Node.js is Great for Beginners&lt;br&gt;
**If you already know a little bit of JavaScript from building websites, you have a huge head start.&lt;br&gt;
You don't have to learn a brand-new language like Python to work on the backend. You can use JavaScript for the frontend and the backend. In frontend work, you might have to worry if your code will work on old browsers. With Node.js, you control the server. Node comes with npm (Node Package Manager). It’s like a giant library of over 2 million pre-written pieces of code that you can download for free. &lt;/p&gt;

&lt;p&gt;When beginning to work with Node.js, you don't need to be a programming master, but it helps to be comfortable with these three things:&lt;br&gt;
Basic JavaScript: Things like functions and variables.&lt;br&gt;
Async/Await: This is the way you write code to tell Node, "do this in the background and let me know when you're done."&lt;br&gt;
Data Persistence: This is just a another way of saying "saving data." The main goal of the backend is writing data down and being able to find it again later&lt;br&gt;
Node.js turned JavaScript from a "browser-only" tool into a game changer for the entire web. It’s fast, efficient, and it uses the language you likely already know. If you want to build modern, scalable apps, Node.js is the perfect place to start your backend journey.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>javascript</category>
      <category>node</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A Gentle Introduction to Docker</title>
      <dc:creator>sierrat2011</dc:creator>
      <pubDate>Mon, 19 Jan 2026 14:45:47 +0000</pubDate>
      <link>https://forem.com/sierrat2011/a-gentle-introduction-to-docker-1f4n</link>
      <guid>https://forem.com/sierrat2011/a-gentle-introduction-to-docker-1f4n</guid>
      <description>&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%2Fdyz910629fb5ulnmz6yl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyz910629fb5ulnmz6yl.jpg" alt=" " width="430" height="260"&gt;&lt;/a&gt;&lt;br&gt;
Every developer has faced the dreaded phrase: &lt;em&gt;“It works on my machine.”&lt;/em&gt; This statement emphasizes one of the biggest challenges in software development - ensuring that applications run consistently across different environments. Docker emerged as a solution to this problem, offering a way to package applications so they behave the same no matter where they’re deployed.&lt;/p&gt;

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

&lt;p&gt;Docker is a software development platform built around &lt;em&gt;containerization technology&lt;/em&gt;. It allows developers to build, ship, and run applications inside lightweight, portable containers. Containers are standardized units of software that package code, runtime, libraries, and dependencies together. This ensures that applications run the same across environments. This could be on a developer’s laptop, a test server, or in production. Containers are isolated from the host machine, meaning they don’t interfere with local configurations. Docker containers are system-agnostic. This means they can be deployed to any machine without compatibility issues, making development faster and deployment smoother. While containers can run on various operating systems, Ubuntu is a common choice for Docker environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Containerization vs. Virtualization&lt;/strong&gt;&lt;br&gt;
To appreciate Docker, it helps to understand how containerization differs from virtualization:&lt;br&gt;
• Virtualization: A host machine runs multiple virtual machines (VMs), each with its own operating system and kernel. This requires significant resources because every VM emulates hardware and boots a full OS.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6mnduqkszqduix3hzhv.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%2Fc6mnduqkszqduix3hzhv.png" alt=" " width="766" height="702"&gt;&lt;/a&gt;&lt;br&gt;
• Containerization: Containers share the host’s operating system and kernel but remain isolated processes. They act like “mini-computers” with their own memory, network, and resources. Containers are lightweight, reproducible, and can be started or stopped quickly without affecting the host or other containers.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6617221jyek7922orox.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%2Fr6617221jyek7922orox.png" alt=" " width="772" height="689"&gt;&lt;/a&gt;&lt;br&gt;
Virtualization is heavy and resource-intensive, while containerization is lightweight and efficient.&lt;/p&gt;

&lt;p&gt;Docker’s rise was fueled by its simplicity and efficiency compared to older approaches:&lt;br&gt;
&lt;strong&gt;Docker vs. Virtual Machines&lt;/strong&gt;&lt;br&gt;
VMs emulate hardware and run full operating systems, consuming large amounts of CPU, memory, and disk space. In comparison, Docker containers are just processes running on the host OS. This allows you to run many containers simultaneously, where only a few VMs can run on the same hardware.&lt;br&gt;
&lt;strong&gt;Docker vs. Kubernetes&lt;/strong&gt;&lt;br&gt;
Docker excels at packaging and running applications but scaling them across containers can be challenging. Kubernetes _builds _on Docker by orchestrating containers across multiple machines, handling scaling, networking, and consistency.&lt;br&gt;
Docker’s strength lies in its simplicity, but when applications need to scale out handling more users and more services) tools like Kubernetes step in to complement Docker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diving Deeper into Docker&lt;/strong&gt;&lt;br&gt;
Docker integrates tightly with modern operating systems. It communicates directly with the OS kernel, avoiding the overhead of a hypervisor. It uses a layered file system, which makes disk usage efficient. For example, if multiple images share the same base layer, Docker stores only one copy and reuses it across containers.&lt;br&gt;
This efficiency makes Docker not only faster but also more resource-friendly compared to traditional virtualization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker File, Image, and Container&lt;/strong&gt;&lt;br&gt;
To use Docker effectively, it’s important to understand its building blocks: the Docker Hub, Dockerfile and Docker Image&lt;br&gt;
The Docker Hub is an online repository where you can find pre-configured containers for many programming languages, databases, and frameworks.&lt;br&gt;
The Docker file is a text blueprint that outlines how to the Docker Image should look. It specifies a base image (using the FROM keyword) and includes instructions for installing software, copying files, and running commands.&lt;br&gt;
The Docker Image is a lightweight, standalone package containing everything needed to run an application—code, runtime, libraries, and settings.&lt;br&gt;
The Docker Container is a running instance of a Docker image. Containers can be started, stopped, and shipped across different operating systems seamlessly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Docker has transformed modern software development by solving the “it works on my machine” problem. By packaging applications into containers, Docker ensures consistency, portability, and efficiency. It’s lighter and faster than traditional virtualization. It integrates seamlessly with orchestration tools like Kubernetes for scaling and it provides a simple yet effective workflow for developers.&lt;br&gt;
Docker allows teams to build, ship, and run applications with confidence. Whether you’re deploying a small web app or scaling a largeer service, Docker offers the foundation for reliable, reproducible software delivery.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>docker</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Functions on Functions on Functions</title>
      <dc:creator>sierrat2011</dc:creator>
      <pubDate>Thu, 18 Dec 2025 14:27:10 +0000</pubDate>
      <link>https://forem.com/sierrat2011/functions-on-functions-on-functions-40fk</link>
      <guid>https://forem.com/sierrat2011/functions-on-functions-on-functions-40fk</guid>
      <description>&lt;p&gt;One of the most important topics that we have studied so far is functions&lt;/p&gt;

&lt;p&gt;As a developer, you always want your code to be as efficient as possible. You want to make things easier for yourself and others who may be viewing your code&lt;br&gt;
Functions are reusable ‘blocks’ of code that can be called on and used later in the program. Functions are the foundation of JavaScript. They allow you to group instructions together, reuse logic, and make the code or program easier to understand. Each function is created to perform a specific task. You can define a function once and call it whenever you need it&lt;/p&gt;

&lt;p&gt;Declaring a Function&lt;br&gt;
Functions can be declared using the function reserved keyword:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function greet(name) {&lt;br&gt;
  return&lt;/code&gt;Hello + name!&lt;code&gt;;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here, greet is the function name, name is a parameter, and the return statement results in a string&lt;/p&gt;

&lt;p&gt;Parameters are placeholders (in the function) for your actual arguments that your will provide later (in the function call). There placeholders can be named anything. In the above example, ‘name’ could have just as easily been ‘apple’. As long as the proper arguments are passed in the function call, everything will still work as it should. Of course, it is a best practice to keep parameter names relevant to the data that is expected&lt;/p&gt;

&lt;p&gt;Return vs Undefined&lt;br&gt;
A function always has to return something. If not, the function call will result in undefined&lt;br&gt;
If a function has a return statement, it outputs that value.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function square(num) {&lt;br&gt;
  return num * num;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function logMessage(msg) {&lt;br&gt;
  console.log(msg);&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
console.log(square(4)); // 16&lt;br&gt;
console.log(logMessage("Hi")); // undefined&lt;/p&gt;

&lt;p&gt;Calling a Function&lt;br&gt;
Declaring only defines the function. To actually use the function, you must invoke the function by calling it. To call a named function, use its name and add your arguments (not the parameters) enclosed in parenthesis&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function greet(name) {&lt;br&gt;
  return&lt;/code&gt;Hello + name!&lt;code&gt;;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;console.log(greet(‘sierra’)); // Hello sierra&lt;/p&gt;

&lt;p&gt;Arguments must be placed in the function call in the same order as the parameters. The number of arguments and parameters must also be the same&lt;/p&gt;

&lt;p&gt;Higher Order Functions&lt;br&gt;
Functions that take a function as an argument or return a function are called higher order functions.&lt;br&gt;
Our biggest focus has always been: .map(), .filter(), .reduce().&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const numbers = [1, 2, 3]&lt;br&gt;
const doubled = numbers.map(n =&amp;gt; n * 2) // [2, 4, 6&lt;/code&gt;]&lt;/p&gt;

&lt;p&gt;Recursion is an example of a function returning a function. More specifically, recursion is a function calling itself until a base case is reached. Base cases are extremely important in recursive functions. Without a base case, or without the proper base case, your functions can result in an infinite look and the webpage will crash&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function countdown(n) {&lt;br&gt;
// base case&lt;br&gt;
  if (n &amp;lt;= 0) return&lt;br&gt;
  console.log(n)&lt;br&gt;
  countdown(n - 1)&lt;br&gt;
}&lt;br&gt;
countdown(3) // 3, 2, 1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Functions are more than simple code blocks. They are the foundation of a great program. From basic syntax and arrow functions to first-class, pure, and higher-order functions, studying and mastering these concepts will make your code cleaner, more efficient, and easier to maintain.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
