<?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: Tchisom17</title>
    <description>The latest articles on DEV Community by Tchisom17 (@tchisom17).</description>
    <link>https://dev.to/tchisom17</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%2F1056710%2F18f703e1-d12f-4c64-8c9d-365798adc78a.jpeg</url>
      <title>DEV Community: Tchisom17</title>
      <link>https://dev.to/tchisom17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tchisom17"/>
    <language>en</language>
    <item>
      <title>Understanding Ether Transfers in Solidity: send, transfer, and call</title>
      <dc:creator>Tchisom17</dc:creator>
      <pubDate>Fri, 30 Aug 2024 00:54:37 +0000</pubDate>
      <link>https://dev.to/tchisom17/understanding-ether-transfers-in-solidity-send-transfer-and-call-3k67</link>
      <guid>https://dev.to/tchisom17/understanding-ether-transfers-in-solidity-send-transfer-and-call-3k67</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hello! I am back with an article on Ether transfers in solidity. Being a developer of Ethereum smart contracts, knowing how to handle the movement of Ether in a safe and optimized way should be a must-have. We are going to talk about what Ether transfers are, some use cases of them and a little comparison between them.&lt;/p&gt;

&lt;p&gt;Let's start with the basics. If you are already familiar with the basics you can skip to 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Basics of Ether Transfers In Solidity&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What is ether?&lt;/strong&gt; Ether(ETH) is Ethereum's native cryptocurrency. It is used to pay transaction fees.&lt;br&gt;
There might be plenty of cases when you would want to transfer Ether within or between smart contracts. For instance, you might want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Pay for a service within a dApp.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give rewards to users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execute a funding round in a decentralized finance (DeFi) project.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For each case, the best way of sending Ether will affect how your contract works and how secure it is.&lt;/p&gt;

