<?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: Bashua Mutiat</title>
    <description>The latest articles on DEV Community by Bashua Mutiat (@mutiatbash).</description>
    <link>https://dev.to/mutiatbash</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%2F1058175%2Fd0866396-62e8-4415-b2b2-56483f230b7e.jpeg</url>
      <title>DEV Community: Bashua Mutiat</title>
      <link>https://dev.to/mutiatbash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mutiatbash"/>
    <language>en</language>
    <item>
      <title>Getting started as a Mobile App Developer</title>
      <dc:creator>Bashua Mutiat</dc:creator>
      <pubDate>Sat, 06 Jul 2024 16:36:50 +0000</pubDate>
      <link>https://dev.to/mutiatbash/getting-started-as-a-mobile-app-developer-ji8</link>
      <guid>https://dev.to/mutiatbash/getting-started-as-a-mobile-app-developer-ji8</guid>
      <description>&lt;p&gt;I've always been fascinated by how mobile apps work and are built. This curiosity grew as I developed my skills in frontend development. Eventually, after learning how to use React I decided to take a new step and learn about mobile development using React Native. Through this journey, I've explored various mobile development platforms and common software architecture patterns. In this article, I'll walk you through these platforms and patterns, along with their pros and cons. Let’s get started 🚀🚀&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%2Foh0aao02hafxpr8qts0i.gif" 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%2Foh0aao02hafxpr8qts0i.gif" alt="Happy girl" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile Development Platforms
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Native Development&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;iOS (Swift/Objective-C)&lt;/strong&gt;&lt;br&gt;
Swift or Objective-C is used for iOS development. This ensures high performance and responsiveness, with access to the latest iOS features and updates through Xcode. However, it's limited to iOS devices and requires knowledge of Swift or Objective-C, leading to higher development costs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nD6teQFB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.iconscout.com/icon/free/png-256/free-ios-apple-572947.png%3Ff%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nD6teQFB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.iconscout.com/icon/free/png-256/free-ios-apple-572947.png%3Ff%3Dwebp" alt="iOS Development" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Android (Kotlin/Java)&lt;/strong&gt;&lt;br&gt;
Android development typically uses Kotlin or Java, providing wide device compatibility and extensive community support. While it allows access to the latest Android features, it faces fragmentation issues due to diverse devices and requires Kotlin/Java knowledge, making testing more complex.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pK4-QYaC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/d/d7/Android_robot.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pK4-QYaC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/d/d7/Android_robot.svg" alt="Android Development" width="294" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Cross-Platform Development&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React Native&lt;/strong&gt;&lt;br&gt;
React Native uses JavaScript and React to build apps for both iOS and Android. It enables code reuse between platforms, speeding up development with features like hot reloading. However, it may not match the performance of native apps and has limited access to platform-specific features, often relying on third-party libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6nYOBdKm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6nYOBdKm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg" alt="React Native" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flutter&lt;/strong&gt;&lt;br&gt;
Flutter was developed by Google and uses Dart for a single codebase that works on both iOS and Android. It offers high-performance rendering and a rich set of pre-designed widgets. However, learning Dart can be challenging, and apps tend to have a larger size with fewer third-party libraries compared to React Native.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Id8lXBjz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/1/17/Google-flutter-logo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Id8lXBjz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/1/17/Google-flutter-logo.png" alt="Flutter" width="400" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Xamarin&lt;/strong&gt;&lt;br&gt;
Xamarin, supported by Microsoft, uses C# for building cross-platform apps, allowing shared code between iOS, Android, and Windows. It integrates well with Visual Studio but introduces performance overhead and larger app size, requiring knowledge of C# and the .NET ecosystem&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nEgQ3uu_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://codingjourneyman.com/wp-content/uploads/2016/02/xamagon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nEgQ3uu_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://codingjourneyman.com/wp-content/uploads/2016/02/xamagon.png" alt="Xamarin" width="609" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software Architecture Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MVC (Model-View-Controller)&lt;/strong&gt;&lt;br&gt;
MVC divides an application into three components: Model, View, and Controller.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YYd3rTjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/a/a0/MVC-Process.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YYd3rTjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/a/a0/MVC-Process.svg" alt="MVC" width="500" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Easier to manage and test code.&lt;/li&gt;
&lt;li&gt;Organized and reusable code.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Can become complex for large apps.&lt;/li&gt;
&lt;li&gt;Tightly coupled components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MVP (Model-View-Presenter)&lt;/strong&gt;&lt;br&gt;
MVP improves upon MVC by decoupling the UI and business logic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---WAjJRiz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://encrypted-tbn0.gstatic.com/images%3Fq%3Dtbn:ANd9GcSKl2aRcJ2cYCgcnhjlvdkfJHY7DPjajn_croj1bZIiWT4kqs-cLegSILz9%26s%3D10" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---WAjJRiz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://encrypted-tbn0.gstatic.com/images%3Fq%3Dtbn:ANd9GcSKl2aRcJ2cYCgcnhjlvdkfJHY7DPjajn_croj1bZIiWT4kqs-cLegSILz9%26s%3D10" alt="MVP" width="455" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Better separation of concerns.&lt;/li&gt;
&lt;li&gt;Easier unit testing.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;More boilerplate code.&lt;/li&gt;
&lt;li&gt;Presenter can become bloated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MVVM (Model-View-ViewModel)&lt;/strong&gt;&lt;br&gt;
MVVM provides a clear separation between UI and business logic, with the ViewModel as an intermediary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cDCJkO1Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://encrypted-tbn0.gstatic.com/images%3Fq%3Dtbn:ANd9GcSHCf5FFmeMKZ0ZusHWa6ZZc0LIAzajqcYMDQ%26usqp%3DCAU" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cDCJkO1Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://encrypted-tbn0.gstatic.com/images%3Fq%3Dtbn:ANd9GcSHCf5FFmeMKZ0ZusHWa6ZZc0LIAzajqcYMDQ%26usqp%3DCAU" alt="MVVM" width="800" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Great separation of concerns.&lt;/li&gt;
&lt;li&gt;Two-way data binding.&lt;/li&gt;
&lt;li&gt;Easier to unit test.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Steeper learning curve.&lt;/li&gt;
&lt;li&gt;Potential performance issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Clean Architecture&lt;/strong&gt;&lt;br&gt;
Clean Architecture emphasizes modularity and decoupling.&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%2F39wf74ebxna110xq6bdn.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%2F39wf74ebxna110xq6bdn.png" alt="Clean Architecture" width="662" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Highly modular and decoupled.&lt;/li&gt;
&lt;li&gt;Promotes testability and maintainability.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Increased complexity.&lt;/li&gt;
&lt;li&gt;Requires more effort and understanding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a developer, choosing the right platform and architecture pattern is essential for building scalable applications. Native development offers optimal performance and access to platform-specific features, while cross-platform solutions like React Native and Flutter provide code reusability and faster development cycles.&lt;/p&gt;

