<?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: iribama</title>
    <description>The latest articles on DEV Community by iribama (@rejoice).</description>
    <link>https://dev.to/rejoice</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%2F845305%2Fc935b37e-4e68-41b4-9ffc-2c4864ef4177.jpg</url>
      <title>DEV Community: iribama</title>
      <link>https://dev.to/rejoice</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rejoice"/>
    <language>en</language>
    <item>
      <title>Medusa: An Ecommerce Platform and Its Features</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Mon, 03 Apr 2023 21:59:34 +0000</pubDate>
      <link>https://dev.to/rejoice/medusa-an-ecommerce-platform-and-its-features-39oo</link>
      <guid>https://dev.to/rejoice/medusa-an-ecommerce-platform-and-its-features-39oo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Ecommerce platforms&lt;/strong&gt; are software applications used and managed by businesses to sell their products and services. They also allow customers to access a brand’s marketplace online, maintain contact, make inquiries, and make purchases.&lt;br&gt;
These applications aid businesses with tools used to create online stores, process payments, fulfill orders and take on customer care.&lt;br&gt;
It is important to choose an ecommerce platform that suits your company’s needs and organizations.&lt;br&gt;
Ecommerce platforms can be built by the business owners themselves or their internal team, with custom software, and features. This is known as a &lt;strong&gt;self-hosted ecommerce platform&lt;/strong&gt;. Examples of self-hosted ecommerce platforms are &lt;a href="https://medusajs.com/"&gt;Medusa&lt;/a&gt;, &lt;a href="https://woocommerce.com/"&gt;WooCommerce&lt;/a&gt;, &lt;a href="https://www.prestashop.com/en"&gt;PrestaShop&lt;/a&gt;, and &lt;a href="https://about.magento.com/Magento-Commerce.html"&gt;Magento&lt;/a&gt;. &lt;br&gt;
Businesses can also choose to use &lt;strong&gt;hosted ecommerce platforms&lt;/strong&gt;, owned and maintained by third-party providers. Examples are &lt;a href="https://www.shopify.com/"&gt;Shopify&lt;/a&gt;, &lt;a href="https://www.squarespace.com/"&gt;Squarespace&lt;/a&gt;, &lt;a href="https://www.wix.com/"&gt;Wix&lt;/a&gt;, &lt;a href="https://www.weebly.com/"&gt;Weebly&lt;/a&gt;, and &lt;a href="https://www.bigcommerce.com.au/"&gt;BigCommerce&lt;/a&gt;.&lt;br&gt;
Some ecommerce platforms are popular among businesses seeking an online presence and space to market their goods.&lt;br&gt;
This article will focus on Medusa, a headless ecommerce platform with endless customizations for online businesses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Medusa
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vo5fltX0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zsj5n67epykk9ikz100r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vo5fltX0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zsj5n67epykk9ikz100r.png" alt="medusajs" width="880" height="366"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medusajs.com/"&gt;Medusa&lt;/a&gt; is a headless commerce platform that runs on a node.js network. It can be used for any digital commerce activities, from online stores for small businesses and startups to established brands looking to grow their online presence.&lt;br&gt;
The software application comprises three segments: the &lt;a href="https://docs.medusajs.com/admin/quickstart"&gt;admin dashboard&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/admin/quickstart#medusa-backend"&gt;headless backend&lt;/a&gt;, and &lt;a href="https://docs.medusajs.com/deployments/storefront/"&gt;storefront&lt;/a&gt;. These are designed to be set up separately, which allows developers to set them up with any framework of their choice. It can also be set up as a whole application using all its components.&lt;br&gt;
The requirements needed to set it up are node.js and Git.&lt;br&gt;
Medusa offers a variety of features that ensure businesses set up have the optimal user experience. These range from multi-region support and management, multi-currency support for international support, product management, and various payment provider options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of Ecommerce Platforms
&lt;/h2&gt;

&lt;p&gt;Websites have certain characteristics that place them in the category of e-commerce platforms or online stores. They are discussed below in no particular order.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Product Management
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Product management&lt;/strong&gt; refers to creating and optimizing product catalogs for ecommerce platforms. Products are sorted into categories and collections, new products are added, out-of-stock products are removed, and prices and discounts are updated.&lt;br&gt;
These are features of product management. These are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Product Catalog&lt;/strong&gt;: Product catalogs are virtual sections on online stores that contain details about a business’s products such as a product’s name, its individual features, description, pricing, images, availability, and shipping options. Other details it may contain include product reviews, recommendations, and similar products.
The presence of product catalogs presents the brand in a good light and influences shoppers' decisions.
2.** Product Variant**: Product variants or product variations are the same product with different physical attributions. These attributes may be colors, sizes, or materials. They are necessary as they increase cross-selling and upselling, improve sales for businesses and serve as a substitute for similar products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory management&lt;/strong&gt;: This is an organized way of managing the products available on the ecommerce platform. It ensures that the products can be accessed by customers. Effective inventory management can be maintained by monitoring product stock levels, use of automation, and making sure the old stock is sold out first before restocking.
Medusa has a guide on how to maintain online businesses with optimal &lt;a href="https://docs.medusajs.com/user-guide/orders/fulfillments"&gt;product management&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2. Shopping Cart and Checkout
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;shopping cart&lt;/strong&gt; is a virtual version of carts and baskets used to shop at malls and markets. Customers use it to gather all the items they want to purchase from the site, displays the costs, and let them proceed to checkout. Customers can add or remove items according to their discretion.&lt;br&gt;
The checkout process entails the payment process. It is the last stage of the shopping experience. Here, the customer selects a payment method, chooses a shipping option and confirms the purchase. Payment and shipping methods may differ from one online store to another. Medusa offers &lt;a href="https://docs.medusajs.com/user-guide/settings/currencies"&gt;multi-currency support&lt;/a&gt;, which is beneficial for international transactions and business expansion.&lt;br&gt;
Different aspects make up the checkout process. They are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Payment gateway integration&lt;/strong&gt;: This is the act of integrating a software platform, a payment processor with the online store to allow virtual payments. The payment gateway processes the customer’s payment information, usually from debit and credit cards. When this is verified, the payment processor authorizes the payment, to the merchant’s account, belonging to the business owner.
Payment gateways exist in different forms. There are hosted and non-hosted payment gateways, self-hosted payment gateways, and local bank integrations. &lt;a href="https://docs.medusajs.com/plugins/payment/"&gt;Payment plugins&lt;/a&gt; from popular payment providers like Paypal, Stripe, and Klarna can be integrated with Medusa’s backend. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tax Calculation&lt;/strong&gt;: This is an important feature online stores integrate with their shopping platforms. It ensures that the business obeys local tax laws and regulations. There are different ways taxes are calculated for online stores. These include pre-calculated manual taxes, tax rates provided by tax authorities, and automated tax calculation software. Medusa’s admin dashboard allows users to manage and automate &lt;a href="https://docs.medusajs.com/modules/taxes/overview"&gt;tax-inclusive pricing&lt;/a&gt;.
All of these methods take into consideration the customer’s location, their purchase, and the tax rates applicable to the purchase. Each of these methods is carried out in different ways but performs a single role: streamlining the tax calculation process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shipping options&lt;/strong&gt;: When purchases are made on an ecommerce store, the customer needs to choose a shipping option that bests suit their needs and preferences. The shipping options that can be found on ecommerce websites include standard shipping, expedited shipping, free shipping, international shipping, and same or next-day shipping.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3. Order Management
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Order management&lt;/strong&gt; involves processing and fulfilling customer orders in ecommerce stores. It ranges from receiving and processing orders to payment processing, delivery, and shipment. It increases customer satisfaction and helps businesses with their inventory management. Medusa offers various services that help with &lt;a href="https://docs.medusajs.com/user-guide/orders/"&gt;order management&lt;/a&gt;.&lt;br&gt;
The following discussed below are some features that makeup order management.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Order tracking&lt;/strong&gt;: This allows customers to keep track of their orders and monitor their shipments. It keeps businesses organized and gives customers a sense of transparency and fulfillment. Some order-tracking tools include Shippo and ClickSpot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order fulfillment&lt;/strong&gt;: When a customer places an order, the ecommerce store has to process it. The first step is to verify the payment options and check if the product is in stock and available for shipping. After the order has been processed, it is then sent out for shipping. Orders can be managed on &lt;a href="https://docs.medusajs.com/user-guide/orders/fulfillments"&gt;Medusa's platform&lt;/a&gt;.
3 &lt;strong&gt;Return and refund management&lt;/strong&gt;: This involved handling returned or exchanged goods and refunding customers. Online stores should have clear refunds, exchanges, and returns policies. These can include warranty timelines, extra charges if applicable, and the condition of the products. An effective refund management system maintains customers' loyalty and patronage and shows the transparency of the business.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4. Marketing and SEO Optimization
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Marketing&lt;/strong&gt; is the way a business portrays its business to potential customers. Different tactics such as email marketing and social media adverts are used to reach the business’s target audience and increase sales. &lt;strong&gt;SEO&lt;/strong&gt; oversees optimizing a website to improve its ranking on search engine result pages. The higher a website’s ranking, the more likely it is to receive more clicks, potential customers, and an eventual increase in sales.&lt;br&gt;
The following are ways to properly market goods and set up an ecommerce store with SEO optimization.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Email marketing&lt;/strong&gt;: This is an effective way to communicate with customers. It involves sending promotional branded emails to customers that subscribed for it on the website. To improve a business’s SEO, a link to the online store can be added to the email content, along with keywords. Best practices should be followed to get optimal results such as consent from subscribers, unsubscription options, and using good email providers that prevent the emails from being marked as spam or phishing content. Developers can integrate &lt;a href="https://docs.medusajs.com/plugins/notifications/"&gt;notification plugins&lt;/a&gt; such as Slack, MailChimp, and Twilio SMS with Medusa’s backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discounts, referrals, and promotions&lt;/strong&gt;: Discounts are offered to new and existing customers by taking a percentage of their purchase amount. Referrals are done by offering incentives to existing customers to refer the brand to others, mostly family and friends. Promotions are carried out through sales, giveaways, one-time offers, and social media adverts. All of these are targeted toward driving sales, increase in revenue, and expanding a business’s customer base. They also increase an online store’s search engine rankings and sales metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search Engine Optimization&lt;/strong&gt;: This is the practice of optimizing a website’s structure, design, and content to make it more visible on search engines and their search results. These search engines can be Google, Bing, Mozilla Firefox, and others. There are different effective strategies to employ when optimizing an online store with SEO. They include using keywords associated with the company’s product, optimizing the website pages to make them more search engine friendly with meta tags and descriptions, headers and page titles, and link building. Other tactics include social media marketing, content creation, and optimizing the technical infrastructure of the ecommerce platform.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Factors to Consider when Choosing an Ecommerce Platform
&lt;/h2&gt;

&lt;p&gt;There are factors to be considered when choosing an ecommerce platform for your business. They include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Budgeting and Pricing&lt;/strong&gt;: Businesses should ecommerce platforms according to their preferences and budget. It is ideal for small businesses to make choices that do not affect their financial statuses. Medusa is often described as an open-source alternative to Shopify. It is &lt;a href="https://medusajs.com/pricing/"&gt;free&lt;/a&gt; to use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizability and flexibility&lt;/strong&gt;: An ecommerce platform should offer extendability and customization features to its users. Medusa is a composable engine made up of three parts. It can be decoupled and customized to suit the user’s needs. This flexibility is beneficial for businesses. It allows them to build unique products and considers their preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration with third-party services&lt;/strong&gt;: Third-party integration helps ecommerce stores carry out several activities, such as messaging and international payment processes. Medusa has a variety of &lt;a href="https://docs.medusajs.com/"&gt;plugins&lt;/a&gt;. These can be existing third-party service providers or custom-made to suit the user’s needs. They are installed on the backend before use. These go through the same process as Medusa’s backend, which erases complications and the need for dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support resources&lt;/strong&gt;:  Reputable ecommerce platforms have active support systems. These enable users to solve issues while building and provide platforms for potential users to make first contact and inquiries. Medusa has an active online presence. It has a GitHub repository dedicated to resolving &lt;a href="https://github.com/medusajs/medusa/security/policy"&gt;security issues and vulnerabilities&lt;/a&gt;. The &lt;a href="https://medusajs.com/blog/?category=Tutorial%2CCompany%2CPerspective"&gt;official blog&lt;/a&gt; has articles and tutorials that discuss ecommerce hot topics and demo projects. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;An ecommerce platform should offer its users various features that ensure the success of their businesses. Medusa supports businesses of all sizes and offers an immersive digital experience. Its user-friendly interface and customization options make it ideal for businesses looking to grow an online presence.&lt;br&gt;
Medusa’s &lt;a href="https://docs.medusajs.com/usage/create-medusa-app"&gt;quickstart guide&lt;/a&gt; is available for beginners and frequent users.&lt;br&gt;
Do you have any questions about Medusa or the implementation process? Reach out to the team and the active developer community on &lt;a href="https://discord.com/invite/medusajs"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ecommerce</category>
      <category>opensource</category>
      <category>medusa</category>
    </item>
    <item>
      <title>A Beginner’s Guide to Cryptocurrency Wallets</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Sat, 18 Mar 2023 23:44:59 +0000</pubDate>
      <link>https://dev.to/rejoice/a-beginners-guide-to-cryptocurrency-wallets-j5g</link>
      <guid>https://dev.to/rejoice/a-beginners-guide-to-cryptocurrency-wallets-j5g</guid>
      <description>&lt;p&gt;&lt;em&gt;Cryptocurrency wallets: the best way to store digital assets!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cryptocurrency&lt;/strong&gt; is a form of digital currency that is encryption enabled, which in turn allows funds transfer. Popular examples in use today are &lt;a href="https://accounts.binance.com/it/register?ref=309099222"&gt;Bitcoin&lt;/a&gt; and &lt;a href="https://ethereum.org/en/"&gt;Ethereum&lt;/a&gt;. It is not physical cash or legal tender, and so it cannot be stored in physical wallets or pockets that hold our IDs, cash, credit and debit cards. &lt;br&gt;
Crypto cannot be stored in a particular spot and does not exist physically. Its basis is blockchain, which is a running ledger of transactions distributed round the world. A key aspect of owning and using cryptocurrency is the use of a cryptocurrency wallet.&lt;br&gt;
This article will discuss what a cryptocurrency wallet is, its types and how to choose the best one that suits your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Cryptocurrency Wallets?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;cryptocurrency wallet&lt;/strong&gt; is a digital wallet that allows its owner to manage, send and receive funds in crypto. Each wallet has some software that stores public and private keys of its owner. It also interacts with the blockchain, monitors your account balance, and allows cryptocurrency transactions. &lt;br&gt;
In order to send, receive and manage cryptocurrency, one needs to be in possession of a cryptocurrency wallet. Now, this wallet is akin to a key that allows its owner access to funds. Here, the crypto is assigned to your private key, then the wallet gives access to the funds assigned to your account. &lt;/p&gt;

&lt;h2&gt;
  
  
  How do these cryptocurrency wallets work?
&lt;/h2&gt;

&lt;p&gt;A simple analogy is a similar process of how traditional bank apps work. Now, think of the bank of your choosing as the blockchain, your account number as the public key, the cryptocurrency wallet as your online banking app, and your online banking information (credentials) are your private key. &lt;br&gt;
The bank records and tracks all of the transactions that occur within your account. &lt;br&gt;
This is the same way the blockchain monitors the fund exchanges handled by your public key. With the aid of your online banking app, you can check your account balance, then send or receive money. Likewise, a cryptocurrency wallet allows you to view your balance, then send and receive crypto. &lt;br&gt;
In order to access your bank app, there are open fields that request password or some sort of user authentication. For the cryptocurrency wallet, it is similar to using your private key to access your cryptocurrency. This public key is similar to your bank account number. It is also known as your wallet address. Like with bank account numbers, people in possession of your wallet address can only send funds, and not withdraw them. &lt;br&gt;
Your private key is akin to your bank app login details, which can be used to send money from your account elsewhere. If this occurs, you might not be able to recover your funds. Ensure to keep your private key away safe.&lt;br&gt;
Please note that you can only send and receive cryptocurrency of the same type to a wallet address that supports it. For example, an Ethereum wallet address can only send or receive Ethereum funds. &lt;/p&gt;

&lt;h2&gt;
  
  
  Public key vs Private key
&lt;/h2&gt;

&lt;p&gt;A public key and a private key are the credentials that grant a cryptocurrency wallet owner full ownership of a wallet and the funds it carries. Both of them serve different purposes and are to be treated as such.&lt;br&gt;
A &lt;strong&gt;public key&lt;/strong&gt;, also known as a public address, is a cryptographic code that can be shared with the public. It is used to carry out transactions by a wallet owner and can be used to receive funds assigned to that account.&lt;br&gt;
A &lt;strong&gt;private key&lt;/strong&gt; is a secret code meant to be undisclosed and used only by the owner of the wallet. Its function is to authorize the withdrawal of cryptocurrency from the wallet in question.&lt;br&gt;
A public key is used to receive cryptocurrency, while a private key is used to disburse cryptocurrency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Cryptocurrency Wallets
&lt;/h2&gt;

