<?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: Baha Mustafa</title>
    <description>The latest articles on DEV Community by Baha Mustafa (@bahamustafa).</description>
    <link>https://dev.to/bahamustafa</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%2F1053747%2F5a3a586e-813a-4830-bed6-5a22890039e1.jpeg</url>
      <title>DEV Community: Baha Mustafa</title>
      <link>https://dev.to/bahamustafa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bahamustafa"/>
    <language>en</language>
    <item>
      <title>Exploring a Simple Budget Tracker App</title>
      <dc:creator>Baha Mustafa</dc:creator>
      <pubDate>Sat, 07 Oct 2023 07:58:43 +0000</pubDate>
      <link>https://dev.to/bahamustafa/creating-a-comprehensive-budget-tracker-application-58ea</link>
      <guid>https://dev.to/bahamustafa/creating-a-comprehensive-budget-tracker-application-58ea</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Managing money can be complicated. But it becomes easier when you can keep track of what you earn and spend. That's why I created a simple Budget Tracker App. This tool helps you understand where your money comes from and where it goes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It’s Made&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used React to build this app. React is a tool that helps make websites interactive and easy to use. With the help of React’s features, the Budget Tracker App updates in real time. That means the moment you input your income or expense, you can see the changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What It Does&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s what you can do with the Budget Tracker App:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Record Your Expenses: You can quickly add any costs and sort them into categories. This way, you can see exactly how you’re spending your money.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Track Your Income: You can also note down your earnings. This feature helps you see the whole picture of your money, both coming in and going out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get Insights Instantly: As soon as you enter your data, the app updates. You get immediate insights into your financial situation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The app uses React’s features to work quickly and show your financial data in real time. It's designed to be easy to use, with a clear layout and design.&lt;/p&gt;

&lt;p&gt;For example, say you buy a book for $20 and record this expense in the app. The app immediately updates your total budget. This instant update is possible because of how the app is built, making tracking your money fast and easy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building this app taught me a lot. I learned more about coding and how to make an app user-friendly. The experience showed me how technology can make managing money simpler and more straightforward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s Next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I plan to add more features to the app. Future versions might include automated insights to help you understand your money better, connections to bank accounts for automatic tracking, and visual tools to make your financial trends easy to see and understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creating the Budget Tracker App was a valuable experience. It reinforced my skills and showed me the positive impact of technology on managing personal finances. This app is designed to make tracking income and expenses straightforward and hassle-free, helping users to better manage their financial lives.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a Movie Explorer with Google Cloud: Protecting API Keys and Enhancing Security</title>
      <dc:creator>Baha Mustafa</dc:creator>
      <pubDate>Fri, 28 Jul 2023 03:56:06 +0000</pubDate>
      <link>https://dev.to/bahamustafa/building-a-movie-explorer-with-google-cloud-protecting-api-keys-and-enhancing-security-17hc</link>
      <guid>https://dev.to/bahamustafa/building-a-movie-explorer-with-google-cloud-protecting-api-keys-and-enhancing-security-17hc</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hello and welcome to my technical blog! In this post, I'll go over the technical aspects of Protecting the API. Users can use this web application to search for movies and create favorites and watchlists. However, ensuring the security of sensitive information, such as the API key used to retrieve movie data, was a critical aspect of the project. To accomplish this, I used Google Cloud, a powerful cloud computing platform, to protect the API key and improve the application's overall security.&lt;br&gt;
``&lt;br&gt;
&lt;strong&gt;Understanding the Importance of Securing API Keys&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we get into the technical details, let's talk about why it's so important to secure API keys. An API key functions similarly to a password, granting access to specific data or services provided by an external API. Exposing this key in client-side code may result in potential security risks such as unauthorized API access and misuse of the associated services. As a result, it's critical to keep the API key hidden from prying eyes and to put safeguards in place to protect it from malicious attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integrating Google Cloud to Secure the API Key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google Cloud offers a comprehensive set of tools and services for securely handling sensitive data. To begin, I created a Google Cloud account and configured a Cloud Function to serve as a proxy for movie API requests. This proxy design keeps the API key hidden on the server side, preventing it from being exposed to client-side code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hiding the API Key in Google Cloud Function&lt;/strong&gt;&lt;br&gt;
Let's dive into the technical implementation. Below are the essential steps to hide the API key in the Google Cloud Function:&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;// Required dependencies for the Google Cloud Function&lt;br&gt;
const fetch = require('node-fetch');&lt;/p&gt;

