<?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: Moyomade</title>
    <description>The latest articles on DEV Community by Moyomade (@madev7).</description>
    <link>https://dev.to/madev7</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%2F1153227%2F1dadd9fd-c45c-4502-825c-875800d27c21.jpeg</url>
      <title>DEV Community: Moyomade</title>
      <link>https://dev.to/madev7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/madev7"/>
    <language>en</language>
    <item>
      <title>From Introvert to Tech: A Journey of Personal Growth and Community Connection</title>
      <dc:creator>Moyomade</dc:creator>
      <pubDate>Sun, 11 Aug 2024 22:43:31 +0000</pubDate>
      <link>https://dev.to/madev7/from-introvert-to-tech-a-journey-of-personal-growth-and-community-connection-2me8</link>
      <guid>https://dev.to/madev7/from-introvert-to-tech-a-journey-of-personal-growth-and-community-connection-2me8</guid>
      <description>&lt;h2&gt;
  
  
  The Extrovert Years
&lt;/h2&gt;

&lt;p&gt;In high school, I was the quintessential extrovert. As the sports prefect for two years, I lived and breathed athletics. The outdoors called to me, and I answered with enthusiasm. But alongside my love for sports, I harbored a secret passion for technology, actively participating in the JETS (Junior Engineers, Technicians, and Scientists) club.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Turning Point
&lt;/h2&gt;

&lt;p&gt;Everything changed on a fateful Wednesday during a routine sports session. An accident left me with a broken left leg, and for nearly a year, walking was impossible. When I finally recovered, my dreams of a sports career had evaporated. It was a crushing blow, but little did I know, it was also the beginning of a new chapter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Introverted Cocoon
&lt;/h2&gt;

&lt;p&gt;Fast forward to a few months after college, and I found myself retreating inward, becoming an introvert I never thought I'd be. This introspective period lasted about two years, during which I contemplated my next move.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovering Tech
&lt;/h2&gt;

&lt;p&gt;My entry into the tech world was unconventional. A friend's social media status about learning HTML and CSS caught my eye, and I reached out, eager to follow in his digital footsteps. Without a laptop, I turned to my smartphone, downloading apps and tapping out code on a tiny screen. It wasn't ideal, but it was a start.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solo Mistake
&lt;/h2&gt;

&lt;p&gt;In my newfound introversion, I made a critical mistake – I tried to go it alone. For a while, it seemed to work, but soon I hit a wall. Questions plagued me: Where do I go from here? How do I know if I'm good enough?&lt;/p&gt;

&lt;h2&gt;
  
  
  Embracing Community
&lt;/h2&gt;

&lt;p&gt;It was time for another transformation. Swallowing my fears, I joined tech communities and reached out to others in the field. The results were immediate and profound:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I found a mentor who's been guiding me for over a year&lt;/li&gt;
&lt;li&gt;LinkedIn became a source of contracts and internships&lt;/li&gt;
&lt;li&gt;I rediscovered the joy of peer interactions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where I Am Today
&lt;/h2&gt;

&lt;p&gt;Today, I'm not just a coder – I'm part of a vibrant community. I help others, seek help when needed, and continually grow alongside a group of amazing individuals who inspire me daily. This journey has taught me the power of resilience, adaptability, and community in tech.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Setbacks can lead to unexpected opportunities&lt;/li&gt;
&lt;li&gt;It's okay to change and evolve – from extrovert to introvert and back again&lt;/li&gt;
&lt;li&gt;Learning in isolation has its limits; community is key&lt;/li&gt;
&lt;li&gt;Putting yourself out there can be scary, but it's worth it&lt;/li&gt;
&lt;li&gt;The tech journey is a marathon, not a sprint&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A Message to Fellow Tech Enthusiasts
&lt;/h2&gt;

&lt;p&gt;To those standing where I once stood, hesitating at the threshold of the tech world, I say this: It's not as daunting as it seems. That first step may feel scary, but it's the gateway to incredible opportunities and personal growth.&lt;/p&gt;

&lt;p&gt;Remember, the tech journey is a marathon, not a sprint. Embrace the community around you, help others along the way, and watch yourself grow exponentially. You're amazing at what you do – or what you will do. Be bold, put yourself out there, grow with a community, and unlock your potential.&lt;/p&gt;

&lt;p&gt;Your future in tech awaits. Take that step, and let's code this journey together!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>technology</category>
      <category>techjourney</category>
    </item>
    <item>
      <title>Masking vs Encryption in JavaScript: A Comprehensive Guide for Secure Data Handling</title>
      <dc:creator>Moyomade</dc:creator>
      <pubDate>Thu, 11 Jul 2024 11:50:05 +0000</pubDate>
      <link>https://dev.to/madev7/masking-vs-encryption-in-javascript-a-comprehensive-guide-for-secure-data-handling-4nag</link>
      <guid>https://dev.to/madev7/masking-vs-encryption-in-javascript-a-comprehensive-guide-for-secure-data-handling-4nag</guid>
      <description>&lt;p&gt;In today’s digital world, securing sensitive data is paramount, especially when working on applications that handle financial information. Recently, while developing a finance dashboard, I implemented a technique I initially believed to be encryption but later realized was masking. This realization spurred a deep dive into the differences between masking and encryption, leading to this blog post. Here, I’ll share my findings to help you understand these techniques, their applications, and their importance in data security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Topic?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Personal Experience:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