&lt;p&gt;There are two states a cryptocurrency wallet can exist in. It can either be a &lt;strong&gt;hot wallet&lt;/strong&gt; or a &lt;strong&gt;cold wallet&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a hot wallet?
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;hot wallet&lt;/strong&gt; creates and stores your keys online. These include desktop or mobile app software. They operate on computers and phones, which have internet connection, also known as hot devices. Wallets set up in this manner have their private keys generated and are more vulnerable to compromise because they are connected to the internet. &lt;br&gt;
The least secure way to secure large amount of cryptocurrency funds for long term purposes is on an exchange. This is because it is online, vulnerable to compromise and a huge target for hackers.&lt;br&gt;
Unlike bank app transactions, hackers and crypto looters stand to gain a lot if they intercept crypto transactions. Storing crypto on exchanges is a bad practice for wallet owners. The best alternative is a cold wallet.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a cold wallet?
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;cold wallet&lt;/strong&gt; creates and stores your keys offline. It is also known as a hardware wallet which is specially designed to create and store your keys offline. It makes your funds less vulnerable to theft and is ideal for storing large amounts of cryptocurrency exchanges.&lt;br&gt;
All hardware wallets can be classified as cold wallets, but not all cold wallets are hardware wallets, paper wallets are an exception because they do not involve any hardware.&lt;/p&gt;

&lt;p&gt;The following are various types of cryptocurrency wallets and the states they belong to.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Software wallets&lt;/strong&gt; encompass desktop, mobile and online wallets. They identify as hot wallets because the devices they exist on have an internet connection. Desktop wallets exist on the local hard drives of desktops. Examples are &lt;a href="https://www.exodus.com/"&gt;Exodus&lt;/a&gt; and &lt;a href="https://bitcoin.org/en/bitcoin-core/"&gt;Bitcoin Core&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobile wallets&lt;/strong&gt; exist on mobile devices and do not offer top-notch secure transactional spaces. Examples are Mycelium and Edge. Online wallets are owned and hosted by third party providers. They are convenient to use, but do not have efficient security measures put in place. Examples are &lt;a href="https://www.coinbase.com/"&gt;Coinbase&lt;/a&gt; and &lt;a href="https://accounts.binance.com/it/register?ref=309099222"&gt;Binance&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hardware wallets&lt;/strong&gt; are physical storage devices that have no internet connection. They are regarded as cold wallets. They are generally more secure that hot wallets and can be accessed with a pin pr password. They are connected to a computer or digital device through USB. Examples are &lt;a href="https://trezor.io/"&gt;Trezor&lt;/a&gt; and &lt;a href="https://www.ledger.com/"&gt;Ledger&lt;/a&gt;.&lt;br&gt;
There are important considerations to note before purchasing a hardware wallet.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Always buy a hardware wallet from the manufacturer. Do not make purchases from other organizations, retailers or secondhand brands. &lt;/li&gt;
&lt;li&gt;Confirm the URL used to make the purchase and ensure it is correct.&lt;/li&gt;
&lt;li&gt;Ensure the web address is correct and that it has an SSL certificate.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Paper wallets&lt;/strong&gt; are cold wallets. They are usually identified as pieces of paper that bear the public and private keys of a cryptocurrency wallet. They are very safe when stored properly and cannot be accessed with ease. However, it is risky because there are chances of the paper being misplaced or stolen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An individual or organization should make choices of cryptocurrency wallets based on their needs and security conditions. &lt;/p&gt;

&lt;h2&gt;
  
  
  Security Considerations for a Cryptocurrency Wallet
&lt;/h2&gt;

&lt;p&gt;It is important to secure your wallet at all times. It is also necessary to keep your private key away from situations that may end in theft or a hacked account.&lt;br&gt;
The following are security measures to take note of while using a cryptocurrency wallet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make use of a wallet that is curated by trustworthy organizations with a track record of fail-proof security.&lt;/li&gt;
&lt;li&gt;Use long and unique PIN codes and passwords. This can be created with a mixture of uppercase and lowercase letters, numbers, and symbols. This prevents easy hacking or password theft.&lt;/li&gt;
&lt;li&gt;Enable two-factor authentication (2FA). This provides an extra layer of security in case someone manages to get access to your wallet or device.&lt;/li&gt;
&lt;li&gt;Keep your private keys offline and back up your wallet. Store the backup carefully. This will be helpful if your devices are misplaced or stolen.&lt;/li&gt;
&lt;li&gt;Do not open your cryptocurrency wallets while using public WiFi. This is an unhealthy practice, and can lead to loss of digital assets.&lt;/li&gt;
&lt;li&gt;Be wary of phishing scams. Often, hackers try to steal login credentials and private keys by luring their victims with tantalizing offers. Verify the source and authenticity of sites and emails before you open them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Cryptocurrency is a unique concept, and as with all financial data, requires a tool to manage transactions. The use of cryptocurrency wallets keeps funds safe and enables transactions.&lt;br&gt;
These wallets are a good tool to exchange, store, and invest in cryptocurrency. Users can choose wallets according to their preferences.&lt;br&gt;
Although these wallets are managed individually, it is necessary to undertake good cybersecurity measures to avoid the loss of personal details and digital assets.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>crypto</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Create Kubernetes Clusters on AWS</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Thu, 02 Mar 2023 08:21:54 +0000</pubDate>
      <link>https://dev.to/rejoice/how-to-create-kubernetes-clusters-on-aws-3d07</link>
      <guid>https://dev.to/rejoice/how-to-create-kubernetes-clusters-on-aws-3d07</guid>
      <description>&lt;p&gt;How to set up Kubernetes, Google’s open-source container management system, on AWS&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; is a popular choice for cloud-native application development because it offers scalability and resilience, provides container orchestration, and hosts an environment that can be used to deploy cloud-native applications. Some of the tools that can be found in a Kubernetes environment include Grafana, Prometheus, Istio, and others.&lt;br&gt;
This article discusses Kubernetes, how it is hosted on AWS, and how it can effectively deploy containerized applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Kubernetes?
&lt;/h2&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%2F6iju71wpervujr355fmg.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%2F6iju71wpervujr355fmg.png" alt="Kubernetes image" width="800" height="314"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt; is an open-source platform that is used for the automation and management of containerized software applications. It allows developers to deploy applications on multiple servers without worrying about the underlying infrastructure. It is owned by Google and was created in 2014 with the aim of managing cloud applications. It is currently maintained by the &lt;a href="https://www.cncf.io" rel="noopener noreferrer"&gt;Cloud Native Computing Foundation&lt;/a&gt; (CNCF).&lt;br&gt;
Cloud platforms are various providers with both the hardware and operating system of web-based data centers. These cloud platforms are of different types and range from private servers to public cloud platforms, which are third-party providers. Examples of public cloud platforms are AWS, GCP, Microsoft Azure, and Digital Ocean.&lt;/p&gt;
&lt;h2&gt;
  
  
  Kubernetes Architecture
&lt;/h2&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%2F8su9fydmmf9512qpn13e.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%2F8su9fydmmf9512qpn13e.png" alt="Kubernetes architecture" width="800" height="357"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Kubernetes architecture&lt;/strong&gt; consists of the master plane, the nodes, and a distributed storage system, which are clusters.&lt;br&gt;
These are common terms found in Kubernetes architecture.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/architecture/nodes/" rel="noopener noreferrer"&gt;Node&lt;/a&gt;: A node is a worker machine in Kubernetes. There are master nodes and worker nodes. Master nodes are in charge of managing clusters, while worker nodes host the pods, which host the set of running containers in a cluster. A node is made up of a kubelet, kube proxy, and container runtime.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cluster: A cluster is made up of nodes that manage containerized applications. A minimum of one worker node can be found in a cluster. When Kubernetes is deployed, a cluster is formed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pod: A pod is a set of running containers in a cluster. It is the smallest deployable unit in Kubernetes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Components of Kubernetes Architecture
&lt;/h3&gt;

&lt;p&gt;The following are components that make up complete and healthy Kubernetes clusters.&lt;/p&gt;
&lt;h4&gt;
  
  
  Master Node
&lt;/h4&gt;

&lt;p&gt;The master node consists of the following sub-components.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/reference/kubectl/" rel="noopener noreferrer"&gt;Kubectl&lt;/a&gt;: The kubectl controls the Kubernetes cluster manager. It is a command line tool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver" rel="noopener noreferrer"&gt;Kube API server&lt;/a&gt;: This is the front-end section of the master plane that controls the API server. It is designed to deploy several instances and manage their traffic. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#etcd" rel="noopener noreferrer"&gt;Etcd&lt;/a&gt;: etcd represents the space where all cluster data and Kubernetes objects are stored, on a snapshot file. Safe practices while using etcd are periodic backup and encryption of snapshot files. Backup plans while using etcd include the use of etcd built-in snapshot or volume snapshot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kube-scheduler" rel="noopener noreferrer"&gt;Kube scheduler&lt;/a&gt;: The kube scheduler takes newly created pods and assigns nodes to them. For scheduling to take place, data locality, deadlines, and software and hardware policies are considered, amongst other factors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kube-controller-manager" rel="noopener noreferrer"&gt;Kube controller manager&lt;/a&gt;: A controller is a control loop that watches shared clusters through the API server and attempts to move them to their desired state. The controller manager runs controller processes. Typically, each controller is a separate process, but they are piled together to run as a single process. The various types of controllers include node controller, serviceaccount controller, job controller, and endpointslice controller.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Worker Nodes
&lt;/h4&gt;

&lt;p&gt;The worker or slave nodes are composed of the following sub-components.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kubelet" rel="noopener noreferrer"&gt;Kubelet&lt;/a&gt;: A kubelet is an agent that runs on each node in a cluster. &lt;br&gt;
&lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/" rel="noopener noreferrer"&gt;Pod&lt;/a&gt;: This is a container controlled by a single application that manages the operation of containers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;: Docker is a containerization platform that runs the configured pods. It operates by running containers from Docker images.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kube-proxy" rel="noopener noreferrer"&gt;Kube proxy&lt;/a&gt;: It is a network proxy that runs on the worker nodes in a cluster. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Benefits of Kubernetes Architecture
&lt;/h3&gt;

&lt;p&gt;The following are the benefits of Kubernetes' architecture.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scalability: Kubernetes architecture is structured to accommodate scalability. This means that containers can be created and used according to the demand for resources. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security: Security is prioritized on Kubernetes by isolating containerized applications and encrypting sensitive files such as Kubernetes states and snapshot files. There is also encrypted communication among its components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automation: All tasks that take place are automated. This increases the effectiveness and efficiency of working teams.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flexibility and resilience: The architecture permits custom configuration according to the specific needs of a user, with the integration of available tools and processes. It is also resilient and can withstand high traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource management: Resource usage is optimized as containers are automatically scheduled on available nodes in a cluster.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Kubernetes on Cloud Platforms
&lt;/h2&gt;

&lt;p&gt;As we know, Kubernetes is hosted on cloud platforms. It is also used to manage containerized applications. Let us look at how it is set up on Amazon Web Services (AWS), a public cloud platform.&lt;/p&gt;
&lt;h3&gt;
  
  
  Kubernetes on Amazon Web Services (AWS)
&lt;/h3&gt;

&lt;p&gt;In order to set up Kubernetes on Amazon Web Services (AWS), you need to set up an &lt;a href="https://aws.amazon.com/" rel="noopener noreferrer"&gt;account&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The next step is to create an EC2 instance.&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%2Fpszfel4ubyqbco6ie8sg.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%2Fpszfel4ubyqbco6ie8sg.png" alt="EC2 instance" width="800" height="318"&gt;&lt;/a&gt;&lt;br&gt;
Give the instance a name of your choice, and change its instance type to t2.medium.&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%2F459mgdz8nt7qpmpfbtor.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%2F459mgdz8nt7qpmpfbtor.png" alt="t2.medium" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose a key pair, or create a new key pair. &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%2Frdmamphbnflvm9uvxuit.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%2Frdmamphbnflvm9uvxuit.png" alt="key pair creation" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For network settings, leave them as default, but allow HTTP and HTTPS traffic from the internet. Leave the Configure Storage section as it is. &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%2Fos2cfazbepzuz3aaep29.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%2Fos2cfazbepzuz3aaep29.png" alt="security settings" width="670" height="757"&gt;&lt;/a&gt;&lt;br&gt;
Proceed to launch the instance.&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%2Fv2szlwh2dfvkpb6g183t.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%2Fv2szlwh2dfvkpb6g183t.png" alt="launch instance" width="800" height="23"&gt;&lt;/a&gt;&lt;br&gt;
The instance has been successfully created.&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%2F88czyo3qy7gfbml0ch5o.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%2F88czyo3qy7gfbml0ch5o.png" alt="view instance created" width="800" height="334"&gt;&lt;/a&gt;&lt;br&gt;
Proceed to view the instance created, and click on the checkbox on the left to select it.&lt;/p&gt;

&lt;p&gt;At the top of the page, there is a button that says "Connect." Click on it.&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%2Fpuns669xoqv597jimolk.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%2Fpuns669xoqv597jimolk.png" alt="connect EC2 instance" width="800" height="334"&gt;&lt;/a&gt;&lt;br&gt;
There are four options for connecting an instance. This article uses EC2 instance connect. Click on it and connect.&lt;/p&gt;

&lt;p&gt;It automatically opens a command line interface. Clear the introductory messages to have a clear workspace.&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%2Fvz6uwxlqwndkg4g4g93a.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%2Fvz6uwxlqwndkg4g4g93a.png" alt="clear CLI" width="800" height="297"&gt;&lt;/a&gt;&lt;br&gt;
This article makes use of commands embedded in custom shell scripts that enable the installation of required tools, such as Docker, minikube, and kubectl, and their dependencies. &lt;br&gt;
This is a faster method, as it saves time and resources.&lt;/p&gt;

&lt;p&gt;The next step is to create a shell script using nano.&lt;br&gt;
&lt;code&gt;nano install_docker.sh&lt;/code&gt; &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%2Fqoozui2u4647ex57p6lw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoozui2u4647ex57p6lw.jpg" alt="docker nano command" width="796" height="233"&gt;&lt;/a&gt;&lt;br&gt;
After that, add these commands to the file and save the changes made. This installs Docker.&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%2Fa0h1pre2id5tki3ogrzc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0h1pre2id5tki3ogrzc.jpg" alt="docker script" width="800" height="347"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
sudo apt update

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

apt-cache policy docker-ce

sudo apt install -y docker-ce

sudo systemctl status docker

sudo passwd ${USER}
#Enter your preferred password

sudo usermod -aG docker ${USER}

su - ${USER}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, &lt;code&gt;run chmod +x install_docker.sh&lt;/code&gt; to make it an executable file.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;ls -l&lt;/code&gt; to view the changes made to the files. When a file is green, as shown below, it means that it is executable.&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%2F9jglv6hjtnto4dtylzbw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jglv6hjtnto4dtylzbw.jpg" alt="ls -l *" width="598" height="188"&gt;&lt;/a&gt;&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%2F95o3i0z90eigpv38g5ih.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95o3i0z90eigpv38g5ih.jpg" alt=" ls -l" width="629" height="202"&gt;&lt;/a&gt;&lt;br&gt;
Run &lt;code&gt;./install_docker.sh&lt;/code&gt; for dependencies.&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%2F6r90q5ui6ahwtto1poyu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r90q5ui6ahwtto1poyu.jpg" alt="install dokcer.sh" width="578" height="177"&gt;&lt;/a&gt;&lt;br&gt;
The next step is to install docker-compose.&lt;br&gt;
Run &lt;code&gt;nano install_docker-compose.sh&lt;/code&gt; on the CLI.&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%2F7fhwtwcqjlp8iqlmmrgw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fhwtwcqjlp8iqlmmrgw.jpg" alt="docker-compose install" width="672" height="167"&gt;&lt;/a&gt;&lt;br&gt;
The commands embedded in the script are as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash

groups

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Ffhygortbssqqv61yr94l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhygortbssqqv61yr94l.jpg" alt="docker nano file" width="800" height="151"&gt;&lt;/a&gt;&lt;br&gt;
Save the script, and run &lt;code&gt;chmod +x docker-compose.sh&lt;/code&gt;.&lt;br&gt;
 This makes the file executable.&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%2Fzfgjayfg91zs2xldokch.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfgjayfg91zs2xldokch.jpg" alt="chmod" width="595" height="240"&gt;&lt;/a&gt;&lt;br&gt;