&lt;p&gt;// Google Cloud Function to proxy movie API requests&lt;br&gt;
exports.proxyMovieAPI = (req, res) =&amp;gt; {&lt;br&gt;
  // Hide the API key securely using environment variables&lt;br&gt;
  const apiKey = process.env.MOVIE_API_KEY;&lt;/p&gt;

&lt;p&gt;// Retrieve search term from the client request&lt;br&gt;
  const searchTerm = req.query.searchTerm;&lt;/p&gt;

&lt;p&gt;// Ensure a valid search term is provided&lt;br&gt;
  if (!searchTerm) {&lt;br&gt;
    res.status(400).json({ error: 'Search term is missing.' });&lt;br&gt;
    return;&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;// Construct the URL for the movie API request&lt;br&gt;
  const url = &lt;code&gt;https://api.themoviedb.org/3/search/movie?api_key=${apiKey}&amp;amp;query=${encodeURIComponent(searchTerm)}&lt;/code&gt;;&lt;/p&gt;

&lt;p&gt;// Perform API request with the hidden API key&lt;br&gt;
  fetch(url)&lt;br&gt;
    .then(response =&amp;gt; {&lt;br&gt;
      if (!response.ok) {&lt;br&gt;
        throw new Error('Network response was not ok.');&lt;br&gt;
      }&lt;br&gt;
      return response.json();&lt;br&gt;
    })&lt;br&gt;
    .then(data =&amp;gt; {&lt;br&gt;
      // Return the API response to the client&lt;br&gt;
      res.status(200).json(data);&lt;br&gt;
    })&lt;br&gt;
    .catch(error =&amp;gt; {&lt;br&gt;
      console.error('Error:', error);&lt;br&gt;
      res.status(500).json({ error: 'An error occurred while fetching movie data.' });&lt;br&gt;
    });&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
By using environment variables in the Google Cloud Function, we can safely store the API key without exposing it in the codebase. Additionally, this approach allows for easy management of multiple keys and enhances security.&lt;/p&gt;

&lt;p&gt;Ensuring API Key Security with Authentication and Authorization&lt;br&gt;
Beyond hiding the API key, I further enhanced security by implementing authentication and authorization mechanisms in the Cloud Function. This ensured that only authenticated users could access the movie data and that they had the appropriate permissions for specific actions, such as adding movies to their favorites or watchlists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Building the Movie Explorer project was an exciting journey, especially when it came to ensuring the security of the API key and user data. By leveraging the powerful capabilities of Google Cloud, I successfully protected sensitive information and enhanced the overall security of the application. As developers, it is crucial to prioritize security in our projects, and Google Cloud provides a robust and reliable solution for achieving that goal.&lt;/p&gt;

&lt;p&gt;I hope this technical blog post inspires you to explore Google Cloud's capabilities and motivates you to prioritize security in your own web development projects. Remember, implementing robust security measures not only safeguards user data but also builds trust among your audience.&lt;/p&gt;

&lt;p&gt;Thank you for joining me on this technical journey! Feel free to leave your comments and questions below. Happy coding!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bahamustafa.github.io/flatiron-phase-1-test/"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>googlefunctions</category>
      <category>flatironschool</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Most frequent JavaScript symbols and what they perform.</title>
      <dc:creator>Baha Mustafa</dc:creator>
      <pubDate>Mon, 10 Apr 2023 02:40:30 +0000</pubDate>
      <link>https://dev.to/bahamustafa/most-frequent-javascript-symbols-and-what-they-perform-4g07</link>
      <guid>https://dev.to/bahamustafa/most-frequent-javascript-symbols-and-what-they-perform-4g07</guid>
      <description>&lt;p&gt;JavaScript is a sophisticated and adaptable programming language that can be used to develop interactive websites, online applications, and mobile apps. To become proficient in JavaScript, it is necessary to comprehend the numerous symbols and keywords used in the language, as these are the building blocks of JavaScript programming.&lt;/p&gt;

&lt;p&gt;Let's look at some of the most frequent JavaScript symbols and what they do.&lt;/p&gt;

&lt;p&gt;Addition (+)&lt;/p&gt;

&lt;p&gt;The addition symbol in JavaScript is used to add two values together or concatenate two strings. For example, 1 + 2 would return 3, while "Hello" + "world" would return "Helloworld".&lt;/p&gt;

&lt;p&gt;Subtraction (-)&lt;/p&gt;

&lt;p&gt;The subtraction symbol in JavaScript is used to subtract one value from another. For example, 3 - 1 would return 2.&lt;/p&gt;

&lt;p&gt;Multiplication (*)&lt;/p&gt;

&lt;p&gt;The multiplication symbol in JavaScript is used to multiply two values together. For example, 3 * 2 would return 6.&lt;/p&gt;

&lt;p&gt;Division (/)&lt;/p&gt;

&lt;p&gt;The division symbol in JavaScript is used to divide one value by another. For example, 6 / 2 would return 3.&lt;/p&gt;

&lt;p&gt;Modulus (%)&lt;/p&gt;

&lt;p&gt;The modulus symbol in JavaScript returns the remainder of a division operation. For example, 7 % 3 would return 1.&lt;/p&gt;

&lt;p&gt;Equality (==)&lt;/p&gt;

&lt;p&gt;The equality symbol in JavaScript is used to compare two values for equality (without type checking). For example, "3" == 3 would return true.&lt;/p&gt;

&lt;p&gt;Strict Equality (===)&lt;/p&gt;

&lt;p&gt;The strict equality symbol in JavaScript is used to compare two values for equality (with type checking). For example, "3" === 3 would return false.&lt;/p&gt;

&lt;p&gt;Inequality (!=)&lt;/p&gt;

&lt;p&gt;The inequality symbol in JavaScript is used to compare two values for inequality (without type checking). For example, "3" != 2 would return true.&lt;/p&gt;

&lt;p&gt;Strict Inequality (!==)&lt;/p&gt;

&lt;p&gt;The strict inequality symbol in JavaScript is used to compare two values for inequality (with type checking). For example, "3" !== 2 would return true.&lt;/p&gt;

&lt;p&gt;Greater Than (&amp;gt;)&lt;/p&gt;

&lt;p&gt;The greater than symbol in JavaScript is used to check if one value is greater than another. For example, 3 &amp;gt; 2 would return true.&lt;/p&gt;

&lt;p&gt;Greater Than or Equal To (&amp;gt;=)&lt;/p&gt;

&lt;p&gt;The greater than or equal to symbol in JavaScript is used to check if one value is greater than or equal to another. For example, 3 &amp;gt;= 3 would return true.&lt;/p&gt;

&lt;p&gt;Less Than (&amp;lt;)&lt;/p&gt;

&lt;p&gt;The less than symbol in JavaScript is used to check if one value is less than another. For example, 2 &amp;lt; 3 would return true.&lt;/p&gt;

&lt;p&gt;Less Than or Equal To (&amp;lt;=)&lt;/p&gt;

&lt;p&gt;The less than or equal to symbol in JavaScript is used to check if one value is less than or equal to another. For example, 3 &amp;lt;= 3 would return true.&lt;/p&gt;

&lt;p&gt;Logical AND (&amp;amp;&amp;amp;)&lt;/p&gt;

&lt;p&gt;The logical AND symbol in JavaScript returns true if both expressions are true. For example, true &amp;amp;&amp;amp; true would return true.&lt;/p&gt;

&lt;p&gt;Logical OR (||)&lt;/p&gt;

&lt;p&gt;The logical OR symbol in JavaScript returns true if at least one expression is true. For example, true || false would return true.&lt;/p&gt;

&lt;p&gt;Logical NOT (!)&lt;/p&gt;

&lt;p&gt;The logical NOT symbol in JavaScript inverts the truth value of an expression. For example, !true would return false.&lt;/p&gt;

&lt;p&gt;Dot notation (.)&lt;/p&gt;

&lt;p&gt;The dot notation symbol in JavaScript is used to access a property or method of an object. For example, object.property would return the value of the property.&lt;/p&gt;

&lt;p&gt;"typeof" (Type Operator) - Used to return the data type of a value.&lt;/p&gt;

&lt;p&gt;"instanceof" (Instance Operator) - Used to check if an object is an instance of a particular class or constructor function.&lt;/p&gt;

&lt;p&gt;"new" (New Operator) - Used to create a new instance of an object or constructor function.&lt;/p&gt;

&lt;p&gt;"this" (This Keyword) - Refers to the current object or context.&lt;/p&gt;

&lt;p&gt;"try...catch" (Try Catch Statement) - Used to handle errors and exceptions in code.&lt;/p&gt;

&lt;p&gt;"switch" (Switch Statement) - Used to perform different actions based on different cases.&lt;/p&gt;

&lt;p&gt;"NaN" (Not a Number) - A value representing an undefined or unrepresentable mathematical value.&lt;/p&gt;

&lt;p&gt;"undefined" (Undefined) - A value representing an undefined or non-existent value.&lt;/p&gt;

&lt;p&gt;"null" (Null) - A value representing a null or empty value.&lt;/p&gt;

&lt;p&gt;"$" (Dollar Sign) - Used in many JavaScript libraries as a shorthand to access and manipulate HTML elements.&lt;/p&gt;

&lt;p&gt;"async" (Async Function) - Used to define an asynchronous function that returns a promise.&lt;/p&gt;

&lt;p&gt;"await" (Await Operator) - Used to pause the execution of an asynchronous function until a promise is resolved or rejected.&lt;/p&gt;

&lt;p&gt;Finally, the dot notation symbol (.) is used to access a property or method of an object. For example, object.property would return the value of the property.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>flatiron</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My Journey Learning to Code: Reflections on My First Month</title>
      <dc:creator>Baha Mustafa</dc:creator>
      <pubDate>Fri, 31 Mar 2023 02:58:14 +0000</pubDate>
      <link>https://dev.to/bahamustafa/my-journey-learning-to-code-reflections-on-my-first-month-3ajk</link>
      <guid>https://dev.to/bahamustafa/my-journey-learning-to-code-reflections-on-my-first-month-3ajk</guid>
      <description>&lt;p&gt;Hello everyone, my name is Baha Mustafa and I am currently working at Amazon while taking the career choice program in software engineering at Flatiron School. I wanted to share my experience with learning to code and reflect on my first month of studying.&lt;/p&gt;

&lt;p&gt;Learning to code can be daunting, especially for beginners like me. But after a month at Flatiron School, I can confidently say that it's a challenge worth taking on. Not only did I gain a solid foundation in HTML, CSS, and JavaScript, but I also discovered a supportive community of fellow learners and developers.&lt;/p&gt;

&lt;p&gt;What surprised me the most was how accessible coding has become. With online resources and meetups, there are countless opportunities to learn and grow. It's amazing to see how willing people are to share their knowledge and help each other out. This kind of support system made me feel like I was part of a community, rather than just a lone learner.&lt;/p&gt;

&lt;p&gt;Of course, learning to code isn't all about theory and syntax. Putting what I learned into practice was crucial to my success during my first month. I challenged myself to build a simple website, which not only helped me see how far I had come but also gave me a tangible result to showcase my skills.&lt;/p&gt;

&lt;p&gt;Looking back, I'm proud of my progress and excited to see where this journey takes me. I encourage anyone interested in learning to code to take the leap and give it a try. With determination, a willingness to learn, and a supportive community, anything is possible&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>html</category>
      <category>flatironschool</category>
    </item>
  </channel>
</rss>
