<?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>Forem: WilliamRamirez</title>
    <description>The latest articles on Forem by WilliamRamirez (@williamramirez).</description>
    <link>https://forem.com/williamramirez</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%2F508183%2F5bf920f2-8409-4e1a-946c-90e197e05286.png</url>
      <title>Forem: WilliamRamirez</title>
      <link>https://forem.com/williamramirez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/williamramirez"/>
    <language>en</language>
    <item>
      <title>Powershell script to call microsoft graph and send email using azure app registration</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Mon, 04 Dec 2023 01:31:09 +0000</pubDate>
      <link>https://forem.com/williamramirez/powershell-script-to-call-microsoft-graph-and-send-email-using-azure-app-registration-2add</link>
      <guid>https://forem.com/williamramirez/powershell-script-to-call-microsoft-graph-and-send-email-using-azure-app-registration-2add</guid>
      <description>&lt;p&gt;PowerShell script to call Microsoft Graph and send email using Azure app registration. &lt;/p&gt;

&lt;p&gt;You will need to follow these steps:&lt;/p&gt;

&lt;p&gt;-Register a new application in Azure and create a client secret for it. You will also need to assign the Mail.Send permission to the application in the API permissions section. You can refer to this article or this article for detailed instructions on how to do this.&lt;/p&gt;

&lt;p&gt;-Connect to the Graph API using the client ID, client secret, and tenant ID of your application. You will need to get an access token and use it in the Authorization header of your requests. You can use the Invoke-RestMethod cmdlet to make HTTP requests to the Graph API. You can see an example of how to do this in this article.&lt;/p&gt;

&lt;p&gt;-Send an email using the Graph API by specifying the sender, the subject, the body, and the recipients of the message. You can use the /users/{id}/sendMail endpoint to send an email on behalf of a user in your tenant. You will need to provide the message details in the JSON format in the body of your request. You can see an example of how to do this in this article.&lt;br&gt;
Here is a sample PowerShell script that follows these steps and sends an email using the Graph API:&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Replace these values with your own
&lt;/h1&gt;

&lt;p&gt;$clientID = "yourClientID"&lt;br&gt;
$clientSecret = "yourSecret"&lt;br&gt;
$tenantID = "yourTenantID"&lt;br&gt;
$mailSender = "&lt;a href="mailto:sender@contoso.com"&gt;sender@contoso.com&lt;/a&gt;"&lt;br&gt;
$mailRecipient = "&lt;a href="mailto:recipient@contoso.com"&gt;recipient@contoso.com&lt;/a&gt;"&lt;/p&gt;

&lt;h1&gt;
  
  
  Connect to Graph API
&lt;/h1&gt;