The command &lt;code&gt;./install_docker-compose.sh&lt;/code&gt; installs the dependencies &lt;code&gt;docker-compose&lt;/code&gt; needs to run.&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%2Fki2m1bvi7dxt097gaktm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fki2m1bvi7dxt097gaktm.jpg" alt="docker-compose install" width="581" height="130"&gt;&lt;/a&gt;&lt;br&gt;
This is the output.&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%2F32771w5yxr9hsy7pfi8v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32771w5yxr9hsy7pfi8v.jpg" alt="output" width="791" height="216"&gt;&lt;/a&gt;&lt;br&gt;
After we have installed Docker, docker-compose and their dependencies, the next step is to install minikube. Minikube is allows single node Kubernetes clusters to run on your local machine. It also manages its components, ensuring that they are integrated and functioning properly.&lt;br&gt;
To install minikube, run: &lt;code&gt;nano minikube.sh&lt;/code&gt; or &lt;code&gt;nano install minikube.sh&lt;/code&gt; &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%2Fq66vyym1x0vqjzytfl0g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq66vyym1x0vqjzytfl0g.jpg" alt="install minikube" width="513" height="128"&gt;&lt;/a&gt;&lt;br&gt;
Store the following commands in the script;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fahpxn43ueg9zn3i6airj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahpxn43ueg9zn3i6airj.jpg" alt="nano file" width="800" height="142"&gt;&lt;/a&gt;&lt;br&gt;
Save the file and run &lt;code&gt;chmod +x minikube.sh&lt;/code&gt; to make the file executable.&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%2Fcivwiej6v5c8p3360opn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcivwiej6v5c8p3360opn.jpg" alt="chmod minikube" width="563" height="123"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;./minikube.sh&lt;/code&gt;  to install minikube’s dependencies.&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%2Fqd4twgf2hlld71mpym4g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd4twgf2hlld71mpym4g.jpg" alt="minikube.sh" width="494" height="110"&gt;&lt;/a&gt;&lt;br&gt;
This is the output.&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%2F6mcgm7ne4q01i697i2gz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6mcgm7ne4q01i697i2gz.jpg" alt="output" width="791" height="214"&gt;&lt;/a&gt;&lt;br&gt;
After minikube has been installed, the next step is to install kubectl.&lt;br&gt;
&lt;code&gt;nano kubectl.sh&lt;/code&gt;&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%2F9w23zvc4e73v8srvfa60.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9w23zvc4e73v8srvfa60.jpg" alt="nano file" width="553" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Store the following command in the shell script :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash

sudo snap install kubectl --classic


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fllwuhkcosz1gca5nlm5o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllwuhkcosz1gca5nlm5o.jpg" alt="kubectl.sh nano file" width="800" height="115"&gt;&lt;/a&gt;&lt;br&gt;
Run &lt;code&gt;chmod +x kubectl.shl&lt;/code&gt; to make the file executable.&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%2Fmz45b6isu5276y1qqyh7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmz45b6isu5276y1qqyh7.jpg" alt="chmod kubectl.sh" width="565" height="122"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;./kubectl.sh&lt;/code&gt; to install its dependencies.&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%2Fwtj7xxn22fifg8442dyb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtj7xxn22fifg8442dyb.jpg" alt="./kubectl.sh" width="533" height="110"&gt;&lt;/a&gt;&lt;br&gt;
This is the output.&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%2Fys949mmz1pymq5vkhqk2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fys949mmz1pymq5vkhqk2.jpg" alt="ouput of kubectl.sh" width="435" height="138"&gt;&lt;/a&gt;&lt;br&gt;
Now that you are done with the installation process, go ahead to start minikube.&lt;br&gt;
&lt;code&gt;minikube start&lt;/code&gt; &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%2Fq1lkusdqgpikirasb60j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1lkusdqgpikirasb60j.jpg" alt="minikube start" width="800" height="316"&gt;&lt;/a&gt;&lt;br&gt;
This goes ahead to create a single cluster, as seen below.&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%2Fkqythee86tt3xkkzvdzy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqythee86tt3xkkzvdzy.jpg" alt="single cluster" width="549" height="126"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;kubectl get nodes&lt;/code&gt; is a command used on the Kubernetes CLI to show information about the worker nodes in a cluster. As you can see, a single worker node exists on the control plane.&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%2F6dyaiuz1yuw9366u2ny1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dyaiuz1yuw9366u2ny1.jpg" alt="kubectl get nodes" width="665" height="149"&gt;&lt;/a&gt;&lt;br&gt;
To see the status of your cluster, run &lt;code&gt;minikube status&lt;/code&gt;.&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%2F08mmdb0394vksifv3q8v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08mmdb0394vksifv3q8v.jpg" alt="minikube status" width="621" height="182"&gt;&lt;/a&gt;&lt;br&gt;
Now, you have successfully created a Kubernetes cluster on AWS using an EC2 instance. You can go ahead and containerize and deploy applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes on AWS Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes is used on DevOps workflows to automate the software development process.&lt;/li&gt;
&lt;li&gt;It provides readily available clusters that can be scaled up or down according to the user’s needs.&lt;/li&gt;
&lt;li&gt;It is used to manage applications in hybrid cloud environments, ensuring consistency.&lt;/li&gt;
&lt;li&gt;It encourages continuous delivery by providing a favorable environment for automated testing, building, and deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Benefits of Kubernetes on AWS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes on AWS is cost-effective, allowing organizations to automate the development of their products according to their budget.&lt;/li&gt;
&lt;li&gt;It reduces the manual effort that is associated with traditional software development models.&lt;/li&gt;
&lt;li&gt;Kubernetes on AWS minimizes downtime cases.&lt;/li&gt;
&lt;li&gt;It allows scalability, another cost tolerance effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Drawbacks of Kubernetes on AWS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security challenges may arise from misconfigurations or vulnerabilities in container images and their underlying infrastructure.&lt;/li&gt;
&lt;li&gt;Organizations that use Kubernetes on AWS find it to migrate to other cloud platforms, which leads to vendor lock-in. This is because AWS is a proprietary platform.&lt;/li&gt;
&lt;li&gt;Kubernetes is a complex tool and cannot be used properly without the right skill set.&lt;/li&gt;
&lt;li&gt;Hiring skilled professionals to manage these tools can be quite expensive.
## Best Practices for Running Kubernetes on Cloud Platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cost Optimization
&lt;/h3&gt;

&lt;p&gt;Cost optimization is essential when running Kubernetes on cloud platforms. Due to excessive resource usage and inefficient application deployment, Kubernetes can incur unwanted costs despite its benefits as a container orchestration tool.&lt;br&gt;
Cost optimization can be achieved by right-sizing clusters, autoscaling, and making proper resource allocations. Using container registries can reduce container images; serverless computing helps with scalability; spot instances can make clusters function with reduced costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;Security when containerizing and deploying applications is a necessary step. It ensures the safety of applications, infrastructure, and data. Keeping your Kubernetes architecture secure is important because it is a complex machine with isolated, mobile parts, and because it is often run on public cloud platforms with multiple users accessing it.&lt;br&gt;
Security on Kubernetes's architecture can be implemented by the use of firewalls, network segmentation, and container image scanning tools. All of these can identify unusual activity and block security breaches. Using secure communication protocols like HTTPS enforces encryption and prevents data interception.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;It is imperative to enforce scalability in order to deploy applications across many hosts efficiently. This can be done by designing applications that can scale easily and using Kubernetes operators. Other scalability measures include adding more Kubernetes clusters to manage loads (horizontal scaling), and autoscaling; automatic adjustment of containers in a cluster according to the users’ needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Kubernetes is a lightweight tool with a unique architecture that can be used to automate the software development process. Organizations that employ its use witness a drastic improvement in their application development projects. Although there are drawbacks, it benefits greatly outweigh them. To know more about Kubernetes on AWS, check out the &lt;a href="https://aws.amazon.com/kubernetes/" rel="noopener noreferrer"&gt;official documentation&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>discuss</category>
      <category>networking</category>
    </item>
    <item>
      <title>A Beginner's Guide to Understanding DevOps</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Sun, 26 Feb 2023 17:12:34 +0000</pubDate>
      <link>https://dev.to/rejoice/a-beginners-guide-to-understanding-devops-3nd6</link>
      <guid>https://dev.to/rejoice/a-beginners-guide-to-understanding-devops-3nd6</guid>
      <description>&lt;p&gt;New to DevOps? Here's a simplified guide.&lt;/p&gt;

&lt;p&gt;DevOps, a combination of development and operations, is an approach to collaboration between software developers and IT operators to ensure software product deployment and continuous success.&lt;br&gt;
This article aims to explain the meaning and history of "DevOps." It also discusses the need to integrate its practice with software development ethics and the challenges it faces.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is DevOps?
&lt;/h2&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%2Fsut6xfotez2dm5670lcj.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%2Fsut6xfotez2dm5670lcj.png" alt="DevOps" width="800" height="328"&gt;&lt;/a&gt;&lt;br&gt;
DevOps is a methodology used in software development that embodies the roles of development and operations teams. Its principles enable companies to produce high-quality software products. With the aid of its tools, time and costs are optimized while building software. It also improves the efficiency and availability of these products after they have been deployed for use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Methodology
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Methodology&lt;/strong&gt; is the process by which an organization develops its applications. It heavily influences the speed and process of software development. During the era of traditional development and operations, there was the use of the waterfall methodology.&lt;br&gt;
&lt;strong&gt;Waterfall methodology&lt;/strong&gt; was followed by developers in building the application painstakingly, adding features one by one, and moving it to software testing for examination. This back and forth continued until the application seemed ready for deployment. It was then moved over to the operations team to ship, and if there were any failures or mismatches, the application was sent back to the development team for fixing.&lt;br&gt;
This was a slow, tedious process that brought about the failure of many software products, caused miscommunication between both teams, caused products to crash when the underlying software in use was out of date and needed to be changed, and caused slow feedback. &lt;br&gt;
This brought about the use of &lt;strong&gt;agile methodology&lt;/strong&gt;. It solves the speed of deploying development lifecycles. Here, each feature gets tested and deployed immediately after it is built. There is immediate feedback for each process.&lt;br&gt;
Agile methodology makes use of specific implementations known as scrum and kanban. Companies can choose to work with either one of these. It is becoming increasingly popular. More and more companies are drifting towards this methodology to ease their software development practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Software Development Life Cycle (SDLC)
&lt;/h2&gt;

&lt;p&gt;The software development field is very vast. In order to understand DevOps, we briefly need to look at the roles and job descriptions that make up the software development lifecycle. One may carry out individual tasks in this lifecycle, but it is important to understand their role.&lt;br&gt;
The complete software development process follows a continuous pattern of implementation, testing, building, deployment, and maintenance. &lt;/p&gt;

&lt;h3&gt;
  
  
  Application Development
&lt;/h3&gt;

&lt;p&gt;Here, the software product is programmed by developers, who write code to create new functionalities and maintain them. If the product is small, it will be developed by a single team of developers. As a large application, each specific feature or app is developed by one team. This is done using different programming languages such as Java, Python, JavaScript, and others.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Testing
&lt;/h3&gt;

&lt;p&gt;This is done to check the functionality of a program after maintenance checks and updates. Testing can be done with the use of automated tools or manually by software developers or testers employed specifically for this role. This is done before sending out the feature for use by end users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Release
&lt;/h3&gt;

&lt;p&gt;The application is packaged, compressed, and run on servers. When a new feature is added, it is added to the running code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operations
&lt;/h3&gt;

&lt;p&gt;This part of the software development lifecycle is carried out by the IT operations team. They are in charge of running software in production. It carries new features and runs them on existing production servers so that users can access them. &lt;br&gt;
The following are the responsibilities of the IT operations team:&lt;br&gt;
They also ensure that the application does not experience downtime as these changes are made, such as server failure or other similar events. Operations make this process seamless. &lt;br&gt;
They make sure that their servers are able to handle huge traffic despite usage.&lt;br&gt;
They make sure the underlying infrastructure is working properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of DevOps
&lt;/h2&gt;

&lt;p&gt;Development involves the process of developers creating and testing a product, while operations entail deploying the code packaged as an application for end users.&lt;br&gt;
Development and operations are different because they have completely different responsibilities, require different technical knowledge, and make use of different tools. Development makes use of programming languages, test frameworks, databases, and version control to build software products. Operations make use of Linux, the command-line interface (CLI), automated scripts, and monitoring tools.&lt;br&gt;
In previous times, both teams worked together to complete the software development life cycle.&lt;br&gt;
The development team documented instructions on how to deploy the application along with the built application itself. The operations team received it and configured the environment needed for the application to run smoothly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traditional Deployment Methods
&lt;/h3&gt;

&lt;p&gt;There were issues that arose with this traditional deployment methods. Sometimes, the instructions handed down by the development team were not clear enough, along with other factors. This slowed down the release of the application or a new feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  How was this problem solved?
&lt;/h3&gt;

&lt;p&gt;The software development lifecycle saw a radical improvement with the introduction of the DevOps culture. Before it became a job title, it was a combination of work roles that evolved.&lt;br&gt;
In the present software development models, a DevOps engineer is the bridge between development and operations, bringing a subset of skills from both sides. This makes them able to communicate effectively with both sides as well. DevOps also has its own technical skills, core competencies, and know-how. These encompass the use of build tools, continuous integration and deployment, pipelines, Docker, and Kubernetes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Principles of DevOps
&lt;/h2&gt;

&lt;p&gt;There are core principles in DevOps that guide the software development lifecycle. They are discussed below, in no particular order.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous Integration (CI)
&lt;/h3&gt;

&lt;p&gt;In &lt;strong&gt;continuous integration&lt;/strong&gt;, several developers' code changes are integrated into one repository. The repository is shared, and it is frequently updated. The purpose of continuous integration is to ensure that code changes are tested and added to the main codebase immediately. This is to avoid integration conflicts.&lt;br&gt;
Here, developers input their code to a repository, where automated build and test processes are carried out. After passing the tests, the code is then integrated into the main codebase to verify the changes. In cases where the code fails the tests, the developers have to fix the issue and repeat the process before attempting integration.&lt;br&gt;
As its name implies, it is a continuous process that makes up DevOps. Continuous integration ensures that code changes are tested, integrated, and deployed efficiently. The quality of the code base is maintained, and the software development process is seamless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Delivery (CD)
&lt;/h2&gt;

&lt;p&gt;Continuous integration and continuous delivery go hand in hand. &lt;strong&gt;Continuous delivery&lt;/strong&gt; is the automation of the software development process. After the application is built, it ensures that it is packaged and ready for deployment. This is a repeated process.&lt;br&gt;
It allows developers to make code changes to the software, receive immediate feedback, and implement those changes in a streamlined and efficient manner. &lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous Deployment (CDP)
&lt;/h3&gt;

&lt;p&gt;Continuous deployment oversees the deployment of code changes to production as a frequent process. Traditional software development models involve deploying code manually. Its side effects are prolonged software development cycles, downtime, and an increased risk of errors.&lt;br&gt;
Continuous deployment seeks to fix this by packaging code changes and deploying them with automated tools and processes. It is important because it allows the production of high-quality software, reduces work lag, and prevents lapses in deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure as Code (IaC)
&lt;/h3&gt;

&lt;p&gt;Infrastructure as Code refers to the practice of managing and setting up infrastructure resources, with the use of code and other software development tools. These infrastructure resources include servers, networks, storage devices, and other tools.&lt;br&gt;
It also allows the use of configuration management tools to automate the management of its resources. These tools are Chef, SaltStack, Ansible, Puppet, and others. With the aid of these tools, infrastructure resources can be placed in stipulated conditions for a period of time.&lt;br&gt;
The use of IaC encourages collaboration, automation, continuous integration, delivery, and deployment. &lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and Logging
&lt;/h3&gt;

&lt;p&gt;Through monitoring and logging, DevOps engineers and their teams can investigate the behavior of their systems. This is done to avoid potential threats, and for troubleshooting. &lt;br&gt;
Monitoring is the collection and analysis of data that shows the availability of systems and applications. The data can be represented in various forms. These include error rates, response times, network traffic, CPU, and memory usage. &lt;br&gt;
Logging is the detailed capture and analysis of events that occur within systems and application packages. These events are placed in a record that can be used to replicate system behavior. &lt;br&gt;
Logging is useful because these records can help identify odd shifts in development patterns. It can also be used to monitor user interaction, and improve software products.&lt;br&gt;
Monitoring and logging are carried out together as a DevOps practice to ensure the visibility of systems. This allows engineers to actively identify and take care of threats. It also aids in the building of scalable and reliable systems that are beneficial to end users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pillars of DevOps
&lt;/h2&gt;

&lt;p&gt;DevOps is made up of three pillars.&lt;/p&gt;

&lt;h3&gt;
  
  
  Culture
&lt;/h3&gt;

&lt;p&gt;DevOps is more than just a job title. It encompasses the practices and tools used to foster collaboration between development and operations teams. It signifies a cultural shift because it is different from traditional software development processes. &lt;br&gt;
The DevOps culture is shouldered by these discussed below. They encourage accountability, which helps build trust among team members.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collaboration and communication: Here, a mindset of sharing knowledge and ideas is inculcated into both sides of the workforce. This ensures that everyone responsible for the success of the company and its products is working towards the same goal.&lt;/li&gt;
&lt;li&gt;Shared Responsibility: Traditional DevOps models created silos in which teams had strict tasks and responsibilities. In present times, DevOps roles ensure that engineers have a skillset of both teams. This quickens production and allows faster development cycles. &lt;/li&gt;
&lt;li&gt;Continuous learning and improvement: DevOps ensures that teams are continuously focused on learning and experimenting with new ideas. It also makes sure that feedback is received positively.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Automation
&lt;/h3&gt;

&lt;p&gt;Automation is the process of simplifying the software development process. This is done to avoid repetition and routine tasks, which slow down efficiency. Automation is a welcome development in DevOps because it provides a common set of tools and practices that every member of the team can use. It speeds up software development life cycles while maintaining the quality of software products.&lt;br&gt;
It reduces the workload for development and operations teams with the use of its automated tools.&lt;br&gt;
Common tools used in automation are Jenkins, Ansible, Puppet, and Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measurement
&lt;/h3&gt;