As a developer, I always strive to implement the best security practices in my projects. While working on a finance dashboard, I used a technique to obscure sensitive data, thinking it was encryption. This technique involved displaying only partial data, like showing only the last four digits of a credit card number. Curious about whether this approach was truly encryption, I embarked on a research journey. My goal was to clarify the distinctions between masking and encryption and share this knowledge with others who might face similar confusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Masking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Definition and Purpose:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Masking is a technique used to hide parts of sensitive data, making it readable only in a limited context. Unlike encryption, masking does not transform the data into an unreadable format but rather obscures certain parts to protect sensitive information while maintaining some level of visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Masking a Credit Card Number:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvphlu9gyggqj2oq8x7fr.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%2Fvphlu9gyggqj2oq8x7fr.png" alt="Image description" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, the function replaces all but the last four digits of the credit card number with '*', effectively masking the sensitive parts.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Displaying partial data in user interfaces (e.g., last four digits of a credit card).&lt;/li&gt;
&lt;li&gt;Protecting data in logs and reports.&lt;/li&gt;
&lt;li&gt;Ensuring privacy in testing and development environments.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Understanding Encryption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Definition and Purpose:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Encryption is the process of converting plaintext into ciphertext, an unreadable format, using a specific algorithm and key. The primary goal is to protect data confidentiality, ensuring that only authorized parties with the correct decryption key can access the original information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: AES-256-CBC Encryption:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxdraoe94urmfcyt3jmr.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%2Fxxdraoe94urmfcyt3jmr.png" alt="Image description" width="800" height="1257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, the AES-256-CBC algorithm securely encrypts and decrypts a text message, demonstrating the transformation of plaintext into ciphertext and back.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Securing data in transit (e.g., HTTPS).&lt;/li&gt;
&lt;li&gt;Protecting stored data (e.g., database encryption).&lt;/li&gt;
&lt;li&gt;Ensuring confidentiality in messaging apps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Practical Applications and Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Masking Use Case:&lt;/strong&gt;&lt;br&gt;
In a finance dashboard, you might want to display only the last four digits of a customer's credit card number to protect their privacy:&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%2Ff9w7zcl5jp73gp94m5bd.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%2Ff9w7zcl5jp73gp94m5bd.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encryption Use Case:&lt;/strong&gt;&lt;br&gt;
For storing sensitive data in a database, encryption ensures that even if the database is compromised, the data remains secure:&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%2F2dk23tbakblgxe6q93dg.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%2F2dk23tbakblgxe6q93dg.png" alt="Image description" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion: Making the Right Choice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to data security, both masking and encryption have their roles. Masking is ideal for situations where you need to obscure data without changing its format, while encryption is essential for ensuring data confidentiality. Understanding the differences and appropriate use cases for each technique will help you make informed decisions in your development projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My journey from confusion to clarity on this topic has reinforced the importance of continuous learning and sharing knowledge. I hope this guide helps you navigate the complexities of data security and implement the best practices in your projects.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>learning</category>
      <category>programming</category>
      <category>security</category>
    </item>
    <item>
      <title>Understanding JavaScript Function Declarations: 'function' vs 'const'</title>
      <dc:creator>Moyomade</dc:creator>
      <pubDate>Wed, 15 May 2024 02:39:35 +0000</pubDate>
      <link>https://dev.to/madev7/understanding-javascript-function-declarations-function-vs-const-4ac1</link>
      <guid>https://dev.to/madev7/understanding-javascript-function-declarations-function-vs-const-4ac1</guid>
      <description>&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;, as a versatile and dynamic language, offers multiple ways to define functions. Among these, 'function' declarations and 'const' function expressions stand out as two common approaches. Understanding the differences between them is crucial for writing efficient and error-free JavaScript code. In this article, we'll explore the nuances of 'function' declarations and 'const' function expressions, their implications, and best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploring the Basics&lt;/strong&gt;&lt;br&gt;
'&lt;strong&gt;function&lt;/strong&gt;' Declarations: These are traditional function definitions that are hoisted within their scope. This means you can call them before they are declared in the code.&lt;/p&gt;