&lt;p&gt;In the next two months, I will be participating in the HNG internship under the mobile app development track. My aim is to enhance my skills as a mobile app developer. Reflecting on my experience as a finalist in the frontend development track during the last HNG internship, I realized how much those challenges contributed to my growth as a developer. The HNG internship provides an excellent opportunity to gain practical experience and further my knowledge, I look forward to becoming a better Mobile App Developer.&lt;/p&gt;

&lt;p&gt;For anyone interested in learning more about the program you can visit their website &lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;HNG Internship&lt;/a&gt;. The program is free, but for those seeking a certificate and job opportunities, there is a premium option available - &lt;a href="https://hng.tech/premium" rel="noopener noreferrer"&gt;HNG Premium&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>reactnative</category>
      <category>ios</category>
      <category>developer</category>
    </item>
    <item>
      <title>Oh No... CORS Error! A Backend Developer's Journey</title>
      <dc:creator>Bashua Mutiat</dc:creator>
      <pubDate>Thu, 04 Jul 2024 17:49:40 +0000</pubDate>
      <link>https://dev.to/mutiatbash/oh-no-cors-error-a-backend-developers-journey-2272</link>
      <guid>https://dev.to/mutiatbash/oh-no-cors-error-a-backend-developers-journey-2272</guid>
      <description>&lt;p&gt;As a frontend developer, encountering the "CORS error" message was a common but frustrating experience. While I didn't fully understand the cause, I knew it was a recurring challenge when dealing with APIs provided by backend developers. But when I decided to start my journey as backend developer, I realized that I was now in the same boat.&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%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcTOBPl1V7yRua2xqcepR5Ny5_wkdeQ5imACOA%26s" 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%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcTOBPl1V7yRua2xqcepR5Ny5_wkdeQ5imACOA%26s" alt="sad image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I remember creating my first API and then testing it in a react project, only to be met with the same CORS error. Initially, I was confused and uncertain about the cause. &lt;br&gt;