&lt;p&gt;Measurement is gathering data about the processes and systems in DevOps. Factors like lead time, deployment frequency, and change failure rate are commonly used to measure the progress of processes and systems. &lt;br&gt;
Key performance indicators (KPIs) are a set of metrics used to monitor the progress of software products. Using the data gotten from measurement, it measures the success of the product as a whole, the new features, and the impact they make. &lt;br&gt;
Measuring performance is important because it uses the collected data to analyze system health issues and address them. It is also used to monitor progress made and mark out lapses to be taken care of. The use of measurement metrics and KPIs allows businesses to make informed decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of DevOps/Importance of DevOps for Software Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Improved Quality&lt;/strong&gt;: The quality of software products is improved with the use of DevOps tools. These tools ensure that the products are properly tested before they are deployed. This reduces the risk of bugs or other fatal incidents.&lt;/li&gt;
&lt;li&gt;Faster Time to Market: Companies can ship their products to the market faster for sales with the use of DevOps practices. This bridges the gap in the supply and demand chain while creating a healthy space for competition. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Collaboration&lt;/strong&gt;: DevOps improves collaboration and communication between development and operations teams. This results in shorter software development cycles and greater product success.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced Costs&lt;/strong&gt;: Costs can be reduced with the use of DevOps tools. A pay-as-you-go model for cloud providers is made possible by features such as scalability. This is also helpful when business demands change and the need to add new functionalities and features to software packages arises.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous Integration and Deployment&lt;/strong&gt;: With traditional DevOps models, integration and deployment are done manually. DevOps allows automated delivery and deployment of software products and changes. As a result, lapses that may occur during code changes, such as fixing bugs or adding new features, will be prevented. It also improves the overall security of the work environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DevOps Tools and Technologies
&lt;/h2&gt;

&lt;p&gt;There are common tools and technologies that are used to carry out DevOps practices. They are discussed briefly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker and containers
&lt;/h3&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%2Frt4qvqd8kheoc26so4b0.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%2Frt4qvqd8kheoc26so4b0.png" alt="Docker" width="800" height="338"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Containers&lt;/strong&gt; are an easy way of packaging software applications along with their dependencies, to run them consistently across different environments. The act of packaging these software applications is called containerization.&lt;br&gt;
&lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/a&gt; is a containerization platform used by a large percentage of developers and DevOps teams.&lt;br&gt;
Containers are essential DevOps tools that enable businesses to deploy software products effectively. They do this by providing a stable and favorable environment for these proceedings and supporting rapid deployment afterward. Containers save cost by utilizing resources, reducing infrastructure, and encouraging scalability. It also supports core DevOps principles, such as integration with CI/CD pipelines, infrastructure as code, and microservices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes
&lt;/h3&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%2Fm7cw1xl5aq2y7lufl4bw.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%2Fm7cw1xl5aq2y7lufl4bw.png" alt="Kubernetes" width="800" height="314"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/a&gt; is a platform that supports container orchestration. It is used as a DevOps tool to deploy, scale, and manage containerized applications. Kubernetes allows organizations to streamline and manage the lifecycles of their applications. It is useful for the automated deployment of containerized applications, scalability, and resource management. Its other benefits include resilience, observability, availability, and automated deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Jenkins
&lt;/h3&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%2Frocm8uyj6li6i196f7j2.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%2Frocm8uyj6li6i196f7j2.png" alt="Jenkins" width="800" height="244"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.jenkins.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Jenkins&lt;/strong&gt;&lt;/a&gt; is an open-source automation tool that is used for CI/CD pipelines. It is a server-based application and allows DevOps teams to test their code changes with the aid of automation. &lt;br&gt;
Jenkins reduces the risk of errors, supports flexibility, and saves costs for organizations that make use of it.&lt;br&gt;
Jenkins offers features such as community support, customization with the use of plugins and custom scripts, and integration with other DevOps tools. It also allows for continuous integration and allows software delivery pipelines to be defined as code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git
&lt;/h3&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%2F2kdyuoh9ik7n9hk6tgzz.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%2F2kdyuoh9ik7n9hk6tgzz.png" alt="Git" width="800" height="264"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;/a&gt; is a distributed version control system that is used to manage source code in DevOps workflows. It allows teams to collaborate on projects and implement code changes. As a DevOps tool, its responsibilities are source code management, branching, merging, code review, rollbacks, continuous integration, and continuous deployment. &lt;br&gt;
With the use of Git, DevOps teams can collectively make sure that their code changes are up to standard. The release of new features or software versions can be done appropriately, and bugs can be fixed with the use of version history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges in DevOps Implementation
&lt;/h2&gt;

&lt;p&gt;Although DevOps has brought a positive change in the implementation of software practices, it still faces some significant challenges. Some of them are as follows:&lt;/p&gt;

&lt;h3&gt;
  
  
  Resistance to Change
&lt;/h3&gt;

&lt;p&gt;While DevOps aims to create an environment for collaboration, some organizations and individuals do not seem to conform. Reluctance to try out new ideas is a common factor that cuts across all spheres of human existence and can stem from fear, mistrust, obsolete ideas, and miscommunication.&lt;br&gt;
Resistance can manifest in these forms; concerns about job security, a lack of needed skills, unhealthy market competition, and a lack of support from business owners and stakeholders.&lt;br&gt;
These misgivings can be managed by re-orientation to the benefits DevOps has to offer, live demonstrations of DevOps practices, training employees to have the right skill set, and addressing cultural barriers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skill gaps
&lt;/h3&gt;

&lt;p&gt;DevOps is a practice that covers both development and operations, and its implementation requires technical and non-technical skills on both ends. Skill gaps can be identified as a lack of technical and soft skills. It also shows a reluctance to learn new technologies and limited knowledge about available DevOps tools.&lt;br&gt;
Skill gaps can be fixed by organizations training their staff, and hiring experts to offer professional advice. Events can also be held to encourage cross-collaboration and continuous learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Debt
&lt;/h3&gt;

&lt;p&gt;Technical debt is the accumulated cost of short terms solutions used in software development that give rise to long-term problems. It is caused by factors such as tight deadlines, a lack of resources, and not paying attention to the quality of applications.&lt;br&gt;
It is a challenge that can hinder efficiency and quality in DevOps. It can be removed by prioritizing technical debt reduction measures. These measures include using best practices, refactoring code, and improving automation. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;DevOps is a practice that enhances the quality of software products and applications. Software development lifecycles should incorporate its principles, tools, and practices. Although there are challenges that impede the implementation of DevOps, they can be remedied. &lt;br&gt;
As a culture, DevOps improves the work ethic amongst developers and, when practiced, yields positive results. &lt;/p&gt;

</description>
      <category>careeradvice</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Linux Process Management: A Deep Dive</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Sun, 26 Feb 2023 08:14:32 +0000</pubDate>
      <link>https://dev.to/rejoice/linux-process-management-a-deep-dive-2lmk</link>
      <guid>https://dev.to/rejoice/linux-process-management-a-deep-dive-2lmk</guid>
      <description>&lt;p&gt;Improve your Linux system's performance with efficient process management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;process&lt;/strong&gt; is a program currently being executed in the system's kernel. It consists of the program instructions and inputs from system users. Every process is given a unique ID, known as a &lt;strong&gt;process ID number&lt;/strong&gt;, and has an owner. A process can perform tasks such as writing a file or running a server online. &lt;br&gt;
Process management in Linux is essential. It allows the user to view and manage the processes running on the system. Examples of these include memory usage, CPU usage, and priority.&lt;br&gt;
This article will discuss how to manage processes in Linux using commands.&lt;/p&gt;
&lt;h2&gt;
  
  
  States of Linux Processes
&lt;/h2&gt;

&lt;p&gt;A process can be stopped, interrupted, or killed according to the intentions of the user. When a process falls under any of these conditions, it is categorized within one of these states. The states of Linux processes are discussed below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Running&lt;/strong&gt;: In Linux, an active program instance is referred to as a running process. The operating system tracks each process's state (running, stopped, sleeping) and resource use, such as memory and CPU space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sleeping&lt;/strong&gt;: A sleeping process is one that is dormant and waiting for a resource it can use to be made available on the system. While it is not actively running and using CPU resources, a sleeping process keeps its process ID (PID) and allotted resources.&lt;br&gt;
A process may enter a sleep state for a number of reasons, including waiting for input/output operations to finish, a lock or a semaphore to appear, or for a signal or message from another process.&lt;br&gt;
A sleeping process may be awakened by the resource or event it was anticipating, or by a specific signal. The process will then return to a running state and carry on with its operation from there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stopped&lt;/strong&gt;: In Linux, a stopped process is one that has been stopped either by the operating system or by a user. The process is still assigned resources and retains its process ID (PID), but it is not currently running.&lt;br&gt;
A user can terminate a process by using these command-line tools:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kill

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pkill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This sends a specific signal to the process.&lt;br&gt;
The operating system may also halt a process if it runs out of resources or experiences an error. A stopped process can be restored by sending it a continuous signal. This is done using the shell commands &lt;code&gt;fg&lt;/code&gt;or &lt;code&gt;bg&lt;/code&gt; or the &lt;code&gt;kill&lt;/code&gt; command coupled with the &lt;code&gt;SIGCONT&lt;/code&gt; signal.&lt;/p&gt;

&lt;p&gt;Users can use these commands to view the status of processes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ps

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ top

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ htop

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These commands display all currently running, stopped, and sleeping processes along with their resource usage and state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Foreground Process vs Background Process
&lt;/h2&gt;

&lt;p&gt;When a command is executed, a process starts. The process may be any of these;&lt;/p&gt;

&lt;h3&gt;
  
  
  Foreground Process
&lt;/h3&gt;

&lt;p&gt;In Linux, processes currently running and interacting with the user are known as &lt;strong&gt;foreground processes&lt;/strong&gt;. Users initiate these processes through the use of the terminal or command-line interface (CLI), and they run continuously until the user either ends them or kills them. &lt;br&gt;
A foreground process controls the terminal or CLI while it is running, and any input or output is shown on the screen. Additionally, the user can participate in the process by giving instructions and providing input. The command for a foreground process is entered into the terminal, followed by the enter key.&lt;br&gt;
When a foreground process is active, the user cannot enter any additional commands in the terminal until the process is finished or terminated. This is because if a new command is executed, it changes the process currently running and gives a different output.&lt;br&gt;
A user can start a process in the background if they want to run several commands simultaneously. A background process doesn't need user input and operates independently of the terminal. While the background process is running, the user can use the terminal to issue a new set of commands.&lt;br&gt;
Foreground processes are valuable when you want to run a command or a program, see the outcome right away, and also be able to interact with it. Command-line editors, file managers, and command-line interfaces for starting programs are a few examples of foreground processes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Background Process
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Background processes&lt;/strong&gt; are those that are actively interacting with the user but are running in the background. Although the user initiates these processes through the terminal or command-line interface, they tend to run independently of the terminal, enabling the user to use the terminal and issue additional commands while the background process is active.&lt;br&gt;
The standard method for starting background processes in the terminal is to add an ampersand (&amp;amp;) to the command for the process. For instance, the user would type &lt;code&gt;nano &amp;amp;&lt;/code&gt; and press enter to launch the nano text editor in the background.&lt;br&gt;
When a background process is in operation, the user is immediately given access to the terminal prompt while the process keeps working in the background. While the background process is running, the user can use the terminal to launch multiple commands. The background process's output and any errors are not shown in the terminal, but they can be seen by using the tail, grep, or less commands.&lt;br&gt;
Another way to start a background process is to issue a command with &lt;code&gt;nohup&lt;/code&gt;, which ensures that it will continue to run even if the user logs out or closes the terminal.&lt;br&gt;
The jobs command will display a list of all background processes currently active in the system, allowing the user to check the status of background processes running in the current shell session.&lt;br&gt;
Additionally, a user can use the &lt;code&gt;fg&lt;/code&gt; command to bring a background process to the foreground or the &lt;code&gt;bg&lt;/code&gt; command to send it to the background. Using the &lt;code&gt;kill&lt;/code&gt; command and the process ID (PID) of the background process, the user can end the process.&lt;br&gt;
When you want to run a command or a program but do not want to wait for it to finish before moving on to other tasks, background processes can be helpful. Long-running tasks like backups, data processing, and system updates are examples of background processes.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Identify Linux Processes
&lt;/h2&gt;

&lt;p&gt;A process is identified by its &lt;strong&gt;process ID number&lt;/strong&gt;, otherwise known as the &lt;strong&gt;PID&lt;/strong&gt;. This number is assigned when a process is created. The lifecycle of a process ends when the parent process waits on the process ID after the process has been ended, or terminated.&lt;br&gt;
A program is associated with its process ID number (PID) as well as its &lt;strong&gt;parent process ID (PPID)&lt;/strong&gt;. Processes are further divided into sections. The most prominent are parent processes and child processes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Types of Processes
&lt;/h2&gt;

&lt;p&gt;These are the types of processes in Linux.&lt;/p&gt;
&lt;h3&gt;
  
  
  Init Process
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;init process&lt;/strong&gt; is the first process that starts when a Linux or Unix-like system is booted. It precedes other processes that can be used on the CLI, and is started by the kernel. It has a process ID of 1. Orphaned processes use it as an adoptive parent when they are not taken over by other processes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Parent Process
&lt;/h3&gt;

&lt;p&gt;A process that has produced one or more child processes is known as a &lt;strong&gt;parent process&lt;/strong&gt; in Linux. When a process initiates the initiation of another process, the initiating process is referred to as the parent process, and the newly initiated process is referred to as the child process. The child process and parent process have separate process IDs and operate simultaneously (PIDs).&lt;br&gt;
The environment variables and current working directory are two examples of properties that the child process inherits from the parent process. The child process, on the other hand, has its own memory and resources and is capable of running separately from the parent process.&lt;br&gt;
A hierarchical relationship exists between the parent and child processes, with the parent process at the top and the child process at the bottom.&lt;/p&gt;
&lt;h3&gt;
  
  
  Child Process
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;child process&lt;/strong&gt; has the ability to produce additional offspring, resulting in a tree-like structure of processes.&lt;br&gt;
Using different inter-process communication (IPC) mechanisms like pipes, sockets, and signals, a parent process can communicate with its child processes and control how they are being executed. The parent process has the option of waiting for the child process to finish before collecting the exit status of the child.&lt;br&gt;
The parent process is in charge of initiating the child process, and it also has the ability to end the child process or send it a signal to do so. The parent process can also keep an eye on the child process, and if it crashes or terminates unexpectedly, it can respond appropriately by restarting the child process or logging an error message.&lt;br&gt;
A shell is an example of a parent process; when a command is run, the shell is thought of as the parent process, and the process that executes the command is thought of as the child process.&lt;br&gt;
In Linux, a process that is created or spawned by another process is referred to as a "child process". Using system calls like fork() or spawn, the parent process creates the child process(). The current working directory and environment variables are among the properties that the child process inherits from the parent process, but it also has its own memory space and resources and the ability to run independently of the parent process.&lt;br&gt;
A distinct process ID (PID) is given to each child process, which is treated as a distinct entity from the parent process. The child process has the ability to run any command or program and can also start new child processes, arranging them in a tree-like structure.&lt;br&gt;
Through the use of various inter-process communication (IPC) mechanisms like pipes, sockets, and signals, a child process can communicate with both its parent and other child processes. The child process has the ability to end either on its own or as a result of the parent process.&lt;br&gt;
When a child process ends, the parent process is alerted and has the opportunity to gather the exit status of the child. The parent process can use this information to determine whether the child process terminated normally or crashed.&lt;/p&gt;

&lt;p&gt;The execution of a command in the shell is an example of a child process; the shell is the parent process, and the command is the child process. The child process is independent of the shell and has the ability to create additional child processes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Orphaned Process
&lt;/h3&gt;

&lt;p&gt;In Linux, an &lt;strong&gt;orphaned process&lt;/strong&gt; is a child process whose parent process has ended or left the system without properly closing the child process down or reaping it. The init process (PID 1), which is in charge of maintaining the process table and eliminating orphaned processes, is typically assigned as the new parent process to the child process when the old one exits.&lt;br&gt;
Orphaned processes can happen when a parent process exits without properly cleaning up its child processes, crashes, or is abruptly terminated. Since they are still listed in the process table but not currently running or using any resources, these processes are frequently referred to as "zombie" processes.&lt;br&gt;
Although orphaned processes do not use any system resources and have no impact on system performance, they will take up space in the process table and prevent the creation of new processes if the system reaches the maximum number of processes permitted.&lt;br&gt;
It is best practice for a parent process to properly close down its child processes when they exit, whether by using the &lt;code&gt;wait()&lt;/code&gt; or &lt;code&gt;waitpid()&lt;/code&gt; system calls or the &lt;code&gt;SIGCHLD&lt;/code&gt; signal. This helps prevent orphaned processes.&lt;br&gt;
The init process is in charge of eliminating zombie processes; to do this, it sends the parent process a periodic SIGCHLD signal, instructing it to wait for and gather the exit status of its child processes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Zombie Process
&lt;/h3&gt;