&lt;p&gt;'&lt;strong&gt;const&lt;/strong&gt;' Function Expressions: When defining functions using 'const', it creates a function expression. Unlike 'function' declarations, 'const' function expressions are not hoisted and result in an error when called before declaration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Hoisting in JavaScript&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Hoisting&lt;/strong&gt; is a JavaScript mechanism where variables and function declarations are moved to the top of their containing scope during compilation.&lt;br&gt;
'&lt;strong&gt;function&lt;/strong&gt;' declarations are hoisted, allowing them to be called before their declaration in the code.&lt;br&gt;
Conversely, '&lt;strong&gt;const&lt;/strong&gt;' function expressions are not hoisted, and calling them before declaration will result in an error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Example&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%2Fvplnwijp78jevig6so7o.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%2Fvplnwijp78jevig6so7o.png" alt="Code Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Understanding the differences between '&lt;strong&gt;function&lt;/strong&gt;' declarations and '&lt;strong&gt;const&lt;/strong&gt;' function expressions enables cleaner, more efficient JavaScript code. By mastering hoisting implications and choosing the right method, developers enhance code reliability and maintainability. Whether leveraging hoisting or constancy, mastering these concepts is essential for JavaScript proficiency.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Beyond the Calculator: Exploring Reverse Polish Notation with JavaScript</title>
      <dc:creator>Moyomade</dc:creator>
      <pubDate>Thu, 18 Apr 2024 23:22:27 +0000</pubDate>
      <link>https://dev.to/madev7/beyond-the-calculator-exploring-reverse-polish-notation-with-javascript-1jb0</link>
      <guid>https://dev.to/madev7/beyond-the-calculator-exploring-reverse-polish-notation-with-javascript-1jb0</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Have you ever gotten frustrated with all those parentheses in your calculator expressions?  Especially when dealing with complex calculations?  Well, fret no more!  This article will introduce you to Reverse Polish Notation (RPN), a way to write expressions that eliminates the need for parentheses altogether.  We'll even build a simple RPN calculator in JavaScript!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Struggle with Infix Notation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traditional calculators use infix notation, where operators (+, -, *, /) sit between the numbers they operate on.  For example, 2 + 3 * 4  means "add 2 to the product of 3 and 4".  This works fine for simple expressions, but as things get more complex, parentheses become necessary to specify the order of operations.  Imagine trying to write something like "(2 + 3) * (4 - 1)" without parentheses!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Introducing Reverse Polish Notation (RPN)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reverse Polish Notation (RPN) flips the script on operators.  Instead of being placed between operands, operators come after the numbers they act on.  This eliminates the need for parentheses entirely!  Let's rewrite our previous example in RPN:&lt;/p&gt;

&lt;p&gt;2 3 + 4 *&lt;/p&gt;

&lt;p&gt;Here, we read from left to right: add 2 and 3, then multiply the result by 4.  Much simpler, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more about RPN?&lt;/strong&gt;&lt;br&gt;
Check out this resource: &lt;a href="http://www.computersciencebytes.com/array-variables/reverse-polish-notation/" rel="noopener noreferrer"&gt;http://www.computersciencebytes.com/array-variables/reverse-polish-notation/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building our RPN Calculator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, let's translate this concept into code and build a basic RPN calculator in JavaScript.  We'll use a concept called a "stack" to keep track of operands during the calculation.  Think of a stack like a stack of plates - you take the top plate (the last one added) first, i.e Last In First Out (LIFO) implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wanna learn more about the Stack Data Structure and it’s Basic Operations?&lt;/strong&gt;&lt;br&gt;
Check out this resource: &lt;a href="https://www.geeksforgeeks.org/stack-data-structure/amp/" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/stack-data-structure/amp/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a breakdown of the code:&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%2Fzcue7twy5zce020fyuta.jpeg" 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%2Fzcue7twy5zce020fyuta.jpeg" alt="The breakdown of the code explained with comments"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;calculate&lt;/strong&gt; function takes          an RPN expression as input.&lt;/li&gt;
&lt;li&gt;We split the expression into    tokens (numbers and operators)    based on spaces.&lt;/li&gt;
&lt;li&gt;An empty stack is created to store operands.&lt;/li&gt;
&lt;li&gt;We loop through each token:&lt;/li&gt;
&lt;li&gt;If it's a number, we convert it to a floating-point number and push it onto the stack.&lt;/li&gt;
&lt;li&gt;If it's an operator, we pop two operands from the stack, perform the operation, and push the result back onto the stack.&lt;/li&gt;
&lt;li&gt;Finally, if there's only one element left in the stack (the answer), it's returned. Otherwise, the expression is invalid.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Let's Try it Out!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that we have our calculator, let's see it in action!  Here are some examples of how to use the &lt;strong&gt;calculate&lt;/strong&gt; function:&lt;/p&gt;

&lt;p&gt;console.log(calculate("2 3 + 4 *")); // Output: 20&lt;br&gt;
console.log(calculate("4 5 - 2 *")); // Output: -2&lt;br&gt;
console.log(calculate("1 2 3 + *")); // Output: 5 &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give it a try!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want to learn more about converting &lt;strong&gt;infix&lt;/strong&gt; expression to &lt;strong&gt;prefix&lt;/strong&gt; expression?&lt;br&gt;
Check out this resource: &lt;a href="https://www.geeksforgeeks.org/convert-infix-expression-to-postfix-expression/amp/" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/convert-infix-expression-to-postfix-expression/amp/&lt;/a&gt;&lt;/p&gt;

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