<?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: Arina Nasri</title>
    <description>The latest articles on DEV Community by Arina Nasri (@uhrinuh).</description>
    <link>https://dev.to/uhrinuh</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%2F1305316%2F70d526d9-1525-4435-9615-a4cb04d3ccb2.jpeg</url>
      <title>DEV Community: Arina Nasri</title>
      <link>https://dev.to/uhrinuh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/uhrinuh"/>
    <language>en</language>
    <item>
      <title>Cypress Testing Framework</title>
      <dc:creator>Arina Nasri</dc:creator>
      <pubDate>Sun, 09 Jun 2024 18:40:35 +0000</pubDate>
      <link>https://dev.to/uhrinuh/cypress-testing-framework-32jh</link>
      <guid>https://dev.to/uhrinuh/cypress-testing-framework-32jh</guid>
      <description>&lt;p&gt;Cypress is a testing framework for Javascript that allows you to easily create tests for your web application. You're able to test the app directly in the browser, debug issues directly in the browser, and eliminates flaky tests by interacting with your application the same way users do so you can discover bugs before users do.&lt;/p&gt;

&lt;p&gt;In this blog, I will discuss how to create tests in your application using Cypress!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Download Cypress and Add npm Script&lt;/strong&gt;&lt;br&gt;
You're going to need to download Cypress using &lt;em&gt;npm install cypress --save-dev&lt;/em&gt; and then you can add the script to your package.json file by adding &lt;em&gt;"cy:open": "cypress open"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Open Cypress&lt;/strong&gt;&lt;br&gt;
Then, you can open Cypress from the project root using &lt;em&gt;npx cypress open&lt;/em&gt; or &lt;em&gt;npm run cy:open&lt;/em&gt; and this will open the cypress launchpad. If its your first time using Cypress, you will see a page like so&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%2Fjtjrah9ysp7g1by1neec.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%2Fjtjrah9ysp7g1by1neec.png" alt="Image description" width="800" height="510"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 3: Decide between E2E testing or Component testing&lt;/strong&gt;&lt;br&gt;
This is where you will decide on whether to use End to End testing or Component testing.&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%2Fz26cms9n0g7cx47zz6rx.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%2Fz26cms9n0g7cx47zz6rx.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;E2E Testing&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Great at verifying your app runs as intended from the front end to the back end&lt;/li&gt;
&lt;li&gt;Good for making sure your entire app is functioning as a cohesive whole&lt;/li&gt;
&lt;li&gt;Testing this way helps ensure your tests and the user's experience are the same&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Component Testing&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tests individual components, not the app as a whole&lt;/li&gt;
&lt;li&gt;Focus on testing only the component's functionality and not worry about testing the component as part of the larger app&lt;/li&gt;
&lt;li&gt;Just because all component tests pass, it does not mean the app is functioning as a whole&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The documentation recommends using E2E if you are unsure of which type you want and you can always choose a different type later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Quick Configuration&lt;/strong&gt;&lt;br&gt;
This will show all of the configuration files being added to your project.&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%2Fk6lfqvt1ri66c5zx20ru.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%2Fk6lfqvt1ri66c5zx20ru.png" alt="Image description" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Choosing a Browser&lt;/strong&gt;&lt;br&gt;
You will be presented with a list of compatible browsers Cypress found on your system and you can choose what works best for you. I will be using Chrome.&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%2F06wutth1a9kvvop49w1k.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%2F06wutth1a9kvvop49w1k.png" alt="Image description" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Add a Test File&lt;/strong&gt;&lt;br&gt;
You are going to click Create new spec&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%2Fqf74gckwihkjih07kp5n.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%2Fqf74gckwihkjih07kp5n.png" alt="Image description" width="800" height="428"&gt;&lt;/a&gt;&lt;br&gt;
and this will prompt you with choosing the path for your new spec. You can just accept the default path name. Then, you will see that the spec was successfully added and you can just exit out from that. Now that spec will be displayed in your E2E specs and you can click on it to see Cypress launch it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Write a test&lt;/strong&gt;&lt;br&gt;
Depending on if your test passes or fails, Cypress will update like so&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%2Fvne5kwd8aybfo9nyo5n6.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%2Fvne5kwd8aybfo9nyo5n6.png" alt="Image description" width="800" height="203"&gt;&lt;/a&gt;&lt;br&gt;
or like so&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%2Fwyanqidfwce2g84i3t89.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%2Fwyanqidfwce2g84i3t89.png" alt="Image description" width="800" height="777"&gt;&lt;/a&gt;&lt;br&gt;
The tests reload in real time so once you create a test, you should see it pass or fail in real time. Tests in Cypress use describe and it from Mocha and expect from Chai which are popular frameworks that many people have used before, making it very accessible and easy to use. They also have an ESLint plugin for projects that use Cypress &lt;a href="https://github.com/cypress-io/eslint-plugin-cypress" rel="noopener noreferrer"&gt;https://github.com/cypress-io/eslint-plugin-cypress&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: How to Write a Good Test&lt;/strong&gt;&lt;br&gt;
To write a good test, you should cover 3 things: set up the application state, take an action, and make an assertion about the resulting application state. First put the app into a specific state, then take some action in the app that causes it to change, and finally check the resulting app state. A rule of thumb with writing tests is to write clear test descriptions, avoid unnecessary repetition in tests, and to structure tests in a readable and maintainable way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Debugging&lt;/strong&gt;&lt;br&gt;
With Cypress, the test code runs in the same loop as your app so you have access to the code running on the page, as well as the things the browser makes available to you. Cypress makes debugging easy by using the .debug() method like so&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%2F4isx3jiiqarabnbmau1s.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%2F4isx3jiiqarabnbmau1s.png" alt="Image description" width="800" height="269"&gt;&lt;/a&gt;&lt;br&gt;
Then, you're able to use the Developer Tools to get a view of what is going on&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%2Fb6k9dhkj5t31caiwsma8.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%2Fb6k9dhkj5t31caiwsma8.png" alt="Image description" width="800" height="301"&gt;&lt;/a&gt;&lt;br&gt;
You can also use .pause() to run the test command by command.&lt;/p&gt;