Of course, I had to turned to Google my friend 😊 and read various articles about CORS (Cross-Origin Resource Sharing).&lt;/p&gt;

&lt;p&gt;I learned that CORS is a security feature enforced by browsers to prevent web applications from making requests to a different domain than the one that served the web page. While essential for security, it is a significant challenge for development.After going through different articles, these were the steps I followed to resolve the issue&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Install the cors package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since I hadn’t already installed the cors package, I did so by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install cors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Configure CORS to Allow Specific Origins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, I configured my server to allow requests from specific origins by using the cors middleware.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const cors = require('cors');
const app = express();

const corsOptions = {
  origin: ['http://localhost:3000', 'https://edture.vercel.app'],
  methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
  credentials: true,
  optionsSuccessStatus: 204
};

app.use(cors(corsOptions));

app.get('/api/data', (req, res) =&amp;gt; {
  res.json({ message: 'Data fetched' });
});

const PORT = process.env.PORT || 5000;
app.listen(PORT, () =&amp;gt; {
  console.log(`Server running on port ${PORT}`);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To ensure the CORS configuration worked locally, I tested locally on the frontend port I had allowed. &lt;br&gt;
I checked the network tab in the browser's developer tools to ensure the request was successful and no CORS errors appeared.&lt;br&gt;
I also did the same on the live frontend url I specified.&lt;/p&gt;

&lt;p&gt;I realized that there might be scenarios were i would want to test my api from any origin, so I had to allow all origins&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const cors = require('cors');
const app = express();

// Using the CORS middleware with the default configuration to allow all origins
app.use(cors());

app.get('/api/data', (req, res) =&amp;gt; {
  res.json({ message: 'Data fetched' });
});

const PORT = process.env.PORT || 5000;
app.listen(PORT, () =&amp;gt; {
  console.log(`Server running on port ${PORT}`);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By following these steps, I was able to configure my backend server to handle CORS properly, both for specific origins and for allowing all origins. This enabled my frontend application to make requests without encountering CORS errors.&lt;/p&gt;

&lt;p&gt;In the next two months, I will be participating in the HNG internship, focusing on backend development. My aim is to enhance my skills as a backend developer. Reflecting on my experience as a finalist in the frontend development track during the last HNG internship, I realized how much those challenges contributed to my growth as a developer. The HNG internship provides an excellent opportunity to gain practical experience and further my knowledge, I look forward to becoming a better Backend Developer.&lt;/p&gt;

&lt;p&gt;For anyone interested in learning more about the HNG internship,  you can visit their website &lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;HNG Internship&lt;/a&gt;. The program is free, but for those seeking a certificate and job opportunities, there is a premium option available - &lt;a href="https://hng.tech/premium" rel="noopener noreferrer"&gt;HNG Premium&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>backenddevelopment</category>
      <category>node</category>
      <category>beginners</category>
      <category>internship</category>
    </item>
    <item>
      <title>What is Technical Writing?</title>
      <dc:creator>Bashua Mutiat</dc:creator>
      <pubDate>Mon, 30 Oct 2023 14:59:46 +0000</pubDate>
      <link>https://dev.to/mutiatbash/what-is-technical-writing-13mk</link>
      <guid>https://dev.to/mutiatbash/what-is-technical-writing-13mk</guid>
      <description></description>
    </item>
    <item>
      <title>Understanding Web Accessibility</title>
      <dc:creator>Bashua Mutiat</dc:creator>
      <pubDate>Mon, 30 Oct 2023 14:58:13 +0000</pubDate>
      <link>https://dev.to/mutiatbash/understanding-web-accessibility-358n</link>
      <guid>https://dev.to/mutiatbash/understanding-web-accessibility-358n</guid>
      <description>&lt;p&gt;In our digital age, the internet is essential for basically everything we do, from shopping, learning, and connecting. But what if it's not open to everyone? Web accessibility is all about making sure that everyone can use the web, no matter their abilities. In this article, I’ll discuss about understanding web accessibility and how to make the digital world more inclusive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Accessibility: The Basics
&lt;/h2&gt;

&lt;p&gt;Accessibility is about designing and developing websites and applications in a way that everyone can perceive, navigate, and interact with them. This includes individuals with disabilities, such as visual, auditory, motor, or cognitive impairments. Accessibility is not just a rule; it's a matter of inclusion and respect for all users.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Importance of Color Contrast
&lt;/h3&gt;

&lt;p&gt;One fundamental aspect of web accessibility is color contrast. It may seem like a small detail, but the choice of colors can greatly impact the readability of web content. Ensuring that text has sufficient contrast against its background is essential. For instance, if you've ever adjusted text colors to ensure readability, you're practicing web accessibility. Remember that not everyone has perfect vision, and color choices matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic Accessibility Features
&lt;/h3&gt;

&lt;p&gt;Here are some basic accessibility features I consider when developing websites to ensure inclusivity:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Alt Text for Images:&lt;/strong&gt; I always ensure to add alternative text (alt text) for images to convey their content to users who are visually impaired.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic HTML:&lt;/strong&gt; Using semantic HTML tags like headings, lists, and paragraphs to structure my content for screen readers and other assistive technologies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard Navigation:&lt;/strong&gt; Ensuring that all interactive elements can be navigated and activated using a keyboard for users who cannot use a mouse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color Contrast:&lt;/strong&gt; I also maintain a sufficient color contrast between text and its background to make text readable for users with visual impairments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; I take responsiveness really important as not everyone has access to laptops, so I ensure the website is mobile-friendly responsive and adaptable to different devices and screen sizes, benefiting users with various assistive devices.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How I Practice Web Accessibility
&lt;/h3&gt;

&lt;p&gt;To improve color contrast, I do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I use online tools to check my design's colors.&lt;/li&gt;
&lt;li&gt;Pick colors that follow accessibility guidelines.&lt;/li&gt;
&lt;li&gt;Ask people with vision issues to test my website.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Impact of Accessibility
&lt;/h3&gt;

&lt;p&gt;Web accessibility is about making a web for everyone, not just a few. When we design with accessibility in mind, we create a digital space that welcomes everyone. This inclusive design benefits not only those with disabilities but also a broader audience. Improved accessibility leads to better user experiences, increased reach, and a positive brand image.&lt;/p&gt;

&lt;p&gt;To wrap it up, don’t think of web accessibility as something trivial, It's a really important. We need to learn the basics, make simple changes, and welcome everyone to the digital world.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>frontend</category>
      <category>a11y</category>
    </item>
    <item>
      <title>Creating a static web app using azure</title>
      <dc:creator>Bashua Mutiat</dc:creator>
      <pubDate>Tue, 23 May 2023 06:55:16 +0000</pubDate>
      <link>https://dev.to/mutiatbash/creating-a-static-web-app-using-azure-3oh7</link>
      <guid>https://dev.to/mutiatbash/creating-a-static-web-app-using-azure-3oh7</guid>
      <description>&lt;p&gt;This is a final project for the SCA cloud school &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creating an instance in Amazon Web Services (AWS)</title>
      <dc:creator>Bashua Mutiat</dc:creator>
      <pubDate>Sat, 08 Apr 2023 09:22:05 +0000</pubDate>
      <link>https://dev.to/mutiatbash/creating-an-instance-in-amazon-web-services-aws-39nf</link>
      <guid>https://dev.to/mutiatbash/creating-an-instance-in-amazon-web-services-aws-39nf</guid>
      <description>&lt;p&gt;Imagine having access to over 200 fully featured services that can help your business scale and grow, all from a single platform!&lt;br&gt;
That's exactly what the &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt; (AWS) platform provides. With data centers located all around the world, AWS is the most comprehensive cloud platform available, offering scalable and cost-effective solutions for all kinds of businesses. &lt;/p&gt;

&lt;h2&gt;
  
  
  What are Instances
&lt;/h2&gt;

&lt;p&gt;Now that you know what AWS offers, let’s find out what an instances are. &lt;/p&gt;

&lt;p&gt;An instance in AWS is a virtual server that you can create and manage within the AWS environment. It's like having a magical computer that lives in the cloud and can do anything you need it to do!&lt;/p&gt;

&lt;p&gt;Instances are based on Amazon Machine Images (AMIs), which are pre-configured virtual machines that include everything from the operating system to the software applications you need. &lt;/p&gt;

&lt;p&gt;And the best part? With AWS, you only pay for what you use, so you can save money and resources without sacrificing performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;u&gt; Steps in creating an instance&lt;/u&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Create an account with AWS
&lt;/h3&gt;

&lt;p&gt;Before you can create an instance, you need to have an account with AWS. If you already have an account, skip this step.  If you don’t, you can create a free tier here &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt;.&lt;br&gt;
You also need to have a credit card that accepts international payments. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:A fee of $1 will be &lt;br&gt;
debited&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Navigate to EC2 dashboard
&lt;/h3&gt;

&lt;p&gt;Once you are logged into your account, you’ll see a dashboard, navigate to EC2 on the left panel. Afterwards click on instances, which leads you to a page where you can view all your instances. Click on &lt;strong&gt;Launch Instance&lt;/strong&gt; button.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  3. Configure/Customize your instance
&lt;/h3&gt;

&lt;p&gt;Once you click on the launch instance button, it leads you to a page where you can configure your instance. On this page you can do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name your instance&lt;/strong&gt;
You’ll see an input field where you can give your instance any name you like. I named mine &lt;strong&gt;scavirtual&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Select the Amazon Machine Image (AMI)&lt;/strong&gt; 
Select the AMI that meets your needs. AWS provides a wide range of pre-configured AMIs that include various operating systems and software packages&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose an instance type that meets your needs&lt;/strong&gt;
Choose an instance type that meets your needs in terms of computing power, memory, and storage. AWS provides a variety of instance types to choose from, depending on your workload requirements and budget.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a key pair&lt;/strong&gt;
You will be asked to choose or create a key pair, which will allow you to securely access your instance via SSH. You can give it a name you can easily recall and make sure you download it on your computer because you’ll be needing it later. &lt;/li&gt;
&lt;/ul&gt;

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

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Review&lt;/strong&gt; 
On the right hand side, there’s a summary panel to review all of your configurations and make sure everything is set up correctly. If you're happy with the settings, click on the "Launch" button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c7wwZu0u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18c7sqtuzqq38ospt6up.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c7wwZu0u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18c7sqtuzqq38ospt6up.jpeg" alt="Image description" width="513" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Launching the instance
&lt;/h3&gt;

&lt;p&gt;Once you click on the launch instance button. A message will pop-up notifying you that your instance has been successfully launched.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--StEI0IjF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yx7jioqqs8d2r9m2zyp3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--StEI0IjF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yx7jioqqs8d2r9m2zyp3.jpeg" alt="Image description" width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Connecting your instance
&lt;/h3&gt;

&lt;p&gt;We’ll be connecting our instance using remote &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3o1tbRsc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/33m794bwwsoff6lmyr0i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3o1tbRsc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/33m794bwwsoff6lmyr0i.jpeg" alt="Image description" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, click on the “Get password” button which will require us to upload the pair key we created and downloaded the other time.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Next we’ll be able to generate a password, copy this password as it will be required to connect to your virtual machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yqxBga1q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bdva189z9rznr0vayeos.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yqxBga1q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bdva189z9rznr0vayeos.jpeg" alt="Image description" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Afterwards, click on the download remote button.
Once it has downloaded, open it , accept the conditions. You’ll be promoted to provide a password, paste the password that was generated earlier.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IyYBBctz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xzwn4iluo7xfzu64ipj.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IyYBBctz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xzwn4iluo7xfzu64ipj.jpeg" alt="Image description" width="455" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5.  On your virtual machine
&lt;/h3&gt;

&lt;p&gt;The screen might go blank for a while, don’t fret. Your instance will be available soon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JNXuTGkY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ljx5o1pjlmb6s7o8736o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JNXuTGkY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ljx5o1pjlmb6s7o8736o.jpeg" alt="Image description" width="800" height="608"&gt;&lt;/a&gt;&lt;br&gt;
There you have it, a virtual windows right in your computer.&lt;br&gt;
Everything you do while on the instance will be stored there.&lt;br&gt;
You can exit the instance if you are done working on it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bGuC0XlZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aodmdig060b3fnh6tiyb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bGuC0XlZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aodmdig060b3fnh6tiyb.jpeg" alt="Image description" width="791" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Terminating the instance
&lt;/h3&gt;

&lt;p&gt;Once you are done working on the instance and you are sure you no longer need it, it is important you terminate the instance to prevent you from incurring unnecessary charges for resources.&lt;br&gt;
Click on instance states, navigate to terminate instance&lt;/p&gt;

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

&lt;p&gt;A notification stating that the instance has been successfully terminated.&lt;/p&gt;

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

&lt;p&gt;Viola! We have successfully launched, connected and terminated an instance.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>aws</category>
      <category>cloud</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