&lt;p&gt;In Linux, a child process that has finished execution but whose parent process has not yet received its exit status is referred to as a "&lt;strong&gt;zombie process&lt;/strong&gt;," also known as a "defunct" process. When a child process terminates, it remains as a zombie process in the process table until the parent process collects its exit status using the &lt;code&gt;wait()&lt;/code&gt;, &lt;code&gt;waitpid()&lt;/code&gt;, or &lt;code&gt;SIGCHLD&lt;/code&gt; signals.&lt;br&gt;
Although a zombie process doesn't use any system resources like CPU or memory, it does take up space in the process table and has the power to stop the creation of new processes if the system has reached the maximum number of processes it can support.&lt;br&gt;
When using the &lt;code&gt;top&lt;/code&gt; or &lt;code&gt;ps&lt;/code&gt; commands, look for processes with a "Z" state in the process status column to identify zombie processes. Zombies processes are typically not a cause for concern because they are harmless; however, if a parent process crashes or exits abruptly without thoroughly cleaning up its child processes, the child processes may turn into zombies, which, if not handled properly, could result in a buildup of zombie processes.&lt;/p&gt;

&lt;p&gt;The  best practice for a parent process to properly close down its child processes when it exits, whether by using the &lt;code&gt;wait()&lt;/code&gt; or &lt;code&gt;waitpid()&lt;/code&gt; system calls or the &lt;code&gt;SIGCHLD&lt;/code&gt; signal. This will help prevent zombie processes. When the &lt;code&gt;SIGCHLD&lt;/code&gt; signal is periodically sent to the parent process, which causes it to wait for and gather the exit status of its child processes, the init process causes the parent process to wait for and clean up zombie processes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Daemon Process
&lt;/h3&gt;

&lt;p&gt;In Linux, a &lt;strong&gt;daemon process&lt;/strong&gt; is a background process that runs without any user input and typically handles system-related duties. Daemon processes typically run continuously and are launched at system startup, carrying out operations like logging, scheduling, and managing network services.&lt;br&gt;
Daemon processes do not directly interact with users and do not have a controlling terminal. They are typically started by the init process (PID 1) during system startup, and their settings are managed by configuration files and tools that run at the system level.&lt;br&gt;
Daemon processes typically function without a terminal or display because they are made to run in the background. System-level utilities like systemctl or service can be used to start, stop, and restart them. The &lt;code&gt;ps&lt;/code&gt; command or the &lt;code&gt;top&lt;/code&gt; command can be used to check on their status.&lt;br&gt;
The &lt;code&gt;httpd daemon&lt;/code&gt;, which manages requests to the web server, the &lt;code&gt;sshd daemon&lt;/code&gt;, which manages SSH connections, and the &lt;code&gt;cron daemon&lt;/code&gt;, which manages scheduled tasks are a few examples of daemon processes.&lt;br&gt;
Daemon processes are crucial for maintaining a Linux system's smooth operation because they offer crucial services and carry out background tasks required for the system to operate properly.&lt;/p&gt;
&lt;h2&gt;
  
  
  Process Commands
&lt;/h2&gt;

&lt;p&gt;The following are examples of process commands and how they can be used.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps&lt;/code&gt; - the &lt;code&gt;ps&lt;/code&gt; command is used to display details about the processes that are currently active. It can show details like the process ID, the status of the process, the command that launched the process, and the user who is the process owner.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;top&lt;/code&gt; - &lt;code&gt;top&lt;/code&gt; is a real-time process monitoring tool that shows details about the processes that are currently active on the system, such as their process ID, status, CPU usage, and memory usage.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;htop&lt;/code&gt; - The &lt;code&gt;htop&lt;/code&gt; command is a real-time process monitoring tool, similar to top, but with a more user-friendly interface, simple navigation, and extensive configuration options.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pstree&lt;/code&gt; - The &lt;code&gt;pstree&lt;/code&gt; command displays the parent-child relationship between processes and the system's process hierarchy. It gives the process tree a tree-like representation and makes it possible to see the connections between the processes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kill&lt;/code&gt; - The &lt;code&gt;kill&lt;/code&gt; command can be used to stop or terminate a process by sending it a signal. The signal's name or number can be used to identify it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;killall&lt;/code&gt; -the &lt;code&gt;killall&lt;/code&gt; command sends a signal to all processes with a specified name rather than a specific process ID, making it similar to the kill command.&lt;br&gt;
The &lt;code&gt;killall&lt;/code&gt; command is similar to the &lt;code&gt;pkill&lt;/code&gt; command, but the &lt;code&gt;pkill&lt;/code&gt; command allows for more flexible signal specification and allows for filtering processes based on their characteristics and attributes, such as user, terminal, and more.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pgrep&lt;/code&gt; - &lt;code&gt;pgrep&lt;/code&gt; is a command that finds and displays the process IDs of processes that match a given pattern. It can be used to discover a running program's process ID.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;free&lt;/code&gt; - &lt;code&gt;free&lt;/code&gt; shows the amount of used and used RAM storage on a Linux system.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nice&lt;/code&gt; - The &lt;code&gt;nice&lt;/code&gt; command is used to change a process's priority, which has an impact on how much CPU time it receives. Processes with lower priorities will run less frequently than those with higher priorities.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;renice&lt;/code&gt; - The &lt;code&gt;renice&lt;/code&gt; command can be used to alter the priority of a process that is already running in order to make it more or less important.&lt;/p&gt;
&lt;h2&gt;
  
  
  How Can Processes in Linux be Controlled?
&lt;/h2&gt;

&lt;p&gt;The best way to control processes is to send signals to them. There are various signals, each with its own function. &lt;code&gt;kill -l&lt;/code&gt; is a command that displays all the signals.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kill -l

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Sending Signals to Processes
&lt;/h2&gt;

&lt;p&gt;Signals are software indicators sent to programs to signify the occurrence of an important event.&lt;br&gt;
The commands &lt;code&gt;kill&lt;/code&gt;, &lt;code&gt;pkill&lt;/code&gt; and &lt;code&gt;pgrep&lt;/code&gt; are used to send signals to processes.&lt;br&gt;
When a signal is sent to a process, it can either ignore it, catch and handle the exception, or take on any of its default actions. &lt;br&gt;
These are a signal’s default actions;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ignore&lt;/li&gt;
&lt;li&gt;Terminate&lt;/li&gt;
&lt;li&gt;Terminate and dump core&lt;/li&gt;
&lt;li&gt;Stop or pause the program&lt;/li&gt;
&lt;li&gt;Resume a paused program&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These signals, listed below, are commonly used in programs. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SIGALRM&lt;/strong&gt; (14) - this is used as a timer or alarm clock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIGSTOP&lt;/strong&gt; (19) - this tells the system to stop a process and resume it later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIGPWR&lt;/strong&gt; (30) - this indicates that there is a power supply failure to the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIGQUIT&lt;/strong&gt; (3) - this is sent by the user to the system to quit a process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIGHUP&lt;/strong&gt; (1) - this is sent by the user to hang up a controlling terminal or process in the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIGCONT&lt;/strong&gt; (18) - this is sent to the system to resume the execution of a stopped process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIGTERM&lt;/strong&gt; (15) - this signal terminates a process.
The numbers in brackets signify the signal numbers. The first thirty-one (31) signals start from &lt;strong&gt;SIG&lt;/strong&gt;, and are standardized in Linux. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Linux and Unix-like systems are properly maintained when the users use the appropriate processes and signals for their day-to-day activities. As a result of these process commands, cleaning up unwanted files and checking for unused space are among the tasks you can perform. Look out for more Linux-related articles on my blog.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>management</category>
      <category>productivity</category>
    </item>
    <item>
      <title>5 Open Source Tools for your Ecommerce Stacks</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Wed, 01 Feb 2023 15:03:07 +0000</pubDate>
      <link>https://dev.to/rejoice/5-open-source-tools-for-your-ecommerce-stacks-nbl</link>
      <guid>https://dev.to/rejoice/5-open-source-tools-for-your-ecommerce-stacks-nbl</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;An ecommerce stack is a collation of frameworks and applications needed to create and maintain an online ecommerce store. It can consist of the backend server, the storefront, or CMS platform, among other components.&lt;/p&gt;

&lt;p&gt;Commercial tools can be used to add several unique features to an ecommerce stack after it has been created. Open source tools, however, offer more range and flexibility at little to no cost.&lt;/p&gt;

&lt;p&gt;This article lists five open source ecommerce solutions and tools you can use for your ecommerce stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Should You Use Open Source Tools?&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Customizability and Extensibility
&lt;/h3&gt;

&lt;p&gt;Open source tools help developers customize their technology stack according to the specific needs of their online stores. The source code of the application can be tweaked accordingly without having to request access or licensing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Active Collaboration and Community
&lt;/h3&gt;

&lt;p&gt;Collaboration forms the basis of open source platforms. Open source projects allow anyone to access their codebase, enabling developers to review, suggest improvements, and share technological knowledge.&lt;/p&gt;

&lt;p&gt;This collective effort results in the production of a better software. The software or tool is heavily tested by a large community, and bugs are reported and resolved quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Latest Tool Updates
&lt;/h3&gt;

&lt;p&gt;One perk of open source tools is the consistent release of new features and updates. As the community helps the development of the tool, features, and bug fixes are handled quickly and released more often.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 &lt;strong&gt;Open Source Tools for Ecommerce Stacks&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The tools discussed below are open source solutions for ecommerce websites.&lt;/p&gt;

&lt;h3&gt;
  
  
  Medusa
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffswpsuorl3d1qgghhr7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffswpsuorl3d1qgghhr7r.png" alt="Medusa"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; is an open source ecommerce platform built for online businesses. It is written in JavaScript and Typescript, and runs on a node environment.&lt;/p&gt;

&lt;p&gt;Businesses looking for a flexible and extensible platform can use Medusa. Its architecture and abstraction layers allows customizing any component of the platform. You can also integrate any third-party tools, from payment providers to CMS platforms.&lt;/p&gt;

&lt;p&gt;Medusa's ecommerce and developer features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It allows users to manage products with customization settings and sort them into collections.&lt;/li&gt;
&lt;li&gt;It provides essential ecommerce features related to shopping cart, checkout, order management, and more.&lt;/li&gt;
&lt;li&gt;Users can configure and manage multiple regions and currencies on their ecommerce websites. They can specify prices for a product for each currency or region the website supports.&lt;/li&gt;
&lt;li&gt;Medusa’s storefront has Next.js and Gatsby storefronts, which customers use to browse products and make purchases.&lt;/li&gt;
&lt;li&gt;Users can set up multi-currency payment options for different regions and pricing for individual products using the admin dashboard.&lt;/li&gt;
&lt;li&gt;Medusa’s community plugin, &lt;a href="https://github.com/adrien2p/medusa-extender" rel="noopener noreferrer"&gt;Medusa Extender&lt;/a&gt;, provides multivendor support and full customization capabilities to create a custom ecommerce website.&lt;/li&gt;
&lt;li&gt;Its integration architecture that allows web developer to integrate any third-party services into the whole system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, Medusa allows full customization and can be fully modified to suit your business needs. Medusa has an active developer community on &lt;a href="https://discord.com/invite/medusajs" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; that can answer your questions and help resolve issues with setup.&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;quick start&lt;/a&gt; guide to create your first Medusa server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue Storefront
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fketo7mivjv2srumawodj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fketo7mivjv2srumawodj.png" alt="Vue StoreFront"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.vuestorefront.io/v2/getting-started/introduction.html" rel="noopener noreferrer"&gt;Vue Storefront&lt;/a&gt; is an open source tool built on JavaScript. It offers Frontend as a Service (FaaS), and runs on the Vue.js framework. It is simple to use and provides developers with the tools to create attractive and user-friendly ecommerce websites.&lt;/p&gt;

&lt;p&gt;Vue Storefront’s features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate the storefront into any backend ecommerce platform, including Medusa.&lt;/li&gt;
&lt;li&gt;Fully-optimized themes and components for a fast experience and for mobile devices.&lt;/li&gt;
&lt;li&gt;Components are available to be used in any Vue.js-based project using the Storefront UI library.&lt;/li&gt;
&lt;li&gt;Design and components are built to be reusable and customized to provide an on-brand experience.&lt;/li&gt;
&lt;li&gt;Can also be integrated to headless CMS platforms like Contentful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vue Storefront has a community that consists of in-house developers and users on &lt;a href="https://discord.vuestorefront.io/" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; and &lt;a href="https://github.com/vuestorefront/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strapi
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxnyxhcgjvg2qs3tudbh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxnyxhcgjvg2qs3tudbh.png" alt="Strapi"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.strapi.io/developer-docs/latest/getting-started/introduction.html" rel="noopener noreferrer"&gt;Strapi&lt;/a&gt; is an open source, Node.js based headless CMS framework. Strapi can be integrated into any platform, including ecommerce platforms. Its extensive API layer is used to create customized content and data structures associated with ecommerce.&lt;/p&gt;

&lt;p&gt;Strapi's features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully customizable content models with types like relations, media and files, rich text, and much more.&lt;/li&gt;
&lt;li&gt;A content management system and a content editor that allows users to create and edit content.&lt;/li&gt;
&lt;li&gt;Strapi grants users security features like access control, authentication, and authorization.&lt;/li&gt;
&lt;li&gt;The admin panel and the APIs are fully customizable and extensible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Strapi has an active open source community on &lt;a href="https://github.com/strapi" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Reading Suggestion: &lt;a href="https://medusajs.com/blog/ecommerce-storefront-medusa-strapi-remix/" rel="noopener noreferrer"&gt;Create an Ecommerce Storefront with Medusa, Strapi, and Remix&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Odoo:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ut88lop63cng9crle3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ut88lop63cng9crle3g.png" alt="Odoo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.odoo.com/page/docs" rel="noopener noreferrer"&gt;Odoo&lt;/a&gt; is an open source tool businesses use to manage their ecommerce websites. It offers a large suit of tools to manage products, customer relations, a drag-and-drop website builder, and more.&lt;/p&gt;

&lt;p&gt;Odoo’s features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The dashboard helps users monitor analytics, and communicate with customers through SMS, push notifications, and emails.&lt;/li&gt;
&lt;li&gt;The shopping experience is optimized with wish lists, a search bar, a customer portal, and a straightforward checkout process.&lt;/li&gt;
&lt;li&gt;Odoo simplifies payment and shipping by connecting to services such as Paypal and DHL. Users can also create and add payment methods of their choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Find Odoo on &lt;a href="https://github.com/odoo/odoo" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; to learn more about its amazing features and its community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Builder.io
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m9ytiqx99mcfmmfbk93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m9ytiqx99mcfmmfbk93.png" alt="Builder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.builder.io/c/docs/developers" rel="noopener noreferrer"&gt;Builder.io&lt;/a&gt; is an open-source tool used to create ecommerce websites using drag-and-drop features. It allows third-party integrations and custom themes, widgets, and plugins to design online shops.&lt;/p&gt;

&lt;p&gt;Some of Builder.io’s features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It provides a drag-and-drop visual design system that can be used to build websites, including ecommerce storefronts. This also means that it requires minimal-to-non technical knowledge.&lt;/li&gt;
&lt;li&gt;It can be integrated with other apps and systems using its plug-and-play architecture.&lt;/li&gt;
&lt;li&gt;Builder.io includes essential content management features such as scheduling content, reports, and analytics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out &lt;a href="https://github.com/builderio/builder" rel="noopener noreferrer"&gt;Builder.io’s GitHub repository&lt;/a&gt; for more details about its features and community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Meilisearch
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fum1mnevjoy0b1vojtr9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fum1mnevjoy0b1vojtr9q.png" alt="MeiliSearch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.meilisearch.com/learn/getting_started/quick_start.html" rel="noopener noreferrer"&gt;MeiliSearch&lt;/a&gt; is a full-text search engine that can be integrated into any website, including ecommerce websites. It can be integrated into any platform using its countless number of SDKs.&lt;/p&gt;

&lt;p&gt;MeiliSearch's features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User-friendly features such as auto-completion of text, search suggestions, and multi-language support.&lt;/li&gt;
&lt;li&gt;Provides libraries to easily integrate into popular frontend frameworks such as Gatsby.&lt;/li&gt;
&lt;li&gt;It’s fast, promising results in less than 50ms even for large number of data. This is essential for a great user experience.&lt;/li&gt;
&lt;li&gt;Data can be stored in any schema, which gives developers more flexibility when integrating it into existing systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out MeiliSearch's &lt;a href="https://github.com/meilisearch/meilisearch" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; repository to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Open source tools are an essential part of ecommerce stacks. These make ecommerce websites fully optimal and provide the best experience for business owners and clients.&lt;/p&gt;

&lt;p&gt;To fully utilize open source tools in your ecommerce stack, you should ensure that your ecommerce platform can be integrated with these tools without the need for hacky workarounds.&lt;/p&gt;

&lt;p&gt;Composable ecommerce platforms like Medusa provide a flexible and abstract architecture with a plug-and-play integration system. Developers and businesses using Medusa have full freedom and choosing what tools they use within their tech stack.&lt;/p&gt;