&lt;p&gt;And that's it! The best way to learn is by doing and the Cypress documentation is a really good and easy tool to use to put testing into action! Happy testing!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.cypress.io/" rel="noopener noreferrer"&gt;https://www.cypress.io/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.cypress.io/guides/overview/why-cypress" rel="noopener noreferrer"&gt;https://docs.cypress.io/guides/overview/why-cypress&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.cypress.io/guides/getting-started/opening-the-app" rel="noopener noreferrer"&gt;https://docs.cypress.io/guides/getting-started/opening-the-app&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.cypress.io/guides/core-concepts/testing-types#What-is-E2E-Testing" rel="noopener noreferrer"&gt;https://docs.cypress.io/guides/core-concepts/testing-types#What-is-E2E-Testing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.cypress.io/guides/end-to-end-testing/writing-your-first-end-to-end-test" rel="noopener noreferrer"&gt;https://docs.cypress.io/guides/end-to-end-testing/writing-your-first-end-to-end-test&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.cypress.io/guides/guides/debugging" rel="noopener noreferrer"&gt;https://docs.cypress.io/guides/guides/debugging&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to deploy an AWS EC2 Instance</title>
      <dc:creator>Arina Nasri</dc:creator>
      <pubDate>Sun, 26 May 2024 19:56:11 +0000</pubDate>
      <link>https://dev.to/uhrinuh/how-to-deploy-an-aws-ec2-instance-l9k</link>
      <guid>https://dev.to/uhrinuh/how-to-deploy-an-aws-ec2-instance-l9k</guid>
      <description>&lt;p&gt;While building your applications as a software developer, an important step in the process is to deploy your app for the world to see. If you have never done it before, it can seem very scary and daunting so this blog is meant to serve as a How To tutorial as well as educate on what specific terminology means when you go to deploy. There are many different deployment services, but for this blog, I will be focusing on deploying an EC2 instance on AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Amazon EC2?&lt;/strong&gt;&lt;br&gt;