&lt;p&gt;$tokenBody = @{&lt;br&gt;
    Grant_Type = "client_credentials"&lt;br&gt;
    Scope = "&lt;a href="https://graph.microsoft.com/.default"&gt;https://graph.microsoft.com/.default&lt;/a&gt;"&lt;br&gt;
    Client_Id = $clientID&lt;br&gt;
    Client_Secret = $clientSecret&lt;br&gt;
}&lt;br&gt;
$tokenResponse = Invoke-RestMethod -Uri "&lt;a href="https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token"&gt;https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token&lt;/a&gt;" -Method POST -Body $tokenBody&lt;br&gt;
$headers = @{&lt;br&gt;
    "Authorization" = "Bearer $($tokenResponse.access_token)"&lt;br&gt;
    "Content-type" = "application/json"&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Send email
&lt;/h1&gt;

&lt;p&gt;$URLsend = "&lt;a href="https://graph.microsoft.com/v1.0/users/$mailSender/sendMail"&gt;https://graph.microsoft.com/v1.0/users/$mailSender/sendMail&lt;/a&gt;"&lt;br&gt;
$BodyJsonsend = @"&lt;br&gt;
{&lt;br&gt;
    "message": {&lt;br&gt;
        "subject": "Hello from Graph API",&lt;br&gt;
        "body": {&lt;br&gt;
            "contentType": "HTML",&lt;br&gt;
            "content": "This email is sent via Microsoft Graph API"&lt;br&gt;
        },&lt;br&gt;
        "toRecipients": [&lt;br&gt;
            {&lt;br&gt;
                "emailAddress": {&lt;br&gt;
                    "address": "$mailRecipient"&lt;br&gt;
                }&lt;br&gt;
            }&lt;br&gt;
        ]&lt;br&gt;
    },&lt;br&gt;
    "saveToSentItems": "false"&lt;br&gt;
}&lt;br&gt;
"@&lt;br&gt;
Invoke-RestMethod -Method POST -Uri $URLsend -Headers $headers -Body $BodyJsonsend`&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is a sample PowerShell script that follows these steps and inserts an item to a SharePoint list using the Graph API:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Replace these values with your own
$clientID = "yourClientID"
$clientSecret = "yourSecret"
$tenantID = "yourTenantID"
$siteID = "yourSiteID"
$listID = "yourListID"

# Connect to Graph API
$tokenBody = @{
    Grant_Type = "client_credentials"
    Scope = "https://graph.microsoft.com/.default"
    Client_Id = $clientID
    Client_Secret = $clientSecret
}
$tokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token" -Method POST -Body $tokenBody
$headers = @{
    "Authorization" = "Bearer $($tokenResponse.access_token)"
    "Content-type" = "application/json"
}

# Insert an item to a SharePoint list
$apiUrl = "https://graph.microsoft.com/v1.0/sites/$siteID/lists/$listID/items"
$itemBody = @{
    fields = @{
        Title = "Test Item"
        Color = "Red"
        Weight = 10
    }
}
$payload = ConvertTo-Json $itemBody -Depth 5
Invoke-RestMethod -Method POST -Uri $apiUrl -Headers $headers -Body $payload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  PowerShell script that follows these steps and sends an email using the SharePoint SP.Utilities.Utility.SendEmail method:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Replace these values with your own
$clientID = "yourClientID"
$clientSecret = "yourSecret"
$tenantID = "yourTenantID"
$siteID = "yourSiteID"
$mailSubject = "Hello from SharePoint"
$mailBody = "This email is sent via SharePoint SP.Utilities.Utility.SendEmail"
$mailTo = "recipient@contoso.com"
$mailFrom = "sender@contoso.com"

# Import the Microsoft.Graph module
Import-Module Microsoft.Graph

# Connect to Graph API using connect-mggraph
Connect-MgGraph -ClientSecretCredential $(New-Object Microsoft.Graph.Authentication.ClientSecretCredential -ArgumentList $tenantID, $clientID, $clientSecret)

# Get the request digest for the SharePoint site
$digestUrl = "https://graph.microsoft.com/v1.0/sites/$siteID/contextinfo"
$digestResponse = Invoke-MgGraphRequest -Method POST -Uri $digestUrl
$requestDigest = $digestResponse.FormDigestValue

# Send email using SharePoint SP.Utilities.Utility.SendEmail
$emailUrl = "https://graph.microsoft.com/v1.0/sites/$siteID/SP.Utilities.Utility.SendEmail"
$emailBody = @{
    properties = @{
        To = @($mailTo)
        Subject = $mailSubject
        Body = $mailBody
        From = $mailFrom
    }
}
$payload = ConvertTo-Json $emailBody -Depth 5
$headers = @{
    "X-RequestDigest" = $requestDigest
}
Invoke-MgGraphRequest -Method POST -Uri $emailUrl -Headers $headers -Body $payload

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

&lt;/div&gt;



</description>
      <category>microsoft</category>
      <category>graph</category>
      <category>powershell</category>
    </item>
    <item>
      <title>Starting Ukelele challenge</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Wed, 28 Jun 2023 11:32:17 +0000</pubDate>
      <link>https://forem.com/williamramirez/starting-ukelele-challenge-5c57</link>
      <guid>https://forem.com/williamramirez/starting-ukelele-challenge-5c57</guid>
      <description>&lt;p&gt;Hello, everyone! I have some exciting news to share with you today. No, everything is about programming and working. I don't have any problems or worries at all, wait... I have big problems and some stress that I need to relax. In fact, I'm feeling so happy and grateful that I decided to take up a new hobby: learning the ukelele! I don't play any instrument, just my computer keyboard Lol.&lt;/p&gt;

&lt;p&gt;You might be wondering why I chose the ukelele out of all the musical instruments out there. Well, let me tell you, it's such a fun and easy instrument to play and I have kids so I will learn with them. It only has four strings, so you don't have to worry about complicated fingerings or chords. It's also very portable and lightweight, so you can take it anywhere you go. And best of all, it sounds so cheerful and uplifting, just like how I feel right now.&lt;/p&gt;

&lt;p&gt;I've always wanted to learn how to play a musical instrument, but I never had the time or the motivation before. But now that everything is working so well for me, I feel like I can do anything I set my mind to. I'm ready to challenge myself and learn something new. I've already ordered a ukelele online and I can't wait for it to arrive. I've also found some online tutorials and songs that I want to try out.&lt;/p&gt;

&lt;p&gt;I'm so excited to start this new journey and share it with you all. I hope you'll join me in this adventure and maybe even pick up a ukelele yourself. Trust me, it's a lot of fun and it will make you feel happy too. No matter what's going on in your life, playing the ukelele will always brighten up your day. I will order my Ukelele, and I will share my progress in the next coming weeks. I will probably do the 30-day ukelele Challenge, see link below.&lt;/p&gt;

&lt;p&gt;Thank you for reading this blog post and stay tuned for more updates on my ukelele progress. Until next time, keep smiling and keep strumming!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=EcDZ4kA8bSI&amp;amp;list=PL5PNXIkCYncg7NrkLAxj95I_ZRXLk7uIO&amp;amp;index=93"&gt;Ukulele Tutorials and Play-Alongs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.patreon.com/dylanlaine"&gt;Dylan Laine Music&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ukutabs.com/ukulele-guides/ukulele-tips-for-beginners/"&gt;Ukelele tips&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLJFa3EaocfZkPvRqVaUf6pFuPxiLo0uWZ"&gt;30 day Ukelele Challenge&lt;/a&gt;&lt;/p&gt;

</description>
      <category>life</category>
      <category>programmers</category>
      <category>hobbie</category>
      <category>relax</category>
    </item>
    <item>
      <title>Environments in Power Apps. Setup your development environment and manage access</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Wed, 31 May 2023 23:54:55 +0000</pubDate>
      <link>https://forem.com/williamramirez/environments-in-power-apps-and-16o1</link>
      <guid>https://forem.com/williamramirez/environments-in-power-apps-and-16o1</guid>
      <description>&lt;p&gt;Environments are a feature of Power Apps that allow you to store, manage, and share your business data, apps, and flows. Environments can help you separate your apps based on their roles, security requirements, or target audiences. For example, you can create different environments for testing and production, or for different teams or regions in your organization.&lt;/p&gt;

&lt;p&gt;There are five types of environments in Power Apps: default, developer, production, sandbox, and trial. The default environment is automatically created for each tenant and is shared by all users. The developer environment is for individual use and has limited capacity and functionality. The production environment is for deploying and running your apps for end users. The sandbox environment is for testing and development purposes and can be reset at any time. The trial environment is for exploring the features of Power Apps for a limited time.&lt;/p&gt;

&lt;p&gt;To create an environment, you need a license that allows environment creation and enough database storage capacity in your tenant. You also need to have the Environment Admin or Environment Maker role in the Power Platform admin center. You can create an environment with or without a database, depending on your needs and license type. You can also move resources between environments or delete environments that you no longer need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasons to use environments
&lt;/h2&gt;

&lt;p&gt;Reasons to create environments beyond the default one include:&lt;/p&gt;

&lt;p&gt;Separate app development by department - In a large organization, each department can work in a different environment. That way, department employees see only apps and company data that are appropriate to their needs.&lt;/p&gt;

&lt;p&gt;Support application lifecycle management (ALM) - Separate environments let you separate apps that are in development stages from ones that have already been shared. Alternatively, you might want to use a trial environment so that you can receive feedback from employees before publishing the final app. For some organizations, showing apps before they're completely developed and published can present security concerns.&lt;/p&gt;

&lt;p&gt;Manage data access - Each environment can have its own source of business data, called a database for Microsoft Dataverse. Other data connections are specific to an environment and can't be shared across environments.&lt;/p&gt;

&lt;p&gt;Per Microsoft &lt;a href="https://learn.microsoft.com/en-us/training/modules/manage-apps-in-powerapps/3-understand-environments"&gt;Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create an environment
&lt;/h2&gt;

&lt;p&gt;Only an admin can create environments. If you aren't an admin, this information can still be helpful when you talk to your admin about setting up environments.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the make.powerapps.com home page, select the gear icon near the upper-right corner and then select Admin center.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also go directly to &lt;a href="https://admin.powerplatform.microsoft.com"&gt;https://admin.powerplatform.microsoft.com&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In Microsoft Power Platform admin center, select + New.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the New environment dialog box, enter a name for the environment and then select a region and an environment type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To the left of Create a database for this environment, select the toggle to Yes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the currency and language for the data that is stored in the database. You can't change the currency or language after the database is created.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Save.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It might take several minutes to create the database on Dataverse. After the database is created, the new environment appears in the list of environments on the Environments page.&lt;/p&gt;

&lt;p&gt;You now have a new environment to work in. If you go back to make.powerapps.com, you'll see it in the environments list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Manage access to an environment.
&lt;/h2&gt;

&lt;p&gt;By default, you can access an environment in one of two ways:&lt;/p&gt;

&lt;p&gt;System admin - A system admin has full permissions to create and manage environments.&lt;/p&gt;

&lt;p&gt;Environment maker - An environment maker can view all apps in that environment, create apps, and work with Dataverse (other permissions apply).&lt;/p&gt;

&lt;p&gt;Environment admins can create other security roles as needed. They can also add and assign users to these roles.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Start by going to &lt;a href="https://admin.powerplatform.microsoft.com"&gt;https://admin.powerplatform.microsoft.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the left pane, Environments should be selected by default, if it isn't, select Environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the test environment that you created, and then select Settings at the top.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Users + permissions dropdown and select Users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Add user at the top and add the user by entering the email address of the user in your organization and then selecting Add. Wait a few minutes for the user to be added.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To manage the roles and information of a user, select the user’s Name. A new tab opens with the Dynamics 365 view of that user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Manage Roles on the top bar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Manage User Roles box, select the role(s) for the user. In this example, assign the user to the Environment Maker role.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select OK.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The changes are then saved, so you can close the Dynamics 365 tab in your browser when done.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Congratulations. I can say that set up environments so that you can separate a working environment from the one that you want to share with your team will help you to learn, test, and create a minimum viable product. In conclusion, environments can be shared with specific users, allowing you to manage who can access certain data.&lt;/p&gt;

</description>
      <category>power</category>
      <category>powerplatform</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Control Node.js versions with Node Version Manager (NVM) to develop SPFx solutions for different SharePoint environments</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Mon, 29 May 2023 00:36:30 +0000</pubDate>
      <link>https://forem.com/williamramirez/control-nodejs-versions-with-node-version-manager-nvm-to-develop-spfx-solutions-for-different-sharepoint-environments-31l</link>
      <guid>https://forem.com/williamramirez/control-nodejs-versions-with-node-version-manager-nvm-to-develop-spfx-solutions-for-different-sharepoint-environments-31l</guid>
      <description>&lt;h2&gt;
  
  
  NVM for Windows
&lt;/h2&gt;

&lt;p&gt;The Microsoft/npm/Google recommended Node.js version manager for Windows.&lt;/p&gt;

&lt;p&gt;NVM (Node Version Manager) is a tool that allows you to install and switch between different versions of Node.js on your machine. This can be useful for developing SPFx (SharePoint Framework) solutions that require specific Node.js versions. For example, SPFx v1.17.1 requires Node.js v16 LTS, while SPFx v1.4.1 for SharePoint Server 2019 requires Node.js v8 LTS .&lt;/p&gt;

&lt;p&gt;To use NVM for SPFx development, you need to follow these steps :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install NVM from &lt;a href="https://github.com/coreybutler/nvm-windows/releases"&gt;https://github.com/coreybutler/nvm-windows/releases&lt;/a&gt; or use &lt;code&gt;choco install nvm&lt;/code&gt; if you have Chocolatey installed.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;nvm install &amp;lt;version&amp;gt;&lt;/code&gt; to install the desired Node.js versions, such as &lt;code&gt;nvm install 16.13.0&lt;/code&gt; and &lt;code&gt;nvm install 8.17.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;nvm use &amp;lt;version&amp;gt;&lt;/code&gt; to switch between Node.js versions, such as &lt;code&gt;nvm use 16.13.0&lt;/code&gt; or &lt;code&gt;nvm use 8.17.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install the SPFx development tools with &lt;code&gt;npm install -g yo @microsoft/generator-sharepoint gulp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Create a new SPFx project with &lt;code&gt;yo @microsoft/sharepoint&lt;/code&gt; and follow the prompts.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;gulp serve&lt;/code&gt; to start the local web server and test your SPFx solution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using NVM can help you avoid compatibility issues and errors when developing SPFx solutions for different SharePoint environments.&lt;/p&gt;

&lt;p&gt;I did an example after running &lt;code&gt;nvm install 16.18.0&lt;/code&gt; and &lt;code&gt;nvm use 16.18.0&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;1) I ran in the Powershell cli:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install gulp-cli yo @microsoft/generator-sharepoint --global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) Created boiler plate web part code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yo @microsoft/sharepoint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) Updated SharePoint URL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Locate and open the file ./config/serve.json in your project.

{
  "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json",
  "port": 4321,
  "https": true,
  "initialPage": "https://enter-your-SharePoint-site/_layouts/workbench.aspx"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) Trust local environment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gulp trust-dev-cert
gulp serve

or  you can use 

gulp serve --nobrowser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5) Here is the result&lt;/p&gt;

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

&lt;p&gt;Keep learning, testing, and deploying. Then, repeat. Have fun!&lt;/p&gt;

&lt;p&gt;Source:&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/set-up-your-development-environment"&gt;Setup dev environment&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/build-a-hello-world-web-part"&gt;Webpart hello world&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>sharepointonline</category>
      <category>spfx</category>
    </item>
    <item>
      <title>Sharepoint dev examples to try</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Thu, 06 Apr 2023 03:38:29 +0000</pubDate>
      <link>https://forem.com/williamramirez/sharepoint-dev-examples-to-try-c53</link>
      <guid>https://forem.com/williamramirez/sharepoint-dev-examples-to-try-c53</guid>
      <description>&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/use-aad-tutorial?source=recommendations"&gt;Consume the Microsoft Graph in the SharePoint Framework&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient-enterpriseapi"&gt;Consume enterprise APIs secured with Azure AD in SharePoint Framework&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/powershell/microsoftgraph/app-only?view=graph-powershell-1.0&amp;amp;tabs=azure-portal"&gt;Use app-only authentication with the Microsoft Graph PowerShell SDK&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>M365 Sites to follow</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Thu, 06 Apr 2023 03:25:10 +0000</pubDate>
      <link>https://forem.com/williamramirez/m365-sites-to-follow-4fak</link>
      <guid>https://forem.com/williamramirez/m365-sites-to-follow-4fak</guid>
      <description>&lt;p&gt;&lt;strong&gt;Lazy Admin&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://lazyadmin.nl/office-365/microsoft-loop/"&gt;Microsoft Loop – What you need to know and How to use it&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.admindroid.com/complete-guide-to-enable-microsoft-loop-app/"&gt;Complete Guide to Enable Microsoft Loop App&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>MAUI, Security, Sharepoint</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Thu, 06 Apr 2023 03:18:21 +0000</pubDate>
      <link>https://forem.com/williamramirez/maui-security-sharepoint-42ea</link>
      <guid>https://forem.com/williamramirez/maui-security-sharepoint-42ea</guid>
      <description>&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/auth-oidc"&gt;OpenID Connect authentication with Azure Active Directory&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/samples/azure-samples/active-directory-aspnetcore-webapp-openidconnect-v2/active-directory-aspnetcore-webapp-openidconnect-v2/#scenario"&gt;Enable your ASP.NET Core web app to sign in users and call Microsoft Graph with the Microsoft identity platform&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2#tutorial---enable-your-web-apps-to-sign-in-users-and-call-apis-with-the-microsoft-identity-platform-for-developers"&gt;Tutorial - Enable your Web Apps to sign-in users and call APIs with the Microsoft identity platform for developers&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/claimsxray-in-azuread-with-directory-extension/ba-p/1505737"&gt;Claims xray in azure AD with directory extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/azure-samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/2-WebApp-graph-user/2-1-Call-MSGraph/AppCreationScripts/AppCreationScripts.md"&gt;Registering the sample apps with the Microsoft identity platform and updating the configuration files using PowerShell&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/training/modules/implement-manage-external-identities/13-configure-identity-providers"&gt;Configure identity providers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-overview"&gt;Overview MSAL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/graph/tutorials/dotnet?tabs=aad"&gt;Build .NET apps with Microsoft Graph&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/samples/azure-samples/active-directory-aspnetcore-webapp-openidconnect-v2/active-directory-aspnetcore-webapp-openidconnect-v2/"&gt;Enable your ASP.NET Core web app to sign in users and call Microsoft Graph with the Microsoft identity platform&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Sharepoint&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azuread"&gt;Granting access via Azure AD App-Only&lt;/a&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/sharepoint/dev/transform/modernize-scanner"&gt;Modernization scanner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://global-sharepoint.com/sharepoint/in-4-steps-access-sharepoint-online-data-using-postman-tool/"&gt;Sharepoint Online not modern and Postman&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sharepoint.stackexchange.com/questions/300674/sharepoint-online-rest-api-access-using-aad-client-id-and-client-secret"&gt;SharePoint Online REST API access using AAD Client ID and Client Secret&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/graph/api/list-get?view=graph-rest-1.0&amp;amp;tabs=powershell"&gt;Get metadata for a list&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MAUI&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/CommunityToolkit/Maui"&gt;MAUI Github repo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://devblogs.microsoft.com/dotnet/whats-new-in-the-dotnet-maui-community-toolkit/"&gt;What's new in MAUI-Expander &lt;/a&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/communication/networking?view=net-maui-7.0&amp;amp;tabs=windows"&gt;MAUI communication Microsoft.Maui.Networking&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/dotnet/maui-samples/tree/main/6.0"&gt;MAUI Samples V.7&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/dotnet/maui-samples/tree/main/6.0"&gt;MAUI Samples v.7&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.toNew%20Visual%20Studio%20Feature%20is%20a%20Game%20Changer%20for%20Developers%20-%20Put%20localhost%20Online"&gt;https://www.youtube.com/watch?v=NPJhrftkqeg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Utils&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://scoop.sh/#/"&gt;Scoop Util&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fun&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/shorts/RUnqDVwYk00"&gt;Cub with staples&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>.NET MAUI</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Wed, 28 Sep 2022 23:01:42 +0000</pubDate>
      <link>https://forem.com/williamramirez/net-maui-k3c</link>
      <guid>https://forem.com/williamramirez/net-maui-k3c</guid>
      <description>&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-6.0&amp;amp;tabs=visual-studio"&gt;Tutorial: Create a web API with ASP.NET Core&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-beautiful-ui-challenge/"&gt;Announcing the .NET MAUI Beautiful UI Challenge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://snppts.dev/"&gt;Snppts is a community-run website helping aggregate beautiful .NET MAUI UI snippets for and from the community. &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/en-us/learn/dotnet/architecture-guides"&gt;.NET Architecture Guides&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/apps/windows-dotnet-maui/tutorial-graph-api"&gt;Tutorial: Create a .NET MAUI app using the Microsoft Graph SDK&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/graph/use-postman"&gt;Use Postman with the Microsoft Graph API&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/core/tutorials/library-with-visual-studio-mac"&gt;Tutorial: Create a .NET class library using Visual Studio for Mac&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-maui-ebook-released/"&gt;.NET MAUI eBook Now Available – Enterprise Application Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/maui/"&gt;.NET Multi-platform App UI documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/samples/azure-samples/active-directory-aspnetcore-webapp-openidconnect-v2/enable-webapp-signin/"&gt;Tutorial - Enable your Web Apps to sign-in users and call APIs with the Microsoft identity platform for developers&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Installing dotnet try in MacOS and try .NET Offline</title>
      <dc:creator>WilliamRamirez</dc:creator>
      <pubDate>Wed, 04 Nov 2020 18:17:41 +0000</pubDate>
      <link>https://forem.com/williamramirez/installing-dotnet-try-in-macos-and-try-net-offline-3fp1</link>
      <guid>https://forem.com/williamramirez/installing-dotnet-try-in-macos-and-try-net-offline-3fp1</guid>
      <description>&lt;p&gt;I read that Try .NET is an interactive documentation generator for .NET Core. Best of all is open source.&lt;/p&gt;

&lt;p&gt;I wanted to be able to run dotnet try samples in macOS that I found in &lt;a href="https://github.com/dotnet/try-samples"&gt;Github&lt;/a&gt; and same time being able to build a tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installed dotnet
&lt;/h2&gt;

&lt;p&gt;Downloaded the current .Net Core and installed&lt;br&gt;
&lt;a href="https://dotnet.microsoft.com/download/dotnet/curren"&gt;https://dotnet.microsoft.com/download/dotnet/curren&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Installed the &lt;a href="https://www.nuget.org/packages/Microsoft.dotnet-try/"&gt;dotnet try tool&lt;/a&gt; using the terminal
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet tool install --global Microsoft.dotnet-try --version 1.0.20474.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Cloned the repository
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/dotnet/try-samples
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I just set the current directory to one of the sample tutorials and ran code below&lt;br&gt;
&lt;/p&gt;

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

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

&lt;/div&gt;



&lt;p&gt;This launched the browser.&lt;/p&gt;

&lt;p&gt;For more dotnet CLI commands I would recommend to visit &lt;a href="https://docs.microsoft.com/en-us/dotnet/core/tools/"&gt;Microsoft docs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>tutorial</category>
      <category>try</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