&lt;p&gt;You can get started with Medusa by following the &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;quickstart guide&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should you have any issues or questions related to Medusa, then feel free to reach out to the Medusa team via &lt;a href="https://discord.gg/F87eGuwkTp" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>opensource</category>
      <category>ecommerce</category>
      <category>medusajs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Getting Started with DevRel🥑🥑🥑</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Mon, 02 Jan 2023 08:46:40 +0000</pubDate>
      <link>https://dev.to/rejoice/getting-started-with-devrel-22n3</link>
      <guid>https://dev.to/rejoice/getting-started-with-devrel-22n3</guid>
      <description>&lt;p&gt;&lt;em&gt;New to DevRel? Here’s a quick start!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Before DevRel became a prominent tech stack, developers shared their knowledge with each other by attending tech conferences and sharing resources and articles virtually. This was the root of sharing information about new products, and the evolution of DevRel saw a massive change in this trajectory.&lt;br&gt;
This article talks about how developer relations started, where it is now, and how to be an outstanding DevRel engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Overview&lt;/li&gt;
&lt;li&gt;Where was DevRel?&lt;/li&gt;
&lt;li&gt;Where is DevRel now?&lt;/li&gt;
&lt;li&gt;Why is DevRel Unique?&lt;/li&gt;
&lt;li&gt;Common misconceptions about DevRel&lt;/li&gt;
&lt;li&gt;How to set yourself up for success as a DevRel engineer&lt;/li&gt;
&lt;li&gt;DevRel, not DevSell&lt;/li&gt;
&lt;li&gt;DevRel as an introvert&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where was DevRel?
&lt;/h2&gt;

&lt;p&gt;The early days of DevRel, spanning five years back, saw a rise in the interest in sharing common knowledge about technology, web development, the building of new products, and the processes it took (failures and successes alike). Tech conferences existed before the concept of DevRel. These gatherings were organized by developers and attended by like-minded enthusiasts. The reason for these meetings was to showcase finished products and their building processes. Education was the major priority of these meetings. &lt;/p&gt;

&lt;h2&gt;
  
  
  Where is DevRel Now?
&lt;/h2&gt;

&lt;p&gt;DevRel has evolved from small-sized meetups to a culture of its own. Companies employ quick-witted individuals who work single-handedly, or in teams to expand the reach of the company and their products, either by speaking at events or using social media to create awareness or sharing written and video content to establish the features and unique perks of their products.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is DevRel Unique?
&lt;/h2&gt;

&lt;p&gt;DevRel is multi-modal. This means that you can create podcasts, speak at tech conferences, write, produce audio and visual content, and also organize workshops. It is essential to get some experience before doing the actual job to offer actual value to the recipients or the developer community.&lt;br&gt;
It is also important to find your strengths and maximize your talents to suit the requirements of a DevRel engineer.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Common Misconceptions About DevRel
&lt;/h2&gt;

&lt;p&gt;There are common misconceptions about DevRel. This is due to the different roles a DevRel engineer can take on due to the course of their job, and the objectives of their respective companies. These discussed below are the most common errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevRel is not Marketing
&lt;/h3&gt;

&lt;p&gt;Every company has a sales/marketing department, and the DevRel team and engineers are not part of it. Although the DevRel engineer speaks to people about the company and shares information about their products to its users and the developer community, this is not to increase sales and revenue.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevRel is for Extroverts
&lt;/h3&gt;

&lt;p&gt;The recent tide of tech events and conferences has seen DevRel advocates speak at in-person events and global conferences. This also means they have to talk to new people, answer questions and keep listeners hooked during these events. &lt;br&gt;
All of these can be overwhelming for an introverted individual. This can be remedied by choosing a niche that is most comforting, and one you can offer the most value with, whether it be writing articles and blog posts, or speaking. &lt;br&gt;
This way, you can feel fulfilled with your work rate, and offer optimal value to the developer community. &lt;/p&gt;

&lt;h3&gt;
  
  
  DevRel is Solely for Developers
&lt;/h3&gt;

&lt;p&gt;As the name rightly suggests, DevRel, short for Developer Relations encompasses software development and related stacks. This is a controversial topic. One does not need to be a developer or have programming experience before venturing out to be a developer advocate. However, developers can transition to DevRel. &lt;br&gt;
It is necessary, however, to have some basic programming knowledge, and fully understand the company's objectives and how its products work. The developer advocate is the company to the user, and vice versa. &lt;br&gt;
To bridge the gap caused by no-coding experience, it is necessary to study and understand basic programming concepts.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevRel is all about Speaking at Events
&lt;/h3&gt;

&lt;p&gt;DevRel can take on many forms, so it does not revolve around speaking alone. Being active on social media and sharing written content also counts, as well as podcasts counts as developer advocacy. &lt;/p&gt;

&lt;h2&gt;
  
  
  How Can You Set Yourself Up For Success as a DevRel Engineer?
&lt;/h2&gt;

&lt;p&gt;In order to be an outstanding developer advocate, there are necessary steps to be taken. These are discussed below, in no particular order. &lt;/p&gt;

&lt;h3&gt;
  
  
  Be Open-Minded
&lt;/h3&gt;

&lt;p&gt;It is important to offer value without trying to create an impression on your audience. Do not treat people differently because of their social status, CEOs, senior developer advocates, and recruiters amongst many others. DevRel is about creating long-lasting relationships, not transactional partnerships. When this is done, it is easier to make conversations flow better and share knowledge. &lt;/p&gt;

&lt;h3&gt;
  
  
  Have Prior Experience
&lt;/h3&gt;

&lt;p&gt;To be a successful DevRel engineer, one must have prior experience in the field before venturing in. This can be speaking, writing, creating content, or being excellent at videography.&lt;br&gt;
Attending events you can when possible is a great way to acquire knowledge and get to know more about the company. It will also help clarify their needs, objectives, and how well you can fit in the situation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimize Your Natural Talents
&lt;/h3&gt;

&lt;p&gt;It is an added advantage to choose career paths that align with your natural gifts. This helps you flow naturally with your job, and scale the ranks easily.&lt;br&gt;
People will see this, companies too, and hire you based on that. For example, if you have good speaking skills, and invest in yourself by improving your performance, they will naturally support your cause to see how best it can improve the company's worth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approaching People
&lt;/h3&gt;

&lt;p&gt;The approachability of people says a lot about them, and the rate at which they would receive your product. This helps you plot your DevRel chart, and provides a way to map out better strategies to reach out to them better and get a positive response.&lt;/p&gt;

&lt;h3&gt;
  
  
  Networking
&lt;/h3&gt;

&lt;p&gt;Instead of networking at tech events and conferences solely for the sake of building transactional relationships, try investing in them. This helps to build long-lasting relationships and makes it easier to talk about the products.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication
&lt;/h3&gt;

&lt;p&gt;Good DevRel engineers have a knack for passing down knowledge to their prospective audience. Written text and articles in plain language is a good way to do this, as it makes the intention of the Devrel engineer clear and understandable. When speaking at events, it is also important to get rid of high-sounding language, and only use tech jargon when necessary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Social Media Presence
&lt;/h3&gt;

&lt;p&gt;Because DevRel is multi-modal, it is easy to dabble into all its available areas. Some social media platforms cater to these particular modes as well. Twitter for short texts, announcements, and article promotions, YouTube and TikTok for video content, podcasts, and the rest. &lt;/p&gt;

&lt;h3&gt;
  
  
  Navigating Between Engineering Roles and DevRel
&lt;/h3&gt;

&lt;p&gt;Some engineers enjoy sharing their day-to-day lives. This is an amazing avenue to start a Devrel career, because consistently sharing valuable content garners the right audience. &lt;/p&gt;

&lt;h3&gt;
  
  
  Measure Your Growth
&lt;/h3&gt;

&lt;p&gt;When you measure your growth, it helps identify the lapses, and how they can be fixed. This is an efficient way to boost productivity and check the effectiveness of the DevRel tactics in use.&lt;/p&gt;

&lt;h2&gt;
  
  
  DevRel, Not DevSell
&lt;/h2&gt;

&lt;p&gt;The focus is developer relations, not sales, marketing, and advertisement. &lt;br&gt;
DevRel is shaky these days because companies like to "measure" DevRel. DevRel should not be measured because it is similar to angel investing. It is very high-risk but very highly rewarding. Placing fixed expectations on DevRel with a fixed structure makes it be done incorrectly. DevRel should be done internally, by letting the builders and developers know the result of doing long-term DevRel, not just trying to sell your product at all times.&lt;/p&gt;

&lt;h2&gt;
  
  
  DevRel as an Introvert...
&lt;/h2&gt;

&lt;p&gt;Developer Relations is all about meeting people, and it involves empathy. It will be draining, all of that talking and speaking. The key to success is to think of it as sowing seeds that you want to watch grow. You'd want to grow and water it properly so it grows into a healthy plant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In order to be an excellent developer advocate, you must have the basics in mind. DevRel does not exist to market personal brands, they are to inform the developer community about the value of the said product, how best it can be used to solve problems, and how applicable it is in real-life situations.&lt;br&gt;
Goodluck on your DevRel journey!&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>My Experience at the Empower Her X Non-Tech In Tech Bootcamp</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Thu, 01 Sep 2022 12:53:01 +0000</pubDate>
      <link>https://dev.to/rejoice/my-experience-at-the-empower-her-x-non-tech-in-tech-bootcamp-3ph7</link>
      <guid>https://dev.to/rejoice/my-experience-at-the-empower-her-x-non-tech-in-tech-bootcamp-3ph7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a documentation of my overall learning progress at the boot camp organized by &lt;a href="https://empowerher.community/"&gt;Empower her community&lt;/a&gt; and &lt;a href="https://twitter.com/Nontech_it"&gt;Non-Tech In Tech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I enrolled in the technical writing track because I wanted to learn how to document my experiences as a software developer. &lt;br&gt;
The boot camp lasted for six weeks, with a curriculum made available for each participant to use and adjust their schedules for classes held twice per week. &lt;/p&gt;

&lt;h2&gt;
  
  
  Week One: Introduction to Technical Writing
&lt;/h2&gt;

&lt;p&gt;For the first week, we were taught the basics of technical writing.&lt;br&gt;
 Our tutors, &lt;a href="https://twitter.com/Bennykillua"&gt;Benny Ifeanyi Iheagwara&lt;/a&gt; and &lt;a href="https://twitter.com/KwennB"&gt;Blessing Ene Anyebe&lt;/a&gt; introduced themselves, told us about their job roles and experience as technical writers, and interacted with us at the beginning of the first class, by asking a few of us about our present occupations, and our knowledge of technical writing.&lt;br&gt;&lt;br&gt;
The lessons of the first week were eventful, filled with starter resources and beginner guides. I documented the first week of my learning in this &lt;a href="https://dev.to/rejoice/technical-writing-101-getting-started-with-technical-writing-407a"&gt;blog post&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Our first task for the week was to create a blog and submit the links that prioritized technical content like Hashnode, dev.to, Medium and Hackernoon. Those that had existing blog accounts on publications we were asked to submit the links in a Google Docs spreadsheet provided. &lt;/p&gt;

&lt;h2&gt;
  
  
  Week Two: Tools In Technical Writing
&lt;/h2&gt;

&lt;p&gt;For the second week of learning, we were taught about the tools every technical writer needed to know how to use. Another tutor, &lt;a href="https://twitter.com/Timonwa_"&gt;Timonwa Pelumi Akintokun&lt;/a&gt;, was invited to assist with this. &lt;/p&gt;

&lt;p&gt;The tools we were assigned to comprehend were split into the following; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Research tools &lt;/li&gt;
&lt;li&gt;Note-taking tools &lt;/li&gt;
&lt;li&gt;Authoring tools &lt;/li&gt;
&lt;li&gt;Media tools &lt;/li&gt;
&lt;li&gt;Editing tools &lt;/li&gt;
&lt;li&gt;Publishing tools &lt;/li&gt;
&lt;li&gt;Documentation tools &lt;/li&gt;
&lt;li&gt;Collaborative and management tools &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An interesting concept that came up was Docs-as-Code: an approach that makes technical writers implement their knowledge on software development on documentation.&lt;br&gt;
 It can be used through the following means: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version control using Git &lt;/li&gt;
&lt;li&gt;Automated testing, building, and delivery &lt;/li&gt;
&lt;li&gt;Issue tracking, and
&lt;/li&gt;
&lt;li&gt;The use of plain-text markup, a popular example of which is Markdown, is used to edit our articles and make them readable for the audience. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The task for this week was to write an article on any topic of our choice and submit it in the Google Docs link in the spreadsheet provided for submission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Week Three: Article Reviews
&lt;/h2&gt;

&lt;p&gt;The third week of learning was dedicated to the meticulous examination of our articles by the tutors.&lt;br&gt;
 It was educative as it felt like working on a real-world project and getting feedback from employers. &lt;br&gt;
The key points I got from the reviews were: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use of outline while writing &lt;/li&gt;
&lt;li&gt;The essential use of Writing and Editing tools such as Grammarly, Hemmingway Editor and Markdown to edit the articles and access their readability. &lt;/li&gt;
&lt;li&gt;Choosing an eye-catching topic, and writing an interesting introduction and conclusion. &lt;/li&gt;
&lt;li&gt;Use pictures that were relevant to the article, giving credit to their owners, and referring to used sources. &lt;/li&gt;
&lt;li&gt;Avoiding plagiarism, including previously written work. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end of the review, we were asked to publish the first articles on our blogs. &lt;/p&gt;

&lt;h2&gt;
  
  
  Week Four: SEO Optimization in Technical Writing
&lt;/h2&gt;

&lt;p&gt;SEO Optimization is simply making your article more accessible to search engines. &lt;br&gt;
We were taught how to structure our articles to reach the target audience by fixing the following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoiding plagiarism.&lt;/li&gt;
&lt;li&gt;Cross-posting across different blogs or publications using canonical links.&lt;/li&gt;
&lt;li&gt;Giving the articles well-structured titles.&lt;/li&gt;
&lt;li&gt;Using headings appropriately.&lt;/li&gt;
&lt;li&gt;Using the right keywords, internal and external links.&lt;/li&gt;
&lt;li&gt;Ensuring accessibility and responsiveness across devices. 
At the end of this week’s lesson, we were tasked with our second article, to write and publish them on our blogs. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Week Five
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Part 1: API Documentation
&lt;/h3&gt;

&lt;p&gt;The fifth week of learning came with a different ball game: API Documentation. &lt;/p&gt;

&lt;p&gt;At the end of the lesson, my initial misconceptions about the concept were cleared. &lt;br&gt;
I had thought APIs were written by technical writers, but I learned that the job of the technical writer was simply to document the use of the API which was developed by the programmer, and this requires knowledge of programming languages.&lt;/p&gt;

&lt;p&gt;This class was handled by &lt;a href="https://twitter.com/wonexo"&gt;Light Segun&lt;/a&gt;, who did a wonderful job of explaining the concepts in simple terms. &lt;/p&gt;

&lt;h3&gt;
  
  
  Part 2: Open-Source Contribution as a Technical Writer
&lt;/h3&gt;

&lt;p&gt;It is a common misconception that only programmers can contribute to open-source projects, so this class was well received as it taught the intricacies of technical writing and its place in the open-source community. &lt;br&gt;
We learned the basics of open-source contribution, projects to contribute to, free and paid open-source programs, and how to curate our technical writing portfolios using our contributions. &lt;/p&gt;

&lt;h4&gt;
  
  
  Additional lessons we received were on the following:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;How to get paid as freelancing technical writers &lt;/li&gt;
&lt;li&gt;How to curate our portfolios and resumes to aid job search &lt;/li&gt;
&lt;li&gt;Technical writing communities to join &lt;/li&gt;
&lt;li&gt;How to manage productivity and deal with writer’s block. &lt;/li&gt;
&lt;li&gt;Acing technical interviews. &lt;/li&gt;
&lt;li&gt;Webinars and Q/A sessions with professionals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Week Six: Conclusion
&lt;/h2&gt;

&lt;p&gt;For our last week in the boot camp, we were tasked with writing our third and final article, which would double as our project. &lt;br&gt;
I choose to write about my experience during the boot camp because I wanted it to be of help to individuals with an interest in technical writing.  &lt;/p&gt;

&lt;h3&gt;
  
  
  My Learning Trajectory
&lt;/h3&gt;

&lt;p&gt;At the start of the boot camp, I had limited knowledge as to what was expected knowledge of a technical writer. &lt;/p&gt;

&lt;p&gt;However, the lessons and tasks emboldened me to move on and try out new things. &lt;br&gt;
The following are my achievements: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I published my first article on &lt;a href="https://www.dev.to"&gt;dev.to&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;I learned how to share my progress on social media platforms, especially on &lt;a href="https://www.twitter.com/IsaacRejoice2"&gt;Twitter&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;My first in-depth tutorial, and &lt;a href="https://dev.to/rejoice/a-beginners-guide-to-installing-linux-os-using-virtualbox-on-a-windows-machine-3ge4"&gt;second article&lt;/a&gt; got featured on &lt;a href="https://twitter.com/ThePracticalDev"&gt; Dev Community&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;I started my open-source journey by becoming a contributing author at &lt;a href="https://www.freecodecamp.org/"&gt;FreeCodeCamp&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;This &lt;a href="https://github.com/Bennykillua/Getting-started-in-Technical-Writing"&gt;GitHub repository&lt;/a&gt; contains the resource compilation used for the boot camp.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap Up
&lt;/h2&gt;