Amazon EC2 is a web service provided by AWS where users can rent virtual computers to run their own applications. When launching an EC2 instance (which is basically just a server), the instance is within an Availability Zone in the region. The instance is secured with a security group which is just a virtual firewall that controls traffic on your deployment. Then, a private key is stored on your local computer and a public key is stored on your instance. This key pair is used to verify the identity of the user.&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%2Fzrdz6isjwkf3lo3b6ltm.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%2Fzrdz6isjwkf3lo3b6ltm.png" alt="Image description" width="800" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Do I Do All Of This?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;STEP 1&lt;/strong&gt;&lt;br&gt;
Navigate to this link &lt;a href="https://aws.amazon.com/pm/ec2-amd/?gclid=Cj0KCQjwmMayBhDuARIsAM9HM8fECNLSOTLaAhm8LO-C2FZOAD-P1EM_HVdhW0oIU57xQXfKCTZO91oaAvNOEALw_wcB&amp;amp;trk=dfddd7d7-36f1-4ece-bbba-bddb99e3d295&amp;amp;sc_channel=ps&amp;amp;ef_id=Cj0KCQjwmMayBhDuARIsAM9HM8fECNLSOTLaAhm8LO-C2FZOAD-P1EM_HVdhW0oIU57xQXfKCTZO91oaAvNOEALw_wcB:G:s&amp;amp;s_kwcid=AL!4422!3!651751059243!e!!g!!amazon%20web%20server!19852662164!145019249497" rel="noopener noreferrer"&gt;https://aws.amazon.com/pm/ec2-amd/?gclid=Cj0KCQjwmMayBhDuARIsAM9HM8fECNLSOTLaAhm8LO-C2FZOAD-P1EM_HVdhW0oIU57xQXfKCTZO91oaAvNOEALw_wcB&amp;amp;trk=dfddd7d7-36f1-4ece-bbba-bddb99e3d295&amp;amp;sc_channel=ps&amp;amp;ef_id=Cj0KCQjwmMayBhDuARIsAM9HM8fECNLSOTLaAhm8LO-C2FZOAD-P1EM_HVdhW0oIU57xQXfKCTZO91oaAvNOEALw_wcB:G:s&amp;amp;s_kwcid=AL!4422!3!651751059243!e!!g!!amazon%20web%20server!19852662164!145019249497&lt;/a&gt; and click Sign In to the Console on the top right &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2&lt;/strong&gt;&lt;br&gt;
Once logged in, you will be greeted with the home page. On the top right corner you will see a drop down bar with specific locations, like so&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%2Fc7ul511xzu73hz4118ou.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%2Fc7ul511xzu73hz4118ou.png" alt="Image description" width="688" height="914"&gt;&lt;/a&gt;&lt;br&gt;
Here, you will be clicking on a region where the instance will be deployed. This is when the availability zones come into play because AWS has these zones (essentially data centers) located around the world. You can pick a region based on where your users will be located or a region that has the compliance requirements you seek.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3&lt;/strong&gt;&lt;br&gt;
Now, you can use the search bar to search EC2 and once you click that, you will be greeted with this page&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%2F1fsnbqdft3ux2bodfo85.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%2F1fsnbqdft3ux2bodfo85.png" alt="Image description" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
The resources tab is where you can see all the different features EC2 provides. Instances is the virtual server you will create, dedicated hosts is a physical server for your own use, load balancers is used to distribute your application/network traffic across multiple targets, security groups are the virtual firewalls for your instance, volumes provide storage for data that ie needed even if an instance is terminated, auto scaling groups adjust the number of EC2 instances in response to changes in demand, elastic IPs are static IPv4 addresses that can be associated with EC2 instances, key pairs are the public and private keys used to secure your instance, placement groups control the placement of instances in the AWS Cloud to meet requirements, and snapshots are backups of EBS volumes. For our purpose, we will be clicking the orange Launch Instance button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4&lt;/strong&gt;&lt;br&gt;
Now we are launching an instance. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First you must input a name for your instance. &lt;/li&gt;
&lt;li&gt;Then, you pick which AMI you'd like to use. AMI is a template that contains the software configuration required to launch an instance. There are a lot of them, but I personally use Ubuntu. &lt;/li&gt;
&lt;li&gt;Then you pick the specific tier you'd like to use. This is where you would find an AMI that fits the needs of your specific application and for my purposes, the given free tier is fine for me. &lt;/li&gt;
&lt;li&gt;Then you must pick an instance type that meets your computing, memory, networking, or storage needs. If you're creating a large application that will require a lot of data to be held in storage and/or lots of traffic, you may need to pick an instance type with larger memory and a higher vCPU. Again, for my purpose, a t2.micro is fine.&lt;/li&gt;
&lt;li&gt;Then, you pick a key pair. If you hadn't made one prior to launching the instance, thats fine and you can just click create new key pair.&lt;/li&gt;
&lt;li&gt;Then we deal with network settings. You should create a new security group. There are 3 options: Allow SSH traffic from, Allow HTTPS traffic from the internet, and allow HTTP traffic from the internet. Allow SSH traffic from helps connect to your instance. SSH is a protocol used for secure remote access to a server. It allows for two computers to communicate and share data securely over an unsecured network. This is where you transfer your files through SSH to a remote server. If you click Allow SSH traffic from you can choose between allowing it from anywhere, custom, or my IP. It is best to only allow SSH traffic from IP addresses that need access to the deployment.&lt;/li&gt;
&lt;li&gt;Finally, you can scroll to the bottom and click Launch Instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 5&lt;/strong&gt;&lt;br&gt;
Now you're able to navigate to your instances through the resources view. &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%2Fuh4czqyl5wunfmxoe5wn.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%2Fuh4czqyl5wunfmxoe5wn.png" alt="Image description" width="800" height="497"&gt;&lt;/a&gt;&lt;br&gt;
You'll need to click Instances and then click on your instance's Instance ID link. Once you do that, this will give you all the information about your instance. While in here, take note of the Public IPv4 address and the Public IPv4 DNS address. These will be important later.&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%2Fbi82mva1ajsuxf37a4cx.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%2Fbi82mva1ajsuxf37a4cx.png" alt="Image description" width="800" height="363"&gt;&lt;/a&gt;&lt;br&gt;
For now, you're going to want to click on security, then the security groups link. This is where you can edit the inbound rules of your instance. These are the settings that control the incoming traffic to your instance. They specify the protocol, port range, and the source of the traffic. One rule should already be there from when you initially created the instance, and you can add a rule to allow traffic from the port you used in your application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6&lt;/strong&gt; (if you use google authentication, if not just skip)&lt;br&gt;
You are going to need to navigate to Google Cloud and go to APIs and Services and create a new credential for OAuth 2.0 Client IDs. Here, you will link your Public IPv4 DNS link with the specific port you used and the endpoint like so &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%2Fdhijsomehbpxfls06kij.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%2Fdhijsomehbpxfls06kij.png" alt="Image description" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7&lt;/strong&gt;&lt;br&gt;
Now we can finally work in the terminal. For reference, I use a Macbook Air and specifically work with iTerm and VIM. Also, since my instance is Ubuntu that will be reflected in the terminal. &lt;br&gt;
Remember that .pem file we downloaded that holds our key? We are going to move that to a more secure space in our local computer. For me, I put it in my .ssh file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Move your key: mv path-to-key ~/.ssh (for example, if your key is called Healthier and its currently in your downloads folder, you're going to type mv Downloads/Healthier.pem ~/.ssh)&lt;/li&gt;
&lt;li&gt;Cd into .ssh and run ls -a to check and see if the key is there&lt;/li&gt;
&lt;li&gt;Cd out of .ssh and now we are going to need to set the permission of the file to be read-only for the owner. To do this, you are going to do chmod 400 ~/.ssh/key. This means that the owner has read access to the private key file, and no one else can access it&lt;/li&gt;
&lt;li&gt;Finally we can ssh into our instance
&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%2Fb6owaijzrc4f2l2cxkha.png" alt="Image description" width="800" height="634"&gt;
&lt;/li&gt;
&lt;li&gt;The command to run is ssh -i ~/.ssh/keyname.pem ubuntu@ec2address since we know our key is in the .ssh file and ubuntu is the root user for our instance because that is what we originally chose. Your ec2 address can be found in the Public IPv4 address in your instance&lt;/li&gt;
&lt;li&gt;Once you are ssh'd in, you can run any install/file setup steps necessary for your project and then navigate to your instance's link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deploying your application is a great way to show your colleagues/friends the application you have been working on. There are many different deployment options but Amazon's EC2 service is the easiest for me to navigate. Happy deploying!&lt;/p&gt;

&lt;p&gt;Sources&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ec2/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>In Depth on CSS</title>
      <dc:creator>Arina Nasri</dc:creator>
      <pubDate>Sun, 21 Apr 2024 18:18:29 +0000</pubDate>
      <link>https://dev.to/uhrinuh/in-depth-on-css-j0f</link>
      <guid>https://dev.to/uhrinuh/in-depth-on-css-j0f</guid>
      <description>&lt;p&gt;When I decided to learn how to code I had two goals in mind: learn enough about Javascript where I can work a high-wage job to support myself and my family and to make a super cute Tumblr page that will make 15 year old me proud. I am well on my way to accomplishing the first goal, but after going forward with Operation Spark, I have learned that in order to make a super cute Tumblr page, I need to become an expert in CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is CSS?&lt;/strong&gt;&lt;br&gt;
CSS stands for Cascading Style Sheets and ir describes how HTML elements are to be displayed on screen, paper, or in other media. It is essentially what gives a web-browser pizazz. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS Syntax&lt;/strong&gt;&lt;br&gt;
In order to implement CSS, you would follow this syntax.&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%2F0hfdobg78yh6n2df7vh7.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%2F0hfdobg78yh6n2df7vh7.png" alt="Image description" width="569" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P is a selector in CSS, it points to the HTML element you want to style. Color/Font-size is a property and blue/12px is its value. Elements with an id are referred to as id name {} and elements with a class are referred to as .class name {}. To edit every HTML element you can just do * {}.&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%2F9rzjilhce1456gmnyhzm.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%2F9rzjilhce1456gmnyhzm.png" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Add CSS&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Externally&lt;/em&gt;&lt;br&gt;
This is an external style sheet where you make an individual file to deal with all CSS styling and should be saved with a .css extension. Then you must import the file into your HTML file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Internally&lt;/em&gt;&lt;br&gt;
This is when you edit the HTML page with completely by adding in a style tag to your HTML file and inputting whatever style you want.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Inline&lt;/em&gt;&lt;br&gt;
This is used to apply a style for a single element and to do this, you must input a style attribute to a specific element you would like to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Can You Do with CSS?&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Color&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change background color using background-color: (color)&lt;/li&gt;
&lt;li&gt;Change text color using style="color: (color)" in the text elementC&lt;/li&gt;
&lt;li&gt;Change border color using border: (#px solid color)&lt;/li&gt;
&lt;li&gt;Colors can be specified by using RGB values, HEX values, HSL values, RGBA values, and HSLA values&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Background&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change background color using background-color and can also change opacity by adding opacity after&lt;/li&gt;
&lt;li&gt;Change background image using background-image&lt;/li&gt;
&lt;li&gt;Can make the background image repeat by using background-repeat: repeat-x or make it not repeat using background-repeat: no-repeat&lt;/li&gt;
&lt;li&gt;Background-attachment which specified whether the background image should scroll or not scroll with the rest of the page (scroll, fixed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Border&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Border-style property specifies what kind of border to display&lt;/li&gt;
&lt;li&gt;Border-style: dotted&lt;/li&gt;
&lt;li&gt;Border-style: dashed&lt;/li&gt;
&lt;li&gt;Border-style: solid&lt;/li&gt;
&lt;li&gt;Border-style: double&lt;/li&gt;
&lt;li&gt;Border-style: groove&lt;/li&gt;
&lt;li&gt;Border-style: ridge&lt;/li&gt;
&lt;li&gt;Border-style: inset&lt;/li&gt;
&lt;li&gt;Border-style: outset&lt;/li&gt;
&lt;li&gt;Border-style: none&lt;/li&gt;
&lt;li&gt;Border-style: hidden&lt;/li&gt;
&lt;/ul&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%2F59b2txpxfhcr9afisrl7.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%2F59b2txpxfhcr9afisrl7.png" alt="Image description" width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can define the width of the border using border-width: #px&lt;/li&gt;
&lt;li&gt;Can define rounded borders by using border-radius: #px&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Padding&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can define the padding of each side of an element using padding-top, padding-right, padding-bottom, padding-left and making the value be #px&lt;/li&gt;
&lt;li&gt;Can also do short hand by doing padding: 25px 50px 75px 100px&lt;/li&gt;
&lt;li&gt;The first value will be the top, second the right, third the bottom, and fourth the left&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Height, Width, Max-width&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Height and width have the following values: &lt;/li&gt;
&lt;li&gt;Auto which is default&lt;/li&gt;
&lt;li&gt;Length which defined the height/width in px, cm, etc&lt;/li&gt;
&lt;li&gt;% which defined the height/width in percent of the containing block&lt;/li&gt;
&lt;li&gt;Initial which sets the height/width to its default value&lt;/li&gt;
&lt;li&gt;Inherit which makes the height/width inherit from its parent value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Text&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text alignment is implemented by using text-align and one of the following values: center, left, right, justify&lt;/li&gt;
&lt;li&gt;You can also decorate a text by using:&lt;/li&gt;
&lt;li&gt;text-decoration-line and the values overline, line-through, underline, overline underline&lt;/li&gt;
&lt;li&gt;text-decoration-color and the value being some color&lt;/li&gt;
&lt;li&gt;text-decoration-style and the values being the same as border-style above&lt;/li&gt;
&lt;li&gt;text-decoration-thickness and the values being auto, #px, or a %&lt;/li&gt;
&lt;li&gt;text-decoration being a shorthand property to add line, color, style, and thickness all in one line&lt;/li&gt;
&lt;li&gt;Text-transform is used to specify uppercase, capitalization, and lowercase in a text&lt;/li&gt;
&lt;li&gt;Text spacing can be used by:&lt;/li&gt;
&lt;li&gt;Text-indent: #px&lt;/li&gt;
&lt;li&gt;Letter-spacing: #px&lt;/li&gt;
&lt;li&gt;Line-height: some decimal&lt;/li&gt;
&lt;li&gt;Word spacing: #px&lt;/li&gt;
&lt;li&gt;You can also select certain fonts for the text by adding font-family&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is so much more than this to explore within CSS, but this is the in-depth for the basics! If you're interested in exploring more, W3Schools has amazing modules on the subject.&lt;/p&gt;

&lt;p&gt;Sources&lt;br&gt;
&lt;a href="https://www.w3schools.com/css/css_intro.asp" rel="noopener noreferrer"&gt;https://www.w3schools.com/css/css_intro.asp&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/CSS&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Mac Keyboard Shortcuts Every Developer Should Know</title>
      <dc:creator>Arina Nasri</dc:creator>
      <pubDate>Sat, 13 Apr 2024 20:51:18 +0000</pubDate>
      <link>https://dev.to/uhrinuh/mac-keyboard-shortcuts-every-developer-should-know-33f0</link>
      <guid>https://dev.to/uhrinuh/mac-keyboard-shortcuts-every-developer-should-know-33f0</guid>
      <description>&lt;p&gt;While doing pair work in class, time and time again my partner will be like "Arina, you know there's a keyboard shortcut for that, right?" and no, I did not know there was a keyboard shortcut for that, but I wish I did because why did I just scroll through 300 lines of code in order to highlight it when I could've just used command-a?&lt;/p&gt;

&lt;p&gt;Keyboard shortcuts are essential in time efficiency and having them memorized can really make coding a whole lot easier. If you're anything like me and are uneducated about what keyboard shortcuts are most helpful while coding, this article is for you!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What keys should you be familiar with?&lt;/strong&gt;&lt;br&gt;
On mac, the keys that are used in every shortcut includes a combo of one or multiple of these + a letter of some sort.&lt;br&gt;
&lt;em&gt;Command (or Cmd) ⌘&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Shift ⇧&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Option (or Alt) ⌥&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Control (or Ctrl) ⌃&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Caps Lock ⇪&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Fn&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Shortcuts Everyone Should Know&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Command-X:&lt;/em&gt; Cuts out the selected item&lt;br&gt;
&lt;em&gt;Command-C:&lt;/em&gt; Copies the item&lt;br&gt;
&lt;em&gt;Command-V:&lt;/em&gt; Pastes the item&lt;br&gt;
&lt;em&gt;Command-Z:&lt;/em&gt; Undo (which is really important if you're typo-prone like me)&lt;br&gt;
&lt;em&gt;Shift-Command-Z:&lt;/em&gt; Redo, reverses the undo command&lt;br&gt;
&lt;em&gt;Command-A:&lt;/em&gt; Select all items&lt;br&gt;
&lt;em&gt;Command-F:&lt;/em&gt; Find items in document&lt;br&gt;
&lt;em&gt;Command-G:&lt;/em&gt; Used after command-f to find the next item that matches it if there are multiple&lt;br&gt;
&lt;em&gt;Command-H:&lt;/em&gt; Hide the window you are currently on&lt;br&gt;
If you want to hide all other windows besides the one you're on, use &lt;em&gt;Option-Command-H&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Command-M:&lt;/em&gt; Minimize window to the dock&lt;br&gt;
If you want to minimize all windows, use &lt;em&gt;Option-Command-M&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Command-S:&lt;/em&gt; Saves current document (Super important if you're not using autosave on your coding application!!)&lt;br&gt;
&lt;em&gt;Command-T:&lt;/em&gt; Open a new tab&lt;br&gt;
&lt;em&gt;Command-W:&lt;/em&gt; Close the tab you're on&lt;br&gt;
If you want to close all tabs, use &lt;em&gt;Option-Window-T&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Option-Command-Esc:&lt;/em&gt; Force quit an app&lt;br&gt;
&lt;em&gt;Control-Command-F:&lt;/em&gt; Makes the app full screen&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigating Apps&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Command-Tab:&lt;/em&gt; Switches to the next most recently used app among your open apps&lt;br&gt;
&lt;em&gt;Control-Tab:&lt;/em&gt; Move forward through tabs&lt;br&gt;
&lt;em&gt;Control-Shift-Tab:&lt;/em&gt; Move backward through tabs&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Text Navigation Shortcuts&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Command-Left Arrow:&lt;/em&gt; Jump to beginning of a line&lt;br&gt;
&lt;em&gt;Command-Right Arrow:&lt;/em&gt; Jump to end of a line&lt;br&gt;
&lt;em&gt;Option-Left Arrow:&lt;/em&gt; Jump to beginning of current word&lt;br&gt;
&lt;em&gt;Option-Right Arrow:&lt;/em&gt; Jump to end of current word&lt;br&gt;
&lt;em&gt;Command-Up Arrow:&lt;/em&gt; Jump to beginning of all text&lt;br&gt;
&lt;em&gt;Command-Down Arrow:&lt;/em&gt; Jump to end of all text&lt;br&gt;
Adding shift to any of these also allows you to highlight said text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VSCode Specific Shortcuts That Saved My Life&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Option-Z:&lt;/em&gt; If you use split screen on VSCode with another app, this will wrap the text so that you can read every line of code without needing to scroll&lt;br&gt;
&lt;em&gt;Control-Shift-P:&lt;/em&gt; Opens up command palette&lt;br&gt;
&lt;em&gt;Control-Alt-Up/Down Arrow:&lt;/em&gt; Multiple cursors&lt;br&gt;
&lt;em&gt;Control-Shift-K:&lt;/em&gt; Delete a line&lt;br&gt;
&lt;em&gt;Shift-Alt-Up/Down Arrow:&lt;/em&gt; Creates a copy of the current line up or down the current line&lt;br&gt;
&lt;em&gt;Control-B:&lt;/em&gt; Opens up sidebar&lt;br&gt;
&lt;em&gt;Control-P:&lt;/em&gt; Search file&lt;br&gt;
&lt;em&gt;Control-`:&lt;/em&gt; Toggles terminal&lt;/p&gt;

&lt;p&gt;Hopefully these shortcuts help you in your coding journey!&lt;/p&gt;

&lt;p&gt;Sources&lt;br&gt;
&lt;a href="https://support.apple.com/en-us/HT201236" rel="noopener noreferrer"&gt;https://support.apple.com/en-us/HT201236&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.elementalidad.com/2017-11-06-keyboard-shortcuts" rel="noopener noreferrer"&gt;https://www.elementalidad.com/2017-11-06-keyboard-shortcuts&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.xda-developers.com/keyboard-shortcuts-mac/" rel="noopener noreferrer"&gt;https://www.xda-developers.com/keyboard-shortcuts-mac/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.wearedevelopers.com/magazine/vs-code-shortcuts" rel="noopener noreferrer"&gt;https://www.wearedevelopers.com/magazine/vs-code-shortcuts&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is UI/UX and what makes a good UI/UX?</title>
      <dc:creator>Arina Nasri</dc:creator>
      <pubDate>Fri, 05 Apr 2024 00:52:54 +0000</pubDate>
      <link>https://dev.to/uhrinuh/what-is-uiux-and-what-makes-a-good-uiux-25ol</link>
      <guid>https://dev.to/uhrinuh/what-is-uiux-and-what-makes-a-good-uiux-25ol</guid>
      <description>&lt;p&gt;While texting a good friend the other day, I was telling her about what it was like being in a coding bootcamp and she started asking me many different questions. One of those questions was about UI and UX and the difference between the two, and honestly, I came to a blank. After this conversation, I realized I don't even know what UI/UX &lt;em&gt;is&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So what is UI and UX? Is it the same thing? My research points to no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UI is a shortened term for user interface. UI is the point of human-computer interaction and communication in a device a.k.a, it's display screens, keyboards, mouse, and the appearance of a desktop. It is also the way a user interacts with an application or a website. (Churchville).&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%2Fxu3ovid1a63sqem76gn8.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%2Fxu3ovid1a63sqem76gn8.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's take a look at the UI of the tumblr page I created when I was 15. As you can see, the page has a title, a home button, a message button, an archive button, and a theme button. Then on the bottom, it shows all the posts I have on my page. When a user looks at the page, they are able to click on a button and it should take them to what that button represents.&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%2F0z85ggeupjj0idkee0cn.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%2F0z85ggeupjj0idkee0cn.png" alt="Image description" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for example, if the user clicks message, they can now send me a message (yay) and if they click home, it'll take them back to the home page with all the posts. My tumblr contains a very basic example of UI, however it does show an example of UI thats easily accessible and visually appealing (I hope). Any user on the site would know exactly what pressing home, message, archive, and theme would entail with little difficulty.&lt;/p&gt;

&lt;p&gt;The important aspects of UI would include its navigation and layout, input and output controls, feedback mechanisms, visual design, accessibility considerations, error handling and recovery, consistency standards, and personalization and customization. Navigation and layout includes helping users move throughout the app or website without any complexity. Input and output controls deal with getting data from the user through an input and outputting it through the output device. Feedback mechanisms is similar to receiving confirmation messages when buying something online. Visual design and accessibility considerations is just as it states. Error handling and recovery is like "incorrect password" if someone enters one and consistency standards is keeping the same sort of layout throughout the application or website, such as having send, submit, and next buttons on every page. Finally, personalization and customization is the ability to personalize the UI to fit every user's needs and wants. (Collins).&lt;/p&gt;

&lt;p&gt;Furthermore, what makes a good UI? According to Tom Collins, these are the main components.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep your UI simple to use&lt;/li&gt;
&lt;li&gt;Every element should be obvious and discoverable&lt;/li&gt;
&lt;li&gt;Elements should perform as per the expectations&lt;/li&gt;
&lt;li&gt;Use proper alignment for elements&lt;/li&gt;
&lt;li&gt;Save your users' time by minimizing the number of tasks in every action but focusing on the main function&lt;/li&gt;
&lt;li&gt;Provide a help menu&lt;/li&gt;
&lt;li&gt;Always provide the next step&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;UI is an extremely important aspect of being a software developer. If you work for any company, you're going to have to incorporate UI into your application or website if you need to make one, and it is best practice to implement all of the aspects listed above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UX&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UX is a shortened term for user experience. Essentially, it refers to the feelings users experience when using a product, application, system, or service. It can encompass anything between how well the user can navigate the product, how easy it is to use, and more. (ProductPlan).&lt;/p&gt;

&lt;p&gt;The differences between UI and UX is that UI is what the users sees and how they interact with the product, whereas UX is more broad and is more dependent on what the user does related to the product. (ProductPlan). &lt;/p&gt;

&lt;p&gt;However, UI and UX do work hand in hand. You could have a UI that is very advanced and implements so many new cool features, but if the features aren't what the user wants or are too complicated to use, the user's experience will be negative and make them less likely to use or interact with the app. The same goes the other way; if the user finds an application or website that is visually appealing or is exactly the kind of app or site they want, but it is too hard to navigate or the buttons don't work, they won't use the application or website.&lt;/p&gt;

&lt;p&gt;In conclusion, the best sort of application or website is one that uses UI properly, while also taking UX into account. it is important to know the differences between the two so that when making an application or website, you make it be the best it can be so more users become likely to use it. &lt;/p&gt;

&lt;p&gt;Sources:&lt;br&gt;
Fred Churchville &lt;a href="https://www.techtarget.com/searchapparchitecture/definition/user-interface-UI" rel="noopener noreferrer"&gt;https://www.techtarget.com/searchapparchitecture/definition/user-interface-UI&lt;/a&gt;&lt;br&gt;
Tom Collins &lt;a href="https://www.browserstack.com/guide/what-is-user-interface" rel="noopener noreferrer"&gt;https://www.browserstack.com/guide/what-is-user-interface&lt;/a&gt;&lt;br&gt;
ProductPlan &lt;a href="https://www.productplan.com/glossary/user-experience/" rel="noopener noreferrer"&gt;https://www.productplan.com/glossary/user-experience/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Javascript Variables</title>
      <dc:creator>Arina Nasri</dc:creator>
      <pubDate>Tue, 27 Feb 2024 01:18:28 +0000</pubDate>
      <link>https://dev.to/uhrinuh/javascript-variables-16i2</link>
      <guid>https://dev.to/uhrinuh/javascript-variables-16i2</guid>
      <description>&lt;p&gt;Variables are named containers for data in Javascript. With variables, we are able to store values in memory and then enact specific actions on those values whenever necessary. Variables are able to hold simple and complex data types. &lt;/p&gt;

&lt;p&gt;We create variables using declarative keywords. The declarative keywords include key, let, and const. You create the variable by first typing out one of the declarative keywords and then whatever you'd like to call your variable. To assign it, you then type an equal sign(=) and set it to whatever data type you'd like.&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%2Fwbxadvneaq7jl0brnckm.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%2Fwbxadvneaq7jl0brnckm.png" alt="Image description" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each variable name is case sensitive meaning lastname and lastName would be different so when you refer to the variable later, make sure to refer to it properly. All variable names should be written in camelCase so lastName is proper notation whereas lastname is not.&lt;/p&gt;

&lt;p&gt;Var, let, and const are the three declarative keywords. When Javascript was first created, the only way to create variables was by using var, however, var was error-prone, specifically when it came to hoisting and being scoped to specific blocks of code. Due to this, let and const were made.&lt;/p&gt;

&lt;p&gt;Var and let are reassignable, but const is not.&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%2Fssslh9thnw81px422fep.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%2Fssslh9thnw81px422fep.png" alt="Image description" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let and const can not be hoisted. Hoisting refers to the process where the interpreter appears to move the declaration of functions, variables, classes, or imports to the top of their scope, prior to execution of the code (MDN Web Docs). With var, you can reference the value before it is declared, but you can't do that with let and const. Only the variable name is hoisted to the top and not their assignment. Variables only get hoisted inside their own scope.&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%2Fnpeszac2puwve31cos13.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%2Fnpeszac2puwve31cos13.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Var is not scoped to if blocks or loop blocks, but let and const are scoped to both.&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%2F9rkvpaa3w5uq5080xb5y.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%2F9rkvpaa3w5uq5080xb5y.png" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To summarize, variables are named containers for data in Javascript and an essential to master when coding. Variables can hold simple or complex data types and must be written in camelCase. The three declarative keywords for variables are var, let, and const. Var is reassignable, but is not scoped to if blocks or loop blocks. Let is reassignable and scoped to if blocks and loop blocks, but it is not hoisted. Const is not reassignable or hoisted, but it is scoped to if blocks and loop blocks.&lt;/p&gt;

&lt;p&gt;References:&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Hoisting" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Glossary/Hoisting&lt;/a&gt;&lt;/p&gt;

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