&lt;p&gt;So far, Solidity provides three ways to transfer Ether: &lt;strong&gt;&lt;em&gt;send&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;transfer&lt;/em&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;em&gt;call&lt;/em&gt;&lt;/strong&gt;. Since they could seem exchangeable, their differences may have huge consequences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. send:&lt;/strong&gt; The &lt;strong&gt;&lt;em&gt;send&lt;/em&gt;&lt;/strong&gt; function is one of the most straightforward ways to transfer Ether. As such, it is quite easy to use and works fine to complete the job. It does have a couple of limitations: for example, it only forwards 2300 gas, which is enough to cover simple operations but does not suffice for more complex tasks. It also returns &lt;em&gt;false&lt;/em&gt; in case of failure, which would mean you'd have to handle errors yourself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bool success = recipient.send(1 ether);
if (!success) {
    // Handle failure, such as logging or triggering an alert
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use Cases:&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;send&lt;/em&gt;&lt;/strong&gt; might be appropriate when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You’re sending Ether to an external account and want to avoid gas-related failures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You want to ensure that your contract continues executing even if the transfer fails.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, due to its limitations, it is less used today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. transfer:&lt;/strong&gt; This was in the past the easiest and safest way of transferring Ethers before Solidity 0.6.0 and used built-in safety. Like the &lt;strong&gt;&lt;em&gt;send&lt;/em&gt;&lt;/strong&gt; function, this also has a gas limit of 2300 but instead of returning false in case of failure, this throws an error and reverts the transaction.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function transfer(address payable _to) public payable {
     _to.transfer(msg.value); // Automatically reverts on failure
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; It is ideal for simple contracts where you need to ensure the transaction either fully succeeds or fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. call:&lt;/strong&gt; This offers the most control and flexibility compared to the above two because it allows a user to set the amount of gas to be used. In case the amount of gas is not set, it forwards all the remaining gas to the transaction. It is the recommended method of transferring Ether from Solidity 0.6.0 onward and returns a boolean which would require you to handle errors manually. Another caveat to take note of is that it is more prone to reentrancy attacks compared to the other two functions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NOTE: A reentrancy attack happens when the contract allows a function to be called again before the previous call finishes.&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;function sendViaCall(address payable _to) public payable {
    (bool sent, bytes memory data) = _to.call{value: msg.value}(""); // Returns false on failure
    require(sent, "Failed to send Ether");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; Best for complex interactions where you need to control the gas or when dealing with contracts that require more gas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Comparison and Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; &lt;em&gt;transfer&lt;/em&gt; and &lt;em&gt;send&lt;/em&gt; are safer by default due to their limited gas stipend. &lt;em&gt;call&lt;/em&gt; requires careful use to prevent vulnerabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gas Consumption:&lt;/strong&gt; Use &lt;em&gt;send&lt;/em&gt; or &lt;em&gt;transfer&lt;/em&gt; for simpler tasks; reserve &lt;em&gt;call&lt;/em&gt; for more complex scenarios.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failure Handling:&lt;/strong&gt; Use &lt;em&gt;transfer&lt;/em&gt; for guaranteed atomicity. Opt for &lt;em&gt;send&lt;/em&gt; or &lt;em&gt;call&lt;/em&gt; if you need more control over failure handling.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Your smart contract in Solidity possesses one of several methods for Ether transfer, according to your needs. You may be using transfer for simplicity and security, or you use call for more power and flexibility. Send allows you to handle transfer failures manually. Keep the trade-offs among these three transfer methods in mind when you build secure and efficient Ethereum smart contracts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start today by reviewing your past contracts, and double-check that you are using the best transfer method for a given scenario. Sometimes those small changes can end up making so much more of a difference in how secure and robust your dApps are.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you found this post helpful, please like and comment below. Your feedback is valuable and informs others in the community!&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solidity</category>
    </item>
    <item>
      <title>Understanding ERC-20: The Standard for Fungible Tokens on Ethereum</title>
      <dc:creator>Tchisom17</dc:creator>
      <pubDate>Tue, 27 Aug 2024 10:41:33 +0000</pubDate>
      <link>https://dev.to/tchisom17/understanding-erc-20-the-standard-for-fungible-tokens-on-ethereum-4jao</link>
      <guid>https://dev.to/tchisom17/understanding-erc-20-the-standard-for-fungible-tokens-on-ethereum-4jao</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the consistently advancing universe of blockchain technology, Ethereum has arisen as one of the most distinguished platforms for decentralized applications (dApps) and smart contracts. A vital part of Ethereum's environment is the idea of tokens — digital assets that address different utilities or values inside a blockchain network.&lt;/p&gt;

&lt;p&gt;Among the numerous symbolic guidelines accessible on Ethereum, ERC-20 has turned into the most broadly embraced and perceived norm for making fungible tokens. These tokens are indistinguishable in value and can be handily traded, making them the foundation of many decentralized applications and monetary systems. In this article, we'll dive into what ERC-20 is, the reason it makes a difference, and how you can make your own ERC-20 token on Ethereum.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ERC-20?
&lt;/h2&gt;

&lt;p&gt;ERC-20, short for Ethereum Request for Comment 20, is a specialized standard utilized for making and giving smart contracts on the Ethereum blockchain. These smart contracts are liable for overseeing tokens — digital assets representing anything from currency to loyalty points.&lt;/p&gt;

&lt;p&gt;Fabian Vogelsteller proposed ERC-20 in November 2015 and it immediately turned into the norm for making fungible tokens on Ethereum. The standard blueprints are a bunch of rules and functions that a token contract should execute, guaranteeing that all ERC-20 tokens act typically and can be integrated with different dApps, wallets, and exchanges.&lt;/p&gt;

&lt;p&gt;The purpose of ERC-20 is to create a standard set of rules for creating tokens. This standard ensures that any ERC-20 token can easily interface with other smart contracts, DAPPs and decentralized exchanges on the Ethereum blockchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of ERC-20
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fungibility&lt;/strong&gt;&lt;br&gt;
The fungibility of ERC-20 tokens is one notable feature. Then there are fungible tokens, which have no unique properties and characteristics meaning one token is the same as any other. This makes ERC-20 tokens best suited for currency-like assets where every unit should be equal and exchangeable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;&lt;br&gt;
This is a capability that the creators had in mind when they were creating ERC-20s, hoping for these tokens to be interoperable with as long of a list of dApps and wallets and exchanges as possible. These functions allow for this interoperability, and they define the standard that ERC-20 tokens are meant to meet. As a result, any ERC-20 tokens compatible app can easily add new Tokens without major development effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standardized Functions&lt;/strong&gt;&lt;br&gt;
Each contract included in the ERC-20 standard specifies a core set of functions that all contracts are required to provide. Such functions are basic functions such as transferring tokens and querying balances and limiting how many times third parties can be allowed to utilize the tokens owned by the particular owner. Such standardization facilitates the influx of new tokens and interoperability among these new token services and the rest of the Ethereum ecosystem.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Core Functions of ERC-20
&lt;/h2&gt;

&lt;p&gt;The ERC-20 standard outlines six core elements without which no token contract will be created. These functions make up the structure upon which the ERC-20 tokens rest regarding operation and integration with contracts and applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;totalSupply():&lt;/em&gt;&lt;/strong&gt; It indicates the number of tokens that have been created and are stored in the blockchain. If a smart contract implements this function, it declares how many tokens, in total, can be issued for free or sold to investors.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /**
     * @dev Returns the value of tokens in existence.
     */

    function totalSupply() external view returns (uint256);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;balanceOf(address _owner)&lt;/em&gt;:&lt;/strong&gt; It explains how many tokens a given address is holding. It is a function that is used in checking the balances of any owned Ethereum tokens.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;transfer(address _to, uint256 _value)&lt;/em&gt;:&lt;/strong&gt; This function enables the owner of the token to send a given amount of the token to another address. It is the simplest of all possible functions which allows transferring the tokens to and excluding the knees of patients.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;approve(address _spender, uint256 _value)&lt;/em&gt;:&lt;/strong&gt; This function enables a token owner to approve a third party (the spender) for the withdrawal of a certain number of tokens from their account which includes but is not limited to the user’s account. This often happens within the decentralized finance applications where a smart contract has to move the tokens on the user’s behalf.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;allowance(address _owner, address _spender)&lt;/em&gt;:&lt;/strong&gt; This method allows a spender receiving the amount to know the total amount yet to be withdrawn from the owner's account. It works hand in hand with the approve() method in giving authorizations for tokes to be used.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;transferFrom(address _from, address _to, uint256 _value)&lt;/em&gt;:&lt;/strong&gt; This function allows a third party (the spender) to transfer tokens on behalf of the token owner subject to the condition that there is reasonable allowance. This feature is critical in the functioning of smart contacts to enable them to integrate token management within intricate operations.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Creating an ERC-20 Token
&lt;/h2&gt;

&lt;p&gt;Creation of an ERC-20 token involves writing a smart contract for the token in the Ethereum language Solidity. Below, we’ll walk through the basic steps to create a simple ERC-20 token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting Up the Development Environment&lt;/strong&gt;&lt;br&gt;
Before writing the contract, you will be required to prepare a development environment. Some known tools are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remix IDE:&lt;/strong&gt; An Integrated Development Environment which runs in a web browser to create, analyze, and launch the development of periodic smart contracts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Truffle Suite:&lt;/strong&gt; Ethereum's Development Framework comes with an array of tools that allow for the development, testing, and deployment of decentralized applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hardhat:&lt;/strong&gt; More control over network simulation and contract tests is accessible with this adaptable development environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Writing the Solidity Contract&lt;/strong&gt;&lt;br&gt;
Now that the environment is set up, it’s time to write the code for your ERC-20 token. Below gives the reader a simple understanding of an ERC-20 contract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}

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

&lt;/div&gt;



&lt;p&gt;In this contract:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ERC20("MyToken", "MTK"):&lt;/strong&gt; This parameter includes the name of the token and its symbol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;_mint(msg.sender, 1000000 * 10 ** decimals()):&lt;/strong&gt; The address that is registered as the creator of the address should receive exactly 1,000,000 tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deploying the Contract on Ethereum&lt;/strong&gt;&lt;br&gt;
Having prepared and written the said contract, it’s possible to deploy it into the Ethereum Blockchain. This can be done with the use of tools like Remix, Truffle, or Hardhat. After which, the token will be operational on the Ethereum platform and it will be available for trading or using it within dApps.&lt;/p&gt;

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

&lt;p&gt;The adoption of the ERC-20 standard by developers when creating a fungible token has indisputably marked the legitimation of this crucial subsystem of Ethereum. The stability, popularity and cross-functional nature of the token is a worthwhile factor for developers more so those who are looking to launch new tokens. During this phase, whether it is a new cryptocurrency, a DeFi platform, or utility tokens for your dApp there is a great emphasis on the loss-free compliance and the use of the ERC-20 standard.&lt;/p&gt;

&lt;p&gt;The guide in several other newspapers, the Safe ERC20 defined as: this new implementation will want to easily create a more secure fast page application using the guidelines oriented to the core features of the ERC20 safe multi-coin.&lt;/p&gt;

&lt;p&gt;So if you are eager to create your own ERC-20 token or you want to expand your knowledge of Ethereum development, go straight to Solidity and try creating your tokens. Please share your ideas, questions, or comments in the comments section below. Happy coding!&lt;/p&gt;

</description>
      <category>erc20</category>
      <category>blockchain</category>
      <category>webdev</category>
      <category>ethereum</category>
    </item>
    <item>
      <title>How To Deploy An Azure Function App Using Visual Studio</title>
      <dc:creator>Tchisom17</dc:creator>
      <pubDate>Sat, 10 Jun 2023 15:45:03 +0000</pubDate>
      <link>https://dev.to/tchisom17/how-to-deploy-an-azure-function-app-using-visual-studio-3n8o</link>
      <guid>https://dev.to/tchisom17/how-to-deploy-an-azure-function-app-using-visual-studio-3n8o</guid>
      <description>&lt;p&gt;Hello there! I will be walking you through how to create an Azure Function App and publish to Azure portal using Visual Studio.&lt;/p&gt;

&lt;p&gt;Also, we would be creating and deploying a calculator app. So, sit back, follow through and enjoy the learning journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Visual Studio Community with .Net Development workload (Click &lt;a href="https://visualstudio.microsoft.com/vs/community/"&gt;here&lt;/a&gt; to download).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://portal.azure.com/#home"&gt;Azure&lt;/a&gt; Account (Click &lt;a href="https://azure.microsoft.com/en-us/free/"&gt;here&lt;/a&gt; to register if you don't have an account or proceed to sign in).&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; The interface of my Visual Studio might be different from yours as I am on a Mac, but the processes are almost the same with only slight difference.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you have all the requirements, let's proceed to creating our function app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Log in to Azure Portal, Search for "Function App" in the search box and click on "Create".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GctUzsZX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xpd6529juxbap4h5hj6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GctUzsZX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xpd6529juxbap4h5hj6b.png" alt="Function App interface" width="800" height="342"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 2a:&lt;/strong&gt; Fill out the necessary fields.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RCvCwnC9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tbyi3saee8x4uvjw3gl8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RCvCwnC9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tbyi3saee8x4uvjw3gl8.png" alt="Setting up Function App" width="800" height="404"&gt;&lt;/a&gt;&lt;strong&gt;Note:&lt;/strong&gt; Steps 2a and 2b can be completed in one step. I divided mine into two in order to capture the whole fields.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For &lt;em&gt;&lt;strong&gt;resource group&lt;/strong&gt;&lt;/em&gt;, You can create a new resource group by clicking the "&lt;strong&gt;create new&lt;/strong&gt;" or you can choose a previously created resource group. I called mine "&lt;strong&gt;my resources&lt;/strong&gt;". You can choose to call yours whatever name you desire.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"&lt;strong&gt;Function App Name&lt;/strong&gt;" is also random. I chose "&lt;strong&gt;Blog-Calculator-App&lt;/strong&gt;".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select "&lt;strong&gt;Code&lt;/strong&gt;" as against "&lt;strong&gt;Container Image&lt;/strong&gt;".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select "&lt;strong&gt;.Net&lt;/strong&gt;" as your runtime stack. It will automatically choose the &lt;strong&gt;version&lt;/strong&gt; and &lt;strong&gt;region&lt;/strong&gt; for you.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2b:&lt;/strong&gt; Choose your preferred operating system and use the default hosting option. Then click on "&lt;strong&gt;Review + Create&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--issGtGvc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1lnqg6aoo7ot8lo2114.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--issGtGvc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1lnqg6aoo7ot8lo2114.png" alt="Function App Interface" width="800" height="423"&gt;&lt;/a&gt;At this point, you may want to grab a pop corn while it finishes deploying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3a:&lt;/strong&gt; Open Visual Studio and click on "&lt;strong&gt;New&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XrPjl7tX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o7tgysoop61tmnsckvz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XrPjl7tX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o7tgysoop61tmnsckvz0.png" alt="Visual Studio Interface" width="800" height="490"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 3b:&lt;/strong&gt; Click on "&lt;strong&gt;General&lt;/strong&gt;" under "&lt;strong&gt;Cloud&lt;/strong&gt;". Then select "&lt;strong&gt;Azure Functions&lt;/strong&gt;" and click on "&lt;strong&gt;Continue&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bp51US8g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9st7wb4iqt62ershd4r8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bp51US8g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9st7wb4iqt62ershd4r8.png" alt="Choosing Azure Functions in Visual Studio" width="800" height="567"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 3c:&lt;/strong&gt; On the side side pane, select "&lt;strong&gt;Http trigger&lt;/strong&gt;", give your function app a name and click on "&lt;strong&gt;Continue&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fKeu3jni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyfefunvja7fzcmyaifn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fKeu3jni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyfefunvja7fzcmyaifn.png" alt="Giving your function app a name and choosing http trigger" width="800" height="563"&gt;&lt;/a&gt;The reason for choosing "&lt;strong&gt;Http trigger&lt;/strong&gt;" is so that we could test it over the web or browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3d:&lt;/strong&gt; Go ahead and click on "&lt;strong&gt;Create&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uBTTNkdm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jk0gpr1yp1gnfqe3e6gk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uBTTNkdm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jk0gpr1yp1gnfqe3e6gk.png" alt="Creating a function app" width="800" height="561"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 4:&lt;/strong&gt; Replace the codes from line 13 to line 34 with this:&lt;br&gt;
public static class Sum&lt;br&gt;
    {&lt;br&gt;
        [FunctionName("Sum")]&lt;br&gt;
        public static async Task Run(&lt;br&gt;
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,&lt;br&gt;
            ILogger log)&lt;br&gt;
        {&lt;br&gt;
            log.LogInformation("C# HTTP trigger function processed a request.");&lt;br&gt;
            int x = int.Parse(req.Query["x"]);&lt;br&gt;
            int y = int.Parse(req.Query["y"]);&lt;br&gt;
            int result = x + y;&lt;br&gt;
            return new OkObjectResult(result);&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UZfXUqwc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cnit1qgzvuye2wa5lcav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UZfXUqwc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cnit1qgzvuye2wa5lcav.png" alt="Calculator App Interface" width="800" height="385"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 5:&lt;/strong&gt; Click on "&lt;strong&gt;Build&lt;/strong&gt;" at the top of your IDE. Then click  on "&lt;strong&gt;Build Solution&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H9crtJWd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wvhxogrkft3n2l87f94a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H9crtJWd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wvhxogrkft3n2l87f94a.png" alt="Building your app" width="800" height="410"&gt;&lt;/a&gt;Ensure your application builds successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Click on "Build" and then "Publish to Azure". Then Proceed to sign in with your Azure credentials.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e_oJBqR9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0895rlz7zn8f83qava95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e_oJBqR9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0895rlz7zn8f83qava95.png" alt="Publishing to Azure from Visual Studio" width="800" height="411"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 7:&lt;/strong&gt; You would see a list of your resource groups and services. Choose the one that matches the Function App name you created on Azure Portal. Then click on "&lt;strong&gt;Publish&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MNZ0u3V5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ei9kg1wz8sfl93o5hhy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MNZ0u3V5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ei9kg1wz8sfl93o5hhy8.png" alt="Publishing to Azure" width="800" height="540"&gt;&lt;/a&gt;&lt;br&gt;
Wait for it to finish publishing. If it's successful you should see something like this in your browser&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jGPs3na8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e2elc5agoazezbounq8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jGPs3na8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e2elc5agoazezbounq8s.png" alt="Function App is up and running" width="800" height="510"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 9:&lt;/strong&gt; Go back to Azure Portal and click on the function app you created earlier. On the left pane click on "&lt;strong&gt;Functions&lt;/strong&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d8dxfJu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x1nupajedmdzcfrcjxf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d8dxfJu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x1nupajedmdzcfrcjxf7.png" alt="Function App overview" width="800" height="320"&gt;&lt;/a&gt;You should be able to see the function we just published with the name "&lt;strong&gt;Sum&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10:&lt;/strong&gt; Click on &lt;strong&gt;Sum&lt;/strong&gt;, then click on "&lt;strong&gt;Get Function Url&lt;/strong&gt;". Copy the Url.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_bPrajuk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m6u29d82svipmel1vxfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_bPrajuk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m6u29d82svipmel1vxfl.png" alt="Get Function Url" width="800" height="282"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 11:&lt;/strong&gt; Paste the Url in any browser of your choice, append the values of x and y to the Url, click enter to know if the sum function is working perfectly.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K1EfTPhR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gy713n2rxoej700ruoe6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K1EfTPhR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gy713n2rxoej700ruoe6.png" alt="Sum of x and y" width="800" height="127"&gt;&lt;/a&gt;Notice how I appended the values of x and y to the Url.&lt;/p&gt;

&lt;p&gt;There you have it. You have successfully published a Function App using Visual Studio to Azure portal, and you have tested it using http.&lt;/p&gt;

&lt;p&gt;Connect with me&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/chisom-amadi/"&gt;https://www.linkedin.com/in/chisom-amadi/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/tchisom17"&gt;https://github.com/tchisom17&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>azure</category>
      <category>csharp</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Installing Linux(Ubuntu) on A Virtual Machine Using VMWare on Mac</title>
      <dc:creator>Tchisom17</dc:creator>
      <pubDate>Sat, 27 May 2023 11:08:20 +0000</pubDate>
      <link>https://dev.to/tchisom17/installing-linuxubuntu-on-a-virtual-machine-using-vmware-on-mac-ed</link>
      <guid>https://dev.to/tchisom17/installing-linuxubuntu-on-a-virtual-machine-using-vmware-on-mac-ed</guid>
      <description>&lt;p&gt;Linux is one of the major operating systems and is heavily used in organisations all around the world.&lt;/p&gt;

&lt;p&gt;In this blog post, I would walk you through how to create a Linux environment on your macOS using VMWare. I will be working with the following technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ubuntu 22.04 (&lt;a href="https://ubuntu.com/download" rel="noopener noreferrer"&gt;Download Ubuntu 22.04 from here&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VMWare Fusion (&lt;a href="https://www.vmware.com/products/fusion/fusion-evaluation.html" rel="noopener noreferrer"&gt;Download VMWare Fusion from here&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note: You should create an account before downloading the VMWare Fusion so as to receive a license key, but if you already have a license key, you can download without creating an account.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After downloading the VMWare Fusion, make sure to install it.&lt;/p&gt;

&lt;p&gt;Now that we have all the requirements, let's proceed to install ubuntu on our computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to Installing Ubuntu in VMWare Fusion
&lt;/h2&gt;

&lt;p&gt;Click on LaunchPad, and on the search bar type "VMWare Fusion". Click on it and wait for it to open. Then double-click on &lt;strong&gt;Install from disc or image&lt;/strong&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%2Fmehk7hh95e8rmbitfe9d.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%2Fmehk7hh95e8rmbitfe9d.png" alt="VMWare Fusion interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose the Ubuntu operating system or just drag and drop it in the VMWare Fusion. Then click on &lt;strong&gt;Continue&lt;/strong&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%2F8zu593xce2ed8fhg1e9a.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%2F8zu593xce2ed8fhg1e9a.png" alt="Selecting the Ubuntu desktop iso"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, you fill in the fields and click on &lt;strong&gt;Continue&lt;/strong&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%2F5inim90x2cn60gnrpycf.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%2F5inim90x2cn60gnrpycf.png" alt="Fill the fields"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remember, all fields are required in order to proceed to the next stage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, Click on &lt;strong&gt;Finish&lt;/strong&gt;. You will get a dialogue box requesting you to save your Virtual Machine. Click on &lt;strong&gt;Save&lt;/strong&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%2F8zqzt03rm7810nh0cc57.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%2F8zqzt03rm7810nh0cc57.png" alt="Interface to show the configuration of the virtual machine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Virtual Machine&lt;/strong&gt; at the top of your screen, and the click &lt;strong&gt;Shut Down&lt;/strong&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%2Fm9fhjjeqb15tid5anfcv.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%2Fm9fhjjeqb15tid5anfcv.png" alt="Shutting down the VM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, click on the spanner icon.&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%2Flv801xh7sq07375ejo3c.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%2Flv801xh7sq07375ejo3c.png" alt="Click on the spanner icon"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An interface should appear. Click on &lt;strong&gt;Processors &amp;amp; Memory&lt;/strong&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%2Fbgb8i7p7a7z89kb3xvm4.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%2Fbgb8i7p7a7z89kb3xvm4.png" alt="Click on Processors &amp;amp; Memory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Increase the Processor to ensure the Vm works fine and does not lag.&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%2Fyyi5q6o50vm1s7uq5tfm.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%2Fyyi5q6o50vm1s7uq5tfm.png" alt="Increase the processor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The default Processor is the "2 processor cores" but I am going with "4 processor cores" because the default processor makes my computer slow. You can choose the one that works best for your computer. I strongly recommend the "4 processor cores".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, you need to restart the Virtual Machine that you shut down by clicking the play button and wait for it to install.&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%2Fq1nyimhbjjplpe2z68f4.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%2Fq1nyimhbjjplpe2z68f4.png" alt="Click the play button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After installing, next is to select your preferred language and click &lt;strong&gt;Continue&lt;/strong&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%2Fert614vftku5eo2z255j.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%2Fert614vftku5eo2z255j.png" alt="Select your preferred language"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next is to choose your desired updates and softwares. Then click &lt;strong&gt;Continue&lt;/strong&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%2Fa2isd2gbv4tso383l1yp.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%2Fa2isd2gbv4tso383l1yp.png" alt="Updates and other softwares"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is important to note that you can choose options that are different from mine. In fact the default options are different from how the options I decided to go with.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the &lt;strong&gt;Erase disk and Install Ubuntu&lt;/strong&gt; and click on &lt;strong&gt;Install now&lt;/strong&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%2Fv93zfrrjuetp1sgih9xl.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%2Fv93zfrrjuetp1sgih9xl.png" alt="Erase disk and install ubuntu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A dialogue box would appear. Click on &lt;strong&gt;Continue&lt;/strong&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%2F1djndm4fm3pg8stjm56x.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%2F1djndm4fm3pg8stjm56x.png" alt="Click on continue to erase disk"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It should automatically get your location. Then click &lt;strong&gt;Continue&lt;/strong&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%2Fv002f4638njj5pqpwgoz.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%2Fv002f4638njj5pqpwgoz.png" alt="Where are you?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill the fields and click on &lt;strong&gt;Continue&lt;/strong&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%2F6iqxcgabtmvnc3zzcxjd.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%2F6iqxcgabtmvnc3zzcxjd.png" alt="Who are you?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for it to finish copying and retrieving files. This process lasts a few minutes.&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%2F5rttqvnrn61bsncer874.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%2F5rttqvnrn61bsncer874.png" alt="Copying files"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Restart Now&lt;/strong&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%2Fpvbq9mvvi9ba8buno7ol.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%2Fpvbq9mvvi9ba8buno7ol.png" alt="Restart to complete the installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon restarting, Click on the user and input your password then hit enter.&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%2Fbad1fi6kg7o4ee8uq2nz.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%2Fbad1fi6kg7o4ee8uq2nz.png" alt="Input your password"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can skip the settings in the subsequent pages till you get to the last one, then click &lt;strong&gt;Done&lt;/strong&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%2Ft5e1b2nj3q18v2pxcsiq.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%2Ft5e1b2nj3q18v2pxcsiq.png" alt="You are ready to go!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voila! You have successfully installed Ubuntu.&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%2Fi7fsyspkl3fwtloh7u58.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%2Fi7fsyspkl3fwtloh7u58.png" alt="Ubuntu interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with me&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/chisom-amadi/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/chisom-amadi/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/tchisom17" rel="noopener noreferrer"&gt;https://github.com/tchisom17&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>ubuntu</category>
      <category>linux</category>
      <category>macos</category>
    </item>
    <item>
      <title>How to Create a Virtual Machine on MacOS</title>
      <dc:creator>Tchisom17</dc:creator>
      <pubDate>Fri, 19 May 2023 19:58:14 +0000</pubDate>
      <link>https://dev.to/tchisom17/how-to-create-a-virtual-machine-on-macos-1gne</link>
      <guid>https://dev.to/tchisom17/how-to-create-a-virtual-machine-on-macos-1gne</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this blog, I will walk you through the step-by-step process of how to set up a virtual machine on a macOS.&lt;/p&gt;

&lt;p&gt;First off, &lt;strong&gt;What is a Virtual Machine?&lt;/strong&gt;&lt;br&gt;
A Virtual Machine (VM) is a software emulation of a physical computer. It includes virtual processors, memory, storage and networking. In other words, It has everything a physical computer would have.&lt;br&gt;
Now that you know what a Virtual Machine is, let'&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Steps to Create A Virtual Machine&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Log in to &lt;a href="https://portal.azure.com/#home" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt; or Sign up &lt;a href="https://azure.microsoft.com/en-us/free/" rel="noopener noreferrer"&gt;here&lt;/a&gt; if you don't have an account.&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%2Fy8c2lratnyq05u5vmklj.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%2Fy8c2lratnyq05u5vmklj.png" alt="Interface of the Azure Portal"&gt;&lt;/a&gt;This is how your Azure Portal would look like once logged in.&lt;/p&gt;

&lt;p&gt;You can either click on the search bar and search for virtual machines or click on &lt;strong&gt;Create a resource&lt;/strong&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%2Fmitd7eq6hun5bzbsqxc3.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%2Fmitd7eq6hun5bzbsqxc3.png" alt="Resource interface highlighting virtual machine and other services"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill the form that pops up. Let's start with creating a resource group by clicking on the &lt;strong&gt;Create new&lt;/strong&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%2F9em47ihevg4jm2zuetwc.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%2F9em47ihevg4jm2zuetwc.png" alt="Creating a resource group"&gt;&lt;/a&gt;The name of a resource group can be random, so I decided to call mine &lt;strong&gt;Practice&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then proceed to give the Virtual Machine a name, select a region, Choose an Image and leave the other fields with the default recommendation.&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%2Fmyn3udk8rz3se3mc75hh.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%2Fmyn3udk8rz3se3mc75hh.png" alt="Creating a virtual machine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I named my virtual machine as &lt;strong&gt;pracvm&lt;/strong&gt;, but you can name yours anything.
Next is to set a username and password
&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%2Fabp30gc1p4pxxcxzic0m.png" alt="Setting Administrative access"&gt;
You can optionally configure disks, network, etc. on the next pages. Proceed to click on &lt;strong&gt;Review + create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;Review + create&lt;/strong&gt; tab should open with some information about your virtual machine and a green checkmark. Proceed and click &lt;strong&gt;Create&lt;/strong&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%2F7ry9hzmyutkefiwxkodz.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%2F7ry9hzmyutkefiwxkodz.png" alt="Review + create interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for it to finish deploying and your virtual machine would be created.&lt;/p&gt;

&lt;p&gt;Voila, your VM has been created! Click on &lt;strong&gt;Go to resource&lt;/strong&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%2Fykuwwqr029sv4bh7hrkw.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%2Fykuwwqr029sv4bh7hrkw.png" alt="Virtual Machine created"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, go to app store and install &lt;strong&gt;Microsoft Remote Desktop&lt;/strong&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%2Fazyz102n4rg62xxjcvtw.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%2Fazyz102n4rg62xxjcvtw.png" alt="Microsoft Remote Desktop"&gt;&lt;/a&gt;I already have it installed that's why mine is showing &lt;strong&gt;OPEN&lt;/strong&gt;. If you don't have it installed it's going to show &lt;strong&gt;GET&lt;/strong&gt;. I will go ahead and click on &lt;strong&gt;OPEN&lt;/strong&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%2Fjgeojejola5z6mvb1l1y.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%2Fjgeojejola5z6mvb1l1y.png" alt="Microsoft Remote Desktop"&gt;&lt;/a&gt;You should have a similar interface but yours should be empty. Click on the plus button and then &lt;strong&gt;Add PC&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A dialogue box should appear. Fill the box and click on &lt;strong&gt;Add&lt;/strong&gt; button.&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%2F0tkkfjtv5sdti84kkozh.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%2F0tkkfjtv5sdti84kkozh.png" alt="Add PC box"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To get the &lt;strong&gt;&lt;em&gt;PC name&lt;/em&gt;&lt;/strong&gt;, go to virtual machine you created earlier, copy the &lt;strong&gt;&lt;em&gt;Public IP address&lt;/em&gt;&lt;/strong&gt; and paste it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Friendly name&lt;/strong&gt; is optional. You can give yours any name.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, Double click on the newly added PC. It should prompt you to enter a username and password.&lt;br&gt;
The username and password should be the same you used in creating your virtual machine. Then click on &lt;strong&gt;Continue&lt;/strong&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%2F9jtvmz1pyv3k4sggpj28.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%2F9jtvmz1pyv3k4sggpj28.png" alt="username and password used in creating the virtual machine"&gt;&lt;/a&gt;&lt;br&gt;
Congrats! You did it.&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%2F8sikateil685i68sqlji.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%2F8sikateil685i68sqlji.png" alt="Windows Virtual Machine"&gt;&lt;/a&gt;&lt;br&gt;
Always delete any resources created on Azure whenever you are completely done with them to save cost.&lt;/p&gt;

&lt;p&gt;I hope you enjoyed the journey as much as I did.&lt;/p&gt;

&lt;p&gt;Connect with me&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/chisom-amadi/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/chisom-amadi/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/tchisom17" rel="noopener noreferrer"&gt;https://github.com/tchisom17&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>azure</category>
      <category>virtualmachine</category>
      <category>macos</category>
    </item>
  </channel>
</rss>