&lt;p&gt;Technical writing is an amazing career path, and this boot camp solidified my interest in making something worthwhile out of it.&lt;br&gt;
I look forward to reaching new heights with my newly acquired skills!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>technicalwriting</category>
      <category>motivation</category>
      <category>community</category>
    </item>
    <item>
      <title>A Beginner's Guide to Installing Linux OS Using VirtualBox on a Windows Machine.</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Fri, 19 Aug 2022 14:44:26 +0000</pubDate>
      <link>https://dev.to/rejoice/a-beginners-guide-to-installing-linux-os-using-virtualbox-on-a-windows-machine-3ge4</link>
      <guid>https://dev.to/rejoice/a-beginners-guide-to-installing-linux-os-using-virtualbox-on-a-windows-machine-3ge4</guid>
      <description>&lt;p&gt;On a Windows machine, there is only one operating system (OS) available, which is the Windows OS, pre-installed and used by default, which powers the computer. An operating system is software that allows one to use a computer and maintain its efficiency by handling all of its hardware resources.&lt;br&gt;
 It is also the link between the hardware and software components of a device. If this balance does not exist, a desktop and laptop can simply not function. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckrnlyxu15o8atg44lr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckrnlyxu15o8atg44lr0.png" alt="Windows Logo"&gt;&lt;/a&gt;&lt;br&gt;
Because many computer users are very familiar with Windows, and may not like to switch completely over to Linux OS, by installing it directly and configuring it to become the main OS on their computer systems, it is advisable to host the OS on a virtual machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxcl4dg15zy85kpe6hp4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxcl4dg15zy85kpe6hp4.png" alt="Linux Logo"&gt;&lt;/a&gt;&lt;br&gt;
The virtual machine used in this article is VirtualBox, third-party software that enables virtualization. It looks like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvk4aln5md4hugxehzqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvk4aln5md4hugxehzqc.png" alt="VirtualBox Logo"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You might wonder, how is this possible, running two operating systems on one computer system? &lt;br&gt;
This is possible by the presence of the Hyper-V on the windows OS, known properly as Windows Server Virtualization. It is a hypervisor that permits virtual machines to run and allows for the virtualization of &lt;code&gt;x86-64 servers&lt;/code&gt; on the computer.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0cyuv8ed3zfjjgxbteg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0cyuv8ed3zfjjgxbteg.png" alt="VirtualBox x86-64 servers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of this article, you should be able to install Linux OS on your desktop or laptop using VirtualBox without having to get rid of the default OS. &lt;/p&gt;

&lt;p&gt;To start, simply search for VirtualBox on any search engine of your choice, go to the official website and download the &lt;code&gt;.exe&lt;/code&gt; file. There are several options, for different OS, click on that of Windows, or simply follow this &lt;a href="https://www.virtualbox.org/wiki/Downloads" rel="noopener noreferrer"&gt;link&lt;/a&gt; to download it.  &lt;/p&gt;

&lt;p&gt;The Windows version is represented as &lt;code&gt;x86/amd64&lt;/code&gt;. Click on that to download the file. There are checksums to indicate that what you are downloading on your machine is secure, and the same as what the developers have created. It is displayed as &lt;code&gt;SHA256 checksums&lt;/code&gt; and &lt;code&gt;MD5 checksums&lt;/code&gt; on the page. &lt;/p&gt;

&lt;p&gt;When that is done, it will show up on your device as Oracle VM VirtualBox Manager. Install it and follow the instructions given.&lt;/p&gt;

&lt;p&gt;After this, it will request that the file is allowed to make changes to the computer. You are to click &lt;strong&gt;Next&lt;/strong&gt; and move on to the next step. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugdnnrt25dl69pketlww.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugdnnrt25dl69pketlww.jpg" alt="VB Changes"&gt;&lt;/a&gt;&lt;br&gt;
VirtualBox is wonderful in many ways in the sense that it is an emulator. It mimics the environment and makes it into a desktop. &lt;/p&gt;

&lt;p&gt;Give the virtual machine whatever name you have in mind, something descriptive, create a folder for the machine that you can easily have access to located on the RAM of your local machine, and choose &lt;code&gt;Ubuntu (64-bit)&lt;/code&gt; as the type of Operating System (OS) amongst the several options present.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxcf72kkel3a8pt4ssk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxcf72kkel3a8pt4ssk4.png" alt="VirtualBox Name and Operating System"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap8oz9kj4huwt9abo6e1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap8oz9kj4huwt9abo6e1.png" alt="VirtualBox"&gt;&lt;/a&gt;&lt;br&gt;
NB: While downloading Ubuntu, setting up the LTS version on your local machine is important, as in &lt;code&gt;Ubuntu 20.04 LTS&lt;/code&gt;. This will ensure that you receive any updates that are given. It normally comes within a six months interval. Any other applications without the LTS will become outdated with time. &lt;/p&gt;

&lt;p&gt;Next, you will be asked to select the amount of memory space that is to be allocated to the virtual machine. Although the recommended memory is 1024 MB, you can decide to add more, depending on the overall space on your local machine. Take care not to allocate too much, as this will affect the local machine's performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kefynpvdg39li2jhyax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kefynpvdg39li2jhyax.png" alt="VB Storage Space"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that, you will be asked to choose a hard disk. Choose the second option, which is to &lt;strong&gt;Create a virtual hard disk now&lt;/strong&gt;. The recommended memory is 10.00GB. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap2hqnxcuxnp72lraad4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap2hqnxcuxnp72lraad4.png" alt="VB Storage Space 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the type of hard disk, choose the first; &lt;strong&gt;VDI (VirtualBox Disk Image)&lt;/strong&gt;, although VirtualBox supports all three options available. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4i9m6n6f1dk9pznmqf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4i9m6n6f1dk9pznmqf1.png" alt="VB Storage Space 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the storage on the hard disk, it should be &lt;strong&gt;dynamically allocated&lt;/strong&gt;. A fixed size may take longer to create and cause storage issues later on, especially if the local machine does not have much space. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lwanlx16em14ln72vzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lwanlx16em14ln72vzx.png" alt="VB Storage Space 7"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;File location and size should be left at the recommended portion of 10.00GB, out of the 2TB option displayed on the screen. &lt;/p&gt;

&lt;p&gt;You can then &lt;strong&gt;Create&lt;/strong&gt;. This should be the result after giving the server a name of your choice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltt5r4fhogsb7wgn4fnx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltt5r4fhogsb7wgn4fnx.png" alt="VirtualBox Linux Server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will then show the virtual computer that has been created on the left side of the panel, under the section called &lt;strong&gt;Tools&lt;/strong&gt;. It is powered off on default. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Focwsh9zi1kivmdk5uhkm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Focwsh9zi1kivmdk5uhkm.png" alt="VirtualBox Setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating a virtual computer that will enable the use of another OS on the local machine, it is important to download software that will enable its use. &lt;strong&gt;Vagrant&lt;/strong&gt; will be used to illustrate that in this article. Search for &lt;a href="https://www.vagrantup.com" rel="noopener noreferrer"&gt;Vagrant by HashiCorp&lt;/a&gt; to download and install. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94ojeucopqyi2kau72fe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94ojeucopqyi2kau72fe.png" alt="Vagrant Setup"&gt;&lt;/a&gt;&lt;br&gt;
A folder is to be created in the file explorer of your local machine for its running. It can be named after Vagrant.&lt;/p&gt;

&lt;p&gt;It is important to note that Vagrant does not have an interface, so everything will be done in your local machine's &lt;strong&gt;command line terminal (CMD)&lt;/strong&gt; using GitBash. &lt;br&gt;
There is no need to install this, it is already present in your Windows OS.&lt;br&gt;&lt;br&gt;
This is what the command prompt looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjf2lx1rrg5ppmlgjrsfq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjf2lx1rrg5ppmlgjrsfq.png" alt="Command Line Interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An ISO image is to be downloaded and installed, like a normal installation, for virtual machines. This is because while working with servers (physical metal devices), a CD/ DVD, flash, or external hard drive is needed to do the installation.&lt;br&gt;
 All of this is done differently on Vagrant. Here, there are already default boxes created, that are hosted online. When they are downloaded, depending on your choice, Vagrant automatically sets them up.  &lt;/p&gt;

&lt;p&gt;The following are commands that can be typed in the terminal to create a new folder and procure the boxes. &lt;br&gt;
&lt;em&gt;NB: Do not forget to press the &lt;strong&gt;Enter&lt;/strong&gt; key after each command is written so it can be initialized.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; cd vagrant 

ls 

cd boxes 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Vagrant init&lt;/strong&gt; is the command used to create the file used to proceed with the configuration.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Vagrant init ubuntu/focal 64&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 is used to install &lt;code&gt;focal 64&lt;/code&gt;, a box needed to initialize the function of Ubuntu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vagrant up&lt;/strong&gt; is used to examine the configuration files and check if you have the necessary boxes needed. If it is not present, it automatically downloads it.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Vagrant up&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;After all of this is done, there might be a virtualization error when trying to run the Ubuntu server. This can be corrected by enabling virtualization technology on your local machine.  &lt;/p&gt;

&lt;p&gt;To achieve this, the computer has to be switched off and turned back on again.  &lt;/p&gt;

&lt;p&gt;Once it's turned on, click on F10 immediately, more than once, if necessary, to enter the system &lt;strong&gt;BIOS&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Navigate the environment with your arrow keys, as the mouse may, or may not work, depending on the model of your machine. &lt;br&gt;
Enable the Virtualization setup. It is located under System Security. It is disabled by default.&lt;/p&gt;

&lt;p&gt;Save your changes and exit the BIOS environment. The machine will switch on by itself after this is done.  The Ubuntu server will be able to function properly after this.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vagrant ssh&lt;/strong&gt; is used as the third and last command, but it is written in the Vagrant terminal this time, as the virtualization has been enabled.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Vagrant ssh&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;It is used to be able to access the machine.  &lt;/p&gt;

&lt;p&gt;There is a &lt;code&gt;welcome&lt;/code&gt; message that shows up on the terminal after this command is run. &lt;br&gt;
An accompanying message might follow which asks for &lt;code&gt;log in&lt;/code&gt; and &lt;code&gt;password&lt;/code&gt;. Input &lt;code&gt;vagrant&lt;/code&gt; for both fields.&lt;/p&gt;

&lt;p&gt;After following all of these steps, you have successfully installed Linux OS on your local machine using VirtualBox as a virtualization compartment. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap Up
&lt;/h2&gt;

&lt;p&gt;We have gone through the process of installing Linux OS using a virtual machine, without getting rid of the default OS. &lt;br&gt;
Download and install VirtualBox first, then Vagrant, and enable virtualization in your system BIOS to ensure it reaches its full potential. &lt;br&gt;
Linux OS is a powerful operating system, and it's an amazing feat to comfortably access two operating systems on one machine. &lt;br&gt;
I hope this article has been helpful!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>tutorial</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>How to Create a Landing Page with HTML and CSS</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Thu, 18 Aug 2022 16:11:00 +0000</pubDate>
      <link>https://dev.to/rejoice/how-to-create-a-landing-page-with-html-and-css-bkl</link>
      <guid>https://dev.to/rejoice/how-to-create-a-landing-page-with-html-and-css-bkl</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Landing pages can be found on every website on the internet. Learn how to make one for your website with this article!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a website is opened on the internet, the first interface shown is the landing page. It contains vital information the user needs and links to access other pages owned by the website. &lt;br&gt;
Developers aim to create a website that induces visitor use and attracts organic growth. This can be achieved by building a unique, landing page optimized for a good user experience.  &lt;/p&gt;

&lt;p&gt;At the end of this article, you should be able to create a landing page with &lt;code&gt;HTML&lt;/code&gt; and &lt;code&gt;CSS&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;The text editor used for illustration in this article is VS Code.  Other text editors and IDEs perform similar tasks. Examples include Bracket, Notepad ++, Sublime Text, and others. This is what a VS Code interface looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8dvjnfpjws12gvibo8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8dvjnfpjws12gvibo8u.png" alt="VS Code Interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An excellent landing page houses the information needed by the internet user to determine if it suits their needs or not. The items that can be found on a landing page include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;the logo &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;title &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the navigation bar that bears links to access other embedded pages &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;forms to be filled by the site visitors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and CTAs (call-to-action).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is an example that explains the illustration given above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3659jg0wns1dkk3c5fm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3659jg0wns1dkk3c5fm.png" alt="Website Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the Need to Start with HTML?&lt;/strong&gt; &lt;br&gt;
HTML, Hypertext Markup Language, is the bedrock of any website, and so it will provide the website structure. This &lt;a href="https://www.w3schools.com/html/" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; will help ease the difficulties of comprehending it.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with HTML.
&lt;/h2&gt;

&lt;p&gt;Start by creating an HTML file. This is done by creating a new folder in your text editor and giving it a name of your choice.  After that, you are to choose the programming language of your choice. &lt;br&gt;
Type in HTML and Click &lt;code&gt;Enter&lt;/code&gt;. This file is to be saved with a name ending with &lt;code&gt;.html&lt;/code&gt;. &lt;code&gt;index.html&lt;/code&gt; was used here.&lt;/p&gt;

&lt;p&gt;Remember to save your file, by using &lt;code&gt;ctrl+S&lt;/code&gt; as your work progress may disappear if you don't.&lt;br&gt;
The HTML file should contain all of the raw text needed for the website.&lt;/p&gt;

&lt;p&gt;We will start with the heading. It is the first item the website visitor will get to see, so it should be conspicuous, eye-catchy, and easy to understand.  This can be the name of your business, the title of a paper, or the overall leading text of the information you wish to divulge. &lt;/p&gt;

&lt;p&gt;On the text editor, the HTML elements are represented with tags, and the texts are embedded within them. A glance at this &lt;a href="https://www.w3schools.com/html/html_elements.asp" rel="noopener noreferrer"&gt;guide&lt;/a&gt; from w3 schools will provide more insight on tags in HTML and their uses.&lt;/p&gt;

&lt;p&gt;Headings are written in the text editor using the &lt;code&gt;&amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;&lt;/code&gt; tags. &lt;br&gt;
This is an example from the sample website illustrating how tags can be used. &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 &amp;lt;h1&amp;gt;Welcome to The Little Bookshop!&amp;lt;/h1&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A quick trick to getting the layout for the document is typing &lt;code&gt;HTML: 5&lt;/code&gt;. It supplies the layout of the webpage as shown below. &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
        &amp;lt;!DOCTYPE html&amp;gt;
        &amp;lt;html lang="en"&amp;gt;
        &amp;lt;head&amp;gt;
            &amp;lt;meta charset="UTF-8"&amp;gt;
            &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&amp;gt;
            &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
            &amp;lt;link rel="stylesheet" href="style.css"&amp;gt;
            &amp;lt;title&amp;gt;The Little Bookshop!&amp;lt;/title&amp;gt;
       &amp;lt;/head&amp;gt;
        &amp;lt;body&amp;gt;
        &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The main text is written in the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The next step to add is the navigation bar. It holds other links that lead the site visitors to other pages hosted on the website. This is included in the body of the page.  A navigation bar should look like this in the HTML document.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

    &amp;lt;div class="nav"&amp;gt;
                &amp;lt;ul&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="#home"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="#about us"&amp;gt;About Us&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="shop"&amp;gt;Shop&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="cart"&amp;gt;Cart&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="my account"&amp;gt;My Account&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="book reviews"&amp;gt;Book Reviews&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="contact us"&amp;gt;Contact Us&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/div&amp;gt;       


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The body of the website comes next. This is where the main information to be shared with the site visitors is put in. The illustration used in this article is the website of a bookshop, and so the text will come from there.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


                &amp;lt;h1&amp;gt;Welcome to The Little Bookshop!&amp;lt;/h1&amp;gt;
                &amp;lt;img src="shelves.jpg" alt="Bookstore"&amp;gt; 
                &amp;lt;h2&amp;gt;
                    &amp;lt;p&amp;gt;The Little Bookshop believes in the power of books, and the ability they have to transport 
                        you to places that seem impossible to reach.
                        &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
                        Although we have store outlets located in
                         different surbubs of the country, we pay special attention to our online community that do 
                         not have access to these spaces. 
                         &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
                         Take your time and scour our shelves, you'll be sure 
                         to find something that is to your liking. 
                         &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
                         We are deeply interested in the welfare of our 
                         customers, and their literary tastes, which is why we stock up books of all genres and
                          authors at affordable prices for you!
                    &amp;lt;/p&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;For your website, you can add other perks you feel are necessary, like a flash sales tag, discount, or announcement. In the website used, for example, a feedback form was included for the bookshop visitors to drop their comments and feedback, like this.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

    &amp;lt;div class="container"&amp;gt;
                          &amp;lt;h3&amp;gt;Feedback Form&amp;lt;/h3&amp;gt;

                            &amp;lt;form action&amp;gt;

                              &amp;lt;label for="fname"&amp;gt;First Name&amp;lt;/label&amp;gt;
                              &amp;lt;input type="text" id="fname" name="firstname" placeholder="First Name"&amp;gt;

                              &amp;lt;label for="lname"&amp;gt;Last Name&amp;lt;/label&amp;gt;
                              &amp;lt;input type="text" id="lname" name="lastname" placeholder="Last Name"&amp;gt;

                              &amp;lt;label for="country"&amp;gt;Country&amp;lt;/label&amp;gt;
                              &amp;lt;select id="country" name="country"&amp;gt;
                                &amp;lt;option value="nigeria"&amp;gt;Nigeria&amp;lt;/option&amp;gt;
                                &amp;lt;option value="ghana"&amp;gt;Ghana&amp;lt;/option&amp;gt;
                                &amp;lt;option value="rwanda"&amp;gt;Rwanda&amp;lt;/option&amp;gt;
                              &amp;lt;/select&amp;gt;

                              &amp;lt;label for="subject"&amp;gt;Say Something&amp;lt;/label&amp;gt;
                              &amp;lt;textarea id="subject" name="subject" placeholder="say something" style="height:200px"&amp;gt;&amp;lt;/textarea&amp;gt;

                              &amp;lt;input type="submit" value="Submit"&amp;gt;

                            &amp;lt;/form&amp;gt;
                          &amp;lt;/div&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;At the end of writing your HTML page, the text should be similar to this.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
        &amp;lt;!DOCTYPE html&amp;gt;
        &amp;lt;html lang="en"&amp;gt;
        &amp;lt;head&amp;gt;
            &amp;lt;meta charset="UTF-8"&amp;gt;
            &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&amp;gt;
            &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
            &amp;lt;link rel="stylesheet" href="style.css"&amp;gt;
            &amp;lt;title&amp;gt;The Little Bookshop&amp;lt;/title&amp;gt;
        &amp;lt;/head&amp;gt;
        &amp;lt;body&amp;gt;
            &amp;lt;div class="nav"&amp;gt;
                &amp;lt;ul&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="#home"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="#about us"&amp;gt;About Us&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="shop"&amp;gt;Shop&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="cart"&amp;gt;Cart&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="my account"&amp;gt;My Account&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="book reviews"&amp;gt;Book Reviews&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;&amp;lt;a href="contact us"&amp;gt;Contact Us&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div&amp;gt;
                &amp;lt;h1&amp;gt;Welcome to The Little Bookshop!&amp;lt;/h1&amp;gt;
                &amp;lt;img src="shelves.jpg" alt="Bookstore"&amp;gt; 
                &amp;lt;h2&amp;gt;
                    &amp;lt;p&amp;gt;The Little Bookshop believes in the power of books, and the ability they have to transport 
                        you to places that seem impossible to reach.
                        &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
                        Although we have store outlets located in
                         different surbubs of the country, we pay special attention to our online community that do 
                         not have access to these spaces. 
                         &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
                         Take your time and scour our shelves, you'll be sure 
                         to find something that is to your liking. 
                         &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
                         We are deeply interested in the welfare of our 
                         customers, and their literary tastes, which is why we stock up books of all genres and
                          authors at affordable prices for you!
                    &amp;lt;/p&amp;gt;

                          &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 
                          &amp;lt;div class="container"&amp;gt;
                          &amp;lt;h3&amp;gt;Feedback Form&amp;lt;/h3&amp;gt;

                            &amp;lt;form action&amp;gt;

                              &amp;lt;label for="fname"&amp;gt;First Name&amp;lt;/label&amp;gt;
                              &amp;lt;input type="text" id="fname" name="firstname" placeholder="First Name"&amp;gt;

                              &amp;lt;label for="lname"&amp;gt;Last Name&amp;lt;/label&amp;gt;
                              &amp;lt;input type="text" id="lname" name="lastname" placeholder="Last Name"&amp;gt;

                              &amp;lt;label for="country"&amp;gt;Country&amp;lt;/label&amp;gt;
                              &amp;lt;select id="country" name="country"&amp;gt;
                                &amp;lt;option value="nigeria"&amp;gt;Nigeria&amp;lt;/option&amp;gt;
                                &amp;lt;option value="ghana"&amp;gt;Ghana&amp;lt;/option&amp;gt;
                                &amp;lt;option value="rwanda"&amp;gt;Rwanda&amp;lt;/option&amp;gt;
                              &amp;lt;/select&amp;gt;

                              &amp;lt;label for="subject"&amp;gt;Say Something&amp;lt;/label&amp;gt;
                              &amp;lt;textarea id="subject" name="subject" placeholder="say something" style="height:200px"&amp;gt;&amp;lt;/textarea&amp;gt;

                              &amp;lt;input type="submit" value="Submit"&amp;gt;

                            &amp;lt;/form&amp;gt;
                          &amp;lt;/div&amp;gt;
                &amp;lt;/h2&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/body&amp;gt;
        &amp;lt;/html&amp;gt;
    &amp;lt;/head&amp;gt;
&amp;lt;/html&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsqjvft7zvn5f5hjs7x9a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsqjvft7zvn5f5hjs7x9a.png" alt="HTML text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Styling With CSS
&lt;/h2&gt;

&lt;p&gt;Since HTML provides the basic structure of the website, it is imperative to add some style to the page to make it unique and outstanding. &lt;br&gt;
The website used here is that of an online bookshop, so we would style it to look like one.&lt;/p&gt;

&lt;p&gt;There are different ways of styling a website: inline CSS, internal CSS, and external CSS. &lt;/p&gt;

&lt;p&gt;External CSS has proven over time to be the most efficient as it makes your source code more organized and prevents the site from lagging. As the name implies, it is written on a separate interface from the HTML file, saved as &lt;code&gt;style.css&lt;/code&gt;, and contains all the styling for the website. It is added to the HTML file with a link.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;link rel="stylesheet" href="style.css"&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It is put in between the &lt;code&gt;&amp;lt;meta name&amp;gt;&lt;/code&gt; and the &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; of the document.&lt;br&gt;
The page is styled in segments, from the navigation bar down to the feedback form. Some of the stylings affects the whole document, such as the addition of background color or image.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

background-image {
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This was used in the styling of the sample website, although in a peculiar fashion.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2eqlzc8lw5n99e2bi8ez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2eqlzc8lw5n99e2bi8ez.png" alt="vscode html document"&gt;&lt;/a&gt; In this case, it was embedded in the HTML document.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 &amp;lt;h1&amp;gt;Welcome to The Little Bookshop!&amp;lt;/h1&amp;gt;
                &amp;lt;img src="shelves.jpg" alt="Bookstore"&amp;gt; 
                &amp;lt;h2&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This led to the landing page having the image of a bookstore as the background image. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvwk6vq4x1mkqkfg5yxx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvwk6vq4x1mkqkfg5yxx.png" alt="background image"&gt;&lt;/a&gt;&lt;br&gt;
Other images can be used to replace this too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Styling the navbar;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 /* Add a black background colour to the navigation bar */
ul {
    list-style-type:none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}
li {display: inline;
    float: right;

}
a {display: block;
    padding: 8px;
    color: white;
    font-family: Helvetica;
    text-align: center;
    text-decoration: none;
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Styling the image;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

img{
    width:1250px; height:450px; object-fit:cover;
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Styling the text and body of the landing page;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


h1, h3 {
    font-family:'Times New Roman';
    font-size: 72px;
    font-weight: bolder;
    text-align: center;
    color: darkred;
}
h2 {
    text-align: center;
    font-size: medium;
    font-weight: 100;
    font-size: 20px;
}

p {
    text-align: left;
    font-family: Helvetica;

}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Styling the feedback form;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


/* Style inputs with type="text", select elements and textareas */
input[type=text], select, textarea {
    width: 100%; /* Full width */
    padding: 12px; /* Some padding */ 
    border: 1px solid #ccc; /* Black border */
    border-bottom: solid black 2px;
    border-radius: 4px; /* Rounded borders */
    box-sizing: border-box; /* Make sure that padding and width stays in place */
    margin-top: 6px; /* Add a top margin */
    margin-bottom: 16px; /* Bottom margin */
    resize: vertical /* Allow the user to vertically resize the textarea (not horizontally) */
  }

  /* Style the submit button with a specific background color etc */
  input[type=submit] {
    background-color: #04AA6D;
    color: white;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }

  /* When moving the mouse over the submit button, add a black color */
  input[type=submit]:hover {
    background-color: #010e01;
  }

  /* Add a background color and some padding around the form */
  .container {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The results of the feedback form:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5uusoq0cp9hfivmb9lf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5uusoq0cp9hfivmb9lf.png" alt="feedback form"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foicogfze6txiup8j1chj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foicogfze6txiup8j1chj.png" alt="feedback form"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;css.style&lt;/code&gt; text should be similar to this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 /* Add a black background colour to the navigation bar */


h1, h3 {
    font-family:'Times New Roman';
    font-size: 72px;
    font-weight: bolder;
    text-align: center;
    color: darkred;
}
h2 {
    text-align: center;
    font-size: medium;
    font-weight: 100;
    font-size: 20px;
}

p {
    text-align: left;
    font-family: Helvetica;

}

img{
    width:1250px; height:450px; object-fit:cover;
}
ul {
    list-style-type:none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}
li {display: inline;
    float: right;

}
a {display: block;
    padding: 8px;
    color: white;
    font-family: Helvetica;
    text-align: center;
    text-decoration: none;
}

/* Style inputs with type="text", select elements and textareas */
input[type=text], select, textarea {
    width: 100%; /* Full width */
    padding: 12px; /* Some padding */ 
    border: 1px solid #ccc; /* Black border */
    border-bottom: solid black 2px;
    border-radius: 4px; /* Rounded borders */
    box-sizing: border-box; /* Make sure that padding and width stays in place */
    margin-top: 6px; /* Add a top margin */
    margin-bottom: 16px; /* Bottom margin */
    resize: vertical /* Allow the user to vertically resize the textarea (not horizontally) */
  }

  /* Style the submit button with a specific background color etc */
  input[type=submit] {
    background-color: #04AA6D;
    color: white;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }

  /* When moving the mouse over the submit button, add a black color */
  input[type=submit]:hover {
    background-color: #010e01;
  }

  /* Add a background color and some padding around the form */
  .container {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;





&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Building a landing page for a website can prove to be tricky if you have no coding experience, so be sure to follow the instructions closely.&lt;br&gt;
Start out by creating a draft of what you want with the basic structure of the page using HTMl, then style with CSS. &lt;br&gt;
The page can be tweaked to suit your needs and preferences, by pulling ideas from the various resources on the internet. &lt;br&gt;
&lt;em&gt;Build something amazing!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>How to Use Semantic Tags in HTML.</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Tue, 16 Aug 2022 11:44:23 +0000</pubDate>
      <link>https://dev.to/rejoice/how-to-use-semantic-tags-in-html-24m1</link>
      <guid>https://dev.to/rejoice/how-to-use-semantic-tags-in-html-24m1</guid>
      <description>&lt;p&gt;Hypertext Markup Language, HTML, is the markup text or code used to create a web page and everything else it contains. A web page is usually structured to have sections patterned after its purpose. The structure of a form is an example; it has different fields, which the user has to fill in, like name, age, and gender. &lt;/p&gt;

&lt;p&gt;However, HTML does more than create the basic structure of the web page. It is also responsible for carrying the style sheet and interactive sessions of the web page, which are carried by CSS and JavaScript respectively. Depending on the choice of the user, the styling of the web page can be done within the HTML page or added as an external stylesheet with a link, often seen as &lt;code&gt;style.css&lt;/code&gt;. The same goes for the &lt;code&gt;.js&lt;/code&gt; file that is used to make the web page interactive. &lt;/p&gt;

&lt;p&gt;The focus of this article is to show how to use semantic tags. Semantic tags are those elements that can be understood, both by the browser and the developer and have an apparent relationship with the content embedded in them.  &lt;/p&gt;

&lt;p&gt;There are non-semantic tags s well, but this does not mean that they are irrelevant. They are used quite often; they are just not recognized by the browser. Examples of these non-semantic elements include div and span. &lt;/p&gt;

&lt;p&gt;It is important to note that the tags discussed in this article are supported by HTML 5. In no particular order, listed below are commonly used semantic tags in HTML and their descriptions.  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/code&gt;&lt;br&gt;&lt;br&gt;
This tag defines the type of document it is. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eCEP6NDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbnmdmvwicbyqz1kuobd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eCEP6NDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbnmdmvwicbyqz1kuobd.png" alt="&amp;lt;!DOCTYPE&amp;gt;" width="880" height="468"&gt;&lt;/a&gt; &lt;br&gt;
&lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; &lt;br&gt;
This shows the root of an HTML document. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qpTlTban--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aj0w8saev4lkqxm2dy1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qpTlTban--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aj0w8saev4lkqxm2dy1s.png" alt="&amp;lt;HTML&amp;gt;" width="880" height="468"&gt;&lt;/a&gt; &lt;br&gt;
&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; &lt;br&gt;
This signifies the presence of a link. &lt;br&gt;
&lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; &lt;br&gt;
This shows the area where the body of the document is to be written. &lt;br&gt;
&lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to document information that will not be with the main content on the page. &lt;br&gt;
&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to embed images in the web page. &lt;br&gt;
&lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to embed audio files in the web page. &lt;br&gt;
&lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;&lt;br&gt;
This indicates a line break and shows a visible gap on the web page. &lt;br&gt;
&lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to create HTML forms on the web page. It allows for accessibility by the user. &lt;br&gt;
&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;&lt;br&gt;
These are used to indicate headings. The lower they go, the smaller the letter casing becomes. &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; is the highest, &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt; is the lowest. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; &lt;br&gt;
This indicates a paragraph. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;source&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;src&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to identify and define media elements from media resources. Examples of the media elements are &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to style the document, either by using inline styling / inline CSS or internal CSS. External CSS is not included in this as it is linked to the page with a &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; &lt;br&gt;
This indicates the title of the document. It is found at the top of the web page. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt; &lt;br&gt;
This is used to indicate that the embedded text is important. It makes it bold. &lt;/p&gt;

&lt;p&gt;These are common semantic elements used in HTML. There are many more that are used to create unique web pages. A quick search for those will reveal several tags and their uses.  &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Best SEO Practices for NodeJS Developers.</title>
      <dc:creator>iribama</dc:creator>
      <pubDate>Mon, 08 Aug 2022 13:45:48 +0000</pubDate>
      <link>https://dev.to/rejoice/best-seo-practices-for-nodejs-developers-4el</link>
      <guid>https://dev.to/rejoice/best-seo-practices-for-nodejs-developers-4el</guid>
      <description>&lt;p&gt;Using Search Engine Optimization (SEO) is the process of making your website more user-friendly for internet users and search engines to identify it as a reliable source of information. Understanding how best to align your page using SEO is an essential skill for any developer because the better your website is, the higher it will be ranked by search engines, making it easy for users to access it.&lt;br&gt;&lt;br&gt;
 NodeJS is a unique framework with a runtime environment that lets the developer choose what they want to work on, using JavaScript. It functions on the V8 JavaScript engine powered by Chrome. which is commonly known for use in building servers—for back-end development, although it can be used for front-end development, by using it to build web applications. &lt;br&gt;
Because web applications are scrutinized by bots on search engines to check their authenticity and credibility for use, developers must learn how to optimize their applications accordingly to suit the specifications required of them. &lt;br&gt;
Organic traffic is what every website owner strives for, and the NodeJS developer partly has to ensure that this happens, despite the role they play in building a real-time project that is to be put out for use. An excellent example of this is the first page of Google searches. Most users never really go past the first page of their search.&lt;br&gt;&lt;br&gt;
A NodeJS developer should be able to make their user-friendly websites fully optimized for search engines and appear on search engine result pages.&lt;/p&gt;

&lt;p&gt;These discussed below can help with that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your website has to be responsive on mobile devices.
&lt;/h2&gt;

&lt;p&gt;Most of the time, information accessed from the internet is done through the use of mobile devices- phones, tablets, and iPads. The search engine knows, and so it automatically takes off web pages and sites that do not suit the standard of its SERPs, also known as Search Engine Result Pages. Asides from that, optimal user experience is important; as it also counts for on-page SEO, which describes how well the content the website provides satisfies the user and matches the keywords that led to its use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Managing your robots.txt files well.
&lt;/h2&gt;

&lt;p&gt;Search engines often check to see how well your website can appear, with and without JavaScript. In past times, JS was used to hide content that was not meant for user consumption on the website, because search engines could not execute it. Recently, some search engines have begun to make allowances for content generated with JavaScript.&lt;br&gt;&lt;br&gt;
In more simple terms, it works like this: robots.txt files which are placed at the root of a website control what the search engine crawlers can detect and index from the website, URLs especially. If the robots.txt file is disallowed, the crawlers will not be able to pick anything. If otherwise, the crawler or bot has access to NodeJS files, which means it can be picked up by the crawler of the search engine. &lt;/p&gt;

&lt;h2&gt;
  
  
  Write your code simply.
&lt;/h2&gt;

&lt;p&gt;Although developers can build mind-bending projects, it is important to write code that caters to the users’ needs when it is run by the server. An amazing UX experience is sure to build more site traffic, which is the prime objective of SEO optimization.  &lt;/p&gt;

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