techcommunity.microsoft.com Open in urlscan Pro
2a02:26f0:fb:598::207e  Public Scan

Submitted URL: https://comm.microsoft.com/PoliteMail257/default.aspx?page=yaSQEPn_a0SS2FWhwpdHAQ&ref_id=lV0dfqeODEeQp1nMY0sf3Q
Effective URL: https://techcommunity.microsoft.com/gxcuf89792/rss/board?board.id=AzureDevCommunityBlog
Submission: On March 09 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

Azure Developer Community Blog articles
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/bg-p/AzureDevCommunityBlog
Azure Developer Community Blog articles Wed, 09 Mar 2022 08:28:04 GMT
AzureDevCommunityBlog 2022-03-09T08:28:04Z Using secretless Azure Functions from
within AKS
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-secretless-azure-functions-from-within-aks/ba-p/3248143
<P>I recently implemented <A href="https://github.com/kedacore/keda/issues/2656"
target="_self">a change in KEDA</A> (currently evaluated as a potential pull
request), consisting of leveraging managed identities in a more granular way, in
order to adhere to the least privilege principle. While I was testing my
changes, I wanted to use managed identities not only for KEDA itself but also
for the Azure Functions I was using in my tests. I found out that although there
are quite a few docs on the topic, none is targeting AKS:</P> <P>&nbsp;</P>
<P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#identity-based-connections"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#identity-based-connections</A></P>
<P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference?tabs=blob#connecting-to-host-storage-with-an-identity-preview"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference?tabs=blob#connecting-to-host-storage-with-an-identity-preview</A></P>
<P>&nbsp;</P> <P>You can find many articles showing how to grab a token from an
HTTP triggered function, or using identity-based triggers, but in the context of
a function hosted in Azure itself. It's not rocket science to make this work in
AKS but I thought it was a good idea to recap it here as I couldn't find
anything on that.</P> <P>&nbsp;</P> <P><FONT size="5">Quick intro to managed
identities</FONT></P> <P>Here is a quick reminder for those who would still not
know about MI. The value proposition of MI is: no password in code (or config).
MI are considered best practices because the credentials used by identities are
entirely managed by Azure itself. Workloads can <EM>refer to</EM> identities
without the need to store credentials anywhere. On top of this, you can manage
authorization with Azure AD (single pane of glasses), unlike shared access
signatures and alternate authorization methods.</P> <P><FONT size="5">AKS &amp;
MI</FONT></P> <P>For MI to work in AKS, you need to enable them. You can find a
comprehensive explanation on how to do this <A
href="https://docs.microsoft.com/en-us/azure/aks/use-managed-identity"
target="_self">here</A>. In a nutshell, MI works the following way in AKS:</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="aksnmi.png" style="width: 879px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/353247i1EBC070C411D57A9/image-size/large?v=v2&amp;px=999"
role="button" title="aksnmi.png" alt="aksnmi.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>An <STRONG>AzureIdentity</STRONG> and
<STRONG>AzureIdentityBinding</STRONG> resource must be defined. They target a
user-assigned identity, which is attached to the cluster's VM scale set. The
identity can be referred to by deployments through the
<EM><STRONG>aadpodbinding</STRONG> </EM>annotation. The function (or anything
else) container makes a call to the MI system endpoint <A
href="http://169....which" target="_blank" rel="noopener">http://169...,
</A>that is intercepted by the NMI pod, which in turn, performs a call to Azure
Active Directory to get an access token for the calling container.&nbsp; The
calling container can present the returned token to the Azure resource to gain
access.</P> <P>&nbsp;</P> <P><FONT size="5">Using the right packages for the
function</FONT></P> <P>The packages you have to use depend on the Azure resource
you interact with. In my example, I used storage account queues as well as
service bus queues. To leverage MI from within the function, you must:</P> <UL>
<LI>use the&nbsp;Microsoft.Azure.WebJobs.Extensions.Storage &gt;= 5.0.0</LI>
<LI>use the Microsoft.Azure.WebJobs.Extensions.ServiceBus &gt;= 5.0.0</LI>
<LI>use the&nbsp;Microsoft.NET.Sdk.Functions &gt;= 4.1.0</LI> </UL> <P>Note that
the storage package is not really an option because Azure Functions need an
Azure Storage account for the most part.</P> <P><FONT size="5">Passing the right
settings to the function</FONT></P> <P>Azure functions takes their configuration
from the local settings and from their host's configuration. When using Azure
Functions hosted on Azure, we can simply use the function app settings. In AKS,
this is slightly different as we have to pass the settings through a
<STRONG>ConfigMap</STRONG> or a <STRONG>Secret</STRONG>. To target both the
Azure Storage account and the Service Bus, you'll have to define a secret like
the following:</P> <P>&nbsp;</P> <DIV> <DIV><LI-CODE lang="yaml">data:
AzureWebJobsStorage__accountName: &lt;base64 value of storage account name&gt;
ServiceBusConnection__fullyQualifiedNamespace: &lt;base64 value of the service
bus FQDN&gt; FUNCTIONS_WORKER_RUNTIME: &lt;base64 value of the function
language&gt; apiVersion: v1 kind: Secret metadata: name: &lt;secret name&gt;
---</LI-CODE></DIV> <DIV>In the above example, I use the same storage account
for my storage-queue trigger as well as the storage account that is required by
functions to work. In case I was using a different storage account for the queue
trigger, I'd declare an extra setting with the account name. The service bus
queue-triggered function relies on the __fullyQualifiedNamespace to start
listening to the service bus. Paradoxally, although I create a K8s secret, there
is no secret information here, thanks to the MI.</DIV> <DIV>&nbsp;</DIV>
<DIV>For your reference, I'm pasting the entire YAML here:</DIV>
<DIV>&nbsp;</DIV> <DIV><LI-CODE lang="yaml">data:
AzureWebJobsStorage__accountName: &lt;base64 value of the storage account
name&gt; ServiceBusConnection__fullyQualifiedNamespace: &lt;base64 value of the
service bus FQDN&gt; FUNCTIONS_WORKER_RUNTIME: &lt;base64 value of the function
code&gt; apiVersion: v1 kind: Secret metadata: name: misecret --- apiVersion:
aadpodidentity.k8s.io/v1 kind: AzureIdentity metadata: name:
storageandbushandler annotations: aadpodidentity.k8s.io/Behavior: namespaced
spec: type: 0 resourceID:
/subscriptions/.../resourceGroups/.../providers/Microsoft.ManagedIdentity/userAssignedIdentities/storageandbushandler
clientID: &lt;client ID of the user-assigned identity&gt; --- apiVersion:
aadpodidentity.k8s.io/v1 kind: AzureIdentityBinding metadata: name:
storageandbushandler-binding spec: azureIdentity: storageandbushandler selector:
storageandbushandler --- apiVersion: apps/v1 kind: Deployment metadata: name:
busandstoragemessagehandlers labels: app: busandstoragemessagehandlers spec:
selector: matchLabels: app: busandstoragemessagehandlers template: metadata:
labels: app: busandstoragemessagehandlers aadpodidbinding: storageandbushandler
spec: containers: - name: secretlessfunc image: stephaneey/secretlessfunc:dev
imagePullPolicy: Always envFrom: - secretRef: name: misecret ---</LI-CODE></DIV>
<DIV>You can see that the secret is passed to the function through the
<STRONG>envFrom</STRONG> attribute. If you want to give it a test, you can use
the docker image I pushed to Docker Hub.</DIV> <DIV>&nbsp;</DIV> <DIV>and the
code of both functions, embedded in the above docker image (nothing
special):</DIV> <DIV><LI-CODE lang="csharp">[FunctionName("StorageQueue")]
public void StorageQueue([QueueTrigger("myqueue-items", Connection =
"AzureWebJobsStorage")]string myQueueItem, ILogger log) {
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}"); }
[FunctionName("ServiceBusQueue")] public void
ServiceBusQueue([ServiceBusTrigger("myqueue-items", Connection =
"ServiceBusConnection")] string myQueueItem, ILogger log) {
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}</LI-CODE></DIV> <DIV>&nbsp;</DIV> <DIV>You just need to make sure the
connection string names you mention in the triggers correspond to the settings
you specify in the K8s secret.</DIV> </DIV> Sat, 05 Mar 2022 16:00:53 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-secretless-azure-functions-from-within-aks/ba-p/3248143
stephaneey 2022-03-05T16:00:53Z How YOU can build a Mock REST API based on JSON
for ASP .NET and minimal API
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-can-build-a-mock-rest-api-based-on-json-for-asp-net-and/ba-p/3196039
<BLOCKQUOTE> <P>TLDR; this article describes how to create a Mock API from a
JSON file for minimal API in ASP .NET</P> </BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#what-and-why-mock-apis"
target="_blank" rel="noopener" name="what-and-why-mock-apis"></A>What and why
Mock APIs</H2> <P>To mock something means you respond with fake data, that data
can be in-memory, from a file or some kind of tool generating a bunch of
endpoints. There are some reasons why mocking an API could be a good idea:</P>
<UL> <LI><STRONG>Different teams work at different speeds</STRONG>. Let's say
your app is built by two different teams, or developers and one is faster than
the other. That's when it's handy to rely on a mocked API.</LI> <LI><STRONG>You
start with the frontend first</STRONG>. Your team/developer have decided to
build a full vertical and starts with the frontend and slowly work their way
towards the backend and the data source.</LI> </UL> <P>Ok, so we established
there might be a need to mock your API. So how do we do it? You want to be able
to specify the data you want to mock and there are some formats out there that
makes sense to have such mocked data in like JSON, XML or CSV perhaps. For the
sake of this article, we will go with JSON</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#planning-our-project-what-we-need-to-do"
target="_blank" rel="noopener"
name="planning-our-project-what-we-need-to-do"></A>Planning our project, what we
need to do</H2> <P>Ok, so high-level, we need to do the following:</P> <UL>
<LI><STRONG>Create a file in JSON</STRONG>, containing our routes and the
response. We imagine the JSON file looking something like so:</LI> </UL>
<P>&nbsp;</P> <LI-CODE lang="json"> { "Products": [ { "Id": 1, "Name": "Mock" },
{ "Id": 2, "Name": "Second Mock" } ] }</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <UL> <LI><STRONG>What routes do
we want?</STRONG><SPAN>&nbsp;</SPAN>A good API should implement GET, POST, PUT
and DELETE to support a RESTful approach.</LI> <LI><STRONG>Responding to
changes.</STRONG><SPAN>&nbsp;</SPAN>So what should happen if the user actually
calls POST, PUT or DELETE? Reasonably, the mocked file should change.</LI> </UL>
<P>Ok, so we know high-level what we need, and how things should behave, let's
see if we can choose our technical approach next.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#approach-lets-create-the-solution"
target="_blank" rel="noopener"
name="approach-lets-create-the-solution"></A>Approach - let's create the
solution</H2> <P>The normal way to setup routes, in Minimal API, is to call code
like so:</P> <P>&nbsp;</P> <LI-CODE lang="csharp">app.MapGet("/", () =&gt;
"Hello World!");</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>By
calling<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE><SPAN>&nbsp;</SPAN>we create a
route to "/" that when called responds with "Hello World". For the sake of our
API, we will have to
call<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE>,<SPAN>&nbsp;</SPAN><CODE>MapPost()</CODE>,<SPAN>&nbsp;</SPAN><CODE>MapPut()</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>MapDelete()</CODE>.</P>
<BLOCKQUOTE> <P>Here be dragons. Many of you, I'm sure, are used to working with
JSON in a typed manor, meaning you are likely to create types for your classes
and rely on methods
like<SPAN>&nbsp;</SPAN><CODE>Deserialize()</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>Serialize()</CODE>.
That's a great approach, however, for a mocked API that doesn't even exist yet,
this code doesn't rely on any of that :)</img></P> </BLOCKQUOTE> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#defining-the-routes-making-it-loosely-coupled"
target="_blank" rel="noopener"
name="defining-the-routes-making-it-loosely-coupled"></A>Defining the routes,
making it loosely coupled</H3> <P>It would be neat if these routes were loosely
coupled code that we could just bring in, when developing, and removed when we
are live with our app.</P>
<P>When<SPAN>&nbsp;</SPAN><CODE>app.MapGet()</CODE><SPAN>&nbsp;</SPAN>was
called, it invoked an instance of the
class<SPAN>&nbsp;</SPAN><CODE>WebApplication</CODE>. By creating an extension
method on said class, we have a way an approach to add code in a way that it's
nicely separated. We also need a static class to put said extension method in.
That means our code starting out should look something like so:</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">public static class
RouteMiddlewareExtensions { public static WebApplication UseExtraRoutes(this
WebApplication app) { } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#exercise-read-from-a-mock-file-and-add-support-for-raw-get-endraw-"
target="_blank" rel="noopener"
name="exercise-read-from-a-mock-file-and-add-support-for-raw-get-endraw-"></A>Exercise
- Read from a mock file, and add support
for<SPAN>&nbsp;</SPAN><CODE>GET</CODE></H2> <P>Ok, we know how we are starting,
a static class and an extension method, so let's make that happen:</P> <OL>
<LI>Run<SPAN>&nbsp;</SPAN><CODE>dotnet new</CODE>, to generate a new minimal API
project</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="bash"> dotnet new web -o MyApi
-f net6.0 cd Myapi</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <OL> <LI>Create a
file<SPAN>&nbsp;</SPAN><EM>MockMiddleware.cs</EM><SPAN>&nbsp;</SPAN>and give it
the following code:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp"> using
System.Text.Json; using System.Text.Json.Nodes; public static class
RouteMiddlewareExtensions { public static WebApplication UseExtraRoutes(this
WebApplication app) { } }</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <OL> <LI>Add code to read a JSON file into a JSON representation:</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="csharp"> var writableDoc =
JsonNode.Parse(File.ReadAllText("mock.json"));</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Note the choice
of<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE>, this is so we can make the JSON doc
writable, which we will need for POST, PUT and DELETE later on.</P> <OL>
<LI>Create the file<SPAN>&nbsp;</SPAN><EM>mock.json</EM><SPAN>&nbsp;</SPAN>and
give it the following content:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="json"> {
"Products": [ { "Id": 1, "Name": "Mock" }, { "Id": 2, "Name": "Second Mock" } ],
"Orders": [ { "Id": 1, "Name": "Order1" }, { "Id": 2, "Name": "Second Order" } ]
}</LI-CODE> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-get-endraw-"
target="_blank" rel="noopener"
name="add-raw-get-endraw-"></A>Add<SPAN>&nbsp;</SPAN><CODE>GET</CODE></H3>
<P>Let's support our first HTTP verb, GET.</P> <OL> <LI>Add the following
code:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp"> foreach(var elem in
writableDoc?.Root.AsObject().AsEnumerable()) { var arr = elem.Value.AsArray();
app.MapGet(string.Format("/{0}", elem.Key), () =&gt; elem.Value.ToString());
}</LI-CODE> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>In the above code, we
navigate into the root object. Then, we convert it to an object representation
and starts iterating over the keys, according to the mock file, that
means<SPAN>&nbsp;</SPAN><CODE>Products</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>Orders</CODE>.
Lastly, we setup the route and the callback, the route is
at<SPAN>&nbsp;</SPAN><CODE>elem.Key</CODE><SPAN>&nbsp;</SPAN>and the value we
want to return is at<SPAN>&nbsp;</SPAN><CODE>elem.Value</CODE>.</P> <OL> <LI>In
the file<SPAN>&nbsp;</SPAN><EM>Program.cs</EM><SPAN>&nbsp;</SPAN>add the
following line:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp">
app.UseExtraRoutes();</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>The preceding code will ensure our routes are added to the app.</P>
<OL> <LI>Run<SPAN>&nbsp;</SPAN><CODE>dotnet run</CODE>, to run the app</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="bash"> dotnet run</LI-CODE> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>Navigate to the
port indicated in the console output and navigate
to<SPAN>&nbsp;</SPAN><CODE>/products</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>/orders</CODE>,
they should both show an output</LI> </OL> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-get-endraw-by-id"
target="_blank" rel="noopener"
name="add-raw-get-endraw-by-id"></A>Add<SPAN>&nbsp;</SPAN><CODE>GET</CODE><SPAN>&nbsp;</SPAN>by
id</H3> <P>Ok, you got the basic GET case to work, what about filtering the data
with parameter. Using<SPAN>&nbsp;</SPAN><CODE>/products/1</CODE>, should just
return one record back. How do we do that?</P> <OL> <LI>Add the following code
in the foreach loop in<SPAN>&nbsp;</SPAN><EM>MockMiddlware.cs</EM>:</LI> </OL>
<P>&nbsp;</P> <LI-CODE lang="csharp">app.MapGet(string.Format("/{0}", elem.Key)
+ "/{id}", (int id) =&gt; { var matchedItem = arr.SingleOrDefault(row =&gt; row
.AsObject() .Any(o =&gt; o.Key.ToLower() == "id" &amp;&amp;
int.Parse(o.Value.ToString()) == id) ); return matchedItem; });</LI-CODE>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>The above code is
iterating over the rows for a specific route and looks for
an<SPAN>&nbsp;</SPAN><CODE>id</CODE><SPAN>&nbsp;</SPAN>property that matches
our<SPAN>&nbsp;</SPAN><CODE>{id}</CODE><SPAN>&nbsp;</SPAN>pattern. The found
item is returned.</P> <OL> <LI>Run<SPAN>&nbsp;</SPAN><CODE>dotnet
run</CODE><SPAN>&nbsp;</SPAN>to test out this code:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="bash"> dotnet run</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <OL> <LI>Navigate to<SPAN>&nbsp;</SPAN><CODE>/products/1</CODE>, you
should see the following JSON output:</LI> </OL> <P>&nbsp;</P> <LI-CODE
lang="bash"> { "Id": 1, "Name": "Mock" }</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Great, we got it to
work.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#exercise-write-data"
target="_blank" rel="noopener" name="exercise-write-data"></A>Exercise - write
data</H2> <P>Now that we can read data from our mock API, lets tackle writing
data. The fact that we
were<SPAN>&nbsp;</SPAN><CODE>JsonNode.Parse()</CODE><SPAN>&nbsp;</SPAN>in the
beginning makes it possible for us to use operations on
the<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE><SPAN>&nbsp;</SPAN>instance. In
short, our approach will be:</P> <UL> <LI>find the specific place in
the<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE>, that represents our mock data, and
change it</LI> <LI>save down the
whole<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE><SPAN>&nbsp;</SPAN>instance to
our<SPAN>&nbsp;</SPAN><EM>mock.json</EM>. If the user uses an operation to
change the data, that should be reflected in the Mock file.</LI> </UL> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-post-endraw-"
target="_blank" rel="noopener"
name="add-raw-post-endraw-"></A>Add<SPAN>&nbsp;</SPAN><CODE>POST</CODE></H3>
<P>To implement this route, we will
use<SPAN>&nbsp;</SPAN><CODE>MapPost()</CODE><SPAN>&nbsp;</SPAN>but we can't just
give it a typed object in the callback for the route, because we don't know what
it looks like. Instead, we will use the request object, read the body and add
that to the<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE>.</P> <OL> <LI>Add following
code to support<SPAN>&nbsp;</SPAN><CODE>POST</CODE>:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="csharp"> app.MapPost(string.Format("/{0}", elem.Key), async
(HttpRequest request) =&gt; { string content = string.Empty; using(StreamReader
reader = new StreamReader(request.Body)) { content = await
reader.ReadToEndAsync(); } var newNode = JsonNode.Parse(content); var array =
elem.Value.AsArray(); newNode.AsObject().Add("Id", array.Count() + 1);
array.Add(newNode); File.WriteAllText("mock.json", writableDoc.ToString());
return content; });</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>In the above code, we
have<SPAN>&nbsp;</SPAN><CODE>request</CODE><SPAN>&nbsp;</SPAN>as input parameter
to our route handler function.</P> <P>&nbsp;</P> <LI-CODE lang="csharp">
app.MapPost(string.Format("/{0}", elem.Key), async (HttpRequest request) =&gt;
{});</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>Then we read the body, using
a<SPAN>&nbsp;</SPAN><CODE>StreamReader</CODE>.</P> <P>&nbsp;</P> <LI-CODE
lang="csharp"> using(StreamReader reader = new StreamReader(request.Body)) {
content = await reader.ReadToEndAsync(); }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Next, we construct a
JSON representation from our received BODY:</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">var newNode = JsonNode.Parse(content);</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>This is followed by
locating the place to insert this new JSON and adding it:</P> <P>&nbsp;</P>
<LI-CODE lang="csharp">var array = elem.Value.AsArray();
newNode.AsObject().Add("Id", array.Count() + 1); array.Add(newNode);</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Lastly, we update the
mock file and respond something back to the calling client:</P> <P>&nbsp;</P>
<LI-CODE lang="csharp">File.WriteAllText("mock.json", writableDoc.ToString());
return content;</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-delete-endraw-"
target="_blank" rel="noopener"
name="add-raw-delete-endraw-"></A>Add<SPAN>&nbsp;</SPAN><CODE>DELETE</CODE></H3>
<P>To support deletion, we need a very similar approach to how we located an
entry by id parameter. We also need to locate where to delete in
the<SPAN>&nbsp;</SPAN><CODE>JsonObject</CODE>.</P> <OL> <LI>Add the following
code to support delete:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp">
app.MapDelete(string.Format("/{0}", elem.Key) + "/{id}", (int id) =&gt; { var
matchedItem = arr .Select((value, index) =&gt; new{ value, index})
.SingleOrDefault(row =&gt; row.value .AsObject() .Any(o =&gt; o.Key.ToLower() ==
"id" &amp;&amp; int.Parse(o.Value.ToString()) == id) ); if (matchedItem != null)
{ arr.RemoveAt(matchedItem.index); File.WriteAllText("mock.json",
writableDoc.ToString()); } return "OK"; });</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>First, we find the item
in question, but we also make sure that we know what the index of the found item
is. We will use this index later to remove the item. Hence, we get the following
code:</P> <P>&nbsp;</P> <LI-CODE lang="csharp"> var matchedItem = arr
.Select((value, index) =&gt; new{ value, index}) .SingleOrDefault(row =&gt;
row.value .AsObject() .Any(o =&gt; o.Key.ToLower() == "id" &amp;&amp;
int.Parse(o.Value.ToString()) == id) );</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV>
<P>Our<SPAN>&nbsp;</SPAN><CODE>matchedItem</CODE><SPAN>&nbsp;</SPAN>now contains
either NULL or an object that has
an<SPAN>&nbsp;</SPAN><CODE>index</CODE><SPAN>&nbsp;</SPAN>property. Using
this<SPAN>&nbsp;</SPAN><CODE>index</CODE><SPAN>&nbsp;</SPAN>property, we will be
able to perform deletions:</P> <P>&nbsp;</P> <LI-CODE lang="csharp"> if
(matchedItem != null) { arr.RemoveAt(matchedItem.index);
File.WriteAllText("mock.json", writableDoc.ToString()); }</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>To test writes, use
something like Postman or Advanced REST client, it should work.</P> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-route-info"
target="_blank" rel="noopener" name="add-route-info"></A>Add route info</H3>
<P>We're almost done, as courtesy towards the programmer using this code, we
want to print out what routes we have and support so it's easy to know what we
support.</P> <OL> <LI>Add this code, just at the start of the
method<SPAN>&nbsp;</SPAN><CODE>UseExtraRoutes()</CODE>:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="csharp"> // print API foreach (var elem in
writableDoc?.Root.AsObject().AsEnumerable()){
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(string.Format("POST /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("DELETE /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(" "); }</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>That's it, that's all we intend to implement. Hopefully, this is all
useful to you and you will be able to use it next you just want an API up and
running that you can build a front-end app off of.</P> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#full-code"
target="_blank" rel="noopener" name="full-code"></A>Full code</H3> <P>If you got
lost at any point, here's the full code:</P> <P><EM>Program.cs</EM></P>
<P>&nbsp;</P> <LI-CODE lang="csharp">using Mock; var builder =
WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/",
() =&gt; "Hello World!"); app.UseExtraRoutes(); // this is where our routes get
added app.Run();</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P><EM>MockMiddleware.cs</EM></P> <P>&nbsp;</P> <LI-CODE
lang="csharp">using System.Text.Json; using System.Text.Json.Nodes; namespace
Mock; public static class RouteMiddlewareExtensions { public static
WebApplication UseExtraRoutes(this WebApplication app) { var writableDoc =
JsonNode.Parse(File.ReadAllText("mock.json")); // print API foreach (var elem in
writableDoc?.Root.AsObject().AsEnumerable()){
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(string.Format("POST /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("DELETE /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(" "); } // setup routes foreach(var elem in
writableDoc?.Root.AsObject().AsEnumerable()) { var arr = elem.Value.AsArray();
app.MapGet(string.Format("/{0}", elem.Key), () =&gt; elem.Value.ToString());
app.MapGet(string.Format("/{0}", elem.Key) + "/{id}", (int id) =&gt; { var
matchedItem = arr.SingleOrDefault(row =&gt; row .AsObject() .Any(o =&gt;
o.Key.ToLower() == "id" &amp;&amp; int.Parse(o.Value.ToString()) == id) );
return matchedItem; }); app.MapPost(string.Format("/{0}", elem.Key), async
(HttpRequest request) =&gt; { string content = string.Empty; using(StreamReader
reader = new StreamReader(request.Body)) { content = await
reader.ReadToEndAsync(); } var newNode = JsonNode.Parse(content); var array =
elem.Value.AsArray(); newNode.AsObject().Add("Id", array.Count() + 1);
array.Add(newNode); File.WriteAllText("mock.json", writableDoc.ToString());
return content; }); app.MapPut(string.Format("/{0}", elem.Key), () =&gt; {
return "TODO"; }); app.MapDelete(string.Format("/{0}", elem.Key) + "/{id}", (int
id) =&gt; { var matchedItem = arr .Select((value, index) =&gt; new{ value,
index}) .SingleOrDefault(row =&gt; row.value .AsObject() .Any(o =&gt;
o.Key.ToLower() == "id" &amp;&amp; int.Parse(o.Value.ToString()) == id) ); if
(matchedItem != null) { arr.RemoveAt(matchedItem.index);
File.WriteAllText("mock.json", writableDoc.ToString()); } return "OK"; }); };
return app; } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#update-homework"
target="_blank" rel="noopener" name="update-homework"></A>Update - homework</H3>
<P>For your homework, see if you can implement PUT. :)</img></P> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#summary"
target="_blank" rel="noopener" name="summary"></A>Summary</H2> <P>I took you
through a journey of implementing a Mock API for minimal APIs. Hopefully, you
found this useful and can use it in a future project.</P> <P>Here's a repo for
the code<SPAN>&nbsp;</SPAN><A href="https://github.com/softchris/mock-sharp.git"
target="_blank" rel="noopener">repo</A></P> <BLOCKQUOTE> <P>Please comment if
you want me to make this into either a tool or a NuGet package :)</img></P>
</BLOCKQUOTE> Tue, 22 Feb 2022 01:06:24 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-can-build-a-mock-rest-api-based-on-json-for-asp-net-and/ba-p/3196039
Chris_Noring 2022-02-22T01:06:24Z Azure Cache for Redis TLS: Upcoming migration
to DigiCert Global G2 CA Root
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-cache-for-redis-tls-upcoming-migration-to-digicert-global/ba-p/3171086
<P><STRONG>This blog contains important information about TLS&nbsp;certificate
changes for Azure&nbsp;Cache for Redis&nbsp;endpoints
that&nbsp;<U>may</U>&nbsp;impact client connectivity.&nbsp;</STRONG>&nbsp;</P>
<P>&nbsp;</P> <P>In 2020, most Azure services were updated to use TLS
certificates from Certificate Authorities (CAs) that chain up to the DigiCert
Global G2 root. However, Azure Cache for Redis, remained on TLS certificates
issued by the Baltimore CyberTrust Root.&nbsp;Because the current Baltimore
CyberTrust Root will expire in May 2025, now is the time for Azure Cache for
Redis&nbsp;to switch to the DigiCert Global G2
CA&nbsp;Root*.&nbsp;The&nbsp;migration&nbsp;will&nbsp;start
in&nbsp;May&nbsp;2022, and finish by&nbsp;the end
of&nbsp;June&nbsp;2022.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>We expect that
most Azure&nbsp;Cache for </STRONG><STRONG>Redis&nbsp;customers will not be
impacted; however, your application&nbsp;may be impacted&nbsp;if you explicitly
specify a list of acceptable CAs (a practice known as “certificate
pinning”)</STRONG>.&nbsp;This change is limited&nbsp;to&nbsp;the&nbsp;<A
href="https://azure.microsoft.com/regions/" target="_blank"
rel="noopener">public Azure cloud and Azure Government cloud</A>.&nbsp;There are
no changes in Azure sovereign cloud offerings.</P> <P><STRONG>If any of your
client applications are pinned to&nbsp;the&nbsp;root CA&nbsp;Baltimore
CyberTrust Root&nbsp;or&nbsp;current&nbsp;intermediate CAs&nbsp;listed in the
table below</STRONG>,&nbsp;<STRONG>immediate action is required</STRONG>&nbsp;to
prevent disruption&nbsp;to&nbsp;connectivity to Azure&nbsp;Cache for
Redis.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><EM>*&nbsp;Other Azure service TLS
certificates may be issued by a different PKI. *</EM></P> <P>&nbsp;</P>
<P><EM>Overview of Action Required</EM></P> <P>&nbsp;</P> <UL> <LI>If your
client application has pinned to the Baltimore CyberTrust Root CA, in addition
to Baltimore, add&nbsp;the <A
href="https://www.digicert.com/kb/digicert-root-certificates.htm"
target="_blank" rel="noopener">DigiCert Global Root G2</A> to your trusted root
store&nbsp;before May 2022.&nbsp;</LI> <LI>If your client application has pinned
to the&nbsp;intermediate&nbsp;CAs, in addition to&nbsp;Microsoft RSA TLS CAs,
add the&nbsp;Microsoft Azure TLS Issuing CAs to your trusted root
store&nbsp;before May 2022.&nbsp;</LI> <LI>Keep using the current root or
intermediate CAs in your applications or devices until the transition period is
completed (necessary to prevent connection
interruption).&nbsp;<EM>&nbsp;</EM></LI> </UL> <P><FONT size="5"><STRONG><U>How
to check if&nbsp;your client application is affected</U></STRONG></FONT></P>
<P>Check if your application has pinned to&nbsp;&nbsp;</P> <UL> <LI>Root
CA:&nbsp;Baltimore CyberTrust Root CA&nbsp;or,&nbsp;&nbsp;</LI> <LI>Intermediate
CA: Microsoft&nbsp;RSA&nbsp;TLS CA&nbsp;01&nbsp;</LI> <LI>Intermediate CA:
Microsoft&nbsp;RSA&nbsp;TLS CA&nbsp;02&nbsp;</LI> </UL> <P>Search your source
code for the thumbprint, Common Name, and other cert properties of any of
the&nbsp;root CA&nbsp;or intermediate CAs.&nbsp;If there is a match, then your
application will be impacted,&nbsp;<STRONG>immediate action is
required</STRONG>.</P> <P>&nbsp;</P> <P><FONT size="5"><STRONG><U>Action
required&nbsp;</U></STRONG></FONT></P> <P>1. To continue without disruption due
to this change, Microsoft recommends&nbsp;that, in addition to Baltimore, client
applications or devices trust the&nbsp;root CA&nbsp;–&nbsp;DigiCert
Global&nbsp;Root&nbsp;G2:&nbsp;</P> <P><A
href="https://www.digicert.com/kb/digicert-root-certificates.htm"
target="_blank" rel="noopener">DigiCert Global Root G2&nbsp;<BR
/></A>(Thumbprint:&nbsp;df3c24f9bfd666761b268073fe06d1cc8d4f82a4)&nbsp;</P>
<P>Intermediate certificates are expected to
change&nbsp;more&nbsp;frequently&nbsp;than the root CAs.&nbsp;Customers
who&nbsp;use certificate pinning are&nbsp;recommended to&nbsp;not take
dependencies on them and instead pin&nbsp;to&nbsp;the root certificate as it
rolls less frequently.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>2.&nbsp;&nbsp;<SPAN
data-contrast="auto">To prevent future disruption,&nbsp;you&nbsp;should also add
the following roots&nbsp;to the trusted store. This will save you from the
allowlist effort in near future&nbsp;if you add the&nbsp;recommended
root&nbsp;CAs now:</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI><A title="DigiCert Global Root G3"
href="https://www.digicert.com/kb/digicert-root-certificates.htm" target="_self"
rel="nofollow noopener noreferrer"><SPAN data-contrast="none">DigiCert
Global&nbsp;</SPAN><SPAN data-contrast="none">Root</SPAN><SPAN
data-contrast="none">&nbsp;G3</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;<BR
/></SPAN><SPAN data-contrast="auto">(Thumbprint:
7e04de896a3e666d00e687d33ffad93be83d349e)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><A
href="https://www.microsoft.com/pkiops/certs/Microsoft%20RSA%20Root%20Certificate%20Authority%202017.crt"
target="_blank" rel="noopener noreferrer"><SPAN data-contrast="none">Microsoft
RSA Root Certificate Authority 2017</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;<BR
/></SPAN><SPAN data-contrast="auto">(Thumbprint:
73a5e64a3bff8316ff0edccc618a906e4eae4d74)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><A
href="https://www.microsoft.com/pkiops/certs/Microsoft%20ECC%20Root%20Certificate%20Authority%202017.crt"
target="_blank" rel="noopener noreferrer"><SPAN data-contrast="none">Microsoft
ECC Root Certificate Authority 2017</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;<BR
/></SPAN><SPAN data-contrast="auto">(Thumbprint:
999a64c37ff47d9fab95f14769891460eec4c3c5)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P><BR />3. If you&nbsp;are currently pinning to the intermediate CAs
and&nbsp;have a requirement to&nbsp;continue&nbsp;pinning&nbsp;to intermediate
CAs,&nbsp;to&nbsp;prevent future disruption, you should also add the
intermediate&nbsp;<SPAN>Microsoft Azure ECC TLS CAs listed in the table below to
the trusted store.</SPAN></P> <P>List of possible Root CAs is available here: <A
href="https://docs.microsoft.com/azure/security/fundamentals/tls-certificate-changes#what-is-changing"
target="_blank" rel="noopener">Azure TLS Certificate Changes | Microsoft
Docs</A></P> <P>&nbsp;</P> <P><EM><U>Support</U></EM></P> <P><SPAN
data-contrast="auto">If you have any questions, get answers from community
experts in <A href="https://aka.ms/redis/QnA" target="_self">Microsoft
Q&amp;A</A>. If you have completed step 1 and need technical help, please open
a </SPAN><A
href="https://ms.portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/newsupportrequest"
target="_blank" rel="noopener nofollow noreferrer"><SPAN
data-contrast="none">support request</SPAN></A><SPAN data-contrast="auto"> with
the options below&nbsp;and a member from our engineering team will get back to
you.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI><SPAN data-contrast="auto">For&nbsp;<EM>Issue type</EM>,
select&nbsp;<STRONG>Technical</STRONG>.</SPAN></LI> <LI><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">For&nbsp;<EM>Subscription</EM>,
select your subscription.&nbsp;</SPAN></LI> <LI><SPAN
data-contrast="auto">For&nbsp;<EM>Service</EM>, select&nbsp;<STRONG>My
Services</STRONG>, then select&nbsp;<STRONG>Cache for
Redis</STRONG>.</SPAN></LI> <LI><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">For&nbsp;<EM>Resource</EM>,
select your resource.&nbsp;</SPAN></LI> <LI><SPAN
data-contrast="auto">For&nbsp;<EM>Problem type</EM>,
select&nbsp;<STRONG>Availability, Connectivity and
Timeouts</STRONG>.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">For&nbsp;<EM>Problem subtype</EM>,
select&nbsp;<STRONG>Connection Error</STRONG>.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P>&nbsp;</P> <P><U><EM>Certificate Renewal Summary&nbsp;</EM></U></P>
<P>The table below provides information about the certificates that are being
rolled out. Depending on which certificate your service uses for establishing
TLS connections, action may be needed to prevent loss of
connectivity.&nbsp;&nbsp;</P> <P>&nbsp;</P> <TABLE width="587"> <TBODY> <TR> <TD
width="58"> <P><STRONG>Certificate</STRONG>&nbsp;</P> </TD> <TD width="175">
<P><STRONG>Current</STRONG>&nbsp;</P> </TD> <TD width="264"> <P><STRONG>Post
Rollover (May 2022)</STRONG>&nbsp;</P> </TD> <TD width="90">
<P><STRONG>Action</STRONG>&nbsp;</P> </TD> </TR> <TR> <TD width="58">
<P>Root&nbsp;</P> </TD> <TD width="175"> <P>Thumbprint&nbsp;(SHA1):
d4de20d05e66fc53fe1a50882c78db2852cae474&nbsp;<BR />Expiration: Monday, May 12,
2025, 4:59:00 PM&nbsp;<BR />Subject Name:&nbsp;<BR />CN = Baltimore CyberTrust
Root&nbsp;</P> <P>OU = CyberTrust&nbsp;<BR />O = Baltimore&nbsp;<BR />C =
IE&nbsp;&nbsp;</P> </TD> <TD width="264"> <P>Thumbprint&nbsp;(SHA1):
df3c24f9bfd666761b268073fe06d1cc8d4f82a4&nbsp;</P> <P>Expiration: ‎Friday,
‎January ‎15, ‎2038 5:00:00 AM&nbsp;<BR />Subject Name:&nbsp;<BR />CN = DigiCert
Global Root G2&nbsp;<BR />OU = <A href="http://www.digicert.com/"
target="_blank" rel="noopener">www.digicert.com&nbsp;<BR /></A>O = DigiCert
Inc&nbsp;<BR />C = US &nbsp;</P> </TD> <TD width="90">
<P><STRONG>Required&nbsp;by</STRONG></P> <P><STRONG>April 30,
2022</STRONG>&nbsp;</P> </TD> </TR> <TR> <TD width="58"> <P>Root&nbsp;</P> </TD>
<TD width="175"> <P>&nbsp;&nbsp;</P> </TD> <TD width="264"> <P>Thumbprint
(SHA1):&nbsp;<BR />7e04de896a3e666d00e687d33ffad93be83d349e&nbsp;<BR
/>Expiration: Friday, ‎January ‎15, ‎2038 5:00:00 AM&nbsp;<BR />CN = DigiCert
Global Root G3&nbsp;<BR />OU =&nbsp;<A href="http://www.digicert.com/"
target="_blank" rel="noopener">www.digicert.com&nbsp;<BR /></A>O = DigiCert
Inc&nbsp;<BR />C = US&nbsp;</P> <P>&nbsp;</P> <P>Thumbprint (SHA1):&nbsp;<BR
/>73a5e64a3bff8316ff0edccc618a906e4eae4d74&nbsp;<BR />Expiration: Friday, ‎July
‎18, ‎2042 4:00:23 PM&nbsp;<BR />CN = Microsoft RSA Root Certificate Authority
2017&nbsp;<BR />O = Microsoft Corporation&nbsp;<BR />C = US&nbsp;</P>
<P>&nbsp;</P> <P>Thumbprint (SHA1):&nbsp;<BR
/>999a64c37ff47d9fab95f14769891460eec4c3c5&nbsp;<BR />Expiration: Friday, ‎July
‎18, ‎2042 4:16:04&nbsp;PM&nbsp;<BR />CN = Microsoft&nbsp;ECC&nbsp;Root
Certificate Authority 2017&nbsp;<BR />O = Microsoft Corporation&nbsp;<BR />C =
US&nbsp;</P> <P>&nbsp;</P> </TD> <TD width="90"> <P><STRONG>Recommended&nbsp;to
prevent&nbsp;disruption&nbsp;<BR />from&nbsp;future changes</STRONG>&nbsp;</P>
</TD> </TR> <TR> <TD width="58"> <P>Intermediates&nbsp;</P> </TD> <TD
width="175"> <P><U>Thumbprints&nbsp;(SHA1):&nbsp;</U>&nbsp;</P> <P> &nbsp;</P>
<P>CN = Microsoft RSA TLS CA 01&nbsp;</P> <P>Thumbprint:&nbsp;</P>
<P>703d7a8f0ebf55aaa59f98eaf4a206004eb2516a&nbsp;</P> <P>&nbsp;</P> <P>CN =
Microsoft RSA TLS CA 02&nbsp;</P> <P>Thumbprint:
b0c2d2d13cdd56cdaa6ab6e2c04440be4a429c75&nbsp;</P> <P> &nbsp;</P> <P>Expiration:
‎Tuesday, ‎October ‎8, ‎2024 12:00:00 AM.&nbsp;&nbsp;<BR />Subject
Name:&nbsp;&nbsp;</P> <P>O = Microsoft Corporation&nbsp;</P> <P>C = US&nbsp;</P>
</TD> <TD width="264"> <P><U>Thumbprints&nbsp;(SHA1):&nbsp;</U>&nbsp;</P>
<P> &nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 01&nbsp;<BR
/>Thumbprint: &nbsp;</P> <P>b9ed88eb05c15c79639493016200fdab08137af3&nbsp;</P>
<P>&nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 02&nbsp;</P>
<P>Thumbprint: &nbsp;</P> <P>c5fb956a0e7672e9857b402008e7ccad031f9b08&nbsp;</P>
<P>&nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 05&nbsp;&nbsp;</P>
<P>Thumbprint: &nbsp;</P> <P>56f1ca470bb94e274b516a330494c792c419cf87&nbsp;</P>
<P>&nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 06&nbsp;</P>
<P>Thumbprint: &nbsp;</P> <P>8f1fd57f27c828d7be29743b4d02cd7e6e5f43e6&nbsp;</P>
<P>&nbsp;</P> <P>Expiration: ‎Thursday, ‎June&nbsp;27,
‎2024&nbsp;4:59:59&nbsp;PM;&nbsp;<BR />Subject Name:&nbsp;</P> <P>Issuer
=&nbsp;Microsoft&nbsp;RSA&nbsp;Root Certificate Authority 2017&nbsp;</P> <P>O =
Microsoft Corporation&nbsp;</P> <P>C = US&nbsp;</P> <P>&nbsp;</P>
<P>-------------------------------------------------------</P> <P>&nbsp;</P>
<P>CN =&nbsp;Microsoft Azure TLS Issuing CA 01&nbsp;<BR />Thumbprint: &nbsp;</P>
<P>2f2877c5d778c31e0f29c7e371df5471bd673173&nbsp;</P> <P>&nbsp;</P> <P>CN
=&nbsp;Microsoft Azure TLS Issuing CA 02&nbsp;</P> <P>Thumbprint: &nbsp;</P>
<P>e7eea674ca718e3befd90858e09f8372ad0ae2aa&nbsp;</P> <P>&nbsp;</P> <P>CN
=&nbsp;Microsoft Azure TLS Issuing CA 05&nbsp;<BR />Thumbprint: &nbsp;</P>
<P>6c3af02e7f269aa73afd0eff2a88a4a1f04ed1e5&nbsp;</P> <P>&nbsp;</P> <P>CN
=&nbsp;Microsoft Azure TLS Issuing CA 06&nbsp;</P> <P>Thumbprint: &nbsp;</P>
<P>30e01761ab97e59a06b41ef20af6f2de7ef4f7b0&nbsp;</P> <P>&nbsp;</P>
<P>Expiration: ‎Thursday, ‎June&nbsp;27,
‎2024&nbsp;4:59:59&nbsp;PM;&nbsp;&nbsp;<BR />Subject Name:&nbsp;&nbsp;</P>
<P>Issuer = DigiCert Global Root G2&nbsp;</P> <P>O =&nbsp;DigiCert Inc&nbsp;</P>
<P>C = US&nbsp;</P> <P>&nbsp;</P> </TD> <TD width="90">
<P><STRONG>Required&nbsp;by</STRONG></P> <P><STRONG>April 30,
2022&nbsp;</STRONG>&nbsp;</P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> Sat, 05 Mar 2022 00:19:53 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-cache-for-redis-tls-upcoming-migration-to-digicert-global/ba-p/3171086
Shruti_Pathak 2022-03-05T00:19:53Z Building a Cloud Native Lab - Scripted
Edition
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-scripted-edition/ba-p/3169848
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">Last year I did a blog post on how to build a cloud native lab at home
based on Azure Stack HCI and AKS:</P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;"><A
title="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504</A></P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; margin-left: .375in; font-family:
Calibri; font-size: 11.0pt;">In that post I mentioned in passing that I'd also
be looking into doing day two stuff. And I did. It just didn't materialize in a
new post :)</img></P> <P style="margin: 0in; margin-left: .375in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;">What I realized when testing
out stuff was that while I did use my own blog post for reference it was sort of
unpractical scrolling up and down the page to find the right command, and
jumping between various tools and ways of solving things. I thought that "hey,
wouldn't it be nice if I could just start a script and have it go through
everything automatically?" Of course it would; it was just a matter of a little
bit of effort getting there. (Or almost there at least.)</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">TL;DR - I have a repo over at <A
title="https://github.com/ahelland/Cloud-Native-DevLab"
href="https://github.com/ahelland/Cloud-Native-DevLab" target="_blank"
rel="noopener">https://github.com/ahelland/Cloud-Native-DevLab</A> where I have
made a collection of scripts to set you up with an AKS cluster along with a
couple of features you may need/want to test on your Windows Server/Azure Stack
HCI box.</P> <P style="margin: 0in; margin-left: .375in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; margin-left: .375in;
font-family: Calibri; font-size: 11.0pt;">Still here? I'll call out a few things
to provide a backdrop and a couple of explanations.</P> <P style="margin: 0in;
margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">I wanted to have a repo you could pull down and step through
interactively on your client computer using .NET Interactive Notebooks. That's a
great way to run code inline in a document. Turns out that doesn't work when you
attempt to setup a remote PowerShell session.</P> <P style="margin: 0in;
margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">I was also thinking about having the repo set up Visual Studio Code and
all the UI tooling you need (locally on the host system). That sort of worked,
but that would assume you're running the Desktop Experience which you're not
doing if you use Azure Stack HCI. So I made it a command line experience - you
probably need to copy the initial bootstrapping from your desktop to the server,
but as part of the bootstrap Git is installed and the repo pulled down so you
can do the rest without having a CTRL-C + CTRL-V party.</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">So, looking at the commit dates it seems this was done a long time ago?
Yes and no. A couple of things went up early, but I needed some QA time and was
also stuck on bugs with the product and the components so it wasn't that easy. I
didn't want to provide a guide sending you straight into "this doesn't work".
There's also other things I spent time testing that ended up being left out. And
I wasn't in a hurry I guess :)</img></P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">Modularizing
it however was not an error; that was a deliberate choice. I have separated
things into sections that should be independent of each other&nbsp; - you just
want to test Flux and don't care about Grafana? No prob.</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">The repo does not go into great lengths explaining choices and the
"why" of things. I wanted to keep it more to the point. That way it is easier to
update and replace things as well.</P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">Here are
sections and components of the guide:</P> <UL style="direction: ltr;
unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="disc"> <LI
style="margin-top: 12pt; margin-bottom: 12pt; vertical-align: middle; color:
#201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/01_Bootstrap"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">01_Bootstrap</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />We install the necessary tooling and install a management and a
workload cluster.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/02_Monitoring"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">02_Monitoring</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />We install Prometheus, Grafana and Jaeger. Loadbalancers for all
three are also created (if you want), but not DNS names.</SPAN></LI> <LI
style="margin-top: 12pt; margin-bottom: 12pt; vertical-align: middle; color:
#201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/03_Azure_Policy"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">03_Azure_Policy</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />We create a service principal (with a "Policy Writer" role) and
use this to enable Azure Policy in our cluster.</SPAN></LI> <LI
style="margin-top: 12pt; margin-bottom: 12pt; vertical-align: middle; color:
#201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/04_ExternalAccess"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">04_ExternalAccess</SPAN></A><SPAN style="font-family: Calibri;
font-size: 11.0pt;"><BR />We install Nginx and CertManager, and configure
integration with Azure DNS. This enables you to have Kubernetes take care of
configuring DNS for you and enroll a certificate from Let's Encrypt when you
deploy an application to the cluster.</SPAN></LI> <LI style="margin-top: 12pt;
margin-bottom: 12pt; vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/05_MonitoringIngress"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">05_MonitoringIngress</SPAN></A><SPAN style="font-family: Calibri;
font-size: 11.0pt;"><BR />This section provides configuration files for enabling
ingress for Prometheus and Jaeger.</SPAN></LI> <LI style="margin-top: 12pt;
margin-bottom: 12pt; vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/06_AzureServiceOperator"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">06_AzureServiceOperator</SPAN></A><SPAN style="font-family: Calibri;
font-size: 11.0pt;"><BR />Brief explanation on Azure Service Operator with links
to MS docs.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/07_Dapr"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">07_Dapr</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />Explanation of Dapr plus installation commands. Links to more
info and samples.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/08_Flux"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">08_Flux</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />Installation of a sample app using a GitOps approach with
Flux.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/Samples"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">Samples</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />Samples for testing out the basic functionality of the cluster
based on the installations in the sections above.</SPAN></LI> </UL> <P
style="margin-left: .375in; margin-top: 12pt; margin-bottom: 12pt; font-family:
Calibri; font-size: 11.0pt; color: #201f1e;">While the focus is more on the
scripts than explanations I have attempted to include some instructions. Note
that you also need to fill in the blanks yourself for variables unique to your
environment. (Cloning the repo and just executing the PowerShell immediately
will most likely throw errors at you.)</P> <P style="margin-left: .375in;
margin-top: 12pt; margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt;
color: #201f1e;">I'm not saying this is the only way, or the right way for
everyone. And since the focus is on dev use it could very well be that you don't
care about things like Azure Policy. Having it all in one location and tested in
a cohesive manner should help though.</P> <P style="margin-left: .375in;
margin-top: 12pt; margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt;
color: #201f1e;">I'm currently working on testing workload identities. Worked
fairly easy on AKS in the cloud. Not as easy in the on-prem variant so we'll see
how that plays out. Point being - I try to add things to the guide, and will
attempt to both optimize and re-arrange content if needed. I also intend/want to
create more complex samples; but need to have the baseline working before going
all in on that.</P> <P style="margin-left: .375in; margin-top: 12pt;
margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt; color: #201f1e;">I
guess the value of all of this is still limited if you don't have the hardware
to run things. That has made me think of whether I should create a version for
AKS running in Azure as well, but I haven't decided - there are already a ton of
guides and documentation out there for that purpose.</P> <P style="margin-left:
.375in; margin-top: 12pt; margin-bottom: 12pt; font-family: Calibri; font-size:
11.0pt; color: #201f1e;"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="AzureStackHCI_Cluster.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/348449iCA020D9CCF30D643/image-size/large?v=v2&amp;px=999"
role="button" title="AzureStackHCI_Cluster.png" alt="AzureStackHCI_Cluster.png"
/></span></P> <P>&nbsp;</P> <P style="margin-left: .375in; margin-top: 12pt;
margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt; color:
#201f1e;">Here's the link to the repo again:<BR /><A title="GitHub -
ahelland/Cloud-Native-DevLab: Installation scripts and instructions for setting
up an on-prem dev lab based on Azure Stack HCI AKS."
href="https://github.com/ahelland/Cloud-Native-DevLab" target="_blank"
rel="noopener">https://github.com/ahelland/Cloud-Native-DevLab</A></P> <P
style="margin-left: .375in; margin-top: 12pt; margin-bottom: 12pt; font-family:
Calibri; font-size: 11.0pt; color: #201f1e;">As always - stay tuned for more
cloud fun!</P> Tue, 15 Feb 2022 20:06:13 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-scripted-edition/ba-p/3169848
Andreas Helland 2022-02-15T20:06:13Z Winners Announced: Azure Hack for Wellness
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-hack-for-wellness/ba-p/3165373
<P><SPAN>The nature of work has changed. The move to hybrid jobs is underway,
and the developer community is uniquely equipped to reimagine experiences that
enrich and fulfill employees’ wellness. Over 200 developers participated in the
<A href="https://wellnesshack.devpost.com/" target="_self">Microsoft Azure Hack
for Wellness</A>&nbsp;virtual hackathon where the event specifically focused on
using Azure services to help organizations support their members' well beings.
Organizations could be businesses, schools, or communities. As a bonus,
applications that integrate into Microsoft Teams were eligible for additional
prize. </SPAN></P> <P>&nbsp;</P> <P><SPAN>See below for the top 3 winning
projects:</SPAN></P> <P>&nbsp;</P> <P><FONT size="6"><SPAN>1st Place: <A
href="https://devpost.com/software/rest-azzure" target="_self">Rest
Azzure</A></SPAN></FONT></P> <P><SPAN>Created by: Nefertiti Bourne, Ed Hart,
Marcos A Oliva</SPAN></P> <P><SPAN>A mobile app that connects with MS Teams and
chatbot and dashboard.</SPAN></P> <P><SPAN><LI-VIDEO
vid="https://youtu.be/N8Y6imL3iLo" align="center" size="large" width="600"
height="450" uploading="false"
thumbnail="https://i.ytimg.com/vi/N8Y6imL3iLo/hqdefault.jpg"
external="url"></LI-VIDEO><BR /></SPAN></P> <P><FONT size="6"><SPAN>2nd Place:
<A href="https://devpost.com/software/wellness-assistant" target="_self">Feeling
Well</A></SPAN></FONT></P> <P><SPAN>Created by: Zechen Lu, Amina Fong</SPAN></P>
<P><SPAN>Feeling Well incentivizes employees to take breaks for developing
wellness by offering monthly rewards based on the amount of breaks they
take.</SPAN></P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=9jNMFnzjeaA&amp;t=13s" align="center"
size="large" width="600" height="338" uploading="false"
thumbnail="https://i.ytimg.com/vi/9jNMFnzjeaA/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><FONT size="6"><SPAN>3rd
place: <A href="https://devpost.com/software/outstanding-meetings"
target="_self">Outstanding Meetings</A></SPAN></FONT></P> <P><SPAN>Created by:
Rupesh Kurvankattil, Tariku Tessema, Steve Jones</SPAN></P> <P><SPAN>Motivates
individuals in the workspace to practice healthy habits by standing up during
meetings.</SPAN></P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=bKxML45oewU" align="center" size="large"
width="600" height="338" uploading="false"
thumbnail="https://i.ytimg.com/vi/bKxML45oewU/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><FONT size="5"><U>Thank
You</U></FONT></P> <P>On behalf of the Microsoft U.S. Azure team, I'd like to
thank all of the participants, and congratulate the winners on a great job!</P>
<P>&nbsp;</P> <P>Thank you to the judges who volunteered their time to give back
to the community! Special thanks to <STRONG>Kendall Roden</STRONG>,
<STRONG>Nicole Herskowitz</STRONG>, <STRONG>Rajmohan Rajagopalan</STRONG>,
<STRONG>Scott Prather</STRONG>, <STRONG>Tomomi Imura</STRONG>, <STRONG>Uthappa
Kattera Chengappa</STRONG></P> <P>&nbsp;</P> <P><U><FONT size="5">Coming
up</FONT></U></P> <P>There are two more virtual hackathon events going on right
now! Take a look and feel free to sign up for one or more of these events!</P>
<UL> <LI><A href="https://aka.ms/hackthetrialtc" target="_self">Microsoft Azure
Trial Hackathon on DEV</A> - What's the most interesting thing you can do with a
free Azure trial? Submissions due March 8, 2022. Open to global
audiences.&nbsp;</LI> <LI><A href="https://aka.ms/humanitarianhacktc"
target="_self">Microsoft US Azure AI Hack for Humanitarian Action</A> - Build
for disaster response, refugees and displaced people, human rights, or the needs
of women and children with Azure AI. Submissions due March 28, 2022. Open to
U.S. residents.</LI> </UL> <P>&nbsp;</P> Mon, 14 Feb 2022 23:42:38 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-hack-for-wellness/ba-p/3165373
NinaSui 2022-02-14T23:42:38Z How to utilize active geo-replication in Azure
Cache for Redis
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-to-utilize-active-geo-replication-in-azure-cache-for-redis/ba-p/3074404
<P>In an increasingly global and online world, the speed, availability, and
consistency of data has never been more important. We’ve seen customers of all
sizes take advantage of the outstanding performance of <A
href="https://azure.microsoft.com/services/cache/" target="_blank">Azure Cache
for Redis</A>, but we’ve also heard your requests for a Redis solution that
offers even higher availability and more robust geographic consistency. That’s
why we’re excited to announce the latest element of our collaboration with <A
href="https://redis.com/cloud-partners/microsoft-azure/" target="_blank">Redis
Corporation</A>—the general availability of active geo-replication in our
Enterprise offering of Azure Cache for Redis.</P> <P>&nbsp;</P> <H1>Active
geo-replication background</H1> <P>Active geo-replication is a powerful tool
that enables Azure Cache for Redis clusters to be linked together for seamless
active-active replication of data. In other words, you can write to one Redis
cluster and your data will be automatically copied to the other linked clusters,
and vice versa. Data is quickly duplicated with strong eventual consistency
between clusters. This multi-primary, multi-write architecture is built on <A
href="https://redis.com/redis-enterprise/technology/active-active-geo-distribution/"
target="_blank">conflict-free replicated data types (CRDTs)</A>, a
groundbreaking technology that enables seamless conflict resolution.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="kteegarden_0-1643313027910.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343084iB7053269D808AB29/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_0-1643313027910.png"
alt="kteegarden_0-1643313027910.png" /></span></P> <H1>Use-cases for active
geo-replication</H1> <P>Active geo-replication gives developers a powerful tool
to tackle otherwise frustrating technical challenges, such as:</P> <P>&nbsp;</P>
<H2>Enterprise-grade Availability</H2> <P>As Redis steadily increases in
popularity and adoption, it is becoming an essential part of mission-critical
applications. Many customers in the financial services, retail, and software
industries need Redis in both high availability and disaster recovery scenarios.
The Enterprise tiers of Azure Cache for Redis help deliver both. Zone redundancy
already enables Enterprise Azure Cache for Redis to be resilient to zone-level
outages and reach a <A
href="https://azure.microsoft.com/support/legal/sla/cache/v1_1/"
target="_blank">99.99% availability SLA</A>. Adding active geo-replication helps
further protect against region-level outages, <A
href="https://azure.microsoft.com/support/legal/sla/cache/v1_1/"
target="_blank">boosting the availability SLA up to 99.999%</A>.</P>
<P>&nbsp;</P> <P>Even better, experiencing the benefits of higher availability
is straightforward. Even if there is an outage in one region, the caches in
other regions will have the latest synchronized copy of the data in your cache.
And when the region comes back online, the original cache will automatically be
updated with data written to the linked regions during the outage.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="kteegarden_1-1643313027916.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343085iA140E1DDFA3DAF94/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_1-1643313027916.png"
alt="kteegarden_1-1643313027916.png" /></span></P> <P>&nbsp;</P> <H2>Local
Latency Performance</H2> <P>Customer expectations for speedy application
performance are sky high. <A
href="https://redis.com/wp-content/uploads/2021/08/DS-RedisLabs-Retail-Transformation.pdf"
target="_blank">Nine in ten shoppers will abandon a retail website if it is too
slow</A>. As applications become global, this presents a challenge with caching.
Your cache may be quick, but if your customers are talking to a cache that is
halfway around the world, network latency can erase the benefits of the cache.
With active geo-replication, you can get local latency performance while
maintaining cache consistency because users and applications can be directed to
the geo-replicated cache closest to them.</P> <P>&nbsp;</P> <P>&nbsp;</P>
<H2>Global Synchronization of Data</H2> <P>Managing multiple sources of data can
be a frustrating challenge. Scale or latency constraints can force you to silo
your app infrastructure by geography, which then can introduce data consistency
issues. Some applications are designed to have the same experience across
borders, which confounds the problem even further. For example, a game developer
might want all players to see a global leaderboard which ranks players across
regions. While Redis is a common way to implement a leaderboard, aggregating
multiple independent leaderboards from separate Redis instances is a hassle.
With active geo-replication, however, the linked Redis instances can all update
the same shared sorted set leaderboard, meaning a new high score in Tokyo will
be automatically ranked next to a score from a player in London.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="kteegarden_2-1643313027929.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343086i1F8842A7C6FF9B0F/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_2-1643313027929.png"
alt="kteegarden_2-1643313027929.png" /></span></P> <H1>Try it on Azure</H1>
<P>Azure Cache for Redis gives you a fully-managed Redis experience. With full
portal integration, <A
href="https://docs.microsoft.com/azure/azure-cache-for-redis/cache-how-to-active-geo-replication"
target="_blank">configuring active geo-replication</A> is straightforward, and
gives you a wide selection of regions to choose from in the ever-growing Azure
footprint. <A href="https://azure.microsoft.com/en-us/free/" target="_blank">Try
active geo-replication today</A> in the Enterprise and Enterprise flash tiers of
Azure Cache for Redis, read how to <A
href="https://docs.microsoft.com/azure/azure-cache-for-redis/cache-how-to-active-geo-replication"
target="_blank">configure the feature</A>, or check out a <A
href="https://github.com/MSFTeegarden/Azure-Redis-Active-Geo-Demo"
target="_blank">simple active geo-replication demo</A>. &nbsp;</P> Wed, 02 Feb
2022 16:00:00 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-to-utilize-active-geo-replication-in-azure-cache-for-redis/ba-p/3074404
kteegarden 2022-02-02T16:00:00Z New Learning path on Python 11 parts - check it
out
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-on-python-11-parts-check-it-out/ba-p/3101700
<P>On the Academic team, we set out to create a long path of Python modules. The
idea was to address all the concerns you might have starting out with Python.
All the way from learning the basic building blocks to managing larger Python
projects. Whether you're into #iot #datascience #machinelearning or #webdev -
this is a great way to start.</P> <P>&nbsp;</P> <P>Check out the below article
for more details on the learning path&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/educator-developer-blog/how-you-can-learn-python-with-this-11-part-series/ba-p/3101534#M779"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/educator-developer-blog/how-you-can-learn-python-with-this-11-part-series/ba-p/3101534#M779</A></P>
<P>&nbsp;</P> <P>If you just want to start learning, here's the path on
aka.ms/learn</P> <P><A
href="https://docs.microsoft.com/en-us/learn/paths/beginner-python/"
target="_self">Python path, 11 modules</A>&nbsp;</P> <P>&nbsp;</P> <P>It's free
- start learning today.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="pexels-lukas-296282.jpg" style="width:
800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/344356iF0C130D7263138F6/image-size/large?v=v2&amp;px=999"
role="button" title="pexels-lukas-296282.jpg" alt="pexels-lukas-296282.jpg"
/></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> Tue, 01 Feb 2022 23:28:17 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-on-python-11-parts-check-it-out/ba-p/3101700
Chris_Noring 2022-02-01T23:28:17Z Managing Microsoft365 with Microsoft365DSC and
Azure DevOps
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/managing-microsoft365-with-microsoft365dsc-and-azure-devops/ba-p/3054333
<P><A href="https://microsoft365dsc.com/" target="_blank" rel="nofollow
noopener">Microsoft365DSC</A><SPAN>&nbsp;is an&nbsp;Open-Source PowerShell
Desired State Module. It allows configuration, monitoring, exporting, reporting
and assessment of M365 tenants. Many organizations are implementing DevOps
practices and with&nbsp;</SPAN><A
href="https://github.com/microsoft/Microsoft365DSC" target="_blank"
rel="nofollow noopener">Microsoft365DSC</A><SPAN>&nbsp;and&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops"
target="_blank" rel="nofollow noopener">Azure DevOps</A><SPAN>&nbsp;you can
implement Configuration as Code within your Microsoft 365 tenant.</SPAN></P>
<P>&nbsp;</P> <P>At a high level the setup will look like:</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Microsoft365DSC and Azure DevOps" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/337970i89D684B397A69E18/image-size/large?v=v2&amp;px=999"
role="button" title="M365DSCDevOps (2).png" alt="Microsoft365DSC and Azure
DevOps" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Microsoft365DSC and Azure
DevOps</span></span></P> <P>&nbsp;</P> <P>The whitepaper<SPAN>&nbsp;</SPAN><A
href="https://office365dsc.azurewebsites.net/Pages/Resources/Whitepapers/Managing%20Microsoft%20365%20with%20Microsoft365Dsc%20and%20Azure%20DevOps.pdf"
target="_blank" rel="nofollow noopener">Microsoft365Dsc and Azure
DevOps</A><SPAN>&nbsp;</SPAN>dives into creating a solution with Azure DevOps
and Microsoft365DSC.</P> <P>&nbsp;</P> <P>The whitepaper will cover in detail
the following:</P> <UL> <LI>Creating account for DSC</LI> <LI>Configuration of
Azure DevOps project</LI> <LI>Configuration of Azure DevOps build agents</LI>
<LI>Configuration of Azure Key Vault to store secrets</LI> <LI>Creating build
and release pipelines to deploy configuration to M365 tenant</LI> <LI>Securing
service accounts with Azure Conditional Access policy</LI> <LI>Using certificate
instead of username/password for M365 authentication</LI> </UL> Fri, 07 Jan 2022
14:33:21 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/managing-microsoft365-with-microsoft365dsc-and-azure-devops/ba-p/3054333
Derek Smay 2022-01-07T14:33:21Z Do the #Code4Good thing—make the world a better
place
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/do-the-code4good-thing-make-the-world-a-better-place/ba-p/3016575
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="MichelleSandford_0-1638246414812.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330257i5F8BB5A3647DC0F9/image-size/medium?v=v2&amp;px=400"
role="button" title="MichelleSandford_0-1638246414812.jpeg"
alt="MichelleSandford_0-1638246414812.jpeg" /></span></P> <P>&nbsp;</P>
<P><I><SPAN data-contrast="none">Michelle Sandford, Community Engagement PMM for
emerging Developers at Microsoft,&nbsp;shares why she does the #Code4Good thing,
and awesome ways you can use your tech skills to make the world a better place,
too.</SPAN></I><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">I focus&nbsp;on&nbsp;supporting
enablement, diversity, and inclusion initiatives. I like to teach people to code
(usually women or children), because I want to bring a more even mix of people
into the tech industry, and the best way to do that is to get involved and show
them how much fun it is. I love giving my time to do this for my community
because I am also learning while teaching. People ask me questions that I’ve
never considered, and it makes me stop and think more deeply about what I do and
how. That helps me grow, while I am enabling others to grow. But it isn’t just
about me&nbsp;and&nbsp;how much I enjoy&nbsp;these experiences.&nbsp;I think
each of us has a duty to give something back, to enable the next generation to
do more and be more than we ever were.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">People often ask me how I choose what
opportunities to get involved in. I&nbsp;say&nbsp;“</SPAN><I><SPAN
data-contrast="none">It’s easy, think about what you care about, what excites
you, what drives you, and align all your focus on those things.”</SPAN></I><SPAN
data-contrast="none">&nbsp;But of course, it’s not always easy, especially if
you have no idea&nbsp;about&nbsp;what opportunities are out there, what you can
do, what you like doing, and what you stand for. You must try all the things.
So, if you have time, say yes. Do the Thing (as&nbsp;</SPAN><A
href="https://donasarkar.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Dona&nbsp;</SPAN></A><SPAN
data-contrast="none">Sarkar</SPAN><SPAN data-contrast="none">&nbsp;says). After
a while you will discover&nbsp;some of the things&nbsp;that inspire
you&nbsp;and&nbsp;make you&nbsp;happy.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">So here are a few #Code4Good opportunities to
consider:</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Code for good in a&nbsp;</SPAN></STRONG><A
href="https://givecamp.org/" target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">GiveCamp.</SPAN></STRONG></A><SPAN
data-contrast="none">&nbsp;Learn&nbsp;</SPAN><SPAN data-contrast="none">how the
idea for&nbsp;GiveCamp&nbsp;came to life, how they use tech to help non-profits,
and how you can get involved in this&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/events/build-may-2021/general/connection-zone/con031/"
target="_blank" rel="noopener"><SPAN data-contrast="none">video.</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Volunteer as a mentor team member or event tech mentor at
hackathons</SPAN></STRONG><SPAN data-contrast="none">&nbsp;such
as&nbsp;</SPAN><A href="https://govhack.org/" target="_blank"
rel="noopener"><SPAN data-contrast="none">GovHack</SPAN></A><SPAN
data-contrast="none">&nbsp;- a festival of ideas</SPAN><SPAN
data-contrast="none">. Look at innovation or student hubs for details on local
hackathons. Microsoft’s Global Hackathon which comes out via&nbsp;</SPAN><A
href="https://www.microsoft.com/en-us/garage/" target="_blank"
rel="noopener"><SPAN data-contrast="none">The Microsoft Garage</SPAN></A><SPAN
data-contrast="none">&nbsp;each&nbsp;year is a great way to get involved and
there are many teams to choose from, often accepting external team
members.&nbsp;</SPAN><A
href="https://www.microsoft.com/en-us/ai/ai-for-good-participation"
target="_blank" rel="noopener"><SPAN data-contrast="none">Participate in
Microsoft AI for Good Projects.</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><SPAN data-contrast="none">If you
like to code,&nbsp;</SPAN><STRONG><SPAN data-contrast="none">get involved in
the&nbsp;</SPAN></STRONG><A href="https://opensource.microsoft.com/"
target="_blank" rel="noopener"><STRONG><SPAN data-contrast="none">Open Source
Community</SPAN></STRONG></A><SPAN data-contrast="none">&nbsp;There are so many
valuable projects than run entirely on the time and&nbsp;good will&nbsp;of
volunteers and you can contribute time, code, or money to&nbsp;help
out.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="" data-font="Symbol" data-listid="1"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Find in-kind dev opportunities</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;through&nbsp;</SPAN><A
href="https://www.catchafire.org/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Catchafire</SPAN></A><SPAN
data-contrast="none">&nbsp;or&nbsp;</SPAN><A
href="https://www.volunteermatch.org/" target="_blank" rel="noopener"><SPAN
data-contrast="none">VolunteerMatch</SPAN></A><SPAN data-contrast="none">, you
can&nbsp;search&nbsp;their opportunities on LinkedIn. You can also search
“Volunteer Developer” in a LinkedIn job search.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Become a mentor in a STEM program</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;such as&nbsp;</SPAN><A
href="https://shecodes.com.au/" target="_blank" rel="noopener"><SPAN
data-contrast="none">She Codes.</SPAN></A><SPAN data-contrast="none">&nbsp;This
is an Australian program but there are programs like this in every country
looking for mentors. Check out&nbsp;</SPAN><A
href="https://www.nuevofoundation.org/what-we-do" target="_blank"
rel="noopener"><SPAN data-contrast="none">Nuevo Foundation,</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><A href="https://coderdojo.com/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">CoderDojo</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://abcn.com.au/"
target="_blank" rel="noopener"><SPAN data-contrast="none">ABCN</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://djangogirls.org/en/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Django
Girls</SPAN></A><SPAN data-contrast="none">, and of course,&nbsp;</SPAN><A
href="https://www.womenwhocode.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Women Who Code</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Hit the&nbsp;</SPAN></STRONG><A
href="https://techcommunity.microsoft.com/t5/azure/ct-p/Azure" target="_blank"
rel="noopener"><STRONG><SPAN
data-contrast="none">forums</SPAN></STRONG></A><SPAN
data-contrast="none">&nbsp;and help fellow community members solve tech issues
in your area of expertise.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Give an inspiring or educational
talk&nbsp;</SPAN></STRONG><SPAN data-contrast="none">at meetups and conferences.
Many encourage first time speakers and will actively support you with mentorship
from an experienced speaker. You can submit proposals to speak at conferences by
responding to a CFP (Call for Papers/Programs), which can be found on sites such
as:&nbsp;</SPAN><A href="https://www.cfpland.com/conferences/" target="_blank"
rel="noopener"><SPAN data-contrast="none">CFP Land</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://twitter.com/techdailycfp"
target="_blank" rel="noopener"><SPAN data-contrast="none">Tech Daily
CFP</SPAN></A><SPAN data-contrast="none">,&nbsp;</SPAN><A
href="https://www.papercall.io/events" target="_blank" rel="noopener"><SPAN
data-contrast="none">PaperCall</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://confs.tech/cfp"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Confs.tech</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://twitter.com/appcfp"
target="_blank" rel="noopener"><SPAN data-contrast="none">SeeCFP</SPAN></A><SPAN
data-contrast="none">, and&nbsp;</SPAN><A href="https://callingallpapers.com/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">CallingAllPapers</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">I recently participated in a session at Microsoft
Ignite that talked about how you can make an impact through contribution to
community.<A
href="https://myignite.microsoft.com/sessions/1dabe2de-d29d-4c7e-8cb4-bcc5516d92f2?source=/schedule"
target="_self"> Check out the replay.</A></SPAN></P> <P><SPAN
data-contrast="none">Do you have favorite avenues to contribute to dev and
broader communities? Please share #Code4Good opportunities you’ve been involved
with in the blog comments section below!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><I><SPAN data-contrast="none">Michelle Sandford, Community
Engagement PMM for emerging Developers at Microsoft, is
a&nbsp;Tedx&nbsp;Speaker, Australian Computer Society WA Chairman, and was
previously named one of MCV's 30 Most Influential Women in Games. She lives at
the heart of the developer community and helps drive awareness and engagement as
an AI influencer and chatbot builder. She is an advocate for STEM, the Games
Industry, and Developers. For daily updates from Michelle follow @codess_aus on
<A href="https://twitter.com/codess_aus" target="_self">Twitter</A> and <A
href="https://instagram.com/codess_aus" target="_self">Instagram</A>, or follow
her on&nbsp;</SPAN></I><A href="https://www.linkedin.com/in/michellesandford/"
target="_blank" rel="noopener"><I><SPAN
data-contrast="none">LinkedIn</SPAN></I></A><I><SPAN
data-contrast="none">.</SPAN></I><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
Tue, 07 Dec 2021 01:39:30 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/do-the-code4good-thing-make-the-world-a-better-place/ba-p/3016575
Michelle Sandford 2021-12-07T01:39:30Z An airline pilot develops a robotic arm
for his friend’s son using .NET and a 3D printer
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-airline-pilot-develops-a-robotic-arm-for-his-friend-s-son/ba-p/3015347
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_0-1638211868010.png" style="width: 465px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330083i151162BB82C0BF1F/image-dimensions/465x261?v=v2"
width="465" height="261" role="button"
title="Monish_Gangwani_0-1638211868010.png"
alt="Monish_Gangwani_0-1638211868010.png" /></span></P> <P><EM>Kayden Jeffery
trying on the robotic arm that Clifford Agius built for him</EM></P>
<P><EM>&nbsp;</EM></P> <P><FONT size="4"><STRONG>Clifford Agius is a freelance
.NET developer who flies around the world in a Boeing 787 for his day-job. When
he is not thousands of feet above sea-level, he loves to
code.&nbsp;</STRONG><STRONG>When a family friend asked Cliff for help improving
her son’s prosthetic arm, the 787 pilot by day/freelance developer by night used
open-source software to build a new arm for the teen.</STRONG></FONT></P>
<P>&nbsp;</P> <P><FONT size="4"><STRONG>He has big plans on making the robotic
arm easily available to families and communities who do not have access to
resources and around continuing to improve the technical capability of his
creation using .NET 6 and Visual Studio 2022.</STRONG></FONT></P> <P>&nbsp;</P>
<P><STRONG><EM>We don’t usually come across someone who is a commercial pilot
and a developer. Tell us a little about your journey and what inspires you to
build the kind of apps that you do?</EM> </STRONG></P> <P>I spent the first 11
years of my career writing software and automating production line equipment. I
always wanted to learn to fly, and after many years in tech, I could afford to
go to pilot school and get a private license. So I signed up and that led to me
taking two years off to go to flight school and became a commercial pilot.</P>
<P>&nbsp;</P> <P>Shortly after, I was invited by a friend to contract for him;
he needed someone to build a few modules in C# and .NET. I knew the paradigms of
code and was quickly able to familiarize myself with .NET. I worked on those
modules during the layover downtime at hotels for six months. And that led to
how I get to work on fun dev projects during my layovers. My engineering
background has translated to me working on a lot of IoT related projects built
using .NET, and I like to work on projects that make a difference in the
world.</P> <P>&nbsp;</P> <P><EM><STRONG>Tell us about HandyApp and how it came
about.</STRONG></EM></P> <P>December of 2016, a family friend started chatting
about a news article in the media here in the UK, about a dad that 3D printed a
hand for his daughter. ”You've got 3D printer, right, Cliff?” – she asked. I
realized then that she was asking whether I could create one for her son Kayden,
who was born with half an arm. Kayden is a good kid and he had received an arm
extension from the local health services agency that had a hook, which was not
optimal for holding things and hence was not super functional. I wanted to see
if I could help – I managed to find the code for the 3D printed hand referenced
in the news in open source projects and I printed out the hand. That 3D hand did
not have a great grip either and Kayden hated it.</P> <P>&nbsp;</P> <P>I was
bitten by the bug and wanted to find a solution. I went back to the drawing
board and started revisualizing and researching. That’s when I stumbled across
<A href="https://openbionics.com/" target="_blank"
rel="noopener">OpenBionics</A> and was able to build HandyApp.</P> <P>&nbsp;</P>
<P>HandyApp is an OpenSource mobile application built using .NET; it allows
users of the OpenSource Bionic Hand project to control the hand and it's
settings via bluetooth. This is still very much a work in progress but the
current build will allow a Bluetooth Connection to the Adafruit board inside the
hand and remote control and set-up.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_1-1638211868087.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330082iC0C001CA114A4006/image-size/medium?v=v2&amp;px=400"
role="button" title="Monish_Gangwani_1-1638211868087.png"
alt="Monish_Gangwani_1-1638211868087.png" /></span></P> <P><EM>Kayden enjoying
the summer by the lake</EM></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_2-1638211868249.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330084iE8D0E408FAE5A897/image-size/medium?v=v2&amp;px=400"
role="button" title="Monish_Gangwani_2-1638211868249.png"
alt="Monish_Gangwani_2-1638211868249.png" /></span></P> <P><EM>Kayden with the
prosthetic arm provided to him by the local health services agency</EM></P>
<P>&nbsp;</P> <P><STRONG><EM>It sounds like this became an important project for
you at a personal level. What are your future plans around it?</EM>
</STRONG></P> <P>Yes, this project became important because it is so meaningful
to change people’s lives through technology… There are plans to continue the
building of this app to a point that any user can configure their own Bionic
hand as well as record sensor reading and upload them to an Azure Cloud function
for analysis and suggestion of settings, but this is still on the todo list. I
also want to take advantage of all the cool stuff in .NET 6 and Visual Studio
2022.</P> <P>&nbsp;</P> <P>Importantly, I would like to make this solution more
easily available to families. I have considered how much money this would cost a
family living where there is no health services agency. I calculated the cost
down to 500 pounds. After the pandemic is over, I intend to stick a 3D printer
in a box, some spools of filament, some screws, nuts, bolts and some electronics
boards and take them overseas on a flight. I've spoken to hospitals in Pakistan
and in India and there is some early interest.</P> <P>&nbsp;</P> <P>I have also
started looking at building LeggyApp, which is an app connected to a prosthetic
leg.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Monish_Gangwani_3-1638211868485.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330085i2A7052AE76BFC54B/image-size/medium?v=v2&amp;px=400"
role="button" title="Monish_Gangwani_3-1638211868485.png"
alt="Monish_Gangwani_3-1638211868485.png" /></span></P> <P><EM>The robotic arm
kit</EM></P> <P>&nbsp;</P> <P><EM><STRONG>Tell us about the cool stuff in .NET 6
and Visual Studio 2022 you plan to take advantage of. </STRONG></EM></P> <P>I am
excited about .NET MAUI ((Multi-platform App UI) and plan to update the app so
it can target Windows and MacOS in addition to the current platforms, Android
and iOS - all with the same code base. I am also planning to switch to
Wilderness Labs Meadow F7 boards inside the robotic arm so that we can have .NET
not just in the mobile and desktop client but also on the actual device. Once
Wilderness Labs Meadow runs .NET on the IoT Hardware taking advantage of the new
.NET 6 tooling and changes to the BCL, we can then carry out over-the-air
updates on the hardware. So, if we wish to update the code we can build and have
an Azure Dev Ops process push the updates directly to the hardware removing the
need for the user to visit a technician for updates.</P> <P>&nbsp;</P> <P>This
change to .NET on the hardware as well as across the mobile and desktop means
that we can share code between the two code bases with shared Models and Service
layers reducing the need to have bespoke versions of these. The possibilities
with .NET MAUI are endless and I recently wrote <A
href="https://www.cliffordagius.co.uk/post/whatismaui/" target="_self">a
blog</A> about it.</P> <P>&nbsp;</P> <P>Visual Studio 2022 allows me to use hot
restart, and hot reloads, so I can edit my C# code to bring the dev cycle down
from a minute and a half to just a few seconds. The fact that I can plug my
developer iPhone into my Windows Surface Book laptop when I'm traveling around
the world and keep coding is awesome. I've been using Visual Studio 2022 for
last couple of months as my daily.</P> <P>&nbsp;</P> <P>Also Microsoft has gone
out of the way to make sure that accessibility is engrained into the design. So
the biggest advantage of Visual Studio 2022 will be the accessibility gains, the
speed improvements, app startup times, and being able to develop and compile
<EM>really, really</EM> fast.</P> <P><SPAN style="font-weight: normal
!msorm;"><STRONG>&nbsp;</STRONG></SPAN></P> <P><EM><STRONG>Do you have any
advice to aspiring or striving developers?</STRONG></EM></P> <P>Keep learning.
Learning and challenging our ourselves to explore the unexplored is where real
growth as an individual takes place. I use the content on docs.microsoft.com to
keep myself updated and recommend it to all developers.</P> <P>&nbsp;</P>
<P><STRONG>Watch Clifford Agius and young Kayden demo the robotic arm and
HandyApp </STRONG></P> <P><A
href="https://azure.microsoft.com/en-gb/developer/stories/" target="_blank"
rel="noopener"><STRONG>https://azure.microsoft.com/en-gb/developer/stories/</STRONG><BR
/></A>&nbsp;</P> <P><STRONG>.NET 6&nbsp;announcement</STRONG></P> <P><SPAN>It is
ready for your #app — over a year in the making, we are very happy to
release&nbsp;</SPAN><SPAN>.NET 6 and a higher performance web stack to simplify
and speed up development!&nbsp;</SPAN><SPAN>Learn more:&nbsp;<A
title="https://aka.ms/dotnet6-ga" href="https://aka.ms/dotnet6-GA"
target="_blank" rel="noreferrer
noopener">https://aka.ms/dotnet6-GA</A>&nbsp;</SPAN></P> <P><LI-WRAPPER>
</LI-WRAPPER></P> <P>&nbsp;</P> <P><STRONG>CODE
Magazine&nbsp;Focus&nbsp;Issue:&nbsp;.NET 6</STRONG></P> <P><SPAN>Read all about
the .NET 6 release and what’s new in Visual Studio 2022 for
.NET&nbsp;</SPAN><SPAN>#developers in this special issue of CODE
Magazine:&nbsp;<A title="https://aka.ms/dotnet6-code-mag"
href="https://aka.ms/dotnet6-code-mag" target="_blank" rel="noreferrer
noopener">https://aka.ms/dotnet6-code-</A></SPAN><SPAN><A
title="https://aka.ms/dotnet6-code-mag" href="https://aka.ms/dotnet6-code-mag"
target="_blank" rel="noreferrer noopener">mag</A>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG>Cliff's blog:&nbsp;</STRONG><A
href="https://www.cliffordagius.co.uk/" target="_blank"
rel="noopener">https://www.cliffordagius.co.uk/</A></P> <P>&nbsp;</P>
<P><EM><STRONG>CodeStories&nbsp;Blogs&nbsp;is a series of interviews with
innovative and inspiring developers.</STRONG></EM></P> Tue, 30 Nov 2021 08:48:06
GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-airline-pilot-develops-a-robotic-arm-for-his-friend-s-son/ba-p/3015347
Monish_Gangwani 2021-11-30T08:48:06Z Azure Friday: The year in retrospect
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-friday-the-year-in-retrospect/ba-p/3015107
<P><SPAN data-contrast="auto">Hi everyone,&nbsp;I think&nbsp;one thing
we&nbsp;can all agree&nbsp;on is&nbsp;that 2021 has been a wild and wonderful
ride for anyone keeping up with&nbsp;innovations&nbsp;in Azure&nbsp;Services.
We’ve seen&nbsp;advancements&nbsp;across the platform&nbsp;all the way
from&nbsp;making&nbsp;Quantum computing&nbsp;more accessible, to the rise of
GitHub&nbsp;in&nbsp;workflows, to&nbsp;updates&nbsp;in everything&nbsp;from
Cosmos DB&nbsp;to Blobs.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">As we are wrapping up the&nbsp;year,&nbsp;I’d like
to share some reflections on Azure Friday&nbsp;with&nbsp;a
few&nbsp;episodes&nbsp;that&nbsp;may be&nbsp;especially&nbsp;interesting and
widely useful&nbsp;to developers.&nbsp;If you&nbsp;missed any&nbsp;of these, you
might want to&nbsp;catch up on watching&nbsp;them
now.&nbsp;</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">We have data science that proves you are more
likely to be successful&nbsp;in Azure if you get started with the&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/azure-portal/azure-portal-quickstart-center"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Quickstart
Center</SPAN></A><SPAN
data-contrast="auto">.&nbsp;&nbsp;In&nbsp;</SPAN><STRONG><I><SPAN
data-contrast="auto">Better Azure content, programs &amp; services through
applied data science</SPAN></I></STRONG><SPAN data-contrast="auto">&nbsp;Lisa
Cohen explained&nbsp;how Microsoft uses data science to help Azure customers.
Learn about content, programs, and services to guide you on your cloud journey,
and how we use your feedback to&nbsp;drive improvements in Azure.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=Qll-wtjIobU" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/Qll-wtjIobU/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW236030956 BCX0" data-contrast="auto"><SPAN
class="NormalTextRun SCXW236030956 BCX0">Just because something is running in a
container, that does not automatically mean that you&nbsp;</SPAN><SPAN
class="NormalTextRun SCXW236030956 BCX0">have security baked
in.&nbsp;</SPAN><SPAN class="NormalTextRun SCXW236030956 BCX0">Azure Container
Instances (ACI) allow for a quick, simple, and cost-effective way to run
serverless containers in production.&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">Jessica&nbsp;</SPAN><SPAN class="NormalTextRun
SpellingErrorV2 SCXW236030956 BCX0">Deen</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">&nbsp;explains</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">&nbsp;ways to be intentional about</SPAN><SPAN
class="NormalTextRun SCXW236030956 BCX0">&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">how you design container</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">s</SPAN><SPAN class="NormalTextRun SCXW236030956
BCX0">&nbsp;and build with security&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">in</SPAN><SPAN class="NormalTextRun SCXW236030956
BCX0">&nbsp;mind&nbsp;</SPAN><SPAN class="NormalTextRun SCXW236030956
BCX0">in&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW236030956 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW236030956 BCX0">Best</SPAN><SPAN
class="NormalTextRun SCXW236030956 BCX0">&nbsp;practices for Azure Container
Instances (ACI) with GitHub Actions</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">.</SPAN></SPAN><SPAN class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=jkEkeTW1QeE" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/jkEkeTW1QeE/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN
class="NormalTextRun BCX0 SCXW182523104">O</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">ne of the most fun&nbsp;</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">episodes</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;for me this year</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;was definitely</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW182523104">gee</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW182523104">k</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW182523104">ing</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;out in</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW182523104"
data-contrast="auto"><SPAN class="NormalTextRun BCX0 SCXW182523104">Retro Game
Translation with Azure Cognitive Services and IoT Edge</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN
class="NormalTextRun BCX0 SCXW182523104">&nbsp;w</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">ith&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">Paul&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">DeCarlo</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">,</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">as he
demonstrated how he&nbsp;</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">uses IoT Edge with Cognitive Services Containers to
enhance</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">&nbsp;and
localize</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">favorite retro videogames</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">.</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">W</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">e shared a
few</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">treasured&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">items from our&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">respective&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">retro gaming collections</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">&nbsp;in this one</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">, too.</SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><LI-VIDEO
vid="https://www.youtube.com/watch?v=atga5uMsrYY" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/atga5uMsrYY/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="TextRun
SCXW263399982 BCX0" data-contrast="auto"><SPAN class="NormalTextRun
SCXW263399982 BCX0">Did you know that you can use optimization&nbsp;</SPAN><SPAN
class="NormalTextRun SCXW263399982 BCX0">algorithms</SPAN><SPAN
class="NormalTextRun SCXW263399982 BCX0">&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW263399982 BCX0">inspired by</SPAN><SPAN class="NormalTextRun SCXW263399982
BCX0">&nbsp;decades of quantum physics research to help solve optimization
problems?&nbsp;</SPAN><SPAN class="NormalTextRun SCXW263399982
BCX0">In&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW263399982 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW263399982
BCX0">Quantum-inspired algorithms and the Azure Quantum optimization
service</SPAN></SPAN><SPAN class="TextRun SCXW263399982 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW263399982
BCX0">&nbsp;Delbert Murphy joined Scott to show how Quantum-Inspired
optimization (QIO) takes state-of-the-art algorithmic techniques from
quantum&nbsp;</SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW263399982 BCX0">physics</SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW263399982
BCX0">,</SPAN><SPAN class="NormalTextRun ContextualSpellingAndGrammarErrorV2
SCXW263399982 BCX0">&nbsp;and</SPAN><SPAN class="NormalTextRun SCXW263399982
BCX0">&nbsp;makes these capabilities available in Azure on conventional
hardware, and callable from a Python client.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=ggwKsoR8m08" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/ggwKsoR8m08/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></SPAN></SPAN></P> <P>&nbsp;</P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW73754094 BCX0" data-contrast="auto"><SPAN
class="NormalTextRun SCXW73754094 BCX0">Something that blew my mind when I
learned it this year was that Azure offers satellite ground station as a
service. How cool is that? Scott</SPAN><SPAN class="NormalTextRun SCXW73754094
BCX0">&nbsp;spoke with rocket scientist&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW73754094 BCX0">Hrishi Shelar and learned about Azure
Orbital</SPAN></SPAN><SPAN class="TextRun SCXW73754094 BCX0"
data-contrast="none"><SPAN class="NormalTextRun SCXW73754094
BCX0">—</SPAN></SPAN><SPAN class="TextRun SCXW73754094 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW73754094 BCX0">a fully
managed cloud-based ground station as a service that enables you to communicate
with your spacecraft or satellite constellations, downlink and uplink data,
process your data in the cloud,&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW73754094 BCX0">and&nbsp;</SPAN><SPAN class="NormalTextRun SCXW73754094
BCX0">chain services with Azure services. It’s&nbsp;</SPAN><SPAN
class="NormalTextRun AdvancedProofingIssueV2 SCXW73754094 BCX0">pretty
amazing</SPAN><SPAN class="NormalTextRun SCXW73754094 BCX0">!
Watch&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW73754094 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW73754094 BCX0">How to use
Azure Orbital to communicate with your satellites</SPAN><SPAN
class="NormalTextRun SCXW73754094 BCX0">.</SPAN></SPAN><SPAN class="EOP
SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=MqgjSBKAxIg" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/MqgjSBKAxIg/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></SPAN></SPAN></SPAN></P> <P>&nbsp;</P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW180139325 BCX0" data-contrast="auto"><SPAN
class="NormalTextRun SCXW180139325 BCX0">Did a specific episode of Azure
Friday&nbsp;</SPAN><SPAN class="NormalTextRun SCXW180139325 BCX0">stand out to
you as memorable this year? I’d love to hear about it in the
comments.</SPAN></SPAN><SPAN class="EOP SCXW180139325 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW180139325 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW67672907" data-contrast="auto"><SPAN
class="NormalTextRun BCX0 SCXW67672907">Keep watching Azure Friday episodes
on&nbsp;<A href="https://docs.microsoft.com/en-us/shows/Azure-Friday/"
target="_blank" rel="noopener">Azure Friday | Microsoft
Docs</A></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P> Thu, 02 Dec
2021 18:58:06 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-friday-the-year-in-retrospect/ba-p/3015107
RobCaron 2021-12-02T18:58:06Z 10 shades of public API hosting on Azure
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/10-shades-of-public-api-hosting-on-azure/ba-p/2989856
<P>APIs are everywhere and there are many ways to host them in Azure! Let us see
what are the different possibilities with the pros &amp; cons of each. I am not
going to discuss the bits and bytes about each possibility. The purpose of this
post is to give you a rough idea of what is possible for a simple scenario
(single region, high-availability and disaster recovery are out of scope). I
will provide small diagrams for more advanced scenarios.</P> <P>&nbsp;</P>
<H2>1) Function App - Consumption tier</H2> <P>&nbsp;</P> <P>Function Apps ship
with HTTP-triggered functions. These can be suitable to expose tiny APIs.</P>
<P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Cost-friendly (economies of
scale), Easy to deploy, Fully elastic with built-in auto-scaling from 0 to n
instances.</P> <P><U><STRONG>Cons</STRONG></U>: Limited security controls.
Network ACLs are the only way to limit public exposure. Data accessed by such
functions must be public from a connectivity perspective. Cold start due to
serverless tier. Limited execution time as well as per-execution resource
consumption. No WAF (Web Application Firewall) features.</P> <P>&nbsp;</P>
<P><U><STRONG>Use cases</STRONG></U>: Lab, PoC, Prototyping, Limited budgets,
Basic API needs (ie: no catalog, no versioning, etc.), asynchronous APIs,
Synchronous APIs that can live with the cold start, No strong compliance
requirements.</P> <P>&nbsp;</P> <H2>2) Multi-Tenant App Service - Standard
tier</H2> <P>Like functions, Web Apps are pretty neat and easy to get started
with. Microsoft is managing everything for you under the hoods.&nbsp;</P>
<P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Cost-friendly (economies of
scale) but fixed cost incurred (unlike functions on consumption tier), Easy to
deploy, Auto-scaling plans.&nbsp;Resource is limited to the capacity you are
willing to pay. No cold start when Always On is turned on!</P>
<P><U><STRONG>Cons</STRONG></U>: Limited security controls. Network ACLs are the
only way to limit public exposure. Data accessed by such apps must be public
from a network perspective.&nbsp;No WAF.</P> <P><U><STRONG>Use
cases</STRONG></U>: Lab, PoC, Prototyping, Limited budgets, Basic API needs (ie:
no catalog, no versioning, etc.),&nbsp;No strong compliance requirements.</P>
<P>&nbsp;</P> <H2>3) Azure Container Instances (ACI)</H2> <P>While Azure
Container Instances can be used to host long-running services, I would advise
against this idea and keep the ACIs for asynchronous job operations, short-lived
executions and as the serverless (virtual kubelets) part of Azure Kubernetes
Service.&nbsp;</P> <P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Cost-friendly
(pay per second of execution), providing the API is not constantly up and
running.</P> <P><U><STRONG>Cons</STRONG></U>: Limited security controls with
Windows Containers,&nbsp; better with Linux as Linux-based ACIs can integrate
with virtual networks.</P> <P><U><STRONG>Use cases</STRONG></U>: Lab, PoC,
Prototyping, Limited budgets, Basic API needs (ie: no catalog, no versioning,
etc.),&nbsp;No strong compliance requirements. Lift &amp; shift of plain old
legacy Windows-based backend services.</P> <H2>4) Functions Apps Consumption
tier or App Service standard+ Azure API Management (APIM) Consumption tier</H2>
<P>In this setup, you intend to publish APIs through Azure API Management. The
pros &amp; cons of the underlying hosting option (app service or function apps)
remain as explained earlier and are not repeated below.</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Cost-friendly because the serverless flavor of
APIM has no fixed cost. It will auto-scale with the actual demand. You can add
features to your APIs such as enforcing policies (JWT validation, headers checks
etc.) as well as version them.&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>: More
security controls but there is still a few major caveats: network ACLs remain
the only way to limit public exposure of the backend and traffic cannot be
forced through APIM because the consumption tier has no static IP so this can't
be used as a network ACL on the backend side. Data accessed by such apps must
still be public from a network perspective. Still no WAF because APIM is a a PEP
(Policy Enforcement Point) but not a WAF.&nbsp;</P> <P><U><STRONG>Use
cases</STRONG></U>: Lab, PoC, Prototyping, Limited budgets, More advanced API
needs (catalog, versioning, consistent way of exposing APIs etc.), No strong
compliance requirements.</P> <P>&nbsp;</P> <H2>5) Functions Apps Consumption
tier or App Service standard+ Azure API Management (APIM) Basic or Standard
tier</H2> <P>In this setup, you intend to publish APIs (<EM>and enforce
routing</EM>) through Azure API Management.&nbsp;</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: You benefit from APIM capabilities AND you can
restrict traffic to the backend to your APIM instance because as of the basic
tier, APIM comes with a static IP.&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>: A
bit more expensive (fixed cost for APIM). Manual scaling for the Basic tier
(plans possible as of Standard). Data stores accessed by the backends must still
be public from a network perspective. Still no WAF because APIM is a a PEP
(Policy Enforcement Point) but not a WAF.&nbsp;</P> <P><U><STRONG>Use
cases</STRONG></U>: Limited budgets, More advanced API needs (catalog,
versioning, consistent way of exposing APIs etc.), No strong compliance
requirements.</P> <P>&nbsp;</P> <H2>6) App Service (or Functions) on Premium
tier+Private Endpoint+VNET Integration+WAF</H2> <P>In this setup, you want
isolate your backend services totally from internet and make them only
accessible through a web application firewall (WAF). Because it is a little more
complex, here is a small diagram showing the different blocs and their
interactions.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="plinkvnetintegration.png" style="width:
722px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328462i3330053516527FA8/image-size/large?v=v2&amp;px=999"
role="button" title="plinkvnetintegration.png" alt="plinkvnetintegration.png"
/></span></P> <P>The traffic flies from a caller (here a mobile device) to a WAF
which has a public IP. The WAF has a backend pool targeting the endpoints
defined in the corresponding private endpoint subnet. The app service is
integrated with Azure Private Link (and private DNS zone) for the INBOUND
traffic. VNET integration for the App Service (or function app) is enabled to
handle the OUTBOUND traffic through another VNET's subnet.</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: This hosting option is more secure than the
preceding ones because the data stores can be firewalled thanks to the control
over the outbound traffic of the API.&nbsp; The backend services are isolated
from internet and proxied by a WAF.&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>:
This architecture is a bit convoluted and is not the best one to run at
scale.</P> <P><U><STRONG>Use cases</STRONG></U>: Stronger focus on security.
Basic API needs (no more APIM in the picture).&nbsp;</P> <P>&nbsp;</P> <H2>7)
App Service (or Functions) on Premium tier+Private Endpoint+VNET
Integration+WAF+APIM Premium</H2> <P>The purpose of this setup is the same as
the previous one but you want to combine both WAF &amp; APIM (how it should be)
before hitting backend services.&nbsp;</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="plinkvnetintegrationapimwaf.png" style="width: 722px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328465iD7E02E7C97E31DF8/image-size/large?v=v2&amp;px=999"
role="button" title="plinkvnetintegrationapimwaf.png"
alt="plinkvnetintegrationapimwaf.png" /></span></P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Inbound traffic is more secure because it
traverses a WAF and a PEP.&nbsp; Network ACLs can be set at backend level to
only let the API gateway (which has a static IP) call the backend. Outbound
traffic of the API gateway can be controlled by a NVA or Azure Firewall.</P>
<P><U><STRONG>Cons</STRONG></U>: This architecture is a bit convoluted and is
not the best one to run at scale, from a manageability perspective. APIM premium
is expensive but is required because at the time of writing (11/2021), only the
Premium tier integrates with Virtual Networks.&nbsp;</P> <P><U><STRONG>Use
cases</STRONG></U>: Stronger focus on security, advanced API needs and possible
geo-distributed APIs setup.</P> <P>&nbsp;</P> <H2>8)</img> WAF+APIM Premium+App
Service Environment (ASE)</H2> <P>Before ASE v3, ILB ASEs had a rather bad
reputation because of their cost (flat fees), and their complexity. It was
indeed quite easy to break them with improperly configured firewall rules. ASE
v3 are a breeze to setup and are less expensive (no more flat fee). Therefore
ILB ASE comes back as a very interesting option because it offers the
best-in-class security at an affordable price, at least from a backend hosting
perspective.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="ase.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328468iD1AA186116E5886F/image-size/large?v=v2&amp;px=999"
role="button" title="ase.png" alt="ase.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Inbound and outbound traffic can
be fully controlled by an NVA or Azure Firewall. Intra VNET traffic can be
controlled with both Network Security Groups and Azure Firewall. Backends are
totally isolated from internet. This setup is scalable because the ASE can host
tons of backends and functions. The underlying compute is based on a
single-tenant architecture (Isolated tier). Compared to the previous setup
involving only private endpoints, controlling the network traffic is easier with
an ASE. However, in 11/2021, private endpoints can also be subject to both UDRs
&amp; NSGs but it is a public preview feature that is only available in some
regions...This comment is also relevant for the ASE-based architecture since the
apps hosted on the ASE are likely to talk to public PaaS services (Azure SQL,
Azure Storage, etc.) through private endpoints.</P>
<P><U><STRONG>Cons</STRONG></U>: Costs (incurred by the isolated tiers and APIM
premium) and complexity. Although ASE v3 is a breeze compared to its
predecessors, this setup is often part of a larger Hub &amp; Spoke architecture,
which involves a lot of networking and firewalling work. You do not get started
with it over night!&nbsp;</P> <P><U><STRONG>Use cases</STRONG></U>: Stronger
compliance requirements, advanced API needs and possible geo-distributed APIs
setup. This setup is perfectly suitable as a Web Landing Zone that hosts tons of
web apps and APIs.&nbsp;</P> <P>&nbsp;</P> <H2>9) WAF+APIM Premium+AKS</H2>
<P>Kubernetes has become a first-class citizen everywhere and AKS is the
Microsoft-managed K8s offering on Azure (By the way, Azure Arc also has a ton of
handy features to manage K8s clusters at scale wherever they are hosted). So,
with this in mind, I could not skip it. Here is a very simplified diagram
showing the different building blocks:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="AKS.png" style="width: 762px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328469iCFF6CE6FBD59A587/image-size/large?v=v2&amp;px=999"
role="button" title="AKS.png" alt="AKS.png" /></span></P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Very similar to the previous architecture with
regards to inbound and outbound, Hub &amp; Spoke integration, etc.. although AKS
adds a serious bits of extra complexity network-wise. AKS allows you to host
nearly anything and has a very rich ecosystem. When I think AKS, I think all the
benefits of VMs with all the benefits of cloud native architectures
(Infrastructure as Code, increased resilience, zero downtime, releases during
business hours, polyglot apps, etc.).&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>:
Costs incurred by APIM premium and the AKS node pools, which should involve at
least 3 nodes but ideally 5 for a minimal production-grade setup. Another
potential deal-breaker for some organizations is the complexity of K8s (AKS).
App Services and Function Apps are <EM><STRONG>way easier</STRONG> </EM>to work
with and it is a Kubernetes lover who tells you this!</P> <P><U><STRONG>Use
cases</STRONG></U>: Stronger compliance requirements, advanced API needs and
possible geo-distributed APIs setup. This setup is perfectly suitable as a Web
Landing Zone that hosts tons of web apps and APIs. Microservices architectures
(K8s and its ecosystem, including service meshes, are very supportive of
microservices architectures).</P> <P>&nbsp;</P> <H2>10) Container Apps</H2> <P>I
put it last, not because it's the most advanced but because it is in preview.
This new service (public preview in 11/2021) is very promising because it comes
with some of the AKS promises without the complexity because Microsoft manages
nearly everything for you. Container apps remind me Service Fabric Mesh to some
extent, let's hope they'll have a brighter future. However, at the time of
writing, it is no way in line with typical enterprise needs (Hub &amp; Spoke)
but Microsoft is working on a BYO VNET feature. It is still a little early to
come with pros &amp; cons but here are a few of them.</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Cost friendly since it scales from 0 to n, like
Azure Functions. Easy to deploy and manage.</P> <P><U><STRONG>Cons</STRONG></U>:
N/A (too early)</P> <P><U><STRONG>Use cases</STRONG></U>: right now, PoCs and
protoyping only. In the future, microservices architectures, which is why this
service has been built from the ground up.</P> Sat, 18 Dec 2021 15:20:47 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/10-shades-of-public-api-hosting-on-azure/ba-p/2989856
stephaneey 2021-12-18T15:20:47Z Helping Professional Developers accelerate
collaboration with low-code Power Apps on Microsoft Teams
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/helping-professional-developers-accelerate-collaboration-with/ba-p/2941803
<P><STRONG><SPAN data-contrast="none">How Professional Developers can use
low-code&nbsp;</SPAN></STRONG><STRONG><SPAN data-contrast="none">Microsoft Power
Apps and&nbsp;Teams&nbsp;to drive agility and collaboration within your
organization&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">With major business&nbsp;disruption&nbsp;during
the&nbsp;pandemic in 2020,&nbsp;Microsoft&nbsp;Power Apps and Teams&nbsp;were
tools that quickly realized their value for being able to help teams collaborate
and automate manual processes.&nbsp;To help understand how Power Apps and Teams
can work together to help your organization,&nbsp;Professional
developers&nbsp;have pulled together a series of 16 articles that help you, a
professional developer,&nbsp;get started&nbsp;using&nbsp;low-code&nbsp;within a
collaboration tool to simplify how&nbsp;your teams&nbsp;navigate
their&nbsp;day-to-day&nbsp;tasks.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Get ready to jump in and learn how low-code Power
Apps can help your business.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="CodeProject.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/331289i0DBFE6C514DB9C42/image-size/large?v=v2&amp;px=999"
role="button" title="CodeProject.png" alt="CodeProject.png" /></span></SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Power Apps&nbsp;Solution&nbsp;for
Professional Developers&nbsp;Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We explain why professional developers should care
about Power Apps and Teams as well as where&nbsp;these
tools&nbsp;fit&nbsp;within the software development and deployment
landscape.&nbsp;We&nbsp;will also&nbsp;provide&nbsp;guidance&nbsp;on&nbsp;when
it makes sense to&nbsp;use&nbsp;Power Apps&nbsp;instead of traditional
development tools.&nbsp;Next,&nbsp;we&nbsp;demo how to build
a&nbsp;Power&nbsp;App within&nbsp;Teams&nbsp;and export the app if
needed.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303172/Power-Apps-for-Professional-Developers-1-Power-App"
target="_blank" rel="noopener"><SPAN data-contrast="none">Power Apps for
Professional Developers 1: Power Apps + Teams Overview</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303173/Power-Apps-for-Professional-Developers-2-How-to-bu"
target="_blank" rel="noopener"><SPAN data-contrast="none">Power Apps for
Professional Developers 2: How to build Power Apps</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303174/Power-Apps-for-Professional-Developers-3-Exporting"
target="_blank" rel="noopener"><SPAN data-contrast="none">Power Apps for
Professional Developers 3: Exporting Teams Apps</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;with a Customer Connector Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We explain why professional developers should care
about Power Apps and Teams and dive into how they can use a customer connector
within the Team’s environment.&nbsp;The next articles then dive into app flows
and how to think about updating information within the customer
connector.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5309042/Building-a-Teams-Power-App-Using-a-Custom-Connecto"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using a Custom Connector Part 1: Introduction to Using Custom Connectors in
Power Apps for Microsoft Teams</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5309044/Building-a-Teams-Power-App-Using-a-Custom-Connec-2"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using a Custom Connector Part 2: Integrating Power App Flow to Update
Information</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5309046/Building-a-Teams-Power-App-Using-a-Custom-Connec-3"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using a Custom Connector Part 3: Editing Data and Writing Back to the
App</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;with an&nbsp;SAP Connector Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Have SAP? Look at these articles to see how you
can use the SAP connector&nbsp;with Microsoft Power Apps within your
Microsoft&nbsp;Teams environment. There are also posts on reading
and&nbsp;highlighting&nbsp;your app and how&nbsp;to&nbsp;write back
data.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5310030/Building-a-Teams-Power-App-with-an-SAP-Connector-P"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App with an SAP Connector Part 1: Creating Environments and Adding a
Connector</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5310032/Building-a-Teams-Power-App-Using-the-SAP-Connector"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using the SAP Connector Part 2: Reading and Displaying SAP Data in a Power
App</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="" data-font="Symbol" data-listid="2"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5310033/Building-a-Teams-Power-App-Using-the-SAP-Connect-2"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using the SAP Connector Part 3: Writing Data from a Power App Back to
SAP</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;for Retail Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We explore how to create a customer information
application for a personalized retail shopping service, using Power Apps for
Microsoft Teams. We&nbsp;will&nbsp;go into components of the app, including data
entry and customer display UI.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303163/Building-a-Teams-Power-App-for-Retail-1-Creating-a"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App for Retail 1: Creating a Power App
and&nbsp;Dataverse&nbsp;Database</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="" data-font="Symbol" data-listid="1"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303166/Building-a-Teams-Power-App-for-Retail-2-Creating-a"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App for Retail 2: Creating a Customer Information Data Entry UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303168/Building-a-Teams-Power-App-for-Retail-3-Creating-a"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App for Retail 3: Creating a Customer Display UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;for Manufacturing Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In this series, we look at a classic example of
an&nbsp;ordering system. What could be a very manual task, we show you how to
build a Power Apps&nbsp;solution. This includes creating UI’s for
both&nbsp;customers&nbsp;and&nbsp;manufacturers.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303169/Build-a-Teams-Power-App-for-Manufacturing-1-Get-St"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build a Teams Power
App for Manufacturing 1: Get Started with&nbsp;Dataverse</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303170/Build-a-Teams-Power-App-for-Manufacturing-2-Create"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build a Teams Power
App for Manufacturing 2: Create the Customer UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303171/Build-a-Teams-Power-App-for-Manufacturing-3-Create"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build a Teams Power
App for Manufacturing 3: Create the Manufacturer UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">As you can see there are many ways Power Apps can
help various organizations be more agile.&nbsp;To learn more, check
out&nbsp;</SPAN><A href="https://powerapps.microsoft.com/en-us/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Business Apps | Microsoft Power
Apps</SPAN></A><SPAN data-contrast="none">&nbsp;or reach out to your Microsoft
representative.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
Thu, 02 Dec 2021 19:04:43 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/helping-professional-developers-accelerate-collaboration-with/ba-p/2941803
Jacqui_Cuffe_McNamara 2021-12-02T19:04:43Z Get started with minimal API for .NET
6
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/get-started-with-minimal-api-for-net-6/ba-p/2940108
<BLOCKQUOTE> <P>TLDR; Using minimal API, you can create a Web API in just 4
lines of code by leveraging new features like top-level statements and more.</P>
</BLOCKQUOTE> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0why-minimal-api"
target="_blank" rel="noopener" name="%C2%A0why-minimal-api"></A>&nbsp;Why
Minimal API</H2> <P>There are many reasons for wanting to create an API in a few
lines of code:</P> <UL> <LI><STRONG>Create a prototype</STRONG>. Sometimes you
want a quick result, a prototype, something to discuss with your colleagues.
Having something up and running quickly enables you to quickly do changes to it
until you get what you want.</LI> <LI><STRONG>Progressive enhancement</STRONG>.
You might not want all the "bells and whistles" to start with but you may need
them over time. Minimal API makes it easy to gradually add what you need, when
you need it.</LI> </UL> <H2>&nbsp;</H2> <H2>&nbsp;Learn more</H2> <P>Check out
these LEARN modules on learning to use minimal API</P> <UL> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-api?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">Your first minimal API + Swagger</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-database?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with Entity Framework</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-spa?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with React</A></LI> </UL>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#how-is-it-different-from-a-normal-web-api"
target="_blank" rel="noopener"
name="how-is-it-different-from-a-normal-web-api"></A>How is it different from a
normal Web API?</H2> <P>There are a few differences:</P> <UL> <LI><STRONG>Less
files</STRONG>.<SPAN>&nbsp;</SPAN><EM>Startup.cs</EM><SPAN>&nbsp;</SPAN>isn't
there anymore,
only<SPAN>&nbsp;</SPAN><EM>Program.cs</EM><SPAN>&nbsp;</SPAN>remains.</LI>
<LI><STRONG>Top level statements and implicit global usings</STRONG>. Because
it's using top level
statements,<SPAN>&nbsp;</SPAN><CODE>using</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>namespace</CODE><SPAN>&nbsp;</SPAN>are
gone as well, so this code:</LI> </UL> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<LI-CODE lang="csharp"> using System; namespace Application { class Program {
static void Main(string[] args) { Console.WriteLine("Hello World!"); } }
}</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <P>is now this code:</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp"> Console.WriteLine("Hello
World!");</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <UL>
<LI><STRONG>Routes</STRONG><SPAN>&nbsp;</SPAN>Your routes aren't mapped to
controller classes but rather setup with
a<SPAN>&nbsp;</SPAN><CODE>Map[VERB]</CODE><SPAN>&nbsp;</SPAN>function, like you
see above with<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE><SPAN>&nbsp;</SPAN>which
takes a route and a function to invoke when said route is hit.</LI> </UL> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0your-first-api"
target="_blank" rel="noopener" name="%C2%A0your-first-api"></A>&nbsp;Your first
API</H2> <P>To get started with minimal API, you need to make sure that .NET 6
is installed and then you can scaffold an API via the command line, like so:</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">dotnet new web -o
MyApi -f net6.0</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <P>Once you run that, you get a
folder<SPAN>&nbsp;</SPAN><EM>MyApi</EM><SPAN>&nbsp;</SPAN>with your API in
it.</P> <P>What you get is the following code
in<SPAN>&nbsp;</SPAN><EM>Program.cs</EM>:</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">var builder =
WebApplication.CreateBuilder(args); var app = builder.Build(); if
(app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); }
app.MapGet("/", () =&gt; "Hello World!"); app.Run();</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <P>To run it,
type<SPAN>&nbsp;</SPAN><CODE>dotnet run</CODE>. A little difference here with
the port is that it assumes random ports in a range rather than 5000/5001 that
you may be used to. You can however configure the ports as needed. Learn more on
this<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-6.0#working-with-ports"
target="_blank" rel="noopener">docs page</A></P> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0explaining-the-parts"
target="_blank" rel="noopener"
name="%C2%A0explaining-the-parts"></A>&nbsp;Explaining the parts</H2> <P>Ok so
you have a minimal API, what's going on with the code?</P> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0creating-a-builder"
target="_blank" rel="noopener"
name="%C2%A0creating-a-builder"></A>&nbsp;Creating a builder</H3> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp">var builder =
WebApplication.CreateBuilder(args);</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <P>On the
first line you create
a<SPAN>&nbsp;</SPAN><CODE>builder</CODE><SPAN>&nbsp;</SPAN>instance.<SPAN>&nbsp;</SPAN><CODE>builder</CODE><SPAN>&nbsp;</SPAN>has
a<SPAN>&nbsp;</SPAN><CODE>Services</CODE><SPAN>&nbsp;</SPAN>property on it, so
you can add capabilities on it like Swagger Cors, Entity Framework and more.
Here's an example where you set up Swagger capabilities (this needs install of
the Swashbuckle NuGet to work though):</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =&gt; { c.SwaggerDoc("v1", new OpenApiInfo {
Title = "Todo API", Description = "Keep track of your tasks", Version = "v1" });
});</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#creating-the-app-instance"
target="_blank" rel="noopener" name="creating-the-app-instance"></A>Creating the
app instance</H3> <P>Here's the next line:</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">var app = builder.Build();</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <P>Here we create
an<SPAN>&nbsp;</SPAN><CODE>app</CODE><SPAN>&nbsp;</SPAN>instance. Via
the<SPAN>&nbsp;</SPAN><CODE>app</CODE><SPAN>&nbsp;</SPAN>instance, we can do
things like:</P> <UL> <LI>Starting the
app,<SPAN>&nbsp;</SPAN><CODE>app.Run()</CODE></LI> <LI>Configuring
routes,<SPAN>&nbsp;</SPAN><CODE>app.MapGet()</CODE></LI> <LI>Configure
middleware,<SPAN>&nbsp;</SPAN><CODE>app.UseSwagger()</CODE></LI> </UL> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#defining-the-routes"
target="_blank" rel="noopener" name="defining-the-routes"></A>Defining the
routes</H3> <P>With the following code, a route and route handler is
configured:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">app.MapGet("/", () =&gt; "Hello World!");</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>The
method<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE><SPAN>&nbsp;</SPAN>sets up a new
route and takes the route "/" and a route handler, a function as the second
argument<SPAN>&nbsp;</SPAN><CODE>() =&gt; "Hello World!"</CODE>.</P> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#starting-the-app"
target="_blank" rel="noopener" name="starting-the-app"></A>Starting the app</H3>
<P>To start the app, and have it serve requests, the last thing you do is
call<SPAN>&nbsp;</SPAN><CODE>Run()</CODE><SPAN>&nbsp;</SPAN>on
the<SPAN>&nbsp;</SPAN><CODE>app</CODE><SPAN>&nbsp;</SPAN>instance like so:</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">app.Run();</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0add-routes"
target="_blank" rel="noopener" name="%C2%A0add-routes"></A>&nbsp;Add routes</H2>
<P>To add an additional route, we can type like so:</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp">public record Pizza(int Id,
string Name); app.MapGet("/pizza", () =&gt; new Pizza(1,
"Margherita"));</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <P>Now you have code that looks
like so:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">var builder = WebApplication.CreateBuilder(args); var app =
builder.Build(); if (app.Environment.IsDevelopment()) {
app.UseDeveloperExceptionPage(); } app.MapGet("/pizza", () =&gt; new Pizza(1,
"Margherita")); app.MapGet("/", () =&gt; "Hello World!"); public record
Pizza(int Id, string Name); app.Run();</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <P>Where you
to run this code, with<SPAN>&nbsp;</SPAN><CODE>dotnet
run</CODE><SPAN>&nbsp;</SPAN>and navigate
to<SPAN>&nbsp;</SPAN><CODE>/pizza</CODE><SPAN>&nbsp;</SPAN>you would get a JSON
response:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">{
"pizza" : { "id" : 1, "name" : "Margherita" } }</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#example-app"
target="_blank" rel="noopener" name="example-app"></A>Example app</H2> <P>Let's
take all our learnings so far and put that into an app that supports GET and
POST and lets also show easily you can use query parameters:</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp">var builder =
WebApplication.CreateBuilder(args); var app = builder.Build(); if
(app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var
pizzas = new List&lt;Pizza&gt;(){ new Pizza(1, "Margherita"), new Pizza(2, "Al
Tonno"), new Pizza(3, "Pineapple"), new Pizza(4, "Meat meat meat") };
app.MapGet("/", () =&gt; "Hello World!"); app.MapGet("/pizzas/{id}", (int id)
=&gt; pizzas.SingleOrDefault(pizzas =&gt; pizzas.Id == id));
app.MapGet("/pizzas", (int ? page, int ? pageSize) =&gt; { if(page.HasValue
&amp;&amp; pageSize.HasValue) { return pizzas.Skip((page.Value -1) *
pageSize.Value).Take(pageSize.Value); } else { return pizzas; } });
app.MapPost("/pizza", (Pizza pizza) =&gt; pizzas.Add(pizza)); app.Run(); public
record Pizza(int Id, string Name);</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <P>Run this
app with<SPAN>&nbsp;</SPAN><CODE>dotnet run</CODE></P> <P>In your browser, try
various things like:</P> <UL> <LI>"<A href="http://localhost:%7BPORT%7D/pizzas"
target="_blank" rel="noopener">http://localhost:{PORT}/pizzas</A>", should give
you all pizzas back</LI> <LI>"<A
href="http://localhost:%7BPORT%7D/pizzas?page=1&amp;pageSize=2" target="_blank"
rel="noopener">http://localhost:{PORT}/pizzas?page=1&amp;pageSize=2</A>", should
give you the two first pizzas. See how the query parameters are working for
you.</LI> <LI>"<A href="http://localhost:%7BPORT%7D/pizzas/2" target="_blank"
rel="noopener">http://localhost:{PORT}/pizzas/2</A>", should give you the "Al
Tonno" pizza back. Here you have
the<SPAN>&nbsp;</SPAN><CODE>{id}</CODE><SPAN>&nbsp;</SPAN>matching the 2 and
thereby it filters down on the one item that matches.</LI> </UL> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0learn-more"
target="_blank" rel="noopener" name="%C2%A0learn-more"></A></H2> <H2>&nbsp;Learn
more</H2> <P>Check out these LEARN modules on learning to use minimal API</P>
<UL> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-api?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">Your first minimal API + Swagger</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-database?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with Entity Framework</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-spa?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with React</A></LI> </UL>
<P>&nbsp;</P> Mon, 08 Nov 2021 21:16:22 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/get-started-with-minimal-api-for-net-6/ba-p/2940108
Chris_Noring 2021-11-08T21:16:22Z Azure Logic Apps Announcement - Fall 2021
Release
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-fall-2021-release/ba-p/2911923
<P>Azure Logic Apps team is happy to announce the Fall 2021 release at the
Ignite conference.</P> <P>&nbsp;</P> <P><SPAN><STRONG>Why it matters:</STRONG>
Logic Apps is a key part of Azure Integration Services, at the //build
conference this year, we announced the General Availability of Logic Apps
Standard, a&nbsp;flexible, containerized, modern cloud-scale workflow engine you
can run anywhere. Over the past 6 months, we've seen accelerate growth of the
service. Equipped&nbsp;with feedbacks, recommendations, and business scenarios
from customers like you, the team have worked extremely&nbsp;hard to deliver
this release, addressing many of the top asks.</SPAN></P> <P>&nbsp;</P>
<P><SPAN><STRONG>The big picture:</STRONG>&nbsp;Microsoft has been named as a
Leader in <A
href="https://azure.microsoft.com/blog/microsoft-named-as-a-leader-in-2021-gartner-magic-quadrant-for-enterprise-integration-platform-as-a-service/"
target="_self">2021 Gartner® Magic Quadrant™ for Enterprise Integration Platform
as a Service</A>, this marked the 4th year of Microsoft as a leader in terms of
both ability to execute and completeness of vision. In addition, Microsoft have
also been named as a Leader in t</SPAN><SPAN>he Forrester Wave™ on Enterprise
integration platform as a service (iPaaS).</SPAN></P> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Gartner MQ on enterprise iPaaS" style="width: 694px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322848i472DCEE753BEDEEF/image-size/large?v=v2&amp;px=999"
role="button" title="gartner.png" alt="Gartner MQ on enterprise iPaaS" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">Gartner MQ on
enterprise iPaaS</span></span></SPAN></P> <P><SPAN><STRONG>Go deeper:</STRONG>
the Fall 2021 release of Logic Apps is feature-packed, most of them will be
available by the time you're reading this blob post, with the rest being rolled
out and becoming available throughout the week of Ignite.</SPAN></P> <UL>
<LI><SPAN><STRONG>SQL as storage provider</STRONG> is now in public preview.
Storage is a key piece of the Logic Apps service, it is where the runtime stores
the states of the workflows as they are running, enabling Logic Apps to be
highly resilient and suitable for mission-critical&nbsp;workloads. With the new
runtime, it is possible to create and run Logic Apps Standard anywhere: locally,
on premises, multi-cloud thanks to Azure Arc. The SQL as a storage provider
feature allows you to use a SQL database as storage for Logic Apps, which can be
co-located with wherever the Logic Apps runtime is. This removes the dependency
on Azure Storage, and affords you low latency, more predictable&nbsp;cost, and
the ability to run in a fully disconnected manner if needed. <A
href="https://docs.microsoft.com/azure/logic-apps/set-up-sql-db-storage-single-tenant-standard-workflows"
target="_self">Learn more</A></SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SQL
as a storage provider" style="width: 587px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322855i9FA8A70EC08920A2/image-dimensions/587x352?v=v2"
width="587" height="352" role="button" title="sql.png" alt="SQL as a storage
provider" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">SQL as a storage
provider</span></span></SPAN></P> <UL> <LI><SPAN><STRONG>Managed
identity</STRONG>&nbsp;provides an identity for applications to use when
connecting to resources that support Azure Active Directory authentication. In
the Fall 2021 release, we added managed identity support for multi-auth capable
Azure connectors such as SQL and Azure Blob in Logic Apps Consumption, as well
as managed identity support for all Azure connectors in Logic Apps Standard. <A
href="https://docs.microsoft.com/azure/logic-apps/create-managed-service-identity?tabs=consumption"
target="_self">Learn more</A></SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Managed identity in Logic Apps" style="width: 520px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322856i23498FA227108529/image-dimensions/520x310?v=v2"
width="520" height="310" role="button" title="msi.JPG" alt="Managed identity in
Logic Apps" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Managed identity in Logic
Apps</span></span></SPAN></P> <UL> <LI><SPAN><STRONG>Automation
Tasks</STRONG>&nbsp;provides all Azure customers an easy way to automate their
daily tasks, with just a few clicks, you can create tasks that automatically
turns on and off the virtual machine on a schedule, purge old blobs in the
storage account, or get a monthly usage report sent via email. In this release,
the Logic Apps team have partnered with the Azure messaging team on building the
experience for easy event replication. As a customer, you can choose from
out-of-box templates to replicate the actual messages and events (rather than
just metadata) between and across Service Bus queue, Service Bus topic, and
Event Hub. Stateless workflows in Logic Apps standard are used to power this
experience behind the scene, so you know the replication is highly performant.
<A
href="https://docs.microsoft.com/azure/logic-apps/create-replication-tasks-azure-resources"
target="_self">Learn more</A></SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Automation tasks for event replication" style="width: 490px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322857i645436E732616345/image-dimensions/490x320?v=v2"
width="490" height="320" role="button" title="task.JPG" alt="Automation tasks
for event replication" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Automation tasks for event
replication</span></span></SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <UL>
<LI><STRONG>Designer</STRONG> is the key to fast development, and we have made
it even better. Following the major designer refresh that gave it a new
look-and-feel, designer have also gotten a performance boost with the latest
release. The lines rendered on the canvas is more intuitive to help you better
understand the flow, especially for composite actions such as Condition and
Switch. <A href="https://docs.microsoft.com/azure/logic-apps/designer-overview"
target="_self">Learn more</A></LI> </UL> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line
rendering on condition action" style="width: 599px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322859i530C962469BCC362/image-dimensions/599x306?v=v2"
width="599" height="306" role="button" title="if.png" alt="Line rendering on
condition action" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Line rendering on condition
action</span></span></P> <UL> <LI><SPAN><STRONG>Consumption to Standard
export</STRONG> is available for public preview. To aid customers with existing
Logic Apps Consumption resources to upgrade to Standard, an export experience is
available in the Azure portal. It will analyze the workflow and help you create
corresponding&nbsp;resources in the Standard SKU, accelerating the adoption and
unlock richer capabilities in Logic Apps Standard such as virtual network
integration.</SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Export Logic Apps Consumption to Standard" style="width: 559px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322860i241205B932710279/image-dimensions/559x239?v=v2"
width="559" height="239" role="button" title="export.JPG" alt="Export Logic Apps
Consumption to Standard" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Export Logic Apps Consumption to
Standard</span></span></SPAN></P> <UL> <LI><SPAN><STRONG>Connectors</STRONG>, a
key&nbsp;value proposition for Logic Apps is continuously&nbsp;being improved,
including SFTP with trigger support; <A
href="https://docs.microsoft.com/azure/logic-apps/logic-apps-enterprise-integration-flatfile?tabs=standard"
target="_self">flatfile encode/decode without Integration Account dependency in
Logic Apps Standard</A>; <A
href="https://docs.microsoft.com/azure/connectors/connectors-create-api-cosmos-db?tabs=standard"
target="_self">Cosmos DB with trigger, CRUD, and bulk create support</A>;
and&nbsp;lastly but certainly not least, peek-lock support is added to the
built-in Service Bus connector to allow the implementation of advanced messaging
patterns.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>See for
yourself:</STRONG>&nbsp;make sure to check out our&nbsp;<A
href="https://myignite.microsoft.com/sessions/94dac4c6-9cf2-4426-b22e-0304e4aefbf1"
target="_self">demo-packed session for Ignite</A> that also features how ASOS, a
global leader in fashion and tech, is leveraging Logic Apps to deliver innovate
solutions.</P> <P>&nbsp;</P> <P><SPAN><STRONG>What's next:</STRONG>&nbsp;if you
are not already using Logic Apps, get started today with <A
href="https://azure.microsoft.com/free/serverless/" target="_self">12 months of
free services</A>&nbsp;a see how Logic Apps can help your business innovate
faster. If you are an experienced Logic Apps customer, be sure to check out the
new features, and as always, let us know your thoughts and feedback in the
discussion section below.</SPAN></P> <P>&nbsp;</P> <P><SPAN>Derek Li, on behalf
of the entire Logic Apps team</SPAN></P> Tue, 02 Nov 2021 18:24:11 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-fall-2021-release/ba-p/2911923
derek1ee 2021-11-02T18:24:11Z Putting Tools in Your Hands to Improve Developer
Productivity
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/putting-tools-in-your-hands-to-improve-developer-productivity/ba-p/2902225
<P><STRONG>By:&nbsp;<LI-USER uid="61063"></LI-USER>, Senior Product Marketing
Manager and&nbsp;&nbsp;<LI-USER uid="1023930"></LI-USER>,&nbsp;Senior Product
Marketing Manager&nbsp;</STRONG></P> <P>&nbsp;</P> <P>Developers are tasked with
building the future. For organizations looking to usher in the next wave of
digital transformation, it’s essential to create the right working environment
to maximize developer innovation and well-being.</P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/overview/developer-velocity/"
target="_self"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="DeveloperVelocity.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/331504i48BAE046213C6976/image-size/large?v=v2&amp;px=999"
role="button" title="DeveloperVelocity.png" alt="DeveloperVelocity.png"
/></span></A></P> <P>&nbsp;</P> <P>When we talk about improving <A
href="https://azure.microsoft.com/overview/developer-velocity/" target="_blank"
rel="noopener">Developer Velocity</A>, we’re referring to removing barriers and
points of friction for developers so they can feel valued and achieve more.</P>
<P>&nbsp;</P> <P>Organizations that boost Developer Velocity achieve better
business results and innovate faster<A href="#_ftn1" target="_blank"
rel="noopener" name="_ftnref1"><SPAN><SUP>[1]</SUP></SPAN></A>. Naturally, this
has become a common goal among businesses, but unfortunately, many struggle to
accurately measure Developer Velocity. Historically, firms have measured this by
tracking activity-related metrics such as lines of code written per day or
number of builds shipped in a quarter, but this approach fails to consider other
key factors. It’s time for organizations to take a step back and see the bigger
picture: Developer Velocity is about far more than just speed of delivery – it’s
about the other factors that impact developers as well.</P> <P>&nbsp;</P> <P>For
the past two years, Microsoft has been a strong proponent of Developer Velocity
research, leading numerous projects and initiatives to understand what it takes
for organizations to achieve it.</P> <P>&nbsp;</P> <P>In 2021, we took the next
step in our journey by launching <A href="https://aka.ms/dvl" target="_blank"
rel="noopener">Developer Velocity Lab</A> (DVL), a joint GitHub and Microsoft
initiative which lives under Microsoft Research. DVL is led by Dr. Nicole
Forsgren. Her industry-leading work in DevOps and software development metrics
includes authoring the Shingo Publication Award-winning book&nbsp;Accelerate:
The Science of Lean Software and DevOps.</P> <P>&nbsp;</P> <P>Today, we’re
highlighting two pre-existing tools, and releasing one more, which will help you
measure Developer Velocity more holistically in your own organization and make
improvements to drive better business. Here are the three tools available to
help teams and organizations improve their Developer Velocity:</P> <UL> <LI>The
Developer Velocity Assessment, which organizations have been using to improve
outcomes for almost two years.</LI> <LI>The SPACE framework, a flexible tool
which can be used to help anyone think more deeply about measuring and improving
development work and create their own metrics.</LI> <LI>The DevOps Workflow
Generator, a new interactive tool that helps teams build their workflows so they
can visualize and communicate their work, and later benchmark their
performance.</LI> </UL> <P>Now, let’s explore how each tool can help you and
your organization improve your Developer Velocity.</P> <P>&nbsp;</P>
<H4><U>Measuring your organization’s Developer Velocity with the Assessment
</U></H4> <P>One of our key goals has always been to provide you with tools to
take action. In May 2020 we released the&nbsp;<A
href="https://developervelocityassessment.com/" target="_blank"
rel="noopener">Developer Velocity Assessment</A>&nbsp;to help organizations
measure their current Developer Velocity. Since release, this tool has helped
hundreds of companies of all sizes understand the impact of technology, working
practices, and organization enablement on their development teams’ performance.
This assessment helps organizations benchmark their Developer Velocity Index
(DVI) scores relative to industry peers, as well as understand actionable
guidance for how to drive better business outcomes for their organization.
Understanding your current level of Developer Velocity enables you to begin
making improvements. &nbsp;</P> <P>&nbsp;</P> <H4><U>Using </U><U>the SPACE
framework to enhance Developer Velocity </U></H4> <P>Another tool to help you
understand Developer Velocity in your own organization is the SPACE framework.
True to DVL’s research roots, this framework is derived from DVL’s first
publication, <A
href="https://www.microsoft.com/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/?cid=techcommblog/"
target="_blank" rel="noopener"><EM>The SPACE of Developer Productivity: There's
more to it than you think</EM></A>. The SPACE framework is an easily adaptable
and flexible tool that helps organizations measure developer productivity in a
more holistic manner.</P> <P>&nbsp;</P> <P>The five dimensions of the SPACE
framework are: <STRONG>S:</STRONG> satisfaction and well-being,
<STRONG>P:</STRONG> performance, <STRONG>A:</STRONG> activity,
<STRONG>C:</STRONG> communication and collaboration, and <STRONG>E:</STRONG>
efficiency and flow. We suggest measuring at least three of the five dimensions
at any given time. Traditionally, developer activity was the main metric that
organizations measured, without focusing as much on other key areas such as
efficiency and flow.</P> <P>&nbsp;</P> <P>To see an example of the SPACE
framework in action, check out how GitHub implemented it during <A
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">The Good Day Project</A>. This two-week study
invited GitHub developers to take a daily survey and share their engineering
data to help identify which patterns and practices could help them have “good
days.” The study yielded many interesting results, but some of the key findings
were that interruptions are more disruptive than we think, too many meetings can
get in the way of progress, and a short reflection period at the end of each day
makes a big difference in how people feel in terms of meeting their goals.</P>
<P>&nbsp;</P> <P>By implementing the SPACE framework, you can more holistically
measure and understand Developer Velocity in your organization.</P>
<P>&nbsp;</P> <H4><U>Visualize and improve your work with the DevOps Workflow
Generator</U> <FONT color="#FF0000"><SUP>NEW!</SUP></FONT></H4> <P>Today, DVL is
excited to announce the release of a new tool designed to help organizations
measure and improve Developer Velocity: the <A
href="https://aka.ms/devopsworkflow" target="_blank" rel="noopener">DevOps
Workflow Generator</A>. By granting users an end-to-end view of their entire
DevOps toolchain in one place, they can begin to surface, track, and understand
the tooling and automation that supports their workflows. Without a clear – and
shared – understanding of the workflow, improving it is not possible.</P>
<P>&nbsp;</P> <BLOCKQUOTE> <P>At Microsoft Research, we’re very focused on
helping developers around the world be happy and successful. As we better
understand developers’ environments and what contributes to good days and good
outcomes, we can design better tools and solutions to support them. We’re
confident that the DevOps Workflow Generator will help users better understand
the interplay between their various tools and enable them to have more
productive conversations about optimizing their environments for improved
efficiency and flow.</P> <P>&nbsp;</P> <P>- Dr. Nicole Forsgren, Partner
Research Manager, Microsoft Research<SPAN style="font-family:
inherit;">&nbsp;</SPAN></P> </BLOCKQUOTE> <P><SPAN style="font-family:
inherit;">Additionally, the anonymous, aggregated data collected from the DevOps
Workflow Generator will help users understand up-to-date DevOps trends in their
industry and/or geography. Once the tool has collected enough responses, DVL
will release reports summarizing and revealing any prevalent DevOps
trends</SPAN><A style="font-family: inherit; background-color: #ffffff;"
href="#_ftn2" target="_blank" rel="noopener"
name="_ftnref2"><SUP>[2]</SUP></A><SPAN style="font-family:
inherit;">.</SPAN></P> <H4>&nbsp;</H4> <H4><U>Start your Developer Velocity
journey today</U></H4> <P>As almost every company is now a software company,
developers are at the core of the next wave of digital transformation. Our
overarching goal is to help developers, teams, and organizations in a holistic
way. This includes understanding the impact of technology, working practices and
organizational enablement with the <A
href="https://developervelocityassessment.com/" target="_blank"
rel="noopener">Developer Velocity Assessment</A>; improving Developer Velocity
across multiple dimensions of the <A href="https://aka.ms/SPACEpaper"
target="_blank" rel="noopener">SPACE framework</A>; and even optimizing an
organization’s DevOps toolchain through the use of the new <A
href="https://aka.ms/devopsworkflow" target="_blank" rel="noopener">DevOps
Workflow Generator</A>.</P> <P>&nbsp;</P> <P>We are delighted to see teams
taking the next step on their Developer Velocity journeys towards unlocking
better overall performance for their teams. To learn more about how some of our
customers have improved business outcomes by tapping into the full power and
creativity of their developers, read this report on <A
href="https://azure.microsoft.com/en-us/resources/developer-velocity-lessons-from-digital-leaders/"
target="_blank" rel="noopener">Developer Velocity: Lessons from Digital
Leaders</A>. For an example of how GitHub implemented the SPACE framework and
found real-world ways to improve developers’ days, check out GitHub’s <A
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">Good Day report</A>.</P> <P>&nbsp;</P> <P>We
believe the tools that Microsoft has released will help you and your
organization improve your overall developer productivity and take the next step
on your Developer Velocity journey.</P> <P>&nbsp;</P> <P>-----------------</P>
<P><A href="#_ftnref1" target="_blank" rel="noopener"
name="_ftn1"><SPAN><SUP>[1]</SUP></SPAN></A> <A
href="https://azure.microsoft.com/resources/developer-velocity-lessons-from-digital-leaders/"
target="_blank" rel="noopener">Developer Velocity: Lessons from Digital Leaders
on Accelerating Business Performance through Software Excellence</A><SPAN>.
Microsoft</SPAN>. March, 2021.</P> <P><A href="#_ftnref2" target="_blank"
rel="noopener" name="_ftn2"><SPAN><SUP>[2]</SUP></SPAN></A> Final reports
contingent on sufficient user participation.</P> Fri, 03 Dec 2021 18:50:38 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/putting-tools-in-your-hands-to-improve-developer-productivity/ba-p/2902225
AlisonYu 2021-12-03T18:50:38Z Build secure apps on hardened dev environments
with secure DevOps workflows
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-secure-apps-on-hardened-dev-environments-with-secure/ba-p/2893917
<P>The threat landscape has evolved over the past few years. Hackers are
“shifting-left,” compromising upstream dependencies and engineering systems.
These advanced attacks can impact entire development environments and software
supply chains. One recent example occurred at a software vendor where an
attacker targeted their developer workflow and software supply chain. After
gaining access, the attacker uploaded a new image into thousands of builds that
scanned their software supply chain—extracting secrets/credentials and widening
the breach. This attack exemplifies how it’s no longer enough to just integrate
security within the DevOps workflow, now you must harden and secure the workflow
itself!</P> <P>&nbsp;</P> <P>So, how do you secure your upstream development
environments?</P> <P>&nbsp;</P> <P>Kick it off by securing all developer
machines and ensuring that your developers interact with non-trusted code in a
secure manner. These steps help prevent malicious code from executing on
developer machines and prevent hackers from using developer machines to act as a
"jump-box" to further systems.</P> <P>&nbsp;</P> <P><A
href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/"
target="_blank" rel="noopener">GitHub Codespaces</A> is a solution where your
developers can securely interact with non-trusted code inside a sandbox
environment. This cloud-powered development environment is available anywhere,
on any device. Going further, it’s never been simpler to manage user
permissions, store encrypted secrets in the right places, and implement GPG
verification, so that commits are verified and made only by trusted users. And
it’s fast too. Your team can go from zero to a functioning development
environment in less than 10 seconds! Developers can spin off new Codespaces for
parallel workstreams with no overhead. The solution is flexible and efficient
while also providing security, compliance, and productivity enhancements for
your organization.</P> <P>&nbsp;</P> <P>Along with developer machines, you’ll
also need to secure your DevOps workflows. GitHub Actions helps your development
teams easily create secure and automated workflows to build, test, package,
release, and deploy apps to Azure or any other cloud. Azure provides a rich set
of <A href="https://docs.microsoft.com/en-us/azure/developer/github/"
target="_blank" rel="noopener">GitHub Actions integrations</A> that help you
adopt an “everything as-code” DevOps model. In this model, compliance and
security policies, build and release pipelines, etc. are written “as code,”
enabling continuous improvement, better re-use, and greater transparency.</P>
<P>&nbsp;</P> <P>It’s now common for hackers to target development environments,
use discovered credentials to tamper with source code, and inject malicious
code. Compounding this risk is the fact that your development teams must store
their Azure service principal secrets in GitHub, which is both redundant and
extremely risky. At&nbsp;<A
href="https://myignite.microsoft.com/sessions/0c2b0490-1e47-4144-a569-20632ea53661?source=sessions"
target="_blank" rel="noopener">Microsoft Ignite 2021</A><SPAN>,</SPAN> I’m
excited to announce the preview of capabilities that enable developers to secure
their deployments to Azure without requiring them to store long-term credentials
in GitHub!</P> <P>&nbsp;</P> <P><STRONG>Remove credentials from developer
environments with new Azure and GitHub integrations</STRONG></P> <P>&nbsp;</P>
<P>Removing long-lived, Azure credentials from the development environment is a
key strategy to reduce vulnerabilities that hackers can easily exploit.
<SPAN>You can now deploy from your GitHub repo to Azure without creating,
storing, or managing credentials for Azure AD applications. This uses the <A
href="https://docs.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation"
target="_blank" rel="noopener">Azure AD workload identity federation</A>
capability which is now in public preview.</SPAN> The new capabilities alleviate
the need for managing Azure service principal secrets and other long-lived cloud
credentials in the GitHub secret store. With this integration, you can manage
all cloud resources access securely in Azure. These capabilities also minimize
the chances of service downtime due to expired credentials in GitHub.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="samit_jhaveri_0-1635396060660.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/320727i67F17330D8D5E8B0/image-size/medium?v=v2&amp;px=400"
role="button" title="samit_jhaveri_0-1635396060660.png"
alt="samit_jhaveri_0-1635396060660.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Setting up OpenID Connect (OIDC) integration with Azure AD and GitHub
Actions</STRONG></P> <P>&nbsp;</P> <P>To set up a secured GitHub Actions
workflow using OpenID Connect integration with Azure AD you'll need:</P> <UL>
<LI>An&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/active-directory/develop/"
target="_blank" rel="noopener">Active Directory application</A> with a service
principal that has contributor access to your subscription</LI> <LI>An Active
Directory application configured with a federated credential to trust tokens
issued by GitHub Actions to your GitHub repository. You can configure this in
the Azure portal or with Microsoft Graph REST APIs</LI> <LI>A GitHub Actions
workflow that requests GitHub issue tokens to the workflow and uses
the&nbsp;azure/login@v1.4.0&nbsp;action</LI> </UL> <P>&nbsp;</P> <P>To learn
more about how to set up the integration, check out the <A
href="https://aka.ms/OIDCAzureConnect" target="_blank"
rel="noopener">documentation</A>.</P> <P>&nbsp;</P> <P><STRONG>Start building
secure apps with GitHub and Azure</STRONG></P> <P>&nbsp;</P> <P>With deep
integrations between GitHub and Azure, the <A
href="https://azure.microsoft.com/en-us/solutions/devsecops/#overview"
target="_blank" rel="noopener">Microsoft DevSecOps solution</A> is the
&nbsp;complete software development solution that empowers your development
teams to securely deliver cloud-native apps at DevOps speed! This solution
enables you to write more secure code, respond quickly to vulnerabilities in
your software supply chain, adopt best practices to harden your development
environments, and foster collaboration between your developers and security
teams.</P> <P>&nbsp;</P> <P>For more information on integrating security into
your development lifecycle and hardening your DevOps workflows, check out our <A
href="https://azure.microsoft.com/en-us/resources/6-tips-to-integrate-security-into-your-devops-practices/"
target="_blank" rel="noopener">e-book</A>.</P> <P>&nbsp;</P> Tue, 02 Nov 2021
17:01:14 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-secure-apps-on-hardened-dev-environments-with-secure/ba-p/2893917
samit_jhaveri 2021-11-02T17:01:14Z Plan your Microsoft Azure experience at
Microsoft Ignite 2021
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite-2021/ba-p/2871583
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="bff948bd-7c60-41e2-ba58-6d3195441884.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319128iF4AFDC943B3C5026/image-size/large?v=v2&amp;px=999"
role="button" title="bff948bd-7c60-41e2-ba58-6d3195441884.png"
alt="bff948bd-7c60-41e2-ba58-6d3195441884.png" /></span></P> <P>&nbsp;</P>
<P><SPAN style="font-family: inherit;">We thought you might be interested to
learn how you can plan your Microsoft and Azure experience at the upcoming
Microsoft Ignite, our free digital event from November 2</SPAN><SUP
style="font-family: inherit;">nd</SUP><SPAN style="font-family: inherit;"> –
4</SPAN><SUP style="font-family: inherit;">th</SUP><SPAN style="font-family:
inherit;">, 2021.</SPAN></P> <P>&nbsp;</P> <P>During the event, you’ll discover
the latest infrastructure, data and AI, application development, and security
technologies that help you innovate anywhere from multicloud to edge, with
Microsoft and Azure. You’ll also have a chance to speak with Microsoft experts
and have the opportunity to continue your technical learning journey.</P>
<P>&nbsp;</P> <P><A href="https://myignite.microsoft.com/home" target="_blank"
rel="noopener">Register</A> to gain full access to all Microsoft Ignite has to
offer – it’s easy and at no-cost to you.</P> <P>&nbsp;</P> <P><STRONG>Innovate
Anywhere from Multicloud to Edge</STRONG></P> <P>We are excited to share how
we’re delivering next-generation apps that run securely anywhere, are built with
limitless data capabilities, and harness the power of AI.&nbsp; Join Scott
Guthrie who will kick off with <STRONG><EM>Innovate Anywhere From Multicloud to
Edge</EM></STRONG> along with these curated sessions you won’t want to miss:</P>
<P>&nbsp;</P> <UL> <LI><STRONG><A
href="https://myignite.microsoft.com/sessions/bd48b752-53b7-4e0e-b15c-4245a0e5ca50?source=sessions"
target="_blank" rel="noopener">CTS03: Innovate Anywhere From Multicloud to
Edge</A></STRONG></LI> <LI><A
href="https://myignite.microsoft.com/sessions/27b4aeb9-ba89-403c-9cdf-4c629eb538c1?source=sessions"
target="_blank" rel="noopener">BRK210: Secure, develop, and innovate in hybrid
and multicloud with Microsoft Azure</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/56830052-a938-459e-8b5c-950ac6ac945d?source=sessions"
target="_blank" rel="noopener">BRK211: Accelerate your cloud migration and
modernization journey with Azure</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/0c2b0490-1e47-4144-a569-20632ea53661?source=sessions"
target="_blank" rel="noopener">BRK212: Build secure apps with collaborative
DevSecOps practices</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/64ad9ab4-31aa-410a-b5a0-792c9318eb90?source=sessions"
target="_blank" rel="noopener">BRK213: Innovate with Cloud Native and Open
Source on Azure</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/225eccb7-68f8-4d7b-9f67-4828b20b0a0f?source=sessions"
target="_blank" rel="noopener">BRK214: Accelerate innovation with low-code
applications using Power Platform</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/cb857345-7f4b-459f-b8bf-ab481a02be72?source=sessions"
target="_blank" rel="noopener">BRK215: Accelerate time to insight with Azure
Synapse</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/e3f5c4bc-5cc8-4e09-89a7-033da3a16433?source=sessions"
target="_blank" rel="noopener">BRK216: Introducing new innovations in Azure
AI</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/88fb4748-e5a9-4fc2-8ddb-68366473a8bd?source=sessions"
target="_blank" rel="noopener">BRK225: Transform your business with new
innovations from edge to cloud across SQL Server and Azure SQL</A></LI> </UL>
<P><STRONG>Follow #MSIgnite</STRONG></P> <P>Explore the latest event news,
trending topics, and share your point of view in real time with your community.
Join us on Twitter and LinkedIn by using #MSIgnite.</P> <P><A
href="https://twitter.com/MS_Ignite" target="_blank" rel="noopener">Join the
conversation &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Connection Zone</STRONG></P>
<P>Only at #MSIgnite can you discover live, interactive content from Microsoft
experts and your worldwide community.</P> <P><A
href="https://myignite.microsoft.com/community-connect" target="_blank"
rel="noopener">Get connected &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Learning
Zone</STRONG></P> <P>Are you ready to accelerate your skills? Check out the
Learning Zone at #MSIgnite and gain access to expert-guided sessions, become
certified and take the Cloud Skills Challenge!</P> <P><A
href="https://myignite.microsoft.com/learning-zone" target="_blank"
rel="noopener">Learning Zone &gt;</A></P> <P>&nbsp;</P> <P><STRONG>1:1
Consultation</STRONG></P> <P>Connect with a Microsoft engineer for questions
related to architecting, implementing, or migrating a new solution by scheduling
a 45-minute consultation.</P> <P><A
href="https://myignite.microsoft.com/app-consult" target="_blank"
rel="noopener">Schedule today &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Continue
your learning journey</STRONG></P> <P>Discover more in-depth learning paths,
training options, communities, and certification details across all Microsoft
cloud solutions from one place.</P> <P><A href="https://aka.ms/learnatignite"
target="_blank" rel="noopener">Start exploring &gt;</A></P> Fri, 03 Dec 2021
18:52:02 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite-2021/ba-p/2871583
Jenn Jinhong 2021-12-03T18:52:02Z How YOU create a script package for PowerShell
gallery
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-create-a-script-package-for-powershell-gallery/ba-p/2870551
<HEADER id="main-title" class="crayons-article__header"> <DIV
class="crayons-article__header__meta"> <DIV class="spec__tags"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screenshot 2021-10-21 at 18.24.49.png" style="width: 787px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319019i7E14ACC2534DB0E5/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-10-21 at 18.24.49.png" alt="Screenshot
2021-10-21 at 18.24.49.png" /></span></DIV> </DIV> </HEADER> <DIV
class="crayons-article__main"> <DIV id="article-body"
class="crayons-article__body text-styles spec__body" data-article-id="871543">
<BLOCKQUOTE> <P>TLDR; this article covers how to build a package for the
PowerShell gallery. This is a great way to share your scripts and modules with
others. You want to help the community, right? Of course, you do :)</img></P>
</BLOCKQUOTE> <P>Here's the steps we are about to take:</P> <UL>
<LI><STRONG>Author script</STRONG>. First you need to create a script. In this
case we are creating a script, but you can also create and upload a module to
PowerShell gallery.</LI> <LI><STRONG>Document it</STRONG>. When you document
your script, you do so,
so<SPAN>&nbsp;</SPAN><CODE>Get-Help</CODE><SPAN>&nbsp;</SPAN>will work with it,
this is highly recommended to do.</LI> <LI><STRONG>Prepare the package</STRONG>.
To be able to upload your script, it needs a specific set of metadata, there are
commands that will help you do that.</LI> <LI><STRONG>Sign up for PowerShell
gallery</STRONG>. It's free to sign up for the gallery, but what you do need
from it is an API key that will help you publish your package.</LI>
<LI><STRONG>Publish</STRONG>. Using a command, you can push your package to the
gallery. At this point you have bragging rights, and can show your friends
:)</img></LI> <LI><STRONG>Save or install package</STRONG>. There are two
different approaches you can use to consume a package, pick one.</LI> <LI>that's
it :)</img></LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#author-script"
target="_blank" rel="noopener" name="author-script"></A>Author script</H2> <P>To
author a script, you need a file ending in<SPAN>&nbsp;</SPAN><CODE>.ps1</CODE>.
Then you can use the PowerShell scripting language to add your commands and/or
parameters.</P> <H2>&nbsp;</H2> <H2>Support Get-Help</H2> <P>&nbsp;To support
the Get-Help command, you want to add some documentation that supports. Add for
example the above meta information right on top of a function:</P> <LI-CODE
lang="powershell">&lt;# .SYNOPSIS Retrieves a planet .DESCRIPTION A command that
retrieves a planet by id .PARAMETER Id Specifies the record you want back
.INPUTS Id .OUTPUTS Object. .EXAMPLE PS&gt; Get-Planet 1 #&gt; Function
Get-Planet { implementation... }</LI-CODE> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#document-it"
target="_blank" rel="noopener" name="document-it"></A>Document it</H2> <P>Before
you can upload your package, it needs some metadata. Without this metadata, your
package will be rejected if you try to upload it. The metadata you need are
information on things like version, author, company and a description. What you
do is to feed that information into a command and out comes metadata + a unique
GUID. At this point you need to add this metadata to the top of your script
file.</P> <P>First, let's generate the metadata, or script info, as it's also
referred to:</P> <OL> <LI>Generate script file info:</LI> </OL> <LI-CODE
lang="powershell">$Parms = @{ Path = "./new.ps1" Version = "1.0" Author =
"&lt;email&gt;" CompanyName = "&lt;company&gt;" Description = "Description" }
New-ScriptFileInfo @Parms -PassThru</LI-CODE> <DIV class="highlight
js-code-highlight"><CODE>this creates a file <EM>new.ps1</EM>.</CODE></DIV> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>You will also get meta
information within the above file that looks something like so:</P> <LI-CODE
lang="powershell"> &lt;#PSScriptInfo .VERSION 1.0 .GUID &lt;a unique GUID&gt;
.AUTHOR &lt;email&gt; .COMPANYNAME &lt;company&gt; .COPYRIGHT .TAGS the tags you
want, comma separated .LICENSEURI https://mit-license.org .PROJECTURI link to
for example github, if that's where you store the code .ICONURI
.EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES .PRIVATEDATA #&gt; &lt;# .DESCRIPTION Description #&gt; # Here's
the rest of your script</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel">&nbsp;</DIV>
</DIV> <P>Next, you want to perhaps fill in more info in the above meta
information. You want to make sure you have a nice project description and tags
for better visibility in the gallery. Next, you can verify that the script file
and its script info validates.</P> <OL> <LI>Ensure all is good with script file
info:</LI> </OL> <LI-CODE lang="powershell">Test-ScriptFileInfo -Path
./swapi.ps1</LI-CODE> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>If everything is good,
you will get a response similar to:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE> Version Name Author
Description ------- ---- ------ ----------- 1.1 swapi author Description
</CODE></PRE> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>Great, you are ready for the next step, which is to publish your
script to the gallery.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#sign-up-for-the-powershell-gallery"
target="_blank" rel="noopener"
name="sign-up-for-the-powershell-gallery"></A>Sign up for the PowerShell
Gallery</H2> <OL> <LI>Navigate to<SPAN>&nbsp;</SPAN><A
href="https://www.powershellgallery.com/" target="_blank"
rel="noopener">https://www.powershellgallery.com/</A><SPAN>&nbsp;</SPAN>and
create a user.</LI> <LI>Select API keys menu option in top-right part of the
page.</LI> <LI>Select "Create" and expand that section. Here you are faced with
following fields:</LI> </OL> <span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Chris_Noring_0-1634837022312.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319017i614C473B9811476D/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_0-1634837022312.png"
alt="Chris_Noring_0-1634837022312.png" /></span> <OL> <LI>Fill in the following
values:</LI> </OL> <span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Chris_Noring_1-1634837022308.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319015i249CB82F836453E5/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_1-1634837022308.png"
alt="Chris_Noring_1-1634837022308.png" /></span> <P>&nbsp;</P> <P>and select
"Create". Now copy this API key, you will use it next.</P> <OL> <LI> <P>Publish
your script using<SPAN>&nbsp;</SPAN><CODE>Publish-Script</CODE>:</P> </LI> </OL>
<LI-CODE lang="powershell">Publish-Script -Path ./swapi.ps1 -NuGetApiKey &lt;api
key&gt;</LI-CODE> <P>&nbsp;</P> <P>That should take a few seconds, once done,
you will be able to find your script.</P> <OL> <LI> <P>In PowerShell gallery,
select "Manage Packages", expand "Published Packages", there's your package,
give yourself a high-five, well done!! :)</img></P> </LI> </OL> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#consume-your-package"
target="_blank" rel="noopener" name="consume-your-package"></A>Consume your
package</H2> <P>To ensure everything work as intended, we will try to consume
our package by downloading it from the PowerShell gallery and use it on our
machine. We have two options on how to do that:</P> <UL> <LI><STRONG>Install the
script</STRONG>. This will place the script in a specific downloads folder. We
will still need to dot source it to use it.</LI> <LI><STRONG>Save the
script</STRONG>. This will allow is to save the script to a destination on our
machine that we decide, we still need to dot source to use it.</LI> </UL>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#a-install-script"
target="_blank" rel="noopener" name="a-install-script"></A>a) Install
script</H2> <OL> <LI> <P>Install from the PowerShell gallery:</P> </LI> </OL>
<P><CODE></CODE></P> <LI-CODE lang="powershell">Install-Script -Name swapi
-Force</LI-CODE> <P><CODE></CODE></P> <P><CODE> </CODE></P> <P>At this point,
your script was installed on your machine, in a specific script folder. Next,
you need to find that script folder, so you can dot source and use the content
of the script.</P> <OL> <LI> <P>Verify install
with<SPAN>&nbsp;</SPAN><CODE>Get-InstallledScript</CODE></P> </LI> </OL>
<LI-CODE lang="powershell"> Get-InstalledScript</LI-CODE> <P
class="lia-indent-padding-left-30px"><CODE></CODE></P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_2-1634837022309.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319016i524BE983E7B12BAC/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_2-1634837022309.png"
alt="Chris_Noring_2-1634837022309.png" /></span> <P>&nbsp;</P> <P>Great, you
were able to get some information back on that the package (your script), was
downloaded from PowerShell Gallery. Next, you need to find the install path of
the script, to be able to use it.</P> <OL> <LI>To use the script, we first need
to localize it with<SPAN>&nbsp;</SPAN><CODE>Get-InstalledScript</CODE>:</LI>
</OL> <LI-CODE lang="powershell">(Get-InstalledScript -Name
"swapi").InstalledLocation</LI-CODE> <DIV class="highlight js-code-highlight">
<DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>it says something like so:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE>
/Users/&lt;user&gt;/.local/share/powershell/Scripts </CODE></PRE> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>dot source from
there, use the response in the last step and<SPAN>&nbsp;</SPAN><EM>dot
source</EM><SPAN>&nbsp;</SPAN>it like so:</LI> </OL> <LI-CODE
lang="powershell">.
/Users/&lt;user./.local/share/powershell/Scripts/swapi.ps1</LI-CODE> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Note the usage of "."
and then the path as the second argument, that's what's meant by dot
sourcing.</P> <P>At this point, your script is on your machine, the content of
it is available to use.</P> <OL> <LI>To test it out, try
running<SPAN>&nbsp;</SPAN><CODE>Get-Planet</CODE>, you elected to download the
swapi</LI> </OL> <LI-CODE lang="powershell">Get-Planet 2</LI-CODE> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>This should give a JSON
response.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#b-save-script-and-then-dot-source"
target="_blank" rel="noopener" name="b-save-script-and-then-dot-source"></A>b)
Save script and then dot source</H2> <P>In this second approach, instead of
installing the script, you would save it to disk at a location you specify. The
big difference is that it doesn't end up in pre-determined install location, but
rather in a place you choose.</P> <LI-CODE lang="powershell">Save-Script -Name
swapi -Repository PSGallery –Path ./package-swapi -Force</LI-CODE> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>creates
a<SPAN>&nbsp;</SPAN><EM>package-swapi</EM><SPAN>&nbsp;</SPAN>subdirectory and
places the script in there. So your file system looks like so:</P> <DIV
class="highlight js-code-highlight"> <PRE class="highlight plaintext"><CODE>
/package-swapi swapi.ps1 </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>dot source
with:</LI> </OL> <DIV class="highlight js-code-highlight"> <PRE class="highlight
powershell"><CODE> <SPAN class="n">cd</SPAN> <SPAN
class="nx">package-swapi</SPAN> <SPAN class="o">.</SPAN> <SPAN
class="n">swapi.ps1</SPAN> </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>To test it out,
try running<SPAN>&nbsp;</SPAN><CODE>Get-Planet</CODE>, you elected to download
the swapi package.</LI> </OL> <DIV class="highlight js-code-highlight"> <PRE
class="highlight powershell"><CODE> <SPAN class="n">Get-Planet</SPAN> <SPAN
class="nx">2</SPAN> </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>This should give a JSON
response.</P> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#summary"
target="_blank" rel="noopener" name="summary"></A>Summary</H2>
<P>Congratulations, you've managed to create a package for PowerShell gallery,
upload it to the gallery and managed to download and use said package.</P>
<P>You've come a long way, now build your own packages, share them with the
community and let me know.</P> <P>Thanks for reading :)</img></P> </DIV> </DIV>
Thu, 21 Oct 2021 17:53:22 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-create-a-script-package-for-powershell-gallery/ba-p/2870551
Chris_Noring 2021-10-21T17:53:22Z Test your PowerShell code with Pester
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/test-your-powershell-code-with-pester/ba-p/2835759
<BLOCKQUOTE> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Screenshot 2021-10-11 at 22.28.42.png"
style="width: 619px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316615i9632507F0A19192E/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-10-11 at 22.28.42.png" alt="Screenshot
2021-10-11 at 22.28.42.png" /></span></P> <P>TLDR; this article covers the
testing framework Pester that you use to test your PowerShell scripts.</P>
</BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#why-test"
target="_blank" rel="noopener" name="why-test"></A>Why test</H2> <P>The reason
you want to have tests are many:</P> <UL> <LI><STRONG>Correctness</STRONG>.
Ensure your code works as as intended for certain scenarios.</LI>
<LI><STRONG>Confidence</STRONG>. When you have a lot of tests covering your code
it creates a level of confidence. With this confidence you start daring to
change this, if you for example would need to refactor code and ensure it still
works after those changes.</LI> <LI><STRONG>Architecture</STRONG>. Another
reason for having tests is that it drives architecture. If you create tests
around what you do, you ensure you build your code in a way that makes it
testable. That,<SPAN>&nbsp;</SPAN><EM>drives the architecture</EM>.</LI> </UL>
<P>There are many other reasons for wanting to have tests but the three above
are quite compelling.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#what-is-pester"
target="_blank" rel="noopener" name="what-is-pester"></A>What is Pester</H2>
<P>Pester is a test framework meant for PowerShell and is a module you can
install. It has several features:</P> <UL> <LI><STRONG>Assertions</STRONG>.
Pester comes with diverse ways of asserting conditions that will determine if
your tests should fail or not.</LI> <LI><STRONG>Able to run tests</STRONG>. You
can run tests with Pester, both a single test with a single piece of input as
well as testing many different inputs at once.</LI> <LI><STRONG>Can group your
tests in test suites</STRONG>. When you start having quite a few tests, you want
a way to group those tests into larger logical groups, that's what test suites
are.</LI> <LI><STRONG>Ability to mock calls</STRONG>. In you tests you might
have calls to commands that carry out side-effects, like accessing a data store
or creating a file for example. When you want your tests to focus on the
behavior on the tests, mocking is a good idea.</LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#install"
target="_blank" rel="noopener" name="install"></A>Install</H2> <P>To install
Pester, you run the below command.</P> <P>&nbsp;</P> <LI-CODE
lang="powershell">Install-Module -Name Pester -Force</LI-CODE> <P>&nbsp;</P>
<P>Once it's installed, you can start authoring your tests.</P> <P>From install
page:</P> <BLOCKQUOTE> <P>Pester runs on Windows, Linux, MacOS and anywhere else
thanks to PowerShell. It is compatible with Windows PowerShell 3, 4, 5, 6 and
7.<BR />Pester 3 comes pre-installed with Windows 10</P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#our-first-test"
target="_blank" rel="noopener" name="our-first-test"></A>Our first test</H2>
<P>For our first test, we will learn how to write a test as well as running
it.</P> <OL> <LI>To create our first test, create a
file<SPAN>&nbsp;</SPAN><EM>A-Test.ps1</EM></LI> <LI>Add the following code:</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="powershell"> Describe "A suite" { It "my
first test" { $Value = "Value" $Value | Should -Be "Value" } }</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <P>The test above, have
a<SPAN>&nbsp;</SPAN><CODE>Describe</CODE><SPAN>&nbsp;</SPAN>construct which is
the declaration of a suite, and a string argument, giving the suite a name.
Within the suite there's a test definition<SPAN>&nbsp;</SPAN><CODE>It</CODE>,
which also has a string argument that represents the name of the test. Within
the test, there's test itself where the code is set up:</P> <P>&nbsp;</P>
<LI-CODE lang="powershell">$Value = "Value"</LI-CODE> <P>&nbsp;</P> <P>and then
it's asserted upon</P> <P>&nbsp;</P> <LI-CODE lang="powershell"> $Value | Should
-Be "Value"</LI-CODE> <P>&nbsp;</P> <P>Note the use of
the<SPAN>&nbsp;</SPAN><CODE>Should -Be</CODE>, which determines equality
between<SPAN>&nbsp;</SPAN><CODE>$Value</CODE><SPAN>&nbsp;</SPAN>and "Value".</P>
<OL> <LI>To run the test,
call<SPAN>&nbsp;</SPAN><CODE>Invoke-Pester</CODE><SPAN>&nbsp;</SPAN>(./ for the
path in Linux ans macOS and .\ for Windows):</LI> </OL> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action"><LI-CODE
lang="powershell"> Invoke-Pester ./A-Test.ps1 </LI-CODE></DIV> </DIV> </DIV>
<P>The outcome of running the test is:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE> Starting discovery
in 1 files. Discovery found 1 tests in 6ms. Running tests. [+]
/&lt;path&gt;/A-Test.ps1 42ms (11ms|26ms) Tests completed in 44ms Tests Passed:
1, Failed: 0, Skipped: 0 NotRun: 0 </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#a-more-real-looking-test"
target="_blank" rel="noopener" name="a-more-real-looking-test"></A>A more real
looking test</H2> <P>The first test was great in that it let us understand the
mechanics of testing and concepts like a suite, a test, and an assertion
like<SPAN>&nbsp;</SPAN><CODE>Should -Be</CODE>. A more real looking test would
test code in a script file that's not in our test file. Here's the steps we will
take next:</P> <UL> <LI>Create a script file with our production code.</LI>
<LI><EM>Dot source</EM><SPAN>&nbsp;</SPAN>said script file.</LI> <LI>Create a
test and run it.</LI> </UL> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#create-production-code"
target="_blank" rel="noopener" name="create-production-code"></A>Create
production code</H3> <P>You will have code that you want to test but let's
create this script file for the sake of demonstration.</P> <OL> <LI>Create a
file<SPAN>&nbsp;</SPAN><EM>Get-Tomato.ps1</EM></LI> <LI>Add the following
code:</LI> </OL> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Function Get-Tomato() {
new-object psobject -property @{ Name = "Tomato" } }</LI-CODE></DIV> </DIV>
</DIV> <P>This code will create a custom object for each time
the<SPAN>&nbsp;</SPAN><CODE>Get-Tomato()</CODE><SPAN>&nbsp;</SPAN>function is
invoked.</P> <OL> <LI>Let's<SPAN>&nbsp;</SPAN><EM>dot
source</EM><SPAN>&nbsp;</SPAN>it next so are session knows about it:</LI> </OL>
<P>&nbsp;</P> <LI-CODE lang="powershell"> . ./Get-Tomato.ps1</LI-CODE>
<P>&nbsp;</P> <OL> <LI>Verify that your function has been picked up by
running:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell">
Get-Tomato</LI-CODE> <P>&nbsp;</P> <P>you should see the following in the
console:</P> <P>&nbsp;</P> <LI-CODE lang="bash">Name ---- Tomato</LI-CODE>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#create-the-test"
target="_blank" rel="noopener" name="create-the-test"></A>Create the test</H3>
<P>Now that we have our production code, let's author the test next.</P> <OL>
<LI>Create a
file<SPAN>&nbsp;</SPAN><EM>Get-Tomato.Tests.ps1</EM><SPAN>&nbsp;</SPAN>and give
it the following code</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell">
Describe "Tomatoes" { It "Get Tomato" { $tomato = Get-Tomato $tomato.Name |
Should -Be "Tomato" } }</LI-CODE> <P>&nbsp;</P> <OL> <LI>Run the test
with<SPAN>&nbsp;</SPAN><CODE>Invoke-Pester</CODE>:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="powershell">Invoke-Pester ./Get-Tomato.Tests.ps1</LI-CODE>
<P>&nbsp;</P> <P>you should see the following output:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE> Invoke-Pester
./Get-Tomato.Tests.ps1 Starting discovery in 1 files. Discovery found 1 tests in
6ms. Running tests. [+] /&lt;path&gt;/Get-Tomato.Tests.ps1 66ms (9ms|52ms) Tests
completed in 68ms Tests Passed: 1, Failed: 0, Skipped: 0 NotRun: 0</CODE></PRE>
</DIV> <P>Great, you ran a test on a more real looking code.</P> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#working-with-side-effects"
target="_blank" rel="noopener" name="working-with-side-effects"></A>Working with
side effects</H2> <P>You will have code that you write that eventually performs
side effects, like accessing a network resource or create a file. Let's look at
such a case and how Pester handles it. The short answer is that you can use
mocks, a construct that's executed instead of the actual command. All you need
to do is to focus that the<SPAN>&nbsp;</SPAN><EM>right
behavior</EM><SPAN>&nbsp;</SPAN>happens.</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#update-production-code"
target="_blank" rel="noopener" name="update-production-code"></A>Update
production code</H3> <P>So, in this case, imagine that our production code now
will have more
function<SPAN>&nbsp;</SPAN><CODE>Save-Tomato</CODE><SPAN>&nbsp;</SPAN>that saves
an object to a file.</P> <OL> <LI>Update the <EM>Get-Tomato.ps1&nbsp;</EM>file
with this code:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell"> Function
Save-Tomato() { Param( [string] $Name ) New-Item -ItemType File -Path
./Tomato.txt -Value $Name -Force }</LI-CODE> <P>&nbsp;</P> <OL> <LI><EM>Dot
source</EM><SPAN>&nbsp;</SPAN>the code to ensure it's being picked up:</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="powershell">. /Get-Tomato.ps1</LI-CODE>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#create-a-test"
target="_blank" rel="noopener" name="create-a-test"></A>Create a test</H3>
<P>Ok, so you have
added<SPAN>&nbsp;</SPAN><CODE>Save-Tomato()</CODE><SPAN>&nbsp;</SPAN>to your
script file. Now for a test. Your code is
calling<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE>, which creates a new file. As
part of testing, you don't want it to create a file each time the test is being
run. More likely, you just want to see the test does what it's supposed to, i.e.
calling the correct command/s. So, to solve this issue, we can mock, replace the
current implementation
of<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE><SPAN>&nbsp;</SPAN>with our own.</P>
<UL> <LI> <P><STRONG>To mock</STRONG>, we first need to replace the actual
implementation like so:</P> </LI> </UL> <P>&nbsp;</P> <LI-CODE
lang="powershell">Mock -CommandName New-Item -MockWith {}</LI-CODE>
<P>&nbsp;</P> <UL> <LI><STRONG>Call the command</STRONG>. At this point, you
need to call the command like you would usually do. In your case, it means that
you call<SPAN>&nbsp;</SPAN><CODE>Save-Tomato()</CODE>:</LI> </UL> <P>&nbsp;</P>
<LI-CODE lang="powershell">Save-Tomato # this should call New-Item</LI-CODE>
<P>&nbsp;</P> <UL> <LI><STRONG>Verify</STRONG>. The last part of the mocking
process is to verify that you mock has been called</LI> </UL> <P
class="lia-indent-padding-left-30px">The command<SPAN>&nbsp;</SPAN><CODE>Should
-Invoke</CODE>, allows you to specify what command it should have called, like
so:</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Should -Invoke -CommandName
New-Item -Times 1 -Exactly</LI-CODE> <P>&nbsp;</P> <P
class="lia-indent-padding-left-30px">The above code
verifies<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE><SPAN>&nbsp;</SPAN>is called
exactly one time.</P> <UL> <LI>Let's put it all together as a test:</LI> </UL>
<P>&nbsp;</P> <LI-CODE lang="powershell">It "Save tomato" { Mock -CommandName
New-Item -MockWith {} Save-Tomato "my tomato" Should -Invoke -CommandName
New-Item -Times 1 -Exactly }</LI-CODE> <P>&nbsp;</P> <OL>
<LI>Remove<SPAN>&nbsp;</SPAN><EM>Tomato.txt</EM><SPAN>&nbsp;</SPAN>and then run
the test
with<SPAN>&nbsp;</SPAN><CODE>Invoke-Pester</CODE><SPAN>&nbsp;</SPAN>like
so:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell"> Invoke-Pester
./Get-Tomato.Tests.ps1</LI-CODE> <P>&nbsp;</P> <P>At this point your tests
should run successfully like so:</P> <DIV class="highlight js-code-highlight">
<PRE class="highlight plaintext"><CODE> Starting discovery in 1 files. Discovery
found 2 tests in 8ms. Running tests. [+]
/Users/chnoring/Documents/dev/projects/powershell-projects/articles/Get-Tomato.Tests.ps1
78ms (34ms|37ms) Tests completed in 80ms Tests Passed: 2, Failed: 0, Skipped: 0
NotRun: 0 </CODE></PRE> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>Also, note
how<SPAN>&nbsp;</SPAN><EM>Tomato.txt</EM><SPAN>&nbsp;</SPAN>isn't created,
because you are mocking the call to<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE>,
success.</P> <P>Congrats, you've learned how to install test framework Pester,
on top of that, you've learned to author your first tests and even learned how
to mock the call to actual commands. To learn more, have a look at Pesters
GitHub page:</P> <BLOCKQUOTE> <UL> <LI><A
href="https://github.com/pester/Pester" target="_blank" rel="noopener">Pester GH
page</A></LI> <LI><A title="Pester VS Code extension"
href="https://marketplace.visualstudio.com/items?itemName=pspester.pester-test"
target="_self">Check out the Pester extension for VS Code</A>&nbsp;, thanks
JGrote</LI> </UL> </BLOCKQUOTE> Tue, 12 Oct 2021 17:59:12 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/test-your-powershell-code-with-pester/ba-p/2835759
Chris_Noring 2021-10-12T17:59:12Z Building a Web Report in PowerShell, use the
-Force Luke
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-web-report-in-powershell-use-the-force-luke/ba-p/2824832
<BLOCKQUOTE> <P>TLDR; The idea of this article is to show how to build a web
report. I will show the usage of several commands that you can connect that does
all the heavy lifting for you</P> </BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#the-scenario-create-a-report-from-some-remote-data"
target="_blank" rel="noopener"
name="the-scenario-create-a-report-from-some-remote-data"></A>The scenario -
create a report from some remote data</H2> <P>Ok, here you are, you are looking
to read data from one place and present that as a web report. The data is
remote, you need to fetch it somehow, you also probably need to think about how
to convert the incoming data and lastly create that web report. If you are a
developer, you probably think that oh ok, this is probably a few moving parts,
10-20 lines of code. But you've heard of PowerShell, it's supposed to be
powerful, do a lot of heavy lifting, so why not give it a spin.</P>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#the-steps-we-will-take"
target="_blank" rel="noopener" name="the-steps-we-will-take"></A>The steps we
will take</H2> <P>To achieve our task, we need to plan it out. Carry it out
sequentially, and who knows, maybe this is something we can reuse? So what
steps:</P> <OL> <LI><STRONG>Fetch the data</STRONG>. Need to grab the data
somehow</LI> <LI><STRONG>Convert</STRONG>. Lets assume this data comes in some
type of format and we most likely need to convert it some other form.</LI>
<LI><STRONG>Present</STRONG>. So we fetched the data, massaged it into a
suitable format, now what? Now, we want to present it as a web report, HTML, CSS
etc.</LI> </OL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#getting-to-work"
target="_blank" rel="noopener" name="getting-to-work"></A>Getting to work</H2>
<P>We have a game plan. Now let's see if we can find the commands we need. A
good starting point is the<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/?view=powershell-7.1"
target="_blank" rel="noopener">Microsoft.PowerShell.Utility section</A>. In this
section, there are tons of commands that does a lot of heavy lifting for
you.</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#grabbing-the-data"
target="_blank" rel="noopener" name="grabbing-the-data"></A>Grabbing the
data</H3> <P>First things first, we need to grab some data remotely, so what's
our options?</P> <UL> <LI><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.1"
target="_blank" rel="noopener">Invoke-WebRequest</A><SPAN>&nbsp;</SPAN>this
seems to let us call a URL, send a body, credentials etc, seems promising.</LI>
<LI><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-restmethod?view=powershell-7.1"
target="_blank" rel="noopener">Invoke-RestMethod</A>. What about this one, how
is it different? This sentence right here:</LI> </UL> <BLOCKQUOTE> <P>PowerShell
formats the response based to the data type. For an RSS or ATOM feed, PowerShell
returns the Item or Entry XML nodes. For JavaScript Object Notation (JSON) or
XML, PowerShell converts, or deserializes, the content into [PSCustomObject]
objects.</P> </BLOCKQUOTE> <P>It takes a JSON response and turns that into a
PSCustomObject, nice. Well let's see with our other commands before we make a
decision.</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#presenting-the-data"
target="_blank" rel="noopener" name="presenting-the-data"></A>Presenting the
data</H3> <P>This is the last thing we need to do but we need to understand if
there's a command that helps us with report creation and most importantly, what
input it takes. I think we found it:</P> <UL> <LI><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-html?view=powershell-7.1"
target="_blank" rel="noopener">ConvertTo-Html</A><SPAN>&nbsp;</SPAN>Converts
.NET objects into HTML that can be displayed in a Web browser.</LI> </UL>
<P>Yea, that reminds us of
something,<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE>. Why?
Cause<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE><SPAN>&nbsp;</SPAN>produces
custom objects, i.e .NET objects.</P> <P>How do we save the report to a file
though, so we can store that somewhere and let it be hosted by a web server? Oh,
here's an example, pipe it to<SPAN>&nbsp;</SPAN><CODE>Out-File</CODE>, like
so<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html | Out-File aliases.htm</CODE></P>
<H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#overview-of-the-solution"
target="_blank" rel="noopener" name="overview-of-the-solution"></A>Overview of
the solution</H3> <P>So we have a theory on how to do this:</P> <OL>
<LI>Call<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE>.</LI> <LI>Followed
by<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE>.</LI> <LI>Followed
by<SPAN>&nbsp;</SPAN><CODE>Out-File</CODE>.</LI> </OL> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#build-the-solution"
target="_blank" rel="noopener" name="build-the-solution"></A>Build the
solution</H3> <P>Seems almost too easy. Ah well, let's give it whirl. First
things first, lets choose a data source, SWAPI, the Star Wars API, cause use
the<SPAN>&nbsp;</SPAN><CODE>-Force</CODE>, am I right? :)</img></P> <OL>
<LI>Start<SPAN>&nbsp;</SPAN><CODE>pwsh</CODE><SPAN>&nbsp;</SPAN>in the
console.</LI> <LI>Create a file<SPAN>&nbsp;</SPAN><EM>web-report.ps1</EM></LI>
<LI>Add the following code:</LI> </OL> <DIV class="highlight js-code-highlight">
<DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action"><LI-CODE
lang="powershell"> Invoke-RestMethod -URI https://swapi.dev/api/people/1/ |
ConvertTo-Html | Out-File report.htm</LI-CODE></DIV> </DIV> </DIV> <OL>
<LI>Run<SPAN>&nbsp;</SPAN><CODE>./web-report.ps1</CODE><SPAN>&nbsp;</SPAN>(or<SPAN>&nbsp;</SPAN><CODE>.\web-report.ps1</CODE><SPAN>&nbsp;</SPAN>for
Windows folks)</LI> </OL> <P>It created
a<SPAN>&nbsp;</SPAN><EM>report.htm</EM><SPAN>&nbsp;</SPAN>file for us. Ok, let's
have a look:</P> <P>&nbsp;</P> <LI-CODE lang="markup">&lt;!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html
xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;HTML
TABLE&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;table&gt;
&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;height&lt;/th&gt;&lt;th&gt;mass&lt;/th&gt;&lt;th&gt;hair_color&lt;/th&gt;&lt;th&gt;skin_color&lt;/th&gt;&lt;th&gt;eye_color&lt;/th&gt;&lt;th&gt;birth_year&lt;/th&gt;&lt;th&gt;gender&lt;/th&gt;&lt;th&gt;homeworld&lt;/th&gt;&lt;th&gt;films&lt;/th&gt;&lt;th&gt;species&lt;/th&gt;&lt;th&gt;vehicles&lt;/th&gt;&lt;th&gt;starships&lt;/th&gt;&lt;th&gt;created&lt;/th&gt;&lt;th&gt;edited&lt;/th&gt;&lt;th&gt;url&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Luke
Skywalker&lt;/td&gt;&lt;td&gt;172&lt;/td&gt;&lt;td&gt;77&lt;/td&gt;&lt;td&gt;blond&lt;/td&gt;&lt;td&gt;fair&lt;/td&gt;&lt;td&gt;blue&lt;/td&gt;&lt;td&gt;19BBY&lt;/td&gt;&lt;td&gt;male&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/planets/1/&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;09/12/2014
13:50:51&lt;/td&gt;&lt;td&gt;20/12/2014
21:17:56&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/people/1/&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/body&gt;&lt;/html&gt;</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <OL> <LI>Show this file in a
browser with<SPAN>&nbsp;</SPAN><CODE>Invoke_Item</CODE>:</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Invoke-Item
./report.htm</LI-CODE></DIV> </DIV> </DIV> <P>This should start up a browser and
you should see something like:</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_0-1633648317946.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316080iADB1C70B0BDCD1B3/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_0-1633648317946.png"
alt="Chris_Noring_0-1633648317946.png" /></span></P> <P>&nbsp;</P> <P>Ok, you
could be done here, or we can make it more flexible. We don't like hardcoded
values, right? RIGHT?</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#making-it-flexible"
target="_blank" rel="noopener" name="making-it-flexible"></A>Making it
flexible</H3> <P>I thought so, now, let's add some parameters for, URL, and
report name.</P> <OL> <LI>Add the following code to the top part of our
script<SPAN>&nbsp;</SPAN><EM>web-report.ps1</EM>:</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Param( [String] $URL =
"https://swapi.dev/api/people/1/", [String] $Report = "report.htm"
)</LI-CODE></DIV> </DIV> </DIV> <OL> <LI>Lets invoke it again, this time with a
new URL "<A href="https://swapi.dev/api/people/2/%22:" target="_blank"
rel="noopener">https://swapi.dev/api/people/2/":</A></LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> ./web-report.ps1 -URL
https://swapi.dev/api/people/2/</LI-CODE></DIV> </DIV> </DIV> <OL> <LI>Lets
check the response in<SPAN>&nbsp;</SPAN><EM>report.htm</EM>. :</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> &lt;!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html
xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;HTML
TABLE&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;table&gt;
&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;height&lt;/th&gt;&lt;th&gt;mass&lt;/th&gt;&lt;th&gt;hair_color&lt;/th&gt;&lt;th&gt;skin_color&lt;/th&gt;&lt;th&gt;eye_color&lt;/th&gt;&lt;th&gt;birth_year&lt;/th&gt;&lt;th&gt;gender&lt;/th&gt;&lt;th&gt;homeworld&lt;/th&gt;&lt;th&gt;films&lt;/th&gt;&lt;th&gt;species&lt;/th&gt;&lt;th&gt;vehicles&lt;/th&gt;&lt;th&gt;starships&lt;/th&gt;&lt;th&gt;created&lt;/th&gt;&lt;th&gt;edited&lt;/th&gt;&lt;th&gt;url&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C-3PO&lt;/td&gt;&lt;td&gt;167&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;n/a&lt;/td&gt;&lt;td&gt;gold&lt;/td&gt;&lt;td&gt;yellow&lt;/td&gt;&lt;td&gt;112BBY&lt;/td&gt;&lt;td&gt;n/a&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/planets/1/&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;10/12/2014
15:10:51&lt;/td&gt;&lt;td&gt;20/12/2014
21:17:50&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/people/2/&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/body&gt;&lt;/html&gt;</LI-CODE></DIV> </DIV> </DIV> <P>This
time we have<SPAN>&nbsp;</SPAN><CODE>C-3PO</CODE>, yup, definitely not Luke, it
seems to be working :)</img></P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#improve-the-response"
target="_blank" rel="noopener" name="improve-the-response"></A>Improve the
response</H3> <P>So, so far we had a ton of columns coming back, maybe we just
need a few fields from the response,
like<SPAN>&nbsp;</SPAN><CODE>name</CODE>,<SPAN>&nbsp;</SPAN><CODE>planet</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>height</CODE>.
Yea let's do that, and justt pick what we need from the response:</P> <OL>
<LI>Let's
add<SPAN>&nbsp;</SPAN><CODE>Select-Object</CODE><SPAN>&nbsp;</SPAN>like so:</LI>
</OL> <DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Select-Object name, age,
planet |</LI-CODE></DIV> </DIV> </DIV> <P>with the full code looking like
so:</P> <P>&nbsp;</P> <LI-CODE lang="powershell"> Param( [String] $URL =
"https://swapi.dev/api/people/1/", [String] $Report = "report.htm" )
Invoke-RestMethod -URI $URL | ConvertTo-Html -Property name, height, homeworld |
Out-File $Report</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <OL> <LI>Let's invoke it again:</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> ./web-report.ps1 -URL
https://swapi.dev/api/people/1/</LI-CODE></DIV> </DIV> </DIV> <P>and our report
now looks like:</P> <P>&nbsp;</P> <LI-CODE lang="markup"> &lt;!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html
xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;HTML
TABLE&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;table&gt;
&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;height&lt;/th&gt;&lt;th&gt;homeworld&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Luke
Skywalker&lt;/td&gt;&lt;td&gt;172&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/planets/1/&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/body&gt;&lt;/html&gt;</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <P>Much better :)</img> In
fact, reading up a bit, we can just use -Property
on<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE>, so we get:</P> <P>&nbsp;</P>
<LI-CODE lang="powershell"> Invoke-RestMethod -URI $URL | ConvertTo-Html
-Property name, height, homeworld | Out-File $Report</LI-CODE> <P>&nbsp;</P>
<H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#make-it-pretty"
target="_blank" rel="noopener" name="make-it-pretty"></A>Make it pretty</H3>
<P>In all honesty, this report is bad, no colors, no nothing. Surely, we must be
able to pass a CSS file to<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE>?</P>
<P>Ah yes, looking through the docs there's the
parameter<SPAN>&nbsp;</SPAN><CODE>-CssUri</CODE><SPAN>&nbsp;</SPAN>that takes a
file path. Let's create a CSS file then.</P> <OL>
<LI>Create<SPAN>&nbsp;</SPAN><CODE>report.css</CODE><SPAN>&nbsp;</SPAN>and add
the following CSS</LI> </OL> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="css"> table { border: solid 1px black;
padding: 10px; border-collapse: collapse; } tr:nth-child(even) {background:
#CCC} tr:nth-child(odd) {background: #FFF}</LI-CODE></DIV> </DIV> </DIV> <OL>
<LI>Update the script to take<SPAN>&nbsp;</SPAN><CODE>-CssUri
report.css</CODE><SPAN>&nbsp;</SPAN>on<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE></LI>
<LI>Run it again, you should see this in the browser:</LI> </OL> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_1-1633648317947.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316081i40A896330A464C00/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_1-1633648317947.png"
alt="Chris_Noring_1-1633648317947.png" /></span></P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#summary"
target="_blank" rel="noopener" name="summary"></A>Summary</H2> <P>In summary, we
learned that we could use just a few
commands,<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE>,<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>Out-File</CODE><SPAN>&nbsp;</SPAN>and
boom, we've created ourselves a report.</P> <P>Full code:</P> <P>&nbsp;</P>
<LI-CODE lang="powershell">Param( [String] $URL =
"https://swapi.dev/api/people/1/", [String] $Report = "report.htm" )
Invoke-RestMethod -URI $URL | ConvertTo-Html -CssUri report.css -Title "Web
report" -Property name, height, homeworld | Out-File $Report</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> Thu, 07 Oct 2021 23:21:24 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-web-report-in-powershell-use-the-force-luke/ba-p/2824832
Chris_Noring 2021-10-07T23:21:24Z new module : Testing in C# using Visual Studio
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-testing-in-c-using-visual-studio/ba-p/2815085
<P>Testing is an important part of shipping and maintaining an
application.&nbsp;</P> <P>&nbsp;</P> <P>To really make writing and running tests
a part of your everyday workflow, it needs to be easy to author and run tests.
Not only that, but it also needs to be fast. One of the great features of Visual
Studio is its ability to support different test frameworks but also the tooling
around authoring and running tests.</P> <P>&nbsp;</P> <P>In this module, you'll
do the following:</P> <P>&nbsp;</P> <UL> <LI><STRONG>Write a test</STRONG>:
Learn the basic parts of writing a test and use test projects that reference
your product code.</LI> <LI><STRONG>Use Visual Studio to run and debug your
tests</STRONG>: See the output of your tests and interact with a whole suite of
tests.</LI> <LI><STRONG>Sharpen your test-writing skills</STRONG>: Use Fluent
Assertions, data-driven tests, and mocking to expand your testing skills.</LI>
</UL> <P>Link to module:&nbsp;<A title="C# testing in visual studio"
href="https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-tools/1-introduction"
target="_self">https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-tools/1-introduction</A>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="vs-testing.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/315411i9F9ECBC3DFF58971/image-size/large?v=v2&amp;px=999"
role="button" title="vs-testing.png" alt="vs-testing.png" /></span></P> Tue, 05
Oct 2021 22:09:30 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-testing-in-c-using-visual-studio/ba-p/2815085
Chris_Noring 2021-10-05T22:09:30Z Working With Azure AD B2C Custom Policies
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/working-with-azure-ad-b2c-custom-policies/ba-p/2804056
<P>In this post, we will learn one of the two sign-in options provided by an
Azure AD B2C tenant, and this is the custom policies (the other one is the user
flows). With Custom Policies, we can build customized authentication flows based
on our needs.</P> <P>&nbsp;</P> <H1>Getting Started</H1> <P>Before getting
started make sure we have :</P> <UL> <LI>An Azure AD B2C tenant</LI> <LI>A
registered web application</LI> <LI>The necessary policy keys and register the
Identity Experience Framework Apps</LI> <LI>Download the <A
href="https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/archive/refs/heads/master.zip"
target="_blank" rel="noopener">Azure AD B2C policy starter pack</A> from GitHub,
make the configurations and upload it to the tenant.</LI> </UL> <P>&nbsp;</P>
<H1>Add signing/encryption keys</H1> <P>Sign in to the Azure Portal, search for
the Azure AD B2C tenant, and click Open B2C Tenant.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="01.PNG" style="width: 222px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314401iBC7E2B763DBBA9DD/image-size/medium?v=v2&amp;px=400"
role="button" title="01.PNG" alt="01.PNG" /></span></P> <P>From the overview
page, under the Policies section, select&nbsp;<STRONG>Identity Experience
Framework</STRONG>.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="02.png" style="width: 292px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314402iCEE9B1E2D741A248/image-size/medium?v=v2&amp;px=400"
role="button" title="02.png" alt="02.png" /></span></P> <H2>Create the signing
key</H2> <P>&nbsp;</P> <P>Select Manage -&nbsp;<STRONG>Policy Keys</STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="03.png" style="width: 275px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314403i825C04E1C1000998/image-size/medium?v=v2&amp;px=400"
role="button" title="03.png" alt="03.png" /></span></P> <P>&nbsp;</P> <P>select
<STRONG>Add</STRONG></P> <P>&nbsp;</P> <P><STRONG><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="04.png" style="width: 352px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314405i940D36D1DE9394BF/image-size/medium?v=v2&amp;px=400"
role="button" title="04.png" alt="04.png" /></span></STRONG></P> <P>&nbsp;</P>
<UL> <LI>From the&nbsp;<STRONG>Options </STRONG>section, select from the
drop-down menu <STRONG>Generate</STRONG>.</LI> <LI>In the filed
<STRONG>Name</STRONG>, type <STRONG>TokenSigningKeyContainer</STRONG>.</LI>
<LI>In the <STRONG>Key type</STRONG>, choose <STRONG>RSA</STRONG>.</LI> <LI>In
the <STRONG>Key usage</STRONG>, select&nbsp;<STRONG>Signature</STRONG>.</LI>
</UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="05.png" style="width: 310px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314406iD217A2F4AA8F8C91/image-size/medium?v=v2&amp;px=400"
role="button" title="05.png" alt="05.png" /></span></P> <P>&nbsp;</P>
<P>Select&nbsp;<STRONG>Create</STRONG>.</P> <H2>Create the encryption key</H2>
<UL> <LI>Select&nbsp;<STRONG>Policy Keys</STRONG>&nbsp;and then
select&nbsp;<STRONG>Add</STRONG>.</LI> <LI>From
the&nbsp;<STRONG>Options&nbsp;</STRONG>section, select from the drop-down menu
<STRONG>Generate</STRONG>.</LI> <LI>In the filed <STRONG>Name</STRONG>, type
<STRONG>TokenEncryptionKeyContainer</STRONG>.</LI> <LI>In the <STRONG>Key
type</STRONG>, choose <STRONG>RSA</STRONG>.</LI> <LI>In the <STRONG>Key
usage</STRONG>, select <STRONG>Encryption</STRONG>.</LI> </UL> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="06.png" style="width: 326px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314407iBC11DE4E2D2508D6/image-size/medium?v=v2&amp;px=400"
role="button" title="06.png" alt="06.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>Select&nbsp;<STRONG>Create</STRONG>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="07.png" style="width: 125px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316378i70D85B1D33B2AA62/image-size/medium?v=v2&amp;px=400"
role="button" title="07.png" alt="07.png" /></span>&nbsp;</P> <H1>Register the
IdentityExperienceFramework application</H1> <P>At the next step, we have to
register the <STRONG>IdentityExperienceFramework</STRONG> application. <SPAN
data-preserver-spaces="true">From the left-hand side, blade
select&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">Manage</SPAN></STRONG><SPAN
data-preserver-spaces="true">&nbsp;-&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">App registration</SPAN></STRONG><SPAN
data-preserver-spaces="true">s and then select&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">+ New registration</SPAN></STRONG><SPAN
data-preserver-spaces="true">.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="08.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314408i5B2526FAE872CE1B/image-size/medium?v=v2&amp;px=400"
role="button" title="08.png" alt="08.png" /></span></P> <P>&nbsp;</P> <P>In the
field name, type <STRONG>IdentityExperienceFramework</STRONG>.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="09.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314409i7C463CB90C0D543A/image-size/medium?v=v2&amp;px=400"
role="button" title="09.png" alt="09.png" /></span></P> <P>Under
<STRONG>Supported account types</STRONG>, select <STRONG>Accounts in this
organizational directory only</STRONG> (tenant name B2C only - Single
tenant).</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="10.png" style="width: 619px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314413iC097F4AFD6CB21E8/image-size/large?v=v2&amp;px=999"
role="button" title="10.png" alt="10.png" /></span></P> <P>&nbsp;</P> <P>Under
the&nbsp;<STRONG>Redirect URI </STRONG>section, select <STRONG>Web</STRONG>, and
then type <STRONG><EM><A
href="https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com"
target="_blank"
rel="noopener">https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com</A>.</EM></STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="11.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314414i70F400742BDE640D/image-size/large?v=v2&amp;px=999"
role="button" title="11.png" alt="11.png" /></span></P> <P>&nbsp;</P> <P>Under
the&nbsp;<STRONG>Permissions</STRONG> section, select the <STRONG>Grant admin
consent to openid and offline_access permissions</STRONG>&nbsp;check box.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="12.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314416iFA002D1A0EE3AA70/image-size/large?v=v2&amp;px=999"
role="button" title="12.png" alt="12.png" /></span></P> <P>&nbsp;</P> <P>And
click <STRONG>Register</STRONG>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="13.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314415i74447F40402E9C01/image-size/medium?v=v2&amp;px=400"
role="button" title="13.png" alt="13.png" /></span></P> <H1>Expose the API by
adding a scope</H1> <P>In the left-hand&nbsp; side blade, under the
<STRONG>Manage </STRONG>section, select&nbsp;<STRONG>Expose an API,</STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="14.png" style="width: 167px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314418i1459D043F1761002/image-size/medium?v=v2&amp;px=400"
role="button" title="14.png" alt="14.png" /></span></P> <P>&nbsp;</P> <P>and
then select&nbsp;<STRONG> +</STRONG> <STRONG>Add a scope</STRONG>,</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="15.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314419iA25DF94C6D865D6B/image-size/medium?v=v2&amp;px=400"
role="button" title="15.png" alt="15.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-preserver-spaces="true">finally, select&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">Save and continue</SPAN></STRONG></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="16.png" style="width: 363px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314420i760E2DF9EF9DC87B/image-size/medium?v=v2&amp;px=400"
role="button" title="16.png" alt="16.png" /></span></P> <P>&nbsp;</P> <P>Now, we
have to type the values as shown in the image below to create a scope that
allows custom policy execution in the Azure AD B2C tenant:</P> <P>&nbsp;</P>
<UL> <LI><STRONG>Scope name:</STRONG>&nbsp;user_impersonation</LI>
<LI><STRONG>Admin consent display name:</STRONG>&nbsp;Access
IdentityExperienceFramework</LI> <LI><STRONG>Admin consent
description:</STRONG>&nbsp;Allow the application to access
IdentityExperienceFramework on behalf of the signed-in user.</LI> </UL>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="17.png" style="width: 500px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314421iE1504C66C6243DE5/image-size/large?v=v2&amp;px=999"
role="button" title="17.png" alt="17.png" /></span></P> <P>&nbsp;</P> <P>Click
<STRONG>Add scope</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="18.png" style="width: 302px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314422iF5A37A85D1E473EF/image-size/medium?v=v2&amp;px=400"
role="button" title="18.png" alt="18.png" /></span></P> <H1>Register the
ProxyIdentityExperienceFramework application</H1> <P><SPAN
data-preserver-spaces="true">Go to <STRONG>Manage</STRONG> - <STRONG>App
registrations</STRONG>, and then click&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">+ New registration</SPAN></STRONG><SPAN
data-preserver-spaces="true">.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="19.png" style="width: 389px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314425iA9E5D0AD1FFD6201/image-size/medium?v=v2&amp;px=400"
role="button" title="19.png" alt="19.png" /></span></P> <P>&nbsp;</P> <P>In the
Name field, type <STRONG>ProxyIdentityExperienceFramework</STRONG>.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="20.png" style="width: 410px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314426i068D45165D4FE912/image-size/large?v=v2&amp;px=999"
role="button" title="20.png" alt="20.png" /></span></P> <P>&nbsp;</P> <P>Under
<STRONG>Supported account types</STRONG>, select<STRONG> Accounts in this
organizational directory only</STRONG>, radio button.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="21.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314427i2A897D9236A16932/image-size/large?v=v2&amp;px=999"
role="button" title="21.png" alt="21.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Redirect URI </STRONG>section, use the drop-down to select
<STRONG>Public client/native (mobile &amp; desktop), </STRONG>and for
<STRONG>Redirect URI</STRONG>, type&nbsp;<STRONG>myapp://auth</STRONG>.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="22.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314429iFD51A0DD589BDAD1/image-size/large?v=v2&amp;px=999"
role="button" title="22.png" alt="22.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Permissions </STRONG>section, select the <STRONG>Grant admin consent
to openid and offline_access permissions</STRONG>&nbsp;check box.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="23.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314430i467F9E434F2DEC76/image-size/large?v=v2&amp;px=999"
role="button" title="23.png" alt="23.png" /></span></P> <P>&nbsp;</P> <P>And
click the <STRONG>Register </STRONG>button.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="24.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314432i2E88BE01F78BE5E5/image-size/medium?v=v2&amp;px=400"
role="button" title="24.png" alt="24.png" /></span></P> <H1>Specify that the
application should be treated as a public client</H1> <P>In the left-hand side
menu, select <STRONG>Manage</STRONG> - <STRONG>Authentication</STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="25.png" style="width: 236px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314433i5EE2FFFEEB925104/image-size/medium?v=v2&amp;px=400"
role="button" title="25.png" alt="25.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Advanced settings </STRONG>section, in the&nbsp;<STRONG>Allow public
client flows</STRONG>, set the <STRONG>Enable the following mobile and desktop
flows</STRONG>&nbsp;to&nbsp;<STRONG>Yes</STRONG>.</P> <P>&nbsp;</P> <TABLE
style="border-collapse: collapse; width: 100%;"> <TBODY> <TR> <TD style="width:
100%;"><STRONG>Info:</STRONG> Make user that
"<STRONG>allowPublicClient</STRONG>": true&nbsp;is set in the application
manifest.</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="26.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314434i6A3DF44E95201FCA/image-size/large?v=v2&amp;px=999"
role="button" title="26.png" alt="26.png" /></span></P> <P>&nbsp;</P> <P>And
select <STRONG>Save</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="27.png" style="width: 415px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314435i225DC35B21B9D907/image-size/large?v=v2&amp;px=999"
role="button" title="27.png" alt="27.png" /></span></P> <P>&nbsp;</P> <P>Now,
grant permissions to the API scope we exposed earlier in
the&nbsp;IdentityExperienceFramework&nbsp;registration: In the left menu, select
<STRONG>Manage</STRONG> - <STRONG>API permissions</STRONG>.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="28.png" style="width: 171px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314436i4E64724C9C85D283/image-size/medium?v=v2&amp;px=400"
role="button" title="28.png" alt="28.png" /></span></P> <P>&nbsp;</P>
<P>Under&nbsp;<STRONG>Configured permissions</STRONG>, select&nbsp;<STRONG>Add a
permission</STRONG>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="29.png" style="width: 485px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314437iD8AC3928D4AE3118/image-size/large?v=v2&amp;px=999"
role="button" title="29.png" alt="29.png" /></span></P> <P>&nbsp;</P> <P>Under
the Request API permissions section, click on the <STRONG>My APIs</STRONG> tab,
and select the
<STRONG>IdentityExperienceFramework</STRONG>&nbsp;application.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="30.png" style="width: 564px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314438i6D7224616945B417/image-size/large?v=v2&amp;px=999"
role="button" title="30.png" alt="30.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Select Permissions</STRONG> section, select
the&nbsp;<STRONG>user_impersonation</STRONG> scope.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="31.png" style="width: 517px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314439iA7EB0520FAC16008/image-size/large?v=v2&amp;px=999"
role="button" title="31.png" alt="31.png" /></span></P> <P>&nbsp;</P> <P>And
select the <STRONG>Add permissions </STRONG>button</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="32.png" style="width: 291px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314440i2DECD59BD105DEEB/image-size/medium?v=v2&amp;px=400"
role="button" title="32.png" alt="32.png" /></span></P> <P>&nbsp;</P> <P>Now,
select <STRONG>Grant admin consent</STRONG> for (tenant name).</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="33.png" style="width: 597px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314441i19E29CCF6707A38C/image-size/large?v=v2&amp;px=999"
role="button" title="33.png" alt="33.png" /></span>&nbsp;</P> <H1>Working with
the custom policy starter pack</H1> <P>&nbsp;</P> <P>After unzipping the custom
policy starter pack, zip file, we will see the folders as the image below.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="00_1.PNG" style="width: 235px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316377iAE5499684C84A001/image-size/medium?v=v2&amp;px=400"
role="button" title="00_1.PNG" alt="00_1.PNG" /></span></P> <P>&nbsp;</P> <TABLE
style="border-collapse: collapse; width: 80.2826%; height: 115px;"
width="80.2826%"> <TBODY> <TR style="height: 23px;"> <TD width="22.4421%"
style="width: 22.4421%; height: 23px;"><STRONG>Folder Name</STRONG></TD> <TD
width="57.8417%" style="width: 57.8417%; height:
23px;"><STRONG>Description</STRONG></TD> </TR> <TR style="height: 23px;"> <TD
width="22.4421%" style="width: 22.4421%; height: 23px;">LocalAccounts</TD> <TD
width="57.8417%" style="width: 57.8417%; height: 23px;">&nbsp;Includes custom
policies XML files for local accounts</TD> </TR> <TR style="height: 23px;"> <TD
width="22.4421%" style="width: 22.4421%; height: 23px;">SocialAccounts</TD> <TD
width="57.8417%" style="width: 57.8417%; height: 23px;">Includes custom policies
XML files for social accounts</TD> </TR> <TR style="height: 23px;"> <TD
width="22.4421%" style="width: 22.4421%; height:
23px;">SocialAndLocalAccounts</TD> <TD width="57.8417%" style="width: 57.8417%;
height: 23px;">Includes custom policies XML files for both local and social
accounts</TD> </TR> <TR style="height: 23px;"> <TD width="22.4421%"
style="width: 22.4421%; height: 23px;">SocialAndLocalAccountsWithMfa</TD> <TD
width="57.8417%" style="width: 57.8417%; height: 23px;">Includes custom policies
XML files for both local and social accounts with multi-factor authentication
(Mfa)</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <H1>Configure the Custom
Policies</H1> <P>Before we upload the custom policy XML files we must make some
changes to the <STRONG><EM>TrustFrameworkExtensions.xml.</EM></STRONG></P>
<P>&nbsp;</P> <TABLE style="height: 87px; width: 82.5259%; border-collapse:
collapse; border-style: solid;"> <TBODY> <TR style="height: 24px;"> <TD
style="width: 27.0469%; height: 24px;">ProxyIdentityExperienceFramework</TD> <TD
style="width: 29.269%; height: 24px;">&lt;Item&nbsp;Key="client_id"&gt;</TD> <TD
style="width: 34.1997%; height: 24px;"> <DIV
class="fxc-essentials-label-container
fxc-essentials-label-container-left"><LABEL id="_essentials_161"
class="fxc-essentials-label fxs-portal-subtext" title="Application (client)
ID">Application (client) ID</LABEL></DIV> </TD> <TD style="width:
28.6073%;">&nbsp;IdentityExperienceFrameworkAppId</TD> </TR> <TR style="height:
24px;"> <TD style="width: 27.0469%; height:
24px;">IdentityExperienceFramework</TD> <TD style="width: 29.269%; height:
24px;">&lt;Item&nbsp;Key="IdTokenAudience"&gt;</TD> <TD style="width: 34.1997%;
height: 24px;"><LABEL id="_essentials_161" class="fxc-essentials-label
fxs-portal-subtext" title="Application (client) ID">Application (client)
ID</LABEL></TD> <TD style="width: 28.6073%;">IdentityExperienceFramework</TD>
</TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Find, open the
<STRONG>LocalAccounts</STRONG>/<STRONG>TrustFrameworkExtensions.xml,</STRONG>&nbsp;search
for the <STRONG>&lt;TechnicalProfile Id="login-NonInteractive"&gt;</STRONG>
element and replace the values as the examples below, and save the files.</P>
<P>&nbsp;</P> <TABLE style="height: 255px; width: 85.0635%; border-collapse:
collapse; border-style: solid;" width="85.06350000000002%"> <TBODY> <TR> <TD
width="100%" style="width: 100%;"> <P><STRONG>&lt;DisplayName&gt;Local Account
SignIn&lt;/DisplayName&gt;</STRONG></P> <P>&lt;TechnicalProfiles&gt;
<STRONG>&lt;TechnicalProfile Id="login-NonInteractive"&gt;</STRONG></P>
<P>&lt;Metadata&gt;</P> <P><STRONG>&lt;Item
Key="client_id"&gt;ProxyIdentityExperienceFrameworkAppId&lt;/Item&gt;</STRONG></P>
<P><STRONG>&lt;Item
Key="IdTokenAudience"&gt;IdentityExperienceFrameworkAppId&lt;/Item&gt;</STRONG></P>
<P>&lt;/Metadata&gt;</P> <P>&lt;InputClaims&gt;</P> <P><STRONG>&lt;InputClaim
ClaimTypeReferenceId="client_id"
DefaultValue="ProxyIdentityExperienceFrameworkAppId" /&gt;</STRONG></P>
<P><STRONG>&lt;InputClaim ClaimTypeReferenceId="resource_id"
PartnerClaimType="resource" DefaultValue="IdentityExperienceFrameworkAppId"
/&gt;</STRONG></P> <P>&lt;/InputClaims&gt;</P> </TD> </TR> </TBODY> </TABLE>
<P>&nbsp;</P> <TABLE style="height: 340px; width: 84.6896%; border-collapse:
collapse; border-style: solid;"> <TBODY> <TR> <TD style="width: 100%;">
<DIV>&nbsp; &nbsp;
&nbsp;<STRONG>&lt;DisplayName&gt;Local&nbsp;Account&nbsp;SignIn&lt;/DisplayName&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;TechnicalProfiles&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&lt;TechnicalProfile&nbsp;Id="login-NonInteractive"&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Metadata&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&lt;Item
Key="client_id"&gt;########-####-####-####-############&lt;/Item&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&nbsp;&lt;Item
Key="IdTokenAudience"&gt;########-####-####-####-############&lt;/Item&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Metadata&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;InputClaims&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&lt;InputClaim
ClaimTypeReferenceId="client_id"
DefaultValue="########-####-####-####-############" /&gt;</STRONG></DIV>
<DIV><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;InputClaim
ClaimTypeReferenceId="resource_id" PartnerClaimType="resource"
DefaultValue="########-####-####-####-############" /&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/InputClaims&gt;</DIV>
</TD> </TR> </TBODY> </TABLE> <H1>Upload the Policies</H1> <P>The last step is
to upload the custom policies to the Azure B2C tenant. Under the Policies
section, select the Identity Experience Framework menu item in the B2C tenant in
the Azure portal.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="34.png" style="width: 298px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314442i1E730BDF1960B7D3/image-size/large?v=v2&amp;px=999"
role="button" title="34.png" alt="34.png" /></span></P> <P>&nbsp;</P> <P>Select
<STRONG>Upload custom policy</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="35.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314443iBECA0839C5331F00/image-size/large?v=v2&amp;px=999"
role="button" title="35.png" alt="35.png" /></span></P> <P>&nbsp;</P> <P>Upload
the policy files, in the following order:</P> <P>&nbsp;</P> <OL>
<LI>TrustFrameworkBase.xml</LI> <LI>TrustFrameworkExtensions.xml</LI>
<LI>SignUpOrSignin.xml</LI> <LI>ProfileEdit.xml</LI> <LI>PasswordReset.xml</LI>
</OL> <P>Every policy file we upload will add the <STRONG>B2C_1A_
prefix</STRONG>.</P> <H1>Useful links</H1> <UL> <LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/overview"
target="_blank" rel="noopener">What is Azure Active Directory B2C?</A></LI>
<LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant"
target="_blank" rel="noopener">Create an Azure Active Directory B2C
tenant</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-register-applications?tabs=app-reg-ga"
target="_blank" rel="noopener">Register a web application in Azure Active
Directory B2C</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy"
target="_blank" rel="noopener">Create custom policies in Azure Active Directory
B2C</A></LI> </UL> <P>&nbsp;</P> Sun, 10 Oct 2021 09:45:08 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/working-with-azure-ad-b2c-custom-policies/ba-p/2804056
George Grammatikos 2021-10-10T09:45:08Z NEW data science curriculum on GitHub
was just released, 20 free lessons
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-data-science-curriculum-on-github-was-just-released-20-free/ba-p/2797143
<P>The curriculum can be found at:</P> <UL> <LI><A
href="https://aka.ms/datascience-beginners"
target="_self">aka.ms/datascience-beginners</A></LI> </UL> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="MicrosoftTeams-image (4).png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/313795iE2E04DF57A7745EE/image-size/large?v=v2&amp;px=999"
role="button" title="MicrosoftTeams-image (4).png" alt="MicrosoftTeams-image
(4).png" /></span></P> <P>&nbsp;</P> <P><SPAN>Azure Cloud Advocates at Microsoft
are pleased to offer a 10-week, 20-lesson curriculum all about Data Science.
Each lesson includes pre-lesson and post-lesson quizzes, written instructions to
complete the lesson, a solution, and an assignment. Our project-based pedagogy
allows you to learn while building, a proven way for new skills to
'stick'.</SPAN></P> <P>&nbsp;</P> <H2>Each lesson includes:</H2> <UL>
<LI>Optional sketchnote</LI> <LI>Optional supplemental video</LI> <LI>Pre-lesson
warmup quiz</LI> <LI>Written lesson</LI> <LI>For project-based lessons,
step-by-step guides on how to build the project</LI> <LI>Knowledge checks</LI>
<LI>A challenge</LI> <LI>Supplemental reading</LI> <LI>Assignment</LI>
<LI>Post-lesson quiz</LI> </UL> <P>&nbsp;</P> <P>&nbsp;</P> <P>This curriculum
is in a series that shows beginners different technical industries:</P> <UL>
<LI><SPAN><A href="https://github.com/microsoft/Data-Science-For-Beginners"
target="_self">Data Science for Beginners</A> - Check out all the content for
this curriculum!</SPAN></LI> <LI> <DIV><A href="https://aka.ms/webdev-beginners"
target="_self" rel="noopener
noreferrer"><SPAN>Web&nbsp;Dev&nbsp;for&nbsp;Beginners</SPAN></A></DIV> </LI>
<LI> <DIV><A href="https://aka.ms/iot-beginners" target="_self" rel="noopener
noreferrer"><SPAN>IoT&nbsp;for&nbsp;Beginners</SPAN></A></DIV> </LI> <LI>
<DIV><A href="https://github.com/microsoft/ML-For-Beginners" target="_self"
rel="noopener
noreferrer"><SPAN>Machine&nbsp;Learning&nbsp;for&nbsp;Beginners</SPAN></A></DIV>
</LI> </UL> <P>&nbsp;&nbsp;</P> <P>You can find a related blog post at <A
href="https://techcommunity.microsoft.com/t5/educator-developer-blog/introducing-data-science-for-beginners/ba-p/2796770"
target="_self">announcing a new curriculum</A></P> Mon, 04 Oct 2021 18:27:57 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-data-science-curriculum-on-github-was-just-released-20-free/ba-p/2797143
Chris_Noring 2021-10-04T18:27:57Z From Tunisian classroom full of boys to
architect for Canadian government: A journey of perseverance
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/from-tunisian-classroom-full-of-boys-to-architect-for-canadian/ba-p/2783379
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="MonishGangwani_0-1632512735534.png"
style="width: 623px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312753iA814E8A16840BEE7/image-dimensions/623x441?v=v2"
width="623" height="441" role="button"
title="MonishGangwani_0-1632512735534.png"
alt="MonishGangwani_0-1632512735534.png" /></span></P> <P><FONT
size="5"><STRONG>HAMIDA REBAI TRABELSI </STRONG>is a passionate learner who
juggles multiple roles with ease: a senior technology professional at one of
Canada’s government agencies, a Microsoft MVP, a mother. Hamida’s journey to
Software and Cloud Architect at Revenu in Quebec has been one of determination;
as one of the only two girls in a classroom of 28 boys in Tunisia, North Africa,
she used the computer lab at school to teach herself PASCAL programming. Today
she is the only woman on Revenu’s Cloud Migration team, architecting the
agency’s migration strategy to digitize all their data by March 2023. An expert
on the use of Kubernetes for data digitization, Hamida freely shares her
knowledge through blogs, technical articles, and conferences. Hamida shares
about her experience with Kubernetes and what she’s working on now in this
discussion.</FONT></P> <P>&nbsp;</P> <P><STRONG>Tell us about your job at
Revenu. What are you currently working on?</STRONG></P> <P>Renevu is a
government agency that encourages social and economic development in Québec. We
help individuals and businesses understand and fulfill their tax obligations.
Specifically, we administer tax legislation and the social programs entrusted to
us by the government; we collect debts and run checks to ensure that tax laws
are applied fairly; we collect support and pay it to the rightful
recipients.</P> <P>&nbsp;</P> <P>As you can imagine, our work generates huge
volumes of unstructured data. The ability to mine data in a manner that scales
and is accurate is super critical to help us do our job thoroughly and serve the
taxpayers and our various constituents. I am currently architecting and
implementing our cloud migration strategy, which is a multi-year project to
digitize our data across multiple clouds. Doing so will help us have a common
structure for data, which in turn will yield greater accuracy and help the
agency work with greater speed. We will also have the capability to apply AI
models in the future. For applications that we are not able to migrate, we are
working on plans to rearchitect them using containers and microservices.</P>
<P>&nbsp;</P> <P><STRONG>Tell us more about the use of containers and their
impact on your migration project.</STRONG></P> <P>In order to simplify the
deployment and management of applications based on microservices, we used
containers with Kubernetes orchestrators. To ensure the continuous integration
and continuous delivery and secure DevOps implementation with Kubernetes using
Azure DevOps, AKS is also a reliable solution for bringing DevOps and Kubernetes
together to improve the speed and security of the development process.</P>
<P>&nbsp;</P> <P>In order to ensure our huge volume of applications function
without any problems, we use Constant Monitoring in AKS and in Azure to
accelerate the feedback loop. Azure Pipelines help us deliver faster while
staying compliant with critical policies specified by Azure.</P> <P>During peaks
AKS and Azure Container Instances offer several functionalities to help us scale
and manage costs based on our consumption.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_0-1632521137661.png" style="width: 653px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312793i3BE77152C07F29E5/image-dimensions/653x302?v=v2"
width="653" height="302" role="button"
title="Monish_Gangwani_0-1632521137661.png"
alt="Monish_Gangwani_0-1632521137661.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>Who has been the single biggest influence on your life
and career?</STRONG></P> <P>My father. <EM>As one of the only two girls in a
classroom with 28 boys back in Tunisia, I was determined to pursue my passion
for software programming</EM> and having my father’s support was immensely
valuable. He always encouraged to keep learning and growing; at a time when
progressive parents expect their kids to become doctors, he acknowledged my
aptitude for and supported me in pursuing software as a career. I learned the
importance of being responsible for my choices and not to take the opportunities
I have been presented with for granted.</P> <P>&nbsp;</P> <P><STRONG>Clearly
your father ignited the spark for learning in you. How has that become a
full-fledged passion and how do you stay up-to-date yourself?</STRONG></P>
<P>Well, for me learning is my way of having fun. Whether we are on vacation or
it’s a regular workday, I create time within my day to learn something new.
Learning has become my hobby, my favorite pastime. And when you’re having fun
and it adds value to your entire life, it becomes something you believe in
strongly and that has translated into a passion for me.</P> <P>&nbsp;</P> <P>My
dream would be to create a consolidated web-based learning platform where I can
share articles, blogs, podcasts with others and they can do the same.</P>
<P>&nbsp;</P> <P>As far as staying updated myself, I am committed to training
others which propels me to keep up with the latest tech. Also, as an MVP, I get
access to a ton of latest information from Microsoft, which keeps me current.
There is also a vast amount of free training available. In fact, I just
delivered a training on ‘Essentials of Azure Kubernetes Services’ that is <A
href="https://www.linkedin.com/learning/l-essentiel-d-azure-kubernetes-service-aks/bienvenue-dans-l-essentiel-d-azure-kubernetes-service-aks/?ocid=AID3041046"
target="_blank" rel="noopener">available on LinkedIn Learning</A>&nbsp;and I am
delivering a talk on ‘Deploying an application on AKS’ at <A
href="https://azuresummit.live/speaker/rebai-hamida/?ocid=AID3041046"
target="_blank" rel="noopener">the Cloud Summit</A>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_1-1632521174118.png" style="width: 424px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312794iBCC7E91BA460EEB9/image-dimensions/424x322?v=v2"
width="424" height="322" role="button"
title="Monish_Gangwani_1-1632521174118.png"
alt="Monish_Gangwani_1-1632521174118.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>Your advice to developers?</STRONG></P> <P>Data is the
most important asset today and learning about Kubernetes will make possible data
interactions that were previously unthinkable.&nbsp;<SPAN style="font-family:
inherit;">So definitely learn more about Kubernetes. Beyond that, I encourage
all developers to commit themselves to lifelong learning.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><FONT size="2"><EM>Follow Hamida on <A
href="https://twitter.com/RebaiHamida" target="_blank"
rel="noopener">Twitter</A>, <A
href="https://www.linkedin.com/in/hamida-rebai-trabelsi-09b8525/"
target="_blank" rel="noopener">LinkedIn</A>, and <A
href="https://didourebai.medium.com/" target="_blank" rel="noopener">Medium</A>.
Hamida's Essentials of AKS Training (in French) on&nbsp;<A
href="https://www.linkedin.com/learning/l-essentiel-d-azure-kubernetes-service-aks/bienvenue-dans-l-essentiel-d-azure-kubernetes-service-aks/?ocid=AID3041046"
target="_blank" rel="noopener">LinkedIn Learning</A>.</EM></FONT></STRONG></P>
<P><FONT size="2"><EM><STRONG>Continue learning about Kubernetes on Azure: visit
the <A href="https://github.com/microsoft/monthlyresources/?ocid=AID3041046"
target="_blank" rel="noopener">Microsoft Dev Repo on
GitHub</A>.</STRONG></EM></FONT></P> Tue, 12 Oct 2021 21:11:25 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/from-tunisian-classroom-full-of-boys-to-architect-for-canadian/ba-p/2783379
Monish_Gangwani 2021-10-12T21:11:25Z Journey Towards Cloud Architecture
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/journey-towards-cloud-architecture/ba-p/2780579
<P class="wk wl uu wm b wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb oh xc pk
by" data-selectable-paragraph="">In this article,<SPAN>&nbsp;</SPAN><A class="ay
ow" href="https://github.com/i-am-dan" target="_blank" rel="noopener ugc
nofollow">@i-am-dan<SPAN>&nbsp;</SPAN></A>and<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://github.com/pjirsa" target="_blank" rel="noopener ugc
nofollow">@pjirsa</A><SPAN>&nbsp;</SPAN>(Microsoft’s Cloud Solutions Architects)
highlight the benefits of a modern event-based cloud architecture while
migrating a legacy WebAPI to Azure.</P> <H2 class="xd xe uu bv fs xf xg xh xi xj
xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">&nbsp;</H2> <H2 id="be56" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph=""><STRONG class="be">Our Story</STRONG></H2> <P
class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb
xc pk by" data-selectable-paragraph="">Our legacy API (Hackathon registration
service)</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="DanielKim_0-1632419899038.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312460i82A1FB0AF56629E0/image-size/medium?v=v2&amp;px=400"
role="button" title="DanielKim_0-1632419899038.png"
alt="DanielKim_0-1632419899038.png" /></span></P> <P class="wk wl uu wm b wn yu
wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">(Figure 1)</P> <P class="wk wl uu wm b wn yu wo wp
wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Figure 1 represents the architecture of our
original Hackathon Registration service.</P> <P class="wk wl uu wm b wn yu wo wp
wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">It includes the following components:</P> <UL
class=""> <LI id="a75b" class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv
ww yx wx wy wz yy xa xb xc yz za zb by" data-selectable-paragraph=""><EM
class="zc">Registration Form —<SPAN>&nbsp;</SPAN></EM>A website which collects
registration info from a new hackathon participant.</LI> <LI id="8f5e" class="wk
wl uu wm b wn zd wo wp wq ze wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za
zb by" data-selectable-paragraph=""><EM class="zc">Registration API
—<SPAN>&nbsp;</SPAN></EM>An ASP.NET Core WebAPI providing CRUD over the
registration data.</LI> <LI id="438e" class="wk wl uu wm b wn zd wo wp wq ze wr
ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><EM class="zc">Registration
DB</EM><SPAN>&nbsp;</SPAN>— An Azure SQL Database to persist registration
data.</LI> </UL> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww
yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">Over time,
additional functionality and business logic have been added to the legacy API.
Some examples are:</P> <UL class=""> <LI id="8e2d" class="wk wl uu wm b wn yu wo
wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc yz za zb by"
data-selectable-paragraph="">Adding a new user to a mailing list service
(Mailchimp).</LI> <LI id="f282" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt
zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph="">Inviting new guest users to an Azure AD
tenant.</LI> <LI id="7c4a" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt zf wu
wv ww zg wx wy wz zh xa xb xc yz za zb by" data-selectable-paragraph="">Adding a
new user to a Microsoft Teams team and channels.</LI> </UL> <P class="wk wl uu
wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph=""><STRONG class="wm hq">And more requirements mean
more code!</STRONG></P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu
wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">Our technical
debt and existing design patterns were making it challenging to adapt to the new
requirements.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww
yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">While
th<SPAN>e</SPAN><SPAN>&nbsp;</SPAN>core functionality of collecting and storing
user registration information remains constant, each hackathon event usually has
its own requirements around other capabilities. Some events want to use an
alternate mailing list provider. Others want to configure a unique hierarchy for
teams and channels. Our API codebase<SPAN>&nbsp;</SPAN><EM class="zc">quickly
started filling up with conditional statements and logical
branches<SPAN>&nbsp;</SPAN></EM>making it nearly impossible to test and
difficult to maintain.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw
wu wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P>
<P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa
xb xc pk by" data-selectable-paragraph="">While the American divorce rate
has<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://www.census.gov/library/stories/2020/12/united-states-marriage-and-divorce-rates-declined-last-10-years.html"
target="_blank" rel="noopener ugc nofollow">dropped</A>, we knew
the<SPAN>&nbsp;</SPAN><STRONG class="wm hq">answer to our problem was to
decouple</STRONG>. We want to decouple what we currently have into
separate<SPAN>&nbsp;</SPAN><EM class="zc">components</EM>. Each component takes
care of an atomic piece of business logic and should be easily modifiable
without disrupting other components. This removes the need to bake unnecessary
code into our base business logic. We decided to take a spike and design out how
we can accomplish that using out of the box Azure services.</P> <P class="wk wl
uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <H2 id="06af" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">What does this have to do with me?</H2> <P
class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb
xc pk by" data-selectable-paragraph="">Though this API is a small example we
believe componentizing your architecture while it’s still small is a big step
towards modernizing your architecture.</P> <P class="wk wl uu wm b wn ya wo wp
wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">As developers, we believe in<SPAN>&nbsp;</SPAN><A
class="ay ow"
href="https://dev.to/danialmalik/a-brief-guide-to-clean-code-functions-104h#:~:text=A%20Brief%20Guide%20to%20Clean%20Code%3A%20Functions%201,of%20the%20system%20while%20classes%20are%20the%20nouns."
target="_blank" rel="noopener ugc nofollow">Clean Code</A>. We have to think
software architecture, similarly. Each small component is doing only what it is
supposed to and then passes control to another component. This helps us to
architect cleaner and sensible solutions in the cloud.</P> <P class="wk wl uu wm
b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Whether you are already on the cloud or just
thinking about modernizing your current architecture for the cloud, this article
will hopefully give you a decent grasp of how you can go about approaching it
the right way — or at least a better way. There’s no one design pattern to
address all solutions of course.</P> <P class="wk wl uu wm b wn yu wo wp wq yv
wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph=""><STRONG class="wm hq">Options Options
Options</STRONG></P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv
ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2
id="5077" class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu
xv xw xx xy xz by" data-selectable-paragraph="">App Service</H2> <P class="wk wl
uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">One of the quickest way to modernize your software
is using<SPAN>&nbsp;</SPAN><STRONG class="wm
hq">Azure</STRONG><SPAN>&nbsp;</SPAN><STRONG class="wm hq">App Service</STRONG>.
This way you allow Azure to handle all the networking and security for you. Here
are some great ways to secure your App Services!</P> <UL class=""> <LI id="7124"
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc yz za zb by" data-selectable-paragraph=""><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint"
target="_blank" rel="noopener ugc nofollow">App Service Private
Endpoint</A></LI> <LI id="04f6" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt
zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by" data-selectable-paragraph=""><A
class="ay ow"
href="https://docs.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions"
target="_blank" rel="noopener ugc nofollow">App Service Access
Restriction</A></LI> <LI id="d820" class="wk wl uu wm b wn zd wo wp wq ze wr ws
wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/app-service/environment/intro"
target="_blank" rel="noopener ugc nofollow">App Service Environment</A></LI>
</UL> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz
yy xa xb xc pk by" data-selectable-paragraph=""><EM class="zc">(VM is of course
another route but going back to our reasoning we want to make sure things are
small and manageable.)</EM></P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws
wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">You can either host all your messy giant
application in the App Service, OR you can refactor like mentioned above and put
them into separate App Services and this gets into the territory
of<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://www.martinfowler.com/microservices/" target="_blank" rel="noopener
ugc nofollow">Microservices</A>.</P> <P class="wk wl uu wm b wn yu wo wp wq yv
wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Did we mention the cost can be significantly
cheaper?</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx
wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2
id="7b08" class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu
xv xw xx xy xz by" data-selectable-paragraph="">Serverless</H2> <P class="wk wl
uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">One step further than an app service route is the
Serverless<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener ugc nofollow">Azure
Functions</A><SPAN>&nbsp;</SPAN>route. This is where Azure dynamically manages
the allocation and provisioning of servers. All the benefit of the App Service
but with added bonus of being only charged when it’s invoked. Scott Guthrie
calls it the ‘<EM class="zc">invocation model</EM>’ where you are only
responsible for chargers when the resource is called.</P> <P class="wk wl uu wm
b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Now… the fun(?) part!</P> <P class="wk wl uu wm b
wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <H2 id="4c11" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">Events and Messages</H2> <P class="wk wl uu wm b wn
ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">As you manage multiple components, event and
messaging architecture becomes very important. We want our services to
communicate and respond to each other. However, if we make direct calls between
them, we are re-introducing strict dependencies. Ideally, these services should
be able to communicate without needing any specific knowledge about what those
services are, or where they are located. To accomplish this, we introduce an
eventing system.</P> <P class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv
ww yd wx wy wz ye xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">Should I use events or messages?</P> <UL
class=""> <LI id="aa6e" class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv
ww yx wx wy wz yy xa xb xc yz za zb by" data-selectable-paragraph=""><STRONG
class="wm hq">Events</STRONG><SPAN>&nbsp;</SPAN>Think of it as a notification.
The sender of an event does not necessarily care who receives or acts on the
event. Eventing systems typically provide confirmation that an event has been
submitted, and no response to the sender that a subscriber has consumed or
processed the event.</LI> <LI id="a219" class="wk wl uu wm b wn zd wo wp wq ze
wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><STRONG class="wm
hq">Messaging<SPAN>&nbsp;</SPAN></STRONG>Think of it as a task given by System A
to System B. Messages usually contain a data payload. Messaging systems can
accommodate a more formal relationship between a publisher and a subscriber. The
sender generally knows who the consumer will be and is sending a data payload
that the consumer expects for processing.</LI> </UL> <P class="wk wl uu wm b wn
yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Whichever direction you go you need
a<SPAN>&nbsp;</SPAN><EM class="zc">Broker</EM>.</P> <P class="wk wl uu wm b wn
yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">The broker we chose for our example
is<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/event-grid/overview"
target="_blank" rel="noopener ugc nofollow">Azure Event Grid</A>.</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">&gt;<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/event-grid/compare-messaging-services"
target="_blank" rel="noopener ugc nofollow">Checkout the
doc</A><SPAN>&nbsp;</SPAN>which explains different event-driven services in
Azure</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx
wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2 id="5b5f"
class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx
xy xz by" data-selectable-paragraph="">Our Solution</H2> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="DanielKim_1-1632420074586.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312461i8E08DF9FE18F5C80/image-size/medium?v=v2&amp;px=400"
role="button" title="DanielKim_1-1632420074586.png"
alt="DanielKim_1-1632420074586.png" /></span></P> <P class="wk wl uu wm b wn yu
wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">(Figure 2) represents the architecture of our
refactored solution.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw
wu wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P>
<P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa
xb xc pk by" data-selectable-paragraph="">The core functionality of the API is
still there. But we have moved all the customizable supporting features out to
their own services.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu
wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">In order to decouple them from the
original API, and orchestrate the business logic, an Event Grid Topic has been
implemented. This service receives event notifications from the API when
operations are performed on the registration data.</P> <P class="wk wl uu wm b
wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Our supporting feature services can subscribe to
these notifications to take the appropriate action when changes in the system
occur.</P> <H2 class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs
xt xu xv xw xx xy xz by" data-selectable-paragraph="">&nbsp;</H2> <H2 id="4308"
class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx
xy xz by" data-selectable-paragraph="">What are the benefits?</H2> <P class="wk
wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">The immediate impact of this redesign is
tremendous.</P> <UL class=""> <LI id="c1c4" class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc yz za zb by"
data-selectable-paragraph="">Each component is completely autonomous.
Interdependencies are decoupled and cross-service communication is faciliated by
a highly fault-tolerant messaging system.</LI> <LI id="811c" class="wk wl uu wm
b wn zd wo wp wq ze wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><A class="ay ow"
href="https://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank"
rel="noopener ugc nofollow">Cyclomatic Complexity</A><SPAN>&nbsp;</SPAN>of each
component is greatly reduced. In some cases reaching a perfect score. This has
the added benefit of making the code easier to test and easier for developers to
understand. Not only are unit tests easier, but integration testing can be done
by testing each component individually. For example, before the changes, we
would have to submit an entire “new user” request through the API to make sure
that the “Add to Mailchimp” feature was working properly. Now, we can just test
that one service on its own.</LI> <LI id="8bb7" class="wk wl uu wm b wn zd wo wp
wq ze wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph="">Updates to the system are much easier now. Each of
the supporting services are “plug-n-play”. For example, we can easily swap out
the Mailchimp service for another service that interfaces with SendGrid.</LI>
<LI id="f807" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt zf wu wv ww zg wx
wy wz zh xa xb xc yz za zb by" data-selectable-paragraph="">Event Grid allows
multiple subscriptions to the same event, which makes adding new features and
layering in additional business logic a snap.</LI> </UL> <H2 class="xd xe uu bv
fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">&nbsp;</H2> <H2 id="7595" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">The downside</H2> <P class="wk wl uu wm b wn ya wo
wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">You might be saying, “<EM class="zc">But now there
are so many more ‘things’ to deal with!</EM>”.<SPAN>&nbsp;</SPAN><STRONG
class="wm hq">Yes, that is true</STRONG>. But the
benefits<SPAN>&nbsp;</SPAN><STRONG class="wm
hq">FAR</STRONG><SPAN>&nbsp;</SPAN>out-weigh the downsides here. Cloud platforms
(such as Azure) provide a wealth of governance and management tools out of the
box that make it easy to provision, manage, and monitor ‘all the things’.</P> <P
class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb
xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2 id="aaff" class="xd xe uu
bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">Lesson to be learnt</H2> <P class="wk wl uu wm b wn
ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph=""><EM class="zc">In hindsight I guess we got to this
point because we didn’t have a good design discussion when the API was being
created</EM>.</P> <P class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww
yd wx wy wz ye xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">But I’m sure lot of development shops do
similar things. In order to push code out, the design you think is going to last
doesn’t really do you any good, OR you just write code without designing at all!
IT’S OK! The point is to<SPAN>&nbsp;</SPAN><EM
class="zc">LEARN</EM><SPAN>&nbsp;</SPAN>from what you have built and try to
continuously improve.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw
wu wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P>
<P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa
xb xc pk by" data-selectable-paragraph="">The cloud offers flexibility. A
light-weight, adaptable design for the cloud is more resilient to changes in
feature requirements. As your needs change and grow, you are not locked in to
the server or license you bought last year, you can scale up, down, out and in
whenever you need to and the cost is only for what you use.</P> <H2 class="xd xe
uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">&nbsp;</H2> <H2 id="6ed2" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">The Final Word</H2> <P class="wk wl uu wm b wn ya
wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">Migrating legacy application architectures to the
cloud sometimes requires a shift in perspective and thought-process. These
cloud-native patterns can seem foreign and complicated at first. But with a
little time and experience you will start to see the flexibility, scalability,
and cost benefits of these designs.</P> Fri, 24 Sep 2021 03:53:41 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/journey-towards-cloud-architecture/ba-p/2780579
Daniel-Kim 2021-09-24T03:53:41Z Calling on developers for Virtual Hackathon
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/calling-on-developers-for-virtual-hackathon/ba-p/2778977
<P><STRONG><EM>Did you know that 1 in 5 nurses are leaving or considering
leaving the profession?</EM></STRONG></P> <P>&nbsp;</P> <P>The disappearing
frontline affects us all, and our health care practitioners
are<SPAN>&nbsp;</SPAN><STRONG>calling on all
developers</STRONG><SPAN>&nbsp;</SPAN>to bring your innovation and solutions to
help build a sustainable nursing workforce for the future.</P> <P>&nbsp;</P>
<P><U></U><A href="https://nursehack4health.org/" target="_self" rel="nofollow
noopener noreferrer"><U>Join our 3 day virtual hackathon</U></A><SPAN>&nbsp;to
work with other technologists, healthcare workers, and innovators to build
meaningful solutions.</SPAN></P> <P>&nbsp;</P> <P><SPAN><STRONG>Why should You
Attend?<BR /></STRONG>For the greater good? Ha ha.&nbsp;</SPAN><SPAN>Attending a
hackathon is a great way to bond, brainstorm, develop and pitch healthcare
solutions that will forever change the way you think about a problem, your
perceived value and impact and your vision for your future in nursing and
healthcare!</SPAN></P> <P>&nbsp;</P> <P><SPAN>You will get a chance
to:</SPAN></P> <UL> <LI>Work along side and network with MS experts and other
technologists who share a common vision.</LI> <LI>Ideate and create meaningful
solutions&nbsp;to address real pain points that our new and seasoned heroes are
going through.</LI> <LI>Getting to work&nbsp;alongside nurses on the frontlines
will help them make their ideas a reality!</LI> <LI>Close the gap between your
technical skills and the needs of our nurses.</LI> <LI>Perfect chance to
contribute to open source and help build your brand.</LI> </UL> <P><STRONG>What
if I don’t have any healthcare experience?&nbsp;</STRONG>No problem! That’s what
the nurses are for (and we’ll have some tech-y healthcare industry people there
too)</P> <P><STRONG><BR />What if I don’t have skills on the tech and tools the
team needs?<SPAN>&nbsp;</SPAN></STRONG>Again,&nbsp;No problem! Your background
on any developer tools and tech are more than enough – and we’ll have plenty of
MSFT mentors in a variety of areas there to help you as well. Commonly used tech
includes (but is definitely not limited to):</P> <UL> <LI>C#/Java/JavaScript,
React.js, SQL, MySQL, Power Apps, bot frameworks, Power Virtual Agent, mobile
app dev</LI> </UL> <P><STRONG>Check with your employer(s)&nbsp;</STRONG>Some
employers have policies around employees moonlighting and working on open source
projects</P> <P data-unlink="true">&nbsp;</P> <P>Testimony:<BR /><A
href="https://www.youtube.com/watch?v=JQVjOT7DZcU" target="_self" rel="nofollow
noopener noreferrer">Company founded through NurseHack! (Youtube
Video)</A>&nbsp;<BR /><BR /></P> <P data-unlink="true">Resources that could help
prepare you for the hackathon:</P> <P data-unlink="true"><A
href="https://github.com/NurseHack4Health/NH4H2021SpringHackathon"
target="_self" rel="noopener noreferrer">NurseHack4Health Spring
2021</A><SPAN>&nbsp;</SPAN>(past solutions/presentation)&nbsp;</P> <P>&nbsp;</P>
<P>Help build&nbsp;a&nbsp;sustainable nursing workforce for the future. Leverage
your tech skills and hack for nurses’ wellbeing.</P> <P><EM>To register and to
learn more:&nbsp;</EM><STRONG><EM><A href="https://nursehack4health.org/"
target="_blank" rel="noopener nofollow
noreferrer">https://nursehack4health.org</A></EM></STRONG></P> Thu, 23 Sep 2021
15:38:01 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/calling-on-developers-for-virtual-hackathon/ba-p/2778977
Anshika Goyal 2021-09-23T15:38:01Z Meet the band backstage at Azure and build
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/meet-the-band-backstage-at-azure-and-build/ba-p/2768701
<P><SPAN data-contrast="auto"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="AAA Event card.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/311663iA88DC946DA8F1BB5/image-size/large?v=v2&amp;px=999"
role="button" title="AAA Event card.png" alt="AAA Event card.png"
/></span></SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">We&nbsp;know
it’s not easy&nbsp;juggling&nbsp;tradeoffs&nbsp;and prioritizing improvements.
This is&nbsp;where&nbsp;the&nbsp;</SPAN><A
href="https://aka.ms/wellarchitected/framework" target="_blank"><SPAN
data-contrast="none">Azure Well-Architected Framework</SPAN></A><SPAN
data-contrast="auto">&nbsp;comes into the picture.&nbsp;</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN data-contrast="auto">Here’s how we
describe it:</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-contrast="none">The </SPAN><A
href="https://aka.ms/wellarchitected/framework" target="_blank"><SPAN
data-contrast="none">Well-Architected Framework</SPAN></A><SPAN
data-contrast="none"> is </SPAN><I><SPAN data-contrast="none">a set of guiding
tenets that can be used to improve the quality of a workload. The framework
consists of five pillars of architecture excellence: Cost Optimization,
Operational Excellence, Performance Efficiency, Reliability, and Security.
Incorporating these pillars helps produce high-quality, stable, and efficient
cloud architecture.</SPAN></I><SPAN data-ccp-props="{}">&nbsp;</SPAN></P>
<P><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-contrast="auto">Using the&nbsp;Azure&nbsp;Well-Architected Framework as our
guide, we are going to do something we have never done before.&nbsp;On September
23</SPAN><SPAN data-contrast="auto">rd</SPAN><SPAN
data-contrast="auto">&nbsp;online at&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/tv/" target="_blank"><SPAN
data-contrast="none">Learn&nbsp;TV</SPAN></A><SPAN
data-contrast="auto">,&nbsp;followed several weeks later around the
globe&nbsp;via&nbsp;the&nbsp;</SPAN><A
href="https://developer.microsoft.com/reactor/" target="_blank"><SPAN
data-contrast="none">Microsoft&nbsp;Reactors</SPAN></A><SPAN
data-contrast="none">,</SPAN><SPAN
data-contrast="auto">&nbsp;&nbsp;we’re&nbsp;going to take
you&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">behind the scenes at
Azure.</SPAN></STRONG><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">Join us
for&nbsp;</SPAN><A href="https://aka.ms/WAF-Backstage" target="_blank"><I><SPAN
data-contrast="none">Well-Architected: The Backstage Tour</SPAN></I></A><SPAN
data-contrast="auto">, a virtual event&nbsp;where you will get five brief peeks
at how we power the features that address each of these pillars of the Azure
Well-Architected Framework. Not only will you learn how things work behind the
curtain, but you’ll also take away some tips and tricks you won’t find anywhere
else.</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">Mark
Russinovich, Azure Chief Technology Officer, will deliver the opening address to
this two hour live event on Learn TV. It will bring you five sessions, each with
an opportunity to get your questions answered directly from our
speakers.</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">And if you
miss&nbsp;this week, don’t worry about it!&nbsp;Register&nbsp;now&nbsp;and
we’ll&nbsp;notify you&nbsp;as soon as the recording&nbsp;is
available.</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">We hope you
can join us -&nbsp;</SPAN><A href="https://aka.ms/WAF-Backstage"
target="_blank"><SPAN data-contrast="none">RSVP today!</SPAN></A><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><I><SPAN data-contrast="auto">Please
see below for the&nbsp;full&nbsp;list of sessions and their
speakers.</SPAN></I><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P
aria-level="1"><SPAN data-contrast="none">Keynote </SPAN><SPAN
data-ccp-props="{&quot;335559738&quot;:240}">&nbsp;</SPAN></P> <P><STRONG><SPAN
data-contrast="auto">Presenter: Mark Russinovich</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:-360,&quot;335559731&quot;:360}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Reliability: Bringing Reliability Right to
your Front Door </SPAN><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN
data-contrast="auto">Presenter: Daniel Gicklhorn, Director Content Delivery for
Azure.</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto">In this session we’ll go behind the scenes with Azure Front
Door and how it leverages global vantage points and Microsoft’s global network
to self-heal and optimize user experiences all the way from the edge to the app
on Azure.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Security: The Secret Life of a Security
Signal </SPAN><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN
data-contrast="auto">Presenter: Rod Trent,&nbsp;(Senior Security Cloud
Advocate),&nbsp;Cloud Advocacy</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To combat cyber-attacks and protect against urgent
threats, Microsoft collects billions of signals from the security ecosystem to
create the contextual threat intelligence that’s built into products
like Office 365, Windows, and Azure, Defender and Azure Sentinel.</SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In this session, follow a single signal through
its entire journey - from first detection in the wild to the rules that protect
you. Then, we'll show you how to gain direct access to these rules and extend
them for your own purposes.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Cost Optimization: Two reasons why you should
believe us when we say you can optimize your Azure costs </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Presenters:</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Priyanshi Mittal (PM), Azure Cost
Management and Billing</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Ritesh Kini (Senior PM), Azure Cost
Optimization</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">David Blank-Edelman (Senior Cloud
Advocate), Scalable Content</SPAN></STRONG><SPAN
data-contrast="auto">  </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Azure has many tools and techniques to help
customers optimize their cloud spend.  In this session, we are going to behind
the scenes and look at two of them built into Azure Advisor. There’s some pretty
magical stuff based on fascinating research and careful engineering powering
this service. We will show you all that plus some direct tips for your own cost
optimization efforts.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Operational Excellence: ARM Templates
Unplugged: How your resource </SPAN><I><SPAN
data-contrast="none">actually</SPAN></I><SPAN
data-contrast="none">&nbsp;gets provisioned </SPAN><SPAN>&nbsp;<BR
/></SPAN><STRONG><SPAN
data-contrast="auto">Presenter:  </SPAN></STRONG><SPAN>&nbsp;<BR
/></SPAN><STRONG><SPAN data-contrast="auto">Alex Frankel (Senior PM), Azure
Deployments  </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">David Blank-Edelman (Senior Cloud
Advocate), Scalable Content </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Reproduceable infrastructure and workloads can be
crucial for operational excellence. At some point as you build on Azure you will
press into service some ARM templates – either authored directly or through
tools like Bicep, Farmer, or PSArm. Ever wonder how we go from a simple template
to a not-so-simple set of running resources? We’ll reveal the whole story from
end-to-end and in the process show you some tips for working with this key
provisioning tool. </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Performance Efficiency: Fast &amp; Furious:
Optimizing for Quick &amp; Reliable VM Deployments </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Presenter: Sofia Joison (PM), Azure Core
Fundamentals</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto">Virtual Machines are the building blocks of the cloud. And
with something that fundamental, it's important to have a performant and
reliable experience. In this session, we will go behind the scenes and learn
about Azure's secret sauce to provisioning VMs. We'll share some tips and tricks
so you can leverage these capabilities to ensure you get the best experience for
all your VM deployment needs.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">We hope you
can join us -&nbsp;</SPAN><A href="https://aka.ms/WAF-Backstage"
target="_blank"><SPAN data-contrast="none">RSVP&nbsp;today!</SPAN></A><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> Mon, 20 Sep 2021 21:03:18 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/meet-the-band-backstage-at-azure-and-build/ba-p/2768701
wendywilson 2021-09-20T21:03:18Z New path : Tech resilience
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-path-tech-resilience/ba-p/2749436
<P class="">For many developers, tech-driven fields can be intimidating.</P> <P
class="">&nbsp;</P> <P class="">When you get stuck or lack support, you might
end up leaving tech instead of staying in tech and get promoted.</P> <P
class="">&nbsp;</P> <P class=""><STRONG>Consequence</STRONG></P> <P
class="">"The result is a smaller and less diverse workforce in tech."</P> <P
class="">&nbsp;</P> <P class=""><STRONG>Feeling of exclusion</STRONG></P>
<P>Those who make it past these barriers during their educational journey can
end up feeling excluded by workplace cultures that don’t match their own
backgrounds and experiences.&nbsp; Far too many talented people avoid choosing
or actively decide to leave tech because it can be unwelcoming.</P>
<P>&nbsp;</P> <P><STRONG>Solution</STRONG></P> <P>By fostering tech resilience,
confidence and mindset, you can grow the needed skills to not only stay in tech
but also prepare you for your next position in tech, whether that's a new type
of role or one with more managerial responsibility.</P> <P>&nbsp;</P>
<P><STRONG>Our mission?</STRONG> To help build a more inclusive future for the
tech industry by fostering confidence, resilience, and a sense of belonging.</P>
<P>&nbsp;</P> <P><LI-VIDEO vid="https://www.youtube.com/watch?v=0xT4mBgjg0w"
align="center" size="custom" width="676" height="676" uploading="false"
thumbnail="https://i.ytimg.com/vi/0xT4mBgjg0w/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Therefore, we
created this learning path&nbsp;<A
href="https://docs.microsoft.com/learn/paths/tech-resilience/" target="_blank"
rel="noopener">https://docs.microsoft.com/learn/paths/tech-resilience/</A></P>
<P>&nbsp;</P> <P>- Develop a growth mindset&nbsp;<A
href="https://docs.microsoft.com/learn/modules/develop-growth-mindset/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/develop-growth-mindset/</A></P>
<P>- Enhance your self-efficacy,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/enhance-self-efficacy/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/enhance-self-efficacy/</A></P>
<P>- Cultivate a culture of belongingness,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/cultivate-culture-belongingness/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/cultivate-culture-belongingness/</A></P>
<P>- Exercise your emotional intelligence,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/exercise-your-emotional-intelligence/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/exercise-your-emotional-intelligence/</A></P>
<P>- Give and receive effective feedback,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/give-receive-effective-feedback/"
target="_blank"
rel="noopener">https://docs.microsoft.co/learn/modules/give-receive-effective-feedback/</A></P>
<P>- Grow your cognitive flexibility,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/grow-cognitive-flexibility/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/grow-cognitive-flexibility/</A></P>
<P>- Leverage self-regulation to work strategically,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/self-regulation-work-strategically/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/self-regulation-work-strategically/</A></P>
<P>- Communicate with others strategically through mirroring and
coaching,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/communicate-strategically-mirror-coach/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/communicate-strategically-mirror-coach/</A></P>
<P>- Work with others by practice active listening,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/practice-active-listening/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/practice-active-listening/</A></P>
<P>&nbsp;</P> Wed, 15 Sep 2021 13:21:21 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-path-tech-resilience/ba-p/2749436
Chris_Noring 2021-09-15T13:21:21Z new Learning path, Start in tech as an intern
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-start-in-tech-as-an-intern/ba-p/2714167
<P>You might be a student or in mid-career and you are starting to think, what
if I can get into tech?&nbsp; It's never too late to start in tech, just know
that there are ways to build your skills, get noticed and start to work at that
new dream job of yours.</P> <P>&nbsp;</P> <P>At first, you might start with an
intimidating feeling, where do I even begin, how would I build my skills? There
are a lot of guidance to be had and in this learning path we've collected all
that guidance for you in three modules.</P> <P>&nbsp;</P> <P><STRONG>First
module</STRONG></P> <P>The idea is that your first starts building your skills,
then craft a resume. Once you have a resume, you can start to network (or even
before having a resume) in places where other tech folks might be.</P>
<P>&nbsp;</P> <P><STRONG>Second module</STRONG></P> <P>Lastly, all that leg work
hopefully leads to an interview, and here we also inform you of various
interviews, questions you might get and how to approve them.&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>Third module</STRONG></P> <P>In the last interview,
you've landed that coveted intern position and we guide you how to best carry it
out&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="career-interview.jpg" style="width:
800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/307431i19E45C5D22141567/image-size/large?v=v2&amp;px=999"
role="button" title="career-interview.jpg" alt="career-interview.jpg"
/></span></P> <P>Here is the learning path <A title="Start a career in tech"
href="https://docs.microsoft.com/en-gb/learn/paths/start-career-in-tech/"
target="_self">Start a career in tech</A></P> <P>&nbsp;</P> <P>- <A title="Grow
your tech skills and get noticed"
href="https://docs.microsoft.com/en-gb/learn/modules/career-get-noticed/"
target="_self">Get noticed</A> Grow your tech skills and learn where and how to
network, even as a student</P> <P>- <A title="Successfully interview to land an
intern position"
href="https://docs.microsoft.com/en-gb/learn/modules/career-interview/"
target="_self">Successful interviewing</A> prepare for different types of
interviews, tech and non tech ones</P> <P>- <A title="Learn how to grow as an
intern and maximize your chances to be offered a full-time position"
href="https://docs.microsoft.com/en-gb/learn/modules/career-growth/"
target="_self">From intern to full time position</A>. Grow in your role as an
intern, and turn that into a full-time position.</P> <P>&nbsp;</P> <P>Hear from
<A title="Eleanor Lewis on why intern"
href="https://www.microsoft.com/en-gb/videoplayer/embed/RE4OPAi?postJsllMsg=true&amp;autoCaptions=en-gb"
target="_self">Eleanor Lewis</A>, intern that now works full-time at
Microsoft.</P> <P>&nbsp;</P> <P>&nbsp;</P> Tue, 14 Sep 2021 17:35:04 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-start-in-tech-as-an-intern/ba-p/2714167
Chris_Noring 2021-09-14T17:35:04Z Hackathon as a Service with GitHub Actions,
Microsoft 365 and Power Platform
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hackathon-as-a-service-with-github-actions-microsoft-365-and/ba-p/2671063
<P>Generally speaking, an off-line hackathon event takes place with people
getting together at the same time and place for about two to three nights,
intensively. On the other hand, all events have turned into online-only
nowadays, and there's no exception for the hackathon events either. To keep the
same event experiences, hackathon organisers use many online collaboration
tools. In this case, almost the same number of event staff members are
necessary. What if you have limited resources and budget and are required to run
the online hackathon event?</P> <P>&nbsp;</P> <P>For two weeks, I recently ran
an online-only hackathon event called <A
href="https://github.com/devrel-kr/HackaLearn/blob/main/README.en.md"
target="_blank" rel="noopener">HackaLearn</A> from August 2, 2021. This post is
the retrospective of the event from the event organiser's perspective. If anyone
is planning a hackathon with a similar concept, I hope this post could be
helpful.</P> <P>&nbsp;</P> <H2>The Background</H2> <P>&nbsp;</P> <P>In May 2021
at <A href="https://mybuild.microsoft.com/home?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">//Build</A> Conference, <A
href="https://docs.microsoft.com/azure/static-web-apps/overview?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Azure Static Web Apps (ASWA)</A> became generally
available. It's relatively newer than the other competitors' ones meaning it is
less popular than the others. This HackaLearn event is one of the practices to
promote ASWA. The idea was simple. We're not only running a hackathon event but
also offering the participants learning experiences with <A
href="https://docs.microsoft.com/learn/paths/azure-static-web-apps/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Learn</A> to participants so that they
can feel how convenient ASWA is to use. Therefore, all participants can learn
ASWA and build their app with ASWA – this was the direction.</P> <P>&nbsp;</P>
<P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-01-en.png"
border="0" alt="HackaLearn Banner" /></P> <P>&nbsp;</P> <P>In fact, the first
HackaLearn event was held in Israel, and other countries in the EMEA region have
been running this event. I also borrowed the concept and localised the format
for Korean uni students. With support from <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Learn Student Ambassadors (MLSA)</A>
and <A href="https://githubcampus.expert" target="_blank" rel="noopener">GitHub
Campus Experts (GCE)</A>, they review the participants pull requests and
external field experts were invited as mentors and ran online mentoring
sessions.</P> <P>&nbsp;</P> <H2>The Problems</H2> <P>&nbsp;</P> <P>As mentioned
above, running a hackathon event requires intensive, dedicated and exclusive
resources, including time, people and money. However, none of them was adequate.
I've got very limited resources, and even I couldn't dedicate myself to this
event either. I was the only one who could operate the event. Both <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">MLSAs</A> and <A
href="https://githubcampus.expert" target="_blank" rel="noopener">GCEs</A> were
dedicated for PR reviews and mentors for mentoring sessions. Automating all the
event operation processes was the only answer for me.</P> <P>&nbsp;</P>
<BLOCKQUOTE> <P>How can I automate all the things?</P> </BLOCKQUOTE>
<P>&nbsp;</P> <P>For me, finding out the solution is the key focus area
throughout this event.</P> <P>&nbsp;</P> <H2>The Constraints</H2> <P>&nbsp;</P>
<P>There were a few constraints to be considered.</P> <P>&nbsp;</P> <UL> <LI>
<P><STRONG>No Website for Hackathon</STRONG></P> <P>:police_car_light:</img>
There was no website for HackaLearn. Usually, the event website is built on a
one-off basis, which seems less economical.<BR
/>:backhand_index_pointing_right:</img> Therefore, I decided to use the GitHub
repository for the event because it offers many built-in features such as
Project, Discussions, Issues, Wiki, etc.</P> </LI> <LI> <P><STRONG>No Place for
Participant Registration</STRONG></P> <P>:police_car_light:</img> There was no
registration form.<BR />:backhand_index_pointing_right:</img> Therefore, I
decided to use <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A>.</P> </LI> <LI> <P><STRONG>No
Database for Participant Management</STRONG></P> <P>:police_car_light:</img>
There was no database for the participant management to record their challenge
progress.<BR />:backhand_index_pointing_right:</img> Therefore, instead of
provisioning a database instance, I decided to use <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>.</P> </LI> <LI> <P><STRONG>No
Dashboard for Teams and Individuals Progress Tracking</STRONG></P>
<P>:police_car_light:</img> There was no dashboard to track each team's and each
participant's progress.<BR />:backhand_index_pointing_right:</img> So instead, I
decided to use their team page by merging their pull requests.</P> </LI> </UL>
<P>&nbsp;</P> <P>I've defined the overall business process workflow in the
following sequence diagrams. All I needed was to sort out those limitations
stated above. To me, it was <A
href="https://powerplatform.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Power Platform</A>, <A
href="https://github.com/features/actions" target="_blank" rel="noopener">GitHub
Actions</A> and <A
href="https://www.microsoft.com/microsoft-365?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft 365</A> with minimal coding efforts and
maximum outcomes.</P> <P>&nbsp;</P> <H2>The Plans for Process Automation</H2>
<P>&nbsp;</P> <P>All of sudden, the limitations above have become opportunities
to experiment with the new process automation!</P> <P>&nbsp;</P> <UL> <LI>The
event itself uses the GitHub repository, meaning all PRs and issues can be
handled by <A href="https://github.com/features/actions" target="_blank"
rel="noopener">GitHub Actions</A>.</LI> <LI><A
href="https://www.microsoft.com/microsoft-365?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft 365</A> services like <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A> and <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A> are used for data input and
storage.</LI> <LI><A
href="https://flow.microsoft.com/?WT.mc_id=power-39037-juyoo" target="_blank"
rel="noopener">Power Automate</A> is one of the <A
href="https://powerplatform.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Power Platform</A> services and is used for the
core of process automation.</LI> </UL> <P>&nbsp;</P> <P>So, the GitHub
repository and Microsoft 365 services are fully integrated with GitHub Actions
workflows and Power Automate workflows. As a result, I was able to save a
massive amount of time and money with them.</P> <P>&nbsp;</P> <H2>The Result –
Participant Registration</H2> <P>&nbsp;</P> <P>The first automation process I
worked on was about storing data. The participant details need to be saved in <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>. When a participant enters
their details through <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A>, then a <A
href="https://flow.microsoft.com/?WT.mc_id=power-39037-juyoo" target="_blank"
rel="noopener">Power Automate</A> workflow is triggered to process the
registration details. At the same time, the workflow calls a GitHub Actions
workflow to create a team page for the participant. Here's the simple sequence
diagram describing this process.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/registration-en.png"
border="0" alt="Registration Sequence Diagram" /></P> <P>&nbsp;</P> <P>The
overall process is divided into two parts – one to process participant details
in the Power Automate workflow, and the other to process the details in the
GitHub Actions workflow.</P> <P>&nbsp;</P> <H3>Power Automate Workflow</H3>
<P>&nbsp;</P> <P>Let's have a look at the Power Automate part. When a
participant registers through <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A>, the form automatically
triggers a Power Automate workflow. The workflow checks the email address
whether the participant has already registered or not. If the email doesn't
exist, the participant details are stored to <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-05.png"
border="0" alt="Registration Flow 1" /></P> <P>&nbsp;</P> <P>Then it generates a
team page. Instead of creating it directly from the Power Automate workflow, it
builds the page content and sends it to the GitHub Actions workflow. The <A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch"
target="_blank" rel="noopener"><CODE>workflow_dispatch</CODE></A> event is
triggered for this action.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-06.png"
border="0" alt="Registration Flow 2" /></P> <P>&nbsp;</P> <P>Finally, the
workflow sends a confirmation email. In terms of the name, participants may
register themselves with English names or Korean names. Therefore, I need logic
to check the participant's name. If the participant name is written in English,
it should be <CODE>[Given Name] [Surname]</CODE> (with a space; eg. Justin Yoo).
If it's written in Korean, it should be <CODE>[Surname][Given Name]</CODE>
(without a space; eg. 유저스틴). The red-boxed actions are responsible for
identifying the participant's name. It may be simplified by adopting a custom
connector with an Azure Functions endpoint.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-07.png"
border="0" alt="Registration Flow 3" /></P> <P>&nbsp;</P> <H3>GitHub Actions
Workflow</H3> <P>&nbsp;</P> <P>As mentioned above, the Power Automate workflow
calls a GitHub Actions workflow to generate a team page. Let's have a look. The
<CODE>workflow_dispatch</CODE> event takes the input details from Power
Automate, and they are <CODE>teamName</CODE> and <CODE>content</CODE>.</P>
<P>&nbsp;</P> <PRE>name: On Team Page Requested on: workflow_dispatch: inputs:
teamName: description: The name of team required: true default: Team_HackaLearn
content: description: The content of the file to be created required: true
default: Hello HackaLearn </PRE> <P>&nbsp;</P> <P>Since GitHub <A
href="https://github.com/marketplace?type=actions" target="_blank"
rel="noopener">Marketplace</A> has various types of Actions, I can simply choose
one to create the team page, commit the change and push it back to the
repository.</P> <P>&nbsp;</P> <PRE> - name: Create team page uses:
DamianReeves/write-file-action@master with: path: "./teams/${{
github.event.inputs.teamName }}.md" contents: ${{ github.event.inputs.content }}
write-mode: overwrite - name: Commit team page shell: bash run: | git config
--local user.email "hackalearn.korea@outlook.com" git config --local user.name
"HackaLearn Korea" git add ./teams/\* --force git commit -m "Team: ${{
github.event.inputs.teamName }} added" - name: Push team page uses:
ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }} </PRE> <P>&nbsp;</P> <P>Now, I've got the registration
process fully automated. Let's move on.</P> <P>&nbsp;</P> <H2>The Result –
Challenges Update</H2> <P>&nbsp;</P> <P>In this HackaLearn event, each
participant was required to complete six challenges. Every time they finish one
challenge, they MUST update their team page and create a PR to reflect their
progress. As there are not many differences between the challenges, I'm going to
use the Social Media Challenge as an example.</P> <P>&nbsp;</P> <P>Here's the
simple sequence diagram describing the process.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/challenge-social-en.png"
border="0" alt="Social Media Challenge Sequence Diagram" /></P> <P>&nbsp;</P>
<OL> <LI>After the participant posts a post to their social media, they update
their team page and raise a PR. Then, a GitHub Actions workflow labels the PR
with <CODE>review-required</CODE> and assigns a reviewer.</LI> <LI>The assigned
reviewer checks the social media post whether it's appropriately hashtagged with
<CODE>#hackalearn</CODE> and <CODE>#hackalearnkorea</CODE>.</LI> <LI>Once
confirmed, the reviewer adds the <CODE>review-completed</CODE> label to the PR.
Then another GitHub Actions workflow automatically removes the
<CODE>review-required</CODE> label from the PR.</LI> <LI>The reviewer completes
the review by leaving a comment of <CODE>/socialsignoff</CODE>, and the comment
triggers another GitHub Actions workflow. The workflow calls the Power Automate
workflow that updates the record on <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A> with the challenge
progress.</LI> <LI>The Power Automate workflow calls back to another GitHub
Actions workflow to add <CODE>record-updated</CODE> and
<CODE>completed-social</CODE> labels to the PR and remove the
<CODE>review-completed</CODE> labels from it.</LI> <LI>If there is an issue
while updating the record, the GitHub Actions workflow adds the
<CODE>review-required</CODE> label so that the assigned reviewer starts review
again.</LI> </OL> <P>&nbsp;</P> <H3>GitHub Actions Workflow</H3> <P>&nbsp;</P>
<P>As described above, there are five GitHub Actions workflow used to handle
this request.</P> <P>&nbsp;</P> <H4>Challenge Update PR</H4> <P>&nbsp;</P>
<P>The GitHub Actions workflow is triggered by the participant requesting a new
PR. The event triggered is <A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#pull_request_target"
target="_blank" rel="noopener"><CODE>pull_request_target</CODE></A>, and it's
only activated when the changes occur under the <CODE>teams</CODE>
directory.</P> <P>&nbsp;</P> <PRE>name: On Challenge Submitted on:
pull_request_target: types: - opened branches: - main paths: - 'teams/**/*.md'
</PRE> <P>&nbsp;</P> <P>If the PR is created later than the due date and time,
the PR should not be accepted. Therefore, A PowerShell script is used to check
the due date automatically. Since the PR's <CODE>created_at</CODE> value is the
UTC value, it should be converted to the Korean local time, included in the
PowerShell script.</P> <P>&nbsp;</P> <PRE>jobs: labelling: name: 'Add a label on
submission: review-required' runs-on: ubuntu-latest steps: - name: Get PR
date/time id: checkpoint shell: pwsh run: | $tz =
[TimeZoneInfo]::FindSystemTimeZoneById("Asia/Seoul") $dateSubmitted =
[DateTimeOffset]::Parse("${{ github.event.pull_request.created_at }}") $offset =
$tz.GetUtcOffset($dateSubmitted) $dateSubmitted =
$dateSubmitted.ToOffset($offset) $dateDue =
$([DateTimeOffset]::Parse("2021-08-16T00:00:00.000+09:00")) $isOverdue =
"$($dateSubmitted -gt $dateDue)".ToLowerInvariant() $dateSubmittedValue =
$dateSubmitted.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz") $dateDueValue =
$dateDue.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz") echo "::set-output
name=dateSubmitted::$dateSubmittedValue" echo "::set-output
name=dateDue::$dateDueValue" echo "::set-output name=isOverdue::$isOverdue"
</PRE> <P>&nbsp;</P> <P>If the PR is over the due, it's immediately rejected and
closed.</P> <P>&nbsp;</P> <PRE> - name: Add a label - Overdue if: ${{
steps.checkpoint.outputs.isOverdue == 'true' }} uses:
buildsville/add-remove-label@v1 with: token: "${{ secrets.GITHUB_TOKEN }}"
label: 'OVERDUE-SUBMIT' type: add - name: Comment to PR - Overdue if: ${{
steps.checkpoint.outputs.isOverdue == 'true' }} uses: bubkoo/auto-comment@v1
with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} pullRequestOpened: | 👋🏼 @{{
author }} 님! * PR 제출 시각: ${{ steps.checkpoint.outputs.dateSubmitted }} * PR 마감
시각: ${{ steps.checkpoint.outputs.dateDue }} 안타깝게도 제출하신 PR은 마감 기한인 ${{
steps.checkpoint.outputs.dateDue }}을 넘기셨습니다. 😭 따라서, 이번 HackaLearn 이벤트에 반영되지
않습니다. 그동안 HackaLearn 이벤트에 참여해 주셔서 감사 드립니다. 다음 기회에 다시 만나요! - name: Close PR -
Overdue if: ${{ steps.checkpoint.outputs.isOverdue == 'true' }} uses:
superbrothers/close-pull-request@v3 with: comment: "제출 기한 종료" </PRE>
<P>&nbsp;</P> <P>If it's before the due, label the PR, leave a comment and
randomly assign a reviewer.</P> <P>&nbsp;</P> <PRE> - name: Add a label if: ${{
steps.checkpoint.outputs.isOverdue == 'false' }} uses: actions/labeler@v3 with:
repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path:
'.github/labeler.yml' - name: Comment to PR if: ${{
steps.checkpoint.outputs.isOverdue == 'false' }} uses: bubkoo/auto-comment@v1
with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} pullRequestOpenedReactions:
'rocket, +1' pullRequestOpened: &gt; 👋🏼 @{{ author }} 님! 챌린지 완료 PR를 생성해 주셔서
감사합니다! 🎉 참가자님의 해커톤 완주를 응원해요! 💪🏼 PR 템플릿 작성 가이드라인을 잘 준수하셨는지 확인해주세요. 최대한 빠르게
리뷰하겠습니다! 😊 🔹 From. HackaLearn 운영진 일동 🔹 - name: Randomly assign a staff if:
${{ steps.checkpoint.outputs.isOverdue == 'false' }} uses:
gerardabello/auto-assign@v1.0.1 with: github-token: "${{ secrets.GITHUB_TOKEN
}}" number-of-assignees: 1 assignee-pool: "${{ secrets.PR_REVIEWERS }}" </PRE>
<P>&nbsp;</P> <H4>Challenge Review Completed</H4> <P>&nbsp;</P> <P>The assigned
reviewer confirms the challenge and labels the result. This labelling action
triggers the following GitHub Actions workflow.</P> <P>&nbsp;</P> <PRE>name: On
Challenge Labelled on: pull_request_target: types: - labeled - unlabeled jobs:
labelling: name: 'Update a label' runs-on: ubuntu-latest steps: - name: Respond
to label uses: dessant/label-actions@v2 with: process-only: prs </PRE>
<P>&nbsp;</P> <H4>Challenge Review Approval</H4> <P>&nbsp;</P> <P>Commenting
like <CODE>/socialsignoff</CODE> for the social media post challenge
automatically triggers the following GitHub Actions workflow, with the event of
<A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#issue_comment"
target="_blank" rel="noopener"><CODE>issue_comment</CODE></A>.</P> <P>&nbsp;</P>
<PRE>name: On Challenge Review Commented on: issue_comment: types: - created
</PRE> <P>&nbsp;</P> <P>The first step of this workflow is to check whether the
commenter is the assigned reviewer, then find out which challenge is approved.
The <CODE>review-completed</CODE> label MUST exist on the PR, and the commenter
MUST be in the reviewer list (<CODE>secrets.PR_REVIEWERS</CODE>).</P>
<P>&nbsp;</P> <PRE>env: PR_REVIEWERS: ${{ secrets.PR_REVIEWERS }} jobs: signoff:
if: ${{ github.event.issue.pull_request }} name: 'Sign-off challenge' runs-on:
ubuntu-latest steps: - name: Get checkpoints id: checkpoint shell: pwsh run: |
$hasValidLabel = "${{ contains(github.event.issue.labels.*.name,
'review-completed') }}" $isCommenterAssignee = "${{
github.event.comment.user.login == github.event.issue.assignee.login }}"
$isValidCommenter = "${{ contains(env.PR_REVIEWERS,
github.event.comment.user.login) }}" $isAswaSignoff = "${{
github.event.comment.body == '/aswasignoff' }}" $isGhaSignoff = "${{
github.event.comment.body == '/ghasignoff' }}" $isSocialSignoff = "${{
github.event.comment.body == '/socialsignoff' }}" $isAppSignoff = "${{
github.event.comment.body == '/appsignoff' }}" $isRepoSignoff = "${{
github.event.comment.body == '/reposignoff' }}" $isRetroSignoff = "${{
github.event.comment.body == '/retrosignoff' }}" $timestamp = "${{
github.event.comment.created_at }}" echo "::set-output
name=hasValidLabel::$hasValidLabel" echo "::set-output
name=isCommenterAssignee::$isCommenterAssignee" echo "::set-output
name=isValidCommenter::$isValidCommenter" echo "::set-output
name=isAswaSignoff::$isAswaSignoff" echo "::set-output
name=isGhaSignoff::$isGhaSignoff" echo "::set-output
name=isSocialSignoff::$isSocialSignoff" echo "::set-output
name=isAppSignoff::$isAppSignoff" echo "::set-output
name=isRepoSignoff::$isRepoSignoff" echo "::set-output
name=isRetroSignoff::$isRetroSignoff" echo "::set-output
name=timestamp::$timestamp" </PRE> <P>&nbsp;</P> <P>If all conditions are met,
the workflow takes one action based on the type of the challenge. Each action
calls a Power Automate workflow to update the record on <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>, send a confirmation email,
and calls back to another GitHub Actions workflow.</P> <P>&nbsp;</P> <PRE>-
name: Record challenge ASWA if: ${{ steps.checkpoint.outputs.hasValidLabel ==
'true' &amp;&amp; steps.checkpoint.outputs.isCommenterAssignee == 'true'
&amp;&amp; steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isAswaSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "aswa",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge GHA if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isGhaSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "gha",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge SOCIAL if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isSocialSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "social",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge APP if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isAppSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "app",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge REPO if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isRepoSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "repo",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge RETRO if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isRetroSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "retro",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' </PRE> <P>&nbsp;</P> <H4>Challenge Complete or
Further Review</H4> <P>&nbsp;</P> <P>This GitHub Actions workflow completes the
challenge, triggered by a Power Automate workflow through the <A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch"
target="_blank" rel="noopener"><CODE>workflow_dispatch</CODE></A> event. Power
Automate sends values of <CODE>prId</CODE>, <CODE>labelsToAdd</CODE>,
<CODE>labelsToRemove</CODE> and <CODE>isMergeable</CODE>.</P> <P>&nbsp;</P>
<PRE>name: On Challenge Completed on: workflow_dispatch: inputs: prId:
description: PR ID required: true default: '' labelsToAdd: description: The
comma delimited labels to add required: true default: record-updated
labelsToRemove: description: The comma delimited labels to remove required: true
default: review-completed isMergeable: description: The value indicating whether
the challenge is mergeable or not. required: true default: 'false' </PRE>
<P>&nbsp;</P> <P>The first action is to add labels to the PR and remove labels
from the PR.</P> <P>&nbsp;</P> <PRE>jobs: update_labels: name: 'Update labels'
runs-on: ubuntu-latest steps: - name: Update labels on PR shell: pwsh run: |
$headers = @{ "Authorization" = "token ${{ secrets.GITHUB_TOKEN }}";
"User-Agent" = "HackaLearn Bot"; "Accept" = "application/vnd.github.v3+json" }
$owner = "devrel-kr" $repository = "HackaLearn" $issueId = "${{
github.event.inputs.prId }}" $labelsToAdd = "${{ github.event.inputs.labelsToAdd
}}" -split "," $body = @{ "labels" = $labelsToAdd } $url =
"https://api.github.com/repos/$owner/$repository/issues/$issueId/labels"
Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body $($body |
ConvertTo-Json) $labelsToRemove = "${{ github.event.inputs.labelsToRemove }}"
-split "," $labelsToRemove | ForEach-Object { $label = $_; $url =
"https://api.github.com/repos/$owner/$repository/issues/$issueId/labels/$label";
Invoke-RestMethod -Method Delete -Uri $url -Headers $headers } </PRE>
<P>&nbsp;</P> <P>And finally, this action merges the PR. If there's an error on
the Power Automate workflow side, the <CODE>isMeargeable</CODE> value MUST be
<CODE>false</CODE>, meaning it won't execute the merge action.</P> <P>&nbsp;</P>
<PRE> merge_pr: name: 'Merge PR' needs: update_labels runs-on: ubuntu-latest
steps: - name: Merge PR if: ${{ github.event.inputs.isMergeable == 'true' }}
shell: pwsh run: | $headers = @{ "Authorization" = "token ${{
secrets.WORKFLOW_DISPATCH_TOKEN }}"; "User-Agent" = "HackaLearn Bot"; "Accept" =
"application/vnd.github.v3+json" } $owner = "devrel-kr" $repository =
"HackaLearn" $issueId = "${{ github.event.inputs.prId }}" $url =
"https://api.github.com/repos/$owner/$repository/pulls/$issueId" $pr =
Invoke-RestMethod -Method Get -Uri $url -Headers $headers $sha = $pr.head.sha
$title = "" $message = "" $merge = "squash" $body = @{ "commit_title" = $title;
"commit_message" = $message; "sha" = $sha; "merge_method" = $merge; } $url =
"https://api.github.com/repos/$owner/$repository/pulls/$issueId/merge"
Invoke-RestMethod -Method Put -Uri $url -Headers $headers -Body $($body |
ConvertTo-Json) </PRE> <P>&nbsp;</P> <H3>Power Automate Workflow</H3>
<P>&nbsp;</P> <P>The challenge approval workflow calls this Power Automate
workflow. Firstly, it checks the type of challenges. If no challenge is
identified, it does nothing.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-08.png"
border="0" alt="Challenge Update Flow 1" /></P> <P>&nbsp;</P> <P>If the
challenge is linked to the registered participant's GitHub ID, update the record
on <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>; otherwise, do nothing.</P>
<P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-09.png"
border="0" alt="Challenge Update Flow 2" /></P> <P>&nbsp;</P> <P>Finally, it
sends a confirmation email using a different email template based on the number
of challenges completed.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-10.png"
border="0" alt="Challenge Update FLow 3" /></P> <P>&nbsp;</P> <H2>The Others:
Other Power Automate Workflows</H2> <P>&nbsp;</P> <P>Previously described Power
Automate workflows are triggered by GitHub Actions for integration. However,
there are other workflows only for management purposes. As most processes are
similar to each other, I'm not going to describe them all. Instead, it's the
total number of workflows that I used for the event, which is 15 in total.</P>
<P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-04.png"
border="0" alt="List of Power Automate Workflows" /></P> <P>&nbsp;</P> <P>Now
all my business processes are fully automated. As an operator, I can focus on
questions and PR reviews, but nothing else.</P> <P>&nbsp;</P> <H2>The Stats</H2>
<P>&nbsp;</P> <P>The HackaLearn even was over! Here are some numbers related to
this HackaLearn event.</P> <P>&nbsp;</P> <UL> <LI><CODE>14</CODE>: Number of
days for HackaLearn</LI> <LI><CODE>171</CODE>: Total number of participants</LI>
<LI><CODE>62</CODE>: Total number of participants who completed Cloud Skills
Challenge</LI> <LI><CODE>21</CODE>: Total number of teams who uploaded social
media posts</LI> <LI><CODE>17</CODE>: Total number of teams who completed
building Azure Static Web Apps</LI> <LI><CODE>16</CODE>: Total number of teams
who completed provided their GitHub repository</LI> <LI><CODE>20</CODE>: Total
number of teams who published their blog post as a retrospective</LI>
<LI><CODE>13</CODE>: Total number of teams who completed all six challenges</LI>
</UL> <P>&nbsp;</P> <H2>The Lessons Learnt</H2> <P>&nbsp;</P> <P>Surely, there
are many spaces for future improvement. What I've learnt from the automation
exercise are:</P> <P>&nbsp;</P> <UL> <LI> <P><STRONG>Do not assume the way
participants create their PRs is expected</STRONG></P>
<P>:backhand_index_pointing_right:</img> The review automation process should be
as flexible as possible.</P> </LI> <LI> <P><STRONG>Make the review process as
simple as possible</STRONG></P> <P>:backhand_index_pointing_right:</img> The
reviewers should only be required to focus on the PR, not anything else.</P>
</LI> <LI> <P><STRONG>Reviewer should be assigned to a team instead of
individual PRs</STRONG></P> <P>:backhand_index_pointing_right:</img> If a
reviewer is assigned to a team, the chance for merge conflicts will dramatically
decrease.</P> </LI> <LI> <P><STRONG>Make Power Automate workflows as modular as
possible</STRONG></P> <P>:backhand_index_pointing_right:</img> There are many
similar sequence of actions across many workflows.<BR
/>:backhand_index_pointing_right:</img> They can be modularised into either
sub-workflows or custom APIs through custom connectors.</P> </LI> </UL>
<P>&nbsp;</P> <H2>The Side Events</H2> <P>&nbsp;</P> <P>During the event, we ran
live hands-on workshops for <A href="https://github.com/features/actions"
target="_blank" rel="noopener">GitHub Actions</A> and <A
href="https://docs.microsoft.com/azure/static-web-apps/overview?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Azure Static Web Apps</A> led by a <A
href="https://githubcampus.expert" target="_blank" rel="noopener">GCE</A> and an
<A href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">MLSA</A> respectively.</P> <P>&nbsp;</P> <UL>
<LI> <P>Live Hands-on: GitHub Actions (in Korean)</P> <P><IFRAME
src="https://www.youtube.com/embed/e_elLW6uNSc" width="710" height="399"
allowfullscreen="allowfullscreen" loading="lazy"></IFRAME></P> </LI> <LI>
<P>Live Hands-on: Azure Static Web Apps (in Korean)</P> <P><IFRAME
src="https://www.youtube.com/embed/Hxkv6AjAisY" width="710" height="399"
allowfullscreen="allowfullscreen" loading="lazy"></IFRAME></P> </LI> <LI>
<P>Live Hands-on: Azure Static Web Apps with Headless CMS (in Korean)</P>
<P><IFRAME src="https://www.youtube.com/embed/x3j3mDblqMY" width="710"
height="399" allowfullscreen="allowfullscreen" loading="lazy"></IFRAME></P>
</LI> </UL> <P>&nbsp;</P> <HR /> <P>&nbsp;</P> <P>So far, I summarised what I've
learnt from this event and what I've done for workflow automation, using <A
href="https://github.com/features/actions" target="_blank" rel="noopener">GitHub
Actions</A>, <A
href="https://www.microsoft.com/microsoft-365?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft 365</A> and <A
href="https://flow.microsoft.com/?WT.mc_id=power-39037-juyoo" target="_blank"
rel="noopener">Power Automate</A>. Although there are lots of spaces to improve,
I managed to run the online hackathon event with a fully automated process. I
can now do it again in the future.</P> <P>&nbsp;</P> <P>Specially thanks to <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">MLSAs</A> and <A
href="https://githubcampus.expert" target="_blank" rel="noopener">GCEs</A> to
review all the PRs, and mentors who answered questions from participants.
Without them, regardless of the fully automated workflows, this event wouldn't
be successfully running.</P> <P>&nbsp;</P> <P style="text-align: center;">This
article was originally published on <A
href="https://devkimchi.com/2021/08/20/running-hackathon-by-yourself-with-gha-m365-and-pp/"
target="_blank" rel="noopener">Dev Kimchi</A>.</P> Mon, 23 Aug 2021 00:00:00 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hackathon-as-a-service-with-github-actions-microsoft-365-and/ba-p/2671063
justinyoo 2021-08-23T00:00:00Z New module: Build Serverless apps with Azure and
Go
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-build-serverless-apps-with-azure-and-go/ba-p/2662657
<P><SPAN>Serverless architecture is a type of application development that
allows you to run logic in the cloud without having to worry about building
server infrastructure. Azure Functions implements a serverless architecture that
runs your code on demand without requiring you to manually provision
servers.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To author Azure Functions in Go or
Rust, for example, you use a feature called custom handlers. Custom handlers
allow you to bring almost any language to Azure Functions.</SPAN></P>
<P>&nbsp;</P> <H2 id="what-are-custom-handlers">What are custom handlers?</H2>
<P>At its core, a custom handler is a web server. The web server receives events
from the Functions host. You then have an opportunity to write code in your
preferred language to respond to the events.</P> <P>With custom handlers, you
can use any language that supports HTTP primitives. That's nearly any
language.</P> <P>&nbsp;</P> <H2>An Azure Function app using Go</H2>
<P>&nbsp;</P> <P>To create such an app, you only need to listen to HTTP events +
make some minor configurations. Here's an example of what the code looks
like:</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">package main import (
"fmt" "io/ioutil" "log" "net/http" "os" ) func helloHandler(w
http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type",
"application/json") if r.Method == "GET" { w.Write([]byte("hello world")) } else
{ body, _ := ioutil.ReadAll(r.Body) w.Write(body) } } func main() {
customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT") if
!exists { customHandlerPort = "8080" } mux := http.NewServeMux() //
mux.HandleFunc("/api/hello", helloHandler) fmt.Println("Go server Listening on:
", customHandlerPort) log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))
}</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>To learn more about how to configure
the app properly and work with things like message queues, have a look at this
module</P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/serverless-go/"
target="_blank" rel="noopener">Build serverless apps with Go and custom handlers
- Learn | Microsoft Docs</A></P> <P>&nbsp;</P> Fri, 03 Dec 2021 18:53:58 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-build-serverless-apps-with-azure-and-go/ba-p/2662657
Chris_Noring 2021-12-03T18:53:58Z API Management, Power Platform, & Teams Better
Together
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/api-management-power-platform-amp-teams-better-together/ba-p/2642915
<P aria-level="2"><STRONG><SPAN data-contrast="none">API Management, Power
Platform, &amp; Teams Better Together</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P aria-level="2"><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the webinar of the month for the Low-code application development
(LCAD) on Azure solution.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">LCAD on&nbsp;Azure
demonstrates&nbsp;the robust development capabilities of integrating low-code
Microsoft Power Apps and the Azure products you may be familiar with.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">This month’s webinar is ‘API
Management, Power Platform &amp; Teams: Better Together.’</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In this blog I will briefly
recap&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">Low-code application development on
Azure</SPAN></A><SPAN data-contrast="none">, providing&nbsp;an overview
of&nbsp;Power Platform Development patterns, an overview of Azure API
Management, and&nbsp;Geetha&nbsp;Sivasailam’s&nbsp;demo of API Management’s
integration with Power Platform.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P aria-level="2"><STRONG><SPAN data-contrast="none">What is
Low-code application development on Azure?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">Low-code application development
(LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was created to help
developers build business applications faster with less code, leveraging the
Power Platform, and more specifically Power Apps, yet helping them scale and
extend their Power Apps with Azure services.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_0-1628801638874.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302877i1AC48058FF6D4C09/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_0-1628801638874.png"
alt="riduncan_0-1628801638874.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse&nbsp;employees&nbsp;track incoming inventory.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">That application would take months
to build, test, and deploy, however with Power Apps’ it can take hours to build,
saving time and resources.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">However, say the warehouse employees want the application
to place procurement orders for additional inventory automatically when current
inventory hits a determined low.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In the past that would require
another heavy lift by the development team to rework their previous application
iteration.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Due to the integration of Power Apps
and Azure a professional developer can build an API in Visual Studio (VS) Code,
publish it to their Azure portal, and export the API to Power Apps integrating
it into their application as a custom connector.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Afterwards, that same API is
re-usable indefinitely in the Power Apps’ studio, for future use with other
applications, saving the company and developers more time and
resources.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">To learn more,
visit the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">LCAD on Azure page</SPAN></A><SPAN
data-contrast="none">, and to walk through the&nbsp;aforementioned
scenario&nbsp;try the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank"><SPAN data-contrast="none">LCAD on Azure guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_1-1628801638894.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302879i4E2C3ECC5C917E72/image-size/medium?v=v2&amp;px=400"
role="button" title="riduncan_1-1628801638894.jpeg"
alt="riduncan_1-1628801638894.jpeg" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Power Platform Development Patterns</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Expounding on the explanation of low code
application development on Azure, there are other ways to build&nbsp;low code
applications. Below you will see 3 infographics, the first demonstrates the
out-of-box capabilities of Power Platform.&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">The “clients” are the devices on which the end
user consumes the UI and logic, typically a web and mobile device. The UI and
logic are built in Power Apps&nbsp;and&nbsp;Power Automate, these are the canvas
apps and workflow screens that you will see in Geetha’s demo.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">The UI and logic are built upon the
data either stored in Dataverse or&nbsp;connected to 1</SPAN><SPAN
data-contrast="auto">st</SPAN><SPAN data-contrast="auto">&nbsp;and 3</SPAN><SPAN
data-contrast="auto">rd</SPAN><SPAN data-contrast="auto">&nbsp;party services
such as SharePoint, Office 365, and Twitter as seen below.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_2-1628801638896.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302878iA662FE39CF862134/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_2-1628801638896.png"
alt="riduncan_2-1628801638896.png" /></span></P> <P><SPAN
data-contrast="auto">However, as alluded to in the opening section, there are
times professional development is necessary. This is typically because the low
code application requires connectivity that doesn’t come out of the box. These
are what are referred to as custom connectors.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">There are 5 steps to building a custom connector. First is
building and securing your API, describing that API and defining the connector,
using your connector, and if you feel inclined you can share and certify that
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">If you’re
looking to learn how to build a custom connector inside a Power App, check out
the documentation on&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/connectors/custom-connectors/define-blank"
target="_blank"><SPAN data-contrast="none">Create a custom connector from
scratch | Microsoft Docs.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_3-1628801638898.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302881i660F447BC71F54E7/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_3-1628801638898.png"
alt="riduncan_3-1628801638898.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Lastly, one of the ways Microsoft is enabling low code
application development to be leveraged further you can use Power Apps and Power
Automate in Teams. Custom connectors can be exposed to apps in Teams via Azure
API Management.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">To build
the API Management connector from scratch you create a test API, add an
operation to the test API, add inbound policy to mock API response, add
definition for API response schema, secure API Management with subscription
keys, export API management as a custom connector to a Teams environment and
consume the API from Power Apps &amp; Power Automate in the same Teams’
environment.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_5-1628801638899.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302880i529BA1F8E84A3AA9/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_5-1628801638899.png"
alt="riduncan_5-1628801638899.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">If you already have Teams subscriptions, Power Apps
licenses, and Azure&nbsp;API Management subscriptions there is no additional
cost to import your custom connectors in Teams.&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="APIM-to-Teams.gif" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302887i96D8DDB62A37ADEF/image-size/large?v=v2&amp;px=999"
role="button" title="APIM-to-Teams.gif" alt="APIM-to-Teams.gif"
/></span></SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">This integration enables the end user to access UI and
Logic easier and faster than before.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Azure API Management Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In this webinar Geetha does a great job covering
the benefits of Azure API Management. For those unfamiliar with Azure
API&nbsp;Management,&nbsp;it is a SaaS solution for controlling access&nbsp;and
governance nearly maintenance free.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">It allows you to manage thousands of APIs and backend
services, maintenance free, products evolving endpoints evolving you can tweak
them. Rather than trying to wrap and maintain APIs you can&nbsp;focus on
developing the APIs.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">&nbsp;For more information on Azure API Management look at
the infographic below and check out&nbsp;Geetha’s&nbsp;</SPAN><A
href="https://channel9.msdn.com/Shows/POWERful-Devs/Geetha-Sivasailam-APIM-Power-Platform--Teams-Better-Together"
target="_blank"><SPAN data-contrast="none">webinar</SPAN></A><SPAN
data-contrast="auto">&nbsp;on the&nbsp;POWERful&nbsp;Devs show on Channel
9.</SPAN></P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_6-1628801638902.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302883i5D0A8F5B524B77DF/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_6-1628801638902.png"
alt="riduncan_6-1628801638902.png" /></span></P> <P><STRONG><SPAN
data-contrast="auto">Build an&nbsp;Azure&nbsp;APIM&nbsp;Connector&nbsp;and
Integration into&nbsp;Power Platform Demo</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Geetha’s&nbsp;demo covers building an APIM
connector&nbsp;from scratch in API Management&nbsp;and&nbsp;walks through the
perspective of a citizen or pro developer who wants to proceed with
implementation and testing of API&nbsp;Management.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">The demo covers a scenario in which the&nbsp;API
façade has been designed, but the actual&nbsp;back-end&nbsp;implementation will
come in later or is being developed in parallel.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">She answers questions such as “how can
you&nbsp;mockup&nbsp;API responses&nbsp;and still work with your apps and
flow&nbsp;implementation?”&nbsp;“How can you expose a mocked API via APIM as a
connector and consume that?”&nbsp;Taking you through how to connect a custom
connector in Power Apps and Power Automate.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">She also&nbsp;uses an API service to show the different
ways you can create an API and either start from a blank API or start from a
definition.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">When starting with a definition you can&nbsp;use
an Open API definition, WADL, or WSDL.&nbsp;However, in this demo she
shows&nbsp;how to start from a blank API.&nbsp;She subsequently shows
the&nbsp;APIMSandbox, shown below.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_7-1628801638904.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302884i1D424C27E32C3C8A/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_7-1628801638904.png"
alt="riduncan_7-1628801638904.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">&nbsp;In the&nbsp;frontend, she has a “get” action, and
demonstrates how to mock the get request with a sample mock
text,&nbsp;specifying a&nbsp;“mocktext” definition rather than the raw json you
would get otherwise.&nbsp;The inbound processing, outbound processing, and
backend are where you can specify and define policies.</SPAN></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_8-1628801638906.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302885i2706824190DCFF60/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_8-1628801638906.png"
alt="riduncan_8-1628801638906.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Afterward, Geetha shows how to export the API into Power
Apps or Power Automate.&nbsp;&nbsp;All you&nbsp;must&nbsp;do is select your
Teams’&nbsp;environment, specify a name for it and export it.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">She concludes by&nbsp;demonstrating
how to consume the API in Power Automate, but that same API can be consumed in
Power Apps as well.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_9-1628801638905.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302886iED4C68C493B1F7F3/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_9-1628801638905.png"
alt="riduncan_9-1628801638905.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Conclusion</SPAN></STRONG></P> <P><SPAN
data-contrast="none">Make sure to watch the&nbsp;</SPAN><A
href="https://channel9.msdn.com/Shows/POWERful-Devs/Geetha-Sivasailam-APIM-Power-Platform--Teams-Better-Together"
target="_blank"><SPAN data-contrast="none">webinar</SPAN></A><SPAN
data-contrast="none">&nbsp;on&nbsp;Channel 9 subscribe to
the&nbsp;POWERful&nbsp;Devs channel&nbsp;to learn more about Power&nbsp;Platform
and Azure integrations.&nbsp;Moreover, look out for news
about&nbsp;the&nbsp;POWERful&nbsp;Devs conference this September&nbsp;which will
cover the roles of citizen developers, professional developers, and&nbsp;fusion
teams.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Resources</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Channel 9:&nbsp;POWERful&nbsp;Devs
link</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://channel9.msdn.com/Shows/POWERful-Devs/Geetha-Sivasailam-APIM-Power-Platform--Teams-Better-Together"
target="_blank"><SPAN data-contrast="none">Geetha Sivasailam - APIM, Power
Platform &amp; Teams Better Together | POWERful Devs | Channel
9&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Low Code Application Development on
Azure</SPAN></STRONG><SPAN data-contrast="none">&nbsp;</SPAN><SPAN>&nbsp;<BR
/></SPAN><A href="https://azure.microsoft.com/en-us/products/powerapps/"
target="_blank"><SPAN data-contrast="none">Microsoft Power Apps on
Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">LCAD on Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Learning Resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="http://aka.ms/fusiondevpath" target="_blank"><SPAN
data-contrast="none">Fusion Development learning path</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_blank"><SPAN data-contrast="none">Fusion Development
E-book</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://aka.ms/ppcvscode" target="_blank"><SPAN
data-contrast="none">Power Platform Visual Studio Extension</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
Thu, 12 Aug 2021 21:31:50 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/api-management-power-platform-amp-teams-better-together/ba-p/2642915
riduncan 2021-08-12T21:31:50Z Build Custom Apps with Power Apps Component
Framework
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-custom-apps-with-power-apps-component-framework/ba-p/2588515
<P aria-level="2"><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the webinar of the month for the Low-code application development
(LCAD) on Azure solution.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">LCAD on Azure is a new solution to demonstrate the robust
development capabilities of integrating low-code Microsoft Power Apps and the
Azure products you may be familiar with.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">This month’s webinar is ‘Build Custom Power Apps with Power
Apps Component Framework.’</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">In this blog I will&nbsp;briefly&nbsp;recap&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development&nbsp;on Azure</SPAN></A><SPAN
data-contrast="none">,&nbsp;provide&nbsp;an overview of&nbsp;how to build a code
component, and&nbsp;how to&nbsp;add a PCF&nbsp;to a Power App.</SPAN></P>
<P>&nbsp;</P> <P aria-level="2"><STRONG><SPAN data-contrast="none">What
is&nbsp;Low-code application
development&nbsp;on&nbsp;Azure?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was
created to help developers build business applications faster with less code,
leveraging the Power Platform, and more specifically Power Apps, yet helping
them scale and extend their Power Apps with Azure services.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_0-1627332157351.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298493i043FCD2B1E002D5D/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_0-1627332157351.png"
alt="riduncan_0-1627332157351.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN><SPAN
data-contrast="none">For example, a pro developer who works for a manufacturing
company would need to build a line-of-business (LOB) application to help
warehouse&nbsp;employees&nbsp;track incoming inventory.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">That application would take months to build, test,
and deploy, however with Power Apps’ it can take hours to build, saving time and
resources.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">However, say the warehouse employees want the
application to place procurement orders for additional inventory automatically
when current inventory hits a determined low.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In the past that would require another heavy lift
by the development team to rework their previous application
iteration.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Due to the integration of Power Apps and Azure a
professional developer can build an API in Visual Studio (VS) Code, publish it
to their Azure portal, and export the API to Power Apps integrating it into
their application as a custom connector.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Afterwards, that same API is re-usable
indefinitely in the Power Apps’ studio, for future use with other applications,
saving the company and developers more time and
resources.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">To learn&nbsp;more,&nbsp;visit the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD&nbsp;on Azure
page</SPAN></A><SPAN data-contrast="none">,&nbsp;and to walk through
the&nbsp;aforementioned&nbsp;scenario&nbsp;try the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on Azure guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_1-1627332157359.jpeg" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298494i9BBBE1E2B225B65F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_1-1627332157359.jpeg"
alt="riduncan_1-1627332157359.jpeg" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">How to Build a Code Component</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Power Component Frameworks are custom code
components that extend your application when out-of-the-box connectors don’t
fully meet your needs. These code components are reusable that can be leveraged
across Power Apps applications.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">These components are all HTML or&nbsp;JavaScript
but&nbsp;can support React and AngularJS as well.&nbsp;For those interested
after reading this blog and watching the webinar, there is a PCF gallery that
houses PCFs made by Microsoft developers and the Power Apps community, for any
developer to leverage.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Feel free to add your own PCFs to the&nbsp;</SPAN><A
href="https://pcf.gallery/" target="_blank" rel="noopener"><SPAN
data-contrast="none">gallery!</SPAN></A></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Code components consist of three
elements:</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">First is&nbsp;the&nbsp;manifest,&nbsp;an XML
document that describes the meta data for the component.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Second is component implementation.
To implement the component, the metadata is stored in the&nbsp;index.ts, also
housing the logic.&nbsp;Additionally, there is a lifecycle to interact with the
Power Apps component or framework.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Therefore, some methods will need to&nbsp;be created to
control the lifecycle of the code component. Those methods are created when you
“init” the project through the CLI.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Third are the resources; tags in the manifest that refer to
the resource that the component requires to implement its’ visualization.
Examples are&nbsp;css, code,&nbsp;img, html, and&nbsp;resx.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">To better understand the PCF
architecture below is an infographic describing the four standard&nbsp;methods
created for you when you “init” the project through the CLI.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_2-1627332157361.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298495i689358527821CA7B/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_2-1627332157361.png"
alt="riduncan_2-1627332157361.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">The next infographic depicts how the methods are invoked
through a Framework Runtime process in a standardized life cycle.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_3-1627332157363.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298496i3F37B5686AE47466/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_3-1627332157363.png"
alt="riduncan_3-1627332157363.png" /></span></P> <P>&nbsp;</P> <P
aria-level="2"><STRONG><SPAN data-contrast="none">What to expect in the
webinar?&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In the webinar&nbsp;</SPAN><SPAN
data-contrast="auto">Cassie&nbsp;Breviu&nbsp;walks you step by step on&nbsp;how
to build a PCF&nbsp;in CLI and Visual Studio&nbsp;that&nbsp;adds&nbsp;a
slider&nbsp;component for&nbsp;Power Apps.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The&nbsp;end user&nbsp;can&nbsp;leverage&nbsp;the
slider&nbsp;when accounting for inventory, inputting customer order quantities,
or a host of other&nbsp;use cases.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">That is one of the great benefits of PCFs, that
they are reusable across Power Apps for a variety of use
cases.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Prior to importing the PCF into her Power App,
Cassie&nbsp;will also demonstrate the necessary steps in the Power Platform
Admin Center to secure her&nbsp;component and&nbsp;set the proper governance
regulations.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P aria-level="2"><STRONG><SPAN
data-contrast="none">Summary&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Make sure to watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-build-apps-Powerapps-component-framework.html?lcid=en-us"
target="_blank" rel="noopener"><SPAN
data-contrast="none">webinar</SPAN></A><SPAN data-contrast="none">&nbsp;to learn
more Power Apps&nbsp;and Power Component Frameworks. Moreover, look out for news
about&nbsp;the&nbsp;POWERful&nbsp;Devs conference this September&nbsp;which will
cover the roles of citizen developers, professional developers, and&nbsp;fusion
teams.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Resources</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Webinar Registration
Link</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://info.microsoft.com/ww-Landing-build-apps-Powerapps-component-framework.html?lcid=en-us"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build Custom
Apps</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Low Code Application
Development&nbsp;on&nbsp;Azure</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN>&nbsp;<BR /></SPAN><A
href="https://azure.microsoft.com/en-us/products/powerapps/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Microsoft Power Apps on
Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on
Azure</SPAN></A><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG>Learning Resources</STRONG></P> <P><A
href="http://aka.ms/fusiondevpath" target="_self"><STRONG>Fusion Development
learning path</STRONG></A></P> <P><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_self"><STRONG>Fusion Development E-book</STRONG></A></P> <P><A
href="https://aka.ms/ppcvscode" target="_self"><STRONG>Power Platform Visual
Studio Extension</STRONG></A></P> <P>&nbsp;</P> Thu, 12 Aug 2021 20:46:04 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-custom-apps-with-power-apps-component-framework/ba-p/2588515
riduncan 2021-08-12T20:46:04Z Winners Announced: Azure IoT Hack for
Sustainability
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-iot-hack-for-sustainability/ba-p/2573056
<P>Over 300 developers gathered virtually over the course of 7 weeks to
participate in the <A href="https://iotsustainabilityhack.devpost.com/"
target="_blank" rel="noopener">Microsoft Azure IoT Hack for Sustainability</A>
challenge. Participants were asked to join Microsoft in advancing sustainability
by understanding how to use technology to measure and minimize environmental
impact. The hackathon specifically focused on using Azure IoT technologies that
will give endless possibilities: collect real time data, capture rich
information using cameras and machine learnings, create real time insights, and
automated action without human intervention.&nbsp;</P> <P>&nbsp;</P> <P>Let's
take a look at the top 6 winning projects below:</P> <P>&nbsp;</P> <P><FONT
size="5"><STRONG><U>1st Place:<A
href="https://devpost.com/software/stemm-network" target="_blank"
rel="noopener"> STEM Network</A></U></STRONG></FONT></P> <P>Created by: Advyth
Ramachandran, Pranav Bhusari, Joshua Qin, Justin Shao</P> <P>The STEM Network -
Street Tree Monitoring Network - consists of moisture sensors for
public/municipal trees, designed to reduce the mortality of saplings and improve
urban reforestation outcomes.</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=cFhvWSK0l2M" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/cFhvWSK0l2M/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><STRONG><U>2nd
Place:<A href="https://devpost.com/software/air_quality_bonanza" target="_blank"
rel="noopener"> Air Quality Dashboard Analytics</A></U></STRONG></FONT></P>
<P>Created by: Tarun Hari, William Short, Michael Huang, Martin Fabbri</P>
<P>Empowered by the Azure Maps and IoT Platforms, the Air Quality Dashboard
Analytics deliver actionable insights to citizens, homeowners, and cities. Think
Trulia's crime maps, but for Air Quality!</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=uzA7f0Z_o9A" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/uzA7f0Z_o9A/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><STRONG><U>3rd
Place:<A href="https://devpost.com/software/aquasave-ey6f2u" target="_blank"
rel="noopener"> AquaSave</A></U></STRONG></FONT></P> <P>Created by: Aparna
Ghantasala, Alexandra Talsky, Praveen Chandra, Ryan Curtis, Amarnath
Tadigadapa</P> <P>Motivating people to recycle water and minimize water
consumption, so that communities can work towards a water-positive future.</P>
<P>&nbsp;</P> <P><LI-VIDEO vid="https://www.youtube.com/watch?v=61w27Fo2slQ"
align="center" size="small" width="200" height="113" uploading="false"
thumbnail="http://i.ytimg.com/vi/61w27Fo2slQ/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT
size="5"><STRONG><U>Honorable Mentions</U></STRONG></FONT></P> <P><FONT
size="5"><U><STRONG><A href="https://devpost.com/software/hydrofarm"
target="_blank" rel="noopener">HydroFarm</A></STRONG></U></FONT></P> <P>Created
by: Germaine Ng, Wesley Muthemba, Yifei Fang, Guanting Li, Hernan Herrera</P>
<P>About 70 percent of all the world's freshwater withdrawals go towards
irrigation uses. HydroFarm aims to improve water use efficiency without
decreasing yield.</P> <P>&nbsp;</P> <P><A
href="https://devpost.com/software/the-smart-valve-2049" target="_blank"
rel="noopener"><FONT size="5"><STRONG><U>The Smart Valve
2049</U></STRONG></FONT></A></P> <P>Created by: Derek Jamison, Brian Dinh</P>
<P>State-of-the-art water management using Azure IoT Central, Azure Logic Apps,
Web APIs &amp; Raspberry Pi (plus sensors). Your outdoor plants are watered
based on needs (moisture, weather, forecast, etc).</P> <P>&nbsp;</P> <P><A
href="https://devpost.com/software/foodcy-v2fi8k" target="_blank"
rel="noopener"><FONT size="5"><STRONG><U>Foodcy</U></STRONG></FONT></A></P>
<P>Created by: Miko Aro</P> <P>Foodcy app connects local businesses like
bakeries and supermarkets with residents and local shelters so they can reduce
surplus food. It also uses AI technology to reduce food waste in the
kitchen.</P> <P>&nbsp;</P> <P><U><STRONG><FONT size="5">Thank
You</FONT></STRONG></U></P> <P>On behalf of the Microsoft U.S. Azure team, I'd
like to thank all of the participants, and congratulate the winners on a job
well done!</P> <P>&nbsp;</P> <P>Thank you to the judges who volunteered their
time to give back to the community! Shout out to <STRONG>Amit Agrawal</STRONG>
<LI-USER uid="50703"></LI-USER>&nbsp;, <STRONG>Diana Phillips</STRONG>,
<STRONG>Lucio Tiberi</STRONG>, <STRONG>Monica Rodriquez</STRONG>, <STRONG>Pamela
Cortez</STRONG> <LI-USER uid="263511"></LI-USER>&nbsp;, <STRONG>Rae
Lyon</STRONG> <LI-USER uid="685674"></LI-USER>&nbsp;, <STRONG>Sarah
Maston</STRONG>&nbsp;<LI-USER uid="153349"></LI-USER>&nbsp;</P> <P>&nbsp;</P>
<P><U><STRONG><FONT size="5">Coming up</FONT></STRONG></U></P> <P>Don't miss out
on future hackathon events! Sign up for the <A
href="https://azure.microsoft.com/en-us/resources/join-the-azure-developer-community/"
target="_blank" rel="noopener">Microsoft.Source Newsletter</A> to receive a
regular digest of relevant technical content, events, and training.</P>
<P>&nbsp;</P> Wed, 21 Jul 2021 21:55:41 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-iot-hack-for-sustainability/ba-p/2573056
NinaSui 2021-07-21T21:55:41Z New LEARN modules: Write your first code in F#,
Write your first F# programs
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learn-modules-write-your-first-code-in-f-write-your-first-f/ba-p/2569795
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screenshot 2021-07-21 at 11.42.54.png" style="width: 747px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297341i627E194D17ACB625/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-07-21 at 11.42.54.png" alt="Screenshot
2021-07-21 at 11.42.54.png" /></span></P> <P>F# is an open-source,
cross-platform programming language that makes it easy to write succinct,
performant, robust, and practical code.</P> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#%C2%A0references"
target="_blank" rel="noopener" name="%C2%A0references"></A>References</H2>
<P>&nbsp;</P> <UL> <LI><STRONG>LEARN module</STRONG><SPAN>&nbsp;</SPAN>The first
F# module of many was just published on LEARN, check it out<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-steps/"
target="_blank">Take your first steps with F#</A></LI> <LI><STRONG>LEARN
module</STRONG><SPAN>&nbsp;</SPAN>The second module just
published.<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-program/"
target="_blank">Write your first F# programs</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/dotnet/fsharp/" target="_blank">F#
docs</A></LI> </UL> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#%C2%A0why-f"
target="_blank" rel="noopener" name="%C2%A0why-f"></A>&nbsp;</H2> <H2>Why
F#?</H2> <P>There are many language features and aspects of the F# language that
make it easy to be productive when writing code:</P> <UL>
<LI><STRONG>Succinct</STRONG>: You write less code with F# that's also expressed
in a clear manner.</LI> <LI><STRONG>Performant</STRONG>: F# comes with built-in
parallelism and concurrency. It also uses the fact that it's part of the .NET
runtime to speed things up.</LI> <LI><STRONG>Robust</STRONG>: There are language
constructs that makes the code fault tolerant and robust like immutable by
default, null value management and more.</LI> <LI><STRONG>Supports multiple
programming paradigms</STRONG>: F# lets you choose the patterns and practices
most effective for solving problems by providing strong support for functional
and object programming paradigms.</LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#how-do-i-get-started"
target="_blank" rel="noopener" name="how-do-i-get-started"></A>How do I get
started?</H2> <P>There are a few things you need to get started.</P> <UL>
<LI><STRONG>.NET SDK</STRONG>. You need to install the .NET SDK to be able to
buiild, run, test and also create F# projects. You can find
the<SPAN>&nbsp;</SPAN><A href="https://dotnet.microsoft.com/download"
target="_blank" rel="noopener">F# SDK install</A><SPAN>&nbsp;</SPAN>here</LI>
<LI><STRONG>Ionide</STRONG>. It's a VS Code plugin. It's not necessary to
install, but it will give you things like Intellisense, tooltips, codelens,
error highlight and more.</LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#your-first-code"
target="_blank" rel="noopener" name="your-first-code"></A>Your first code</H2>
<P>You can start writing F# by using the REPL called FSI, you can also scaffold
an F# project using
the<SPAN>&nbsp;</SPAN><CODE>dotnet</CODE><SPAN>&nbsp;</SPAN>executable.</P>
<H3><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#create-a-project"
target="_blank" rel="noopener" name="create-a-project"></A>Create a project</H3>
<P>You create a project
using<SPAN>&nbsp;</SPAN><CODE>dotnet</CODE><SPAN>&nbsp;</SPAN>like so:</P>
<P>&nbsp;</P> <LI-CODE lang="bash">dotnet new console --language F# -o
MyFSharpApp</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>Then you get a project with
files:</P> <UL> <LI><STRONG>Program.fs</STRONG>, your entrypoint file</LI>
<LI><STRONG>MyFSharpApp.csproj</STRONG>, your project file that contains
everything it needs to know to build the project like dependencies for
example.</LI> </UL> <H3><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#what-does-the-code-look-like"
target="_blank" rel="noopener" name="what-does-the-code-look-like"></A>What does
the code look like?</H3> <P>Here you have the code
of<SPAN>&nbsp;</SPAN><EM>Program.fs</EM>. Itt contains the
functions<SPAN>&nbsp;</SPAN><CODE>from()</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>main()</CODE>.<SPAN>&nbsp;</SPAN><CODE>main()</CODE><SPAN>&nbsp;</SPAN>is
the entry point of the app, as seen
by<SPAN>&nbsp;</SPAN><CODE>[&lt;EntryPoint&gt;]</CODE>.</P> <P>&nbsp;</P>
<LI-CODE lang="fsharp">open System // Define a function to construct a message
to print let from whom = sprintf "from %s" whom [&lt;EntryPoint&gt;] let main
argv = let message = from "F#" // Call the function printfn "Hello world %s"
message 0 // return an integer exit code</LI-CODE> <P>&nbsp;</P>
<P>The<SPAN>&nbsp;</SPAN><CODE>from()</CODE><SPAN>&nbsp;</SPAN>function takes
the arg<SPAN>&nbsp;</SPAN><CODE>whom</CODE><SPAN>&nbsp;</SPAN>and the function
body prints a string using the
function<SPAN>&nbsp;</SPAN><CODE>sprintf</CODE>.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#how-do-i-learn-more"
target="_blank" rel="noopener" name="how-do-i-learn-more"></A>How do I learn
more?</H2> <P>&nbsp;</P> <UL> <LI><STRONG>LEARN
module</STRONG><SPAN>&nbsp;</SPAN>The first F# module of many was just published
on LEARN, check it out<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-steps/"
target="_blank">Take your first steps with F#</A></LI> <LI><STRONG>LEARN
module</STRONG><SPAN>&nbsp;</SPAN>The second module just
published.<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-program/"
target="_blank">Write your first F# programs</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/dotnet/fsharp/" target="_blank">F#
docs</A></LI> </UL> Fri, 23 Jul 2021 10:36:18 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learn-modules-write-your-first-code-in-f-write-your-first-f/ba-p/2569795
Chris_Noring 2021-07-23T10:36:18Z An Illustrated Guide to Fusion Development
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-illustrated-guide-to-fusion-development/ba-p/2567146
<P><FONT size="5">1. Introduction<BR /></FONT></P> <P><FONT size="4">If you've
attended any flagship Microsoft event, you've likely heard CEO Satya Nadella
talk about&nbsp;<STRONG>Tech Intensity</STRONG> and the importance
of&nbsp;<STRONG>Fusion teams&nbsp;</STRONG>for digital transformation at scale.
But what do those words mean? And how does this relate to concepts
like&nbsp;<STRONG>low-code development</STRONG> and related technologies
like&nbsp;<STRONG>Power Platform</STRONG>? Here are three resources that can
help you learn:<BR /><BR /></FONT></P> <OL> <LI><FONT size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development Learning Path</A></STRONG>&nbsp;- takes you
from concepts (fusion teams, low code) to code (Power Apps components,
OpenAPI-enabled Web APIs, integration with API Management and usage in Power
Apps) with hands-on exercises and knowledge checks.</FONT></LI> <LI><FONT
size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development e-Book</A></STRONG> - a guide that summarizes
how fusion teams (of citizen developers and professional developers) can work
together to build complex, fully-functional business applications using low-code
development techniques, and combining Power Apps with Azure
services.</FONT></LI> <LI><FONT size="4"><STRONG><A
href="https://aka.ms/AzureFunctionsOnDemand" target="_self">Azure Functions:
OpenAPI and Power Platforms Event</A>&nbsp;</STRONG>- a 2-hour live-streamed
event with sessions covering core concepts (Power Apps, Power Fx, OpenAPI, Azure
Functions) with interactive demos showcasing useful integrations for a fusion
development workflow. Click below to visit the event page and watch the session
replays!<BR /><BR /><A href="https://aka.ms/AzureFunctionsOnDemand"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="AzureFunctionsEventSessions.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297177i47090CD07E885E10/image-size/large?v=v2&amp;px=999"
role="button" title="AzureFunctionsEventSessions.png"
alt="AzureFunctionsEventSessions.png" /></span></A></FONT></LI> </OL>
<P>&nbsp;</P> <P><FONT size="5">2. An Illustrated Guide to Fusion
Development</FONT></P> <P>&nbsp;</P> <P><FONT size="4">If you're a visual or
visual-spatial learner, you might find it helpful to get "the big picture"
before you dive into the step-by-step progression of the learning paths. So
today, I want to share one more resource that can help in this context -- this
illustrated guide that visually summarizes the&nbsp;<STRONG><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development Learning Path</A>.</STRONG>&nbsp;</FONT></P>
<P><FONT size="4"><BR /><A
href="https://aka.ms/visual/fusion-dev-path/illustrated" target="_blank"
rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="VisualGuide-FusionDevPath-DevTo.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297178i84E63E8EECAF3991/image-size/large?v=v2&amp;px=999"
role="button" title="VisualGuide-FusionDevPath-DevTo.png"
alt="VisualGuide-FusionDevPath-DevTo.png" /></span></A></FONT></P> <P>&nbsp;</P>
<P><FONT size="4">&nbsp;Click on the image to get access to a <A
href="https://aka.ms/visual/fusion-dev-path/illustrated"
target="_self">higher-resolution (poster-sized) version</A> of the guide that
can be printed out or used as desktop wallpaper. </FONT></P> <P>&nbsp;</P>
<P><FONT size="5">3. Using The Illustrated Guide on your learning
journey</FONT></P> <P><SPAN style="font-size: large; font-family: inherit;"><BR
/>Use this guide as a pre-read (to get a sense of terms, topics and
flow&nbsp;</SPAN><STRONG style="font-size: large; font-family:
inherit;">before</STRONG><SPAN style="font-size: large; font-family: inherit;">
you start the learning path. Then revisit the guide&nbsp;</SPAN><STRONG
style="font-size: large; font-family: inherit;">after</STRONG><SPAN
style="font-size: large; font-family: inherit;"> completing the path, to
identify any gaps and reinforce learned concepts. </SPAN></P> <P>&nbsp;</P>
<P><SPAN style="font-size: large; font-family: inherit;">Every cell in this
illustration maps to a related unit or module within that learning path. By
checking out the visual before and after you complete the relevant section, you
might find yourself making connections or seeing patterns that help you remember
that concept better, or see it in a new perspective. <STRONG>For
instance:&nbsp;</STRONG>look at the examples below.</SPAN><BR /><BR /></P>
<TABLE border="1" width="100%"> <TBODY> <TR> <TD width="50%"> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="TechIntensity.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297185i6C1817C2C1E0F3C1/image-size/large?v=v2&amp;px=999"
role="button" title="TechIntensity.png" alt="TechIntensity.png" /></span></P>
<P>&nbsp;</P> </TD> <TD width="50%"> <P><STRONG><FONT size="4">What is Tech
Intensity?</FONT></STRONG></P> <P><FONT size="4">It's about three dimensions
(organizational trust, individual capability &amp; technological readiness) that
signal successful&nbsp;<EM>adoption</EM> of technology to power digital
transformation.</FONT></P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/transform-business-software-authoring-with-fusion-dev/2-tech-intensity?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> <TR> <TD width="50%"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="FusionDevProcess.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297184iC478E79A4FB62458/image-size/large?v=v2&amp;px=999"
role="button" title="FusionDevProcess.png" alt="FusionDevProcess.png"
/></span></TD> <TD width="50%"> <P><STRONG><FONT size="4">What is Fusion
Development?</FONT></STRONG></P> <P><FONT size="4">It's about breaking the silos
between citizen devs and professional devs, enabling them to work closely
together to build apps that solve real business needs or challenges.</FONT></P>
<P><A
href="https://docs.microsoft.com/en-us/learn/modules/transform-business-software-authoring-with-fusion-dev/4-fusion-development-process?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> <TR> <TD width="50%"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="LowCode.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297186iEDA3C6D214CBC7B1/image-size/large?v=v2&amp;px=999"
role="button" title="LowCode.png" alt="LowCode.png" /></span></TD> <TD
width="50%"> <P><STRONG><FONT size="4">What is Low Code?</FONT></STRONG></P>
<P><FONT size="4">It's about removing barriers and enabling more actions with
less code (e.g., using drag-and-drop UI, scripting languages, declarative
interfaces etc.) - so that&nbsp;<EM>anyone</EM> on the team can contribute
meaningfully to their app development process.</FONT></P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/understanding-low-code-as-a-traditional-developer/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> <TR> <TD width="50%"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="power-apps.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297183iFBCFF6B8E5E60EB7/image-size/large?v=v2&amp;px=999"
role="button" title="power-apps.png" alt="power-apps.png" /></span></TD> <TD
width="50%"> <P><STRONG><FONT size="4">What is Power Apps?</FONT></STRONG></P>
<P><FONT size="4">Part of the Power Platforms product suite, it enables citizen
developers to rapidly build mobile and web apps, while pro-devs can craft custom
APIs, data connectors, and event-driven workflows - to support their fusion team
development process.</FONT></P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/understanding-low-code-as-a-traditional-developer/2-what-is-low-code?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P>
<P><FONT size="5"><BR />4. Summary<BR /></FONT></P> <P><FONT size="4">Thanks for
reading! I hope you find this illustrated guide useful to you in your learning
journey - as a citizen developer or professional developer exploring fusion
development, or just as a curious technologist eager to learn about emerging
technologies and paradigms.</FONT></P> <P>&nbsp;</P> <P><FONT size="4">Have
feedback for me in what could make the illustrations better for your learning
style? Leave a comment below! I would love to hear from you. Want more visual
guides and visual storytelling content - <A
href="https://twitter.com/sketchthedocs" target="_blank" rel="noopener">follow
me&nbsp;</A>@SketchTheDocs.<BR /><BR />And don't forget to check out these three
resources to skill up on Fusion Development:<BR /></FONT></P> <OL> <LI><FONT
size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development Learning Path</A></STRONG>&nbsp;</FONT></LI>
<LI><FONT size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development e-Book </A></STRONG> </FONT></LI> <LI><FONT
size="4"><STRONG><A href="https://aka.ms/AzureFunctionsOnDemand"
target="_self">Azure Functions: OpenAPI and Power Platforms
Event</A>&nbsp;&nbsp;</STRONG>(session replays)</FONT></LI> </OL> <P><FONT
size="4">Happy learning trails!</FONT></P> <P>&nbsp;</P> Tue, 20 Jul 2021
22:09:34 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-illustrated-guide-to-fusion-development/ba-p/2567146
nityan 2021-07-20T22:09:34Z New module: Introduction to testing in .NET
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-introduction-to-testing-in-net/ba-p/2567743
<P>Testing is crucial part of software development. We want to make sure the
software we ship is as tested as much as possible. However, there are many ways
to test, and the scenario and the application is usually what determines what
the best approach is. Upskill your testing knowledge and get a good high-level
view of all types of testing that exist, so you are better informed how to
approach testing for your next program - cause you do test right?</P>
<P>&nbsp;</P> <P>This module covers:</P> <P>&nbsp;</P> <UL> <LI>Evaluate if
testing is right for your scenarios.</LI> <LI>Describe how different types of
testing, the testing pyramid, and different testing schools of thought answer
the demands of modern development.</LI> </UL> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screenshot 2021-07-20 at 21.15.57.png" style="width: 869px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297160i7FD40D3597FAE6FE/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-07-20 at 21.15.57.png" alt="Screenshot
2021-07-20 at 21.15.57.png" /></span></P> <P>Check it out: <A
href="https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-concepts/"
target="_self">https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-concepts/</A></P>
Tue, 20 Jul 2021 20:21:15 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-introduction-to-testing-in-net/ba-p/2567743
Chris_Noring 2021-07-20T20:21:15Z Hardening an ASP.NET container running on
Kubernetes
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hardening-an-asp-net-container-running-on-kubernetes/ba-p/2542224
<P>In my day to day job, I often stumbled upon a surprising fact: many ASP.NET
Core (or .NET 5) K8s deployments are too permissive when it comes to the
execution context. Basically, most deployments are not hardened properly, and I
see countless ASP.NET containers running as root. Admitedly, there is a lack of
guidance from Microsoft in that matter. At the time of writing, I challenge you
to find a single source of truth (feel free to add it in comment if I missed
any), <EM>endorsed by Microsoft</EM> on how to to harden an ASP.NET Docker
image. You'll rather stumble upon GitHub issues and questions here and
there.</P> <P>As you know, ASP.NET relies on the built-in Kestrel web server and
most ASP.NET applications are either MVC, either Web APIs, meaning that they are
unlikely going to leverage operating system level capabilities that require high
privileges.</P> <P>That said, if you take the simplest ASP.NET web API project
and choose the default Visual Studio 2019 template, you'll end up with the
following Dockerfile:</P> <P>&nbsp;</P> <LI-CODE lang="bash">FROM
mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE
80 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY
["simpleapi/simpleapi.csproj", "simpleapi/"] RUN dotnet restore
"simpleapi/simpleapi.csproj" COPY . . WORKDIR "/src/simpleapi" RUN dotnet build
"simpleapi.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet
publish "simpleapi.csproj" -c Release -o /app/publish FROM base AS final WORKDIR
/app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "simpleapi.dll"]
</LI-CODE> <P>&nbsp;</P> <P>If you build an image and run this, you must run it
as root. If you don't, by requesting it specifically in your deployment through
a securityContext:</P> <P>&nbsp;</P> <LI-CODE lang="bash">securityContext:
runAsNonRoot: true </LI-CODE> <P>&nbsp;</P> <P>You'll encounter the following
issue:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="stephaneey_0-1626175023077.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295431i6148D566A5AD1758/image-size/medium?v=v2&amp;px=400"
role="button" title="stephaneey_0-1626175023077.png"
alt="stephaneey_0-1626175023077.png" /></span></P> <P>Describing the pod with
Kubectl quickly shows that the container tried to start as root:</P>
<P>&nbsp;</P> <LI-CODE lang="bash">Warning Failed 94s (x8 over 2m53s) kubelet,
aks-agentpool-38789445-vmss000001 Error: container has runAsNonRoot and image
will run as root</LI-CODE> <P>&nbsp;</P> <P>What K8s tells you is that the image
wants to start as root because no other user has been defined, so it defaults to
root. But, because you explicitely added a <EM>runAsNonRoot</EM> instruction, it
can't start it. Never mind, just specify a user and it should work, right? Let's
try:</P> <P>&nbsp;</P> <LI-CODE lang="bash">securityContext: runAsNonRoot: true
runAsUser: 1000 runAsGroup: 2000</LI-CODE> <P>&nbsp;</P> <P>By the way, if you
wonder, when no user is specified in the Docker image itself or through a
securityContext, user 0 is assumed and 0 stands for root. Linux needs to have a
user identifier (not name) as an input. Trying with the above config results in
another error:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="stephaneey_1-1626175696989.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295432iD0C4482CA431535E/image-size/medium?v=v2&amp;px=400"
role="button" title="stephaneey_1-1626175696989.png"
alt="stephaneey_1-1626175696989.png" /></span></P> <P>This time it goes further
as the container starts, crashes and restarts. Looking at the container logs
with Kubectl logs reveals the problem (shortened for brevity):</P> <P>&nbsp;</P>
<LI-CODE lang="bash">←[41m←[1m←[37mcrit←[39m←[22m←[49m:
Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel.
System.Net.Sockets.SocketException (13): Permission denied</LI-CODE>
<P>&nbsp;</P> <P>This could make you think that being root is required to start
Kestrel but that is not the culprit. The problem is the port number it tries to
bind to, which in the default image, is either 80 either 443. Both ports are
below 1024 and today, you must be <EM>root</EM> to bind to a port that is &lt;
1024. In Linux, the alternative to bind to a low port while not being root is to
use Linux capabilities. However, ambient capabilities <A
href="https://github.com/kubernetes/kubernetes/issues/56374" target="_self">are
still not available</A> in K8s. So, first take away is: do not use port 80 or
443 in your ASP.NET Core images. Whatever setup you are using, I don't see how
you could justify to bind to either of these ports. Most webapps/APIs are:</P>
<UL> <LI>Proxied by a K8s Service which can listen to 80 and forward to 8080 for
example, same with 443 of course</LI> <LI>Proxied by a sidecar container, which
is part of a service mesh or solutions such as Dapr. Here again, the proxy can
easily fallback to 8080 or 4433</LI> </UL> <P>So, I see no reason to stick to
these ports. Therefore, the first thing to do is to pick another bunc of ports,
right in the DockerFile. So, for example, you can simply achieve this with the
following instructions in the Dockerfile (the same applies to 443 and TLS):</P>
<P>&nbsp;</P> <LI-CODE lang="bash">EXPOSE 8080 ENV
ASPNETCORE_URLS=http://*:8080</LI-CODE> <P>&nbsp;</P> <P>When changing the
default port, you also need to instruct ASP.NET (core in this example) about it
through an environment variable. Adding those two lines to our former DockerFile
and deploying it with the above <EM>securityContext</EM> will result in an up
and running ASP.NET container running as non-root. To enforce non-root, you may
even do it right from the Dockerfile itself, yet, using another bunch of Docker
instructions:</P> <P>&nbsp;</P> <LI-CODE lang="bash">RUN addgroup --group
friendlygroupname --gid 2000 \ &amp;&amp; adduser \ --uid 1000 \ --gid 2000 \
"friendlyusername" RUN chown friendlyusername:friendlygroupname /app USER
friendlyusername:friendlygroupname </LI-CODE> <P>&nbsp;</P> <P>If you build and
push the new Docker image and redeploy it, you will have an up and running
ASP.NET container, running with its own user and group objects.&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="stephaneey_0-1626176706154.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295435i61AC98E75C70C958/image-size/medium?v=v2&amp;px=400"
role="button" title="stephaneey_0-1626176706154.png"
alt="stephaneey_0-1626176706154.png" /></span></P> <P>This approach is even
preferred because even if you ommit the security context in the K8s deployment,
the container will be started with the user and group specified in the image,
meaning as a rootless container. But is it enough to consider this hardened?
Well, we are in a much better situation than with the default image because:</P>
<UL> <LI>The non-root user will be restricted even if the container itself is
privileged in the K8s deployment (which should never be the case of an ASP.NET
app by the way)</LI> <LI>The non-root user will be restricted in the container
itself. For example, installing extra packages through <EM>apt-get</EM> will be
denied, which could make it harder to setup tools in a remote code execution
attack. By the way, the default ASP.NET base image does not ship with many
tools, which makes it harder (good thing) to discover and run attacks. If on top
of it, you make sure that no extra tools can be installed, you're already
preventing most attacks.</LI> </UL> <P>But, we can do even more than this. For
example, depending on the ASP.NET distrib you work with, curl might be available
in the container, facilitating attacks such as downloading a binary or shell
file from a remote endpoint. Of course, you should always make sure that the
<EM>egress</EM> traffic is controlled correctly, which goes beyond the
management of the container itself. However, such attacks could not be done in a
read-only file system because the binary/archive/shell could not be stored
locally in the container. So, we might be tempted to add another line to our
securityContext:</P> <P>&nbsp;</P> <LI-CODE lang="bash">readOnlyRootFilesystem:
true</LI-CODE> <P>&nbsp;</P> <P>Which will cause the container to fail at
startup. In the logs you'll find:</P> <P>&nbsp;</P> <LI-CODE lang="bash">Failed
to create CoreCLR, HRESULT: 0x80004005</LI-CODE> <P>&nbsp;</P> <P>And that is
because you should disable some debugging telemetry setting in the Dockerfile by
adding an extra ENV statement:</P> <P>&nbsp;</P> <LI-CODE lang="basic">ENV
COMPlus_EnableDiagnostics=0</LI-CODE> <P>&nbsp;</P> <P>Note that it depends on
the base image (ASP.NET version) you use and it is still debated whether ASP.NET
runs smoothly or not on a read-only filesystem. You might have edge cases where
the system needs to buffer "stuff" on the filesystem. So, use it with caution
and make sure you spot any potential issue during your integration tests.</P>
<P>Last but not least and because it never hurts, you should always drop all
capabilities by default (full securityContext for clarity):</P> <P>&nbsp;</P>
<LI-CODE lang="bash">runAsNonRoot: true runAsUser: 1000 runAsGroup: 2000
allowPrivilegeEscalation: false privileged: false readOnlyRootFilesystem: true
capabilities: drop: - all</LI-CODE> <P>&nbsp;</P> <P>Because if you don't bind
to a low port, you will not even need NET_BIND_SERVICE and because should you
still run a container as root, dropping all these capabilities will still
prevent root from leveraging some system capabilities, making it harder for an
attacker to harm your environment. Of course, if you are running edge cases, you
may add <A
href="https://github.com/torvalds/linux/blob/master/include/uapi/linux/capability.h"
target="_self">some capabilities</A> as needed, but removing all by default
sounds like a good idea.&nbsp;</P> <P>Is that all? Well, no! There is still
something that help harden not the image, but the container itself. You should
always define resource requests and limits to make sure a single container
cannot take up all CPU and Memory of the node it runs on. That will also help
you detect unexpected memory leaks.</P> Tue, 13 Jul 2021 17:11:51 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hardening-an-asp-net-container-running-on-kubernetes/ba-p/2542224
stephaneey 2021-07-13T17:11:51Z IoT for Beginners, curriculum
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/iot-for-beginners-curriculum/ba-p/2533895
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="MicrosoftTeams-image.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293187i882CF1EF57FD59F2/image-size/large?v=v2&amp;px=999"
role="button" title="MicrosoftTeams-image.png" alt="MicrosoftTeams-image.png"
/></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>It is our very great pleasure to
announce the release of a new, free, MIT-licensed open-source curriculum all
about the Internet of Things: <A href="https://aka.ms/iot-beginners"
target="_blank" rel="noopener">IoT for Beginners</A>. Brought to you by a team
of Azure Cloud Advocates, Program Managers, and <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=academic-17441-jabenn"
target="_blank" rel="noopener">Microsoft Learn Student Ambassadors</A>, we hope
to empower students of all ages to learn the basics of IoT. Presuming no
knowledge of IoT, we offer a free 12-week, 24-lesson curriculum to help you dive
into this amazing field.</P> <P>&nbsp;</P> <P>If you liked our first two
curricula, <A href="https://aka.ms/webdev-beginners" target="_blank"
rel="noopener">Web Dev for Beginners</A> and <A
href="https://aka.ms/ml-beginners" target="_blank" rel="noopener">Machine
Learning for beginners</A>, you will love IoT for Beginners!</P> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#join-us-on-the-journey-of-your-food-from-farm-to-table"
target="_blank" rel="noopener"
name="join-us-on-the-journey-of-your-food-from-farm-to-table"></A>Join us on the
journey of your food, from farm to table!</H2> <P>&nbsp;</P> <P>Join us as we
take the same journey as your food as it travels from farm to table, taking
advantage of IoT on the way to improve farming, transport, manufacturing and
food processing, retail and smart homes.</P> <P>&nbsp;</P> <P>Our curricula are
structured with a modified Project-Based pedagogy and include:</P> <P>&nbsp;</P>
<UL> <LI>a pre-lesson warmup quiz</LI> <LI>a written lesson</LI> <LI>video</LI>
<LI>knowledge checks</LI> <LI>a project to build</LI> <LI>infographics,
sketchnotes, and visuals</LI> <LI>a challenge</LI> <LI>an assignment</LI> <LI>a
post-lesson quiz</LI> <LI>opportunities to deepen your knowledge on Microsoft
Learn</LI> </UL> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#what-will-you-learn"
target="_blank" rel="noopener" name="what-will-you-learn"></A>What will you
learn?</H2> <P>&nbsp;</P> <DIV id="tinyMceEditorChris_Noring_0"
class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P>
<P><A
href="https://github.com/microsoft/IoT-For-Beginners/blob/main/sketchnotes/Roadmap.jpg"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Roadmap.jpg" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294143iE08C947DD69E5E51/image-size/large?v=v2&amp;px=999"
role="button" title="Roadmap.jpg" alt="Roadmap.jpg" /></span></A></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>The lessons are grouped so that you can deep-dive
into use cases of IoT. We start with an introduction to IoT, covering devices,
sensors, actuators and cloud connectivity, where you will build an internet
connected version of the "Hello world" or IoT, an LED. We then move on to
farming, learning about digital agriculture and feedback loops to control
automated watering systems. Your food then leaves the farm on trucks, and you
learn how to track vehicles using GPS, visualize their journeys and get alerts
when a truck approaches a processing plant. Once in the plant, we move to AIoT,
learning how to distinguish between ripe and unripe fruit using AI models
running from IoT devices and on the edge. Next we move to the supermarket, using
IoT to manage stock levels. Finally we take the food home to cook, and learn
about consumer smart devices, building a voice controlled smart timer that can
even speak multiple languages.</P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#hardware"
target="_blank" rel="noopener" name="hardware"></A>Hardware</H2> <P>&nbsp;</P>
<P>The hard part (pun intended) for IoT is hardware, so we've designed this
curriculum to be as accessible as possible. We want you to Learn IoT, not learn
how to solder, know how to read resistor color codes, or know what a microfarad
is, so we've made hardware choices to make things easier.</P> <P>&nbsp;</P>
<P>You can choose to learn using microcontrollers using Arduino with a <A
href="https://www.seeedstudio.com/Wio-Terminal-p-4509.html" target="_blank"
rel="noopener">Wio Terminal</A>, or single board computers using a <A
href="https://www.raspberrypi.org/products/raspberry-pi-4-model-b/"
target="_blank" rel="noopener">Raspberry Pi</A>. We've also added a virtual
hardware option so you can learn without having to purchase anything!</P>
<P>&nbsp;</P> <P>For sensors and actuators, we've gone with the <A
href="https://www.seeedstudio.com/category/Grove-c-1003.html" target="_blank"
rel="noopener">Grove kit</A> from <A href="https://www.seeedstudio.com/"
target="_blank" rel="noopener">Seeed Studio</A>, with easy to connect sensors
and actuators.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="JimBennett_1-1625255958076.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293184iD7C16D337728ABB0/image-size/medium?v=v2&amp;px=400"
role="button" title="JimBennett_1-1625255958076.png"
alt="JimBennett_1-1625255958076.png" /></span></P> <P>&nbsp;</P> <P>Our friends
at Seeed have made it easy to buy the hardware, with packages containing all of
the kit you need.</P> <UL> <LI><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html"
target="_blank" rel="noopener">IoT for beginners with Seeed and Microsoft - Wio
Terminal Starter Kit</A></LI> <LI><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html"
target="_blank" rel="noopener">IoT for beginners with Seeed and Microsoft -
Raspberry Pi 4 Starter Kit</A></LI> </UL> <P>If you are interested in learning
using virtual hardware, you can write IoT code locally as if you were using a
Raspberry Pi, then simulate sensors and actuators using <A
href="https://github.com/CounterFit-IoT" target="_blank"
rel="noopener">CounterFit</A>, a free, open source tool for simulating
hardware.</P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#a-sneak-peek"
target="_blank" rel="noopener" name="a-sneak-peek"></A>A sneak peek</H2>
<P>&nbsp;</P> <P>This curriculum is filled with a lot of art, created by our
team. Take a look at this cool sketchnote created by <A class="mentioned-user"
href="https://dev.to/nitya" target="_blank" rel="noopener">@nitya</A> .</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="JimBennett_2-1625255958257.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293185i6B46F7DAD862A4F3/image-size/large?v=v2&amp;px=999"
role="button" title="JimBennett_2-1625255958257.png"
alt="JimBennett_2-1625255958257.png" /></span></P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#without-further-ado-please-meet-iot-for-beginners-a-curriculum"
target="_blank" rel="noopener"
name="without-further-ado-please-meet-iot-for-beginners-a-curriculum"></A>Without
further ado, please meet <A href="https://aka.ms/iot-beginners" target="_blank"
rel="noopener">IoT For Beginners: A Curriculum</A>!</H2> Tue, 13 Jul 2021
12:03:40 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/iot-for-beginners-curriculum/ba-p/2533895
Chris_Noring 2021-07-13T12:03:40Z Building a Cloud Native Lab at Home
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="accelerate.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293760iDAE4D393C7479C5E/image-size/large?v=v2&amp;px=999"
role="button" title="accelerate.png" alt="accelerate.png" /></span></P>
<P>&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Everyone loves a good home lab setup. The cloud is great, but buying
and installing hardware in the comfort of your own home is something one can get
addicted to :)</img></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Don't get me wrong&nbsp; - there are things I put straight into the
cloud without even considering self-hosting. Even though I have been an Exchange
Admin in a previous life I use Office 365, and I certainly trust OneDrive and
Azure File Storage more than the maintenance of my own RAID/NAS. But running 30
virtual machines ain't free and even if there is a cost to buying hardware it
might come up cheaper over time.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">The challenge is that these days you want things to
be as cloud native as they can. So, you don't want to install virtual machines
where you install a web server that you subsequently have to configure. And even
though you can install Docker on both Windows and Linux servers you want
something more sophisticated than individual containers.</P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">You want something like Kubernetes
with all the fixings. No, Kubernetes is not the perfect option that you always
want to use, but it's certainly something you should have hands-on experience
with these days. (I'm approaching this lab from the developer perspective.
Running VMs has been a solved problem for years.) Sure, there's options like
Service Fabric as well since we're dealing with the Microsoft tech stack, but
I'm not diving into that right now.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">If you set up an Ubuntu VM you can get going with
Microk8s in minutes, but why stop there?</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">Microsoft announced Azure Stack HCI AKS a few
months back, and it just went GA. (That's hyper-converged servers that can plug
into Azure and then you optionally put Azure Kubernetes Service on top.)</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">More info:</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/" target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">I felt that not
all my questions were easily answered in the docs. Do you need two nodes? What
does it cost? How much hardware at a minimum?</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN>Well, it's not like the docs are
bad, but they do kind of drive you towards a more enterprisey setup. The bigger
problem is that all the info you need is spread across a number of sections in
the docs and that's why I wanted a more complete set of instructions (while not
diving into all the technical details). So, inspired by what I could find on
docs.microsoft.com and </SPAN><A href="http://aka.ms/azurearcjumpstart"
target="_blank"
rel="noopener"><SPAN>h</SPAN><SPAN>ttp://aka.ms/azurearcjumpstart</SPAN></A><SPAN>&nbsp;as
well as an amount of testing and validation on my own I put together a little
guide for building this at home.</SPAN></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">If you want a "proper" cluster you need at least
two nodes (with the witness going in the cloud) , and you'll want 2 NVMe drives
+ 8 SSDs for Storage Spaces Direct. (Well, you probably want all NVMe if money
is no concern.) You'll probably want minimum 64 gigs of RAM in each box as
well.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Azure Stack HCI doesn't have an up-front cost, but it will set you back
10$ a month pr core at the current pricing. So, it adds up if you're on a
budget. And that does not include the licenses for any Windows VMs you run on
the cluster. You can trial it for free for 60 days so there's no risk testing it
though. It works nicely, but at the moment I don't feel it's quite worth it now
as many of the features are still "Coming Soon". Since there are new versions in
preview this might change in the future, so this is not a permanent evaluation
on my part.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Wait a moment, I first said "Azure Stack HCI AKS" and then "Azure Stack
HCI" without the AKS term. Was that a spelling error? No. The AKS part is an
additional installation after you get the HCI part working. (Which means that
HCI doesn't mean you must run Kubernetes. You can still do VMs in parallell.)
Azure Stack HCI is an operating system you install yourself so you can install
software on top of that. It shares a lot of the code base with Windows Server,
but with some tweaks to become a cloud-connected evergreen OS.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">You can however
skip the cluster part and go single node, and for the sake of it I tested the
latest build of Windows Server 2022 Preview instead of this purpose-built OS.
This works like a charm.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">For hardware I went with an HPE Microserver Gen 10 Plus with
32GB RAM and even if I stuffed in two SSDs I tested on a single HDD just to be
sure. Storage Spaces and/or RAID is a recommendation, but not a hard
prerequisite. (I can confirm the Microserver unofficially supports 64GB RAM as
well, but it's slightly expensive and tricky to chase down known good RAM
sticks.) You can certainly make it work on different bits of hardware too&nbsp;
- a configuration like this doesn't have to break your bank account in any way.
(I like the size of the Microserver as well as iLO, built in quad port NIC even
if it is just gigabit, etc.)</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">Righty, I managed to install an operating system&nbsp; - now
what? If you want a UI for management you're driven towards Windows Admin Center
(WAC) in general these days:</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;" lang="nb"><A
href="https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/overview"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/overview</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Azure Stack HCI
has the Server Core UI whereas with Windows Server 2022 you can still go full
desktop mode.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Note: This isn't an intro to Kubernetes as such; it's about getting a
specific wrapping of Kubernetes going. If you're a k8s veteran there are parts
you can skim through, and if you're new to container orchestration you might
want to research things in other places as well along the way. I try to hit a
middle ground here.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">There's an AKS plugin for WAC that in theory will let you set it up
through a wizard. I'm saying "theory" because I'm seeing inconsistency&nbsp; -
sometimes I get an unhelpful CredSSP or WinRM error thrown in the face, and
sometimes it works. And I'm not liking that. However, it is a great way to
install the Powershell cmdlets and have a quick look if things in general are
ok. (Screenshot from a two-node setup.)</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Windows Admin Center AKS Prereqs"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293775iAC028BBE06BF6571/image-size/medium?v=v2&amp;px=400"
role="button" title="aks_01.png" alt="Windows Admin Center AKS Prereqs" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">Windows Admin
Center AKS Prereqs</span></span></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">There's a quick start for using the Windows Admin
Center (WAC) to set things up here:</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;" lang="nb"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/setup"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/setup</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">And for PowerShell
here (you can install everything without involving WAC):</P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;" lang="nb"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/kubernetes-walkthrough-powershell"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/kubernetes-walkthrough-powershell</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Step 2 &amp; 3 (in
PowerShell) is where things can get a little confusing. I did not feel the
parameters where sufficiently explained. An example of what I basically went
with follows. (I have a slightly different IP addressing scheme, but same same
in the bigger picture).</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">Assuming you have a 192.168.0.0/24 subnet, and have already
created a virtual switch on the server named "LAN". Let's say you use
192.168.0.2 - 192.168.0.99 (default gateway on .1) as your DHCP scope you'll
want to carve out a static space separately for AKS.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">You will want a range for the nodes,
and you will want a range for any load balancers you provision in the cluster.
(Adjust to account for your specifics.)</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <LI-CODE lang="powershell">$vnet =
New-AksHciNetworkSetting -name aksvnet -vSwitchName "LAN" -macPoolName
aksMacPool -k8sNodeIpPoolStart "192.168.0.101" -k8sNodeIpPoolEnd "192.168.0.110"
-vipPoolStart "192.168.0.111" -vipPoolEnd "192.168.0.120" -ipAddressPrefix
"192.168.0.0/24" -gateway "192.168.0.1" -dnsServers "192.168.0.1"
Set-AksHciConfig -vnet $vnet -imageDir C:\ClusterStorage\Volume01\Images
-cloudConfigLocation C:\ClusterStorage\Volume01\Config -cloudservicecidr
"192.168.0.100/24" Set-AksHciRegistration -subscriptionId "guid"
-resourceGroupName "rg-AKS" Install-AksHci -Verbose</LI-CODE> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">It might take a little while to
provision, but with a bit of luck it will go through. Don't worry about the
Azure registration&nbsp; - this does not incur a cost, but is used for Azure
Arc. (Azure Arc is a service for managing on-prem services from Azure and is not
specific to AKS.)</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">After installation of the host cluster you might want to run the <SPAN
style="font-style: italic;">Update-AksHci</SPAN> cmdlet in case you didn't get
the newest release on the first go. (I have experienced this.)</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">This takes care of
setting up the AKS host, but not the actual nodes for running workloads so you
will want to create that next. I went with Linux nodes, but you can create
Windows nodes as well if you like. This actually mirrors AKS hosted in Azure,
but things have been abstracted away slightly there so you might not think much
about this. (Which is OK.)</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">If you have a 32GB RAM server the <SPAN style="font-style:
italic;">New-AksHciCluster</SPAN> cmdlet without parameters will probably fail
since you don't have enough memory. And when scaling things down you'll also
want to account for upgrades&nbsp; - when upgrading the cluster a new instance
of each virtual machine is spun up in parallel requiring you to have enough
headroom for this. This should work:</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <LI-CODE
lang="powershell">New-AksHciCluster -Name aks01 -loadBalancerVmSize
"Standard_A2_v2" -controlplaneVmSize "Standard_A2_v2" -linuxNodeVmSize
"Standard_A2_v2"</LI-CODE> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><SPAN>(I attempted using "Standard_K8S_v1</SPAN><SPAN>" for
the worker node, but the memory peaked almost immediately resulting in a loop of
creating new nodes that were also underpowered and never getting to a fully
working state with the workloads described here.)</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">If you have 64GB or more you shouldn't
have to tweak this.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">You can upgrade your workload cluster to a newer Kubernetes version
independently of the host version. There are limits though&nbsp; - to run the
newest versions of Kubernetes on the nodes you may have to upgrade the host to a
newer version as well in some cases. Both clusters can be connected to Azure
with Arc, but the workload cluster is the most important one here.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Connect the
cluster you just created to Azure like this:</P> <LI-CODE
lang="powershell">Connect-AzAccount Enable-AksHciArcConnection -name
aks01</LI-CODE> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">At this point you should be good to verify things by putting some
containers inside the cluster if you like.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">I have a very simple frontend &amp;
backend setup here:</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="nb"><A href="https://github.com/ahelland/HelloFoo"
target="_blank" rel="noopener">https://github.com/ahelland/HelloFoo</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Since the images
are on Docker hub you only need the <SPAN style="font-style:
italic;">/k8s/HelloFoo.yaml</SPAN> if you don't feel like playing with the code
or build your own images.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">I wouldn't call it fancy by any means, but it consists of
two "microservices" you can test with a Kestrel-based image (dotnet run), Docker
and Kubernetes.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">While still on the server you can download kubectl as you will need
that to proceed:</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="nb"><SPAN style="font-style: italic;">curl </SPAN><A
href="https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe"
target="_blank" rel="noopener"><SPAN style="font-style:
italic;">https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe</SPAN></A><SPAN
style="font-style: italic;"> -Outfile kubectl.exe</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">You also need credentials to access
the cluster:</P> <LI-CODE lang="powershell">Get-AksHciCredential -name
aks01</LI-CODE> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Apply with <SPAN style="font-style: italic;">.\kubectl.exe apply -f
HelloFoo.yaml</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Then you can run <SPAN style="font-style: italic;">kubectl get -svc
-A</SPAN> to give you the IP address (from the load balancer range you
provided)</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">If you just want a plain cloud native setup you're done now. (You can
of course install <SPAN style="font-style: italic;">kubectl</SPAN> on your
desktop if you prefer.)</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">However I kinda like testing out "day 2" use cases as
well.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">GitOps and Flux is getting more popular as the option for installing
configuration and services.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">This is also slightly lacking in the docs. It's actually
quite simple (using the same repo):</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">Find the cluster through Azure Arc in the Azure
Portal and go to the GitOps blade and "Add configuration"</P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="GitOps/Flux" style="width: 582px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293782iB7F7A348FCBF3E09/image-size/large?v=v2&amp;px=999"
role="button" title="flux_01.png" alt="GitOps/Flux" /><span
class="lia-inline-image-caption"
onclick="event.preventDefault();">GitOps/Flux</span></span></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">For adding a
public GitHub repo (like mine) it looks like this, but it's also possible to add
private repos. Note the use of the git-path parameter to point to the right
folder (containing yaml):</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="GitOps/Flux" style="width: 612px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293783iDB597EA80B9F2B5B/image-size/large?v=v2&amp;px=999"
role="button" title="flux_02.png" alt="GitOps/Flux" /><span
class="lia-inline-image-caption"
onclick="event.preventDefault();">GitOps/Flux</span></span></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN>For more
background:<BR /></SPAN><A
href="https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/use-gitops-with-helm"
target="_blank"
rel="noopener"><SPAN>https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/use-gitops-with-helm</SPAN></A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Once you have this
working (you should probably have separate repos for config and apps) you can
just go at it in your editor of choice and check in the results to do a
roll-out. For an automated bootstrap scenario you can perform the setup with
PowerShell as well. Which basically means - a script does all the work of
setting up the Kubernetes cluster and then Git kicks in to deploy the
essentials.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Since we're at it we will of course need monitoring and tracing
abilities too. Azure Monitor is decent, but it does have a cost so if you're on
a budget either skip it or keep an eye on it so it doesn't run up a huge
bill.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">The combo of Prometheus and Grafana is a well known solution for
Kubernetes, and that's fairly easy to implement. Follow the instructions
here:</P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/monitor-logging"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/monitor-logging</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">First enable
Prometheus:</P> <LI-CODE lang="powershell">Install-AksHciMonitoring -Name aks01
-storageSizeGB 100 -retentionTimeHours 240</LI-CODE> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">To load the config for Grafana:</P>
<LI-CODE lang="powershell">kubectl apply -f
https://raw.githubusercontent.com/microsoft/AKS-HCI-Apps/main/Monitoring/data-source.yaml
kubectl apply -f
https://raw.githubusercontent.com/microsoft/AKS-HCI-Apps/main/Monitoring/dashboards.yaml</LI-CODE>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN>Then install
Grafana (which will use the data source and the dashbord from the previous two
yaml files). (Note that this requires the installation of Helm - </SPAN><A
href="https://helm.sh/docs/intro/install/" target="_blank"
rel="noopener"><SPAN>https://helm.sh/docs/intro/install/</SPAN></A>&nbsp;downloading
the zip and extracting should work on Windows Server.<SPAN>)</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<LI-CODE lang="powershell">helm repo add grafana
https://grafana.github.io/helm-charts helm repo update helm install grafana
grafana/grafana --version 6.11.0 --set nodeSelector."kubernetes\.io/os"=linux
--set sidecar.dashboards.enabled=true --set sidecar.datasources.enabled=true -n
monitoring</LI-CODE> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Retrieve the Grafana secret (and have it ready for logging in to the
dashboard afterwards):</P> <LI-CODE lang="powershell">kubectl get secret
--namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64
--decode ; echo</LI-CODE> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">(Note that the base64 option doesn't work on Windows, so you
would need to do that decode separately.)</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Grafana displaying Prometheus metrics" style="width: 432px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293784i065D1D3516B1587A/image-size/large?v=v2&amp;px=999"
role="button" title="Grafana_01.png" alt="Grafana displaying Prometheus metrics"
/><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Grafana displaying Prometheus
metrics</span></span></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P>There's one more thing we want to do in the
monitoring and diagnostics department, but a small digression first.</P>
<P>&nbsp;</P> <P>For a small lab at home it's not necessary to be super strict
with security and policies inside the cluster, but if you want to practice
production the term "service mesh" will come up. I'm not going to do a
comparison of those, but Istio, Linkerd and Consul are popular choices that
Microsoft provides instructions for as well:</P> <P><A
href="https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about</A></P>
<P>&nbsp;</P> <P>For more info on meshes you can also check out <A
href="https://meshery.io" target="_blank"
rel="noopener">https://meshery.io</A></P> <P>&nbsp;</P> <P>I wanted to test
"Open Service Mesh" as that is available as an add-on for AKS. I found these
instructions clearer:</P> <P><A
href="https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/tutorial-arc-enabled-open-service-mesh#install-arc-enabled-open-service-mesh-osm-on-an-arc-enabled-kubernetes-cluster"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/tutorial-arc-enabled-open-service-mesh#install-arc-enabled-open-service-mesh-osm-on-an-arc-enabled-kubernetes-cluster</A></P>
<P>&nbsp;</P> <P>Since I didn't want to bother with making sure I had the right
version of Azure Cli installed locally I just did it in Azure Cloud Shell
:)</img> (Point being that you don't need to be on-prem to perform this
step.)</P> <P>&nbsp;</P> <P>There is a snag at the time of writing this. The
instructions point to version 0.8.4, but I wanted to use 0.9.0 (newer) which
required me to use this cmdlet:</P> <LI-CODE lang="powershell">az k8s-extension
create --cluster-name aks01 --resource-group ARC-AKS-01 --cluster-type
connectedClusters --extension-type Microsoft.openservicemesh --scope cluster
--release-train staging --name osm --version 0.9.0</LI-CODE> <P>&nbsp;</P>
<P>Since I'm using OSM I will also follow the MS instructions for installing the
bookstore app:</P> <P><A
href="https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-windows#deploy-a-new-application-to-be-managed-by-the-open-service-mesh-osm-azure-kubernetes-service-aks-add-on"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-windows#deploy-a-new-application-to-be-managed-by-the-open-service-mesh-osm-azure-kubernetes-service-aks-add-on</A></P>
<P>&nbsp;</P> <P>Note that you should not use the instructions for Grafana and
Prometheus from this page - these instructions are for "cloud AKS" not "on-prem
AKS". (Prometheus will fail to run due to permissions issues.)</P> <P>&nbsp;</P>
<P>You can however use the yaml from this page to install&nbsp;a popular tracing
tool called Jaeger. Copy the yaml on the page and save to a file while adding
the namespace on top:</P> <P>&nbsp;</P> <LI-CODE lang="yaml">apiVersion: v1
kind: Namespace metadata: &nbsp; name: jaeger &nbsp; labels: &nbsp;&nbsp;&nbsp;
name: jaeger ---</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>And apply:</P>
<LI-CODE lang="powershell">kubectl apply -f jaeger.yaml</LI-CODE> <P>&nbsp;</P>
<P>Another quick note about the instructions here. It is referred to a configmap
for the settings - this is not used in 0.9.0 any more so to read the config you
will need to run the following command:</P> <LI-CODE lang="powershell">kubectl
get meshconfig osm-mesh-config -n arc-osm-system -o yaml</LI-CODE> <P>&nbsp;</P>
<P>We need to make two small adjustments (enable tracing and change the address
for Jaeger) to this meshconfig which can be done by patching the meshconfig:</P>
<LI-CODE lang="powershell">kubectl patch meshconfig osm-mesh-config -n
arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true,"address":
"jaeger.jaeger.svc.cluster.local","port":9411,"endpoint":"/api/v2/spans"}}}}'&nbsp;
--type=merge</LI-CODE> <P>&nbsp;</P> <P>On Windows you will probably see an
error about invalid json so you have to do an extra step:</P> <LI-CODE
lang="powershell">$jsonpatch =
'{"spec":{"observability":{"tracing":{"enable":true,"address":
"jaeger.jaeger.svc.cluster.local","port":9411,"endpoint":"/api/v2/spans"}}}}' |
ConvertTo-Json kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p
$jsonpatch --type=merge</LI-CODE> <P>&nbsp;</P> <P>More info:</P> <P><A
href="https://docs.openservicemesh.io/docs/concepts_features/osm_mesh_config/"
target="_blank"
rel="noopener">https://docs.openservicemesh.io/docs/concepts_features/osm_mesh_config/</A></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Jaeger" style="width: 993px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293785iC8B9C1E65AF01DE6/image-size/large?v=v2&amp;px=999"
role="button" title="jaeger_01.png" alt="Jaeger" /><span
class="lia-inline-image-caption"
onclick="event.preventDefault();">Jaeger</span></span></P> <P>&nbsp;</P> <P>For
testing you can port-forward to the pods and this makes sense for the bookstore
apps, but it's probably better to set up load balancers for this when you want
it more permanent so create a file like this to expose Grafana, Jaeger and
Prometheus:</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="yaml">apiVersion: v1
kind: Service metadata: namespace: monitoring name: grafana labels:
app.kubernetes.io/instance: grafana app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: grafana app.kubernetes.io/version: 7.5.5 helm.sh/chart:
grafana-6.11.0 spec: externalTrafficPolicy: Cluster ports: - port: 80 protocol:
TCP targetPort: 3000 selector: app.kubernetes.io/instance: grafana
app.kubernetes.io/name: grafana sessionAffinity: None type: LoadBalancer ---
apiVersion: v1 kind: Service metadata: namespace: jaeger name: jaeger spec:
externalTrafficPolicy: Cluster ports: - port: 80 protocol: TCP targetPort: 16686
selector: app: jaeger sessionAffinity: None type: LoadBalancer --- apiVersion:
v1 kind: Service metadata: namespace: monitoring name: prometheus spec:
externalTrafficPolicy: Cluster ports: - port: 80 protocol: TCP targetPort: 9090
selector: app: prometheus sessionAffinity: None type: LoadBalancer</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <P>It would actually be even better to set up
ingresses and DNS names, etc. but for the purpose of getting your lab up and
running in a basic form this is out of scope.</P> <P>&nbsp;</P> <P>Sure, I
skipped some parts you might want to look into here:</P> <UL> <LI>The docs refer
to Prometheus scraping metrics from OSM, which you kind of want, but I left that
out for now.</LI> <LI>The service mesh is set to permissive which means you
don't get all that mesh goodness.</LI> <LI>I have not touched upon network
policies or plugins.</LI> <LI>Since I didn't do ingress and didn't do DNS it
follows that https isn't part of the picture either.</LI> <LI>While GitOps is
part of the CI/CD story we have not explored a setup with pipelines and repos so
you might want to tinker with GitHub Actions to automate these pieces.</LI>
</UL> <P>&nbsp;</P> <P>I will be exploring these features as well (don't know if
I'll put out some instructions on that or not), and I encourage you to do the
same. With the risk of repeating myself - this is intended to get an AKS cluster
going so it can be used for a basic cloud native setup. What you make of it is
up to you :)</img></P> <P>&nbsp;</P> <P>And the disclaimer - I know that this
works and seems to be an acceptable way to use the software at the time of
writing, but I cannot predict if Microsoft will change anything on the technical
or licensing side of things.</P> Tue, 06 Jul 2021 19:10:00 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504
Andreas Helland 2021-07-06T19:10:00Z Web Development for Beginners: A new
Learning Path on Microsoft Learn
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/web-development-for-beginners-a-new-learning-path-on-microsoft/ba-p/2502044
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="webdev.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290366i358D67A3A7A0B4A8/image-size/large?v=v2&amp;px=999"
role="button" title="webdev.png" alt="webdev.png" /></span></P> <P>&gt; This is
based on the Git Hub curriculum <A
href="https://github.com/microsoft/Web-Dev-For-Beginners/?WT.mc_ID=academic-33004-leestott"
target="_blank"
rel="noopener">https://github.com/microsoft/Web-Dev-For-Beginners</A></P>
<P>&nbsp;</P> <P>There are 16 million developers in the world today. Roughly
half of those, 8 million are web developers. Web development is therefore a good
skill to have as you are looking to land that first job and build a career in
tech. But where do you begin to learn all that? With this path&nbsp;</P>
<BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/paths/web-development-101/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Web dev for beginners path</A>.</P> </BLOCKQUOTE>
<P>It covers everything from HTML, CSS, JavaScript to Accessibility.&nbsp;</P>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#intro-to-programming"
target="_blank" rel="noopener" name="intro-to-programming"></A>Intro to
programming</H2> <P>What even is programming? Well, it's a way to instruct your
machine to do things for you. By running statements, you can things like
creating a web a page, a simple script or why not a computer game. The
possibilities are endless. You do need some kind of text editor to type it all
in, we provide that to in this first module.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-introduction-programming/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Intro to programming</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#accessibility-on-the-web"
target="_blank" rel="noopener" name="accessibility-on-the-web"></A>Accessibility
on the Web</H2> <P>Not everyone has perfect eyesight or see the colors you do or
can even see at all. As a developer you need to realize that when you build
programs, you should include everyone. There are specific tags and approaches
you can use to make your app usable by anyone, regardless of disability. Be
inclusive and build better apps.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-accessibility/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Web accessibility</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#javascript-variables-and-data-types"
target="_blank" rel="noopener"
name="javascript-variables-and-data-types"></A>JavaScript variables and data
types</H2> <P>One of the most popular programming languages right now is
JavaScript. JavaScript can be used in the browser to create an interactive
experience, but it can also be used on the backend to create APIs, application
that can talk to other services and even databases. Learn how to think in
programming by being introduced to the concept of variables and data types.</P>
<BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-variables/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">JavaScript variables and data types</A></P>
</BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#functions"
target="_blank" rel="noopener" name="functions"></A>Functions</H2> <P>When you
start out, you might have all your code statements in one file. But there is a
way to organize your code so it can be made more readable but also reusable.
What you can do is to create named areas, functions, which can be called
whenever you need them to carry out a task for you.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-functions/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Functions in JavaScript</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#decisions-with-ifelse"
target="_blank" rel="noopener" name="decisions-with-ifelse"></A>Decisions with
IF/ELSE</H2> <P>Your code can execute differently depending on the values of
different variables or some other condition. Having that flexibility makes your
application useful in many different scenarios. Learn about IF, ELSE and much
more.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-if-else/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Decisions with IF/ELSE</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#arrays-and-loops"
target="_blank" rel="noopener" name="arrays-and-loops"></A>Arrays and loops</H2>
<P>Sometimes your data takes on the form of a list. Imagining a recipe, or an
ice cream menu or why not a receipt of things. Lists make it possible to store
more than one thing and there are constructs that make it possible to operate on
lists and get what you need from them such as their sum, or maybe the highest
value and so on.&nbsp;</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-arrays/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Arrays and loops</A></P> </BLOCKQUOTE>
<P>&nbsp;</P> <P>&nbsp;</P> Wed, 30 Jun 2021 13:46:59 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/web-development-for-beginners-a-new-learning-path-on-microsoft/ba-p/2502044
Chris_Noring 2021-06-30T13:46:59Z Machine Learning for Beginners, Curriculum
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/machine-learning-for-beginners-curriculum/ba-p/2502024
<P>It is our very great pleasure to announce the release of a new, free,
MIT-licensed open-source curriculum all about classic Machine
Learning:<SPAN>&nbsp;</SPAN><STRONG><A href="https://aka.ms/ml-beginners"
target="_blank" rel="noopener">Machine Learning for Beginners</A></STRONG>.
Brought to you by a team of Azure Cloud Advocates and Program Managers, we hope
to empower students of all ages to learn the basics of ML. Presuming no
knowledge of ML, we offer a free 12-week, 24-lesson curriculum, plus a bonus
'postscript' lesson to help you dive into this amazing field.</P> <BLOCKQUOTE>
<P>If you liked our first curriculum,<SPAN>&nbsp;</SPAN><A
href="https://aka.ms/webdev-beginners" target="_blank" rel="noopener">Web Dev
for Beginners</A>, you will love<SPAN>&nbsp;</SPAN><A
href="https://aka.ms/ml-beginners" target="_blank" rel="noopener">Machine
Learning for Beginners</A>!</P> </BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#join-us-on-a-voyage"
target="_blank" rel="noopener" name="join-us-on-a-voyage"></A>Join us on a
voyage!</H2> <P>Travel around the world in this themed semester-long self-study
course as we look at ML topics through the lens of world cultures.</P>
<P>&nbsp;</P> <P>Our curricula are structured with a modified Project-Based
pedagogy and include:</P> <UL> <LI>a pre-lesson warmup quiz</LI> <LI>a written
lesson</LI> <LI>video</LI> <LI>knowledge checks</LI> <LI>a project to build</LI>
<LI>infographics, sketchnotes, and visuals</LI> <LI>a challenge</LI> <LI>an
assignment</LI> <LI>a post-lesson quiz</LI> <LI>a 'PAT' (see below)</LI>
<LI>opportunities to deepen your knowledge on Microsoft Learn</LI> </UL>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#meet-the-team"
target="_blank" rel="noopener" name="meet-the-team"></A>Meet the team!</H2>
<P>&nbsp;</P> <DIV class=" fluidvids"><IFRAME
src="https://www.youtube.com/embed/Tj1XWrDSYJU" width="710" height="399"
allowfullscreen="allowfullscreen" class=" fluidvids-elem" loading="lazy"
data-mce-fragment="1"></IFRAME></DIV> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#what-will-you-learn"
target="_blank" rel="noopener" name="what-will-you-learn"></A>What will you
learn?</H2> <P>&nbsp;</P> <P>The lessons are grouped so that you can deep-dive
into various important aspects of classic ML. We start with
an<SPAN>&nbsp;</SPAN><STRONG>introduction</STRONG><SPAN>&nbsp;</SPAN>to ML
concepts, moving to its<SPAN>&nbsp;</SPAN><STRONG>history</STRONG>, concepts
of<SPAN>&nbsp;</SPAN><STRONG>fairness</STRONG><SPAN>&nbsp;</SPAN>in machine
learning, and discussing the tools
and<SPAN>&nbsp;</SPAN><STRONG>techniques</STRONG><SPAN>&nbsp;</SPAN>of the
trade. We then move on
to<SPAN>&nbsp;</SPAN><STRONG>Regression</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Classification</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Clustering</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Natural
Language Processing</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Time Series
Forecasting</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Reinforcement Learning</STRONG>,
with two<SPAN>&nbsp;</SPAN><STRONG>'applied'</STRONG><SPAN>&nbsp;</SPAN>lessons
demonstrating how to use your models within web apps for inference. We end with
a 'postscript' lesson listing<SPAN>&nbsp;</SPAN><STRONG>"real-world"
applications</STRONG><SPAN>&nbsp;</SPAN>of ML, showing how these techniques are
used "in the wild".</P> <P>To make it easy for new learners to get started with
ML, we built the content so that it can be used offline and so that the
exercises can be completed using .ipynb notebooks within Visual Studio Code.
Grab your datasets and let's go!</P> <BLOCKQUOTE> <P>This curriculum is all
about "classic Machine Learning", so we tackle these basic concepts for the most
part using<SPAN>&nbsp;</SPAN><A
href="https://scikit-learn.org/stable/user_guide.html" target="_blank"
rel="noopener">Scikit-learn</A>, a library that helps demystify and explain
these concepts. We don't discuss deep learning or neural networks in this ML
curriculum, but please stay tuned as we release our AI for Beginners curriculum
this Fall!</P> </BLOCKQUOTE> <P>Travel with us to discover North American
pumpkin market pricing (Regression), Pan-Asian cuisines (Classification),
Nigerian musical tastes (Clustering), European Hotel Reviews (NLP), World
electricity usage (Time Series) and the Russian story about Peter and the Wolf
(Reinforcement Learning).</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#how-to-use-this-curriculum-meet-pat"
target="_blank" rel="noopener"
name="how-to-use-this-curriculum-meet-pat"></A>How to use this curriculum: meet
PAT</H2> <P>&nbsp;</P> <P>This is a self-study course, but it works well in
groups so consider finding study buddies and learning together. Warm up with a
pre-lesson low-stakes quiz and work through the lessons and assignments together
or solo. Test your knowledge with the post-lesson quiz.</P> <P>New for this
curriculum is the use of<SPAN>&nbsp;</SPAN><STRONG>Progress Assessment
Tools</STRONG><SPAN>&nbsp;</SPAN>in the Discussion Board area. Once done with a
lesson group, visit the Discussion Board and copy the template to a new
Discussion using the "quote reply". Fill in your learnings in the
self-reflection box and respond to other students in the repo. Let's learn
together!</P> <P>We are also open to PRs and Issue raising, following our Code
of Conduct and templating systems. We hope the community will chip in with
translations of the lessons, quizzes and assignments. Thank you for
participating as we learn together.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#a-sneak-peek"
target="_blank" rel="noopener" name="a-sneak-peek"></A>A sneak peek</H2>
<P>&nbsp;</P> <P>This curriculum is filled with a lot of art, created by our
team. Take a look at this cool sketchnote created by<SPAN>&nbsp;</SPAN><A
class="mentioned-user" href="https://dev.to/girlie_mac" target="_blank"
rel="noopener">@girlie_mac</A><SPAN>&nbsp;</SPAN>.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_1-1625058142891.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292562i74A89D6D4F805B73/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_1-1625058142891.jpeg"
alt="Chris_Noring_1-1625058142891.jpeg" /></span></P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#without-further-ado-please-meet-machine-learning-for-beginners-a-curriculum"
target="_blank" rel="noopener"
name="without-further-ado-please-meet-machine-learning-for-beginners-a-curriculum"></A><STRONG>Without
further ado, please meet<SPAN>&nbsp;</SPAN><A href="https://aka.ms/ml-beginners"
target="_blank" rel="noopener">Machine Learning For Beginners: A
Curriculum</A>!</STRONG></H2> <P>&nbsp;</P> <P><FONT size="6"><STRONG>You need
to LEARN Python? </STRONG></FONT></P> <P><STRONG>Here's our best recommendations
from LEARN:</STRONG></P> <P>&nbsp;</P> <P><STRONG>-&nbsp;<A
href="https://docs.microsoft.com/en-us/learn/modules/intro-to-python/"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/learn/modules/intro-to-python/</A></STRONG></P>
<P><STRONG>- <A
href="https://docs.microsoft.com/en-us/learn/paths/python-first-steps/"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/learn/paths/python-first-steps/</A></STRONG></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> Wed, 30 Jun 2021 13:42:31 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/machine-learning-for-beginners-curriculum/ba-p/2502024
Chris_Noring 2021-06-30T13:42:31Z #JulyOT 2021 - 31 Days of Learning for
everyone interested in the Internet of Things
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/julyot-2021-31-days-of-learning-for-everyone-interested-in-the/ba-p/2450414
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="JulyOT-Cloud-Logo.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288881i3C8AEB5098245D11/image-size/large?v=v2&amp;px=999"
role="button" title="JulyOT-Cloud-Logo.png" alt="JulyOT-Cloud-Logo.png"
/></span></P> <P><SPAN data-contrast="none"><FONT
size="5"><STRONG>Introduction</STRONG></FONT></SPAN></P> <P><SPAN
data-contrast="none">It’s a new year, and&nbsp;it’s&nbsp;time&nbsp;for another
round of #JulyOT!&nbsp; This themed month&nbsp;of&nbsp;blog posts, live
streams,&nbsp;videos, and&nbsp;learning materials&nbsp;focuses on all things
related to development&nbsp;of&nbsp;IoT Solutions&nbsp;built&nbsp;using Azure
IoT Services.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Throughout the month of July, the
IoT Cloud Advocacy team @ Microsoft will be sharing content and events put
together by IoT enthusiasts from around the world. 
This includes content from community members, Microsoft employees, and could
even involve you!  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none"><BR />For every weekday&nbsp;in July, we’ll focus
on a featured content piece from our </SPAN><A href="https://aka.ms/julyot"
target="_blank" rel="noopener"><SPAN data-contrast="none">curated collection at
the IoT Tech Community</SPAN></A><SPAN data-contrast="none">.  The idea is to
inspire those curious about IoT to pursue their own personal projects within the
realm of Internet of Things.  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Make sure to bookmark our <A
href="https://aka.ms/julyot" target="_blank" rel="noopener">#JulyOT post at
the </A></SPAN><A href="https://aka.ms/julyot" target="_blank"
rel="noopener"><SPAN data-contrast="none">Microsoft IoT Tech
Community</SPAN></A><SPAN data-contrast="none"> and be sure to refresh the page
throughout the month, as we will be adding new content each week that align to
this year’s #JulyOT Content Themes!  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><FONT size="5"><STRONG><SPAN data-contrast="none">#JulyOT
Content Themes</SPAN></STRONG></FONT><SPAN><FONT size="5">&nbsp;</FONT><BR
/></SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN data-contrast="none">Each
week&nbsp;during the month of #JulyOT, we will focus on&nbsp;a&nbsp;specific
area of IoT&nbsp;and we are pleased to&nbsp;say that we&nbsp;have a little bit
of something for everyone.&nbsp;&nbsp;See below for a quick listing of our
content themes for the month!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><SPAN data-contrast="none">July 1 – 2
: #JulyOT Content Kickoff  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><SPAN data-contrast="none">July 5 – 9
: Artificial Intelligence at the Edge  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><SPAN data-contrast="none">July 12
– 16 : &nbsp;Beginners, Students, Teachers and Makers</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><SPAN data-contrast="none">July 19
– 23 : Microcontrollers and Embedded Hardware  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><SPAN data-contrast="none">July 26
– 30 : Online learning and Certification  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN>&nbsp;</LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Whether you are interested in applied artificial
intelligence, a total beginner, a student looking to start a class project,
teacher looking for an IoT course curriculum, a hardware tinkerer / hacker, or
professional developer looking to designate yourself as an
official&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure IoT
Developer</SPAN></A><SPAN data-contrast="none">, we have you
covered!&nbsp;&nbsp;Check out the sections below for more details on what to
expect during these themed weeks.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">Throughout
the month we'll also be hosting a variety of livestreams throughout the world as
part of the&nbsp;<A title="Microsoft Reactor #JulyOT2021 Series"
href="https://developer.microsoft.com/en-us/reactor/eventseries/JulyOT2021?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener noreferrer">Microsoft Reactor #JulyOT2021
Series</A>.&nbsp; Register to attend live sessions featuring QnA with experts
from the Microsoft IoT Advocacy team!</SPAN></P> <P>&nbsp;</P> <P><A
title="Microsoft Reactor #JulyOT2021 Series"
href="https://developer.microsoft.com/en-us/reactor/eventseries/JulyOT2021?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="reactor.PNG" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292963i8EBD0FE6711D8E1B/image-size/medium?v=v2&amp;px=400"
role="button" title="reactor.PNG" alt="reactor.PNG" /></span></SPAN></A></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">July 1
–&nbsp;2&nbsp;:&nbsp;#JulyOT Content Kickoff&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We plan to begin #JulyOT by spreading the word far
and wide ot let everyone know that&nbsp;we are&nbsp;looking to inspire
interested individuals from all over the world to build innovative IoT
solutions.&nbsp; Help us by sharing this very blog post to your favorite IoT
Communities!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN
data-contrast="none">July&nbsp;5&nbsp;–&nbsp;9&nbsp;:&nbsp;&nbsp;Artificial
Intelligence&nbsp;at the Edge</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="pdecarlo_0-1623782410042.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288882iF6AF3BF0746A1C13/image-size/medium?v=v2&amp;px=400"
role="button" title="pdecarlo_0-1623782410042.png"
alt="pdecarlo_0-1623782410042.png" /></span></P> <P>&nbsp;</P> <P><A
href="https://microsoft.github.io/ai-at-edge/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Artificial Intelligence&nbsp;at the
Edge</SPAN></A><SPAN data-contrast="none">&nbsp;is one of the hottest trends in
IoT, and we have an excellent line-up of community created content to excite all
who have an interest in this area.&nbsp; We’ll begin with a creative
solution&nbsp;from&nbsp;</SPAN><A
href="https://www.linkedin.com/in/goranvuksic/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Goran Vuksic</SPAN></A><SPAN
data-contrast="none">&nbsp;that leverages the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/azure-percept?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Percept Dev
Kit</SPAN></A><SPAN data-contrast="none">&nbsp;and&nbsp;</SPAN><A
href="https://www.lego.com/en-us/themes/boost?CMP=AFC-AffiliateUS-msYS1Nvjv4c-3624890-115554-1"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Lego&nbsp;Boost&nbsp;sensors</SPAN></A><SPAN
data-contrast="none">&nbsp;to create an Azure Percept Mobile!&nbsp;
Also,&nbsp;</SPAN><A href="https://www.linkedin.com/in/pjgcreations/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Peter&nbsp;Gallagher</SPAN></A><SPAN
data-contrast="none">&nbsp;and&nbsp;</SPAN><A
href="https://www.linkedin.com/in/clifford-agius/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Clifford&nbsp;Agius</SPAN></A><SPAN
data-contrast="none">,&nbsp;both incredible&nbsp;</SPAN><A
href="https://mvp.microsoft.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Azure IoT MVPs</SPAN></A><SPAN
data-contrast="none">&nbsp;from the larger IoT Developer Community and hosts
of&nbsp;</SPAN><A
href="https://www.youtube.com/channel/UCVQtNIXAgtJA-w9pd17WH5A" target="_blank"
rel="noopener"><SPAN data-contrast="none">Azureish&nbsp;Live</SPAN></A><SPAN
data-contrast="none">, will share&nbsp;some&nbsp;exciting&nbsp;content&nbsp;that
will&nbsp;show you how to build your own solutions using the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/azure-percept?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Percept Dev
Kit</SPAN></A><SPAN data-contrast="none">.&nbsp; This will be followed up by an
article from&nbsp;</SPAN><A
href="https://www.linkedin.com/in/chintan-shah-7b7a2811/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Chintan Shah</SPAN></A><SPAN
data-contrast="none">, product manager at&nbsp;</SPAN><A
href="https://nvidia.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">NVIDIA</SPAN></A><SPAN data-contrast="none">,
that&nbsp;will show you how to enhance pre-trained&nbsp;AI&nbsp;models using the
Transfer Learning Toolkit on Azure Virtual Machines!&nbsp;&nbsp;To&nbsp;finish
off&nbsp;the week, Benjamin Cabe will share his infamous&nbsp;</SPAN><A
href="https://makezine.com/2021/05/28/what-an-ai-nose-knows/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Artificial Nose</SPAN></A><SPAN
data-contrast="none">, a device that can make sense of smells using an off the
shelf microcontroller paired with&nbsp;</SPAN><A href="https://www.tinyml.org/"
target="_blank" rel="noopener"><SPAN data-contrast="none">TinyML</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">July&nbsp;12&nbsp;–&nbsp;16&nbsp;:&nbsp;&nbsp;Beginners,
Students, Teachers, and Makers</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="pdecarlo_1-1623782562639.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288884i4CC049FE5E4CCC1D/image-size/medium?v=v2&amp;px=400"
role="button" title="pdecarlo_1-1623782562639.png"
alt="pdecarlo_1-1623782562639.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">We often hear questions from folks interested in getting
started with IoT, whether it is students looking to add a new in-demand skill to
their learning, faculty looking for curricula to teach their knowledge-hungry
students, bootcamps wanting to upskill&nbsp;their members, or experienced
developers looking to learn a new area.&nbsp;This is
why&nbsp;we’ve&nbsp;built&nbsp;</SPAN><A href="https://aka.ms/iot-beginners"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT for
beginners</SPAN></A><SPAN data-contrast="none">, a&nbsp;free, open
source,&nbsp;project-based,&nbsp;24 lesson&nbsp;curriculum&nbsp;designed to
teach you&nbsp;or your students&nbsp;IoT from the ground up, built in
collaboration between Microsoft and students around the globe.&nbsp;We
understand that not everyone has access to IoT hardware for learning, so we’ve
provided multiple options for what you need to get
started.</SPAN><SPAN>&nbsp;<BR /><BR /></SPAN></P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="pdecarlo_0-1625749717591.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294289iF90BF23C46FCDA14/image-size/medium?v=v2&amp;px=400"
role="button" title="pdecarlo_0-1625749717591.png"
alt="pdecarlo_0-1625749717591.png" /></span></P> <P><SPAN
data-contrast="none">One option is to use IoT kits that our friends
as&nbsp;</SPAN><A href="https://www.seeedstudio.com/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Seeed&nbsp;Studio</SPAN></A><SPAN
data-contrast="none">&nbsp;have put together, based around either an
Arduino-based&nbsp;Wio&nbsp;Terminal, or a Raspberry Pi:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT for beginners with
Seeed and Microsoft - Wio Terminal Starter Kit</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT for beginners with
Seeed and Microsoft - Raspberry Pi 4 Starter Kit</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P><SPAN data-contrast="none">The other option is&nbsp;to
use&nbsp;</SPAN><A href="https://github.com/CounterFit-IoT/CounterFit"
target="_blank" rel="noopener"><SPAN data-contrast="none">virtual IoT hardware
that you can run on your computer</SPAN></A><SPAN data-contrast="none">,
simulating a range of sensors and actuators.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We’ll be kicking off the week
with&nbsp;a&nbsp;</SPAN><A href="http://aka.ms/HelloIoTSeriesPage"
target="_blank" rel="noopener"><SPAN data-contrast="none">series of
livestreams</SPAN></A><SPAN data-contrast="none">&nbsp;in collaboration with
the&nbsp;</SPAN><A
href="https://developer.microsoft.com/reactor/?WT.mc_id=academic-26896-jabenn"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft
Reactor</SPAN></A><SPAN data-contrast="none">&nbsp;covering the first 4
lessons.&nbsp;We will then share more&nbsp;lessons, focusing on a different
project each day. We start with learning how to&nbsp;use&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/2-farm"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT in a smart
farm</SPAN></A><SPAN data-contrast="none">&nbsp;to help feed our&nbsp;growing
population.&nbsp;We then move on a journey from the farm to your table with
lessons based on a&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/3-transport"
target="_blank" rel="noopener"><SPAN data-contrast="none">smart logistics
project</SPAN></A><SPAN data-contrast="none">, tracking your food as it leaves
the farm.&nbsp;We jump to AI on the edge next as you learn how to build
an&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/4-manufacturing"
target="_blank" rel="noopener"><SPAN data-contrast="none">AI powered fruit
quality detector</SPAN></A><SPAN data-contrast="none">&nbsp;as part of a smart
factory.&nbsp;Retail is next on the agenda as you see how to&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/5-retail"
target="_blank" rel="noopener"><SPAN data-contrast="none">build stock
counting&nbsp;once again using AI on the edge</SPAN></A><SPAN
data-contrast="none">. To round off the week it’s time to cook something nice,
using a timer you’ve built as part of a&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/6-consumer"
target="_blank" rel="noopener"><SPAN data-contrast="none">voice controlled smart
assistant</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN data-contrast="none">As you get involved
trying out these lessons and learning IoT we want you to share your experiences!
Please share the IoT apps you have built with the hashtag #JulyOT!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">July&nbsp;26&nbsp;–&nbsp;30&nbsp;:&nbsp;&nbsp;Microcontrollers
and Embedded Hardware</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="azure-sphere-end-to-end.png" style="width: 538px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288885i0A7CD10A7A86BA7E/image-size/large?v=v2&amp;px=999"
role="button" title="azure-sphere-end-to-end.png"
alt="azure-sphere-end-to-end.png" /></span></P> <P><SPAN data-contrast="none">If
you are not thinking about secure IoT then you should be
especially&nbsp;considering&nbsp;recent&nbsp;ransomware attacks on&nbsp;American
infrastructure. The focus of this week will be on building secure by design and
default IoT solutions with&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-au/services/azure-sphere?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure
Sphere</SPAN></A><SPAN data-contrast="none">&nbsp;and Azure
IoT.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">This week will&nbsp;kickstart your Azure
Sphere&nbsp;journey,&nbsp;and&nbsp;learn about best practices and&nbsp;useful
tools&nbsp;that&nbsp;will make&nbsp;your
life&nbsp;easier&nbsp;developing&nbsp;Azure
Sphere&nbsp;applications.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Following this, be first to learn
how we bought the&nbsp;</SPAN><A
href="https://en.wikipedia.org/wiki/Altair_8800" target="_blank"
rel="noopener"><SPAN data-contrast="none">Altair 8800</SPAN></A><SPAN
data-contrast="none">&nbsp;to Azure Sphere and cloud
enabled&nbsp;the&nbsp;40-year-old&nbsp;technology born&nbsp;when the internet
was&nbsp;just&nbsp;a&nbsp;twinkle&nbsp;in&nbsp;Tim Berners-Lee's eye.&nbsp;This
project pushed the boundaries of Azure Sphere, the project is open
source&nbsp;and&nbsp;you will learn how to run&nbsp;the&nbsp;Altair 8800&nbsp;on
the Azure Sphere and develop Basic, Assembler and C applications on the Azure
Sphere.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">We've also teamed up with Microchip
to release new&nbsp;free&nbsp;courseware on&nbsp;</SPAN><A
href="https://aka.ms/mu.microchip/AzureIoT" target="_blank" rel="noopener"><SPAN
data-contrast="none">Microchip University&nbsp;</SPAN></A><SPAN
data-contrast="none">and&nbsp;the&nbsp;Enabling a Seamless IoT Experience with
Microsoft Azure IoT and Microchip MCUs/MPUs&nbsp;</SPAN><A
href="https://aka.ms/mu.microchip/AzureIoT/ConnectingDevices/Webinar"
target="_blank" rel="noopener"><SPAN data-contrast="none">on-demand
webinar</SPAN></A><SPAN data-contrast="none">.&nbsp;Courses will cover the full
device lifecycle, including provisioning at scale, connecting devices to the
cloud, and working with top Microchip MCUs. (PIC, SAM E54,&nbsp;etc)&nbsp;Plus,
we will cover how to work with IoT Plug and Play and using Azure IoT Central for
device management.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">And finally, the Raspberry Pi Foundation released
the new RP2040 based Raspberry Pi Pico this year and there is now a Wi-Fi
enabled developer board built on the RP2040 from&nbsp;</SPAN><A
href="https://store.arduino.cc/usa/nano-rp2040-connect-with-headers"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Arduino</SPAN></A><SPAN data-contrast="none">. In this
segment we will cover how to connect&nbsp;an&nbsp;RP2040 based microcontrollers
to Azure IoT and Azure IoT Central&nbsp;with the&nbsp;new&nbsp;</SPAN><A
href="https://github.com/Azure/azure-sdk-for-c" target="_blank"
rel="noopener"><SPAN data-contrast="none">Azure&nbsp;SDK&nbsp;for Embedded
C</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">July&nbsp;27&nbsp;–&nbsp;31&nbsp;:&nbsp;&nbsp;Online
Learning and Certification</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="0.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288890i36CFFBAC67F7DE5E/image-size/medium?v=v2&amp;px=400"
role="button" title="0.jpg" alt="0.jpg" /></span></SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">During these 31 days, we also want to challenge
our community to sharpen their knowledge of Azure IoT Services by offering
an Azure IoT Developer Journey designed to guide learners in pursuit of an
official designation as a </SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">certified Azure IoT
Developer</SPAN></A><SPAN data-contrast="none">.  We are accompanying this
Learning journey with a “</SPAN><A
href="https://developer.microsoft.com/en-us/offers/30-days-to-learn-it?challenge_option=6437124F-B20B-4840-9715-CFD6D3F25C89?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">30 Days to Learn It -
Cloud Skills Challenge</SPAN></A><SPAN data-contrast="none">”.  This is a
limited-time promotion that will challenge you to learn and apply knowledge of
Azure IoT Services by completing a </SPAN><A
href="https://docs.microsoft.com/en-us/users/cloudskillschallenge/collections/n52yhn0emjx0?WT.mc_id=cloudskillschallenge_6437124F-B20B-4840-9715-CFD6D3F25C89?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">curated series of
interactive learning</SPAN></A><SPAN data-contrast="none"> modules from
the </SPAN><A
href="https://docs.microsoft.com/en-us/learn/browse/?expanded=azure&amp;products=azure-iot%2Cazure-iot-central%2Cazure-iot-edge%2Cazure-iot-hub&amp;resource_type=module"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft Learn Online
Learning Platform</SPAN></A><SPAN data-contrast="none">.  Once you have
registered for the Cloud Skills Challenge, if you are able to complete
the assigned modules within a 30-day time period, you may be
eligible to receive a 50% off voucher to take the official </SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">AZ-220 IoT Developer
Certification Exam</SPAN></A><SPAN data-contrast="none">.”&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Otherwise, if you would like to
complete the recommended learning&nbsp;outside the 30 Days to learn it here are
the&nbsp;individuals&nbsp;learning paths:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/introduction-to-azure-iot/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Introduction to Azure
IoT</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/build-intelligent-edge-with-azure-iot-edge/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build the intelligent
edge with Azure IoT Edge</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/securely-connect-iot-devices/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Securely connect IoT
devices to the cloud</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/develop-iot-solutions-with-azure-iot-central/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop IoT solutions
with Azure IoT Central</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/develop-azure-digital-twins/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop with Azure
Digital Twins</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P>&nbsp;</P> <P><SPAN data-contrast="none">Apart from the self-paced
learning&nbsp;approach&nbsp;if you prefer an instructor-led approach to complete
your certification&nbsp;training&nbsp;here is where you
may&nbsp;find&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/courses/az-220t00?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">more
information</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Also,&nbsp;during
this&nbsp;week&nbsp;you will learn more about how to&nbsp;</SPAN><A
href="https://aka.ms/IoT-online-workshop" target="_blank" rel="noopener"><SPAN
data-contrast="none">build&nbsp;end to end IoT solutions&nbsp;with our&nbsp;6
part&nbsp;series.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><SPAN
data-contrast="auto">Learn&nbsp;how&nbsp;you can implement&nbsp;Microsoft Azure
Defender for IoT&nbsp;to secure your entire&nbsp;IoT/OT
environment,&nbsp;protect existing IoT/OT devices, and build security into new
IoT innovations in&nbsp;our&nbsp;</SPAN><A href="https://aka.ms/defenderiot"
target="_blank" rel="noopener"><SPAN data-contrast="none">new learning
path</SPAN></A><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">If you would like to take your
learning journey to the next level, applying and relating services and concepts
to a&nbsp;real-world scenario, we have a bunch of demo resources, virtual cloud
workshops and hands-on labs to&nbsp;help you&nbsp;tackle&nbsp;some of these
common scenarios end-to-end whether you are a developer, architect or decision
maker trying to apply some of these key concepts to your industry
or&nbsp;specific&nbsp;business scenario:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="6" data-aria-level="1"><SPAN data-contrast="none">Leveraging
Azure Digital Twins in a supply chain (</SPAN><A
href="https://github.com/microsoft/MCW-Leveraging-Azure-Digital-Twins-in-a-supply-chain"
target="_blank" rel="noopener"><SPAN data-contrast="none">MCW</SPAN></A><SPAN
data-contrast="none">&nbsp;version,&nbsp;</SPAN><A
href="https://github.com/Azure-Samples/IoTDemos/tree/master/ADT-SupplyChainDemo"
target="_blank" rel="noopener"><SPAN data-contrast="none">GitHub</SPAN></A><SPAN
data-contrast="none">&nbsp;version)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="7" data-aria-level="1"><A
href="https://github.com/Azure-Samples/IoTDemos/tree/master/RetailDemo"
target="_blank" rel="noopener"><SPAN data-contrast="none">Retail Demo - Instore
Analytics</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="8" data-aria-level="1"><A
href="https://github.com/Azure-Samples/IoTDemos/tree/master/WorkplaceHealthAndSafetyDemo"
target="_blank" rel="noopener"><SPAN data-contrast="none">Workplace Health and
Safety Demo</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="8" data-aria-level="1"><SPAN data-contrast="none">Chocolate
Manufacturing Factory Condition Monitoring using Azure Digital Twins (MS
Learn&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/develop-azure-digital-twins/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">version</SPAN></A><SPAN data-contrast="none">,
GitHub&nbsp;</SPAN><A
href="https://github.com/Azure-Samples/digital-twins-samples/tree/master/HandsOnLab"
target="_blank" rel="noopener"><SPAN
data-contrast="none">version</SPAN></A><SPAN data-contrast="none">)</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></LI> </UL> <P><FONT size="5"><STRONG><SPAN
data-contrast="none">Conclusion:</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P><SPAN data-contrast="none">We hope to inspire all who partake in #JulyOT with
the motivation to&nbsp;learn and apply your knowledge to create something
new!&nbsp; If you have an idea, let us know about it on social media by using
the hashtag #JulyOT to share your ideas and creations!&nbsp;&nbsp;We plan to
feature your awesome submissions&nbsp;in a follow-up post, so start
thinking&nbsp;about that project you always wanted
to&nbsp;and&nbsp;keep&nbsp;us&nbsp;posted along the way, we can’t wait to see
what you create!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
Thu, 08 Jul 2021 13:11:08 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/julyot-2021-31-days-of-learning-for-everyone-interested-in-the/ba-p/2450414
pdecarlo 2021-07-08T13:11:08Z Combating gender-based violence in South Africa
with Microsoft Azure
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/combating-gender-based-violence-in-south-africa-with-microsoft/ba-p/2417972
<P>When Naomi and Christine Bisimwa took part in the Microsoft Hackathon, they
had one goal: help local women experiencing gender-based violence.</P>
<P>&nbsp;</P> <P>The result? S.A.F.E., a platform dedicated to empowering and
protecting women.&nbsp;</P> <P>&nbsp;</P> <P>These dedicated developers led a
team called “Combat against GBV” in using Microsoft Azure, AI, and GitHub to
create an educational and interactive solution for women and children,
accessible through Twitter, Facebook Messenger, and WhatsApp.</P> <P>&nbsp;</P>
<P>In this video, Naomi and Christine Bisimwa explain the importance of cloud
and mobile technology in tackling the rampant effects of gender-based violence
in South Africa and the role their chatbot plays in empowering girls and women
in their community to take their lives back into their own hands.</P>
<P>&nbsp;</P> <P>If you are interested in being a change agent in your
community, sharpen your technical skills today at <A
href="http://aka.ms/trainingandcertification"
target="_self">aka.ms/trainingandcertification</A>.</P> <P>&nbsp;</P>
<P><LI-VIDEO vid="https://www.youtube.com/watch?v=rHpNoZthYWw" align="center"
size="large" width="600" height="338" uploading="false"
thumbnail="http://i.ytimg.com/vi/rHpNoZthYWw/hqdefault.jpg"
external="url"></LI-VIDEO></P> Fri, 11 Jun 2021 06:23:58 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/combating-gender-based-violence-in-south-africa-with-microsoft/ba-p/2417972
Elsa_Ramesh 2021-06-11T06:23:58Z Fusion Teams 101: Low-Code Apps with Power
Platform
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/fusion-teams-101-low-code-apps-with-power-platform/ba-p/2414037
<P aria-level="1"><STRONG><SPAN
data-contrast="auto">Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, there will be a blog covering
the&nbsp;webinar of the month for the Low-code application development (LCAD) on
Azure solution.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">LCAD on Azure&nbsp;is a solution
that&nbsp;integrates the robust development capabilities of low code Microsoft
Power Apps and the Azure products such as Azure Functions, Azure Logic Apps, and
more.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">This
month’s&nbsp;webinar&nbsp;is&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-fusion-teams-101LowCode-power-platform.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">‘Fusion Teams 101: Low
Code Apps with Power&nbsp;Platform.’</SPAN></A></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_0-1622747557549.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286060i942D4AE1E8A54363/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_0-1622747557549.png"
alt="riduncan_0-1622747557549.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">This blog will briefly recap</SPAN><SPAN
data-contrast="none"> </SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">, </SPAN><SPAN
data-contrast="auto">provide an overview of the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">fusion development&nbsp;learning path</SPAN></STRONG><SPAN
data-contrast="auto">,&nbsp;low code&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">serverless architecture</SPAN></STRONG><SPAN
data-contrast="auto">, and recent&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">pro developer focused updates to the Power
Platform</SPAN></STRONG><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">This&nbsp;is a helpful blog for those&nbsp;looking
to deep dive on Fusion Development with Power Platform&nbsp;and those who want
to&nbsp;integrate a fusion development team&nbsp;in their work
environment.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">What&nbsp;is Low code application development on
Azure?</SPAN></STRONG><SPAN data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none"> </SPAN><SPAN
data-contrast="none">was created to help developers build business applications
faster with less code.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Leveraging the Power Platform, and more
specifically Power Apps, yet helping them scale and extend their Power Apps with
Azure services.  </SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">For
example, a pro developer who works for a manufacturing company would need to
build a line-of-business (LOB) application to help warehouse employees
track&nbsp;incoming&nbsp;inventory.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">That application would take months to build, test, and
deploy. Using Power Apps,&nbsp;it can take hours to build, saving time and
resources.  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">However, say the warehouse employees want the
application to place procurement orders for additional&nbsp;inventory
automatically when current&nbsp;inventory hits a determined low.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In the past that would require
another heavy lift by the development team to rework their previous
application&nbsp;iteration.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Due to the&nbsp;integration of Power Apps and Azure a
professional developer can build an API&nbsp;in Visual Studio (VS) Code,
publish&nbsp;it to their Azure portal, and export the API&nbsp;to Power
Apps&nbsp;integrating&nbsp;it&nbsp;into their application as a custom
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Afterwards,
that same API&nbsp;is re-usable&nbsp;indefinitely&nbsp;in the Power Apps’
studio, for future use with other applications, saving the company and
developers more time and resources.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">To learn more about&nbsp;possible scenarios&nbsp;with LCAD
on Azure go through the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">self-guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_1-1622747557535.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286061iF8B49FD1CB33A415/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_1-1622747557535.png"
alt="riduncan_1-1622747557535.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Fusion Development Learning Path</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The fusion development&nbsp;learning path&nbsp;is
centered around&nbsp;a unique&nbsp;story telling style.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">The learner&nbsp;is&nbsp;embedded as part
of&nbsp;the&nbsp;fusion development&nbsp;team
and&nbsp;helps&nbsp;them&nbsp;solve their&nbsp;business&nbsp;problem.&nbsp;The
fusion team needs&nbsp;to track&nbsp;inventory more easily&nbsp;and&nbsp;needs
to track data on&nbsp;their&nbsp;back end,
but&nbsp;the&nbsp;data&nbsp;is&nbsp;in a legacy back end.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">The two&nbsp;teams&nbsp;of&nbsp;the
professional developers and the
citizen&nbsp;developers&nbsp;work&nbsp;together,&nbsp;and the learning path
situates you as a member of the team.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_2-1622747557581.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286062i8820CBCAE7374D8E/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_2-1622747557581.png"
alt="riduncan_2-1622747557581.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Below are the</SPAN><STRONG><SPAN
data-contrast="auto">&nbsp;5 modules</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;that you walk through to solve the&nbsp;problem.
Keep&nbsp;in mind each module&nbsp;can be completed&nbsp;individually but
you&nbsp;learn more throughout each module.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_3-1622747557575.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286065i268087B1732C6B15/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_3-1622747557575.png"
alt="riduncan_3-1622747557575.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Transform&nbsp;Business&nbsp;Software&nbsp;Authoring&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You learn how software development,&nbsp;IT, and
business teams work better together using a new software paradigm called fusion
development&nbsp;and how to&nbsp;develop&nbsp;apps&nbsp;better&nbsp;and faster
using fusion development, which&nbsp;increases
technical&nbsp;intensity.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">&nbsp;Understanding&nbsp;Low&nbsp;Code as
a&nbsp;Traditional&nbsp;Developer</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Professional developers are used to using VS and
VS Code,&nbsp;Power Apps&nbsp;is a different environment&nbsp;therefore&nbsp;the
module covers&nbsp;bridging&nbsp;the gap between existing traditional
development knowledge and Power Apps&nbsp;logic, user&nbsp;interface creation,
and data flow.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">Lastly,
the module&nbsp;introduces Microsoft&nbsp;Power&nbsp;Fx, the language
you&nbsp;write&nbsp;in Power Apps, not just&nbsp;drag,&nbsp;and drop but can
write code behind&nbsp;it.&nbsp;You will&nbsp;see the
Power&nbsp;Fx&nbsp;formula,&nbsp;and the JavaScript equivalent will be side by
side so you can see how you would traditionally build&nbsp;it.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">&nbsp;Build a Power
Apps&nbsp;component&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">This module&nbsp;is&nbsp;about building a custom
Power Apps&nbsp;component.&nbsp;The ability for code first developers&nbsp;to
create something that&nbsp;does not&nbsp;exist yet, build&nbsp;it, test&nbsp;it,
deploy&nbsp;it&nbsp;in Power Apps.&nbsp;Like&nbsp;their current role but they
only&nbsp;build one&nbsp;component&nbsp;of the app rather than build the
entire&nbsp;app.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">&nbsp;Integrate&nbsp;Open
API-enabled&nbsp;web&nbsp;APIs&nbsp;with Azure API&nbsp;Management through
Visual Studio.</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In this module you take a&nbsp;web&nbsp;API, add
an Open API&nbsp;description to&nbsp;it,&nbsp;and&nbsp;deploy to Azure App
Service and API&nbsp;Management.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">&nbsp;Discover and use&nbsp;web APIs with Power
Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Lastly,&nbsp;in this module you build a custom
connector to bridge the gap between Power Apps and API&nbsp;Management to bring
an existing&nbsp;web service&nbsp;into your&nbsp;Power App.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">In the&nbsp;webinar&nbsp;the
presenter, Matt&nbsp;Soucoup&nbsp;will take you through&nbsp;a demo
on&nbsp;building&nbsp;the&nbsp;inventory management
application&nbsp;and&nbsp;will walk you through modules 2, 4, and 5.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Low Code Serverless
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To understand the benefits of building a low code
serverless architecture you&nbsp;must&nbsp;first understand the benefits&nbsp;of
serverless&nbsp;and traditional PaaS architectures.</SPAN></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_4-1622747557537.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286063iC725EEBCB5C35664/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_4-1622747557537.png"
alt="riduncan_4-1622747557537.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">What&nbsp;is Serverless?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Serverless&nbsp;applications&nbsp;can
be&nbsp;defined by&nbsp;three groups, abstraction of servers, event-driven
or&nbsp;instant scale applications, and&nbsp;micro-billing charges.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Abstraction of
servers</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">When as a professional developer you deploy and
develop&nbsp;apps,&nbsp;but you don't have to manage servers.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Event-driven/instant
scale</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The ability for your&nbsp;apps to scale
elastically, scaling can be triggered and be brought back down as
needed.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Micro-billing</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You are billed&nbsp;on a per transaction
basis&nbsp;for the services your&nbsp;applications consume.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Conventional PaaS
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_5-1622747557551.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286064iFA745E64C3991EA2/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_5-1622747557551.png"
alt="riduncan_5-1622747557551.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">It was&nbsp;important to highlight the benefits of
serverless&nbsp;before&nbsp;we&nbsp;dove&nbsp;into the differences of
conventional PaaS architectures, standard serverless architectures, and
serverless architectures that leverage low code.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">In conventional PaaS architectures&nbsp;web and
mobile front ends are where the end user consumes the application. While the
business logic&nbsp;is&nbsp;hosted&nbsp;in an app service,&nbsp;if you’re using
Azure, then Azure App Service.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">That app service communicates with the&nbsp;database,
however&nbsp;if any adjustments are needed for the application the&nbsp;entire
app must be taken down. Or&nbsp;if a function&nbsp;in the app needs to scale up,
the entire app must scale up which&nbsp;increases costs.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Serverless
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_6-1622747557565.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286068iCCD52C5A82FA73B6/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_6-1622747557565.png"
alt="riduncan_6-1622747557565.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">With standard serverless architectures the way the end user
experiences the app on a&nbsp;web or mobile front end&nbsp;is all normal.
However, rather than the app being stored&nbsp;in an app
service,&nbsp;it&nbsp;is broken&nbsp;into&nbsp;its core functions&nbsp;as
serverless APIs, on Azure&nbsp;we&nbsp;call this service Azure
Functions.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">These
functions have all the above-listed benefits of serverless applications, the
ability to scale elastically and only pay for what you consume.&nbsp;Moreover,
react or angular software&nbsp;is used to build the front end.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Low Code&nbsp;Serverless
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_7-1622747557567.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286067iAB321E6552479CC0/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_7-1622747557567.png"
alt="riduncan_7-1622747557567.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Serverless Architecture with Power Apps&nbsp;can be the
same build architecture as&nbsp;a&nbsp;standard serverless
architecture&nbsp;build.&nbsp;However,&nbsp;rather
than&nbsp;React&nbsp;or&nbsp;Angular&nbsp;software&nbsp;it&nbsp;is replaced with
Power Apps to build the front end of the app.&nbsp;Power Apps takes less time
than traditional front end build software and can save up to 74% on development
costs.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Build 2021
Fusion Team Power Platform Enhancements</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="auto">In
the&nbsp;webinar&nbsp;the&nbsp;speaker,&nbsp;Kartik&nbsp;Kanakasabesan&nbsp;walks
you through the new&nbsp;improvements to the Power Platform’s capabilities for
professional developers and fusion teams.&nbsp;More specifically,
he&nbsp;demonstrates the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Microsoft Power Platform Command Line&nbsp;interface
support for packages and canvas source files</SPAN></STRONG><SPAN
data-contrast="auto">,&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">Microsoft
Power Platform tools for Visual Studio Code and Visual
Studio</SPAN></STRONG><SPAN data-contrast="auto">, and
the&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">New Microsoft Power Platform
application lifecycle management accelerators</SPAN></STRONG><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN data-contrast="auto">Power Platform
Command Line&nbsp;interface support for packages and canvas source
files</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_8-1622747557539.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286066i8FDF824BD233D71F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_8-1622747557539.png"
alt="riduncan_8-1622747557539.png" /></span></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">As part of the fusion theme, Microsoft
now&nbsp;provides&nbsp;developers with the ability to render canvas apps&nbsp;in
a source-code-friendly format.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The benefit of this capability&nbsp;is to enable
canvas applications to take advantage of enterprise CI/CD pipelines for
deployment and enhance the collaboration between citizens and code-first
developers.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">For example,
when resolving Power&nbsp;Fx&nbsp;functions, a citizen developer referencing a
complicated regular expression for rounding updates&nbsp;in their canvas app,
can collaborate with a pro developer to fix the function&nbsp;in the developer’s
primary tool.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">The citizen
developer can then continue with their application development work using the
fixed regular expression by the pro developer.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_9-1622747557568.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286071i09A5A1F1A1D087CD/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_9-1622747557568.png"
alt="riduncan_9-1622747557568.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_10-1622747557569.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286070i8D1B18AEE581C477/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_10-1622747557569.png"
alt="riduncan_10-1622747557569.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><I><SPAN data-contrast="none">Traditional rendition of Canvas App&nbsp;in
Source control system (Top)&nbsp;issuing the unpack command
(Bottom).</SPAN></I></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_11-1622747557553.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286069i9080CB02BCC1B959/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_11-1622747557553.png"
alt="riduncan_11-1622747557553.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_12-1622747557574.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286073i164F56C749C5AEFB/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_12-1622747557574.png"
alt="riduncan_12-1622747557574.png" /></span></P> <P><I><SPAN
data-contrast="none">Source code rendition of a canvas app (Top)
authoring&nbsp;PowerFx&nbsp;in&nbsp;VSCode&nbsp;(Bottom).</SPAN></I></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In addition, the Microsoft Power
Platform CLI&nbsp;now also simplifies the package deployment process for
Microsoft Power Platform developers and&nbsp;independent software vendors
(ISVs).</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">In the past, this
process required several other command-line tools just to deploy a
package&nbsp;into an environment. Now the Microsoft Power Platform CLI&nbsp;has
a simple new sub command called&nbsp;</SPAN><I><SPAN
data-contrast="none">package.</SPAN></I></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Within the package sub command, developers can
now&nbsp;initialize a package with a template, add package references to
solutions, and build and deploy without manual procedures.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN data-contrast="auto">Microsoft Power
Platform tools for Visual Studio Code and Visual Studio</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_13-1622747557554.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286072i4E4815B42D1D7CE2/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_13-1622747557554.png"
alt="riduncan_13-1622747557554.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Microsoft has been actively working on simplifying the
myriad of tools required to develop, pack, and deploy code first components to
Microsoft Power Platform.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">&nbsp;Microsoft Power Platform CLI&nbsp;was the
first&nbsp;iteration of this, and&nbsp;there are now&nbsp;similar capabilities
directly&nbsp;into the code first experience for developers&nbsp;in Visual
Studio Code.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">The Visual
Studio Code extension will be available across different Operating System
platforms like Windows and Mac OS, as&nbsp;Microsoft&nbsp;continues&nbsp;to
bring consistent experiences across platforms.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_14-1622747557576.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286074i5412B67F789CA18F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_14-1622747557576.png"
alt="riduncan_14-1622747557576.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">In addition to the Visual Studio Code capabilities, the
Visual Studio team has been actively working on&nbsp;improving the application
programming&nbsp;interface (API) publishing experience for
developers.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">In the past,
developers building APIs would have to go outside of their developer
environment, after publishing their API&nbsp;to Azure, to register their
API&nbsp;in Azure API&nbsp;Management.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">There are&nbsp;improvements to simplify the process and
provide the ability to publish the API&nbsp;and register&nbsp;in
API&nbsp;Management from Visual Studio directly.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_15-1622747557556.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286077i3BCCDD8E4B3BDDB1/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_15-1622747557556.png"
alt="riduncan_15-1622747557556.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_16-1622747557557.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286078iCBE0FF28002BD7BB/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_16-1622747557557.png"
alt="riduncan_16-1622747557557.png" /></span></P> <P>&nbsp;</P> <P><I><SPAN
data-contrast="none">Publishing the API&nbsp;and registering the API&nbsp;in
API&nbsp;Management from Visual Studio.</SPAN></I></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Once the API&nbsp;is registered&nbsp;in the
API&nbsp;Management catalog, a developer can then export the API&nbsp;to
Microsoft Power Platform as an API&nbsp;Management connector with only a few
clicks.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_17-1622747557540.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286076iE984A0EED53BE036/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_17-1622747557540.png"
alt="riduncan_17-1622747557540.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_18-1622747557542.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286079iCA063A57DF938B03/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_18-1622747557542.png"
alt="riduncan_18-1622747557542.png" /></span></P> <P>&nbsp;</P> <P><I><SPAN
data-contrast="none">Publishing the API&nbsp;from Management to Microsoft Power
Platform.</SPAN></I></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_19-1622747557559.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286081iBCFC1DC6F1489C62/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_19-1622747557559.png"
alt="riduncan_19-1622747557559.png" /></span><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">This now allows citizen developers to easily
access their own company data when creating Microsoft&nbsp;Power Platform apps
and flows.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Similarly,&nbsp;this
capability&nbsp;expanded&nbsp;to also&nbsp;include Azure Functions, allowing
developers to build serverless functions and have them be consumed via
API&nbsp;Management&nbsp;in Microsoft Power Platform.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">Using the Visual Studio 2019 preview edition,
developers within Visual Studio can author their Azure Functions, and publish
them directly&nbsp;into Azure,&nbsp;where&nbsp;</SPAN><A
href="https://aka.ms/openapifunctions" target="_blank" rel="noopener"><SPAN
data-contrast="none">developers are also able to register their
Functions&nbsp;in API&nbsp;Management without leaving Visual
Studio</SPAN></A><SPAN data-contrast="none">.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_20-1622747557560.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286080i1EFF9315E5D8BA53/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_20-1622747557560.png"
alt="riduncan_20-1622747557560.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_21-1622747557543.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286084iB92B450F34773342/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_21-1622747557543.png"
alt="riduncan_21-1622747557543.png" /></span></P> <P><I><SPAN
data-contrast="none">Publishing Azure Functions and registering&nbsp;in
API&nbsp;Management from within Visual Studio.</SPAN></I></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">Once the API&nbsp;is published and
registered&nbsp;in API&nbsp;Management, the API&nbsp;can be exported as a
connector to Microsoft Power Platform and consumed by apps and flows with
ease.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_22-1622747557533.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286082iCFF2C8DCF1591175/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_22-1622747557533.png"
alt="riduncan_22-1622747557533.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_23-1622747557544.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286083i4C66A06F54C4341B/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_23-1622747557544.png"
alt="riduncan_23-1622747557544.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_24-1622747557508.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286085iAD65B72DC5C1D72E/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_24-1622747557508.png"
alt="riduncan_24-1622747557508.png" /></span></P> <P><I><SPAN
data-contrast="none">Using the Azure Function as Custom Connector&nbsp;in
Microsoft Power Platform Applications.</SPAN></I><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Microsoft&nbsp;is&nbsp;constantly
looking at ways to make&nbsp;citizens&nbsp;and pro developers
collaborate&nbsp;in a frictionless way, without leaving their authoring
environments.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">&nbsp;You
can download Visual Studio 2019 build 16.10 to try out these API&nbsp;publishing
capabilities&nbsp;in June.</SPAN></P> <P>&nbsp;</P> <P
aria-level="3"><STRONG><SPAN data-contrast="none">New Microsoft Power Platform
application lifecycle management accelerators</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_25-1622747557570.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286086i82C3ED72B12F59B5/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_25-1622747557570.png"
alt="riduncan_25-1622747557570.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">The&nbsp;</SPAN><A href="https://aka.ms/coestarterkit"
target="_blank" rel="noopener"><SPAN data-contrast="none">Center of Excellence
(CoE) Starter Kit</SPAN></A><SPAN data-contrast="none">, empowers&nbsp;pro and
citizen developers alike to participate&nbsp;in&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/power-platform/alm/" target="_blank"
rel="noopener"><SPAN data-contrast="none">application lifecycle management
(ALM)</SPAN></A><SPAN data-contrast="none">&nbsp;and accelerate the process with
out-of-the-box Azure DevOps pipelines and GitHub workflow templates.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">The accelerators will be open source
and available at the&nbsp;</SPAN><A
href="https://github.com/microsoft/coe-starter-kit" target="_blank"
rel="noopener"><SPAN data-contrast="none">new CoE Starter Kit GitHub
repository</SPAN></A><SPAN data-contrast="none">. An&nbsp;</SPAN><A
href="https://www.youtube.com/watch?v=aO-CmmGebLk" target="_blank"
rel="noopener"><SPAN data-contrast="none">overview of the accelerators&nbsp;is
available here</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_26-1622747557578.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286087i613386931E8C2531/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_26-1622747557578.png"
alt="riduncan_26-1622747557578.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">New template&nbsp;Dataverse&nbsp;Solution to reference and
exercise pipelines and workflows ensures all developers understand all elements
of how the toolkit works and what’s available.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">With ready-to-go pipeline templates enabling Microsoft
Power Platform ALM scenarios that can be quickly configured to drive advanced
scenarios, developers can now benefit from a streamlined experience saving them
valuable time.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_27-1622747557571.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286089iB2AE1B013FF54869/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_27-1622747557571.png"
alt="riduncan_27-1622747557571.png" /></span></P> <P><SPAN
data-contrast="none">New canvas app for&nbsp;</SPAN><A
href="https://aka.ms/aa4am" target="_blank" rel="noopener"><SPAN
data-contrast="none">developers and advanced makers</SPAN></A><SPAN
data-contrast="none">&nbsp;familiar with GitHub concepts and Azure DevOps will
offer a convenient way to drive the dev loop.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">It allows developers to manage
all&nbsp;Dataverse&nbsp;solutions&nbsp;in a single place, enables an easy
approach to commit to Git branches, submit pull requests, and deploy specific
builds to a dev environment while surfacing the status of those
activities.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_28-1622747557573.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286090iE410E3C14F746CD0/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_28-1622747557573.png"
alt="riduncan_28-1622747557573.png" /></span><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">New canvas app for&nbsp;</SPAN><A
href="https://aka.ms/aa4m" target="_blank" rel="noopener"><SPAN
data-contrast="none">citizen developers</SPAN></A><SPAN
data-contrast="none">&nbsp;will offer an easy approach to drive their portion of
DevOps by viewing and managing source code on GitHub and community
contributions.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Once a
project&nbsp;is created and approved, a dashboard allows users to view projects
and navigate to the maker portal to build and create assets under a newly
created solution&nbsp;in just a few clicks.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Makers can deploy their progress or finalized solution to a
test and a production environment.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_29-1622747557562.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286088i2002DE1C5FDB034F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_29-1622747557562.png"
alt="riduncan_29-1622747557562.png" /></span></P> <P>&nbsp;</P> <P><A
href="https://github.com/microsoft/coe-starter-kit" target="_blank"
rel="noopener"><SPAN data-contrast="none">Open source on GitHub</SPAN></A><SPAN
data-contrast="none">, with acceptance of community contributions,&nbsp;is
coming soon.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">With an active backlog on
GitHub,&nbsp;Microsoft&nbsp;is&nbsp;actively building new functionality and will
start accepting changes from&nbsp;the&nbsp;community soon to make the toolkit
better for all developers.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN>&nbsp;<BR /></SPAN></P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_30-1622747557579.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286093i6036B84F6390FBA3/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_30-1622747557579.png"
alt="riduncan_30-1622747557579.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Conclusion</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">This&nbsp;is just the beginning of what&nbsp;is
possible with fusion team development. To learn more&nbsp;about
Fusion&nbsp;teams watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-fusion-teams-101LowCode-power-platform.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">Fusion Teams 101 Low
Code Apps with Power Platform&nbsp;webinar</SPAN></A><SPAN
data-contrast="auto">&nbsp;that premiers June 4</SPAN><SPAN
data-contrast="auto">th</SPAN><SPAN data-contrast="auto">.</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_31-1622747557563.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286091iAD2562D3828437FE/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_31-1622747557563.png"
alt="riduncan_31-1622747557563.png" /></span></P> <P>&nbsp;</P> <P
aria-level="1"><SPAN data-contrast="auto">To get hands on experience creating a
custom connector and extending a Power App with custom code as covered&nbsp;in
this blog, start with the new learning path&nbsp;</SPAN><SPAN
data-contrast="none">“</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Transform
your&nbsp;business applications with fusion development”.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="1">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_32-1622747557546.jpeg" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286092iC488ED8843095003/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_32-1622747557546.jpeg"
alt="riduncan_32-1622747557546.jpeg" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="1"><SPAN data-contrast="none">After completing the learning
path,&nbsp;if you want to learn even more about how extend your&nbsp;low code
applications with Azure and establishing a fusion development team&nbsp;in
your&nbsp;organization read the accompanying e-book “</SPAN><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Fusion development
approach to building apps using Power Apps”.</SPAN></A></P> <P
aria-level="1">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_33-1622747557547.jpeg" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286095iD06FE0141D13DB71/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_33-1622747557547.jpeg"
alt="riduncan_33-1622747557547.jpeg" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Lastly,&nbsp;if you want to try the new Power Platform
Visual Studio and Visual Studio Code Extensions, visit&nbsp;</SPAN><A
href="https://marketplace.visualstudio.com/items?itemName=microsoft-IsvExpTools.powerplatform-vscode"
target="_blank" rel="noopener"><SPAN
data-contrast="none">aka.ms/ppcvscode</SPAN></A><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_34-1622747557526.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286094iA9455EC53713A775/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_34-1622747557526.png"
alt="riduncan_34-1622747557526.png" /></span></P> Thu, 10 Jun 2021 21:48:44 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/fusion-teams-101-low-code-apps-with-power-platform/ba-p/2414037
riduncan 2021-06-10T21:48:44Z Community and certification related resources for
developers
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/community-and-certification-related-resources-for-developers/ba-p/2382116
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">At Build 2021,
we are hosting a table topic for developers - <A
href="https://mybuild.microsoft.com/sessions/9d3582b7-4169-4b80-84fa-367dccad3d41?source=sessions"
target="_blank" rel="noopener">How the community and certifications can help you
achieve more</A>.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Here are a list useful links that will support you to do more with the
community and learning resources at Microsoft.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 14.0pt; color: #7f7f7f;"><SPAN
style="font-weight: bold; text-decoration: underline;">Developer
Content</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><A href="https://docs.microsoft.com/learn/tv/" target="_self"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="LearnTV.png" style="width: 455px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/331507i33C9B0AFA2B76EBE/image-dimensions/455x263?v=v2"
width="455" height="263" role="button" title="LearnTV.png" alt="LearnTV.png"
/></span></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><SPAN style="font-weight: bold;">Learn TV</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">Learn how to build solutions and
use Microsoft products from the experts that built them! Learn TV is the place
to find the latest digital content so you can always keep updated on the latest
announcements, features, and products from Microsoft.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://docs.microsoft.com/learn/tv/" target="_blank"
rel="noopener">https://docs.microsoft.com/learn/tv/</A></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Channel 9</SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">Channel 9 is a community where we bring forward the people
behind our products and connect them with you. One of the recommended shows is
<SPAN style="font-weight: bold;">CodeStories</SPAN>, where we showcase local
Cloud Advocates, MVPs, Product Managers and Community Leaders.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://channel9.msdn.com/" target="_blank"
rel="noopener">https://channel9.msdn.com/</A></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2Fc9CodeStories&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C838d8abe57244217116808d91bd32a15%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637571416018864233%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=l1YwAy1w8aGFty7bl7BlWVLsDsVchW0yNdmMljAaxkw%3D&amp;reserved=0"
target="_blank" rel="noopener">https://aka.ms/c9CodeStories</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft.Source</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Get the latest articles,
documentation, and events from Microsoft. Source—the curated monthly developer
community newsletter.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><A
href="https://azure.microsoft.com/resources/join-the-azure-developer-community/"
target="_blank"
rel="noopener">https://azure.microsoft.com/resources/join-the-azure-developer-community/</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft Tech News</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">The monthly newsletter for developers
and tech professionals, tailored to your preferences. Get the latest information
from around Microsoft, covering technology advancements, interesting finds,
product news, and events near you.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><A
href="https://developer.microsoft.com/Newsletter/" target="_blank"
rel="noopener">https://developer.microsoft.com/Newsletter/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 14.0pt; color:
#7f7f7f;"><SPAN style="font-weight: bold; text-decoration:
underline;">Community</SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><SPAN style="font-weight: bold;">Developer
Communities</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Discover and connect with others who build with Microsoft tools and
services.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.microsoft.com%2Fcommunity%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7Cbeba118009a44be2d09408d91cb02f05%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637572365289462464%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=N%2FPzxWNBvWtmFYJ%2FPkBlfa1EO9XWfg4Dae8itwHYQH4%3D&amp;reserved=0"
target="_blank"
rel="noopener">https://developer.microsoft.com/community/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Azure</SPAN></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">Your community for best practices and the latest
news on Azure.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><A href="https://techcommunity.microsoft.com/t5/azure/ct-p/Azure"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/azure/ct-p/Azure</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft 365</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Microsoft 365 on Tech Community.</P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://techcommunity.microsoft.com/t5/microsoft-365/ct-p/microsoft365"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/microsoft-365/ct-p/microsoft365</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft Dynamics 365</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">Engage with experts and peers in
our forums; discover blogs, webinars, videos, events, and more.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://community.dynamics.com/" target="_blank"
rel="noopener">https://community.dynamics.com/</A></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN style="font-weight:
bold;">Power Platform Community</SPAN></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;" lang="en-GB">Microsoft community site for Power
Platform. It has separate forums for Power Apps, Power Automate, Power BI, and
Power Virtual Agents. The new community user groups can also be accessed from
here.</P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpowerusers.microsoft.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175919819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=e3mYIKzS6ldoah8ZLdBHyGVCIF7KoNjoccEgTTlnhDc%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://powerusers.microsoft.com
</SPAN></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
14.0pt; color: #7f7f7f;"><SPAN style="font-weight: bold; text-decoration:
underline;">Learning and Certification Resources</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Microsoft Learn</SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">The home for Microsoft documentation and learning for
developers and technology professionals.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><A href="https://docs.microsoft.com/learn/"
target="_blank" rel="noopener">https://docs.microsoft.com/learn/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">30 Days to Learn It</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">30 Days to Learn It can help you build
skills and start your preparation for Microsoft Certifications for AI, DevOps,
Microsoft 365, low code, IoT, data science, cloud development, and more.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://aka.ms/30-Days-To-Learn-It" target="_blank"
rel="noopener">https://aka.ms/30-Days-To-Learn-It</A></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Microsoft Learn Certifications</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Earn certifications that show you are
keeping pace with today’s technical roles and requirements.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmicrosoft.com%2Fcertifications&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776530327%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=QWZEJDmWFBYBhsd8Bglujf1zdp3NYoJeCfXiLRUNmZU%3D&amp;reserved=0"
target="_blank" rel="noopener">Microsoft.com/certifications </A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Certification Training Poster</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Expand your
technical skill set for Azure, Microsoft 365, Dynamics 365, and Power Platform.
Certification overview poster with aligned exams – updated monthly.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2Ftraincertposter&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776530327%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=4pqQ4C%2BLDDK6YYE1qfbBXRn9YzXe46n0XkteaaGzZb0%3D&amp;reserved=0"
target="_blank" rel="noopener">Aka.ms/CertTrainPoster </A></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Certification Renewal Overview</SPAN></P> <H1 style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Stay current with in-demand skills
through free certification renewals.</H1> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2FCertRenewalOverview&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776540320%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=Y90y2pKId0I9hNXMLwPFPzQY1bJKnNV4KfhcKc0UqJQ%3D&amp;reserved=0"
target="_blank" rel="noopener">Aka.ms/CertRenewalOverview</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Training and Certification Deck </SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">The Microsoft
Azure training and certifications guide has been created to provide training and
certification options to achieve personal success. It includes resources such as
certification portfolio, overview, journey and learning path to help you prepare
for your learning experience.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2Ftraincertdeck&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776550314%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=GeBBul%2FA3nw3aFYr%2FO4HXoPmsdGdbbZrz%2Bs7yhJ4iik%3D&amp;reserved=0"
target="_blank" rel="noopener">Aka.ms/TrainCertDeck</A></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 14.0pt; color: #7f7f7f;"><SPAN
style="font-weight: bold; text-decoration: underline;">Resources shared by
Julian Sharp</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB">Want to get involved? Connect with&nbsp;<LI-USER
uid="8450"></LI-USER>&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;" lang="en-GB"><SPAN style="font-weight: bold;">Power
Community events </SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;" lang="en-GB">Community led weekly events covering all
aspects of Dynamics 365 and Power Platform.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fevents.powercommunity.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175919819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=V7wW4amCZdT8BhPsqNd7bvkLJWVFrrh15hAzpQ8U8Bw%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://events.powercommunity.com
</SPAN></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB"><SPAN style="font-weight: bold;">Power Platform School
</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"
lang="en-GB">The Power Platform Summer School works with adults from the BAME
community, providing training on the Microsoft Power Platform as well as
mentorship from industry professionals, during an 8 week program.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpowerplatformschool.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175929811%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=88g3OnN4%2FLcF%2FMPbE%2B%2B1rsM%2FquDYpIMdCnIz4NqbT4s%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://powerplatformschool.com</SPAN></A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN
style="font-weight: bold;">Power Platform Starter Days</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"
lang="en-GB">Inspiring people to find their way into the tech industry and set
the stage for them to start into a Power Platform tech career.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpowerplatformstarterdays.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175939810%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=cafLURw7n624hUVknfWXpkdWbzEm6CCfoYceUF%2F4Zhw%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://powerplatformstarterdays.com
</SPAN></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB"><SPAN style="font-weight: bold;">Power Platform
Hackathons</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB">How to plan and run hackathons using Power Platform
tools.</P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fpower-platform%2Fguidance%2Fadoption%2Fhackathons&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175939810%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HXNVEld988GIXQavZvgo%2BHkUgB2p9hhw3L%2BtEw1oAeQ%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://docs.microsoft.com/power-platform/guidance/adoption/hackathons</SPAN></A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN
style="font-weight: bold;">Power Community Virtual Event Hub</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB">A
centralised view of Community Virtual events.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.virtualeventshub.com%2F&amp;data=04%7C01%7Cheidic%40redtech.com%7Cec2581de6beb49d25ebd08d91ee0a1d4%7C2a8bb167584b4ff0a140ac2de8b87f70%7C0%7C0%7C637574772407716211%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=jRf9F3cmY8SoqIf30erllYDdC0u0k3TqtkVL7nhUXo0%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://www.virtualeventshub.com</SPAN></A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Power Platform Study </SPAN><SPAN style="font-weight:
bold;">Group</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">An online community group learning program for people wanting to take
the Power Platform App Maker PL-100 exam.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fukcrm.wordpress.com%2F2021%2F05%2F23%2Fpl-100-study-group-june-2021%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175959798%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HMys9TJY%2FPTzEgYHrrC0rEVN%2F8QhKSx5Z05VMZyvayM%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://ukcrm.wordpress.com/2021/05/23/pl-100-study-group-june-2021/</SPAN></A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN
style="font-weight: bold;">D365 Champs </SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;" lang="en-GB">A Dynamics and Power
Platform community based in South East Asia with over 5,000 followers.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.d365champions.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175949804%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=Ah1c%2FeRyol3fwNqaz1x%2Fj3nKcX102ymDQbsEKB0F7hs%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://www.d365champions.com
</SPAN></A></P> Fri, 03 Dec 2021 18:57:43 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/community-and-certification-related-resources-for-developers/ba-p/2382116
Monish_Gangwani 2021-12-03T18:57:43Z Azure Logic Apps Announcement – GA of
single-tenant Standard SKU
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-ga-of-single-tenant-standard-sku/ba-p/2382460
<P><STRONG>Meet the New Standard in Workflow</STRONG></P> <P>&nbsp;</P> <P>Today
marks a new chapter for integration at Microsoft - the General Availability (GA)
of Logic Apps Standard - our new single-tenant offering.&nbsp;A flexible,
containerized, modern cloud-scale workflow engine you can run anywhere. Today,
integration is more important than ever, it connects organizations with their
most valuable assets - customers, business partners and their employees. It
makes things happen, seamlessly, silently, to power experiences we take for
granted, APIs being called by your TV to browse must-watch shows or catch the
latest weather, snagging a bargain on your favorite website (with all the stock
checking, order fulfillment and charging your credit card as backend workflows).
Booking vacations when that was a thing, and keeping us all safe scheduling
vaccine appointments on our phones, as well as checking in with friends and
family wherever we are. The list goes on. Integration is everything.</P>
<P>&nbsp;</P> <P><STRONG>Breaking Through the Cloud Barrier</STRONG></P>
<P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/services/logic-apps/" target="_blank"
rel="noopener">Logic Apps</A> has always been central to our <A
href="https://www.gartner.com/reprints/?id=1-1ZNT008W&amp;ct=200812&amp;st=sb"
target="_blank" rel="noopener">industry-leading</A> modern cloud integration
platform – <A
href="https://azure.microsoft.com/en-us/product-categories/integration/"
target="_blank" rel="noopener">Azure Integration Services</A>. But it was stuck
in the cloud, our cloud. We know that business can’t always be bounded like
this, and integration needs to be pervasive and accessible, connecting to where
things are today, where they need to be tomorrow and where they might be in the
future. For that, you need to be able <SPAN>to </SPAN>extend the reach of your
network using an integration platform than can truly meet you where you are.
Welcome Logic Apps Standard, our born in the cloud integration engine that can
now be deployed anywhere - our cloud, your cloud, their cloud, on-premises or
edge. And your laptop or dev machine for local development. Windows, Linux or
Mac. Anywhere.</P> <DIV id="tinyMceEditorJon Fancey_0" class="mceNonEditable
lia-copypaste-placeholder">&nbsp;</DIV> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="VSCode.png" style="width: 974px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283359i3E25AD2258F84268/image-size/large?v=v2&amp;px=999"
role="button" title="VSCode.png" alt="VSCode.png" /></span></P> <P>Figure 1. New
VS Code extension.</P> <P>&nbsp;</P> <P><STRONG>The Speed You Need</STRONG></P>
<P>&nbsp;</P> <P>We’ve also introduced new Stateless Workflows. As their name
implies, this is a new workflow type in Logic Apps that doesn’t need storage to
persist state between actions, making your workflows run faster and saving you
money. What’s not to like about that? Stateless Workflows open up new
high-volume, high-throughput scenarios for real-time processing of events,
messages, APIs and data. We’ve achieved performance improvements across both
Stateful and Stateless with a new connector model, built-in to the runtime, to
provide high performance of some of our most common connectors - Service Bus,
Event Hubs, Blob, SQL and MQ. Not only this but you can also now write your own
connectors in .Net just like we do with all the same benefits with our new
extensibility model for custom connectors.</P> <P>&nbsp;</P> <P><STRONG>A New
Designer Designed For You</STRONG></P> <P>&nbsp;</P> <P>We didn’t want to
reimagine our new runtime without reimagining the designer too. The no-code
magic that brings integration to everyone, not just those who can code – or have
time to. The canvas now allows you to bring your most complex business workflow,
orchestration and automation problems. It has been recreated with not just a
more modern look but incorporat<SPAN>e</SPAN>s a new layout engine making
complex workflows render faster than ever, with full drag/drop, a new dedicated
editing pane to de-clutter the whole experience, and new accessibility and other
gestures to make authoring easier than ever. For everyone.</P> <P>&nbsp;</P>
<P>But that’s not all, we’ve also created a new VS Code extension for authoring,
allowing you – for the first time– to easily debug and test on your local
machine, set breakpoints, examine variables values in flight and generally, just
do what you do faster – in the World’s most popular IDE.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="NewDesigner.png" style="width: 974px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283356i694D2143EA572047/image-size/large?v=v2&amp;px=999"
role="button" title="NewDesigner.png" alt="NewDesigner.png" /></span></P>
<P>Figure 2. New Workflow Designer.</P> <P>&nbsp;</P> <P><STRONG>Easier To Live
With</STRONG></P> <P>&nbsp;</P> <P>As well as leaps forward in our runtime, our
designer and general ‘developer flow’ we know that getting your great work to
production with as little manual effort and intervention as possible is also
what you need. We’ve worked on making it possible to parameterize your workflows
in Logic Apps Standard so that you can automate deployments and set
environment-specific values in your pipelines to make DevOps a snap. You can
choose what you’re familiar with to stay in your groove with support for both
Azure DevOps pipelines and GitHub Actions - with provided templates to help you
get productive as quickly as possible. You’re able to take an infrastructure as
code approach to deploy your solutions and use CI/CD practices to enable you and
your team to iterate and deploy without friction as fast as your business
demands.</P> <P>&nbsp;</P> <P>Not only this but Logic Apps Standard also now
provides App Insights support too, allowing you ’see’ your running processes, as
data flows between endpoints and monitor them using Azure Monitor as well as a
host of other Azure built-in management capabilities.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="DevOps.png" style="width: 974px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283357i3D478283523D16C1/image-size/large?v=v2&amp;px=999"
role="button" title="DevOps.png" alt="DevOps.png" /></span></P> <P>Figure 3.
DevOps with Logic Apps.</P> <P>&nbsp;</P> <P><STRONG>You’re Always In
Control</STRONG></P> <P>&nbsp;</P> <P>Because Logic Apps Standard runs on <A
href="https://azure.microsoft.com/en-us/services/app-service/" target="_blank"
rel="noopener">App Service</A> – powering over 2 million web apps serving 40
billion requests per day - you get all the same great benefits that makes App
Service great too. Auto scale, virtual network (VNet) support and Private
Endpoints - right there at your fingertips - to build amazing solutions that
span Web, Workflow and Functions. And of course, because Logic Apps is part of
Azure Integration Services too, you can easily connect your applications using
over 450 connectors, publish and consume APIs with API Management with just a
few clicks and process events with Event Grid at planet-scale.&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>So What’s Next?</STRONG></P> <P>&nbsp;</P> <P>In a
word, lots! We’ve also <A
href="https://docs.microsoft.com/en-us/azure/logic-apps/azure-arc-enabled-logic-apps-overview"
target="_blank" rel="noopener">released today</A>, the public preview of Logic
Apps (and our other PaaS application services) on Azure Arc. Arc brings a new
level of distributed deployment and centralized management to your application
and integration environments. We’re also readying SQL support (Azure SQL, SQL
Server, SQL Data Services) enabling you to run workloads fully locally with no
Azure dependency on storage. Now in private preview, you can sign up <A
href="http://aka.ms/logicappssql" target="_blank" rel="noopener">here</A> to
express interest and get early access before the rest.</P> <P>&nbsp;</P>
<P><STRONG>See For Yourself</STRONG></P> <P>&nbsp;</P> <P>Don’t just take our
word for it, watch our Build session on-demand <A
href="https://mybuild.microsoft.com/sessions/92bd3e12-fbf4-4278-b68f-fe776b02adfa"
target="_blank" rel="noopener">here</A> where Derek Li, will take you through
everything that’s new to get you up to speed. You’ll see how <A
href="https://www.asos.com/" target="_blank" rel="noopener">ASOS</A>, a global
leader in fashion and tech, is using Logic Apps Standard to help them realize
their business goals faster than ever before.</P> <P>&nbsp;</P> <P>You can start
right now, <A href="https://azure.microsoft.com/en-us/free/serverless/"
target="_blank" rel="noopener">for free</A>, and take us for a spin. Read more
on Logic Apps Standard <A
href="https://docs.microsoft.com/en-us/azure/logic-apps/create-single-tenant-workflows-azure-portal"
target="_blank" rel="noopener">here</A>. If you’re already familiar with Logic
Apps and want to understand the differences you can review <A
href="https://docs.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare"
target="_blank" rel="noopener">this</A> article. And as always, let us know what
you think and what we can do to help you in your efforts.</P> <P>&nbsp;</P> <P>-
Jon<SPAN data-contrast="auto">&nbsp;&amp; the Logic Apps&nbsp;</SPAN><SPAN
data-contrast="auto">t</SPAN><SPAN data-contrast="auto">eam</SPAN></P> Tue, 25
May 2021 15:00:02 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-ga-of-single-tenant-standard-sku/ba-p/2382460
Jon Fancey 2021-05-25T15:00:02Z Introducing Developer Velocity Lab – A Research
Initiative to Amplify Developer Work and Well-Being
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-developer-velocity-lab-a-research-initiative-to/ba-p/2333140
<P><A title="Developer Velocity"
href="https://azure.microsoft.com/en-us/overview/developer-velocity/?cid=dvl"
target="_blank" rel="noopener">Developer Velocity</A> is an important and
integral part of developer productivity, and software development is at the core
of how organizations run. Improving developer velocity is critical to continued
satisfaction, iteration, and innovation in software teams. Today, Microsoft is
doubling down on its commitment to improving developers' work and well-being.
Microsoft and GitHub are proud to present <A title="Developer Velocity Lab
(DVL)"
href="https://www.microsoft.com/en-us/research/group/developer-velocity-lab/?cid=techcomm"
target="_blank" rel="noopener">Developer Velocity Lab (DVL)</A>, a joint
research initiative that will live in Microsoft Research.</P> <P>&nbsp;</P>
<P>Microsoft believes scientific advances through research are a fundamental
part of how we empower people through our products and impact society more
generally. Johannes Gehrke, Microsoft Research Technical Fellow and Lab Director
notes, “Microsoft Research is transforming the world through deep research. We
are excited to invest into research to empower developers to achieve more.” With
DVL, we’re creating a mission-focused initiative about developers, which signals
our belief in the importance of the developer community. Leading this research
initiative is Dr. Nicole Forsgren, VP Research and Strategy at GitHub. Her
industry leading work in DevOps and software development metrics includes
authoring the Shingo Publication Award-winning book <A title="Accelerate: The
Science of Lean Software and DevOps"
href="https://www.amazon.com/Accelerate-Software-Performing-Technology-Organizations-ebook/dp/B07B9F83WM"
target="_blank" rel="noopener"><EM>Accelerate: The Science of Lean Software and
DevOps</EM></A>. In Nicole’s own words, “Creating a better experience for the
world’s developers is core to the future of our digital world – whether that’s
through advanced tooling or low/no-code. I’m thrilled to be leading the
initiative in DVL.”</P> <P>&nbsp;</P> <P>DVL's mission is to discover, improve,
and amplify developer work and well-being. We do this through socio-technical
investigations in the following focus areas:</P> <P>&nbsp;</P> <P
class="lia-indent-padding-left-30px"><STRONG>Productivity.</STRONG> Investigate
ways to measure and improve developer productivity so we can help everyone work
better, faster, smarter, and more securely. This includes investigations of
low-code, no-code, and work at the intersection of code and ML and AI.</P> <P
class="lia-indent-padding-left-30px"><STRONG>Community.</STRONG> Study the ways
that people communicate, collaborate, share knowledge, and build communities
when they build software. An important aspect of this is making all kinds of
software development more accessible, inclusive, and sustainable.</P> <P
class="lia-indent-padding-left-30px"><STRONG>Well-being.</STRONG> Investigate
the intersections of happiness, satisfaction, and personal value with software
development activities so we can find ways to make development more fun,
enjoyable, and sustainable.</P> <P>&nbsp;</P> <P>As DVL continues to grow, this
will include cultivating a community of researchers, organizations, and
developers who share our love and commitment to this work. Our goal is for
everyone to benefit from our research, with the intent to develop easily
accessible work, optimized for developers and their communities. DVL will commit
to making the bulk of our findings open, accessible, and available. We hope that
you’ll follow along and utilize our upcoming work.</P> <P>&nbsp;</P> <H2>The
SPACE of Developer Productivity</H2> <P>DVL's first publication, <A title="The
SPACE of Developer Productivity: There's more to it than you think"
href="https://www.microsoft.com/en-us/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/?cid=techcommblog/"
target="_blank" rel="noopener"><EM>The SPACE of Developer Productivity: There's
more to it than you think</EM></A>, introduces a framework to help individuals,
teams, and organizations measure developer productivity in a more holistic and
impactful way.&nbsp; The framework includes five dimensions of software
development to present a more complete picture of productivity and well-being.
The framework is easily adaptable and flexible to many contexts. By including
measures across multiple dimensions (we recommend at least three), teams and
organizations can make better decisions and see better outcomes.</P>
<P>&nbsp;</P> <P>To learn more, watch Nicole present a deep dive into the SPACE
framework and its five dimensions, which are <STRONG>S</STRONG>: satisfaction
and well-being, <STRONG>P</STRONG>: performance, <STRONG>A</STRONG>: activity,
<STRONG>C</STRONG>: communication and collaboration, and <STRONG>E</STRONG>:
efficiency and flow. She’ll also discuss the ins and outs of developer
productivity, sharing common misconceptions as well as example metrics and how
the framework can work for you.</P> <P>&nbsp;</P> <CENTER><IFRAME
src="https://www.youtube.com/embed/t7SXM7njKXw" width="560" height="315"
frameborder="0" allowfullscreen="allowfullscreen" title="YouTube video player"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;
picture-in-picture"></IFRAME></CENTER> <P>&nbsp;</P> <H2>SPACE Framework in
Action: The Good Day Project</H2> <P>In conjunction with DVL’s launch, GitHub
published <A title="The Good Day Project – Personal analytics for good days"
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">&nbsp;The Good Day Project – Personal analytics
for good days</A>. The research presented a first look at the SPACE framework, a
two-week study that invited GitHub developers to take a survey and share their
engineering data to help identify what patterns and practices could help them
have “good days.” A few overarching discoveries into patterns the team
found:</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Finding
flow is key, and interruptions are a drag.</STRONG> Minimal or no interruptions
give developers an 82% chance of having a good day, but interruptions throughout
the day decrease the chance of a good day to just 7%.</P> <P
class="lia-indent-padding-left-30px"><STRONG>Meetings are both awesome and
terrible.</STRONG> Collaboration improves our work, but too many meetings can be
a blocker; going from two to three meetings per day lowered the chances of
developers making progress toward their goals by 60%.</P> <P
class="lia-indent-padding-left-30px"><STRONG>A two minute daily reflection can
help developers improve their days.</STRONG> Developers reported the daily
reflection was a great new habit, and seeing patterns gave them clear ideas for
what to change in their days.</P> <P
class="lia-indent-padding-left-30px">&nbsp;</P> <P>The data was also used to
classify developers’ days as Flowing or Disrupted. Taking a look at these
classifications shows us:</P> <P>&nbsp;</P> <TABLE border="1" width="100%">
<TBODY> <TR> <TD width="50%" height="42px"> <H4>Flowing Days</H4> </TD> <TD
width="50%" height="42px"> <H4>Disrupted Days</H4> </TD> </TR> <TR> <TD
width="50%" height="29px">Less than three meetings per day</TD> <TD width="50%"
height="29px">More than three meetings per day</TD> </TR> <TR> <TD width="50%"
height="29px">Interruptions during a small part of the day</TD> <TD width="50%"
height="29px">Interruptions during most of the day</TD> </TR> <TR> <TD
width="50%" height="29px">Progress towards goals most of the day</TD> <TD
width="50%" height="29px">Less progress towards goals</TD> </TR> </TBODY>
</TABLE> <P>&nbsp;</P> <P>When the study concluded, each participant received a
personalized report to help them optimize their days moving forward. To glean
more insight, including the full survey, read the <A title="The Good Day Project
– Personal analytics for good days"
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">report</A>.</P> <P>&nbsp;</P> Fri, 03 Dec 2021
18:59:02 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-developer-velocity-lab-a-research-initiative-to/ba-p/2333140
AlisonYu 2021-12-03T18:59:02Z Kickstart collaborative DevSecOps practices with
GitHub and Azure
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/kickstart-collaborative-devsecops-practices-with-github-and/ba-p/2357730
<H2>Kickstart collaborative DevSecOps practices with GitHub and Azure</H2>
<P>&nbsp;</P> <P>Companies on the forefront of digital transformation have seen
DevOps provide software engineers and operations teams with a faster and more
efficient way to develop code. Unfortunately, while DevOps practices have
enabled faster, more efficient development cycles, they’ve also uncovered a new
bottleneck—security. While many organizations have opted to push security to the
end of application development and management, this can be very costly. <A
href="https://securityboulevard.com/2020/09/the-importance-of-fixing-and-finding-vulnerabilities-in-development/#:~:text=According%20to%20the%20NIST%20(the,that%20should%20concern%20most%20organizations"
target="_blank" rel="noopener">NIST</A> estimated the cost of fixing a security
defect in production can be up to 60 times more expensive than during the
development cycle. Conversely, Digital leaders recognize the importance of
shifting security left and tackling vulnerabilities as soon as they arise. These
leaders are integrating security into delivery pipelines, leveraging modern
platform capabilities and fostering collaboration between the development and
security teams in the latest evolution of the DevOps methodology, DevSecOps.
Embracing DevSecOps is a software delivery advantage! By uncovering
vulnerabilities earlier, your team can save time remediating issues and
realizing compliancy, while also minimizing any associated costs.</P>
<P>&nbsp;</P> <P>So how can your organization begin their DevSecOps adoption
journey?</P> <P>&nbsp;</P> <P>It starts with incorporating security into the
early stages of the development lifecycle (shift left) along with providing
end-to-end observability to facilitate collaboration between the development and
security teams. At last year’s Ignite, we discussed ways to shift left by <A
href="https://azure.microsoft.com/en-us/blog/enabling-resilient-devops-practices-with-code-to-cloud-automation/"
target="_blank" rel="noopener">adding security scans to container images</A>
created as part of Continuous Integration (CI) workflow. This helps developers
scan for common vulnerabilities in their container images before pushing to a
container registry. Securing Container images is one great way of shifting
security left, but organizations also need to give visibility into delivery
pipelines and registry scans to their security teams.</P> <P>&nbsp;</P>
<P>At&nbsp;<A href="https://aka.ms/Build2021-BRK214" target="_blank"
rel="noopener">Microsoft Build 2021</A>, we are excited to announce the public
preview of <A href="https://azure.microsoft.com/en-us/services/security-center/"
target="_blank" rel="noopener">Azure Security Center</A> (ASC) integration with
GitHub Actions. The new capabilities are our first steps towards building shared
tooling and experience by extending the reporting from container scans into
Azure Security Center—providing security teams better insight and understanding
as to the source of vulnerable container images and the workflows and
repositories they come from.</P> <P>&nbsp;</P> <H1>Provide DevSecOps teams
observability into GitHub Action workflows</H1> <P>With this tighter integration
we are allowing DevSecOps teams to run vulnerability scans, resolve findings,
and visualize the security posture of workflows within their CI/CD pipeline.</P>
<P>&nbsp;</P> <P>CI/CD vulnerability scanning of container images helps shift
security left by offering increased visibility and control and by providing
CI/CD scan assessments to Azure Security Center (ASC). Now, your security teams
can access a holistic, 360-degree view across CI/CD pipelines and runtime
resources through CI/CD scan assessments in ASC. DevSecOps teams will now
receive greater, shared insight into development practices and potentially
vulnerable code, containers, and infrastructure.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_0-1621124575237.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280894i58E28FDD71FA96F3/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_0-1621124575237.png"
alt="samitjhaveri_0-1621124575237.png" /></span></P> <P>&nbsp;</P> <P>Going
forward, any workflow that pushes a container image without a scan action
present will alert the user with an ASC recommendation. Each ASC recommendation
details the affected resources along with a proposed remediation path and steps
to help each path achieve a “healthy” state. Below are details on how to enable
the new capabilities across GitHub and Azure to get you started with your
DevSecOps journey.</P> <P>&nbsp;</P> <H1>How to setup Azure Security Center for
GitHub integration</H1> <P>You can easily onboard this feature by navigating to
Settings-&gt;Integrations in Azure Security Center</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_1-1621124575266.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280897i2D917054CE1310E9/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_1-1621124575266.png"
alt="samitjhaveri_1-1621124575266.png" /></span></P> <P>&nbsp;</P> <P>After
clicking on Configure CI/CD integration, select the Microsoft Managed
Application Insights account pertaining your region of choice.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_2-1621124575294.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280895i1FDE5D441DC1D496/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_2-1621124575294.png"
alt="samitjhaveri_2-1621124575294.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>To enable CI/CD Scanning in GitHub, start by adding the connection string and
authentication token to publish the CI/CD scan results back to your Microsoft
Managed Application Insights account.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_3-1621124575361.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280899i8B234D73CC622E22/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_3-1621124575361.png"
alt="samitjhaveri_3-1621124575361.png" /></span></P> <P>&nbsp;</P> <P>Now it’s
time to harvest insights into container image vulnerabilities. After you’ve
enabled CI/CD scanning for images built and published from GitHub workflows, ASC
showcases any vulnerabilities found in those images. Of course, it’s important
to form a holistic picture of your data, and you can use these CI/CD scan
results along with registry scan results to trace the lifecycle of the image
from CI/CD to registry.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="samitjhaveri_4-1621124575373.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280898iDAAAE00808710D09/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_4-1621124575373.png"
alt="samitjhaveri_4-1621124575373.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>It’s important to think of this expanded scanning capability as the conduit
to foster collaboration among your developer and SecOps teams. CI/CD
vulnerability scanning gives much needed visibility into container images and
the GitHub workflows that are pushing these images. You can also help developers
scan their container images for common vulnerabilities—eliminating issues before
deploying to a container registry, a containerized web app, or a Kubernetes
cluster.</P> <P>&nbsp;</P> <H1>Start collaborating with GitHub and Azure</H1>
<P>This feature is currently in Public Preview so please use non-production
workflows while using this feature. This feature is available only in Public
Cloud. You will need to use the feature flag as shown to use the feature in
Azure Portal (<A style="font-family: inherit; background-color: #ffffff;"
title="https://ms.portal.azure.com/?"
href="https://ms.portal.azure.com/?feature.cicd=true#blade/Microsoft_Azure_Security/SecurityMenuBlade/5/0/"
target="_blank"
rel="noopener">https://ms.portal.azure.com/?feature.cicd=true#blade/Microsoft_Azure_Security/SecurityMenuBlade/5/0/</A><SPAN
style="font-family: inherit;">)</SPAN><SPAN style="font-family:
inherit;">.&nbsp;</SPAN>This feature flag will be removed in a few days.</P>
<P>&nbsp;</P> <P>To learn more about container security check out <A
href="https://aka.ms/DevSecOpsBlogDoc" target="_blank"
rel="noopener">documentation</A> and visit the <A
href="https://azure.microsoft.com/en-us/products/github/" target="_blank"
rel="noopener">GitHub and Azure</A> page to find the full list of GitHub and
Azure integrations. Don’t forget to check out the <A
href="https://aka.ms/DevSecOpsPaper" target="_blank" rel="noopener">6 tips for
integrating security into your DevOps practices</A> whitepaper to explore even
more ways to kickstart your DevSecOps journey.</P> <P>&nbsp;</P> <P>For any
questions regarding the public preview please send an email to <A
href="mailto:azseccontainerred@microsoft.com" target="_blank"
rel="noopener">azseccontainerred@microsoft.com</A></P> Thu, 10 Jun 2021 21:49:47
GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/kickstart-collaborative-devsecops-practices-with-github-and/ba-p/2357730
samit_jhaveri 2021-06-10T21:49:47Z Increase Efficiency with Azure Functions and
Power Platform
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/increase-efficiency-with-azure-functions-and-power-platform/ba-p/2370351
<H3><STRONG><SPAN data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none"> </SPAN></H3> <P><SPAN data-contrast="auto">In
2021,&nbsp;</SPAN><SPAN data-contrast="auto">there will be&nbsp;</SPAN><SPAN
data-contrast="auto">a</SPAN><SPAN data-contrast="auto">&nbsp;blog covering the
webinar of the month for the Low-code application development (LCAD) on Azure
solution.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">LCAD on
Azure&nbsp;is a solution that&nbsp;integrates the robust development
capabilities of lo</SPAN><SPAN data-contrast="auto">w&nbsp;</SPAN><SPAN
data-contrast="auto">code Microsoft Power Apps and the Azure
products</SPAN><SPAN data-contrast="auto">&nbsp;such as Azure Functions,
A</SPAN><SPAN data-contrast="auto">zure Logic Apps, and more.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">This month’s webinar&nbsp;is
‘</SPAN><A
href="https://info.microsoft.com/ww-Landing-IncreaseEfficiencyAzureFunctionsPowerPlatform.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN data-contrast="none">Increase Efficiency
with Azure Functions and Power Platform</SPAN></A><SPAN
data-contrast="auto">’</SPAN><SPAN data-contrast="auto">.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">T</SPAN><SPAN
data-contrast="auto">his blog&nbsp;</SPAN><SPAN
data-contrast="auto">will briefly recap</SPAN><SPAN
data-contrast="none"> </SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">, </SPAN><SPAN
data-contrast="auto">provide an overview of&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Azure Functions</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;reusability</SPAN></STRONG><SPAN
data-contrast="auto">,&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">Durable
Functions</SPAN></STRONG><SPAN data-contrast="auto">,&nbsp;</SPAN><SPAN
data-contrast="auto">and&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">how to
integrate Functions&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">across the Power Platform</SPAN></STRONG><SPAN
data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">This&nbsp;is a&nbsp;</SPAN><SPAN
data-contrast="auto">helpful&nbsp;</SPAN><SPAN data-contrast="auto">blog for
those new to Azure Functions and those who want to start&nbsp;integrating Azure
Functions&nbsp;into their Power Platform&nbsp;</SPAN><SPAN
data-contrast="auto">build cases.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_7-1621465684123.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281986i0DEEA1EF3C45C0D9/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_7-1621465684123.png"
alt="riduncan_7-1621465684123.png" /></span> </P> <H3><STRONG><SPAN
data-contrast="none">What&nbsp;is Low</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">code application development on Azure?</SPAN></STRONG><SPAN
data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></H3>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none"> </SPAN><SPAN
data-contrast="auto">was created to help developers build business applications
faster with less code.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Leveraging the Power Platform, and more specifically Power
Apps, yet helping them scale and extend their Power Apps with Azure
services. </SPAN></P> <P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse&nbsp;</SPAN><SPAN data-contrast="auto">employees</SPAN><SPAN
data-contrast="auto">&nbsp;track&nbsp;incoming&nbsp;inventory.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">That application would take months
to build, test, and deploy. Using Power Apps,&nbsp;it can take hours to build,
saving time and resources. </SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">However, say the warehouse employees want the application
to place procurement orders for additional&nbsp;inventory automatically when
current&nbsp;inventory hits a determined low.&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">In the past that would require another heavy lift
by the development team to rework their previous
application&nbsp;iteration.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Due to the&nbsp;integration of Power Apps and
Azure a professional developer can build an API&nbsp;in Visual Studio (VS) Code,
publish&nbsp;it to their Azure portal, and export the API&nbsp;to Power
Apps&nbsp;integrating&nbsp;it&nbsp;into their application as a custom
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">Afterwards,
that same API&nbsp;is re-usable&nbsp;indefinitely&nbsp;in the Power Apps’
studio, for future use with other applications, saving the company and
developers more time and resources.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To learn more about possible scenarios with LCAD
on Azure go through the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">self-guided
tour</SPAN></A><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Guided tour.JPG" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/282001i461FF92CD4E9752D/image-size/large?v=v2&amp;px=999"
role="button" title="Guided tour.JPG" alt="Guided tour.JPG" /></span></P>
<H3><STRONG><SPAN data-contrast="none">Azure Functions
Reusability</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></H3>
<P><SPAN data-contrast="auto">Why should you reuse functionality? There are four
key reasons: shorter development time, consistency, easier testing, and live
proven code.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_8-1621465684121.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281987i71741F5488C80B98/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_8-1621465684121.png"
alt="riduncan_8-1621465684121.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">The&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">shorter
development time</SPAN></STRONG><SPAN data-contrast="auto">&nbsp;is
driven&nbsp;by not having to build code again</SPAN><SPAN
data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">
For example,&nbsp;if you’re validating a phone number with your application you
don’t want to have to re-write the code for each nuanced small scenario, such as
rebuilding a web app, then a portal, etc.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Not re-writing code even&nbsp;if&nbsp;it&nbsp;is being
plugged&nbsp;into a new app enables shorter development time.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Additionally, this ties&nbsp;into
greater&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">consistency</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;in your code&nbsp;</SPAN><SPAN
data-contrast="auto">creating a much cleaner user experience</SPAN><SPAN
data-contrast="auto">&nbsp;across platforms and devices.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Reuse of functionality also
enables&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">easier
testing</SPAN></STRONG><SPAN data-contrast="auto">.&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">When reusing functionality you can
automate tests, however&nbsp;if yo</SPAN><SPAN data-contrast="auto">u write new
code each time,&nbsp;</SPAN><SPAN data-contrast="auto">for each&nbsp;iteration
you must manually test the code, subsequently&nbsp;increasing development
time.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">However,&nbsp;if
you reuse functionality, o</SPAN><SPAN data-contrast="auto">nce set up and spun
up, every time you test apps down the line, all you need to do&nbsp;is check the
Azure Function connection rather than starting from scratch.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Lastly,&nbsp;is the advantage
of&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">live proven
code</SPAN></STRONG><SPAN data-contrast="auto">, which can’t be
overstated</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">The separate
aspects of functionality are already proven to work, therefore speeding up the
application development lifecycle.</SPAN></P> <H3><STRONG><SPAN
data-contrast="auto">Durable Functions</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H3>
<P><SPAN data-contrast="auto">Durable Functions are an
extension&nbsp;</SPAN><SPAN data-contrast="auto">of</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">Azure Functions,
that&nbsp;</SPAN><SPAN data-contrast="auto">let you write stateful
functions&nbsp;in a serverless environment. The durable
extension&nbsp;</SPAN><SPAN data-contrast="auto">manages state, checkpoints and
restarts out of the box.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Durable Functions allow the creation of workflow
activities like&nbsp;</SPAN><SPAN data-contrast="auto">Lo</SPAN><SPAN
data-contrast="auto">gic&nbsp;</SPAN><SPAN data-contrast="auto">A</SPAN><SPAN
data-contrast="auto">pps</SPAN><SPAN data-contrast="auto">&nbsp;b</SPAN><SPAN
data-contrast="auto">ut</SPAN><SPAN data-contrast="auto">&nbsp;are</SPAN><SPAN
data-contrast="auto">&nbsp;completely customizable and&nbsp;</SPAN><SPAN
data-contrast="auto">scalable.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Durable F</SPAN><SPAN
data-contrast="auto">unctions can be called both synchronously and
asynchronously. Output from&nbsp;</SPAN><SPAN data-contrast="auto">F</SPAN><SPAN
data-contrast="auto">unctions can be saved to local variables and used
later&nbsp;in execution.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">State and executions are managed within an Azure
Table using the Event Sourcing Pattern and can be queried&nbsp;if
needed.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_9-1621465684132.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281988i54EB7C13D1166FF4/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_9-1621465684132.png"
alt="riduncan_9-1621465684132.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">For example,&nbsp;</SPAN><SPAN data-contrast="auto">if you
want to fill&nbsp;in a field on a&nbsp;</SPAN><SPAN data-contrast="auto">form
and</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">need</SPAN><SPAN data-contrast="auto">&nbsp;to
check&nbsp;</SPAN><SPAN data-contrast="auto">input&nbsp;information
across&nbsp;</SPAN><SPAN data-contrast="auto">multiple databases,</SPAN><SPAN
data-contrast="auto">&nbsp;the</SPAN><SPAN
data-contrast="auto">&nbsp;orchestration&nbsp;</SPAN><SPAN
data-contrast="auto">capabilities&nbsp;</SPAN><SPAN
data-contrast="auto">of&nbsp;</SPAN><SPAN data-contrast="auto">D</SPAN><SPAN
data-contrast="auto">urable Functions&nbsp;</SPAN><SPAN
data-contrast="auto">enable</SPAN><SPAN
data-contrast="auto">&nbsp;that&nbsp;</SPAN><SPAN
data-contrast="auto">functionality</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Moreover,&nbsp;if you
need</SPAN><SPAN data-contrast="auto">&nbsp;all the tasks to happen at the same
time or&nbsp;</SPAN><SPAN data-contrast="auto">need</SPAN><SPAN
data-contrast="auto">&nbsp;them to happen&nbsp;in different patterns</SPAN><SPAN
data-contrast="auto">, you c</SPAN><SPAN data-contrast="auto">ould build
th</SPAN><SPAN data-contrast="auto">at&nbsp;</SPAN><SPAN
data-contrast="auto">functionali</SPAN><SPAN
data-contrast="auto">ty&nbsp;</SPAN><SPAN data-contrast="auto">in Power Automate
or Logic apps.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">L</SPAN><SPAN data-contrast="auto">everaging Durable
Functions enables greater&nbsp;</SPAN><SPAN data-contrast="auto">detail and
options for functionality.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Lastly</SPAN><SPAN data-contrast="auto">,&nbsp;</SPAN><SPAN
data-contrast="auto">these Functions scale rapidly to meet demand levels,
however when&nbsp;inactive they&nbsp;</SPAN><SPAN data-contrast="auto">rest
until called upon again.</SPAN></P> <P>&nbsp;</P> <H3><STRONG><SPAN
data-contrast="auto">Functions&nbsp;Integration across the Power
Platform</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H3>
<H4><STRONG><SPAN data-contrast="auto">Power Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H4>
<P><SPAN data-contrast="auto">There are 3 types of Power Apps&nbsp;available to
integrate with Azure Functions.&nbsp;</SPAN><SPAN data-contrast="auto">Note that
this blog will be covering JavaScript, however you can write Azure Functions in
any language.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">First,
there are&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Dataverse</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;forms</SPAN></STRONG><SPAN data-contrast="auto">.
Dataverse forms are used within Model Drive</SPAN><SPAN data-contrast="auto">n
applications that can contain JavaScript&nbsp;</SPAN><SPAN
data-contrast="auto">F</SPAN><SPAN data-contrast="auto">unctions that fire on
load or property change. These functions can call out to Azure Functions for
long running queries.&nbsp;</SPAN><SPAN data-contrast="auto">Thus, enabling your
colleagues to leverage your&nbsp;Azure Function.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">Second, are&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Power Component Framework controls</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;(PCFs). They are a web packet that you can
put&nbsp;in both model-driven app forms and canvas apps.&nbsp;</SPAN><SPAN
data-contrast="auto">The code can be called from either place,&nbsp;if used to
call out an Azure Function&nbsp;it creates a double layer of reusability and can
separate deployment for use across&nbsp;</SPAN><SPAN
data-contrast="auto">your</SPAN><SPAN
data-contrast="auto">&nbsp;business.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Third, are&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Power Apps&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">P</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">ortals</SPAN></STRONG><SPAN data-contrast="auto">. These
scripts are very similar to&nbsp;</SPAN><SPAN
data-contrast="auto">Dataverse</SPAN><SPAN data-contrast="auto">&nbsp;forms and
can be embedded&nbsp;into a portal to call&nbsp;</SPAN><SPAN
data-contrast="auto">any web&nbsp;</SPAN><SPAN
data-contrast="auto">API&nbsp;and</SPAN><SPAN
data-contrast="auto">&nbsp;call&nbsp;</SPAN><SPAN
data-contrast="auto">an&nbsp;</SPAN><SPAN data-contrast="auto">Azure
Function</SPAN><SPAN data-contrast="auto">&nbsp;from the portal</SPAN><SPAN
data-contrast="auto">. Security will have to be handled differently for public
facing po</SPAN><SPAN data-contrast="auto">rtals than&nbsp;internal
applications.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_10-1621465684134.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281994i50A2E1296CC758AE/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_10-1621465684134.png"
alt="riduncan_10-1621465684134.png" /></span></P> <H3><STRONG><SPAN
data-contrast="auto">Power Automate</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H3>
<P><SPAN data-contrast="auto">In the webinar Lee</SPAN><SPAN
data-contrast="auto">&nbsp;Baker</SPAN><SPAN data-contrast="auto">&nbsp;covers
the stages of when</SPAN><SPAN data-contrast="auto">&nbsp;and&nbsp;</SPAN><SPAN
data-contrast="auto">how to connect a Power Automate flow to an Azure
Function.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">When?&nbsp;</SPAN></STRONG><SPAN data-contrast="auto">You
c</SPAN><SPAN data-contrast="auto">an start when a record&nbsp;is
selected&nbsp;in a model driven app, hitting the on-demand flow button,
pus</SPAN><SPAN data-contrast="auto">hes</SPAN><SPAN
data-contrast="auto">&nbsp;those records&nbsp;</SPAN><SPAN
data-contrast="auto">to Power Automate</SPAN><SPAN data-contrast="auto">. Or
you&nbsp;</SPAN><SPAN data-contrast="auto">can&nbsp;</SPAN><SPAN
data-contrast="auto">use</SPAN><SPAN
data-contrast="auto">&nbsp;standard&nbsp;</SPAN><SPAN
data-contrast="auto">Dataverse triggers&nbsp;</SPAN><SPAN
data-contrast="auto">when creating, reading, updating, and deleting
(CRUD)</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN data-contrast="auto">How?</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN data-contrast="auto">HTTP
request actions from Power Automate or Logic Apps, can put data or
URLs&nbsp;</SPAN><SPAN data-contrast="auto">incorporate&nbsp;</SPAN><SPAN
data-contrast="auto">and get payload</SPAN><SPAN
data-contrast="auto">s</SPAN><SPAN data-contrast="auto">&nbsp;back to
use&nbsp;in Azure Functions</SPAN><SPAN data-contrast="auto">, or</SPAN><SPAN
data-contrast="auto">&nbsp;you&nbsp;</SPAN><SPAN
data-contrast="auto">can&nbsp;</SPAN><SPAN data-contrast="auto">build a custom
connector</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">You would build a custom connector
because&nbsp;</SPAN><SPAN data-contrast="auto">HTTP requests&nbsp;</SPAN><SPAN
data-contrast="auto">are&nbsp;</SPAN><SPAN
data-contrast="auto">often</SPAN><SPAN data-contrast="auto">&nbsp;blocked by
data loss policies&nbsp;in Power Platform&nbsp;</SPAN><SPAN
data-contrast="auto">environments but</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">can&nbsp;</SPAN><SPAN data-contrast="auto">circumnavigate
policies</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Custom connectors&nbsp;</SPAN><SPAN
data-contrast="auto">can be&nbsp;</SPAN><SPAN
data-contrast="auto">created&nbsp;in accordance with data loss&nbsp;</SPAN><SPAN
data-contrast="auto">policies but&nbsp;pull the HTTP request directly&nbsp;into
the canvas application via Azure Functions for a secure and streamlined
approach.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_11-1621465684126.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281993iC659EA39B87CCF71/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_11-1621465684126.png"
alt="riduncan_11-1621465684126.png" /></span></P> <H3><STRONG><SPAN
data-contrast="auto">Conclusion</SPAN></STRONG></H3> <P><SPAN
data-contrast="auto">Th</SPAN><SPAN data-contrast="auto">is&nbsp;is just the
beginning of what&nbsp;is possible with the</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">integration
of&nbsp;</SPAN><SPAN data-contrast="auto">APIs&nbsp;into&nbsp;</SPAN><SPAN
data-contrast="auto">Power Apps&nbsp;</SPAN><SPAN
data-contrast="auto">via&nbsp;</SPAN><SPAN data-contrast="auto">Azure
Functions</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-contrast="auto">&nbsp;To learn more about the&nbsp;integration of Azure
Functions and Power Apps watch&nbsp;</SPAN><SPAN
data-contrast="auto">the&nbsp;</SPAN><SPAN
data-contrast="auto">webinar</SPAN><SPAN
data-contrast="auto">&nbsp;covered&nbsp;in this blog</SPAN><SPAN
data-contrast="auto">&nbsp;titled “</SPAN><A
href="https://info.microsoft.com/ww-Landing-IncreaseEfficiencyAzureFunctionsPowerPlatform.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN data-contrast="none">Increase Efficiency
with Azure Functions and Power Platform</SPAN></A><SPAN
data-contrast="auto">”</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P aria-level="1"><SPAN data-contrast="auto">To get hands on
experience creating a custom connector and extending a Power App with custom
code&nbsp;</SPAN><SPAN data-contrast="auto">as covered&nbsp;in this
blog,&nbsp;</SPAN><SPAN data-contrast="auto">start with the new learning path
“</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Transform your
business applications with fusion development</SPAN><SPAN
data-contrast="none">”.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="1">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_12-1621465684128.jpeg" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281995i3181718C12E14EC9/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_12-1621465684128.jpeg"
alt="riduncan_12-1621465684128.jpeg" /></span></P> <P><SPAN
data-contrast="none">After completing the learning path,&nbsp;i</SPAN><SPAN
data-contrast="none">f you want to learn even more about how extend your low
code applications with Azure and establish</SPAN><SPAN
data-contrast="none">ing&nbsp;</SPAN><SPAN data-contrast="none">a fusion
development team&nbsp;in your organization read the
accompanying&nbsp;</SPAN><SPAN data-contrast="none">e</SPAN><SPAN
data-contrast="none">-</SPAN><SPAN data-contrast="none">b</SPAN><SPAN
data-contrast="none">ook&nbsp;</SPAN><SPAN data-contrast="none">“</SPAN><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Fusion development
approach to building apps using Power Apps</SPAN><SPAN
data-contrast="none">”.</SPAN></A></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_13-1621465684130.jpeg" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281997i859947C45CCB8DEB/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_13-1621465684130.jpeg"
alt="riduncan_13-1621465684130.jpeg" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
Fri, 03 Dec 2021 18:55:35 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/increase-efficiency-with-azure-functions-and-power-platform/ba-p/2370351
riduncan 2021-12-03T18:55:35Z Deprecating the Distribution of Microsoft
Container Images via Docker Hub
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deprecating-the-distribution-of-microsoft-container-images-via/ba-p/2366861
<H2>Summary</H2> <P>As containers and cloud native workloads continue to grow,
ensuring that customers can reliably acquire vendor artifacts becomes crucial.
Microsoft is committed to offer its customers reliable and performant experience
for pulling Microsoft container images from the Microsoft Container Registry
(MCR or mcr.microsoft.com). MCR contains the full catalog of container images
produced by Microsoft with their most up-to-date versions and tags. By
leveraging Azure’s global footprint, MCR offers public access to Microsoft’s
images globally. With that in mind, we are deprecating all <A
href="https://hub.docker.com/publishers/microsoftowner"
target="_self">/microsoft</A> org container images hosted in Docker Hub
repositories on June 30<SUP>th</SUP>, 2021.</P> <P>&nbsp;</P> <H2>How does this
impact you?</H2> <P>If you continue to reference Microsoft container images
using repositories in Docker Hub, this will have impact on your development,
deployment, and automation scripts.</P> <P>Examples for such references are:
<CODE>FROM microsoft/*</CODE> in Dockerfile or <CODE>docker run
microsoft/*</CODE> in automation scripts. You can leverage <A
href="https://grep.app/" target="_blank" rel="noopener">https://grep.app/</A> to
discover such references in OSS scripts.</P> <UL> <LI>Starting June
1<SUP>st</SUP>, 2021 pulls of <A
href="https://hub.docker.com/publishers/microsoftowner"
target="_self">microsoft/</A> org container images from Docker Hub registry will
be throttled according to Docker Terms of Use. This will limit the number of
pulls that you are allowed within certain time period.</LI> <LI>Starting July
1<SUP>st</SUP>, 2021 repositories from microsoft/ org on Docker Hub will be
removed. At this point development, deployment and automation scripts that still
reference <A href="https://hub.docker.com/publishers/microsoftowner"
target="_self">microsoft/</A> org images from Docker Hub registry will
fail.</LI> </UL> <P>To avoid any impact on your development, deployment or
automation scripts, you must update <CODE>docker pull</CODE> commands,
<CODE>FROM</CODE> statements in Dockerfiles, and other references to
<CODE>microsoft/</CODE> container images to explicitly reference the
<CODE>mcr.microsoft.com</CODE> registry.</P> <P>We understand that certain
repositories from <A href="https://hub.docker.com/publishers/microsoftowner"
target="_self">microsoft/</A> org on Docker Hub registry are highly trafficked,
and customers relying on them may not be able to complete these changes by June
30<SUP>th</SUP>, 2021. We are working to identify those repositories and provide
extension for them. A list of such repositories and for how long they will be
available will be published on <A
href="https://github.com/microsoft/containerregistry/" target="_blank"
rel="noopener">MCR’s GitHub repository</A> by June 1<SUP>st</SUP>, 2021.</P>
<P>&nbsp;</P> <H2>Mapping of Docker Hub repositories to MCR repositories</H2>
<P>Mapping between the repository names on Docker Hub and MCR can be found on <A
href="https://github.com/microsoft/containerregistry/blob/master/docs/dockerhub-to-mcr-repo-mapping.md"
target="_self">MCR's GitHub repository</A>.</P> <P>&nbsp;</P> <H2>Guidance for
Consuming Public Container Images</H2> <P>Having a controlled workflow for
consumption of public content like container images from Docker Hub and MCR is a
key for building a secured and reliable software supply chain. Please see the <A
href="https://opencontainers.org/posts/blog/2020-10-30-consuming-public-content/"
target="_blank" rel="noopener">Open Container Initiative’s Consuming Public
Content</A> for general guidance and <A
href="https://aka.ms/consuming-public-content" target="_blank"
rel="noopener">Azure’s guidance for consuming public content</A>.</P>
<P>&nbsp;</P> <H2>Background</H2> <P>Back in 2018, we announced the <A
href="https://azure.microsoft.com/en-us/blog/microsoft-syndicates-container-catalog/"
target="_blank" rel="noopener">transition of Microsoft container images hosting
to MCR with syndication to Docker Hub</A>, which laid the ground for worldwide
distribution of Microsoft container images. Last year <A
href="https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/"
target="_blank" rel="noopener">Docker announced an update of their terms of
use</A> and <A
href="https://www.docker.com/blog/docker-hub-image-retention-policy-delayed-and-subscription-updates/"
target="_blank" rel="noopener">plans for image retention</A> – both changes
impacting pulls of container images from Docker Hub. Microsoft and Docker have
worked closely to provide smooth transition for customers who need to pull
/microsoft org container images. Docker Hub pages were updated to reflect the
new pull location, mcr.microsoft.com, and are continuously updated with
information how to pull up-to-date tags from MCR. We will continue this
collaboration to provide an easy and frictionless discoverability mechanism for
Microsoft container images through Docker Hub.</P> <P>&nbsp;</P> <H2>How to get
additional help?</H2> <P>We understand that there may be unanswered questions.
You can get additional help by submitting an <A
href="https://github.com/microsoft/containerregistry/issues/new" target="_blank"
rel="noopener">issue on GitHub</A> or sending an email to <A
href="mailto:mcrfeedback@microsoft.com" target="_blank"
rel="noopener">mcrfeedback@microsoft.com</A>.</P> Wed, 19 May 2021 19:56:31 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deprecating-the-distribution-of-microsoft-container-images-via/ba-p/2366861
toddysm 2021-05-19T19:56:31Z Plan your Microsoft Azure experience at Microsoft
Build
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-build/ba-p/2365265
<P>Microsoft Build, our free digital event, starts next week and runs from May
25-27, 2021. We thought you might be interested to learn ways you can plan to
experience the latest set of developer tools, platforms, and services helping
you build amazing things on your terms, anywhere, with Microsoft and Azure.
You’ll also have a chance to speak with Microsoft experts and have the
opportunity to continue your technical learning journey.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/home" target="_self">Register</A>&nbsp;to
gain full access to all Microsoft Build has to offer—it’s easy and at no-cost to
you.</P> <P>&nbsp;</P> <P><STRONG>Create the perfect event schedule</STRONG></P>
<P>Explore the session catalog to find expert speakers, interactive sessions,
and more. After registering, get started on your journey using the <A
href="https://mybuild.microsoft.com/sessions" target="_blank"
rel="noopener">Build session catalogue</A>.</P> <P>&nbsp;</P> <P>Below are a set
of featured Technical Sessions kicking off the key themes of Build 2021, with
deeper related Breakout Sessions—all of which you won’t want to miss:</P>
<P>&nbsp;</P> <P><STRONG>Increase Developer Velocity with Microsoft’s end-to-end
developer platform:</STRONG></P> <UL> <LI>TS01: <A
href="https://mybuild.microsoft.com/sessions/5ac55e8d-82e5-4b9f-b9bc-d51187761b42"
target="_blank" rel="noopener">Increase Developer Velocity with Microsoft’s
end-to-end developer platform</A></LI> <LI>BRK210: <A
href="https://mybuild.microsoft.com/sessions/5d379e17-9e56-4afb-a871-d3ab807c75f1"
target="_blank" rel="noopener">What's new in Windows 10 for ALL
developers</A></LI> <LI>BRK211: <A
href="https://mybuild.microsoft.com/sessions/309d47fd-5319-42cf-a54f-3a177653ab63"
target="_blank" rel="noopener">Power Platform is the best way for teams to build
together</A></LI> <LI>BRK212: <A
href="https://mybuild.microsoft.com/sessions/2575e7f5-b57b-487d-950f-ab91b7238f00"
target="_blank" rel="noopener">What's new in Visual Studio Code</A></LI>
<LI>BRK213: <A
href="https://mybuild.microsoft.com/sessions/76ebac39-517d-44da-a58e-df4193b5efa9"
target="_blank" rel="noopener">The future of modern application development with
.NET</A></LI> <LI>BRK214: <A
href="https://mybuild.microsoft.com/sessions/87cc3b82-bc57-483d-90b3-e91e12516352"
target="_blank" rel="noopener">Scaling DevSecOps with GitHub and Azure</A></LI>
<LI>BRK215: <A
href="https://mybuild.microsoft.com/sessions/1b7f92ef-71a6-4a64-bece-001f94a2b7b8"
target="_blank" rel="noopener">Empowering developers with powerful tooling and
enabling frictionless app adoption</A></LI> <LI>BRK216: <A
href="https://mybuild.microsoft.com/sessions/2a64cf46-9578-4c40-b503-00ad0ec21813"
target="_blank" rel="noopener">Building Low Code Vertical Apps using the Power
Platform</A></LI> </UL> <P><STRONG>Deliver new intelligent cloud-native
applications by harnessing the power of Data and AI:</STRONG></P> <UL> <LI>TS02:
<A
href="https://mybuild.microsoft.com/sessions/46f12ac0-4d74-4a53-95b1-22e406edd72c"
target="_blank" rel="noopener">Harness the power of data in your applications
with Azure</A></LI> <LI>BRK220: <A
href="https://mybuild.microsoft.com/sessions/2ba55238-d398-46f9-9ff2-eafcd9d69df3"
target="_blank" rel="noopener">Build intelligent applications infused with
world-class AI</A></LI> <LI>BRK221: <A
href="https://mybuild.microsoft.com/sessions/10930f2e-ad9c-460b-b91d-844d17a5a875"
target="_blank" rel="noopener">Understand the ML process and embed models into
apps</A></LI> <LI>BRK222: <A
href="https://mybuild.microsoft.com/sessions/bd7db37e-c50e-45bc-9e7e-6f791881b887"
target="_blank" rel="noopener">Scale, analyze and serve Microsoft Dynamics 365
application data with Azure</A></LI> <LI>BRK223: <A
href="https://mybuild.microsoft.com/sessions/f06287c8-8e56-452f-ae2f-e739c2be4870"
target="_blank" rel="noopener">Building Digital Twins, Mixed Reality and
Metaverse Apps</A></LI> </UL> <P><STRONG>Build cloud-native applications your
way and run them anywhere:</STRONG></P> <UL> <LI>TS03: <A
href="https://mybuild.microsoft.com/sessions/2debfc2e-f0b3-4adf-bcec-d126930f806f"
target="_blank" rel="noopener">Build cloud-native applications that run
anywhere</A></LI> <LI>BRK230: <A
href="https://mybuild.microsoft.com/sessions/b66c3a65-4d11-4c1b-9b29-4df873a8cf4d"
target="_blank" rel="noopener">Run Open Source Applications your way with
Microsoft Azure</A></LI> <LI>BRK231: <A
href="https://mybuild.microsoft.com/sessions/fd09c810-26ad-45bd-957b-1a70b74d93ec"
target="_blank" rel="noopener">Modernize applications using containers</A></LI>
<LI>BRK232: <A
href="https://mybuild.microsoft.com/sessions/c52cef38-5c92-4bbd-ae49-f78ded025e04"
target="_blank" rel="noopener">Serverless: Event-driven application
development</A></LI> <LI>BRK233: <A
href="https://mybuild.microsoft.com/sessions/bafa8204-25b2-44c1-86a0-2c852c1e3794"
target="_blank" rel="noopener">Build consistent hybrid and multicloud
applications with Azure Arc</A></LI> </UL> <P><STRONG>Follow
#MSBuild</STRONG></P> <P>Explore the latest event news, trending topics, and
share your point of view in real time with your community. Join us on Twitter
and LinkedIn by using #MSBuild.</P> <P>&nbsp;</P> <P><A
href="https://twitter.com/msdev" target="_blank" rel="noopener">Join us on
social &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Connection Zone</STRONG></P>
<P>Only at #MSBuild can you strengthen your network with local connections and
meet with Microsoft product teams to help influence the future of products and
services.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/community-connect" target="_blank"
rel="noopener">Connect today&gt;</A></P> <P>&nbsp;</P> <P><STRONG>Learning
Zone</STRONG></P> <P>The Learning Zone is the center for training, development,
and certification with Microsoft. Whatever your style of learning happens to be,
you can find content and interactive opportunities to boost and diversify your
cloud skills.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/learning-zone" target="_blank"
rel="noopener">Explore trainings &gt;</A></P> <P>&nbsp;</P> <P><STRONG>[New] to
Microsoft Build:&nbsp;Product Roundtables!</STRONG> <BR />There is so much for
you to learn by attending Microsoft Build. And while you attend, we want to
learn from you too! Join group discussions between you, fellow attendees and our
product teams to share insights that will help shape the future of the products
you use.&nbsp;Follow these steps to sign-up for a Product Roundtable:&nbsp;</P>
<P>&nbsp;</P> <UL> <LI>Go to <A href="https://mybuild.microsoft.com"
target="_blank" rel="noopener">https://mybuild.microsoft.com</A> and select “<A
href="https://register.build.microsoft.com/" target="_blank"
rel="noopener">Register Now</A>” (You must be registered for Build to
participate in a Product Roundtable)</LI> <LI>Once you’re registered and are
authenticated, click the “<A
href="https://mybuild.microsoft.com/community-connect" target="_blank"
rel="noopener">Connection Zone</A>” drop-down and select “<A
href="https://sessions.mybuild.microsoft.com/Page/Timezone?redir=sessionscheduler_roundtablehttps://sessions.mybuild.microsoft.com/Account/Login?ReturnUrl=/Page/Timezone?redir=sessionscheduler_roundtable"
target="_blank" rel="noopener">Product Roundtables</A>”.</LI> <LI>Browse the
list of available Product Roundtable meetings; search for a keyword or choose
from the available filters on the left.</LI> </UL> <P>&nbsp;</P> <P><A
href="https://sessions.mybuild.microsoft.com/Account/Login?ReturnUrl=/Page/Timezone?redir=sessionscheduler_roundtable"
target="_blank" rel="noopener">Participate in a Product Roundtable &gt;</A></P>
<P>&nbsp;</P> <P><STRONG>One-on-one consultation</STRONG></P> <P>Schedule your
45-minute, one-on-one consultation with a Microsoft engineer to architect,
design, implement or migrate your solutions.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/app-consult" target="_blank"
rel="noopener">Schedule today &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Continue
your learning journey</STRONG></P> <P>Discover more in-depth learning paths,
training options, communities, and certification details across all Microsoft
cloud solutions from one place.</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/learnatbuild" target="_blank" rel="noopener">Explore
trainings &gt;</A></P> Thu, 20 May 2021 20:59:13 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-build/ba-p/2365265
Mark Winters 2021-05-20T20:59:13Z Microsoft Power Platform is bridging the
digital divide in Latin America
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-power-platform-is-bridging-the-digital-divide-in-latin/ba-p/2356463
<P>Sharif Nasser grew up with the dream of becoming an inventor.</P>
<P>&nbsp;</P> <P>As a teenager, he became interested in AI and machine learning
and became a strong believer in technology as a powerful tool for equity and
progress. While currently studying Robotics at Tecnolo’gico de Monterrey, in
Monterrey, Mexico, he uses his technical knowledge and expertise to bridge the
digital divide across Latin America.</P> <P>&nbsp;</P> <P>Through large scale
online teaching ventures of up to 5000 students, he is making technology more
accessible to all. Learn more about his journey and his belief in low code
platforms to lower the barrier to entry: <U><FONT
color="#0000FF">aka.ms/power-students</FONT></U>.</P> <P>&nbsp;</P> <P>If you
would like to sharpen your own technical skills, check out:
aka.ms/trainingandcertification.</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=lMStzDY9TKQ&amp;list=PL6ihFEvicZRClm9-3ohcw3xSw-ZZYbeJo"
align="center" size="large" width="600" height="338" uploading="false"
thumbnail="http://i.ytimg.com/vi/lMStzDY9TKQ/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> Fri, 14 May 2021
22:36:47 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-power-platform-is-bridging-the-digital-divide-in-latin/ba-p/2356463
Elsa_Ramesh 2021-05-14T22:36:47Z Unlock the Future of Azure IoT through Power
Platform
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/unlock-the-future-of-azure-iot-through-power-platform/ba-p/2318270
<P><STRONG><SPAN data-contrast="none"><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Azure
IoT Gif maker.gif" style="width: 600px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/277510i56E7681A2EEDBEED/image-size/large?v=v2&amp;px=999"
role="button" title="Azure IoT Gif maker.gif" alt="Azure IoT Gif maker.gif"
/></span></SPAN></STRONG></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none"> </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month&nbsp;there&nbsp;will&nbsp;be
a&nbsp;monthly blog covering the&nbsp;webinar&nbsp;of the month for the Low-code
application development (LCAD) on Azure solution.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">LCAD on Azure is a solution
to&nbsp;demonstrate&nbsp;the robust development capabilities of integrating
low-code Microsoft Power Apps and the Azure products you may be familiar
with. </SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">This
month’s&nbsp;webinar&nbsp;is ‘Unlock the Future of Azure IoT through Power
Platform’.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none"> In this blog
I will briefly recap </SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">, provide an overview
of&nbsp;IoT on Azure and Azure Functions,&nbsp;how to pull an Azure Function
into Power Automate, and&nbsp;how to integrate your Power Automate flow into
Power Apps.</SPAN></P> <P><SPAN data-contrast="none"> </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">What is Low-code application development
on Azure?</SPAN></STRONG><SPAN data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none"> was created to
help developers build business applications faster with less code.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Leveraging the Power Platform, and more
specifically Power Apps, yet helping them scale and extend their Power Apps with
Azure services.</SPAN></P> <P><SPAN data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse employees’ track incoming inventory.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">That application would take months to build, test,
and deploy.&nbsp;Using&nbsp;Power&nbsp;Apps,&nbsp;it can take hours to build,
saving time and resources.  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">However, say the warehouse employees want the
application to place procurement orders for&nbsp;additional&nbsp;inventory
automatically when current inventory hits a determined low.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In the past that would require
another heavy lift by the development team
to&nbsp;rework&nbsp;their&nbsp;previous&nbsp;application
iteration.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Due to the integration of Power Apps and Azure a
professional developer can build an&nbsp;API&nbsp;in Visual Studio (VS) Code,
publish it to their Azure portal, and export the API to Power Apps integrating
it into their application as a custom connector.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Afterwards, that same API is re-usable
indefinitely in the Power Apps’ studio, for future use with other applications,
saving the company and developers more time and resources.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">IoT on Azure and Azure
Functions</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-contrast="auto">The&nbsp;goal&nbsp;of&nbsp;this&nbsp;webinar&nbsp;is
to&nbsp;understand&nbsp;how&nbsp;to&nbsp;use IoT hub and Power Apps
to&nbsp;control&nbsp;an&nbsp;IoT device.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To start, one would&nbsp;write the code
in&nbsp;Azure&nbsp;IoT Hub, to send&nbsp;commands&nbsp;directly&nbsp;to your
IoT&nbsp;device.&nbsp;In this&nbsp;webinar&nbsp;Samuel&nbsp;wrote in&nbsp;Node
for IoT Hub, and&nbsp;wrote two&nbsp;basic commands,&nbsp;toggle&nbsp;fan on,
and off.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The commands are sent via the code
in&nbsp;Azure&nbsp;IoT Hub, which&nbsp;at first&nbsp;run locally.&nbsp;Once
tested and confirmed to be running properly the next question is how
can&nbsp;one&nbsp;rapidly&nbsp;call the API&nbsp;from anywhere across the
globe?</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">The answer is to
create a flow in&nbsp;Power Automate, and&nbsp;connect that flow to a&nbsp;Power
App, which&nbsp;will be&nbsp;a complete dashboard that&nbsp;controls&nbsp;the
IoT device&nbsp;from anywhere in the world.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-contrast="auto">To&nbsp;accomplish&nbsp;this&nbsp;task,&nbsp;you&nbsp;have
to&nbsp;first create an Azure Function, which will then be pulled into Power
Automate&nbsp;using a “Get” function creating the flow.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">Once&nbsp;you've&nbsp;built
the&nbsp;Azure&nbsp;Function,&nbsp;run&nbsp;and test it locally first, test
the&nbsp;on and off&nbsp;states&nbsp;via the Function&nbsp;URL.</SPAN></P>
<P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To build&nbsp;a&nbsp;trigger&nbsp;for&nbsp;the
Azure Function, in this case a Power Automate flow, you need&nbsp;to
create&nbsp;an Azure resources group to check the Azure&nbsp;Function
and&nbsp;test&nbsp;its&nbsp;local capabilities.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">If the test fails it could potentially be that you
did&nbsp;not create or have an access token for the IoT device.&nbsp;To connect
a device, IoT or otherwise to the cloud, you need to have an access
token.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In the&nbsp;webinar&nbsp;Samuel added&nbsp;two
application settings&nbsp;to his function for the on and off
commands.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After adding these access tokens and adjusting the
settings of the IoT device,&nbsp;Samuel was able to successfully run his Azure
Function.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Azure
Function automated with Power Automate</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After building&nbsp;the&nbsp;Azure Function, you
now can build your Power Automate flow&nbsp;to start building your globally
accessible&nbsp;dashboard&nbsp;to&nbsp;operate&nbsp;your IoT device.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Samuel&nbsp;starts by&nbsp;building
a basic Power Automate&nbsp;framework,
then&nbsp;flow,&nbsp;and&nbsp;demonstrates&nbsp;how to test&nbsp;the flow once
complete.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">He starts with a&nbsp;HTTP&nbsp;request,
and&nbsp;implements a “Get”&nbsp;command.&nbsp;From there it is a
straightforward process, to test and get the IoT Device to run.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Power Automate flow into
Power&nbsp;Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After building your Power Automate flow, you
develop a simple UI to toggle the fan on and off.&nbsp;Do this
by&nbsp;building&nbsp;a canvas Power App and importing&nbsp;the Power Automate
flow into the app.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To start,&nbsp;create a blank canvas app, and name
it.&nbsp;In&nbsp;the Power Apps ribbon, you&nbsp;select&nbsp;“button”,
and&nbsp;pick the button’s&nbsp;source,&nbsp;selecting&nbsp;“Power
Automate”&nbsp;and&nbsp;“add&nbsp;a flow”.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Select the flow that is connected to the Azure IoT
device, its name should be reflected in the selection menu.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">If everything is running properly your IoT device
will turn on.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">FYI</SPAN></STRONG><SPAN data-contrast="auto">&nbsp;in the
webinar Samuel is running out of time, so he creates a new Power Automate flow,
which he imports into the canvas app.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Summary</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Make sure to&nbsp;watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-UnlocktheFutureofAzureIoTthroughPowerPlatform.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN
data-contrast="none">webinar </SPAN></A><SPAN data-contrast="none">to learn more
about&nbsp;Azure IoT&nbsp;and how to&nbsp;import Azure Functions&nbsp;into your
Power Apps.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Additionally,
there will be a Low-code application development on Azure ‘Learn Live’ session
during&nbsp;Build, covering the new&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">.NET&nbsp;x Power Apps
learning path</SPAN></A><SPAN data-contrast="none">, covering integrations with
Azure Functions, Visual Studio, and&nbsp;API Management.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Lastly, tune in to&nbsp;the Power
Apps x Azure featured session&nbsp;at Build&nbsp;on May 25</SPAN><SPAN
data-contrast="none">th</SPAN><SPAN data-contrast="none">,&nbsp;to learn more
about the next Visual Studio extensions, Power Apps source code, and
the&nbsp;ALM&nbsp;accelerator package.&nbsp;Start registering&nbsp;for Microsoft
Build&nbsp;at&nbsp;</SPAN><A href="https://register.build.microsoft.com/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft Build
2021.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
Wed, 19 May 2021 12:19:21 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/unlock-the-future-of-azure-iot-through-power-platform/ba-p/2318270
riduncan 2021-05-19T12:19:21Z Visual Studio 2019 Tricks and Techniques - Review,
sort of
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/visual-studio-2019-tricks-and-techniques-review-sort-of/ba-p/2280956
<P>Earlier this year, Packt released a new book...</P> <P>&nbsp;</P> <H1
id="title" class="a-spacing-none a-text-normal"><SPAN
class="a-size-extra-large">Visual Studio 2019 Tricks and Techniques: A
developer's guide to writing better code and maximizing productivity</SPAN></H1>
<P>&nbsp;</P> <P><A href="http://aka.ms/VS2019Book" target="_self"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="VS2019Cover.png" style="width: 809px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/274498i98828BF915DFECFC/image-size/large?v=v2&amp;px=999"
role="button" title="VS2019Cover.png" alt="VS2019Cover.png" /></span></A></P>
<P>&nbsp;</P> <P><A href="http://aka.ms/VS2019Book" target="_blank"
rel="noopener">http://aka.ms/VS2019Book</A>&nbsp;</P> <P>&nbsp;</P> <P>But I
should be honest. I was involved in this book. Let me find a version of the
cover with my name on it...</P> <P>&nbsp;</P> <P><A
href="http://aka.ms/VS2019Book" target="_self"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="VS2019Cover02.png" style="width: 637px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/274499i276B431C5E80328F/image-size/large?v=v2&amp;px=999"
role="button" title="VS2019Cover02.png" alt="VS2019Cover02.png"
/></span></A></P> <P>&nbsp;</P> <P>There you go. I wrote the foreword! It was a
great and wonderful thing! At least, I think it was. I really can't remember
what I wrote. I'll go read it...</P> <P>&nbsp;</P> <P>Oh, I like how I opened
the foreword...</P> <P>&nbsp;</P> <P><EM>"By combining Visual Studio Code and
Visual Studio (VS), the brand is over two times more commonly used by developers
than any other environment (Stack Overflow, 2019). What that means is that this
topic is for 80% of all developers."</EM></P> <P>&nbsp;</P> <P>Have you thought
about that? In this day and age, when there are so many IDE options for
developers to pick from, they simply are choosing Visual Studio. There are many
reasons why developers want to use Visual Studio, including compatibility with
languages and tools, as well as various feature sets.&nbsp;</P> <P>&nbsp;</P>
<P>I suppose it doesn't hurt that this is a professional tool (which means it
makes money and thus is very well made, not cobbled together like a Frankenstein
monster, as an open-source project by weekend warriors). And only a company like
Microsoft could do that (invest in a great tool like this) and still make
versions of it available for free!</P> <P>&nbsp;</P> <P>And that's really what
this book is about... unleashing the power and capabilities of this well-adopted
tool set. As I said/wrote in my foreword, the authors (Paul Schroeder and Aaron
Cure) <STRONG>have cracked the code</STRONG>!</P> <P>&nbsp;</P> <P>If you apply
the snippets, templates, git tips, and extension-based practices that you'll
find in this book, then not only will you become more efficient, but you'll also
become your team's hero and thought leader!</P> <P>&nbsp;</P> <P>Before I move
on, did you notice how weird the subtitle was in the top version of the book
cover? Let's inspect it:</P> <P>&nbsp;</P> <P><EM>"A developer's guide to
mastering in core skills with the IDE and unlock advanced productivity
secrets."</EM></P> <P>&nbsp;</P> <P>You could probably read that sentence for 20
minutes before you decipher and interpret all its secrets. I can see why they
landed on a subtitle that was a little simpler to grok ("A developer's guide to
writing better code and maximizing productivity"). Moving on...</P>
<P>&nbsp;</P> <P>Let's take a look at what the topics are...</P> <P>&nbsp;</P>
<OL> <LI>Flavors of Visual Studio</LI> <LI>Keyboard Shortcuts</LI> <LI>IDE Tips
and Tricks</LI> <LI>Working with a Repository</LI> <LI>Working with
Snippets</LI> <LI>Database Explorers</LI> <LI>Compiling, Debugging, and
Versioning&nbsp;</LI> <LI>Introduction to Project and Item Templates</LI>
<LI>Creating Your Own Templates</LI> <LI>Deploying Custom Templates</LI>
<LI>Overviewing Visual Studio 2019 Extensions</LI> <LI>Overviewing VS Code
Extensions</LI> <LI>CodeMaid is Your Friend</LI> <LI>Be Your Team's Hero with
CodeGenHero</LI> <LI>Secure Code with Puma Scan</LI> <LI>Appendix: Other Popular
Productivity Extensions</LI> </OL> <P>&nbsp;</P> <P>I know what you're thinking!
You're thinking, "Is&nbsp;<EM>overviewing</EM> a word?" Yes, yes it is a word!
More specifically, it's <A
href="https://www.bing.com/search?q=define+overviewing&amp;cvid=a5f9a1c4017a4a2aa4f3be7cd9514d1c&amp;aqs=edge.0.0.3836j0j1&amp;pglt=43&amp;FORM=ANNAB1&amp;PC=U531"
target="_self">the present participle of a word</A>.</P> <P>&nbsp;</P>
<P>Anyway, the reason why I wanted to write the foreword (and blog about it), is
because I truly believe in the value. Developers don't use templates,
especially, to the degree that they could. Plus, you'll peruse a plethora of
other topics that you'd be wise to glean from.&nbsp;</P> <P>&nbsp;</P> <P>Also,
one interesting tidbit is that the author (Mr. Schroeder) is partially at fault
for the extension featured in chapter 14, CodeGenHero. So check that out!</P>
<P>&nbsp;</P> <P>Whilst perusing the Amazons, I saw the reviews for the book,
and they're pretty impressive. I want to give you just the titles of the reviews
here, so you can see what I mean:</P> <P>&nbsp;</P> <UL> <LI>"Useful Visual
Studio shortcuts, Git-Jitsu, snippet and debugging knowledge here." - Dan
Hermes</LI> <LI>"Clear and concise with good examples to draw upon for
furthering learning." - Robert Frey</LI> <LI>"This one is a must have!" - Binit
Datta</LI> <LI>"Learn everything about Visual Studio 2019." - Yusuf</LI>
<LI>"Excellent for those with some C# programming experience." - Ben Miller</LI>
</UL> <P>&nbsp;</P> <P>This book is great for noobs and still useful for
ratchety, engineering curmudgeons (I think I'm in transition from the former to
the latter). So check it out, and leave a review on the Amazons:</P>
<P>&nbsp;</P> <UL> <LI><A href="http://aka.ms/VS2019Book" target="_blank"
rel="noopener">http://aka.ms/VS2019Book</A>&nbsp;</LI> </UL> <P>&nbsp;&nbsp;</P>
<P>Remember to keep your mask on your face, your feet on the ground, and your
head in the Cloud!</P> <P>&nbsp;</P> <P>Socially-Distanced Ed</P> <P>&nbsp;</P>
<P>&nbsp;</P> Wed, 19 May 2021 12:31:48 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/visual-studio-2019-tricks-and-techniques-review-sort-of/ba-p/2280956
Ed Price 2021-05-19T12:31:48Z Six reasons to join us at RedisConf 2021
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/six-reasons-to-join-us-at-redisconf-2021/ba-p/2273109
<P>Spring has arrived, which means that <A
href="https://redislabs.com/redisconf/" target="_self">RedisConf</A>—the annual
celebration of all things Redis—is almost here! Attending RedisConf is one of
the best ways to sharpen your Redis skills by exploring best practices, learning
about new features, and hearing from industry experts. You’ll also be able to
virtually hang out with and learn from thousands of other developers passionate
about Redis.</P> <P>&nbsp;</P> <P>We love Redis here at Microsoft, so we’re
excited to be showing up at RedisConf in a big way this year. We’ll not only be
talking more about our new <A href="https://aka.ms/redisenterprise"
target="_blank" rel="noopener">Azure Cache for Redis Enterprise</A> offering,
but we’ll also be hosting sessions and panels that dive deeper into the best
ways to use Redis on Azure. Want to learn more? Here are seven reasons to attend
RedisConf 2021:</P> <P>&nbsp;</P> <OL> <LI>Explore <A
href="https://redislabs.com/redisconf/training/" target="_blank"
rel="noopener">live and on-demand training</A> on how to use Redis with popular
frameworks like Spring and .NET Core.</LI> <LI>Hear Microsoft CVP Julia Liuson
present a keynote status update about the ongoing collaboration between
Microsoft and Redis Labs, including the Enterprise tiers of Azure Cache for
Redis.</LI> <LI>Listen to customers like Genesys, <A
href="https://redislabs.com/redisconf/sessions/rc21-s23/" target="_blank"
rel="noopener">Adobe</A>, and <A
href="https://redislabs.com/redisconf/sessions/rc21-s21/" target="_blank"
rel="noopener">SitePro</A> who are using Redis Enterprise on Azure for use-cases
as diverse as IoT data ingestion and mobile push notification
deduplication.</LI> <LI>Tune in for a roundtable discussion between the
Microsoft and Redis Labs teams that touches on what the collaboration between
the companies looks like and the benefits it brings to customers.</LI> <LI>Learn
how to <A href="https://redislabs.com/redisconf/sessions/rc21-s10/"
target="_blank" rel="noopener">harness the power of Redis and Apache Kafka</A>
to crunch high-velocity time series data through the power of
RedisTimeSeries.</LI> <LI>Hear from experts from our product team on the best
way to run Redis on Azure, including tips-and-tricks for maximizing performance,
ensuring network security, limiting costs, and building enterprise-scale
deployments.</LI> </OL> <P class="lia-align-center"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="kteegarden_0-1618426689978.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/272899i9F7F1F42B277CAB4/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_0-1618426689978.png"
alt="kteegarden_0-1618426689978.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>RedisConf kicks off on April 20<SUP>th</SUP>, and registration is
free! &nbsp;<A
href="https://redislabs.com/redisconf/?utm_medium=referral&amp;utm_source=partner&amp;utm_campaign=Microsoft+redisconf21-registration-promo"
target="_blank" rel="noopener">Sign-up now to attend</A>. </STRONG>We’ll see you
there.</P> Wed, 14 Apr 2021 18:59:55 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/six-reasons-to-join-us-at-redisconf-2021/ba-p/2273109
kteegarden 2021-04-14T18:59:55Z The Azure Data Architecture Map
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-data-architecture-map/ba-p/2251943
<P>Hi,</P> <P>&nbsp;</P> <P>I'm excited to announce this new map and I'm happy
to see the great success (beyond expectations) of this map series. With nearly
300K views, these maps even gave birth to a more exhaustive book.</P>
<P>&nbsp;</P> <P>FYI, here are all the maps of the series:</P> <UL> <LI><A
id="link_20" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></LI> <LI><A id="link_13" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><A id="link_14" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect Map</A></LI> <LI><A
id="link_15" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P>Admittedly, the data map was by far the hardest to build, because there is a
big functional overlap across data services. Nevertheless, I tried to identify
the primary use case of each service, or where a given service shines the
most.&nbsp;</P> <P><BR />The purpose of the this map is to see, in a glimpse,
which services may suit your&nbsp;functional needs but it is up to you to dig
deeper.</P> <P>&nbsp;</P> <P>Here is the map:</P> <P>&nbsp;</P> <P><A
title="Azure Data Architecture Map"
href="https://techcommunity.microsoft.com/gxcuf89792/attachments/gxcuf89792/AzureDevCommunityBlog/641.9/2/data%20architecture.png"
target="_self"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="data architecture.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/269290iA4815DF1EBA9AFE9/image-size/large?v=v2&amp;px=999"
role="button" title="data architecture.png" alt="data architecture.png"
/></span></A></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>which focuses on
the following areas:</P> <UL> <LI>Traditional: many enterprises still deal with
traditional BI and there is nothing wrong with it! This category regroups Azure
services which you can use to build your cubes, run your ETL jobs, etc.<BR /><BR
/></LI> <LI>Modern: this category is the counterpart of the traditional
category. For example, ELT is the modern counterpart of ETL...that's a bit the
spirit :). You may of course find services that are in both sides.<BR /><BR
/></LI> <LI>Big Data: Big Data is also recent in the data lanscape, so it could
have been a subset of the modern group, but for sake of clarity, I decided to
make it a separate group.&nbsp;<BR /><BR /></LI> <LI>Artificial Intelligence: AI
is on every lips so I couldn't skip it although this category was hard to craft.
There is so much overlap across AI services that it's kind of hard to categorize
them. I tried to have a very condensed group. AI would deserve to have its own
map.<BR /><BR /></LI> <LI>Others: in this category, you'll find concerns such as
"sharing data with other companies", "Governing data", etc.</LI> </UL> <P>One
note though: Microsoft is pushing hard on Azure Synapse Analytics and their aim
is to have an all-in-one service, that combines decades of on-premises data
practices and the most modern and top-notch data features. So, you'd better keep
an eye on its development!</P> <P>&nbsp;</P> <P>Here is the pointer to the
map:</P> <P>&nbsp;</P> <TABLE style="border-collapse: collapse; width: 100%;"
border="1" width="100%"> <TBODY> <TR> <TD height="29px" style="width: 50%;">v
1.0</TD> <TD height="29px" style="width: 50%;"><A
href="https://app.mindmapmaker.org/#m:mm3727bf0da6e94510b0861090c0f35d1b"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm3727bf0da6e94510b0861090c0f35d1b</A></TD>
</TR> <TR> <TD height="29px" style="width: 50%;">PDF version</TD> <TD
height="29px" style="width: 50%;"> <TABLE style="border-collapse: collapse;
width: 100%;" border="1" width="100%"> <TBODY> <TR> <TD height="56px"
style="width: 50%;"> <P><A
href="https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter06/maps/Data%20Architecture.pdf"
target="_blank"
rel="noopener">https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter06/maps/Data%20Architecture.pdf</A></P>
</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> </TD> </TR> </TBODY> </TABLE>
<P>&nbsp;</P> Thu, 08 Apr 2021 06:58:03 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-data-architecture-map/ba-p/2251943
stephaneey 2021-04-08T06:58:03Z Modern Application Development
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/modern-application-development/ba-p/2235485
<P><STRONG><SPAN data-contrast="auto">Blog Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">This blog will provide an overview
of&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/#:~:text=Modern%20application%20development%20is%20an,%2C%20and%20built%2Din%20monitoring."
target="_blank" rel="noopener"><SPAN data-contrast="none">Modern application
development</SPAN></A><SPAN data-contrast="auto">. The blog will first
define</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">the&nbsp;</SPAN><SPAN data-contrast="auto">m</SPAN><SPAN
data-contrast="auto">odern</SPAN><SPAN data-contrast="auto">&nbsp;application
development</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">approach</SPAN><SPAN
data-contrast="auto">.&nbsp;</SPAN><SPAN data-contrast="auto">Then delve into
the&nbsp;</SPAN><SPAN data-contrast="auto">‘</SPAN><SPAN data-contrast="auto">7
building blocks</SPAN><SPAN data-contrast="auto">’</SPAN><SPAN
data-contrast="auto">&nbsp;of</SPAN><SPAN
data-contrast="auto">&nbsp;the&nbsp;</SPAN><SPAN
data-contrast="auto">approach&nbsp;</SPAN><SPAN data-contrast="auto">starting
with cloud native architecture</SPAN><SPAN data-contrast="auto">, followed by
AI,&nbsp;</SPAN><SPAN data-contrast="auto">Integration, Data, Software delivery,
Operations,&nbsp;</SPAN><SPAN data-contrast="auto">and Security.</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Each segment will define</SPAN><SPAN
data-contrast="auto">&nbsp;and explain&nbsp;</SPAN><SPAN
data-contrast="auto">the&nbsp;</SPAN><SPAN data-contrast="auto">‘</SPAN><SPAN
data-contrast="auto">building block</SPAN><SPAN
data-contrast="auto">’</SPAN><SPAN data-contrast="auto">&nbsp;and how
th</SPAN><SPAN data-contrast="auto">e modern application development approach
leverages the ‘building blocks’ to produce more robust applications.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/"
target="_blank" rel="noopener"><STRONG><SPAN data-contrast="none">What is Modern
Application Development</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;(MAD)</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/#:~:text=Modern%20application%20development%20is%20an,%2C%20and%20built%2Din%20monitoring."
target="_blank" rel="noopener"><SPAN data-contrast="none">Modern application
development</SPAN></A><SPAN data-contrast="none">&nbsp;is an approach that
enables you to&nbsp;</SPAN><SPAN data-contrast="auto">innovate rapidly by using
cloud-native architectures with loosely coupled microservices, managed
databases, AI, DevOps support, and built-in monitoring.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">The</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">resulting
modern&nbsp;</SPAN><SPAN data-contrast="none">applications</SPAN><SPAN
data-contrast="none">&nbsp;leverage&nbsp;</SPAN><SPAN data-contrast="none">cloud
native architectures by packaging code and dependencies in containers and
deploy</SPAN><SPAN data-contrast="none">ing</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">them&nbsp;</SPAN><SPAN data-contrast="none">as
microservices to increase developer velocity using DevOps practices.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Subsequently m</SPAN><SPAN
data-contrast="none">odern applications utilize continuous integration and
delivery</SPAN><SPAN data-contrast="none">&nbsp;(CI/CD)</SPAN><SPAN
data-contrast="none">&nbsp;technologies and processes to improve system
reliability</SPAN><SPAN data-contrast="none">. Modern apps employ a</SPAN><SPAN
data-contrast="none">utomation to identify and quickly mitigate issues applying
best practices like infrastructure as code and increas</SPAN><SPAN
data-contrast="none">ing</SPAN><SPAN data-contrast="none">&nbsp;data security
with threat detection and protection.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Lastly, modern applications are faster by infusing AI into
native architecture structures to reduce manual tasks, accelerating workflows
and introducing low code application development tools to simplify and expedite
development processes.</SPAN></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/overview/cloudnative/" target="_blank"
rel="noopener"><STRONG><SPAN
data-contrast="none">Cloud-native&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">architectures</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">According to The Cloud Native Computing
Foundation</SPAN><SPAN data-contrast="none">&nbsp;(CNCF)</SPAN><SPAN
data-contrast="none">, cloud&nbsp;</SPAN><SPAN
data-contrast="none">native</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">is</SPAN><SPAN data-contrast="none">&nbsp;defined as
“</SPAN><SPAN data-contrast="none">Cloud-native technologies empower
organizations to build and run scalable applications in modern, dynamic
environments such as public, private, and hybrid clouds.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Containers, service meshes, microservices,
immutable infrastructure, and declarative APIs exemplify this
approach.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">These
techniques enable loosely coupled systems that are resilient, manageable, and
observable. Combined with robust automation, they allow engineers to make
high-impact changes frequently and predictably with minimal toil.”</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Utilizing that definition, what are
the key tenants of a cloud-native approach, and how does each tenant benefit
you?&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">As stated above, cloud-native architectures center
on speed and agility. That speed and agility are derived from 6
factors</SPAN><SPAN data-contrast="auto">:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">C</SPAN><SPAN data-contrast="auto">loud
infrastructure</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">M</SPAN><SPAN data-contrast="auto">odern design</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;M</SPAN><SPAN
data-contrast="auto">icroservices</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;C</SPAN><SPAN
data-contrast="auto">ontainers</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;B</SPAN><SPAN data-contrast="auto">acking
services</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;A</SPAN><SPAN
data-contrast="auto">utomation.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_0-1615417254157.png" style="width: 1378px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262621i9AA898CFC043E67A/image-dimensions/1378x485?v=v2"
width="1378" height="485" role="button" title="riduncan_0-1615417254157.png"
alt="riduncan_0-1615417254157.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Cloud infrastructure</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;is the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">most important factor</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;that contributes to the speed and agility of
cloud-native architecture.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">3&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">K</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">ey&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">Factors</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="auto">&nbsp;Cloud-native systems full</SPAN><SPAN
data-contrast="auto">y leverage the cloud service model using PaaS compute
infra</SPAN><SPAN data-contrast="auto">structure</SPAN><SPAN
data-contrast="auto">&nbsp;and managed services.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;Cloud-native systems continue to run
as&nbsp;</SPAN><SPAN data-contrast="auto">infrastructure</SPAN><SPAN
data-contrast="auto">&nbsp;scales in or out without worrying about the back end
because the infra is fully managed.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-contrast="auto">Cloud-native systems&nbsp;</SPAN><SPAN
data-contrast="auto">have</SPAN><SPAN data-contrast="auto">&nbsp;auto
scal</SPAN><SPAN data-contrast="auto">ing</SPAN><SPAN data-contrast="auto">,
self-heal</SPAN><SPAN data-contrast="auto">ing</SPAN><SPAN
data-contrast="auto">, and monitor</SPAN><SPAN data-contrast="auto">ing
capabilities.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="auto">Modern Design is highly&nbsp;</SPAN><SPAN
data-contrast="auto">effective&nbsp;</SPAN><SPAN data-contrast="auto">in
part&nbsp;</SPAN><SPAN data-contrast="auto">due to the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Twelve-Factor Application method</SPAN></STRONG><SPAN
data-contrast="auto">, which is a set of principles and practices that
develope</SPAN><SPAN data-contrast="auto">rs follow to construct applications
optimized for modern cloud environments.</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN data-contrast="auto">Most Critical Considerations for Modern
Design</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-contrast="auto">Communication</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">-&nbsp;</SPAN><SPAN
data-contrast="auto">How front ends communication with&nbsp;</SPAN><SPAN
data-contrast="auto">back-end</SPAN><SPAN data-contrast="auto">&nbsp;services,
and how&nbsp;</SPAN><SPAN data-contrast="auto">back-end</SPAN><SPAN
data-contrast="auto">&nbsp;services communicate with each other.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">Resiliency</SPAN><SPAN data-contrast="auto">&nbsp;- How
services in your distributed architecture respond in&nbsp;</SPAN><SPAN
data-contrast="auto">less-than-ideal</SPAN><SPAN
data-contrast="auto">&nbsp;scenarios due to the in-process,
out-process&nbsp;</SPAN><SPAN data-contrast="auto">network communications of
microservices architecture.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-contrast="auto">Distributed Data</SPAN><SPAN data-contrast="auto">&nbsp;-
How do you query data or implement a transaction across multiple
services?</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">Identity</SPAN><SPAN data-contrast="auto">&nbsp;- How does
your service identify who is accessing it and their allotted
permissions?</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><STRONG><SPAN data-contrast="auto">What are
Microservices?</SPAN></STRONG><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Microservices are built as a distributed set of
small, independent services that interact through a shared
fabric.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_1-1615417254174.png" style="width: 1546px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262623i3649D2C4FCDF09FD/image-dimensions/1546x653?v=v2"
width="1546" height="653" role="button" title="riduncan_1-1615417254174.png"
alt="riduncan_1-1615417254174.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Improved Agility
with&nbsp;</SPAN></STRONG><A
href="https://azure.microsoft.com/en-us/solutions/microservice-applications/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Microservices</SPAN></STRONG></A><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Each
microservice has an autonomous lifecycle and can evolve independently and deploy
frequently.&nbsp;</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Each
microservice can scale independently</SPAN><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN data-contrast="none">enabling services
to scale to meet demand.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="none">Those microservices are then
packaged&nbsp;</SPAN><SPAN data-contrast="none">a container image, those images
are stored in container registry</SPAN><SPAN data-contrast="none">. When needed
you transform the container into a running&nbsp;</SPAN><SPAN
data-contrast="none">container&nbsp;</SPAN><SPAN
data-contrast="none">instance</SPAN><SPAN data-contrast="none">, to utilize the
stored microservices.&nbsp;</SPAN><SPAN data-contrast="none">How</SPAN><SPAN
data-contrast="none">&nbsp;do</SPAN><SPAN data-contrast="none">&nbsp;containers
benefit cloud native apps?</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Benefits of&nbsp;</SPAN></STRONG><A
href="https://azure.microsoft.com/en-us/product-categories/containers/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Containers</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Provide portability and guarantee consistency across
environments.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Containers can isolate&nbsp;</SPAN><SPAN
data-contrast="none">microservices</SPAN><SPAN data-contrast="none">&nbsp;and
their dependencies from the underlying infrastructure.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Smaller&nbsp;</SPAN><SPAN
data-contrast="none">footprints</SPAN><SPAN data-contrast="none">&nbsp;than full
virtual machines (VMs). That smaller size increases densi</SPAN><SPAN
data-contrast="none">ty, the number of microservices, that a given host can run
at a time.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="none">Cloud native solutions also increase
application speed and agility via backing services.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_2-1615417254161.png" style="width: 1520px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262622i5F3F3AA6AA90942E/image-dimensions/1520x942?v=v2"
width="1520" height="942" role="button" title="riduncan_2-1615417254161.png"
alt="riduncan_2-1615417254161.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Benefits of&nbsp;</SPAN></STRONG><A
href="https://12factor.net/backing-services" target="_blank"
rel="noopener"><STRONG><SPAN data-contrast="none">Backing
Services</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Save
time and&nbsp;</SPAN><SPAN data-contrast="none">labor</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Treat</SPAN><SPAN data-contrast="none">ing</SPAN><SPAN
data-contrast="none">&nbsp;backing services as</SPAN><SPAN
data-contrast="none">&nbsp;attached&nbsp;</SPAN><SPAN
data-contrast="none">resources</SPAN><SPAN
data-contrast="none">&nbsp;enabl</SPAN><SPAN data-contrast="none">es</SPAN><SPAN
data-contrast="none">&nbsp;the services to attach and detach as needed without
code changes&nbsp;</SPAN><SPAN data-contrast="none">to&nbsp;</SPAN><SPAN
data-contrast="none">the&nbsp;</SPAN><SPAN data-contrast="none">microservices
that contain information, enabling greater&nbsp;</SPAN><SPAN
data-contrast="none">dynamism</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="none">Lastly, cloud-native solutions leverage
automation.&nbsp;</SPAN><SPAN data-contrast="none">Using
cloud-native&nbsp;</SPAN><SPAN data-contrast="none">architectures</SPAN><SPAN
data-contrast="none">&nbsp;your&nbsp;</SPAN><SPAN
data-contrast="none">infrastructure and deployment are automated, consistent,
and reputable.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Benefits of Automation</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><A
href="https://docs.microsoft.com/en-us/azure/devops/learn/what-is-infrastructure-as-code"
target="_blank" rel="noopener"><SPAN data-contrast="none">In</SPAN><SPAN
data-contrast="none">fr</SPAN><SPAN data-contrast="none">astructure</SPAN><SPAN
data-contrast="none">&nbsp;as Code</SPAN><SPAN
data-contrast="none">&nbsp;(IaC)</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">avoids</SPAN><SPAN
data-contrast="none">&nbsp;manual</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">environment&nbsp;</SPAN><SPAN
data-contrast="none">configuration&nbsp;</SPAN><SPAN data-contrast="none">and
deliver</SPAN><SPAN data-contrast="none">s</SPAN><SPAN
data-contrast="none">&nbsp;stable environments rapidly at scale.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Automated
deployment leverages CI/CD to speed up innovation and deployment, updating
on-demand</SPAN><SPAN data-contrast="none">;&nbsp;</SPAN><SPAN
data-contrast="none">saving money and time.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><A
href="https://azure.microsoft.com/en-us/overview/ai-platform/dev-resources/"
target="_blank" rel="noopener"><STRONG><SPAN data-contrast="none">Artificial
Intelligence</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The second building block in the modern
application development approach is A</SPAN><SPAN data-contrast="none">rtificial
intelligence (AI)</SPAN><SPAN data-contrast="none">.</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN data-contrast="none">What
comprises</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">artificial intelligence</SPAN></STRONG><STRONG><SPAN
data-contrast="none">? How do I&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">add AI to my applications?&nbsp;</SPAN></STRONG><A
href="https://azure.microsoft.com/en-us/overview/ai-platform/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Azure Artificial
Intelligence</SPAN></A><SPAN data-contrast="none">&nbsp;is comprised
of&nbsp;</SPAN><SPAN data-contrast="none">machine learning, knowledge mining,
and AI apps and agents. Un</SPAN><SPAN data-contrast="none">der the apps and
agent's domain there are two overarching products,&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/cognitive-services/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Cognitive
Services</SPAN></A><SPAN data-contrast="none">&nbsp;and&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/bot-services/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Bot Service</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN data-contrast="none">that we're going
to focus on</SPAN><SPAN data-contrast="none">.</SPAN></P> <P><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Cognitive services are a collection of domain
specific pre-trained AI models that can be customized with your data. Bot
service&nbsp;</SPAN><SPAN data-contrast="none">is a</SPAN><SPAN
data-contrast="none">&nbsp;purpose-built bot development environment with
out-of-the-box templates. To learn how to add AI to your applications watch
the</SPAN><SPAN data-contrast="none">&nbsp;short</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">video
titled&nbsp;</SPAN><SPAN data-contrast="none">“</SPAN><A
href="https://azure.microsoft.com/en-us/overview/ai-platform/dev-resources/#videos"
target="_blank" rel="noopener"><SPAN data-contrast="none">Easily add AI to your
applications.</SPAN></A><SPAN data-contrast="none">”</SPAN></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_3-1615417254190.png" style="width: 1543px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262626i22363CD93A58FCD4/image-dimensions/1543x734?v=v2"
width="1543" height="734" role="button" title="riduncan_3-1615417254190.png"
alt="riduncan_3-1615417254190.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Innate Benefits</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">User
benefits:&nbsp;</SPAN></STRONG><SPAN data-contrast="none">Translation, chatbots,
and voice for AI-enabled user interfaces.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Business benefits:</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;Enhanced business logic for scenarios like search,
personalization, document processing, image ana</SPAN><SPAN
data-contrast="none">lytics, anomaly detection, and speech analytics.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">Modern
App</SPAN></STRONG><STRONG><SPAN
data-contrast="none">lication</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">Dev</SPAN></STRONG><STRONG><SPAN
data-contrast="none">elopment</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">unique</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">benefit</SPAN></STRONG><STRONG><SPAN
data-contrast="none">:</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Enable</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">d</SPAN><SPAN
data-contrast="none">evelopers&nbsp;</SPAN><SPAN data-contrast="none">of any
skill&nbsp;</SPAN><SPAN data-contrast="none">to add AI capabilities to their
applications with pre-built and customizable AI models for speech,
vision,&nbsp;</SPAN><SPAN data-contrast="none">language, and
decision-making</SPAN><SPAN data-contrast="none">.</SPAN></P> <P>&nbsp;</P>
<P><A href="https://azure.microsoft.com/en-us/product-categories/integration/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Integration</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The third building block is
integration.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">Why
is integration needed, and how is it accomplished?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Integration is needed to integrate applications by
connecting multiple i</SPAN><SPAN data-contrast="none">ndependent
systems</SPAN><SPAN data-contrast="none">.&nbsp;</SPAN><SPAN
data-contrast="none">The four core cloud services to meet integration needs
are</SPAN><SPAN data-contrast="none">:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><STRONG><SPAN data-contrast="none">&nbsp;</SPAN></STRONG><SPAN
data-contrast="none">A</SPAN><SPAN data-contrast="auto">&nbsp;way to publish and
manage application programming interfaces (APIs).&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:720}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">A way to
create and run integration logic</SPAN><SPAN data-contrast="auto">, typically
with a graphical tool for defining the workflow’s logic.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:720}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;A way for applications and integration
technologies to communicate in a loosely coupled way via
messaging.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:720}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">A
technology that supports communication via events</SPAN></LI> </OL>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_4-1615417254165.jpeg" style="width:
1537px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262624i680ADC41AE4E218D/image-dimensions/1537x771?v=v2"
width="1537" height="771" role="button" title="riduncan_4-1615417254165.jpeg"
alt="riduncan_4-1615417254165.jpeg" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">What are the benefits of Azure integration
services</SPAN></STRONG><STRONG><SPAN data-contrast="none">&nbsp;and how do they
translate to the modern app dev approach</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Azure meets all four needs, the first need is met
by</SPAN><SPAN data-contrast="none">&nbsp;Azure&nbsp;</SPAN><SPAN
data-contrast="none">API management, the second is met by Azure Logic Apps, the
third is Azure Service&nbsp;</SPAN><SPAN data-contrast="none">B</SPAN><SPAN
data-contrast="none">us</SPAN><SPAN data-contrast="none">, and
the&nbsp;</SPAN><SPAN data-contrast="none">final is met by&nbsp;</SPAN><SPAN
data-contrast="none">Azure Event Grid.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">The four components of Azure Integration Services address
the core requirements of application integration. Yet real scenarios often
require&nbsp;</SPAN><SPAN data-contrast="auto">more,</SPAN><SPAN
data-contrast="auto">&nbsp;and this is where the modern application development
approach comes into play</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Perhaps&nbsp;</SPAN><SPAN
data-contrast="auto">your integration application needs a place to store
unstructured data, or a way to include custom code that does specialized data
transformations.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Azure Integration Services is part of the larger
Azure cloud platform,&nbsp;</SPAN><SPAN data-contrast="auto">making
it</SPAN><SPAN data-contrast="auto">&nbsp;easi</SPAN><SPAN
data-contrast="auto">er</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">to&nbsp;</SPAN><SPAN data-contrast="auto">in</SPAN><SPAN
data-contrast="auto">tegrate data, APIs, and&nbsp;</SPAN><SPAN
data-contrast="auto">into your modern app to meet your needs.</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You might store unstructured data in Azure Data
Lake Store, for instance, or write custom code using Azure
Functions,&nbsp;</SPAN><SPAN data-contrast="auto">to meet</SPAN><SPAN
data-contrast="auto">&nbsp;serverless compute tech</SPAN><SPAN
data-contrast="auto">&nbsp;needs</SPAN><SPAN data-contrast="auto">.</SPAN></P>
<P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/services/azure-sql/sql-managed-instance/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Data</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The fourth building block is data, and more
specifically managed databases.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">What are the advantages of managed
databases?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Fully managed, cloud-based databases provide
limitless scale, low-latency access to rich data, and advanced data
protection—all built in, regardless of languages or frameworks.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">How does the modern
application development approach benefit from fully managed
databases</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Modern application development leverages
microservices and containers, the benefit to both technologies&nbsp;</SPAN><SPAN
data-contrast="none">is</SPAN><SPAN data-contrast="none">&nbsp;their ability to
operate independently</SPAN><SPAN
data-contrast="none">&nbsp;and&nbsp;</SPAN><SPAN data-contrast="none">scale as
demand warrants.</SPAN></P> <P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">To ensure the greatest user satisfaction and app
functionality the limitless scale and low</SPAN><SPAN
data-contrast="none">-</SPAN><SPAN data-contrast="none">latency
access&nbsp;</SPAN><SPAN data-contrast="none">to data enable apps to
run&nbsp;</SPAN><SPAN data-contrast="none">unimpeded.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_5-1615417254180.png" style="width: 1886px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262625iCA63945B54B2A5F3/image-dimensions/1886x1204?v=v2"
width="1886" height="1204" role="button" title="riduncan_5-1615417254180.png"
alt="riduncan_5-1615417254180.png" /></span></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/solutions/devops/" target="_blank"
rel="noopener"><STRONG><SPAN data-contrast="none">Software
Delivery</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The fifth building block is software
delivery.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">What
constitutes modern development software delivery practices?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Modern app development software delivery practices
enable you to meet r</SPAN><SPAN data-contrast="none">apid market changes that
require shorter release cycles without sacrificing quality, stability, and
security.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">The
practice</SPAN><SPAN data-contrast="none">s help you to release in a fast,
consistent, and reliable way by using highly productive tools, automating
mundane and manual steps, and iterating in small increments through CI/CD and
DevOps practices.</SPAN></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/overview/what-is-devops/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">What&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">is&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">DevOps?</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">A compound of development (Dev) and operations
(Ops), DevOps is the union of people, process, and technology to continually
provide value to customers.</SPAN><SPAN data-contrast="none">&nbsp;DevOps
enables formerly siloed roles—development, IT operations, quality engineering,
and security—to coordinate and collaborate to produce better, more reliable
products.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">By adopting a
DevOps culture along with DevOps practices and tools, teams gain the ability to
better respond to customer needs, increase confidence in the applications they
build, and achieve development goals faster.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">DevOps influences the application lifecycle
throughout its&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">plan</SPAN></STRONG><SPAN
data-contrast="none">,&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">develop</SPAN></STRONG><SPAN
data-contrast="none">,&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">deliver</SPAN></STRONG><SPAN data-contrast="none">,
and&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">operate&nbsp;</SPAN></STRONG><SPAN
data-contrast="none">phases.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_6-1615417254185.png" style="width: 1642px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262627iEB7A264D4A97EAF5/image-dimensions/1642x1414?v=v2"
width="1642" height="1414" role="button" title="riduncan_6-1615417254185.png"
alt="riduncan_6-1615417254185.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Plan</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In the plan phase, DevOps teams ideate, define,
and describe features and capabilities of the applications and systems they are
building.&nbsp;</SPAN><SPAN data-contrast="none">Creating backlogs, tracking
bugs, managing agile software development with Scrum, using Kanban boards, and
visualizing progress with dashboards are some of the ways DevOps teams plan with
agility and visibility.</SPAN></P> <P>&nbsp;</P> <P aria-level="3"><STRONG><SPAN
data-contrast="none">Develop</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="none">The develop phase includes all
aspects of coding—writing, testing, reviewing, and the integration of code by
team members—as well as building that code into build artifacts that can be
deployed into various environments.&nbsp;</SPAN><SPAN data-contrast="none">To
develop rapidly, they use highly productive tools, automate mundane and manual
steps, and iterate in small increments through automated testing and continuous
integration.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3">&nbsp;</P> <P aria-level="3"><STRONG><SPAN
data-contrast="none">Deliver</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="none">Delivery is the process of
deploying applications into production environments and deploying and
configuring the fully governed foundational infrastructure that makes up those
environments.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="none">In the deliver phase, teams define
a release management process with clear manual approval&nbsp;</SPAN><SPAN
data-contrast="none">stages.</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">They</SPAN><SPAN data-contrast="none">&nbsp;also set
automated gates that move applications between stages until they’re made
available to customers.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><STRONG><SPAN
data-contrast="none">Operate</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The&nbsp;</SPAN><SPAN
data-contrast="none">operate</SPAN><SPAN data-contrast="none">&nbsp;phase
involves maintaining, monitoring, and troubleshooting applications in production
environments. In adopting DevOps practices, teams work to ensure system
reliability, high availability, and aim for zero downtime while reinforcing
security and governance.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/overview/continuous-delivery-vs-continuous-deployment/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">W</SPAN></STRONG><STRONG><SPAN data-contrast="none">hat is
CI/CD?</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Under continuous integration, the develop
phase—building and testing code—is fully automated.&nbsp;</SPAN><SPAN
data-contrast="none">Each time you commit code, changes are validated and merged
to the master branch, and the code is packaged in a build artifact.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Under continuous delivery, anytime a
new build artifact is available, the artifact is automatically placed in the
desired environment and deployed.</SPAN><SPAN data-contrast="none">&nbsp;With
continuous deployment, you automate the entire process from
code&nbsp;</SPAN><SPAN data-contrast="none">commit</SPAN><SPAN
data-contrast="none">&nbsp;to production</SPAN><SPAN
data-contrast="none">.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://azure.microsoft.com/en-us/services/monitor/" target="_blank"
rel="noopener"><STRONG><SPAN
data-contrast="none">Operations</SPAN></STRONG><SPAN>&nbsp;<BR
/></SPAN></A><SPAN data-contrast="auto">The sixth building block is operations
to maximize automation.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">How do</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">you maximize automation in your modern
app</SPAN></STRONG><STRONG><SPAN data-contrast="auto">lication development
approach?</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">With an increasingly complex environment to
manage, maximizing the use of automation helps you improve operational
efficiency, identify issues before they affect customer experiences, and quickly
mitigate issues when they occur.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Fully managed platforms provide automated logging,
scaling, and high availability. Rich telemetry, actionable alerting, and full
visibility into applications and the underlying system are key to a modern
application development approach.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Automating regular checkups and applying best
practices like infrastructure as code and site reliability engineering promotes
resiliency and helps you respond to incidents with minimal downtime and data
loss.</SPAN></P> <P>&nbsp;</P> <P><A
href="https://docs.microsoft.com/en-us/azure/security/fundamentals/best-practices-and-patterns"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Security</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The seventh building block is multilayered
security.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Why do I need multi-layered
security in my modern&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">applications?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Modern applications&nbsp;</SPAN><SPAN
data-contrast="none">require</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/security/fundamentals/best-practices-and-patterns"
target="_blank" rel="noopener"><SPAN data-contrast="none">multilayered
security</SPAN></A><SPAN data-contrast="none">&nbsp;across code, delivery
pipelines, app runtimes, and databases. Start by providing developers secure dev
boxes with well-governed identity. As part of the DevOps lifecycle, use
automated tools to examine dependencies in code repositories and scan for
vulnerabilities as you deploy apps to the target environment.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Enterprise-grade secrets and policy
management encrypt the applications and give the operations team centralized
policy enforcement.</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">With fully managed compute and database services, security
control is built in and threat protection is executed in real time.</SPAN></P>
<P>&nbsp;</P> <P class="hd he fn hf b hg iu hh hi hj iv hk hl hm iw hn ho hp ix
hq hr hs iy ht hu hw db dw" data-selectable-paragraph=""><STRONG class="hf
co">Conclusion</STRONG><BR />While modern application development can seem
daunting, it is an approach that can be done iteratively, and each step can
yield large benefits for your team.</P> <P class="hd he fn hf b hg iu hh hi hj
iv hk hl hm iw hn ho hp ix hq hr hs iy ht hu hw db dw"
data-selectable-paragraph="">&nbsp;</P> <P class="hd he fn hf b hg iu hh hi hj
iv hk hl hm iw hn ho hp ix hq hr hs iy ht hu hw db dw"
data-selectable-paragraph="">Access webinars, analyst reports, tutorials, and
more on the<SPAN>&nbsp;</SPAN><A class="bp iz"
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/"
target="_blank" rel="noopener nofollow">Modern application development on
Azure</A><SPAN>&nbsp;</SPAN>page.</P> Fri, 26 Mar 2021 00:59:09 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/modern-application-development/ba-p/2235485
riduncan 2021-03-26T00:59:09Z [DevTest Labs] Decommissioning preview API's
'2015-05-21-preview' & '2017-04-26-preview' in 90 days
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-decommissioning-preview-api-s-2015-05-21-preview/ba-p/2219208
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Develop and Test.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/267325iA0FC3F81BD42ECF9/image-size/large?v=v2&amp;px=999"
role="button" title="Develop and Test.png" alt="Develop and Test.png"
/></span></P> <P>&nbsp;</P> <P>There were a few preview API’s that were made
available in the previous years for Azure DevTest Labs, with the goal of
enabling early access to certain features and functionalities.</P> <P>&nbsp;</P>
<P>We have incorporated all the functionalities related to below preview API’s
in the latest API specs, that were generally made available and we have decided
to decommission below DTL preview API’s by June 17, 2021.</P> <P>&nbsp;</P> <UL>
<LI>&nbsp; <STRONG>2015-05-21-preview</STRONG></LI> <LI><STRONG>&nbsp;
</STRONG><STRONG>2017-04-26-preview</STRONG></LI> </UL> <P>If you are still
using any of the above preview API’s, We recommend to migrate and use the <A
href="https://github.com/Azure/azure-rest-api-specs/tree/master/specification/devtestlabs/resource-manager/Microsoft.DevTestLab/stable/2018-09-15"
target="_blank" rel="noopener">latest DTL REST API Specs</A> that were generally
made available. The decommissioning does not impact our current API version in
preview, 2018-09-15-preview.</P> <P>&nbsp;</P>
<P>‘<STRONG>2015-05-21-preview’</STRONG> and<STRONG>
‘</STRONG><STRONG>2017-04-26-preview</STRONG><STRONG>’ </STRONG>API versions
would be decommissioned on June 17, 2021 and if you are using the preview API’s,
we request you to kindly migrate before June 17, 2021.</P> <P>&nbsp;</P> <P>As
always, please reach out to us in case of any questions or concerns.</P>
<P>&nbsp;</P> <P>-&nbsp;&nbsp;DevTest Labs Product Team</P> <P>&nbsp;</P> Thu,
27 May 2021 22:17:43 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-decommissioning-preview-api-s-2015-05-21-preview/ba-p/2219208
Sagar_Lankala 2021-05-27T22:17:43Z Microsoft Customer Co-Creation: How You Can
Help Influence the way Products and Services are Built
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-customer-co-creation-how-you-can-help-influence-the/ba-p/2217804
<P><SPAN data-contrast="auto">March is Women’s History Month&nbsp;</SPAN><SPAN
data-contrast="auto">and what a more fitting&nbsp;</SPAN><SPAN
data-contrast="auto">time</SPAN><SPAN data-contrast="auto">&nbsp;for our
team,</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">Microsoft Azure Engineering,&nbsp;</SPAN><SPAN
data-contrast="auto">to have our first post go up here on the Tech Community
Blog.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="IWD2021Blog_800.png" style="width: 800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/265096iC2D31AA25D562AAD/image-size/large?v=v2&amp;px=999"
role="button" title="IWD2021Blog_800.png" alt="IWD2021Blog_800.png"
/></span></SPAN></P> <P><SPAN data-contrast="auto">As a woman working in tech,
I’m proud to work for a company like Microsoft, where diversity and inclusion is
celebrated.&nbsp;</SPAN><SPAN data-contrast="auto">This mindset also shapes the
way we build our&nbsp;</SPAN><SPAN data-contrast="auto">products and services.
That’s where a program like&nbsp;</SPAN><SPAN
data-contrast="auto">Microsoft&nbsp;</SPAN><SPAN data-contrast="auto">Customer
Co-creation comes into play. If you haven’t heard about&nbsp;</SPAN><SPAN
data-contrast="auto">it</SPAN><SPAN data-contrast="auto">, I’d like to take this
opportunity to tell you&nbsp;</SPAN><SPAN data-contrast="auto">more</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="CustomerCoCreationBlog_800.png" style="width: 800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/265097iE06B95E39C6D5D7F/image-size/large?v=v2&amp;px=999"
role="button" title="CustomerCoCreationBlog_800.png"
alt="CustomerCoCreationBlog_800.png" /></span></SPAN></P> <P><A
href="https://customercocreation.microsoft.com/home/blog" target="_blank"
rel="noopener"><SPAN data-contrast="none">Microsoft</SPAN><SPAN
data-contrast="none">&nbsp;Customer co-creation</SPAN></A><SPAN
data-contrast="auto">&nbsp;connects you directly with engineers
within&nbsp;</SPAN><SPAN data-contrast="auto">the&nbsp;</SPAN><SPAN
data-contrast="none">Cloud Engineering (C+ AI) organization&nbsp;</SPAN><SPAN
data-contrast="auto">so you can&nbsp;</SPAN><SPAN data-contrast="auto">talk to
them about the products you care about. Sometimes this could mean playing an
early role in product and service development</SPAN><SPAN
data-contrast="auto">&nbsp;before a single line of code is even
written</SPAN><SPAN data-contrast="auto">. Ultimately, our hope
is&nbsp;</SPAN><SPAN data-contrast="auto">your feedback will result
in&nbsp;</SPAN><SPAN data-contrast="auto">the creation of&nbsp;</SPAN><SPAN
data-contrast="auto">something you’ll</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">really love
using</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You can start by&nbsp;</SPAN><A
href="https://customercocreation.microsoft.com/home/blog" target="_blank"
rel="noopener"><SPAN data-contrast="none">fill</SPAN><SPAN
data-contrast="none">ing</SPAN><SPAN data-contrast="none">&nbsp;out your
profile</SPAN></A><SPAN data-contrast="auto">&nbsp;and tell</SPAN><SPAN
data-contrast="auto">ing</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">us about yourself and what you’re interested in</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">When the right opportunity comes
up,&nbsp;</SPAN><SPAN data-contrast="auto">our team will</SPAN><SPAN
data-contrast="auto">&nbsp;contact you, let you know the topic</SPAN><SPAN
data-contrast="auto">,</SPAN><SPAN data-contrast="auto">&nbsp;and ask your
availability to participate in a feedback session.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Your voice matters and&nbsp;</SPAN><SPAN
data-contrast="auto">I</SPAN><SPAN data-contrast="auto">&nbsp;hope you’ll
consider joining the Microsoft</SPAN><SPAN
data-contrast="auto">&nbsp;Customer</SPAN><SPAN
data-contrast="auto">&nbsp;Co-creation program&nbsp;</SPAN><SPAN
data-contrast="auto">and help</SPAN><SPAN
data-contrast="auto">&nbsp;influence&nbsp;</SPAN><SPAN data-contrast="auto">the
services and products&nbsp;</SPAN><SPAN
data-contrast="auto">you&nbsp;</SPAN><SPAN data-contrast="auto">use</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="BlogLogo.jpg" style="width: 800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/265100i8988DD20F3E1590E/image-size/large?v=v2&amp;px=999"
role="button" title="BlogLogo.jpg" alt="BlogLogo.jpg" /></span></P> Fri, 26 Mar
2021 00:58:34 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-customer-co-creation-how-you-can-help-influence-the/ba-p/2217804
Malgosia Mazany 2021-03-26T00:58:34Z [Customer Story] Enabling an Event Driven
Architecture with DevTest Labs
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-enabling-an-event-driven-architecture-with/ba-p/2214548
<P><A
href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration"
target="_blank" rel="noopener">SharePoint Online</A> (SPO) is Microsoft’s
enterprise-class document management service for&nbsp;<A
href="https://www.microsoft.com/en-us/microsoft-365" target="_blank"
rel="noopener">Microsoft365</A>.&nbsp; The <A
href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration"
target="_blank" rel="noopener">SharePoint Online</A> (SPO) team at Microsoft has
created a solution, built on Azure DevTest Labs (DTL), to make SPO testing
environments readily available to SharePoint engineers, leveraging the strengths
of DevTest Labs and Azure. This is the second in a series of blog entries
enabling anyone to build, configure and run a similar system using Azure and
DTL. For part 1, see <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781"
target="_blank" rel="noopener">How the SharePoint Online Team Leverages DevTest
Labs</A>.&nbsp;</P> <P>&nbsp;</P> <P>In this blog post, two use cases of the
solution’s expected VM lifecycle are described. A simple architecture is
proposed that involves hooking up an <A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener">Azure Function App</A> to <A
href="https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftdevtestlab"
target="_blank" rel="noopener">DevTest Lab Events</A> by way of <A
href="https://azure.microsoft.com/en-us/services/event-grid/" target="_blank"
rel="noopener">Azure Event Grid</A> to implement the two use cases. There is a
brief walk-through of the implementation intended to be used by other Azure
customers to build similar solutions. If you are building an event-driven DTL
application, consider using Azure Functions and Event Grid as the SPO team did.
This article is of interest to you!</P> <P>&nbsp;</P> <H2>Scenario</H2>
<P>&nbsp;</P> <P>As introduced in <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781"
target="_blank" rel="noopener">Part 1</A> of this blog series, environments in
Azure DevTest Labs are a natural fit for SPO integration testing. SPO engineers
can claim test environments that are miniaturized data centers, with all
components shrunk down and interacting on a single Azure VM inside DTL.&nbsp;
Pools of these VMs are made available for SPO engineers so that test
environments are readily available at any time.&nbsp; When finished, they
unclaim them.&nbsp;</P> <P>&nbsp;</P> <P>There are two features that the SPO
team has built on top of existing DevTest Labs Claim/Unclaim operations:</P>
<P>&nbsp;</P> <P><STRONG><FONT color="#000000">Feature</FONT> 1 – Tag a Claimed
VM</STRONG></P> <P>&nbsp;</P> <P>By default, DTL does not allow an easy way for
the admin to know the ownership of claimed VMs. A common way to do this is to
add an “Owner” tag to the VM using <A
href="https://docs.microsoft.com/en-us/rest/api/resources/tags" target="_blank"
rel="noopener">Azure Tags</A>. Tags are flexible and allow lab admins to easily
organize Azure resources and make them easy to query, for example, to list VMs
assigned to a given user or set of users.&nbsp; In this solution, when a user
claims a VM, an event is fired, and the handler attaches an “Owner” tag, with
associated user name as data, to the VM.&nbsp; The tag shows up in the VM’s
properties in the Azure Portal.</P> <P>&nbsp;</P> <P><STRONG>Feature 2 – Delete
an Unclaimed VM</STRONG></P> <P>&nbsp;</P> <P>In SPO’s use case, VMs are not
re-usable. Once a VM is claimed by a lab user, the state on the VM may change in
such a way as to make the VM unsuitable for future users’ needs. For example,
users can change the state of one of the SharePoint web applications, or
introduce state into SharePoint by simply adding a document to a document
library as part of a test. (For a better understanding of SharePoint’s document
libraries, try: <A
href="https://support.microsoft.com/en-us/office/what-is-a-document-library-3b5976dd-65cf-4c9e-bf5a-713c10ca2872"
target="_blank" rel="noopener">What is a document library?</A>) The engineer may
also update the code running on the VM, which can change behavior in a way
undesirable for other engineers.</P> <P>&nbsp;</P> <P>In general, once a VM is
assigned to a lab user, its validity as a clean test environment can no longer
be trusted. With this use case in mind, VMs in the SPO solution are
single-use.&nbsp; Once unclaimed, they are deleted.</P> <P>&nbsp;</P>
<P><STRONG><EM>Note:</EM></STRONG><EM> Replenishment of the pool of available
VMs is described in a future blog entry in this series, entitled “Maintaining a
Pool of Claimable VMs”.</EM></P> <P>&nbsp;</P> <P>Both of these features can be
added to DevTest Labs using <A
href="https://azure.microsoft.com/en-us/services/event-grid/" target="_blank"
rel="noopener">Azure Event Grid</A>, with an <A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener">Azure Function</A> listening and handling events.
The solution is simple and elegant; please read on to see how this is
configured.</P> <P>&nbsp;</P> <H2>Event Handling with Azure Functions</H2>
<P>&nbsp;</P> <P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener">Azure Functions</A>&nbsp;are a flexible,
serverless computing platform in Azure. Functions can be configured to trigger
when an Azure event fires, and DevTest Labs fires “Claim” and “Unclaim” events
when VMs are claimed or unclaimed, respectively.&nbsp; When configured properly
through <A href="https://azure.microsoft.com/en-us/services/event-grid/"
target="_blank" rel="noopener">Event Grid</A>, events are dispatched to an Azure
Function subscriber.</P> <P>&nbsp;</P> <P>For simplicity and brevity, the
solution described herein implements a single Azure function to handle both
Claim and Unclaim events. The function is written in <A
href="https://docs.microsoft.com/en-us/powershell" target="_blank"
rel="noopener">PowerShell</A> and implements the tagging and delete business
logic for these events. &nbsp;It is deployed in a Function App, triggered when
events fire, in accordance with this table:</P> <P>&nbsp;</P> <TABLE
width="719"> <TBODY> <TR> <TD width="133"> <P><STRONG>DevTestLab Event
</STRONG></P> </TD> <TD width="370"> <P><STRONG>Event Name</STRONG></P> </TD>
<TD width="215"> <P><STRONG>Action</STRONG></P> </TD> </TR> <TR> <TD
width="133"> <P><STRONG>Claim</STRONG></P> </TD> <TD width="370">
<P>microsoft.devtestlab/labs/virtualmachines/claim/action</P> </TD> <TD
width="215"> <P>Add an "Owner" tag to the VM</P> </TD> </TR> <TR> <TD
width="133"> <P><STRONG>Unclaim</STRONG></P> </TD> <TD width="370">
<P>microsoft.devtestlab/labs/virtualmachines/unclaim/action</P> </TD> <TD
width="215"> <P>Delete the VM</P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P>
<P><STRONG><EM>Note:</EM></STRONG><EM> You can find a complete list of
DevTestLab events here: </EM><A
href="https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftdevtestlab"
target="_blank" rel="noopener"><EM>DevTest Lab Events</EM></A><EM>. There are
several useful ones that, when paired with the technique described in this post,
can be used to solve other event-driven scenarios using the template given
here.</EM></P> <P>&nbsp;</P> <H2>Solution Architecture</H2> <P>&nbsp;</P>
<P>This solution builds on the ideas presented in the article <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/extend-devtest-labs-azure-functions"
target="_blank" rel="noopener">Use Azure Functions to extend DevTest Labs</A>. A
key difference is how the events are triggered: In the article, the Functions
are triggered via an HTTP call.&nbsp; In this example, Claim/Unclaim events are
generated from the DevTest Lab and routed via Event Grid to the function app.
&nbsp;We will also be building on the coding concepts in <A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid-trigger?tabs=csharp"
target="_blank" rel="noopener">Azure Event Grid trigger for Azure
Functions</A>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_15-1615912246433.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264413iBF4DEA280572CB61/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_15-1615912246433.png"
alt="Sagar_Lankala_15-1615912246433.png" /></span></P> <P>&nbsp;</P>
<H2>Walkthrough</H2> <P>&nbsp;</P> <P>The following solution assumes a
pre-created Azure DevTest Lab, such as one created using the steps in <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-create-lab"
target="_blank" rel="noopener">Create a lab in Azure DevTest Labs</A>. In this
example, the Lab has been freshly deployed with name “PetesDTL” and resource
group “PetesDTL_rg” with no VMs yet created.</P> <P>&nbsp;</P> <P><STRONG>Step
1: Create a Function App</STRONG></P> <P>Use the “Create a Resource” UI and find
“Function App” in your Azure subscription, and hit “Create”. &nbsp;Select the
resource group for your DevTest Lab.&nbsp; This is optional but is a convenience
for grouping your app with the other resources for your Lab. In this example,
the Name of the app is "PetesFnApp" and is in the “PetesDTL_rg” resource group
with a Runtime stack that is PowerShell Core.&nbsp; <A
href="https://microsoft.com/powershell" target="_blank"
rel="noopener">PowerShell Core</A> is a flexible, operating system independent
control language that is easy to get to work with Azure.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_16-1615913628568.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264430iAC7FA62F4D69F6A4/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_16-1615913628568.png"
alt="Sagar_Lankala_16-1615913628568.png" /></span></P> <P>&nbsp;</P> <P>Leaving
the majority of the settings with their defaults, hit “Review + create”, then
“Create” to deploy the function app after the verification step.</P>
<P>&nbsp;</P> <P><STRONG>Step 2: Create the FnDTLClaimUnclaim
Function</STRONG></P> <P>Navigate to the newly-deployed Function App, hit
“Functions” and then “+ Add” to add a new function to the App.&nbsp; Leave the
“Development environment” to be “Develop in portal” and select “Azure Event Grid
trigger” for the template.&nbsp; In this example, the new function is named
“FnDTLClaimUnclaim”.&nbsp; The name indicates that this Powershell Core function
is dual-purpose and will handle both the “Claim” and “Unclaim” events from the
DevTest Lab.&nbsp; Click “Add”.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_17-1615913657857.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264431iECF8CB03B838F24F/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_17-1615913657857.png"
alt="Sagar_Lankala_17-1615913657857.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Step 3: Add logic to the function</STRONG></P> <P>Navigate to the
newly-created function, and hit “Code + Test”.&nbsp; There is some sample code
in the edit window, which you can replace with the following code:</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">param($eventGridEvent, $TriggerMetadata) $operationName =
$eventGridEvent.data["operationName"] # Apply an Owner tag to a VM based on
passed-in claims function ApplyOwnerTag($vmId, $claims) { # Get the VM $dtlVm =
Get-AzResource -ResourceId $vmId -ErrorAction SilentlyContinue # Fetch user. #
Prefer user specified in claims, then owner, then createdBy $claimPropName =
$claims.keys | Where-Object {$_ -like "*/identity/claims/name"} if
($claimPropName) { $user = $claims[$claimPropName] } if (-not $user) { $user =
$dtlVm.Properties.ownerUserPrincipalName } if (-not $user) { $user =
$dtlVm.Properties.createdByUser } $tags = $dtlvm.Tags if ($tags) { if (-not
$tags.keys.Contains("Owner")) { $tags.Add("Owner", $user) } } else { $tags = @{
Owner=$user } } # Save the VM's tags Set-AzResource -ResourceId $vmId -Tag $tags
-Force | Out-Null } # Event Action # ------------------------------------------
# Claim Add "owner" tag to the VM # Unclaim Delete the VM $claimAction =
($operationName -eq "microsoft.devtestlab/labs/virtualmachines/claim/action")
$unclaimAction = ($operationName -eq
"microsoft.devtestlab/labs/virtualmachines/unclaim/action") if ($claimAction -or
$unclaimAction) { $vmId = $eventGridEvent.subject Connect-AzAccount -Identity
$dtlVm = Get-AzResource -ResourceId $vmId -ErrorAction SilentlyContinue if
($claimAction) { if (-not $dtlVm.Properties.allowClaim) { ApplyOwnerTag $vmId
$eventGridEvent.data.claims } } else { if ($dtlVm.Properties.allowClaim) {
Remove-AzResource -ResourceId $vmId -Force -ErrorAction SilentlyContinue } } }
</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Click “Save” to save the
function.</P> <P>&nbsp;</P> <P>The code snippet contains an ApplyOwnerTag
function and a main body.&nbsp; The ApplyOwnerTag function gets the user from
variety of sources, preferring first the identity from the passed-in claims,
then looking at the owner or created-by user from the DevTestLabs VM.&nbsp; Once
it has a valid user name, it adds the “Owner” tag to the VM.</P> <P>&nbsp;</P>
<P>The main body of the Azure Function first determines which event is being
handled.&nbsp; On a Claim event, the ApplyOwnerTag function is called to add the
“Owner” tag to the given VM.&nbsp; On Unclaim, the VM is removed.&nbsp; This
logic implements the behavior desired for the SharePoint Online application for
these two events.</P> <P>&nbsp;</P> <P><STRONG>Step 4: Assign an Identity and
Role for the Azure Function</STRONG></P> <P>&nbsp;</P> <P>The Azure function has
a call to Connect-AzAccount, which requires that the function app uses a
System-assigned identity.&nbsp; (User-assigned identities can also be
configured, however for simplicity this example uses a System-assigned
identity.)&nbsp; Further, the identity in question needs access to resources in
the subscription in order to add tags and to delete VMs.&nbsp; To configure
this, click on the Function App, then Identity.&nbsp; Change the Status to
“On”.&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_18-1615913793433.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264432iEACFF1531B2A335E/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_18-1615913793433.png"
alt="Sagar_Lankala_18-1615913793433.png" /></span></P> <P>&nbsp;</P> <P>Next,
Click on “Azure role assignments” to configure role-based access control for
this Function App.&nbsp; In this example, Contributor role is assigned for the
entire Azure subscription.&nbsp; While it’s possible to configure more
fine-grained access to the Identity, this example in order to keeps things
simple.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_19-1615913821861.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264433iD1200866F8C407DE/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_19-1615913821861.png"
alt="Sagar_Lankala_19-1615913821861.png" /></span></P> <P>&nbsp;</P> <P>The
resultant role assignment should look like this:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_20-1615913843791.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264434iD67D84695E111C29/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_20-1615913843791.png"
alt="Sagar_Lankala_20-1615913843791.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Step 5: Create an Event Subscription for the Function
App</STRONG></P> <P>&nbsp;</P> <P>At this point we have logic ready to handle
the DevTestLabs events, but the Function App is not configured to subscribe to
those events.&nbsp; Azure Event Grid is infrastructure for mapping Azure events
to logic and can be used to create rich applications. To get deeper into Azure
Event Grid, please check out <A
href="https://docs.microsoft.com/en-us/azure/event-grid/overview"
target="_blank" rel="noopener">Azure Event Grid Overview</A>.</P> <P>Navigate to
the subscription, then click Events.&nbsp; Under “Get Started”, click on “Azure
Function”:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_21-1615913869342.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264435i85DEC63D32A4187F/image-size/medium?v=v2&amp;px=400"
role="button" title="Sagar_Lankala_21-1615913869342.png"
alt="Sagar_Lankala_21-1615913869342.png" /></span></P> <P>&nbsp;</P> <P>Enter
“DTLEventSub” as the name.&nbsp; Use “ClaimUnclaimVM” for the System Topic
Name.&nbsp; For Endpoint Type select “Azure Function” with Endpoint
“FnDTLClaimUnclaim”.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_22-1615913902855.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264436i42FA487A8A2B0F61/image-size/medium?v=v2&amp;px=400"
role="button" title="Sagar_Lankala_22-1615913902855.png"
alt="Sagar_Lankala_22-1615913902855.png" /></span></P> <P>&nbsp;</P> <P>Hit
Create.&nbsp; This will create the ClaimUnclaimVM Topic and the Event
Subscription.</P> <P>&nbsp;</P> <P><STRONG>Step 6: Test the Claim
functionality</STRONG></P> <P>&nbsp;</P> <P>Navigate to the DevTest Lab in your
subscription, “PetesDTL” in this example, and click “+ Add” to create a new
VM.&nbsp; The type of VM you choose is not relevant for this example – you can
select the operating system and resources that are appropriate for your
application.&nbsp; In this example the VM is named “petesvm001”.&nbsp;</P> <P>In
“Advanced Settings”, select “Yes” for “Make this machine claimable” under “Claim
options”, then in “Basic Settings” click “Create”. The reason is that we expect
to Claim the VM through the UI to trigger the tagging behavior.&nbsp; Later,
when we Unclaim the VM, we will expect to see the VM being deleted.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_26-1615914079102.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264440i5CBD3181F30BF22C/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_26-1615914079102.png"
alt="Sagar_Lankala_26-1615914079102.png" /></span></P> <P>&nbsp;</P> <P>After
the VM is created (this may take several minutes, perhaps tens of minutes, to
complete) it should show in the “Claimable virtual machines” section of the
DevTest Labs UI:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_25-1615914033001.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264439i82B28E8C950B2806/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_25-1615914033001.png"
alt="Sagar_Lankala_25-1615914033001.png" /></span></P> <P>&nbsp;</P> <P>Note
that this VM does not have an “Owner” tag yet, since it has not yet been
claimed:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_24-1615914016828.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264438iC8791D649CECEE07/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_24-1615914016828.png"
alt="Sagar_Lankala_24-1615914016828.png" /></span></P>
<P><STRONG>&nbsp;</STRONG></P> <P>Now, click the ellipsis (…) on the VM in the
Claimable virtual machines, and select “Claim”.&nbsp; This operation will also
take several tens of minutes before the VM is successfully claimed and the Azure
event has made its way through the Event Grid infrastructure and called our
Azure Function.&nbsp; You can monitor when your Function has been called by
selecting the Function in the Function App UI and seeing Total and Successful
Execution Count in the Overview section:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_23-1615913992716.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264437iD5AB4F190B7F02D5/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_23-1615913992716.png"
alt="Sagar_Lankala_23-1615913992716.png" /></span></P> <P>&nbsp;</P> <P>You can
also see what the Azure Function logs in near real-time by using the “Code +
Test” UI and opening the Logs popup at the bottom:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_27-1615914114419.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264441i15CD0666D69AAF45/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_27-1615914114419.png"
alt="Sagar_Lankala_27-1615914114419.png" /></span></P> <P>&nbsp;</P> <P>After
several minutes, the Function is called, and the ApplyOwnerTag PowerShell
function adds the current user’s name in the Owner tag, as expected:</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_28-1615914135842.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264443i2D857FC55D6C0EB9/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_28-1615914135842.png"
alt="Sagar_Lankala_28-1615914135842.png" /></span></P> <P>&nbsp;</P> <P>Now
navigate to “My virtual machines” in the DevTest Labs UI, click the ellipsis (…)
and select “Unclaim”:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_29-1615914157921.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264444i609FE37C7ECF3AC3/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_29-1615914157921.png"
alt="Sagar_Lankala_29-1615914157921.png" /></span></P> <P>&nbsp;</P> <P>Once
again, it will take several minutes for the event to make its way through Azure
to call FnDTLClaimUnclaim, but when it does the Remove-AzResource call will
ensure the VM gets deleted:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_30-1615914175826.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264445i4829C43F36BD6A6C/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_30-1615914175826.png"
alt="Sagar_Lankala_30-1615914175826.png" /></span></P> <P>&nbsp;</P>
<P><SPAN>This completes the full Claim/Unclaim cycle that a SharePoint Online
user would experience and demonstrates the two features built on top of DevTest
Labs.</SPAN></P> <P>&nbsp;</P> <P><SPAN><STRONG>Some Notes on
Performance</STRONG></SPAN></P> <P>&nbsp;</P> <P>The Azure Function App used in
this example uses the <A href="https://microsoft.com/powershell" target="_blank"
rel="noopener">PowerShell Core</A> runtime.&nbsp; PowerShell was chosen for its
strength as a simple control language for Azure, and its amenability to concise
code samples.&nbsp; However, there is overhead to the boot time and resource
consumption for PowerShell-based Function Apps over, say, C#-based Apps that
should not be overlooked for performance-sensitive applications.</P>
<P>&nbsp;</P> <P>Eventing in Azure has its own set of performance
characteristics, and you will notice with these samples delays of minutes and
sometimes up to tens of minutes for events to fire and be handled by the
Function App.&nbsp; This can be improved somewhat by upgrading from a
Consumption Plan to an Dedicated App Service Plan, but one should bear in mind
that there is always inherent and unavoidable latency due to the Azure’s
eventing model, and this should be accounted for in the design of the Azure
application.</P> <P>&nbsp;</P> <P><FONT size="4"><STRONG>What's
Next?</STRONG></FONT></P> <P>&nbsp;</P> <P>The next blog post will describe how
the SharePoint team built an Azure VPN that complements the DevTest Lab,
securing the connection between lab users and the VMs they connect to. If you
are interested in securing your environment, this is not one you will want to
miss!</P> <P>If you run into any problems with the content, or have any
questions, please feel free to drop a comment below this post and we will
respond. Your feedback is always welcome.</P> <P>&nbsp;</P> <P><STRONG>- Pete
Harwood</STRONG>, Principal Engineering Manager, OneDrive and SharePoint
Engineering Fundamentals at Microsoft</P> <P>&nbsp;</P> <P>&nbsp;</P> Tue, 16
Mar 2021 21:23:59 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-enabling-an-event-driven-architecture-with/ba-p/2214548
Sagar_Lankala 2021-03-16T21:23:59Z Build new skills in 30 days
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-new-skills-in-30-days/ba-p/2197517
<P>Today, we are excited to share <A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A>, a guided, time-bound,
personal learning challenge, built upon the Microsoft Learn interactive training
platform. And as you learn, the new program helps you work towards certification
– by completing a learning collection within the 30 days, you can earn a voucher
once every six months for 50% off the cost of a Microsoft Certification
exam.*</P> <P>&nbsp;</P> <P>At Microsoft, our goal is to help make technical
learning accessible to anyone who wants to acquire a new skill, chase a new
career path, and stay up to date on the latest technological advances.</P>
<P>&nbsp;</P> <P>Technology continues to accelerate and change the world around
us – requiring people and businesses to quickly innovate and adapt to the latest
skills needed to thrive as a company and as an individual. To stay current,
access to technical learning resources is critical. &nbsp;Last year we made <A
href="https://blogs.microsoft.com/blog/2020/06/30/microsoft-launches-initiative-to-help-25-million-people-worldwide-acquire-the-digital-skills-needed-in-a-covid-19-economy/"
target="_self">a big bet on learning with our Global Skilling Initiative</A>,
aimed at helping 25 million people worldwide acquire critical new digital skills
with free access to learning paths and content, and low-cost certifications to
help people develop the skills new positions require.</P> <P>&nbsp;</P> <P><A
title="30 Days to Learn It"
href="https://developer.microsoft.com/offers/30-days-to-learn-it"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="30 Days to Learn It banner for blog.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262585iC7DD1D3EA2DEAC38/image-size/large?v=v2&amp;px=999"
role="button" title="30 Days to Learn It banner for blog.png" alt="30 Days to
Learn It banner for blog.png" /></span></A></P> <P>&nbsp;</P> <P><STRONG>30
Days&nbsp;of Learning&nbsp;</STRONG></P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A> accelerates your time to
mastery of in-demand technical skills with a commitment of less than an hour
each day for a month. Each learning journey introduces new technical skills and
concepts using Microsoft Learn’s step-by-step tutorials, browser-based
interactive coding and scripting environments, and task-based achievements. From
the day you sign up, you have a month-long journey with a personal project
tracker to visualize your progress through the learning content.</P>
<P>&nbsp;</P> <P>Today, the program launches with eight different journeys to
help you gain cloud development skills using Microsoft technologies. Topics
covered include AI, DevOps, cloud-native apps, serverless applications, low
code, Internet of Things (IoT), machine learning (ML), and compute
infrastructure. Each learning journey is designed to also provide a foundation
to help you prepare for the certification exam of your preferred learning
journey. A Microsoft Certification provides an industry-recognized validation of
your skills and can help advance your career.</P> <P>&nbsp;</P> <P
style="text-align: center;"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Blog Post 2.png" style="width: 883px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262276i86653BA755911811/image-size/large?v=v2&amp;px=999"
role="button" title="Blog Post 2.png" alt="Blog Post 2.png" /></span></P> <P
style="font-size: .65em;"><SUP>1 </SUP>Source: IDC White Paper, sponsored by
Microsoft, Benefits of Role-Based Certifications (June 2020)&nbsp;</P> <P
style="font-size: .65em;"><SUP>2 </SUP>Source: Nigel Frank Microsoft Azure
Salary Survey (June 2020)</P> <P>&nbsp;</P> <P><STRONG>Okay – Start
Learning!&nbsp;</STRONG></P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A>&nbsp;offers the
flexibility of completing a learning journey within 30 days from the time you
sign up, at your own pace, and provides the added opportunity to earn a discount
voucher for a Microsoft Certification exam if you complete your learning modules
in the 30-day period*.</P> <P>&nbsp;</P> <P>This program is now available
worldwide in 17 languages, and is currently <A
href="https://developer.microsoft.com/offers/30-days-to-learn-it/official-rules#terms-and-conditions"
target="_blank" rel="noopener">running through the end of June 2021</A>.</P>
<P>&nbsp;</P> <P>Register for <A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A>&nbsp;and start your
learning journey today!</P> <P>&nbsp;</P> <P style="font-size: .8em;">* <A
href="&quot;https://developer.microsoft.com/offers/30-days-to-learn-it/official-rules#terms-and-conditions"
target="_blank" rel="noopener">Terms &amp; conditions</A> apply: one (1) voucher
per person every six months</P> <P style="font-size: .8em;">&nbsp;</P> Thu, 11
Mar 2021 18:44:53 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-new-skills-in-30-days/ba-p/2197517
Cliff_Simpkins 2021-03-11T18:44:53Z Deliver Java Apps Quickly using Custom
Connectors in Power Apps
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deliver-java-apps-quickly-using-custom-connectors-in-power-apps/ba-p/2176592
<P><STRONG><SPAN data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the&nbsp;webinar&nbsp;of the month for the Low-code application
development (LCAD) on Azure solution. LCAD on Azure is a new solution
to&nbsp;demonstrate&nbsp;the robust development capabilities of integrating
low-code Microsoft Power Apps and the Azure products you may be familiar
with.&nbsp;&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">This month’s webinar is ‘</SPAN><SPAN
data-contrast="auto">Deliver Java Apps Quickly using Custom Connectors in Power
Apps’</SPAN><SPAN data-contrast="none">&nbsp;In this blog I will
briefly&nbsp;</SPAN><SPAN data-contrast="none">recap</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">,</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">how the app was
built with Java on Azure, app deployment, and building the app’s front end and
UI with Power Apps.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">What is Low-code application
development&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">on</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;Azure</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was
created to help developers build business applications faster with less
code,&nbsp;leveraging&nbsp;the Power Platform, and more specifically Power Apps,
yet helping them scale and extend their Power Apps with Azure
services.&nbsp;&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse employees’ track incoming inventory. That application would
take months to build, test, and deploy, however with Power Apps’ it can take
hours to build, saving time and resources.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;However, say the warehouse employees want
the application to place procurement orders for&nbsp;additional&nbsp;inventory
automatically when current inventory hits a determined low. In the past that
would require another heavy lift by the development team
to&nbsp;rework&nbsp;their&nbsp;previous&nbsp;application iteration. Due to the
integration of Power Apps and Azure a professional developer can build an API in
Visual Studio (VS) Code, publish it to their Azure portal, and export the API to
Power Apps integrating it into their application as a custom connector.
Afterwards, that same API is re-usable indefinitely in the Power Apps’ studio,
for future use with other applications, saving the company and developers more
time and resources. To learn&nbsp;</SPAN><SPAN
data-contrast="none">more,</SPAN><SPAN data-contrast="none">&nbsp;visit
the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD</SPAN><SPAN
data-contrast="none">&nbsp;on Azure page</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN data-contrast="none">and to walk
through the</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">a</SPAN><SPAN
data-contrast="none">forementioned&nbsp;</SPAN><SPAN
data-contrast="none">scenario</SPAN><SPAN data-contrast="none">&nbsp;try
the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on Azure guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Java on Azure Code</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In this&nbsp;webinar&nbsp;the sample application
will be a Spring Boot application, or a Spring application on
Azure,&nbsp;</SPAN><SPAN data-contrast="none">that is&nbsp;</SPAN><SPAN
data-contrast="none">generated&nbsp;</SPAN><SPAN
data-contrast="none">using&nbsp;</SPAN><SPAN
data-contrast="none">JHipster</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">and
will&nbsp;</SPAN><SPAN data-contrast="none">deploy the app&nbsp;</SPAN><SPAN
data-contrast="none">with&nbsp;</SPAN><SPAN data-contrast="none">Azure
App</SPAN><SPAN data-contrast="none">&nbsp;service. The app’s purpose
is&nbsp;</SPAN><SPAN data-contrast="none">to catalog products, product
descriptions,&nbsp;</SPAN><SPAN data-contrast="none">ratings&nbsp;and image
links</SPAN><SPAN data-contrast="none">, in
a&nbsp;monolithic&nbsp;app.&nbsp;</SPAN><SPAN data-contrast="none">To learn how
to build serverless PowerApps</SPAN><SPAN data-contrast="none">,</SPAN><SPAN
data-contrast="none">&nbsp;please refer to last month’s&nbsp;</SPAN><A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-deep-dive-into-serverless-applications-on-power-apps-and-azure/ba-p/2113430"
target="_blank" rel="noopener"><SPAN data-contrast="none">Serverless Low-code
application development on Azure</SPAN></A><SPAN data-contrast="auto">&nbsp;blog
for details.&nbsp;</SPAN><SPAN data-contrast="auto">During the development of
the&nbsp;</SPAN><SPAN data-contrast="auto">API</SPAN><SPAN
data-contrast="auto">&nbsp;Sandra used H2SQL and in production she used
MySQL.&nbsp;</SPAN><SPAN data-contrast="auto">She then add</SPAN><SPAN
data-contrast="auto">s</SPAN><SPAN data-contrast="auto">&nbsp;descriptions,
ratings, and image links to the&nbsp;</SPAN><SPAN
data-contrast="auto">API</SPAN><SPAN
data-contrast="auto">&nbsp;in&nbsp;</SPAN><SPAN
data-contrast="auto">a</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">JDS studio.&nbsp;</SPAN><SPAN data-contrast="auto">Lastly,
she applies the API to her GitHub repository</SPAN><SPAN
data-contrast="auto">&nbsp;prior to deploying to Azure App
service.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Deploying</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;the</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">S</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">ample&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">A</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">pp</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Sandra&nbsp;leverages&nbsp;the Maven plug-in in
JHipste</SPAN><SPAN data-contrast="auto">r</SPAN><SPAN
data-contrast="auto">&nbsp;to deploy the app to Azure App
service.&nbsp;</SPAN><SPAN data-contrast="auto">A</SPAN><SPAN
data-contrast="auto">fter&nbsp;providing&nbsp;an A</SPAN><SPAN
data-contrast="auto">zure&nbsp;resource group name&nbsp;</SPAN><SPAN
data-contrast="auto">due to her choice of ‘split and deploy’ in GitHub
Actions&nbsp;</SPAN><SPAN data-contrast="auto">she only manually
deploy</SPAN><SPAN data-contrast="auto">s</SPAN><SPAN
data-contrast="auto">&nbsp;once, and a</SPAN><SPAN data-contrast="auto">ny new
Git push from her master branch will be&nbsp;automatically
deployed.&nbsp;</SPAN><SPAN data-contrast="auto">Once the app is successfully
deployed it is available at myhispter.azurewebsites.net/V2APIdocs, where she
copies the&nbsp;</SPAN><SPAN data-contrast="auto">Swagger API file into a JSON,
which will be imported&nbsp;</SPAN><SPAN data-contrast="auto">into</SPAN><SPAN
data-contrast="auto">&nbsp;Power Apps as a custom connector.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN
data-contrast="auto">Front-end&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">D</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">evelopment</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The goal of the front-end development is to build
a user interface that end users will be satisfied with, to&nbsp;</SPAN><SPAN
data-contrast="auto">do so the JSON must be brought into Power Apps as a custom
connect</SPAN><SPAN data-contrast="auto">or so end users can access the API. The
first step is clearly to import the open API into Power Apps, note that much of
this process has been streamlined via the tight integration</SPAN><SPAN
data-contrast="auto">&nbsp;of Azure API management with Power Apps. To learn
more about this tighter integration&nbsp;</SPAN><SPAN data-contrast="auto">watch
a&nbsp;</SPAN><A
href="https://www.youtube.com/watch?v=06CRN18kH1k&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=6"
target="_blank" rel="noopener"><SPAN data-contrast="none">demo on integrating
APIs via API management into Power Apps</SPAN><SPAN
data-contrast="none">.</SPAN></A><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After importing the API, you&nbsp;</SPAN><SPAN
data-contrast="auto">must</SPAN><SPAN data-contrast="auto">&nbsp;create a custom
connector,</SPAN><SPAN data-contrast="auto">&nbsp;and connect that custom
connector with the Open API the backend developer built.&nbsp;</SPAN><SPAN
data-contrast="auto">After creating the custom connector Dawid used Power Apps
logic formula language to collect data into a dataset, creating gallery display
via the collected data. Lastly, Dawid will show you the data in a finalized
application a</SPAN><SPAN data-contrast="auto">nd walk you through the process
of sharing the app with a colleague or making them a co-owner. Lastly, once the
app is shared, Dawid walks you through testing the app and soliciting user
feedback via the app.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Conclusion</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To conclude, professional developers can rapidly
build the back and front ends of the application using Java, or any programming
language with Power Apps.&nbsp;Fusion development teams, professional developers
and citizen developers,&nbsp;can collaborate on apps together, reducing much of
the lift for professional developers. Please watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-DeliverJavaAppsQuicklyUsingCustomConnectors.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN
data-contrast="none">webinar</SPAN></A><SPAN
data-contrast="auto">&nbsp;and&nbsp;</SPAN><SPAN data-contrast="auto">complete
the&nbsp;</SPAN><A
href="https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbRzDZlq55wCpLjWQ_IU7xv-VURVRFQUdPSTJVTjBOR0RWM0U1VFFSM1pYUS4u"
target="_blank" rel="noopener"><SPAN data-contrast="none">survey</SPAN></A><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">so,</SPAN><SPAN
data-contrast="auto">&nbsp;we can improve these blogs and webinars in the
future.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="-" data-font="Calibri" data-listid="6"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Webinar</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="6"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://info.microsoft.com/ww-Landing-DeliverJavaAppsQuicklyUsingCustomConnectors.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN data-contrast="none">Deliver Java Apps
Quickly</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="-" data-font="Calibri" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Low-code application
development&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">on</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;Azure&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low Code Application
Development</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="2"><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code app dev
guided tour</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="-" data-font="Calibri" data-listid="5"
aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Java on Azure resources&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://azure.microsoft.com/en-us/develop/java/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Java on Azure</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/java-on-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Java on Azure -
Learn</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/publish-azure-web-app-with-azure-toolkit-eclipse/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop Java web app
on Azure using Eclipse - Learn&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/publish-web-app-with-maven-plugin-for-azure-app-service/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop Java web app
on Azure using Maven - Learn&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/deploy-java-containers/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Automate Java
container deployments with Azure Pipelines - Learn&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/azure-spring-cloud-workshop/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Deploy Spring
microservices to Azure - Learn</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="-" data-font="Calibri" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Power Apps resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><A
href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure plus Power Apps
for pro developers</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/intro-developing-power-platform/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Introduction to
developing with Power Platform</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/use-power-apps-component-framework/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Create components with
Power Apps Component Framework</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/get-started-cds/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Get started using
Microsoft Dataverse</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> Fri, 26 Mar 2021 01:01:09 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deliver-java-apps-quickly-using-custom-connectors-in-power-apps/ba-p/2176592
riduncan 2021-03-26T01:01:09Z Announcing Logic Apps Public Preview Refresh
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/announcing-logic-apps-public-preview-refresh/ba-p/2180994
<DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"> <P>We&nbsp;<A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-logic-apps-runtime-performance-and-developer-improvements/ba-p/1645335"
target="_blank" rel="noopener">announced</A>&nbsp;the&nbsp;public preview of
Logic Apps' new runtime, performance and developer improvements in September
2020, and first <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-s-new-in-logic-apps/ba-p/1969149"
target="_blank" rel="noopener">public preview refresh</A> in December 2020.
Today, we are happy to announce another major update that continue to extend the
capability of Logic Apps. You can find the highlights about this release
below.</P> <P>&nbsp;</P> <P><STRONG>Quality focused</STRONG></P> <P>We have
received tremendous amount of interests from customers in healthcare, insurance,
retail and other industries on the new runtime. As the team gears up towards
general availability of the new runtime, the top focus of this public preview
refresh is quality.&nbsp;The team spent significant amount of time on bug fix,
reliability, and supportability improvements, so that you can feel confident
using the new runtime for production workload at general availability.</P>
<P>&nbsp;</P> <P><STRONG>Cross-platform&nbsp;compatibility</STRONG></P>
<P>Inline Code action allows customers to write simple JavaScript code from
right within the workflow designer with the ability to reference outputs from
previous actions. In this release, Inline Code action is now supported not only
on Windows, but also on macOS and Linux.&nbsp;</P> <P>&nbsp;</P>
<P><STRONG>Developer productivity</STRONG></P> <P>With the new runtime,
customers can author workflows using the visual designer locally from <A
href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps"
target="_self">VS Code</A>. In this release, we’ve made it even more streamlined
by removing designer’s storage dependency. This means you are no longer required
to have storage emulator or connection to storage account in Azure to use the
visual designer in VS Code.</P> <P>&nbsp;</P> <P>Other improvements to VS Code
extension includes the ability to configure webhook hostname so that the
callback request can be routed to localhost during testing, and the ability to
switch from extension bundle to NuGet-based local project.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Screen Shot 2021-03-02 at 11.59.15 PM.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/260428i04DB83552F2401F5/image-size/medium?v=v2&amp;px=400"
role="button" title="Screen Shot 2021-03-02 at 11.59.15 PM.png" alt="Screen Shot
2021-03-02 at 11.59.15 PM.png" /></span></P> <P>&nbsp;</P> <P><STRONG>Designer
and portal&nbsp;improvements</STRONG></P> <P>New designer features in this
release allow you to create parallel branches, drag-and-drop to rearrange
actions, and easily delete unwanted actions via right-click menu.</P>
<P>&nbsp;</P> <P>In Azure portal, the resource browse experience is combined to
show both the multi-tenant/consumption Logic Apps, as well as the single-tenant
Logic Apps on Functions runtime. Trigger history page is added to allow easy
debugging when the workflow isn’t being triggered as expected.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Screen Shot 2021-03-03 at 12.01.02 AM.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/260429i112C2B7DF001C403/image-size/medium?v=v2&amp;px=400"
role="button" title="Screen Shot 2021-03-03 at 12.01.02 AM.png" alt="Screen Shot
2021-03-03 at 12.01.02 AM.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Accessibility</STRONG></P> <P>Microsoft is <A
href="https://www.microsoft.com/accessibility" target="_self">committed</A> to
revolutionizing access to technology for people living with disabilities, and us
from the Logic Apps team believe in developing technologies that enable everyone
to easily build workflows and integration solutions. In this release, we added
keyboard navigation shortcuts to allow&nbsp;intuitive navigation of the graph
between actions.</P> <P>&nbsp;</P> <P><STRONG>Learn more</STRONG></P> <P
data-unlink="true">Please check out <A
href="https://docs.microsoft.com/azure/logic-apps/logic-apps-overview-preview"
target="_self">documentations</A> on the new runtime, and tune in to the
upcoming <A href="https://www.youtube.com/watch?v=mJo-Lr5rZc0"
target="_self">Logic Apps Live</A>, scheduled to premiere on March 4th, 2021 at
9AM pacific time, during which the team will cover the release in more
details.</P> <P data-unlink="true"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Screen Shot 2021-03-01 at 11.28.15 PM.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/260427i0E39E65AC02B1F64/image-size/medium?v=v2&amp;px=400"
role="button" title="Screen Shot 2021-03-01 at 11.28.15 PM.png" alt="Screen Shot
2021-03-01 at 11.28.15 PM.png" /></span></P> <P>&nbsp;&nbsp;</P> <P><SPAN>To get
started, download the&nbsp;</SPAN><A
href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps"
target="_self" rel="noopener noreferrer">VS Code extension</A><SPAN>&nbsp;and
create a local project, or create a new resource from the&nbsp;</SPAN><A
href="https://portal.azure.com/" target="_self" rel="nofollow noopener
noreferrer">Azure Portal</A><SPAN>. You can submit your feedback&nbsp;</SPAN><A
href="http://aka.ms/lafeedback" target="_self" rel="noopener
noreferrer">here</A><SPAN>.</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><SPAN>Derek, on behalf of the Logic Apps team</SPAN></P> </DIV> Fri, 05 Mar
2021 00:00:37 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/announcing-logic-apps-public-preview-refresh/ba-p/2180994
derek1ee 2021-03-05T00:00:37Z Introducing Microsoft Power Fx: the low-code
programming language
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-microsoft-power-fx-the-low-code-programming-language/ba-p/2169705
<P><SPAN data-contrast="auto">Today the Power Platform introduces
its&nbsp;</SPAN><SPAN data-contrast="auto">formula language for
low-code</SPAN><SPAN data-contrast="auto">,&nbsp;</SPAN><SPAN
data-contrast="auto">Microsoft Power&nbsp;Fx</SPAN><SPAN data-contrast="auto">.
This language originates from&nbsp;</SPAN><SPAN data-contrast="auto">Microsoft
Excel and</SPAN><SPAN data-contrast="auto">&nbsp;is already the foundation of
the&nbsp;</SPAN><A
href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft Power
Apps</SPAN></A><SPAN data-contrast="auto">&nbsp;canvas. You
may&nbsp;</SPAN><SPAN data-contrast="auto">wonder</SPAN><SPAN
data-contrast="auto">, why does a low-code platform need a programming
language?&nbsp;</SPAN><SPAN data-contrast="none">The truth is, point-and-click
tools are great for quickly assembling experiences and workflows, but many apps
need a layer of logic that goes beyond what is practical to drag and
drop</SPAN><SPAN data-contrast="none">, for example:</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><I><SPAN data-contrast="none">Show a
list of customers who signed up in the last 7 days within 15 miles of this
location.&nbsp;</SPAN></I><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><I><SPAN
data-contrast="none">Highlight the newest entries in
green.&nbsp;</SPAN></I><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><I><SPAN data-contrast="none">When a
user clicks for more details, if the record has outstanding action items
associated with it, pop those to the top of the screen.</SPAN></I><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></LI>
</UL> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_0-1614365930920.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/258488i54F16EFBD10B8E65/image-size/medium?v=v2&amp;px=400"
role="button" title="riduncan_0-1614365930920.png"
alt="riduncan_0-1614365930920.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><SPAN
data-contrast="auto">C</SPAN><SPAN data-contrast="auto">ustom logic
traditionally needed to solve such problems is where low-code platforms have
“hit a cliff”&nbsp;</SPAN><SPAN data-contrast="auto">requiring&nbsp;</SPAN><SPAN
data-contrast="none">traditional&nbsp;</SPAN><SPAN
data-contrast="none">code,&nbsp;whe</SPAN><SPAN
data-contrast="none">re</SPAN><SPAN
data-contrast="none">&nbsp;the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;solution has
stepped in</SPAN><SPAN data-contrast="none">.&nbsp;</SPAN><SPAN
data-contrast="none">Power&nbsp;Fx&nbsp;</SPAN><SPAN
data-contrast="none">enables 200+ million people globally who&nbsp;</SPAN><SPAN
data-contrast="none">build</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">with&nbsp;</SPAN><SPAN data-contrast="none">Microsoft
Excel&nbsp;</SPAN><SPAN data-contrast="none">syntax</SPAN><SPAN
data-contrast="none">&nbsp;to build custom logi</SPAN><SPAN
data-contrast="none">c</SPAN><SPAN data-contrast="none">, reducing much of the
“cliff</SPAN><SPAN data-contrast="none">”</SPAN><SPAN
data-contrast="none">.</SPAN><SPAN data-contrast="none">&nbsp;However,
this&nbsp;</SPAN><SPAN data-contrast="none">does not</SPAN><SPAN
data-contrast="none">&nbsp;reduce the integration capabilities of Azure and
Power&nbsp;</SPAN><SPAN data-contrast="none">Apps but</SPAN><SPAN
data-contrast="none">&nbsp;enhances them</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Developers will cut their
development time and cost by using Power&nbsp;Fx&nbsp;where the complexities of
async coding are taken care of,&nbsp;</SPAN><SPAN
data-contrast="auto">Dataverse, Power Apps’ underlying data platform,
e</SPAN><SPAN data-contrast="auto">ntities and data types are first class
objects, and guard rails prevent run away code and other common
pitfalls.&nbsp;</SPAN><SPAN data-contrast="auto">Additionally, developers
can&nbsp;</SPAN><SPAN data-contrast="auto">use&nbsp;</SPAN><SPAN
data-contrast="auto">Power&nbsp;Fx&nbsp;with&nbsp;</SPAN><SPAN
data-contrast="auto">tools they are already familiar with such
as&nbsp;</SPAN><SPAN data-contrast="auto">VS (Visual Studio)</SPAN><SPAN
data-contrast="auto">&nbsp;Code, GitHub, Azure DevOps, and their own build
scripts and tools.&nbsp;</SPAN><SPAN
data-contrast="auto">Power&nbsp;Fx&nbsp;w</SPAN><SPAN data-contrast="auto">orks
with “pro-code” components created in JavaScript, C#, or other professional
languages.</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Read the entire
Power&nbsp;Fx&nbsp;announcement&nbsp;</SPAN><A
href="https://powerapps.microsoft.com/en-us/blog/what-is-microsoft-power-fx/"
target="_blank">here.</A></P> Fri, 05 Mar 2021 00:00:42 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-microsoft-power-fx-the-low-code-programming-language/ba-p/2169705
riduncan 2021-03-05T00:00:42Z Plan your Microsoft Azure experience at Microsoft
Ignite
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite/ba-p/2156674
<P>Microsoft Ignite, our free digital event, starts next week and runs from
March 2-4, 2021. We thought you might be interested to learn ways you can plan
to experience the power of&nbsp;<SPAN
data-contrast="none">Microsoft&nbsp;</SPAN><SPAN data-contrast="none">Azure and
connect with your worldwide data, infrastructure, applications, and hybrid
communities like never before. Attendees will learn about new innovations, speak
with Microsoft experts from around the globe</SPAN><SPAN data-contrast="none">,
and&nbsp;</SPAN><SPAN data-contrast="none">continue your
technical&nbsp;</SPAN><SPAN data-contrast="none">learning</SPAN><SPAN
data-contrast="none">&nbsp;journey</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><A
href="https://register.ignite.microsoft.com/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Register</SPAN></A><SPAN
data-contrast="none">&nbsp;to gain full access to all Microsoft Ignite has to
offer–it’s easy and at no-cost to you.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">Create the perfect event
schedule</SPAN></STRONG><SPAN data-contrast="none">&nbsp;</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN data-contrast="none">Explore the session
catalog&nbsp;</SPAN><SPAN data-contrast="none">to</SPAN><SPAN
data-contrast="none">&nbsp;find expert speakers,&nbsp;</SPAN><SPAN
data-contrast="none">interactive sessions</SPAN><SPAN data-contrast="none">, and
more.&nbsp;</SPAN><SPAN data-contrast="none">After
registering,&nbsp;</SPAN><SPAN data-contrast="none">get&nbsp;</SPAN><SPAN
data-contrast="none">s</SPAN><SPAN data-contrast="none">tart</SPAN><SPAN
data-contrast="none">ed on</SPAN><SPAN data-contrast="none">&nbsp;your journey
at&nbsp;</SPAN><A href="https://myignite.microsoft.com/sessions" target="_blank"
rel="noopener"><SPAN data-contrast="none">myignite.microsoft.co</SPAN><SPAN
data-contrast="none">m/sessions</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Below are&nbsp;</SPAN><SPAN
data-contrast="none">seven featured&nbsp;</SPAN><SPAN
data-contrast="none">session</SPAN><SPAN
data-contrast="none">s&nbsp;</SPAN><SPAN data-contrast="none">on Microsoft
Azure&nbsp;</SPAN><SPAN data-contrast="none">you can’t miss:</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/44be5449-eec6-4d63-8732-716147341d56?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS174: Go Limitless:
with Azure Data &amp;&nbsp;</SPAN><SPAN data-contrast="none">AI</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/9a68aef7-867e-441d-87bd-598923d7c5fc?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS175: Empowering
every developer to innovate with Microsoft Azure</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/1b57402f-1284-422f-b45d-010a8d0eef4a?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS176: Innovate across
Hybrid and Multicloud with Azure Arc</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/8c615c6a-64ef-4c40-8ede-7eed49bc92bc?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS177: Latest Azure
innovation for Windows Server and SQL Server</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/48e213fc-37e7-4203-b507-59c0cb74b876?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS178: Introducing the
future of mixed reality</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="6" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/80b8f59f-7b3b-41a1-ae79-7884e5eca5ba?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS179: New innovations
to bring AI to the edge</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="7" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/df53b87d-ef87-45ec-b4e4-11f29f7fa755?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS180: What's new with
Microsoft Azure infrastructure</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><STRONG>Follow&nbsp;#MSIgnite&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">Explore the latest event news, trending topics, and share
your point of view in real time</SPAN><SPAN
data-contrast="none">&nbsp;with&nbsp;</SPAN><SPAN
data-contrast="none">your</SPAN><SPAN
data-contrast="none">&nbsp;communit</SPAN><SPAN
data-contrast="none">y</SPAN><SPAN data-contrast="none">.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Join us on Twitter
and LinkedIn by using&nbsp;</SPAN><SPAN
data-contrast="none">#MSIgnite.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://twitter.com/MS_Ignite" target="_blank" rel="noopener"><SPAN
data-contrast="none">Join today &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>Connection Zone&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">Only at #MSIgnite will you meet the engineers and partners
who build and maintain our tools and get the answers to your toughest technical
questions. Register for an Ask the Expert session at
#MSIgnite.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://myignite.microsoft.com/community-connect" target="_blank"
rel="noopener"><SPAN data-contrast="none">Connect today
&gt;</SPAN></A><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>Learning Zone&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">The Learning Zone is the center for training, development,
and certification with Microsoft. Whatever your style of learning happens to
be,&nbsp;</SPAN><SPAN data-contrast="none">you can find content and interactive
opportunities to boost and diversify your&nbsp;</SPAN><SPAN
data-contrast="none">cloud skills</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://myignite.microsoft.com/learning-zone" target="_blank"
rel="noopener"><SPAN data-contrast="none">Explore today &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>One-on-one consultation&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">Schedule your 45-minute, one-on-one consultation
with&nbsp;</SPAN><SPAN data-contrast="none">Microsoft&nbsp;</SPAN><SPAN
data-contrast="none">Azure&nbsp;</SPAN><SPAN data-contrast="none">experts
in&nbsp;</SPAN><SPAN data-contrast="none">infrastructure, data&nbsp;</SPAN><SPAN
data-contrast="none">and&nbsp;</SPAN><SPAN data-contrast="none">AI, and
application</SPAN><SPAN data-contrast="none">&nbsp;development.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://myignite.microsoft.com/app-consult" target="_blank"
rel="noopener"><SPAN data-contrast="none">Schedule today &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>Continue your learning journey&nbsp;</STRONG></P>
<P><SPAN data-contrast="none">Find your way to deeper content, training options,
communities</SPAN><SPAN data-contrast="none">,</SPAN><SPAN
data-contrast="none">&nbsp;and certification details across all Microsoft cloud
solutions from one place.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://aka.ms/learnatignite" target="_blank" rel="noopener"><SPAN
data-contrast="none">Start exploring &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
Wed, 24 Feb 2021 18:32:26 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite/ba-p/2156674
Mark Winters 2021-02-24T18:32:26Z The Azure Security Architect Map
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091
<P>Hi,</P> <P>&nbsp;</P> <P>Recently, I built the <A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Solution-Architect-Map/ba-p/689700"
target="_self">Azure <STRONG>Solution</STRONG> Architect Map</A> aimed at
helping Architects finding their way in Azure.&nbsp; Given the unexpected
success and the very positive feedback I received, I decided to come up with
other maps, namely the Azure <STRONG>Security </STRONG>Architect Map, the Azure
<STRONG>Infrastructure</STRONG> Architect Map and the Azure
<STRONG>Application</STRONG> Architect Map.</P> <P>&nbsp;</P> <P>Here are all
the maps in my series of Architecture Maps:</P> <UL> <LI><A id="link_20"
class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></LI> <LI><A id="link_13" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><STRONG><A id="link_14" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_15" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P><BR />The purpose of the Solution Architect map is to give a high-level view
and quick insights about what is available and how to choose between the
different services according to some functional needs. <BR />It covers a few key
areas, mostly about putting in place the foundations of an Azure Platform, and
cannot go into the details because this would make the map very
indigestible.</P> <P>&nbsp;</P> <P>Today I come with the Azure Security
Architect Map:</P> <P>&nbsp;</P> <P><A
href="https://stephaneeyskens.files.wordpress.com/2019/12/securitymap.png"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="map.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/162829iB5D0F42F300842C8/image-size/large?v=v2&amp;px=999"
role="button" title="securitymap.png" alt="securitymap.png" /></span></A></P>
<P>&nbsp;</P> <P>which focuses on security only and goes much deeper into that
key area. It is by no means the holy grail but it should help you take informed
decisions on how you plan to use and deploy services and how you will govern
your Azure workloads. I bring business drivers such as TTM, cost optimization
and true elasticity into the equation to highlight the consequences of choosing
an option over another.</P> <P>&nbsp;</P> <P>The map focuses on the following
areas:</P> <UL> <LI>Network Layer</LI> <LI>Identity Layer</LI> <LI>Application
Service Layer</LI> <LI>Application Data</LI> <LI>Security Posture</LI> <LI>Keys,
Certificates and Secrets Management as well as Encryption capabilities</LI>
<LI>MDM &amp; MAM</LI> </UL> <P><STRONG><FONT size="3">How to read this
map?</FONT></STRONG></P> <P>&nbsp;</P> <P>Whenever you see the attachment icon
<span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="attachicon.png" style="width: 22px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120128i004B5A4431671EB0/image-size/large?v=v2&amp;px=999"
role="button" title="attachicon.png" alt="attachicon.png" /></span>, it means
that I have attached an explanation on a given rationale or service. If you see
a (*) next to a node, it is kind of a must read information. So for instance, in
the following screenshot:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="vnet.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120129i449A2BE58FE83622/image-size/large?v=v2&amp;px=999"
role="button" title="vnet.png" alt="vnet.png" /></span></P> <P>&nbsp;</P> <P>I
want to catch your attention on the following:</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="attention.png" style="width: 458px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120315iAF01654DFE885992/image-dimensions/458x115?v=v2"
width="458" height="115" role="button" title="attention.png" alt="attention.png"
/></span></P> <P>The rationales behind certain routes are based on my own
experience and do not represent the only option, but they should be considered
as advisory only. So the idea is to review these maps frequently since the above
information is likely to change over the coming months and I'll simply keep
adding notes or remove them when it does not make sense anymore.</P>
<P>&nbsp;</P> <P>The link icon&nbsp;&nbsp;<span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="link.png" style="width: 31px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120317i038D48CCA48EF590/image-size/small?v=v2&amp;px=200"
role="button" title="link.png" alt="link.png" /></span>is a pointer to the
corresponding Microsoft documentation.</P> <P>&nbsp;</P> <P>With this tool, any
Security Architect (Cloud or not) will quickly grasp the security landscape of
Azure.&nbsp;</P> <P>&nbsp;</P> <P>Here is the pointer to the map:</P> <P>Update
(02/2021): the online MindMapMaker tool deletes maps that are older than 1
year....A pointer to the last version is available in the below table.</P>
<TABLE style="border-collapse: collapse; width: 100%;" border="1" width="100%">
<TBODY> <TR> <TD height="29px" style="width: 50%;"><STRIKE>v1.0
(06/2019)</STRIKE></TD> <TD height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mmc00bf17b40454ecda863046602b7be3e"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mmc00bf17b40454ecda863046602b7be3e</A></STRIKE></TD>
</TR> <TR> <TD height="29px" style="width: 50%;"><STRIKE>v1.1
(12/2019)</STRIKE></TD> <TD height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mm2247a15d373d4e97bf589772950af0ff"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm2247a15d373d4e97bf589772950af0ff</A></STRIKE></TD>
</TR> <TR> <TD style="width: 50%;">Last MindMapMaker map</TD> <TD style="width:
50%;"> <P><A
href="https://app.mindmapmaker.org/#m:mmd329ac370bf141948f565b79c40b0ff6"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mmd329ac370bf141948f565b79c40b0ff6</A></P>
</TD> </TR> <TR> <TD style="width: 50%;">Last PDF map</TD> <TD style="width:
50%;"> <P><A
href="https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter07/maps/Security%20Architecture.pdf"
target="_blank"
rel="noopener">https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter07/maps/Security%20Architecture.pdf</A></P>
</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Here are all the maps in my
series of Architecture Maps:</P> <UL> <LI><A id="link_20" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></LI> <LI><A id="link_13" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><STRONG><A id="link_14" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_15" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P> </P> Tue, 23 Feb 2021 09:46:20 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091
stephaneey 2021-02-23T09:46:20Z The Cloud-native Azure Application Architect Map
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242
<P>Hi,</P> <P>&nbsp;</P> <P>Recently, I built the <A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Solution-Architect-Map/ba-p/689700"
target="_self">Azure <STRONG>Solution</STRONG> Architect Map</A>&nbsp;,
the&nbsp;<A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Security-Architect-Map/ba-p/714091"
target="_self">Azure <STRONG>Security</STRONG> Architect Map</A>&nbsp; and the
<A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Infrastructure-Architect-Map/ba-p/766268"
target="_self">Azure Infrastructure Architect Map</A> aimed at helping
Architects finding their way in Azure.&nbsp;Here are all the maps in my series
of Architecture Maps:</P> <UL> <LI><A id="link_20" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><STRONG><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_13" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><A id="link_14" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect Map</A></LI> <LI><A
id="link_15" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P>&nbsp;</P> <P>I'm now coming with the next map in this series, namely: the
Cloud-native Azure Application Architect Map.</P> <P><BR />As usual, this map is
by no means the holy grail and is just there to highlight some good fit between
Azure Services and Design Patterns. This map is certainly subject to controversy
as they are thousands of ways to design and develop and application. My goal is
only to highlight some possibilities.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>As usual,
here is a screenshot of the map:</P> <P>&nbsp;</P> <P><A
href="https://stephaneeyskens.files.wordpress.com/2019/12/cnative.png"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="map.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/128490i338079449BEA0B23/image-size/large?v=v2&amp;px=999"
role="button" title="The Azure Application Architect Map.png" alt="The Azure
Application Architect Map.png" /></span></A></P> <P>&nbsp;</P> <P>The map
focuses on the following areas:</P> <UL> <LI>Data &amp; Big Data</LI> <LI>Common
Design Patterns: SAGA, Circuit Breaker, Event-driven Architecture, etc.</LI>
<LI>Domain-driven Design &amp; Microservices: yes I clubbed them together
:)</img></LI> <LI>Artificial Intelligence: NLP, Supervised &amp; Unsupervised ML
etc.</LI> <LI>Miscellaneous: things that come back regularly when developing
applications such as real-time HTTP, search, job scheduling etc.&nbsp;</LI>
</UL> <P><STRONG><FONT size="3">How to read this map?</FONT></STRONG></P>
<P>&nbsp;</P> <P>Whenever you see the attachment icon <span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="attachicon.png" style="width: 22px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120128i004B5A4431671EB0/image-size/large?v=v2&amp;px=999"
role="button" title="attachicon.png" alt="attachicon.png" /></span>, it means
that I have attached an explanation on a given rationale or service. If you see
a (*) next to a node, it is kind of a must read information. So for instance, in
the following screenshot:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="dddcqrs.png" style="width: 439px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/127580i76912648F0FA13ED/image-size/large?v=v2&amp;px=999"
role="button" title="dddcqrs.png" alt="dddcqrs.png" /></span></P> <P>&nbsp;</P>
<P>I want to catch your attention on why I make an association between DDD and
Microservices:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="dddcqrsexplained.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/127581i95B7FA9354C040F8/image-size/large?v=v2&amp;px=999"
role="button" title="dddcqrsexplained.png" alt="dddcqrsexplained.png"
/></span></P> <P>as well as why I make an association between CQRS and DDD:</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="cqrsdddexplained.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/127582i06C4646B502D6531/image-size/large?v=v2&amp;px=999"
role="button" title="cqrsdddexplained.png" alt="cqrsdddexplained.png"
/></span></P> <P>You might of course disagree with this but at least, you
understand my rationale.</P> <P>The link icon&nbsp;&nbsp;<span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="link.png" style="width: 31px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120317i038D48CCA48EF590/image-size/small?v=v2&amp;px=200"
role="button" title="link.png" alt="link.png" /></span>is a pointer to the
corresponding Microsoft documentation.</P> <P>&nbsp;</P> <P>Note that I haven't
dived into AKS or Service Fabric since this guys would deserve a dedicated map
and are not Azure services like others, they are a universe by themselves.</P>
<P>&nbsp;</P> <P>With this tool, any Cloud-native Application Architect should
quickly grasp the application landscape of Azure.&nbsp;</P> <P>&nbsp;</P>
<P>Update: the online MindMapMaker tool deletes maps that are older than a year,
therefore, just visit the last version.</P> <TABLE style="border-collapse:
collapse; width: 100%;" border="1" width="100%"> <TBODY> <TR> <TD height="29px"
style="width: 50%;"><STRIKE>v1.0 &amp; v.1 (09/2019)</STRIKE></TD> <TD
height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mm5e724c4dc8324504ab58c6d9b0f708b8"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm5e724c4dc8324504ab58c6d9b0f708b8</A></STRIKE></TD>
</TR> <TR> <TD height="29px" style="width: 50%;"><STRIKE>v 1.2
(12/2019)</STRIKE></TD> <TD height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mm41003e37953d47e0841ae28cf0079f0e"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm41003e37953d47e0841ae28cf0079f0e</A></STRIKE></TD>
</TR> <TR> <TD height="56px" style="width: 50%;">Last version MindMapMaker</TD>
<TD height="56px" style="width: 50%;"> <P><A
href="https://app.mindmapmaker.org/#m:mm87db50f890484619b2429b32c3545916"
target="_blank">https://app.mindmapmaker.org/#m:mm87db50f890484619b2429b32c3545916</A></P>
</TD> </TR> <TR> <TD height="29px" style="width: 50%;">Last version PDF</TD> <TD
height="29px" style="width: 50%;"> <P><A
href="https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter05/maps/Azure%20Application%20Architecture.pdf"
target="_blank">https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter05/maps/Azure%20Application%20Architecture.pdf</A></P>
</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Here are all the maps in my
series of Architecture Maps:</P> <UL> <LI><A id="link_20" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><STRONG><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_13" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><A id="link_14" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect Map</A></LI> <LI><A
id="link_15" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P>&nbsp;</P> <P>&nbsp;</P> Sun, 21 Feb 2021 17:30:06 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242
stephaneey 2021-02-21T17:30:06Z A Visual Introduction To Azure Fundamentals
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-visual-introduction-to-azure-fundamentals/ba-p/2132410
<P><SPAN style="font-family: inherit; font-size: xx-large;">A Visual
Introduction To Azure Fundamentals<BR /></SPAN></P> <P><EM>This is a summary of
an article that I&nbsp;<A href="https://aka.ms/visual-azure-acg" target="_blank"
rel="noopener">just published in A Cloud Guru</A>&nbsp;which goes into more
details on the choice of the "truck" (delivery) metaphor and resources to prep
for AZ-900. Don't forget to check that out!</EM></P> <P>&nbsp;</P> <P><FONT
size="5">Setting The Stage</FONT></P> <P>The start of a new year is great to
kickstart learning resolutions - and aiming for certification (like AZ-900) is a
great goal to have!! But sticking to that resolution requires a study plan (for
accountability) and study resources (that suit your learning style). Read the <A
href="https://aka.ms/visual-azure-acg" target="_self">A Cloud Guru
article</A>&nbsp;for some thoughts on how you can set yourself up for success,
including links to communities and study guides that can help.</P> <P>&nbsp;</P>
<P>Today though I want to focus on the learning styles we adopt - and in
particular, on our&nbsp;<EM>visual learning</EM> ability. <A
href="https://www.inc.com/molly-reynolds/how-to-spot-visual-auditory-and-kinesthetic-learni.html"
target="_blank" rel="noopener">65% of us are visual learners</A>&nbsp;-- which
means we absorb information ("see the big picture") more quickly from images
than from text, and can make connections more quickly to relevant ideas
("connect the dots") by detecting or reinforcing patterns that we are innately
familiar with.</P> <P>&nbsp;</P> <P>In reality, we all learn by mixing several
styles - read/write (articles), kinesthetic (tutorials), auditory (lectures) and
visual (imagery) -- so as you study for certification, it's worth exploring
different resources to see which ones give you the best approach to not just
understanding the topic, but retaining that knowledge and recalling it
effectively later.</P> <P>&nbsp;</P> <P><FONT size="5">Azure Fundamentals: A
Sketchnote!</FONT></P> <P>In 2021, I started the <A
href="https://azure.cloud-skills.dev" target="_blank"
rel="noopener">VisualAzure</A> project, and its accompanying <A
href="https://cloud-skills.dev" target="_blank" rel="noopener">Cloud Skills:
Sketchnotes</A> repository, in an effort to create useful learning resources for
visual learners that could complement relevant <A
href="https://docs.microsoft.com/?WT.mc_id=mobile-12359-ninarasi"
target="_blank" rel="noopener">Microsoft Docs</A>&nbsp;and <A
href="https://learn.microsoft.com/?WT.mc_id=mobile-12359-ninarasi"
target="_self">Microsoft Learn</A> content. My first target -- the <A
href="https://docs.microsoft.com/en-us/learn/certifications/azure-fundamentals?WT.mc_id=mobile-12359-ninarasi"
target="_self">Azure Fundamentals learning paths and AZ-900.</A></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Cloud_Guru.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/254744iE7FBA79C8717E50F/image-size/large?v=v2&amp;px=999"
role="button" title="Cloud_Guru.png" alt="Cloud_Guru.png" /></span></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>Here is the sketchnote visualizing the&nbsp;<A
href="https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-fundamentals/?WT.mc_id=mobile-12359-ninarasi"
target="_blank" rel="noopener">Introduction To Azure Fundamentals</A>&nbsp;unit
of the common module that anchors all six learning paths. The sketchnote uses
two key visual storytelling tactics:</P> <UL> <LI><STRONG>A visual
vocabulary</STRONG> -- so you can quickly scan the sheet at a glance, spot
various "sections" and navigate the information "flow" using visual cues like
icons, arrows and banners.</LI> <LI><STRONG>A visual metaphor&nbsp;</STRONG>--
in this case, the definition of cloud computing as "the&nbsp;<EM>delivery</EM>
of computing services over the internet" inspired me to use a transport
(delivery truck) metaphor, and use related analogies to explain other concepts
tied to cloud computing.</LI> </UL> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Azure-2-ACloudGuru-Fundamentals-Small.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/254745i05D151493044D40E/image-size/large?v=v2&amp;px=999"
role="button" title="Azure-2-ACloudGuru-Fundamentals-Small.png"
alt="Azure-2-ACloudGuru-Fundamentals-Small.png" /></span></P> <P>&nbsp;</P> <P>I
hope you find this not just interesting, but also informative and useful, for
your Azure learning and certification journeys. I encourage you to check out
these resources to learn more:</P> <UL> <LI>Read <A
href="https://aka.ms/visual-azure-acg" target="_blank" rel="noopener">this
accompanying article at A Cloud Guru!</A>&nbsp;to dive into metaphor and
analogies.</LI> <LI>Check out <A
href="https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-fundamentals/?WT.mc_id=mobile-12359-ninarasi"
target="_blank" rel="noopener">the relevant MS Learn unit/module</A> and see if
this helps your understanding.</LI> <LI>Download a higher-quality image
from&nbsp;<A href="https://cloud-skills.dev/" target="_blank"
rel="noopener">this site</A>, review it after a few weeks to test your
recall.</LI> </UL> <P>&nbsp;</P> <P>Last but not least - if you have feedback
for improving these sketchnotes, or want to request one for a specific Microsoft
Learn (module) or Docs (topic) - leave me a request or share your comments via
this <A href="https://github.com/SketchTheDocs/visual-azure/discussions"
target="_blank" rel="noopener">Discussion Forum!</A>&nbsp;And if you found this
useful and are a Redditor, I'd <A
href="https://www.reddit.com/r/AZURE/comments/liebot/a_visual_guide_to_azure_fundamentals_a_cloud_guru/"
target="_blank" rel="noopener">love an upvote</A>
:smiling_face_with_smiling_eyes:</img><BR /><BR /></P> <P>Happy learning!</P>
Sun, 14 Feb 2021 15:40:46 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-visual-introduction-to-azure-fundamentals/ba-p/2132410
nityan 2021-02-14T15:40:46Z A Deep Dive into Serverless Applications on Power
Apps and Azure
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-deep-dive-into-serverless-applications-on-power-apps-and-azure/ba-p/2113430
<H2><STRONG><SPAN data-contrast="auto">Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the webinar of the month for the Low-code application development
(LCAD) on Azure solution. </SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">LCAD on Azure is a new solution to demonstrate the robust
development capabilities of integrating low-code Microsoft Power Apps and the
Azure products you may be familiar with.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">This month’s webinar is ‘A Deep
Dive&nbsp;</SPAN><SPAN data-contrast="none">into</SPAN><SPAN
data-contrast="none">&nbsp;Serverless</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="auto">Applications on
Power Apps and Azur</SPAN><SPAN data-contrast="auto">e.</SPAN><SPAN
data-contrast="auto">’</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">In
this blog I will&nbsp;</SPAN><SPAN
data-contrast="none">briefly&nbsp;</SPAN><SPAN
data-contrast="none">recap</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development</SPAN><SPAN data-contrast="none">&nbsp;on Azure</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN
data-contrast="none">provide&nbsp;</SPAN><SPAN data-contrast="none">an overview
of serverless, why to build a serverless Power App, and what to look forward to
in the webinar’s demos.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<H2><STRONG><SPAN data-contrast="none">What
is&nbsp;</SPAN></STRONG><STRONG><SPAN data-contrast="none">Low-code application
development&nbsp;on&nbsp;Azure</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was
created to help developers build business applications faster with less code,
leveraging the Power Platform, and more specifically Power Apps, yet helping
them scale and extend their Power Apps with Azure services.</SPAN></P> <P><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_0-1614964504187.png" style="width: 1395px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261234iAE4D8B9F49A1768D/image-dimensions/1395x784?v=v2"
width="1395" height="784" role="button" title="riduncan_0-1614964504187.png"
alt="riduncan_0-1614964504187.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">For example, a pro developer who works for a manufacturing
company would need to build a line-of-business (LOB) application to help
warehouse employees’ track incoming inventory. </SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">That application would take months to build, test,
and deploy, however with Power Apps’ it can take hours to build, saving time and
resources.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">However, say the warehouse employees
want the application to place procurement orders for additional inventory
automatically when current inventory hits a determined low.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none"> In the past that would require
another heavy lift by the development team to rework their previous application
iteration. </SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Due to the
integration of Power Apps and Azure a professional developer can build an API in
Visual Studio (VS) Code, publish it to their Azure portal, and export the API to
Power Apps integrating it into their application as a custom connector.
</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Afterwards, that same
API is re-usable indefinitely in the Power Apps’ studio, for future use with
other applications, saving the company and developers more time and
resources.&nbsp;&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none"><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">To
learn&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">more,</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">&nbsp;visit
the&nbsp;</SPAN></SPAN><A class="Hyperlink BCX8 SCXW12267399"
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined BCX8
SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399"
data-ccp-charstyle="Hyperlink">LCAD</SPAN></SPAN><SPAN class="TextRun Underlined
BCX8 SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399" data-ccp-charstyle="Hyperlink">&nbsp;on Azure
page</SPAN></SPAN></A><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">,&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">and to walk
through the</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">a</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">forementioned&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8
SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">scenario</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">&nbsp;try
the&nbsp;</SPAN></SPAN><A class="Hyperlink BCX8 SCXW12267399"
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined BCX8
SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399"
data-ccp-charstyle="Hyperlink">LCAD on Azure guided tour</SPAN></SPAN></A><SPAN
class="TextRun BCX8 SCXW12267399" data-contrast="none"><SPAN
class="NormalTextRun BCX8 SCXW12267399">.</SPAN></SPAN><SPAN class="EOP BCX8
SCXW12267399"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="riduncan_0-1614961772841.jpeg" style="width:
1397px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261222i2B2105E0958B3158/image-dimensions/1397x787?v=v2"
width="1397" height="787" role="button" title="riduncan_0-1614961772841.jpeg"
alt="riduncan_0-1614961772841.jpeg" /></span></P> <P>&nbsp;</P>
<H2><STRONG><SPAN data-contrast="none">Serverless
Applications</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">You may be wondering what a serverless
application</SPAN><SPAN data-contrast="none">&nbsp;is?</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Serverless is a cloud computing execution model where the
cloud provider dynamically manages the allocation and provisioning of servers. A
serverless application runs in stateless compute containers that are
event-triggered, ephemeral, and fully managed by the cloud provider.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none"> In turn this model greatly benefits
the developer and team by reducing th</SPAN><SPAN data-contrast="none">eir
workload by&nbsp;</SPAN><SPAN data-contrast="none">reducing the need</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">to manage servers,
and this model is much cheaper because teams don’t incur the hardware and
associated costs.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">A logical next question is
“</SPAN><SPAN data-contrast="none">in what scenario(s) do I go serverless?”
</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">You can choose it when
you have asynchronous</SPAN><SPAN data-contrast="none">&nbsp;and concurrent
tasks to be executed, when you have infrequent requests and spiky
traffic</SPAN><SPAN data-contrast="none">&nbsp;where you don’t have a dependency
on latency. Also, when you’re looking to quickly iterate your development, build
MVPs, change your code or change business requirements to</SPAN><SPAN
data-contrast="none">&nbsp;immediately deploy that code.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">You’re now convinced of serverless
code’s benefits,&nbsp;</SPAN><SPAN data-contrast="none">but&nbsp;</SPAN><SPAN
data-contrast="none">how do you get started?&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">At&nbsp;</SPAN><SPAN data-contrast="none">the core
are cloud functions th</SPAN><SPAN data-contrast="none">at</SPAN><SPAN
data-contrast="none">&nbsp;enable&nbsp;</SPAN><SPAN
data-contrast="none">you&nbsp;</SPAN><SPAN data-contrast="none">to write code
in&nbsp;</SPAN><SPAN data-contrast="none">containers</SPAN><SPAN
data-contrast="none">. I</SPAN><SPAN data-contrast="none">n reaction to an event
execution can be triggered by any of the managed services or any
custom</SPAN><SPAN data-contrast="none">&nbsp;sources you might be defining that
are important for your application.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Due</SPAN><SPAN
data-contrast="none">&nbsp;to&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp"
target="_blank" rel="noopener"><SPAN data-contrast="none">durable
functions</SPAN></A><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">you</SPAN><SPAN data-contrast="none">&nbsp;can write
stateful functions in a serverless compute environment. Lastly, serverless
c</SPAN><SPAN data-contrast="none">ode is event driven, run</SPAN><SPAN
data-contrast="none">ning&nbsp;</SPAN><SPAN data-contrast="none">in response to
specific triggers which can be a HTTP or a blob trigger when running code in
re</SPAN><SPAN data-contrast="none">sponse to a file being uploaded to a storage
account number.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <H2><STRONG><SPAN data-contrast="none">Serverless Power
Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">Building serverless applications on Azure sound
great by themselves, why would you bother to build your using Microsoft Power
Apps?</SPAN><SPAN data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Building business applications quickly is not easy
when&nbsp;</SPAN><SPAN data-contrast="none">utilizing</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">several</SPAN><SPAN
data-contrast="none">&nbsp;different frameworks, hosting options, and complex
integrations between systems. Leveraging serverless technologies (Azure
Functions and Logic Apps) can&nbsp;</SPAN><SPAN
data-contrast="none">provide</SPAN><SPAN data-contrast="none">&nbsp;the building
blocks for&nbsp;</SPAN><SPAN data-contrast="none">APIs</SPAN><SPAN
data-contrast="none">&nbsp;to connect to custom backends, services, or a Data
Model (</SPAN><SPAN data-contrast="none">Dataverse</SPAN><SPAN
data-contrast="none">) that stores data across many applications. </SPAN></P>
<P><LI-VIDEO
vid="https://www.youtube.com/watch?v=etVdXkGAiRc&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=11"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/etVdXkGAiRc/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P><SPAN data-contrast="none">Leverage these APIs
to deeply integrate with PowerApps or&nbsp;</SPAN><SPAN
data-contrast="none">Power Automate</SPAN><SPAN data-contrast="none">&nbsp;and
extend the data that is most critical to business users with apps that are
quickly built, managed, and distributed.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Moreover, with the development of ‘Fusion Development’
teams a term coined by analysts, developers can build back-end serverless APIs
and import them via&nbsp;</SPAN><A
href="https://powerapps.microsoft.com/en-us/blog/azure-api-management-connector-on-the-power-platform/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure API management
directly into&nbsp;</SPAN><SPAN data-contrast="none">Microsoft&nbsp;</SPAN><SPAN
data-contrast="none">Power Apps</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">as custom
connectors.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">‘Citizen
Developers’ or those who aren’t professional developers, can&nbsp;</SPAN><SPAN
data-contrast="none">leverage&nbsp;</SPAN><SPAN data-contrast="none">these
APIs&nbsp;</SPAN><SPAN data-contrast="none">in their Power App, reducing the
overall work of the developer, by not having to build front-end
code.</SPAN><SPAN data-contrast="none">&nbsp;Thus, piling on the time and
resources saved by building serverless&nbsp;</SPAN><SPAN
data-contrast="none">applications.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<H2><STRONG><SPAN data-contrast="auto">What to expect in the
webinar?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">Simona will cover first build a web API that
generates jokes, throughout this process she will test and debug her APIs.
Afterward publishing the API to&nbsp;</SPAN><SPAN data-contrast="none">which is
available to test at aka.</SPAN><SPAN data-contrast="none">ms</SPAN><SPAN
data-contrast="none">/joke</SPAN><SPAN data-contrast="none">&nbsp;which
generates jokes using random words. </SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Lastly, she exports the API to&nbsp;</SPAN><SPAN
data-contrast="none">Power Apps via the Azure portal and challenges the viewers
to extend her app with Power Automate AI chatbots that send jokes as text
messages.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=o8XnPISgHqQ&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=9"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/o8XnPISgHqQ/hqdefault.jpg"
external="url"></LI-VIDEO></P> <H2><STRONG><SPAN
data-contrast="none">Summary</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">Make sure to tune into&nbsp;</SPAN><SPAN
data-contrast="none">the <A
href="https://info.microsoft.com/ww-Landing-ADeepDiveintoServerlessApplications.html?LCID=EN-US"
target="_self">webinar</A> on February 25</SPAN><SPAN
data-contrast="none">th</SPAN><SPAN data-contrast="none">&nbsp;to learn more
about serverless APIs and how to export them into your Power Apps. Moreover,
there will be a Low-code application development on Azure ‘Learn
Live’&nbsp;</SPAN><SPAN data-contrast="none">session during
Ignite,&nbsp;</SPAN><SPAN data-contrast="none">the data loss prevention and new
governance policies for Power Apps at Ignite, and&nbsp;</SPAN><SPAN
data-contrast="none">an SAP on Azure&nbsp;</SPAN><SPAN
data-contrast="none">Power Apps</SPAN><SPAN data-contrast="none">&nbsp;webinar
in March</SPAN><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG>Webinar Registration Link</STRONG></P> <P><STRONG><A
href="https://info.microsoft.com/ww-Landing-ADeepDiveintoServerlessApplications.html?LCID=EN-US"
target="_blank" rel="noopener">Serverless Applications | Microsoft Power
Apps</A></STRONG></P> <P><STRONG><SPAN data-contrast="auto">Low Code Application
Development&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">on</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;Azure</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on
Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure plus Power Apps
for pro developers</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://www.youtube.com/playlist?list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low Code Application
Development on Azure - YouTube</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Power Apps x Azure
documentation</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/powerapps/developer/data-platform/azure-integration"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure integration
document</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://powerapps.microsoft.com/en-us/blog/azure-api-management-connector-on-the-power-platform/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure API Management
integration announcement</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/azure/api-management/export-api-power-platform"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure API Management
integration documentation</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Serverless
documentation</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs"
target="_blank" rel="noopener"><SPAN data-contrast="none">Compare serverless
options</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/learn/modules/choose-azure-service-to-integrate-and-automate-business-processes/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Compare serverless
options module</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://docs.microsoft.com/en-us/azure/azure-functions/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Functions
documentation</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://azure.microsoft.com/en-us/services/functions/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Functions
website</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
Fri, 05 Mar 2021 17:22:14 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-deep-dive-into-serverless-applications-on-power-apps-and-azure/ba-p/2113430
riduncan 2021-03-05T17:22:14Z Creating a JWT Validation Web App
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/creating-a-jwt-validation-web-app/ba-p/2109450
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="JWT.png" style="width: 401px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/251081i4C16DA40C0BF968F/image-dimensions/401x217?v=v2"
width="401" height="217" role="button" title="JWT.png" alt="JWT.png"
/></span></P><P>&nbsp;</P><P>If you have been doing any OAuth and/or Open ID
Connect troubleshooting in recent years it's very likely you've run across <A
href="https://jwt.io" target="_blank" rel="noopener">https://jwt.io</A>, or in
the Microsoft world <A href="https://jwt.ms" target="_blank"
rel="noopener">https://jwt.ms</A>. Great tools, but primarily JWT parsing tools
rather than JWT validation tools.</P><P>&nbsp;</P><P>Yes, jwt.io allows you to
upload your keys in the UI, but there are a lot of scenarios that doesn't work
for.</P><P>&nbsp;</P><P>Let's rewind a step or two here first though. Last year
I showed how you could create your own faux tokens. That is; the tokens were
real enough, but they mimicked actual tokens as they would look if issued by
Azure AD and Azure AD B2C without actually being signed by Microsoft's keys. If
you pasted the result into jwt.ms it would look like a real
token.</P><P>&nbsp;</P><P>Identity is a large topic, but the two central
concepts are "who are you" (authentication) and "what are you allowed to do"
(authorization). If your approach in web app or api is to accept any old token
and say "this looks good" you might run into trouble.</P><P>&nbsp;</P><P>Which
is why I wanted to show how to&nbsp; build a web app that will attempt to
validate the token in addition to parsing it. This is based on supplying a
metadata url to retrieve signing keys, etc. If you don't have this the app will
just parse the token and check against the attributes you supply (issuer,
audience).</P><P>&nbsp;</P><P>The code for this post can be found here:</P><P><A
title="GitHub"
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor_jwt_validator_dotnet_core"
target="_blank"
rel="noopener">https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor_jwt_validator_dotnet_core</A>&nbsp;</P><P>&nbsp;</P><P>In
the real world i don't actually recommend you to do all these steps manually.
There are libraries that will handle most of these things for you like MSAL on
the client side of Identity.Web on the backend side. It is however always useful
to dig a little deeper to gain an understanding of how it works behind the
scenes.</P><P>&nbsp;</P><P>There are third party libraries available for token
validation that support a large range of algorithms and formats, but to keep it
simple I'm just using components native to the .NET
toolbox.</P><P>&nbsp;</P><P><STRONG>Step 1 - Is it a JWT that has been pasted
in?</STRONG></P><P>The web app will allow pretty much any text to be passed in
so we need to validate that it is actually a
token.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
//Check if readable token (string is in a JWT format) var readableToken =
handler.CanReadToken(Jwt.Base64Token); if (readableToken != true) { FormatStatus
= "The token doesn't seem to be in a proper JWT format."; return; } if
(readableToken == true) { FormatStatus = "The token seems to be in a proper JWT
format.";
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 2
- Do we have metadata?</STRONG></P><P>To be able to leverage concepts like
public/private key cryptography we need to exchange the keys used, and we also
need to agree on a couple of other attributes the tokens contain. It is entirely
possible to exchange this in a manual way whether that is sending files per
email or reading them loud over the phone for that matter, but the recommended
approach is to have the identity provider expose a metadata endpoint. Loading
things in a more manual way also requires more code, so we've kept it simple
here and only provide the option for using an endpoint. (If you don't have one
the code will not break, but revert to just parsing the
token.)</P><P>&nbsp;</P><P>If you followed my previous post you should be able
to provide your own endpoint even if that's just pointing to a different port on
<A href="https://localhost" target="_blank"
rel="noopener">https://localhost</A>.</P><P><A title="Generating Azure AD
&quot;Look-Alike&quot; Tokens"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/generating-azure-ad-quot-look-alike-quot-tokens/ba-p/1163098"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/azure-developer-community-blog/generating-azure-ad-quot-look-alike-quot-tokens/ba-p/1163098</A>&nbsp;</P><P><A
title="GitHub"
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor-jwt_generator-dotnet-core"
target="_blank"
rel="noopener">https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor-jwt_generator-dotnet-core</A>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">//Load Metadata if available
IConfigurationManager&lt;OpenIdConnectConfiguration&gt; configurationManager;
OpenIdConnectConfiguration openIdConfig = null; bool metadataAvailable; try {
configurationManager = new
ConfigurationManager&lt;OpenIdConnectConfiguration&gt;(Jwt.MetadataAddress, new
OpenIdConnectConfigurationRetriever()); openIdConfig =
configurationManager.GetConfigurationAsync(CancellationToken.None).Result;
metadataAvailable = true; MetadataStatus = $"Successfully loaded metadata."; }
catch (Exception e) { MetadataStatus = $"Failed to load metadata (skipping
signature validation): {e.Message}"; metadataAvailable = false;
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 3
- Set up token validation parameters</STRONG></P><P>As said already we handle
the absence of metadata gracefully. We can still check things like the lifetime
and the audience, but we are not able to verify the signature. And that is the
critical part - what separates my fake tokens with actual Azure AD tokens is the
keys they are signed with. Which is why you should never disable validation of
the signing key like we do here :)</img></P><P>&nbsp;</P><P>While there is some
logic in locating the keys and retrieving them we see that this is one of the
things the libraries handle for us in a developer friendly
way.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">TokenValidationParameters validationParameters = null; //If we
cannot load metadata we fall back if (!metadataAvailable) { validationParameters
= new TokenValidationParameters { ValidIssuer = Jwt.Issuer, ValidAudience =
Jwt.Audience, ValidateLifetime = true, ValidateAudience = true, ValidateIssuer =
true, //Needed to force disabling signature validation SignatureValidator =
delegate (string token, TokenValidationParameters parameters) { var jwt = new
JwtSecurityToken(token); return jwt; }, ValidateIssuerSigningKey = false, }; }
//If we succcessfully loaded metadata we do signature validation as well if
(metadataAvailable) { validationParameters = new TokenValidationParameters {
ValidIssuer = openIdConfig.Issuer, ValidAudience = Jwt.Audience,
ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidateAudience =
true, ValidateIssuer = true, IssuerSigningKeys = openIdConfig.SigningKeys };
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 4
- Validate the token</STRONG></P><P>The actual validation is shorter than the
setup. We read the JWT. (Notice how Microsoft also use "token" twice in the
naming - spelling out the acronym it would be
ReadJsonWebTokenToken.)</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">token = handler.ReadJwtToken(Jwt.Base64Token); try { var identity
= handler.ValidateToken(Jwt.Base64Token, validationParameters, out SecurityToken
validatedToken); if (metadataAvailable) { output += "Token is valid according to
metadata!"; } else { output += "Token is valid according to a self-evaluation!";
} jwtSignature = token.RawSignature; } catch (Exception e) { //Print errors
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 5
- Pretty print the contents and the result</STRONG></P><P>The last step is to
print out the result of the validation test, and the contents of the token split
into header/payload/signature with some color coding. I did not find
satisfactory ways to do this with the built-in mechanisms as these didn't really
play nice with Blazor so I did a more hackish and manual approach for this. Not
including the code here, but it is of course part of the sample on
GitHub.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="ValidationResult.png" style="width:
532px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/251094i9680A5F7CA039B23/image-size/large?v=v2&amp;px=999"
role="button" title="ValidationResult.png" alt="ValidationResult.png"
/></span></P><P>&nbsp;</P><P>In an actual app or api you would of course not
care so much about these things anyway.</P><P>&nbsp;</P><P>While I also prefer
using "proper" libraries for validation I use tools like this all the time when
working with things like custom policies in Azure AD B2C.</P><P>&nbsp;</P><P>I'm
sure you are able to come up with more elaborate versions that what I did here,
but I'm hoping it provided some of the basic understand for making sure you
don't end up in the category of developers who skip token validation. (There are
unfortunately too many that don't do this right and produce code with horrible
vulnerabilities included.)</P> Mon, 01 Feb 2021 20:03:44 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/creating-a-jwt-validation-web-app/ba-p/2109450
Andreas Helland 2021-02-01T20:03:44Z Developers Unite to Hack for Social Justice
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-unite-to-hack-for-social-justice/ba-p/2077118
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="NinaSui_1-1611882553594.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/250480iD45625E7A7620819/image-size/large?v=v2&amp;px=999"
role="button" title="NinaSui_1-1611882553594.png"
alt="NinaSui_1-1611882553594.png" /></span></P> <P>&nbsp;</P> <P>Over the course
of 8 weeks, developers gathered virtually to participate in the <A
href="https://socialjusticehack.devpost.com/" target="_blank"
rel="noopener">Microsoft Azure Hack for Social Justice</A> event. The hackathon
challenge statement was straightforward: design and build an application
prototype that uses Azure to address a social justice issue. Participants were
given access to Microsoft technical mentors, dedicated Azure environment, and
self-paced learning resources.&nbsp;Although technology alone cannot solve
complex societal issues, our hope is that participants will develop solutions
that can help empower communities and drive change.</P> <P>&nbsp;</P> <P>Over
500 participants registered for the hack, 300+ were from the U.S., and 6 winning
projects were selected. Check out these creations:</P> <P>&nbsp;</P> <P><FONT
size="5"><U><STRONG>1st Place :&nbsp;</STRONG></U><A
href="https://devpost.com/software/refugee-restrooms-agmx8p" target="_blank"
rel="noopener">Equitable Restroom Access for Gender
Non-Conforming&nbsp;</A></FONT></P> <P>Created by: <STRONG>Mahesh Babu</STRONG>
(<LI-USER uid="395609"></LI-USER>)&nbsp;</P> <P>Provides safe restroom access
for transgender, gender non-conforming, disabled individuals, and parents
traveling with kids to find restrooms per their needs.</P> <P><EM>Azure Services
Used: Azure Functions, Azure SendGrid</EM></P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://vimeo.com/479646923" align="center" size="custom" width="663"
height="663" uploading="false"
thumbnail="https://i.vimeocdn.com/video/995544352_1280.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><U><STRONG>2nd
Place:&nbsp;</STRONG></U><A href="https://devpost.com/software/lll-8nthku"
target="_blank" rel="noopener">GetPro</A></FONT></P> <P>Created by:
<STRONG>Amina Fong</STRONG> (<LI-USER uid="899575"></LI-USER>), <STRONG>William
Broniec</STRONG> (<LI-USER uid="362934"></LI-USER>), <STRONG>Zechen Lu</STRONG>
(<LI-USER uid="900127"></LI-USER>)&nbsp;</P> <P>Web app that centralizes
information and professional resources for underrepresented populations to help
even the playing field in educational and career opportunities.</P> <P><EM>Azure
Services Used: Azure App Services, Azure SQL Database</EM></P> <P>&nbsp;</P>
<P><LI-VIDEO vid="https://youtu.be/CxzBDm-gHyU" align="center" size="custom"
width="507" height="507" uploading="false"
thumbnail="https://i.ytimg.com/vi/CxzBDm-gHyU/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><U><STRONG>3rd
Place:</STRONG></U><U><STRONG>&nbsp;</STRONG></U><A
href="https://devpost.com/software/legal-helper-bot" target="_blank"
rel="noopener">Legal Helper Bot</A></FONT></P> <P>Created by: <STRONG>Murtada
Ahmed</STRONG></P> <P>Not knowing the law and ones rights can expose already
vulnerable groups to more discrimination and abuse. Legal Helper Bot was created
to change that.</P> <P><EM>Azure Services Used: Azure Bot Services, Azure
Storage</EM></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/RnT0eOvsNCU"
align="center" size="custom" width="492" height="492" uploading="false"
thumbnail="https://i.ytimg.com/vi/RnT0eOvsNCU/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT
size="5"><U><STRONG>Honorable Mentions</STRONG></U></FONT></P> <P><FONT
size="5"><A
href="https://devpost.com/software/racial-bias-and-score-prediction-of-compas-score"
target="_blank" rel="noopener">Racial Bias and Score Prediction of COMPAS
Score</A></FONT></P> <P>Created by: <STRONG>Yuki Ao</STRONG> (<LI-USER
uid="899871"></LI-USER>)&nbsp;</P> <P>Inform people of the racial bias in the
U.S. Justice system and give the offenders a chance to know their score level
beforehand.</P> <P>&nbsp;</P> <P><FONT size="5"><A
href="https://devpost.com/software/tutorfirst" target="_blank"
rel="noopener">TutorFirst</A></FONT></P> <P>Created by: <STRONG>Farhan
Mashud</STRONG> (<LI-USER uid="899519"></LI-USER>), <STRONG>Isfar
Oshir</STRONG>&nbsp;(<LI-USER uid="899521"></LI-USER>), <STRONG>Mohammed
Uddin</STRONG> (<LI-USER uid="899520"></LI-USER>)&nbsp;</P> <P>App for low
income students to receive free, high quality tutoring from tutor
volunteers.</P> <P>&nbsp;</P> <P><FONT size="5"><A
href="https://devpost.com/software/numbers-rvyjc1" target="_blank"
rel="noopener">Feminist Action Board</A></FONT></P> <P>Created by: <STRONG>Aroma
Rodrigues</STRONG> (<LI-USER uid="899816"></LI-USER>)&nbsp;</P> <P>Subscribes to
a news API to provide real time news on gender violence and tracks
organizations, petitions, and initiatives</P> <P>&nbsp;</P> <P>On behalf of the
Microsoft U.S. Azure team, I'd like to sincerely thank all of the participants,
and congratulate the winners on a job well done. Also, thank you to the mentors
and judges who volunteered their time to give back to the community.&nbsp;</P>
<P>&nbsp;</P> <P>Next up: check out these new hackathons that are open for
registration</P> <UL> <LI><A href="https://aka.ms/accessibilityhacktc"
target="_blank" rel="noopener">Microsoft Azure U.S. Hack for Accessibility (Jan
28 - Mar 15, 2021)</A></LI> <LI><A href="https://aka.ms/azureaihacktc"
target="_blank" rel="noopener">Microsoft Azure AI Hackathon (Jan 26 - April 5,
2021)</A></LI> </UL> Fri, 29 Jan 2021 01:20:19 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-unite-to-hack-for-social-justice/ba-p/2077118
NinaSui 2021-01-29T01:20:19Z Automate Application Lifecycle Management with
GitHub Actions for Power Platform Webinar
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/automate-application-lifecycle-management-with-github-actions/ba-p/2083829
<DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG style="color:
inherit; font-family: inherit; font-size: 18px;">Overview</STRONG><SPAN
style="color: inherit; font-family: inherit; font-size:
18px;">&nbsp;</SPAN></DIV> <DIV class="lia-message-body-wrapper
lia-component-message-view-widget-body"> <DIV id="bodyDisplay"
class="lia-message-body"> <DIV class="lia-message-body-content"> <P><SPAN>In
2021,&nbsp;each month we will be releasing a monthly blog covering
the&nbsp;webinar&nbsp;of the month for the&nbsp;<A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener noreferrer">Low Code Application Development on
Azure</A>&nbsp;solution.</SPAN></P> <P>&nbsp;</P> <P><SPAN>Low-code app dev on
Azure is a new&nbsp;solution to&nbsp;demonstrate&nbsp;the&nbsp;robust
development capabilities of&nbsp;integrating&nbsp;low-code&nbsp;Microsoft
Power&nbsp;Apps&nbsp;and the Azure products you may be familiar
with.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>This
month’s&nbsp;webinar&nbsp;is ‘Develop&nbsp;Application Lifecycle Management
(ALM) processes with GitHub Actions and Power Apps.’</SPAN></P> <P>&nbsp;</P>
<P><SPAN>In this blog I will highlight what LCAD on Azure is, the 3 most
prevalent products in the&nbsp;webinar&nbsp;and use&nbsp;cases
and&nbsp;provide&nbsp;supporting documentation for you to learn more about the
webinar's content.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId--1634335751"><STRONG>What is Low-code application
development&nbsp;(LCAD)&nbsp;on Azure?</STRONG>&nbsp;</H4> <P><SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener noreferrer">Low Code Application Development on
Azure</A>&nbsp;was created to help developers build business applications
faster&nbsp;with less code,&nbsp;leveraging&nbsp;the Power Platform, and more
specifically Power Apps, yet helping them scale and extend their Power
Apps&nbsp;with Azure services.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_0-1614960637782.png" style="width: 1398px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261205i1D97A7FBC728FFAB/image-dimensions/1398x786?v=v2"
width="1398" height="786" role="button" title="riduncan_0-1614960637782.png"
alt="riduncan_0-1614960637782.png" /></span> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><SPAN>For example,&nbsp;a pro developer&nbsp;who&nbsp;works for
a manufacturing company would need to build a line-of-business (LOB)
application&nbsp;to help warehouse employees’
track&nbsp;incoming&nbsp;inventory.</SPAN></P> <P>&nbsp;</P> <P><SPAN>That
application would take months to build, test, and deploy, however with Power
Apps’ it can take hours to build, saving time and
resources.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>&nbsp;However,
say the warehouse employees want the application to place procurement
orders&nbsp;for&nbsp;additional&nbsp;inventory&nbsp;automatically
when&nbsp;current&nbsp;inventory hits a determined&nbsp;low.&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>In the past that would require another heavy lift by the
development team to&nbsp;rework&nbsp;their&nbsp;previous&nbsp;application
iteration.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>Due to the integration of
Power Apps and Azure a professional developer can build an API in Visual
Studio&nbsp;(VS)&nbsp;Code, publish it to their Azure portal, and export
the&nbsp;API to Power Apps integrating it into their application as a custom
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN>Afterwards, that same API is
re-usable indefinitely in the Power Apps’&nbsp;studio, for future use with other
applications, saving the company and developers more time and
resources.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>This is
just one scenario that highlights the capabilities of the LCAD on Azure
solution.&nbsp;To learn more about the solution itself there is a link at the
bottom of this blog in the supporting documentation section.</SPAN></P>
<P>&nbsp;</P> <P><SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">To
learn&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">more,</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">&nbsp;visit
the&nbsp;</SPAN></SPAN><A class="Hyperlink SCXW12267399 BCX8"
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW12267399 BCX8" data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8" data-ccp-charstyle="Hyperlink">LCAD</SPAN></SPAN><SPAN class="TextRun
Underlined SCXW12267399 BCX8" data-contrast="none"><SPAN class="NormalTextRun
SCXW12267399 BCX8" data-ccp-charstyle="Hyperlink">&nbsp;on Azure
page</SPAN></SPAN></A><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">,&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">and to walk
through the</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">a</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">forementioned&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">scenario</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">&nbsp;try
the&nbsp;</SPAN></SPAN><A class="Hyperlink SCXW12267399 BCX8"
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW12267399 BCX8" data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8" data-ccp-charstyle="Hyperlink">LCAD on Azure guided
tour</SPAN></SPAN></A><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">.</SPAN></SPAN><SPAN class="EOP SCXW12267399 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></P>
<P>&nbsp;</P> <span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="riduncan_1-1614960637783.jpeg" style="width:
1397px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261206iD8C87BEAFD01FDCE/image-dimensions/1397x787?v=v2"
width="1397" height="787" role="button" title="riduncan_1-1614960637783.jpeg"
alt="riduncan_1-1614960637783.jpeg" /></span> <P>&nbsp;</P> <P><SPAN>This
month’s&nbsp;webinar&nbsp;is focused on the capability to automate application
lifecycle management, like the above scenario, with GitHub Actions
to&nbsp;further&nbsp;expedite&nbsp;and streamline the development process for
developers.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId-853177082"><STRONG>Webinar Content</STRONG>&nbsp;</H4>
<P><SPAN>The&nbsp;webinar&nbsp;explains&nbsp;<STRONG><U>‘Fusion
Development’</U></STRONG>&nbsp;a process that&nbsp;leverages&nbsp;the citizen
developer to build low-code applications&nbsp;themselves, further reducing
strain on development teams, but professional
developers&nbsp;meeting&nbsp;citizen&nbsp;developer's&nbsp;half-way by extending
these applications with custom code.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>The&nbsp;webinar&nbsp;includes&nbsp;<STRONG><U>2
demos</U></STRONG>, one on the&nbsp;<STRONG><U>integration of API management and
Power Apps</U></STRONG>,&nbsp;how to&nbsp;<STRONG><U>create a CI/CD pipeline
using GitHub Actions</U></STRONG>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>The integration of API management and Power
Apps&nbsp;will&nbsp;cover&nbsp;the&nbsp;no cliff extensibility&nbsp;capabilities
of Power Apps and Azure together,&nbsp;how to export APIs to Power Apps, and how
to&nbsp;connect API management with&nbsp;Power Apps via Microsoft Teams for
free.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>We
introduced&nbsp;Azure API Management connectors&nbsp;to&nbsp;quickly publish
Azure API Management backed APIs to the Power Platform for easy discovery and
consumption, dramatically reducing the time it takes to create apps connecting
to Azure services.</SPAN></P> <P>&nbsp;</P> <P><SPAN>This means that enterprises
can now truly&nbsp;benefit&nbsp;from existing assets hosted on Azure, by making
these available to Citizen developers with just a few clicks in the Azure
portal.</SPAN></P> <P>&nbsp;</P>
<P><SPAN>Thereby&nbsp;eliminating&nbsp;the&nbsp;additional&nbsp;steps to go
create custom connectors in the Power Apps or Power Automate maker
experiences.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=06CRN18kH1k&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=7"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/06CRN18kH1k/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><SPAN>The&nbsp;</SPAN><A
href="https://help.github.com/articles/about-github-actions" target="_blank"
rel="noopener noreferrer"><SPAN>GitHub Actions</SPAN></A><SPAN>&nbsp;demo will
cover&nbsp;developer's&nbsp;ability to build&nbsp;automated software development
lifecycle workflows.</SPAN></P> <P>&nbsp;</P> <P><SPAN>With GitHub Actions for
Microsoft Power Platform,&nbsp;developers&nbsp;can create workflows
in&nbsp;their&nbsp;repository to build, test, package, release, and deploy apps;
perform automation; and manage bots and other components built on Microsoft
Power Platform.</SPAN></P> <P>&nbsp;</P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=g3qfBeat-PM&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=8"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/g3qfBeat-PM/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId-1533235452"><STRONG>Conclusion</STRONG>&nbsp;</H4>
<P><SPAN>The&nbsp;webinar&nbsp;is&nbsp;currently available&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-ondemand-develop-test-and-deliver-applications-with-github-actions-for-power-platform.html?lcid=en-us"
target="_blank" rel="noopener
noreferrer"><SPAN>on-demand</SPAN></A><SPAN>,&nbsp;and&nbsp;<SPAN class="TextRun
SCXW253825262 BCX8" data-contrast="auto"><SPAN class="NormalTextRun
SCXW253825262 BCX8">and&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW253825262
BCX8" data-contrast="auto"><SPAN class="NormalTextRun SCXW253825262
BCX8">complete the&nbsp;</SPAN></SPAN><A class="Hyperlink SCXW253825262 BCX8"
href="https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbRzDZlq55wCpLjWQ_IU7xv-VURVRFQUdPSTJVTjBOR0RWM0U1VFFSM1pYUS4u"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW253825262 BCX8" data-contrast="none"><SPAN class="NormalTextRun
SCXW253825262 BCX8" data-ccp-charstyle="Hyperlink">survey</SPAN></SPAN></A><SPAN
class="TextRun SCXW253825262 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW253825262 BCX8">&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW253825262 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW253825262 BCX8">so,</SPAN></SPAN><SPAN class="TextRun
SCXW253825262 BCX8" data-contrast="auto"><SPAN class="NormalTextRun
SCXW253825262 BCX8">&nbsp;we can improve these blogs and webinars in the
future.</SPAN></SPAN>&nbsp;The February webinar will cover the intersection of
serverless applications and low-code.&nbsp;&nbsp;</SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId--274219011"><STRONG>Resources</STRONG></H4> <P>&nbsp;</P>
<P><STRONG>Power Apps x Azure websites&nbsp;</STRONG></P> <UL> <LI><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener noreferrer"><SPAN>LCAD on Azure
website</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener noreferrer"><SPAN>Azure plus Power Apps for pro
developers I Microsoft Power Apps</SPAN></A><SPAN>&nbsp;</SPAN></LI> </UL>
<P><STRONG>Power Platform x Azure API Management Integration&nbsp;</STRONG></P>
<UL> <LI><A
href="https://powerapps.microsoft.com/en-us/blog/azure-api-management-connector-on-the-power-platform/"
target="_blank" rel="noopener noreferrer"><SPAN>Public Preview Blog
Post</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://docs.microsoft.com/en-us/azure/api-management/export-api-power-platform"
target="_blank" rel="noopener noreferrer"><SPAN>Step by Step
Instruction</SPAN></A><SPAN>&nbsp;</SPAN></LI> </UL> <P><STRONG>Power Platform x
GitHub Actions Automated SDLC workflows&nbsp;</STRONG></P> <UL> <LI><A
href="https://powerapps.microsoft.com/en-us/blog/github-actions-for-the-power-platform-now-available-in-preview/"
target="_blank" rel="noopener noreferrer"><SPAN>Public Preview Blog
Post</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://docs.microsoft.com/en-us/power-platform/alm/devops-github-actions"
target="_blank" rel="noopener noreferrer"><SPAN>GitHub Actions for Power
Platform overview</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://docs.microsoft.com/en-us/power-platform/alm/devops-github-available-actions"
target="_blank" rel="noopener noreferrer"><SPAN>Capabilities
Documentation</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://www.youtube.com/watch?v=Bk4KpE_6YtY&amp;feature=youtu.be"
target="_blank" rel="noopener nofollow noreferrer"><SPAN>Source control and
automated deployment -
Demo</SPAN></A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://github.com/microsoft/powerplatform-actions-lab" target="_blank"
rel="noopener noreferrer"><SPAN>Hands on lab of source control and automated
deployment demo</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://github.com/microsoft/powerplatform-actions" target="_blank"
rel="noopener noreferrer"><SPAN>Power Platform x GitHub Actions
repo</SPAN></A><SPAN>&nbsp;</SPAN></LI> </UL> <P>&nbsp;</P> </DIV> </DIV> </DIV>
Fri, 05 Mar 2021 17:28:02 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/automate-application-lifecycle-management-with-github-actions/ba-p/2083829
riduncan 2021-03-05T17:28:02Z [Mitigated] DevTest Labs Outage: Customers in
certain regions might experience degraded performance
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-customers-in-certain-regions-might/ba-p/2064696
<DIV> <DIV><SPAN style="font-family: inherit;">Update at 12:30 AM UTC on 16 Jan
2021 - Issue has been mitigated and we do not expect customers to face any
issues.&nbsp;We will update the blog post with the RCA soon.&nbsp;</SPAN></DIV>
<DIV>&nbsp;</DIV> <DIV> <DIV><SPAN style="font-family: inherit;">Update at 19:30
UTC - We see decreasing number of failures but we are still keeping an eye out
for any other potential issues.&nbsp;</SPAN></DIV> </DIV> <DIV><SPAN
style="font-family:
inherit;">-------------------------------------------------------------------------------------------------</SPAN></DIV>
<DIV>&nbsp;</DIV> <DIV><SPAN style="font-family: inherit;"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="devtestlabsintro_960.jpg" style="width: 424px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/250206i4A727BF2A649AF64/image-dimensions/424x258?v=v2"
width="424" height="258" role="button" title="devtestlabsintro_960.jpg"
alt="devtestlabsintro_960.jpg" /></span></SPAN></DIV> <DIV>&nbsp;</DIV> <SPAN
style="font-family: inherit;">We would like to inform you that,
starting&nbsp;</SPAN><SPAN style="font-family: inherit;">07:59 UTC on 15 Jan
2021,</SPAN><SPAN style="font-family: inherit;">&nbsp;</SPAN><FONT
face="inherit">customers in the below mentioned regions might
</FONT>experience<FONT face="inherit">&nbsp;degraded performance while
performing any major action on DevTest Labs. We are currently investigating the
root cause and our team continues to work diligently on a fix. </FONT></DIV>
<DIV>&nbsp;</DIV> <DIV> <UL> <LI>Australia Southeast</LI> <LI>Canada
Central</LI> <LI>Central India</LI> <LI>East Asia</LI> <LI>East US</LI>
<LI>Japan East</LI> <LI>Korea Central</LI> <LI>North Europe</LI> <LI>UK
West</LI> <LI>West India</LI> </UL> <P>&nbsp;</P> <DIV><FONT face="inherit">We
will update this post to share regular updates and will also share a root cause
analysis once the fix is rolled out.&nbsp;</FONT>We apologize for the
inconvenience and thank you for your patience.&nbsp;</DIV> <P>&nbsp;</P> <P>-
DevTest Labs Team</P> </DIV> Thu, 28 Jan 2021 09:23:09 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-customers-in-certain-regions-might/ba-p/2064696
Sagar_Lankala 2021-01-28T09:23:09Z [Customer Story] SharePoint Online Team
leverages DevTest Labs to create Testing Environments
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781
<P>There are several teams within Microsoft which use <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-overview"
target="_blank" rel="noopener">Azure DevTest Labs</A> (DTL). <A
href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration"
target="_blank" rel="noopener">SharePoint Online</A> (SPO) team at Microsoft has
created a solution, built on DTL, to solve the problem of making SPO testing
environments readily available to SharePoint engineers – securely, at scale and
with high availability – leveraging the strengths of DevTest Labs and Azure.</P>
<P>&nbsp;</P> <P>This blog post is the first in a series of posts that
highlights key parts of this solution. The series enables anyone to build,
configure and run a similar system on DTL. Each post will cover one core aspect
of the SharePoint Online solution, with a brief description of the scenarios
involved, and the strategies applied to solve them. Each comes equipped with
architecture diagrams, walk-throughs and code samples, presented in a generic
and reusable way. It is hoped that customers in the Azure community, desiring to
solve similar problems for their users, can benefit from the content herein to
create their own DTL solutions.</P> <P>&nbsp;</P> <H2>About SharePoint
Online</H2> <P>&nbsp;</P> <P>For background, SharePoint Online is Microsoft’s
document storage service for <A
href="https://www.microsoft.com/en-us/microsoft-365" target="_blank"
rel="noopener">Microsoft365</A>. It is a massive enterprise business. In
addition to providing enterprise-class document management, it has team
collaboration, portal sites and content management. It forms the document
storage backbone for <A
href="https://www.microsoft.com/en-us/microsoft-365/exchange/email"
target="_blank" rel="noopener">Exchange Online</A>, <A
href="https://teams.microsoft.com/edustart" target="_blank"
rel="noopener">Teams</A> and <A
href="https://www.microsoft.com/en-us/download/office.aspx" target="_blank"
rel="noopener">Office applications</A> such as Word and Excel. As one example,
when you save a document in Teams, it is stored in SPO under the hood.&nbsp;
Fortune 500 companies, schools, governments and non-profits critically depend on
SharePoint Online for their business, storing over 480 exabytes of their data in
it.</P> <P><EM>If you would like to learn more about SharePoint Online and its
potential application to your business, start <A
href="https://www.microsoft.com/en-us/microsoft-365/buy/compare-all-microsoft-365-products"
target="_blank" rel="noopener">here</A>. There are Microsoft365 subscriptions
tailored for home, business, and institutional use.</EM></P> <P>&nbsp;</P>
<H2>SharePoint Online Scenario</H2> <P>&nbsp;</P> <P>With over 1000 engineers
working on an ever-evolving 140 MLOC codebase in SharePoint Online,
<STRONG>integration testing</STRONG> is a critical part of the engineering
workflow. At its core, SharePoint is a three-tier web application, featuring a
web tier, a business logic tier and a data layer, each working in conjunction as
a single service in data centers across the globe. Engineers working on it
require safe, isolated simulation environments that function like scaled-down
three-tier data center deployments so that they can deeply test their code
before it goes worldwide.</P> <P>The SharePoint Online team has shrunk the core
SPO components and services so that they all fit on a single, interactive
virtual machine (VM) that simulates the full data center, but is stripped down
to its essence. It is therefore much easier to deploy. These single-VM
environments are well-suited to testing most SPO scenarios – of course core
document storage and team collaboration, but notably scenarios involving
interaction with Office or Teams. Using these VMs, code changes can be deployed,
poked and prodded, and debugged as it interacts with these components and
services – all well before the code is ultimately deployed for enterprise
customers in production data centers.</P> <P>&nbsp;</P> <H2>Use of DevTest
Labs</H2> <P>&nbsp;</P> <P>DevTest Labs provides “labs” of machines, intended to
host pre-configured testing environments at scale. The SPO team has built a
solution in DevTest Labs to host these single-VM SPO environments, giving
engineers a private, isolated, safe, simulated data center in which to test
their code.</P> <P>Breaking it down step-by-step, the scenario for SharePoint
Online engineers is as follows:</P> <OL> <LI>An engineer wishes to test their
code. They fetch a virtual machine (VM) from the DevTest Lab.</LI> <LI>The VM
hosts a pre-configured single-VM SPO environment with a stable build.</LI>
<LI>They log in, interact with the environment, and patch a new code change into
place to do testing.</LI> <LI>When they are finished, they throw away their VM –
they can always fetch a fresh one for their next iteration.</LI> </OL> <P>The
complexity of building these single-VM SPO environments, with all services and
components wired up correctly, is hidden from the lab user. The work is done
before the VM is assigned to the engineer, saving them the time and
effort.&nbsp; Environments are ready to use as they are. Engineers have the
option to simply use them as-is, or optionally patch their private changes and
onto the VM to see how it behaves.&nbsp; These single-VM environments are the
heart of their inner loop debugging and integration testing.</P> <P>Today, about
500 engineers use the SPO integration lab on a monthly basis, with plans to grow
this to 750 or more. Typically about 2,500 VMs are allocated at any one point in
time, running in three different Azure regions around the world. Azure allows
the solution to easily scale to meet growing demand.</P> <P>&nbsp;</P> <H3>Why
DevTest Labs?</H3> <P>&nbsp;</P> <P>Certainly a solution of this nature can be
created without DevTest Labs, using Azure VMs directly. However, DevTest Labs
provides out-of-box features that save time and money in implementation and
maintenance. These include:</P> <UL> <LI>Standard service grouping and
administration</LI> <LI>Flexible and extensible <A
href="https://azure.microsoft.com/en-us/services/#networking" target="_blank"
rel="noopener">networking</A> and user connectivity</LI> <LI>Ability for lab
users to claim pre-created VMs without going through the full creation
process</LI> <LI><A
href="https://azure.microsoft.com/en-us/documentation/articles/devtest-lab-set-lab-policy/"
target="_blank" rel="noopener">Policies and thresholds</A> to manage costs by
shutting unused machines down</LI> <LI><A
href="https://azure.microsoft.com/en-us/documentation/articles/devtest-lab-add-vm-with-artifacts/"
target="_blank" rel="noopener">DTL Artifacts</A> to reduce the time required to
set up and configure virtual machines once created</LI> </UL> <P>The full
feature set of Azure is also available to extend DevTest Labs where needed, but
leveraging the native capabilities of DevTest Labs reduces the cost to build,
maintain and extend the solution. It also sets the solution up for future
improvements planned by the Azure team at Microsoft. In short, <STRONG>DevTest
Labs is a quite natural fit for this use case</STRONG>, rather than reinventing
the wheel.</P> <P><EM>If you haven’t tried DevTest Labs yet, <A
href="https://go.microsoft.com/fwlink/?LinkId=627034&amp;clcid=0x409"
target="_blank" rel="noopener">click here</A> to create your first lab. DevTest
Labs is a <A
href="https://azure.microsoft.com/en-us/pricing/details/devtest-lab/"
target="_blank" rel="noopener">free service</A>!</EM></P> <H2>&nbsp;</H2>
<H2>Solution Architecture</H2> <P>&nbsp;</P> <P>The solution builds on DevTest
Labs as its basis. It is an event-driven architecture, using Azure EventGrid and
an Azure Function app. It uses Shared Image Gallery to host VM images and
employs a Point-to-Site VPN for secure access to the network hosting the VMs. It
has an easy-to-use interface for checkin/checkout that is hosted outside the
Azure portal.&nbsp; It extends DevTest Labs policy and allows users to manage
when machines are shut down, and even postpone shutting machines down, above the
times assigned by Azure DevTest Labs policy.&nbsp;</P> <P>Below is a diagram
covering the architecture. Starting from the left, we have an Image Service
which is responsible for creating Azure Compute images with SPO
pre-configured.&nbsp; Image Service pulls the latest build available, triggers
the deployment, waits for success, and publishes the result to Azure Shared
Image Gallery for general consumption by DevTest Labs. It then fires an event
that, by way of Event Grid, triggers an Azure Function App.</P> <DIV
id="lia-teaserTinyMceEditorSagar_Lankala_0" class="mceNonEditable
lia-copypaste-placeholder">&nbsp;</DIV> <DIV id="tinyMceEditorSagar_Lankala_1"
class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Picture1.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/245507iC4443202A6A04FB6/image-size/large?v=v2&amp;px=999"
role="button" title="Picture1.png" alt="Picture1.png" /></span></P>
<P>&nbsp;</P> <P>The Function App contains the business logic for the SPO
solution, which extends the core functionality DevTest Labs natively provides.
The Function App responds to the event by triggering VM creation in DevTest
Labs, in accordance with desired VM pool targets. A VPN Gateway is configured to
provide point-to-site VPN connectivity for end users, who use Azure VPN Client
to ensure the communication between the lab user and the VMs is authenticated
and secure.</P> <P>The solution created has potential application to a broad set
of scenarios. The designs and architecture described should be beneficial to
Azure customers wanting to build similar solutions on DevTest Labs, including
what code to build and what components to configure for their applications.</P>
<H2>&nbsp;</H2> <H2>Introducing This Blog Series</H2> <P>&nbsp;</P> <P>In
several upcoming blog posts, we’ll cover the following topics:&nbsp;</P> <UL>
<LI>Overview:&nbsp; How the SharePoint team leverages DevTest Labs <EM>(Current
Blog Post)</EM></LI> <LI>Enabling an Event-Driven Architecture with DevTest
Labs</LI> <LI>Leveraging Point-to-Site VPN with DevTest Labs</LI>
<LI>Maintaining a Pool of Claimable VMs</LI> <LI>Building a Simple User
Interface for DevTest Labs</LI> <LI>Enabling Shutdown notifications via
Teams</LI> </UL> <P>Each blog post borrows the concepts and architecture from
the SPO solution, boiled down and made generally accessible for re-use by the
Azure community. The content of this blog series forms a set of templates for
others to build the same types of solutions for their applications as the
SharePoint Online team did for their engineers.</P> <P>&nbsp;</P> <P><FONT
size="4"><STRONG>What's Next?</STRONG></FONT></P> <P>&nbsp;</P> <P>In
forthcoming blog posts, the rest of the topics will be covered, starting with
how to enable an event-driven architecture with DevTest Labs similar to the one
described above. Please stay tuned!</P> <P>&nbsp;</P> <P>If you run into any
problems with the content, or have any questions, please feel free to drop a
comment below this post and we will respond. Your feedback is always
welcome!</P> <P>&nbsp;</P> <P><STRONG>- Pete Harwood</STRONG>, Principal
Engineering Manager, OneDrive and SharePoint Engineering Fundamentals at
Microsoft</P> Sat, 15 May 2021 01:15:00 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781
Sagar_Lankala 2021-05-15T01:15:00Z #DevDecember Week 5: It’s a (festive) wrap
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-5-it-s-a-festive-wrap/ba-p/1834830
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Blog-images_week5.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/239463i9C0D2E6CB09CF544/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week5.png" alt="Blog-images_week5.png"
/></span></SPAN></P> <P><SPAN>The end of #DevDecember is near, and we’re ready
to kick off 2021. To help you mark the transition and start anew, we’ve created
digital New Year postcards in three designs that you can adapt and share with
fellow devs, friends, and family. Download the New Year cards</SPAN><FONT
color="#000000">&nbsp;on&nbsp;our&nbsp;</FONT><U><FONT
color="#FF0000"><SPAN><STRONG><A href="https://aka.ms/DevDecember20Home"
target="_self" rel="noopener noreferrer">#DevDecember
homepage.</A></STRONG></SPAN></FONT></U></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Slide_8_1.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/239464iDC97AE1A044CDC85/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_8_1.png" alt="Slide_8_1.png" /></span></P>
<P>&nbsp;</P> <P><STRONG>Before we&nbsp;hit&nbsp;send,&nbsp;let’s&nbsp;take one
more&nbsp;look&nbsp;in the rearview
mirror.&nbsp;</STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Each week, we asked for
your #DevDecember thoughts, starting with the ways you grew this year as
developer, and moving on to what communities had your back, what inspired you,
and what projects and challenges you were most looking forward to in
2021.</SPAN><SPAN>&nbsp;</SPAN><A href="https://twitter.com/hashtag/DevDecember"
target="_blank" rel="noopener"><SPAN>Check out what fellow devs
shared</SPAN></A><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN>Week 1</SPAN><SPAN>:&nbsp;</SPAN><SPAN>What helped us
grow</SPAN><SPAN>&nbsp;</SPAN><SPAN>professionally</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>Beginner's series to
JavaScript&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Taking your
first steps toward mastering a new programming language is exciting, but it can
also feel overwhelming. To help you get started with JavaScript, we've created
short and easy-to-consume videos that break down the key concepts you need to
know.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured1" target="_blank"
rel="noopener"><SPAN>Start watching the series</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P>
<P><SPAN> </SPAN><STRONG><SPAN>Agrotech</SPAN></STRONG><STRONG><SPAN>&nbsp;</SPAN></STRONG><STRONG><SPAN>IoT</SPAN></STRONG><STRONG><SPAN>&nbsp;workshop</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>Want to grow your
professional&nbsp;</SPAN><SPAN>IoT</SPAN><SPAN>&nbsp;skills? Your first stop may
be the garden. Get your hands dirty with a workshop on how to build an
internet-connected device to gather soil moisture data that will tell you (by
lighting up an LED) if a plant needs watering.</SPAN><SPAN>&nbsp;</SPAN></P>
<P><A href="https://aka.ms/DevEdCalDec20featured3" target="_blank"
rel="noopener"><SPAN>Start digging in</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P> <P><SPAN> </SPAN><STRONG><SPAN>Bringing
browser developer tools to Visual Studio
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>One of our favorite
releases in 2020 was the Microsoft Edge Tools for VS Code extension, designed to
simplify workflows. Connect to an existing browser instance, start a new one, or
use a “headless” browser.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured4" target="_blank"
rel="noopener"><SPAN>Explore the extension</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P> <P><STRONG><SPAN>Building a first "Power
Apps"</SPAN></STRONG><STRONG><SPAN> app</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>@JoeCamp13</SPAN><SPAN>&nbsp;built an app to track inventory entirely
with Power Apps. His explanation of how he did it, is illustrated with
screenshots so you can follow along.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured2" target="_blank"
rel="noopener"><SPAN>Start the walkthrough</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P> <P><SPAN>Week
2:</SPAN><SPAN>&nbsp;</SPAN><SPAN>How the community
came</SPAN><SPAN>&nbsp;</SPAN><SPAN>together</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>Live coding community</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>Learn from the best on Twitch! Watch&nbsp;devs&nbsp;code&nbsp;live,
and&nbsp;connect and ask questions in real time. Find out how joining
Microsoft’s virtual community can speed up learning new skills and
languages.</SPAN><SPAN>&nbsp;<BR /></SPAN><A
href="https://channel9.msdn.com/Events/Start-Dev-Change/Start-Dev-Change/Intro-to-Twitch-Join-the-Live-Coding-Community"
target="_blank" rel="noopener"><SPAN>Watch an intro video on Twitch and live
coding</SPAN></A><SPAN>&nbsp;(25 min)</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN>&nbsp;</SPAN></P> <P><STRONG><SPAN>The ReadMe
Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Behind the open-source
code used by millions of people are the unseen efforts of countless
contributors, who put in long hours to build software, fix issues, and more.
Meet some of the people making contributions, including veterans who find the
teamwork required for open-source collaboration a natural
fit.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A href="https://github.com/readme"
target="_blank" rel="noopener"><SPAN>Read their inspiring
stories</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Remote
collaboration with Live Share in Visual Studio
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>With Live Share, you can
instantly share your project with fellow developers. No need to clone a repo or
set up the environment. It’s a one-stop, real-time collaboration tool for
pairing, code reviews, technical interviews, boot camps, and
more.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://www.youtube.com/watch?v=A2ceblXTBBc" target="_blank"
rel="noopener">Watch a short video on how to&nbsp;set&nbsp;up Live
Share</A><SPAN>&nbsp;(5 min)</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>From the open source cookbook</SPAN></STRONG></P>
<P><SPAN>Cooking up code is a bit like developing food recipes. The more people
who test your recipe, the more it's likely to guarantee that what lands on your
plate is what you intended.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://microsoft.github.io/DevCookbook/" target="_blank"
rel="noopener"><SPAN>Browse our crowdsourced cookbook with free code
recipes</SPAN></A><SPAN>&nbsp;</SPAN></P> <P><SPAN>&nbsp;<BR /></SPAN><SPAN>Week
3:</SPAN><SPAN>&nbsp;</SPAN><SPAN>What
inspired&nbsp;</SPAN><SPAN>us</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>IoT</SPAN></STRONG><STRONG><SPAN>&nbsp;and Azure help with
family chores&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>With
everyone at home, dishes pile up faster, garbage accumulates, and chores must be
done more frequently. To keep track in real time what&nbsp;chores&nbsp;need to
be completed and by when,
Scott&nbsp;</SPAN><SPAN>Hanselman</SPAN><SPAN>&nbsp;built
an&nbsp;</SPAN><SPAN>IoT</SPAN><SPAN>&nbsp;solution, using sensors, a
web-based&nbsp;</SPAN><SPAN>heatmap</SPAN><SPAN>, and
notifications.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-iot-and-azure-to-help-with-family-chores/ba-p/1809444"
target="_blank" rel="noopener"><SPAN>Check out how to build
Chores&nbsp;</SPAN><SPAN>IoT</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>The Developer Activity
Book&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Taking your mind off
what you’re working on is sometimes the best way to get inspiration. The
Developer Activity Book features family-friendly fun, including seven coloring
pages, a crossword puzzle, a word search, and a logic
puzzle.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-developer-activity-book-for-remotedevlife/ba-p/1432196"
target="_blank" rel="noopener"><SPAN>Get the Developer Activity
Book</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>2020
Imagine Cup World Championship</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>The Imagine Cup World Championship encourages students across the globe
to innovate using Microsoft Azure. Finalist teams created technological
solutions to tackle pressing global issues. Get inspired by their passion and
the incredible projects they created.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://www.youtube.com/watch?v=ssxYilfoomQ&amp;feature=youtu.be"
target="_blank" rel="noopener"><SPAN>Watch the recap</SPAN></A><SPAN>&nbsp;(3
minutes)</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Plastic
Origins Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Most of the
plastic that ends up in the oceans comes from inland sources. In this episode
of&nbsp;</SPAN><SPAN>CodeStories</SPAN><SPAN>, Seth Juarez shows how developers
can use AI to address this problem by
monitoring&nbsp;</SPAN><SPAN>microplastic</SPAN><SPAN>&nbsp;and tracking
ocean-bound plastic waste.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://channel9.msdn.com/Shows/CodeStories/Microsoft-France-Surfrider-EU--Plastic-Origins-Project"
target="_blank" rel="noopener"><SPAN>Watch the video</SPAN></A><SPAN>&nbsp;(13
minutes)</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>&nbsp;</SPAN></P> <P><SPAN>Week
4:</SPAN><SPAN>&nbsp;</SPAN><SPAN>Looking forward to
new</SPAN><SPAN>&nbsp;</SPAN><SPAN>challenges</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>Microsoft Learn Student
Ambassadors&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>In 2020, we
launched the Microsoft Learn Student Ambassadors program, where students can
join a global community of peers, connect with mentors, learn the skills they
need to land a dream job, and make a difference. Applications are open
year-round, and we will accept hundreds more Student Ambassadors in
2021.</SPAN><SPAN>&nbsp;<BR /></SPAN><A
href="https://techcommunity.microsoft.com/t5/student-developer-blog/welcome-microsoft-learn-student-ambassadors/ba-p/1570828"
target="_blank" rel="noopener">Learn more about the
program</A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Speed up
development</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>What does it take to
go from idea to development without detours? Best-in-class tools and product
management are two of the things that boost velocity, a new McKinsey report
found. Find out how to get stuff done faster in 2021 with this and other
real-world strategies.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://azure.microsoft.com/en-us/blog/unleash-the-full-potential-of-your-developer-teams-and-increase-developer-velocity/"
target="_blank" rel="noopener"><SPAN>Read the McKinsey report on how to boost
developer velocity</SPAN></A></P> <P>&nbsp;</P> <P><STRONG><SPAN>Learning to
code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Intimidated by the idea of
learning a new programming language? We’ve got a few ways to make it easier so
2021 is the year you make it happen. Download Visual Studio Code, then dive into
tutorials and other resources that you can go through at your own
pace.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://code.visualstudio.com/learntocode" target="_blank"
rel="noopener"><SPAN>Learn to program with Visual Studio Code</SPAN></A></P>
<P>&nbsp;</P> <P><STRONG><SPAN>Predicting meteor showers using Python and VS
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Shooting for the moon in
2021? This session may provide
inspiration.&nbsp;</SPAN><SPAN>Dr</SPAN><SPAN>&nbsp;G explains what meteor
showers are and how data science is used to predict these events. No coding
experience required.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://www.youtube.com/watch?v=Aln9p6farRg" target="_blank"
rel="noopener"><SPAN>Watch the recorded live stream</SPAN></A><SPAN>&nbsp;(50
min)&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>Finally, before
we raise a glass, cup, or mug to&nbsp;</SPAN><SPAN>2021</SPAN><SPAN>, we’d like
to thank&nbsp;</SPAN><SPAN>all&nbsp;</SPAN><SPAN>of you&nbsp;</SPAN><SPAN>who
have shared</SPAN><SPAN>&nbsp;</SPAN><A
href="https://twitter.com/hashtag/DevWithABev" target="_blank"
rel="noopener"><SPAN>#</SPAN><SPAN>D</SPAN><SPAN>ev</SPAN><SPAN>W</SPAN><SPAN>ith</SPAN><SPAN>AB</SPAN><SPAN>ev</SPAN></A><SPAN>&nbsp;pictures
during the month.</SPAN><SPAN>&nbsp;We’ve discovered a few new beverages and
flavors to&nbsp;</SPAN><SPAN>sip</SPAN><SPAN>&nbsp;</SPAN><SPAN><img
class="lia-deferred-image lia-image-emoji"
src="https://techcommunity.microsoft.com/html/@8341BD79091AF36AA2A09063B554B5CD/images/emoticons/smile_40x40.gif"
alt=":smile:" title=":smile:"
/></SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><FONT color="#800080"><SPAN>Here’s to</SPAN><SPAN>&nbsp;new
projects and new
adventures</SPAN><SPAN>!</SPAN><SPAN>&nbsp;H</SPAN>appy&nbsp;New
Year<SPAN>!</SPAN><SPAN>&nbsp;</SPAN></FONT></P> Fri, 01 Jan 2021 10:05:20 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-5-it-s-a-festive-wrap/ba-p/1834830
livelovegeek 2021-01-01T10:05:20Z #DevDecember Week 4 Recap: Looking forward
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-4-recap-looking-forward/ba-p/1834829
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Blog-images_week4.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237579i8C81B976DAB62F1E/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week4.png" alt="Blog-images_week4.png"
/></span></SPAN></P> <P><SPAN class="TextRun SCXW119958490 BCX0"><SPAN
class="NormalTextRun SCXW119958490 BCX0">2021 is right around the corner,
and<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW119958490
BCX0"><SPAN class="NormalTextRun SCXW119958490 BCX0">with it
comes</SPAN></SPAN><SPAN class="TextRun SCXW119958490 BCX0"><SPAN
class="NormalTextRun SCXW119958490 BCX0"><SPAN>&nbsp;</SPAN>the optimism a new
year brings. A clean slate, a new story to write.&nbsp;</SPAN></SPAN><SPAN
class="EOP SCXW119958490 BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><SPAN
class="TextRun SCXW68609620 BCX0"><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW68609620 BCX0">So</SPAN><SPAN
class="NormalTextRun SCXW68609620 BCX0">&nbsp;this week, w</SPAN></SPAN><SPAN
class="TextRun SCXW68609620 BCX0"><SPAN class="NormalTextRun SCXW68609620
BCX0">e invite you to share&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW68609620
BCX0"><SPAN class="NormalTextRun SCXW68609620
BCX0">what&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW68609620 BCX0"><SPAN
class="NormalTextRun SCXW68609620 BCX0">you hope to achieve in
2021</SPAN></SPAN><SPAN class="TextRun SCXW68609620 BCX0"><SPAN
class="NormalTextRun SCXW68609620 BCX0">—</SPAN></SPAN><SPAN class="TextRun
SCXW68609620 BCX0"><SPAN class="NormalTextRun SCXW68609620 BCX0">and the
activities that will get you there.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW68609620 BCX0">&nbsp;</SPAN> </SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun
SCXW36221302 BCX0">Do you plan<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">to</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302 BCX0"><SPAN>&nbsp;</SPAN>spend more time
listening in and sharing on live stream channels? Are there a</SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">reas you want to brush up on</SPAN></SPAN><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302 BCX0">? Do you have
projects and goals you can't wait to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">work on?</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">Use<SPAN>&nbsp;</SPAN></SPAN></SPAN><A
href="https://aka.ms/DevDecember20Home" target="_self"><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">our</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun Underlined SCXW36221302 BCX0"><SPAN class="NormalTextRun
SCXW36221302 BCX0">fill-in-the-blank</SPAN></SPAN></A><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0"><SPAN>&nbsp;</SPAN>to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">share</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302
BCX0"><SPAN>&nbsp;</SPAN>your</SPAN></SPAN><SPAN class="TextRun SCXW36221302
BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW36221302
BCX0"><SPAN class="NormalTextRun SCXW36221302 BCX0">can-d</SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">o items<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW36221302
BCX0"><SPAN class="NormalTextRun SCXW36221302 BCX0">for 2021</SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">.</SPAN></SPAN><SPAN class="EOP SCXW36221302 BCX0">&nbsp;</SPAN></P>
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_8_2.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/239460i234714BFBD0B43AC/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_8_2.png" alt="Slide_8_2.png" /></span></SPAN></P>
<P>&nbsp;</P> <P><SPAN class="TextRun SCXW89562749 BCX0"><SPAN
class="NormalTextRun SCXW89562749 BCX0">W</SPAN></SPAN><SPAN class="TextRun
SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">e
shared<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">these
resources<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">recently</SPAN></SPAN><SPAN
class="TextRun SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">t</SPAN></SPAN><SPAN
class="TextRun SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749
BCX0">hat support<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749
BCX0">developer</SPAN></SPAN><SPAN class="TextRun SCXW89562749 BCX0"><SPAN
class="NormalTextRun SCXW89562749
BCX0"><SPAN>&nbsp;</SPAN>efforts</SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">, whether you're just
starting out or<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">are ready to
kick it up a notch:</SPAN></SPAN><SPAN class="EOP SCXW89562749
BCX0">&nbsp;</SPAN></P> <P><STRONG><SPAN>Microsoft Learn Student
Ambassadors&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN><SPAN
class="TextRun BCX0 SCXW171597127"><SPAN class="NormalTextRun BCX0
SCXW171597127">In 2020</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW171597127"><SPAN class="NormalTextRun BCX0 SCXW171597127">, we launched the
Microsoft Learn Student Ambassadors program, where students can join a global
community of peers, connect with mentors, learn the skills they need to land a
dream job, and make a difference. Applications are open
year-round</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW171597127"><SPAN
class="NormalTextRun BCX0 SCXW171597127">, and we will acce</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW171597127"><SPAN class="NormalTextRun BCX0
SCXW171597127">pt hundreds more Student Ambassadors</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW171597127"><SPAN class="NormalTextRun BCX0
SCXW171597127">&nbsp;in 2021</SPAN></SPAN></SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured13" target="_blank"
rel="noopener">Learn more about the program</A><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN>Speed up
development</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW133027991 BCX0"><SPAN class="NormalTextRun SCXW133027991 BCX0">What does it
take to go from idea to development without detours? Best-in-class tools and
product management are two<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW133027991 BCX0"><SPAN class="NormalTextRun SCXW133027991 BCX0">of the things
that boost veloci</SPAN></SPAN><SPAN class="TextRun SCXW133027991 BCX0"><SPAN
class="NormalTextRun SCXW133027991 BCX0">ty, a new McKinsey report
found</SPAN></SPAN><SPAN class="TextRun SCXW133027991 BCX0"><SPAN
class="NormalTextRun SCXW133027991 BCX0">. Find out how
to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW133027991
BCX0"><SPAN class="NormalTextRun SCXW133027991 BCX0">get stuff done
faster</SPAN></SPAN><SPAN class="TextRun SCXW133027991 BCX0"><SPAN
class="NormalTextRun SCXW133027991 BCX0"><SPAN>&nbsp;</SPAN>in 2021 with this
and other real-world strategies.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW133027991 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured14 " target="_blank"
rel="noopener">Read the McKinsey report on how to boost&nbsp;developer
velocity</A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>Learning to code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN class="TextRun SCXW76440558 BCX0"><SPAN class="NormalTextRun
SCXW76440558 BCX0">Intimidated by the idea of learning
a<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558
BCX0">new<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">programming
language?<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">We’ve
got<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">a few ways to make it
easier</SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558 BCX0"><SPAN>&nbsp;</SPAN>so 2021 is the year
you make it happen</SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558 BCX0">.
Download<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">Visual Studio
Code</SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558 BCX0">, then dive into tutorials and other
resources<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558
BCX0">that<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">you can go through at your
own pace.</SPAN></SPAN><SPAN class="EOP SCXW76440558 BCX0">&nbsp;</SPAN></P>
<P><A href="https://aka.ms/DevEdCalDec20featured15" target="_blank"
rel="noopener">Learn to program with Visual Studio
Code</A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Predicting meteor
showers using Python and Visual Studio
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590 BCX0">Shooting for
the moon<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW235576590
BCX0"><SPAN class="NormalTextRun SCXW235576590 BCX0">in 2021</SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0">? T</SPAN></SPAN><SPAN class="TextRun SCXW235576590 BCX0"><SPAN
class="NormalTextRun SCXW235576590 BCX0">his session
may<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW235576590
BCX0"><SPAN class="NormalTextRun SCXW235576590 BCX0">provide</SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0"><SPAN>&nbsp;</SPAN>inspiration. Dr G explains what meteor showers are and
how data science is used to predict<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0">these</SPAN></SPAN><SPAN class="TextRun SCXW235576590 BCX0"><SPAN
class="NormalTextRun SCXW235576590 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0">events. No coding experience required.</SPAN></SPAN><SPAN class="EOP
SCXW235576590 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured16" target="_blank"
rel="noopener"><SPAN>Watch the recorded live stream</SPAN></A><SPAN>&nbsp;(50
min)&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>We’ve got one
more thing to mention before we close out week 4&nbsp;</SPAN><SPAN>of
#DevDecember:</SPAN><SPAN>&nbsp;</SPAN></P> <UL>
<LI><SPAN>#DevWithABev</SPAN><SPAN>&nbsp;is still going strong</SPAN><SPAN>.
It’s simple. Snap a pic of you with your fav&nbsp;bev&nbsp;and post on Twitter
with the hashtag</SPAN><SPAN>&nbsp;#DevWithABev.</SPAN><SPAN>&nbsp;</SPAN></LI>
</UL> <P>&nbsp;</P> <P><SPAN>There
are&nbsp;</SPAN><SPAN>only&nbsp;</SPAN><SPAN>a few more days left in
2020&nbsp;</SPAN><SPAN>but</SPAN><SPAN>&nbsp;w</SPAN><SPAN>e’</SPAN><SPAN>ve got
a final surprise in store</SPAN><SPAN>—</SPAN><SPAN>keep follow</SPAN><SPAN>ing
#DevDecember&nbsp;</SPAN><SPAN>to find out what it
is.</SPAN><SPAN>&nbsp;</SPAN></P> <P><SPAN>&nbsp;<BR
/></SPAN><SPAN>Missed&nbsp;</SPAN><SPAN>a day or a week</SPAN><SPAN>? Head over
to our <STRONG><A href="https://aka.ms/DevDecember20Home"
target="_self">#DevDecember
homepage</A></STRONG></SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P> Fri, 08 Jan
2021 01:02:23 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-4-recap-looking-forward/ba-p/1834829
livelovegeek 2021-01-08T01:02:23Z #DevDecember Week 3 Recap: Inspiration
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-3-recap-inspiration/ba-p/1834828
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Blog-images_week3.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235277iC313707F6EC166D2/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week3.png" alt="Blog-images_week3.png"
/></span></SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun SCXW26024580
BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0">This week</SPAN></SPAN><SPAN
class="TextRun SCXW26024580 BCX0"><SPAN class="NormalTextRun SCXW26024580
BCX0"><SPAN>&nbsp;</SPAN>in #DevDecember</SPAN></SPAN><SPAN class="TextRun
SCXW26024580 BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0">,
we<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW26024580 BCX0"><SPAN
class="NormalTextRun SCXW26024580 BCX0">had the hard job of selecting just a
handful of sources of inspiration</SPAN></SPAN><SPAN class="TextRun SCXW26024580
BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0"><SPAN>&nbsp;</SPAN>from a
big grab bag of options</SPAN></SPAN><SPAN class="TextRun SCXW26024580
BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0">.&nbsp;</SPAN></SPAN><SPAN
class="EOP SCXW26024580 BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_20_1.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237444i851F900A2219C0F2/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_20_1.png" alt="Slide_20_1.png" /></span><SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">You’ll find&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">out what we went for below,
but there were so many other excitin</SPAN></SPAN><SPAN class="TextRun
SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">g things we
could have featured, so&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">we hope you
will&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">add the things you prized most this
year</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">.&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">What projects&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">impressed&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">you</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">?</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">&nbsp;What
tools&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">did you like using</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">?&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">Use our&nbsp;</SPAN></SPAN><SPAN
class="TextRun Underlined SCXW154441543 BCX0"><SPAN class="NormalTextRun
SCXW154441543 BCX0">fill-in-the-blank</SPAN></SPAN><SPAN class="TextRun
SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">&nbsp;to
s</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">hare&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">what motivated and propelled you on in 2020</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">, tagged&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">as
#DevDecember.&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">Thanks in advance for the
inspiration.</SPAN></SPAN><SPAN class="EOP SCXW154441543 BCX0">&nbsp;</SPAN>
</SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun SCXW224080501 BCX0"><SPAN
class="NormalTextRun SCXW224080501 BCX0">Now, let’s review
what<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW224080501
BCX0"><SPAN class="NormalTextRun SCXW224080501 BCX0">we featured in week
3</SPAN></SPAN><SPAN class="TextRun SCXW224080501 BCX0"><SPAN
class="NormalTextRun SCXW224080501 BCX0">:</SPAN></SPAN><SPAN class="EOP
SCXW224080501 BCX0">&nbsp;</SPAN></P>
<P><STRONG><SPAN>IoT</SPAN></STRONG><STRONG><SPAN>&nbsp;and Azure
h</SPAN></STRONG><STRONG><SPAN>elp&nbsp;</SPAN></STRONG><STRONG><SPAN>w</SPAN></STRONG><STRONG><SPAN>ith&nbsp;</SPAN></STRONG><STRONG><SPAN>f</SPAN></STRONG><STRONG><SPAN>amily&nbsp;</SPAN></STRONG><STRONG><SPAN>c</SPAN></STRONG><STRONG><SPAN>hores&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN class="TextRun SCXW113139885 BCX0"><SPAN class="NormalTextRun
SCXW113139885 BCX0">With everyone at home, dishes pile up faster, garbage
accumulates, and chores must be done more frequently. To keep track in real time
what<SPAN>&nbsp;</SPAN></SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW113139885 BCX0">chores</SPAN><SPAN
class="NormalTextRun SCXW113139885 BCX0"><SPAN>&nbsp;</SPAN>need to be completed
and<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW113139885
BCX0"><SPAN class="NormalTextRun SCXW113139885
BCX0">by<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW113139885
BCX0"><SPAN class="NormalTextRun SCXW113139885 BCX0">when, Scott Hanselman built
an IoT solution, using sensors, a web-based heatmap, and
notifications.&nbsp;</SPAN></SPAN><SPAN class="EOP SCXW113139885
BCX0">&nbsp;</SPAN></P> <P><A href="https://aka.ms/DevEdCalDec20featured9"
target="_self"><SPAN>Check out how to build
Chores&nbsp;</SPAN><SPAN>IoT</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>The Developer Activity
Book&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW123811758 BCX0"><SPAN class="NormalTextRun SCXW123811758 BCX0">Taking your
mind of</SPAN></SPAN><SPAN class="TextRun SCXW123811758 BCX0"><SPAN
class="NormalTextRun SCXW123811758 BCX0">f</SPAN></SPAN><SPAN class="TextRun
SCXW123811758 BCX0"><SPAN class="NormalTextRun SCXW123811758
BCX0"><SPAN>&nbsp;</SPAN>what you’re working on is sometimes the best way to get
inspiration. The Developer Activity Book
features<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW123811758
BCX0"><SPAN class="NormalTextRun SCXW123811758 BCX0">family-friendly fun,
including<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW123811758
BCX0"><SPAN class="NormalTextRun SCXW123811758
BCX0">seven<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW123811758
BCX0"><SPAN class="NormalTextRun SCXW123811758 BCX0">coloring pages, a crossword
puzzle, a word search, and a logic puzzle.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW123811758 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured10" target="_self"><SPAN>Get the
Developer Activity Book</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>2020 Imag</SPAN></STRONG><STRONG><SPAN>ine Cup World
Championship</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">The Imagine
Cup<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">World Championship
encourages</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0"><SPAN>&nbsp;</SPAN>students across the
globe to innovate using Microsoft Azure. Finalist teams created
tech</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0">nological</SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0"><SPAN>&nbsp;</SPAN>solutions<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">tackl</SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">e</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0"><SPAN>&nbsp;</SPAN>pressing global
issues</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0">.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">Get inspired by</SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">their
passion<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">and<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">the incredible projects
they created</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0">.</SPAN></SPAN><SPAN class="EOP
SCXW118449384 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured11" target="_self"><SPAN>Watch the
recap</SPAN></A><SPAN>&nbsp;(3 minutes)</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN>Plastic Origins
Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">Most of the
plastic that ends up in the oceans comes from inland sources. In this episode
of<SPAN>&nbsp;</SPAN></SPAN><SPAN class="NormalTextRun SpellingErrorV2
SCXW132318438 BCX0">CodeStories</SPAN><SPAN class="NormalTextRun SCXW132318438
BCX0">,<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">Seth
Juarez</SPAN></SPAN><SPAN class="TextRun SCXW132318438 BCX0"><SPAN
class="NormalTextRun SCXW132318438 BCX0"><SPAN>&nbsp;</SPAN>shows
how<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0">developers<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">can use AI
to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">address
th</SPAN></SPAN><SPAN class="TextRun SCXW132318438 BCX0"><SPAN
class="NormalTextRun SCXW132318438 BCX0">is</SPAN></SPAN><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0"><SPAN>&nbsp;</SPAN>problem by
monitoring<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">microplastic and
tracking<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">ocean</SPAN></SPAN><SPAN
class="TextRun SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0">-</SPAN></SPAN><SPAN class="TextRun SCXW132318438 BCX0"><SPAN
class="NormalTextRun SCXW132318438 BCX0">bound</SPAN></SPAN><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0"><SPAN>&nbsp;</SPAN>plastic waste.</SPAN></SPAN><SPAN class="EOP
SCXW132318438 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured12" target="_self"><SPAN>Watch the
video</SPAN></A><SPAN>&nbsp;(13 minutes)</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">Next&nbsp;</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">up is&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">week 4
of</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">&nbsp;#DevDecember</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">. We’ll cover</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">&nbsp;one of our
favorite topics:&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">the</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">&nbsp;projects and</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">technologies</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">we’re
most&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">look</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">ing</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">&nbsp;forward to</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">in
2021.</SPAN></SPAN> </SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun
SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339 BCX0">Meanwhile,
w</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339
BCX0">e’re<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW60259339
BCX0"><SPAN class="NormalTextRun SCXW60259339 BCX0">hoping you’ll upload
a</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339 BCX0"><SPAN>&nbsp;</SPAN>#DevWithABev
selfie</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339 BCX0"><SPAN>&nbsp;</SPAN>if you haven’t
already</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339 BCX0">.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339
BCX0">What’s this about? Simply put,<SPAN>&nbsp;</SPAN></SPAN><SPAN
class="NormalTextRun SpellingErrorV2 SCXW60259339 BCX0">devs</SPAN><SPAN
class="NormalTextRun SCXW60259339 BCX0"><SPAN>&nbsp;</SPAN>take a picture of
themselves with a<SPAN>&nbsp;</SPAN></SPAN><SPAN class="NormalTextRun
SpellingErrorV2 SCXW60259339 BCX0">bev</SPAN><SPAN class="NormalTextRun
SCXW60259339 BCX0">. Hot or cold, commonplace or original, we like it all.
Share<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW60259339
BCX0"><SPAN class="NormalTextRun SCXW60259339 BCX0">and</SPAN></SPAN><SPAN
class="TextRun SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339
BCX0"><SPAN>&nbsp;</SPAN>tag your pic<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339
BCX0">#DevWithABev.</SPAN></SPAN><SPAN class="EOP SCXW60259339
BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>Missed some&nbsp;</SPAN><SPAN>or
all&nbsp;</SPAN><SPAN>of</SPAN><SPAN>&nbsp;</SPAN><SPAN>#</SPAN><SPAN>DevDecember</SPAN><SPAN>?
Catch up on </SPAN><STRONG><A href="https://aka.ms/DevDecember20Home"
target="_self">our #DevDecember homepage</A>&nbsp;</STRONG><SPAN>for more
info!&nbsp;</SPAN></P> Fri, 01 Jan 2021 10:05:48 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-3-recap-inspiration/ba-p/1834828
livelovegeek 2021-01-01T10:05:48Z Migrating Azure AD B2C integration going from
.NET Core 3.1 to .NET 5
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/migrating-azure-ad-b2c-integration-going-from-net-core-3-1-to/ba-p/1983575
<P>This year's release of .NET happened a few weeks ago with .NET 5. (Core is
gone from the name now.) I have some sample code that works as sort of a
boilerplate to verify basic functionality without containing anything fancy. One
of those is a web app where one can sign in through Azure AD B2C. Logically I
went ahead and updated from .NET Core 3.1 to .NET 5 to see if everything still
works.</P><P>&nbsp;</P><P>It works, but there are recommendations that you
should put in some extra effort as the current NuGet packages are on their way
to deprecation. Not like "will stop working in two weeks", but might as well
tackle it now.</P><P>&nbsp;</P><P>The Microsoft Identity platform has received
an overhaul in parallel to .NET and a little while before the .NET 5 release the
Identity team released <EM>Microsoft.Identity.Web</EM> packages for handling
auth in web apps. (Not just for Azure AD B2C, but identity in
general.)</P><P>&nbsp;</P><P>Why is this upgrade necessary? Well, the old
libraries were based on the Azure AD v1 endpoints, but these new libraries fully
support the v2 endpoints. Which is great when going for full compliance with the
OAuth and OpenID Connect protocols.</P><P>&nbsp;</P><P>Using my sample
at&nbsp;<A
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/aad-b2c-custom_policies-dotnet-core"
target="_blank"
rel="noopener">https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/aad-b2c-custom_policies-dotnet-core</A>&nbsp;
I wanted to do a test run from old to new.</P><P>&nbsp;</P><P>The current code
is using&nbsp;<EM>Microsoft.AspNetCore.Authentication.AzureADB2C.UI</EM>. (You
can take a look at the code for the <A title="Upgraded to .NET 5"
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/b6d8def3dcf8c46e38a9419a9dc88d5eb327501b/aad-b2c-custom_policies-dotnet-core"
target="_blank" rel="noopener">Upgraded to .NET 5</A>&nbsp;checkpoint for
reference.)</P><P>&nbsp;</P><P>You can start by using NuGet to download the
latest version of <EM>Microsoft.Identity.Web</EM> and
<EM>Microsoft.Identity.Web.UI</EM>. (1.4.0 when I'm typing this.) You can also
remove&nbsp;<SPAN><EM>Microsoft.AspNetCore.Authentication.AzureADB2C.UI</EM>
while you're at it.</SPAN></P><P>&nbsp;</P><P>In <EM>Startup.cs</EM>&nbsp;you
should make the following changes:</P><P>Replace</P><P>&nbsp;</P><LI-CODE
lang="csharp">services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options =&gt; Configuration.Bind("AzureADB2C",
options)).AddCookie();</LI-CODE><P>&nbsp;</P><P>With</P><P>&nbsp;</P><LI-CODE
lang="csharp">services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureADB2C"));</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>And
change</P><P>&nbsp;</P><LI-CODE lang="csharp">services.AddRazorPages();
</LI-CODE><P>&nbsp;</P><P>To</P><P>&nbsp;</P><LI-CODE
lang="csharp">services.AddRazorPages().AddMicrosoftIdentityUI();</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>If
you have been doing "classic"</SPAN><SPAN> Azure AD apps you will notice how B2E
and B2C are now almost identical. Seeing how they both follow the same set of
standards this makes sense. As well as making it easier for .NET devs to support
both internal and external facing authentication.</SPAN></P><P>&nbsp;</P><P>B2C
has some extra logic in the sense that the different policies drive you to
different endpoints, so the UI has to have awareness of this. And you need to
modify a few things in the views.</P><P>&nbsp;</P><P>In
<EM>LoginPartial.cshtml</EM>:</P><P>Change</P><P>&nbsp;</P><LI-CODE
lang="csharp">@using Microsoft.AspNetCore.Authentication.AzureADB2C.UI @using
Microsoft.Extensions.Options @inject IOptionsMonitor&lt;AzureADB2COptions&gt;
AzureADB2COptions @{ var options =
AzureADB2COptions.Get(AzureADB2CDefaults.AuthenticationScheme);
}</LI-CODE><P>&nbsp;</P><P>To</P><P>&nbsp;</P><LI-CODE lang="csharp">@using
Microsoft.Extensions.Options @using Microsoft.Identity.Web @inject
IOptions&lt;MicrosoftIdentityOptions&gt; AzureADB2COptions @{ var options =
AzureADB2COptions.Value; }</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>And change the
asp-area in links from using AzureADB2C:</P><P>&nbsp;</P><LI-CODE
lang="csharp">&lt;a class="nav-link text-dark" asp-area="AzureADB2C"
asp-controller="Account" asp-action="SignOut"&gt;Sign
out&lt;/a&gt;</LI-CODE><P>&nbsp;</P><P>To using
MicrosoftIdentity:</P><P>&nbsp;</P><LI-CODE lang="csharp">&lt;a class="nav-link
text-dark" asp-area="MicrosoftIdentity" asp-controller="Account"
asp-action="SignOut"&gt;Sign
out&lt;/a&gt;</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>And
that's all there is to it :)</img></P><P><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Azure
AD B2C SignUp" style="width: 241px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/240107i07730500C0838E23/image-size/medium?v=v2&amp;px=400"
role="button" title="SignUp.png" alt="Azure AD B2C SignUp" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">Azure AD B2C
SignUp</span></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now this is a fairly
stripped down sample app without the complexity of a real world app, but this
was a rather pain free procedure for changing the identity engine in a web
app.</P><P>&nbsp;</P> Mon, 14 Dec 2020 17:00:00 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/migrating-azure-ad-b2c-integration-going-from-net-core-3-1-to/ba-p/1983575
Andreas Helland 2020-12-14T17:00:00Z #DevDecember Week 2 Recap: Community
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-2-recap-community/ba-p/1834827
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Blog-images_week2.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234746i32908191DA073641/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week2.png" alt="Blog-images_week2.png"
/></span></SPAN></P> <P><SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">When you're starting
a&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">new dev&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">project or&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321
BCX0"><SPAN class="NormalTextRun SCXW168876321 BCX0">tackling</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">coding problems</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">,&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">it helps</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">t</SPAN></SPAN><SPAN class="TextRun
SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321 BCX0">o build on
the knowledge of others. In 2020 especially,&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">a helping hand&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321
BCX0"><SPAN class="NormalTextRun SCXW168876321 BCX0">was</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">more than welcome</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">!</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW168876321 BCX0">&nbsp;</SPAN> </SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_18_1_Recap.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235806iCC2C65DAD6A12398/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_18_1_Recap.png" alt="Slide_18_1_Recap.png"
/></span><SPAN class="TextRun SCXW95868378 BCX0"><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW95868378 BCX0
DefaultHighlightTransition">So</SPAN><SPAN class="NormalTextRun SCXW95868378
BCX0"><SPAN>&nbsp;</SPAN>i</SPAN></SPAN><SPAN class="TextRun SCXW95868378
BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">n our second week of
#DevDecember, we<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW95868378 BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">are
taking<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378
BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">some time
to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378 BCX0"><SPAN
class="NormalTextRun SCXW95868378 BCX0">celebrate the efforts
of<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378 BCX0"><SPAN
class="NormalTextRun SCXW95868378 BCX0">the</SPAN></SPAN><SPAN class="TextRun
SCXW95868378 BCX0"><SPAN class="NormalTextRun SCXW95868378
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378
BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">dev
community.</SPAN></SPAN><SPAN class="TextRun SCXW95868378 BCX0"><SPAN
class="NormalTextRun SCXW95868378 BCX0">&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW95868378 BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">We’d love to
hear how the dev community came through for you in
2020.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">Did you</SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0"><SPAN>&nbsp;</SPAN>get assistance</SPAN></SPAN><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0"><SPAN>&nbsp;</SPAN>learn</SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">ing</SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0"><SPAN>&nbsp;</SPAN>a new language</SPAN></SPAN><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">?</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0"><SPAN>&nbsp;</SPAN>Did someone else
inspire you</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0">r project</SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">?</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">Share your version of</SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0"><SPAN>&nbsp;</SPAN>this
week’s fill-</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0">in-</SPAN></SPAN><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">the-</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313
BCX0">blank<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">and tag your thoughts as
#DevDecember.&nbsp;</SPAN></SPAN><SPAN class="EOP SCXW51787313
BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P>Now, let's&nbsp;review this week’s
highlights:&nbsp;</P>
<P><STRONG><SPAN>L</SPAN></STRONG><STRONG><SPAN>ive&nbsp;</SPAN></STRONG><STRONG><SPAN>coding
c</SPAN></STRONG><STRONG><SPAN>ommunity</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">Learn from the best on Twitch</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">!</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">Watch&nbsp;</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW1136063">devs</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;code&nbsp;</SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 BCX0
SCXW1136063">live,&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun ContextualSpellingAndGrammarErrorV2 BCX0
SCXW1136063">and</SPAN><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;connect and&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">ask
questions</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;in real</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">time</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">. Find out
how</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;joining</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">Microsoft’s&nbsp;</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">virtual communit</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">y</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;can speed up&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">learning new skills
and languages.</SPAN></SPAN><SPAN class="LineBreakBlob BlobObject DragDrop BCX0
SCXW1136063"><SPAN class="BCX0 SCXW1136063">&nbsp;</SPAN><BR /></SPAN><A
href="https://aka.ms/DevEdCalDec20featured6" target="_blank" rel="noopener
noreferrer"><SPAN class="TextRun Underlined BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">Watch an intro video on Twitch and live
coding</SPAN></SPAN></A><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;(25 min)</SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN>The ReadMe
Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Behind
the&nbsp;</SPAN><SPAN>open</SPAN><SPAN>-</SPAN><SPAN>source code used by
millions of people are the unseen efforts
of&nbsp;</SPAN><SPAN>countless&nbsp;</SPAN><SPAN>contributors</SPAN><SPAN>,
who&nbsp;</SPAN><SPAN>put in long hours to build software, fix issues, and
more.&nbsp;</SPAN><SPAN>Meet</SPAN><SPAN>&nbsp;some of
the&nbsp;</SPAN><SPAN>people making contributions, including
veterans</SPAN><SPAN>&nbsp;who find the teamwork required for open source
collaboration&nbsp;</SPAN><SPAN>a natural
fit</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured5" target="_blank"
rel="noopener"><SPAN>Read their inspiring
stories</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Remote
collaboration&nbsp;</SPAN></STRONG><STRONG><SPAN>with Live Share
in</SPAN></STRONG><STRONG><SPAN>&nbsp;</SPAN></STRONG><STRONG><SPAN>Visual
Studio Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>With Live
Share</SPAN><SPAN>,</SPAN><SPAN>&nbsp;you can instantly share your project with
fellow dev</SPAN><SPAN>eloper</SPAN><SPAN>s. No need to clone a repo or set up
the environment</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>It’s a one-stop,
r</SPAN><SPAN>eal-time
collaboration&nbsp;</SPAN><SPAN>tool</SPAN><SPAN>&nbsp;</SPAN><SPAN>for pairing,
code reviews, technical interviews,
boot</SPAN><SPAN>&nbsp;</SPAN><SPAN>camps</SPAN><SPAN>,</SPAN><SPAN>&nbsp;and
more</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured7" target="_self">Watch a short
video&nbsp;on how to set&nbsp;up Live Share</A><SPAN>&nbsp;</SPAN><SPAN>(5
min)</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>From
the&nbsp;</SPAN></STRONG><STRONG><SPAN>open
source</SPAN></STRONG><STRONG><SPAN>&nbsp;kitchen</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>Cooking up code is a bit like developing food recipes. The more
people&nbsp;</SPAN><SPAN>who&nbsp;</SPAN><SPAN>test your recipe, the more it's
likely to guarantee that what lands on your plate is what you
intended.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured8" target="_blank"
rel="noopener"><SPAN>Browse our crowdsourced cookbook with free code
recipes</SPAN></A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN>Before we call it a wrap, d<SPAN class="TextRun SCXW254978929
BCX0"><SPAN class="NormalTextRun SCXW254978929 BCX0">on’t forget to check in
with #DevWithABev</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun SCXW254978929 BCX0">,</SPAN></SPAN><SPAN class="TextRun
SCXW254978929 BCX0"><SPAN class="NormalTextRun SCXW254978929
BCX0">&nbsp;developer-with-a-beverage&nbsp;</SPAN></SPAN><SPAN class="TextRun
SCXW254978929 BCX0"><SPAN class="NormalTextRun SCXW254978929
BCX0">selfies</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun SCXW254978929 BCX0">. Add to the collection with a
pic</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun SCXW254978929 BCX0">&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW254978929 BCX0"><SPAN class="NormalTextRun SCXW254978929
BCX0">of yourself and a favorite holiday&nbsp;</SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW254978929
BCX0">beverage</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW254978929
BCX0">,</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW254978929
BCX0">&nbsp;and</SPAN><SPAN class="NormalTextRun SCXW254978929 BCX0">&nbsp;tag
it #DevWithABev.</SPAN></SPAN><SPAN class="EOP SCXW254978929
BCX0">&nbsp;</SPAN></SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
class="TextRun SCXW73902411 BCX0"><SPAN class="NormalTextRun SCXW73902411
BCX0">Next week, we’ll talk about<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW73902411 BCX0"><SPAN class="NormalTextRun SCXW73902411
BCX0">what inspired us in 2020</SPAN></SPAN><SPAN class="TextRun SCXW73902411
BCX0"><SPAN class="NormalTextRun SCXW73902411
BCX0">.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW73902411
BCX0"><SPAN class="NormalTextRun SCXW73902411 BCX0">Keep following #</SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW73902411
BCX0">DevDecember</SPAN></SPAN><SPAN class="TextRun SCXW73902411 BCX0"><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW73902411
BCX0">,<SPAN>&nbsp;and <STRONG>c</STRONG></SPAN></SPAN></SPAN><STRONG>heck
out&nbsp;<A href="https://aka.ms/DevDecember20Home" target="_self"><U>our
homepage</U></A></STRONG><STRONG>&nbsp;for more info!&nbsp;</STRONG></P> Fri, 01
Jan 2021 10:05:58 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-2-recap-community/ba-p/1834827
livelovegeek 2021-01-01T10:05:58Z What's New in Logic Apps
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-s-new-in-logic-apps/ba-p/1969149
<DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">We <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-logic-apps-runtime-performance-and-developer-improvements/ba-p/1645335"
target="_self">announced</A> public preview of the new Logic Apps runtime,
performance and developer improvements in September, 2020. Today, we are happy
to announce the availability of a major update that continue to extend the
capability of Logic Apps. You can find the highlights about this release
below.</DIV> <DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Breakpoint
Debugging</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">You've been asking about
better debugging support, and it is now available with the new runtime. When
running Logic Apps locally, it's possible to set breakpoint before and after an
action, and examine the input and output during workflow executions.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="MicrosoftTeams-image (3).png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/238874iACF1DFB734BBB8B3/image-size/large?v=v2&amp;px=999"
role="button" title="MicrosoftTeams-image (3).png" alt="MicrosoftTeams-image
(3).png" /></span></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>New Layout
Engine for Designer</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">Since the initial
release of Logic Apps, we see customers' implementation grow in complexity: more
actions, parallel branches, extensive use of control flows and advanced
configurations. After the visual refresh for the workflow designer we recently
released, we decided it's time to update the layout engine to better render more
complex workflows. This refresh includes only the initial work to move to a new
layout engine, more improvements will come in the coming months.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screen Shot 2020-12-08 at 3.12.07 PM.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/238878i88FCFA6B7C160CFB/image-size/large?v=v2&amp;px=999"
role="button" title="Screen Shot 2020-12-08 at 3.12.07 PM.png" alt="Screen Shot
2020-12-08 at 3.12.07 PM.png" /></span></DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Custom Connector
Extension</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">Custom connector allows
you to easily connect to systems outside of the 400+ connectors available
out-of-box. With the new runtime, you can now write codeful custom connector
extensions.&nbsp;This new approach of creating custom connectors means it runs
same process as the Logic App runtime, which results in higher throughput, low
latency, and local connectivity. You can learn more about this capability <A
href="https://techcommunity.microsoft.com/t5/integrations-on-azure/azure-logic-apps-running-anywhere-built-in-connector/ba-p/1921272"
target="_self">here</A>.</DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Integration
Account Support</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">Many of the Integration
Account capabilities are now built-in. You can upload maps and schemas directly
to the new Logic Apps resource, and perform XML validation, transformation, and
Liquid operations without needing an Integration Account.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Cross
Platform</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">With this release, you
can develop and test Logic Apps locally using VS Code on macOS and Linux, and
deploy Logic Apps to Linux container runtime as well as Kubernetes.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">I want to take this
opportunity to thank you for continued support and feedback as we work
to<SPAN>wards General Availability.&nbsp;</SPAN><SPAN style="font-family:
inherit;">We can't wait for you to try it out and hear what you
think.</SPAN></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><SPAN
style="font-family: inherit;">To get started, install/update the&nbsp;</SPAN><A
style="font-family: inherit; background-color: #ffffff;"
href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps"
target="_self">VS Code extension</A><SPAN style="font-family: inherit;"> and
create a local project, or create a new resource from the </SPAN><A
style="font-family: inherit; background-color: #ffffff;"
href="https://portal.azure.com/" target="_self">Azure Portal</A><SPAN
style="font-family: inherit;">. You can submit your feedback </SPAN><A
style="font-family: inherit; background-color: #ffffff;"
href="http://aka.ms/lafeedback" target="_self">here</A><SPAN style="font-family:
inherit;">.</SPAN></DIV> </DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">- Derek, on behalf of
the entire Logic Apps Team</DIV> Wed, 09 Dec 2020 23:11:08 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-s-new-in-logic-apps/ba-p/1969149
derek1ee 2020-12-09T23:11:08Z Azure Advocate Weekly Round Up - Holidays are
almost here!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-holidays-are-almost-here/ba-p/1957205
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Sarah_Banner.jpg" style="width: 622px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/238529iD80348C30134D075/image-dimensions/622x207?v=v2"
width="622" height="207" role="button" title="Sarah_Banner.jpg"
alt="Sarah_Banner.jpg" /></span></P> <P><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Sarah is a Cloud Advocate for Microsoft. In this
Discover STEM video Sarah talks about cloud computing, including explaining the
basic principles behind the technology, using terms like servers, data centres
and computing power. She provides some advantages and disadvantages of using the
technology and also provide &nbsp;examples for how industry might use cloud
technology in the future. &nbsp;</P> <P>&nbsp;</P> <P><A
href="https://css-tricks.com/a-gentle-introduction-to-using-a-docker-container-as-a-dev-environment/"
target="_blank" rel="noopener">A Gentle Introduction to Using a Docker Container
as a Dev Environment | CSS-Tricks</A><BR /><STRONG><I><A
href="https://twitter.com/burkeholland" target="_blank" rel="noopener">Burke
Holland</A></I></STRONG></P> <P>Sarcasm disclaimer: This article is mostly
sarcasm. I do not think that I actually speak for Dylan Thomas and I would never
encourage you to foist a light</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/sustainable-software/green-energy-efficient-progressive-web-apps/?WT.ms_id=green-8967-cxa&amp;WT.mc_id=green-8967-ashussai"
target="_blank" rel="noopener">Green Energy Efficient Progressive Web Apps |
Sustainable Software</A><BR /><STRONG><I><A href="https://twitter.com/jawache"
target="_blank" rel="noopener">Asim Hussain</A></I></STRONG></P> <P>As a web
developer, can we adjust our code to participate in the global effort to reduce
the carbon footprint? PWAs offer some solutions</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=1iZxhtxSDu0" target="_blank"
rel="noopener">How to Monitor an Azure virtual machine with Azure Monitor</A><BR
/><STRONG><I><A href="https://twitter.com/ThomasMaurer" target="_blank"
rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Here is how to use Azure
Monitor to collect and analyze monitoring data from Azure virtual machines to
maintain their health. Virtual machines can be monitor...</P> <P>&nbsp;</P>
<P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/working-with-git-branches/ba-p/1900867?WT.mc_id=modinfra-10949-salean"
target="_blank" rel="noopener">Working with Git Branches!</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Let's get to grips with Git Branches</P>
<P>&nbsp;</P> <P><A
href="https://acloudguru.com/blog/engineering/5-things-you-should-know-about-real-time-analytics"
target="_blank" rel="noopener">5 things you should know about Real-Time
Analytics | A Cloud Guru</A><BR /><STRONG><I><A
href="https://twitter.com/adipolak" target="_blank" rel="noopener">Adi
Polak</A></I></STRONG></P> <P>Running analytics on real-time data is a challenge
many data engineers are facing today. But not all analytics can be done in real
time! Many are dependent on the volume of the data and the processing
requirements. Even logic conditions are becoming a bottleneck. For example,
think about join operations on huge tables with more […]</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-azure-portal-updates-arm-template-support-for-file/ba-p/1934750?WT.mc_id=modinfra-11135-abartolo"
target="_blank" rel="noopener">AzUpdate: Azure portal updates, ARM Template
support for file share backup and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>It might be snowing in parts of the Northern
Hemisphere, but we won't let that stop us from sharing Azure news with
you.&nbsp; News covered this week includes: New Azure Portal updates for
November 2020, Azure Resource Manager template support for Azure file share
backup, How to use Windows Admin Center on-premises to manage Azure Windows
Server VMs, Multiple new features for Azure VPN Gateway now Generally Available,
and our Microsoft Learn Module of the Week.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/hybrid-management-where-do-i-start/ba-p/1943535?WT.mc_id=modinfra-11216-pierrer"
target="_blank" rel="noopener">Hybrid management. Where do I start?</A><BR
/><STRONG><I><A href="https://twitter.com/WiredCanuck" target="_blank"
rel="noopener">Pierre Roman</A></I></STRONG></P> <P>Managing &amp; maintaining
servers on-premises or in multiple clouds, as well as Azure? Learn about
management tools for your servers wherever they are.&nbsp;&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://dev.to/azure/visualizeit-a-free-online-series-of-workshops-to-build-your-visual-storytelling-skills-d2b"
target="_blank" rel="noopener">#VisualizeIT: A free online series of workshops
to build your visual storytelling skills!</A><BR /><STRONG><I>Nitya
Narasimhan</I></STRONG></P> <P>#VisualizeIT is a free online series of workshops
for creative technologists, from @MSFTReactor, @azureadvocates and members of
the @letssketchtech community.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/handle-app-button-events-microsoft-teams-tabs/"
target="_blank" rel="noopener">Handle app button events in Microsoft Teams
tabs</A><BR /><STRONG><I><A href="https://twitter.com/waldekm" target="_blank"
rel="noopener">Waldek Mastykarz</A></I></STRONG></P> <P>Did you know that you
can respond to user clicking on the app button of your Microsoft Teams personal
app?</P> <P>&nbsp;</P> <P><A href="https://youtu.be/qAIdFJC1SI8" target="_blank"
rel="noopener">Weekly Update #67 - Rebuilding laptops, filming videos and
news!</A><BR /><STRONG><I><A href="https://twitter.com/techielass"
target="_blank" rel="noopener">Sarah Lean</A></I></STRONG></P> <P>In this week's
update I talk about rebuilding my laptop, talking at a user group, filming
videos and the Azure news of the week. :red_circle:</img> Azure Cloud Shell
Update -...</P> <P><LI-VIDEO vid="https://youtu.be/qAIdFJC1SI8" align="center"
size="custom" width="661" height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/join-us-for-data-week-44il" target="_blank"
rel="noopener">Picking the Right Distributed Database [Create: Data]</A><BR
/><STRONG><I><A href="https://twitter.com/abhi_tweeter" target="_blank"
rel="noopener">Abhishek Gupta</A></I></STRONG></P> <P>"In God we trust, all
others must bring data" William Edwards Deming Well...</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/securing-a-windows-server-vm-in-azure/ba-p/1939268?WT.mc_id=modinfra-11348-socuff"
target="_blank" rel="noopener">Securing a Windows Server VM in Azure</A><BR
/><STRONG><I><A href="https://twitter.com/SoniaCuff" target="_blank"
rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>If you've built and managed
Windows Servers in an on-premises environment, you may have a set of
configuration steps as well as regular process and monitoring alerts, to ensure
that server is as secure as possible. But if you run a Windows Server VM in
Azure, apart from not having to manage the physical security of the underlying
compute hardware, what on-premises concepts still apply, what may you need to
alter and what capabilities of Azure should you include?</P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/sharepoint/blogs/cli-microsoft-365-3-3/?WT.mc_id=m365-11349-wmastyka"
target="_blank" rel="noopener">CLI for Microsoft 365 v3.3 - Microsoft 365
Developer Blog</A><BR /><STRONG><I><A href="https://twitter.com/waldekm"
target="_blank" rel="noopener">Waldek Mastykarz</A></I></STRONG></P> <P>Connect
to the latest conferences, trainings, and blog posts for Microsoft 365, Office
client, and SharePoint developers. Join the Microsoft 365 Developer Program.</P>
<P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/microsoft-365/blogs/microsoft-365-pnp-weekly-episode-107/?WT.mc_id=m365-11360-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 107 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I><A
href="https://twitter.com/waldekm" target="_blank" rel="noopener">Waldek
Mastykarz</A></I></STRONG></P> <P>Connect to the latest conferences, trainings,
and blog posts for Microsoft 365, Office client, and SharePoint developers. Join
the Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://towardsdatascience.com/what-is-serverless-sql-and-how-to-use-it-for-data-exploration-eadad1f1a036"
target="_blank" rel="noopener">What is Serverless SQL? And how to use it for
Data Exploration | by Adi Polak | Dec, 2020 | Towards Data Science</A><BR
/><STRONG><I><A href="https://twitter.com/adipolak" target="_blank"
rel="noopener">Adi Polak</A></I></STRONG></P> <P>So, you are a data scientist,
you work with data and need to explore it and run some analytics on the data
before jumping into running extensive machine learning algorithms. According to
Wikipedia…</P> <P>&nbsp;</P> <P><A href="https://youtu.be/b0APzGlBWMA"
target="_blank" rel="noopener">Terraform for Java developers, part 1 of 4</A><BR
/><STRONG><I><A href="https://twitter.com/juliendubois" target="_blank"
rel="noopener">Julien Dubois</A></I></STRONG></P> <P>An introduction to
Terraform focusing on Java developers. In this first video (out of 4), we
describe what Terraform is, and we fork the Spring Petclinic pro...</P>
<P><LI-VIDEO vid="https://youtu.be/b0APzGlBWMA" align="center" size="custom"
width="661" height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> Tue, 08 Dec 2020 01:32:28 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-holidays-are-almost-here/ba-p/1957205
spboyer 2020-12-08T01:32:28Z What I plan to learn at the Learn Together: Dev
Apps for Teams event
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-i-plan-to-learn-at-the-learn-together-dev-apps-for-teams/ba-p/1955137
<P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Learntogether.PNG" style="width: 945px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237657i6189DD8201CF5082/image-size/large?v=v2&amp;px=999"
role="button" title="Learntogether.PNG" alt="Learntogether.PNG"
/></span></STRONG></P> <P>&nbsp;</P> <P><SPAN><A
href="https://aka.ms/learntogether" target="_self">Learn Together: Dev Apps for
Teams</A>&nbsp;is happening on Dec 16 and it will be more of&nbsp;a
conversation-style event.&nbsp;Make sure to&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2Flearntogether&amp;data=04%7C01%7CNina.Sui%40microsoft.com%7C0cf904fb05324a3daf3c08d885b031b2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637406339079067525%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=162wBy7uc%2BV36wBMKFUxI%2Fk7RQWwSRrl%2FFxLj8oFKdg%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>set&nbsp;your
reminders</SPAN></A><SPAN>&nbsp;to attend!&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>These conversations are specially curated for developers
(by developers) around the opportunities and reasons to build apps for
Teams.&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN>So&nbsp;what are we most excited&nbsp;to&nbsp;learn&nbsp;in the two
hours?</SPAN><SPAN>&nbsp;</SPAN></P> <OL> <LI><SPAN><EM>Understand Teams
Apps</EM></SPAN><SPAN>&nbsp;Learn the key concepts and terms necessary to build
apps for Teams. Expand on the messaging, Tab app, extensions, Bots, and
more.&nbsp;Learn&nbsp;to speak the language!</SPAN><SPAN>&nbsp;</SPAN></LI>
<LI><SPAN><EM>“Hello, world!&nbsp;for&nbsp;Teams</EM></SPAN><SPAN>&nbsp;Getting
started with Teams app development is as easy as&nbsp;click,&nbsp;click, hello
world! Learn to build apps for Teams in minutes with the Teams Toolkit Visual
Studio Code&nbsp;extension.</SPAN><SPAN>&nbsp;</SPAN></LI> <LI><SPAN><EM>Make
your app part of your user’s day.</EM></SPAN><SPAN>&nbsp;Enhance the usability
of your application by integrating messaging and meeting extensions, adaptive
cards, and more.</SPAN><SPAN>&nbsp;</SPAN></LI> </OL> <P>&nbsp;</P> <P><SPAN>The
event is closely tied around the Teams App Dev Learning Path and there will even
be a Teams Dev Challenge for those that want to win prizes and put their skills
to the test.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2Flearntogether&amp;data=04%7C01%7CNina.Sui%40microsoft.com%7C0cf904fb05324a3daf3c08d885b031b2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637406339079067525%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=162wBy7uc%2BV36wBMKFUxI%2Fk7RQWwSRrl%2FFxLj8oFKdg%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>Join us</SPAN></A><SPAN>&nbsp;live or
stream on-demand and we are excited to #learntogether!</SPAN><SPAN>&nbsp;See you
there!&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=SyTbx94m1T4&amp;feature=youtu.be"
align="center" size="large" width="600" height="338" uploading="false"
thumbnail="https://i.ytimg.com/vi/SyTbx94m1T4/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> Fri, 04 Dec
2020 07:14:58 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-i-plan-to-learn-at-the-learn-together-dev-apps-for-teams/ba-p/1955137
NinaSui 2020-12-04T07:14:58Z #DevDecember Week 1 Recap: Growth
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-1-recap-growth/ba-p/1834826
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Blog-images_week1.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233216i7C519C8A7680456B/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week1.png" alt="Blog-images_week1.png"
/></span></SPAN></P><P><SPAN>In 2020, developers (along with the rest of the
world) we</SPAN><SPAN>re challenged like never before, but the traits of
determination and persistence describe practically every dev. I mean, honestly,
you can't code without them - like when you get an error and realize you forgot
a ";" somewhere and are scrolling through your IDE for dayyyssss
-&nbsp;<EM>sigh</EM>.</SPAN></P><P>&nbsp;</P><P><SPAN>So, to get our first week
of #</SPAN><SPAN>DevDecember off</SPAN><SPAN>&nbsp;to a running start, we
highlighted&nbsp;</SPAN><SPAN>how
resourceful&nbsp;</SPAN><SPAN>developers&nbsp;</SPAN><SPAN>proved</SPAN><SPAN>&nbsp;to
be</SPAN><SPAN>&nbsp;in</SPAN><SPAN>&nbsp;overcom</SPAN><SPAN>ing</SPAN><SPAN>&nbsp;unexpected
circumstances</SPAN><SPAN>.</SPAN><SPAN>&nbsp;Throughout the week we've shared
various pieces of content that highlight this growth and
determination.</SPAN></P><P>&nbsp;</P><P><SPAN>But, before we get to recapping
those, we wanted to highlight a few fun things that we are doing in #DevDecember
this year:</SPAN></P><P>&nbsp;</P><P><FONT size="4"><STRONG>Reflect with our fun
fill-in-the-blank</STRONG></FONT></P><P><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_9_1.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234263i7AE01217E5F676AD/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_9_1.png" alt="Slide_9_1.png" /></span></P><P><SPAN>So
much of getting through&nbsp;the y</SPAN><SPAN>ear&nbsp;was about bridging gaps,
so we thought&nbsp;a&nbsp;fill-in-the-blank&nbsp;would
be&nbsp;the&nbsp;best&nbsp;way to&nbsp;review&nbsp;some of the ways you
became&nbsp;more skilled&nbsp;and resilient as a dev.<FONT
color="#FF0000">&nbsp;</FONT></SPAN><SPAN><A
href="https://aka.ms/DevDecember20Home" target="_self">Check out the
template</A>, fill it in, tag it as #</SPAN><SPAN>DevDecember</SPAN><SPAN>, and
share&nbsp;</SPAN><SPAN>what you got done</SPAN><SPAN>&nbsp;and
how.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG><FONT
size="4">#DevWithABev fun on social</FONT></STRONG></P><P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Devwithbev_Selfie.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234756i32340B61B2F92127/image-size/medium?v=v2&amp;px=400"
role="button" title="Devwithbev_Selfie.png" alt="Devwithbev_Selfie.png"
/></span>Before&nbsp;we recap, we should&nbsp;also&nbsp;mention #DevWithABev,
a&nbsp;growing&nbsp;collection of&nbsp;developer-with-a-beverage
selfies.&nbsp;Check out everyone's favorite winter beverage,&nbsp;and add your
own personal flavor by taking&nbsp;a snapshot of yourself with yours and
tagging&nbsp;it&nbsp;#DevWithABev. It’s 2020 and we could all use some friendly
faces.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P><FONT
color="#333333">Now,</FONT><FONT color="#333333"> let's recap what we
highlighted this week:&nbsp;</FONT></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Beginner's series to JavaScript
</STRONG></FONT></P><P>Taking your first steps toward mastering a new
programming language is exciting, but it can also feel overwhelming. To help you
get started with JavaScript, we've created short and easy-to-consume videos that
break down the key concepts you need to know.</P><P><A
href="https://aka.ms/DevEdCalDec20featured1" target="_blank"
rel="noopener">Start watching the series</A></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Agrotech IoT workshop</STRONG></FONT></P><P>Want to grow
your professional IoT skills? Your first stop may be the garden. Get your hands
dirty with a workshop on how to build an internet-connected device to gather
soil moisture data that will tell you (by lighting up an LED) if a plant needs
watering.</P><P><A href="https://aka.ms/DevEdCalDec20featured3" target="_blank"
rel="noopener">Start digging in</A></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Bringing browser developer tools to Visual Studio
Code</STRONG></FONT></P><P>One of our favorite releases in 2020 was the
Microsoft Edge Tools for VS Code extension, designed to simplify workflows.
Connect to an existing browser instance, start a new one, or use a “headless”
browser.</P><P><A href="https://aka.ms/DevEdCalDec20featured4" target="_blank"
rel="noopener">Explore the extension</A></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Building a first "Power Apps"
app</STRONG></FONT></P><P>@JoeCamp13 built an app to track inventory entirely
with Power Apps. His explanation of how he did it, is illustrated with
screenshots so you can follow along.</P><P><A
href="https://aka.ms/DevEdCalDec20featured2" target="_blank"
rel="noopener">Start the walkthrough</A></P><P>&nbsp;</P><P><SPAN>Next week,
we’ll talk about&nbsp;</SPAN><SPAN>some of</SPAN><SPAN>&nbsp;the ways the dev
community&nbsp;</SPAN><SPAN>came together</SPAN><SPAN>&nbsp;</SPAN><SPAN>in
202</SPAN><SPAN>0</SPAN><SPAN>.&nbsp;</SPAN><SPAN>Keep following
#</SPAN><SPAN>DevDecember</SPAN><SPAN>&nbsp;for daily
updates</SPAN><SPAN>&nbsp;and affirmations of
awesomeness</SPAN><SPAN>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P><SPAN>Not
sure what&nbsp;</SPAN><SPAN>#</SPAN><SPAN>DevDecember</SPAN><SPAN>&nbsp;is all
about</SPAN><SPAN>?<STRONG> Check out <A href="https://aka.ms/DevDecember20Home"
target="_self">our homepage</A></STRONG></SPAN><STRONG>&nbsp;for more
info!&nbsp; </STRONG></P><P>&nbsp;</P><P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="slide_20_Gif.gif" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237645i41AE169BA69EC86A/image-size/medium?v=v2&amp;px=400"
role="button" title="slide_20_Gif.gif" alt="slide_20_Gif.gif" /></span></P> Sat,
05 Dec 2020 00:16:45 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-1-recap-growth/ba-p/1834826
livelovegeek 2020-12-05T00:16:45Z Now That's What I Call .NET 5 on #Dev_Jams
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/now-that-s-what-i-call-net-5-on-dev-jams/ba-p/1942727
<P><SPAN data-contrast="auto"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="NOW! DotNET 5 Booklet1024_1.jpg"
style="width: 292px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236772iBCD07BFAE035990A/image-dimensions/292x292?v=v2"
width="292" height="292" role="button" title="NOW! DotNET 5 Booklet1024_1.jpg"
alt="NOW! DotNET 5 Booklet1024_1.jpg" /></span></SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">Do you ever have trouble getting into the coding
flow because you just can’t decide what music you want to jam
to?&nbsp;</SPAN><SPAN data-contrast="auto">Well, we have just the playlist for
you: <A href="https://aka.ms/DevJams" target="_self">Now That's What I Call .NET
5!</A>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">To
help celebrate the release of&nbsp;.NET 5, I reached out to some .NET&nbsp;devs
around the world and asked them&nbsp;about why they love .NET and what their
favorite song to listen to while coding is. With that info, we created
the&nbsp;<A href="https://aka.ms/DevJams"
target="_self">#dev_jams&nbsp;playlist&nbsp;on Spotify</A>&nbsp;and created an
album booklet with our featured tracks/devs! Check it out below and feel free to
download it for yourself at the bottom of the page.&nbsp;</SPAN></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_2.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236771i39E133E83CA7E19E/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_2.jpg" alt="NOW! DotNET 5
Booklet1024_2.jpg" /></span></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_3.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236774iFC245836709EF6BF/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_3.jpg" alt="NOW! DotNET 5
Booklet1024_3.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Scott
Hanselman</STRONG> -&nbsp;<A href="https://twitter.com/shanselman"
target="_self">@shanselman</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_4.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236775i1035CA1B041567D4/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_4.jpg" alt="NOW! DotNET 5
Booklet1024_4.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Amiee
Lo</STRONG> -&nbsp;<A href="https://twitter.com/amiee_lo"
target="_self">@amiee_lo</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_5.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236776iADC6E1A1C341C358/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_5.jpg" alt="NOW! DotNET 5
Booklet1024_5.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Torin
Solarin-Sodara</STRONG> -&nbsp;<A href="https://twitter.com/tonerdo"
target="_self">@tonerdo</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_6.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236777i1791F03E923EFDBC/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_6.jpg" alt="NOW! DotNET 5
Booklet1024_6.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Aida
Crone</STRONG> -&nbsp;<A href="https://twitter.com/aidapsibr"
target="_self">@aidapsibr</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_7.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236778i94A964E9EA2E7B20/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_7.jpg" alt="NOW! DotNET 5
Booklet1024_7.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Rodney
Littles, II</STRONG> -&nbsp;<A href="https://twitter.com/rlittlesii"
target="_self">@rlittiesii</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_8.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236779i7E86C416215E951A/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_8.jpg" alt="NOW! DotNET 5
Booklet1024_8.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Bron
Thulke</STRONG> -&nbsp;<A href="https://twitter.com/_bron_"
target="_self">@_bron_</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_9.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236780i9734174A5C2CBD81/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_9.jpg" alt="NOW! DotNET 5
Booklet1024_9.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Michael
Dera</STRONG> -&nbsp;<A href="https://twitter.com/michaeldera"
target="_self">@michaeldera</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_10.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236781iB95C2302CFB851C2/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_10.jpg" alt="NOW! DotNET 5
Booklet1024_10.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Mark
Rendle</STRONG> -&nbsp;<A href="https://twitter.com/markrendle"
target="_self">@markrendle</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_11.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236782i0444B80025B83FA0/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_11.jpg" alt="NOW! DotNET 5
Booklet1024_11.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Jeremy
Sinclair</STRONG> -&nbsp;<A href="https://twitter.com/sinclairinat0r"
target="_self">@sinclairinat0r</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_12.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236770i6D51F6EC78DA9415/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_12.jpg" alt="NOW! DotNET 5
Booklet1024_12.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Jayme
Singleton</STRONG> -&nbsp;<A href="https://twitter.com/JaymeSingleton1"
target="_self">@jaymesingleton1</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_13.jpg" style="width: 291px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236773i3CA5D651269D6656/image-dimensions/291x291?v=v2"
width="291" height="291" role="button" title="NOW! DotNET 5 Booklet1024_13.jpg"
alt="NOW! DotNET 5 Booklet1024_13.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">+
a special shout out to <STRONG>Marc Duiker</STRONG> (<A
href="https://twitter.com/marcduiker" target="_self">@marcduiker</A>) for
creating the amazing pixel art!</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">What
do you think of these featured tracks? Did we miss a song? Let us
know&nbsp;your&nbsp;favorite song&nbsp;by&nbsp;using the hashtag
#dev_jams&nbsp;on Twitter. Happy jamming!</SPAN></P> <P>&nbsp;</P> <P><EM>Also,
just in case you missed it - you can download .NET 5 for Windows, macOS, and
Linux&nbsp;<A href="https://dotnet.microsoft.com/download/dotnet/5.0"
target="_blank" rel="noopener">here.</A>&nbsp;And although&nbsp;<A
href="https://www.dotnetconf.net/" target="_blank" rel="noopener">.NET Conf
2020</A>&nbsp;has wrapped up, you can still catch all the&nbsp;<A
href="https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVWop1HEOml2OdqbDs6IlcI"
target="_blank" rel="noopener">sessions on demand</A>&nbsp;and get a head start
on all the new features that were introduced with .NET 5!</EM></P> Mon, 30 Nov
2020 23:47:33 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/now-that-s-what-i-call-net-5-on-dev-jams/ba-p/1942727
livelovegeek 2020-11-30T23:47:33Z Azure Advocates Weekly Round Up - Scaling
Events w/ Serverless, Cog Services, and DevOps Boards
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-scaling-events-w-serverless-cog/ba-p/1928458
<P><A href="https://youtu.be/Lg4B_H-t8fY" target="_blank" rel="noopener">XR Tea
Party: BabylonJS &amp; WebXR</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank" rel="noopener">Aysegul
Yonet</A></I></STRONG></P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://youtu.be/Lg4B_H-t8fY" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-cloud-assert/ba-p/1866840?WT.mc_id=modinfra-8958-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series - Cloud
Assert</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>This week,
Tiberiu Radu (Azure Stack Hub PM) and I, had the chance to speak to Azure Stack
Hub Partner Cloud Assert.</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/sustainable-software/how-to-measure-the-power-consumption-of-your-frontend-application/?WT.mc_id=green-8991-ashussai"
target="_blank" rel="noopener">How To Measure The Power Consumption of Your
Frontend Application | Sustainable Software</A><BR /><STRONG><I><A
href="https://twitter.com/jawache" target="_blank" rel="noopener">Asim
Hussain</A></I></STRONG></P> <P>The second principle of Sustainable Software
Engineering is to build energy efficient applications. The very first step in
that direction is to measure the energy your application consumes, also known as
its energy cost. Once you measure or estimate the energy cost of your
application,</P> <P>&nbsp;</P> <P><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Browse content tagged with "Cloud Adoption
Framework Series" on Channel 9.</P> <P>&nbsp;</P> <P><A
href="https://cloud-days.jfrog.com/microsoft-azure/" target="_blank"
rel="noopener">DevOps Cloud Days, Day 3, Nov 18, 2020 - JFrog &amp; Microsoft
Azure</A><BR /><STRONG><I><A href="https://twitter.com/jldeen" target="_blank"
rel="noopener">Jessica Deen</A></I></STRONG></P> <P>Join JFrog and Microsoft
Azure to learn about integrations and future development. Secure your
applications and modernize your business.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/lazerwalker/scaling-an-online-virtual-world-with-serverless-tech-4pfo"
target="_blank" rel="noopener">Scaling an Online Virtual World with Serverless
Tech</A><BR /><STRONG><I><A href="https://twitter.com/lazerwalker"
target="_blank" rel="noopener">Em Lazer-Walker</A></I></STRONG></P> <P>I help
run an annual game design conference called Roguelike Celebration. Naturally,
this year we wer...</P> <P>&nbsp;</P> <P><A
href="http://aka.ms/datadog-azureiot" target="_blank" rel="noopener">Monitoring
IoT systems from edge to cloud with Datadog</A><BR /><STRONG><I><A
href="https://twitter.com/pjdecarlo" target="_blank" rel="noopener">Paul
DeCarlo</A></I></STRONG></P> <P>Microsoft Azure has a strong and active
partnership with Datadog , the leading cloud-based monitoring and observability
platform. Recently, Datadog and</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/staticWebAppPRWorkflowForAppServicePt2" target="_blank"
rel="noopener">Static Web App PR Workflow for Azure App Service using Azure
DevOps Pt 2 (But what if my code is in GitHub) | Azure DevOps Blog</A><BR
/><STRONG><I><A href="https://twitter.com/AbelSquidHead" target="_blank"
rel="noopener">Abel Wang</A></I></STRONG></P> <P>Static Web App PR Workflow for
Azure App Service using Azure DevOps Pt 2 (But what if my code is in GitHub) In
part 1 (Static Web App PR Workflow for Azure App Service), I walked you you
through how to set up that sweet pull request workflow for Static Web Apps for
your app if your app was: hosted in Azure App Service your code in Azure Repos
your CI pipeline in Azure Pipelines.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-devops-boards-and-excel/ba-p/1850371?WT.mc_id=modinfra-10509-salean"
target="_blank" rel="noopener">Azure DevOps Boards and Excel!</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank"
rel="noopener">Sarah Lean</A></I></STRONG></P> <P>Use Excel to help manage your
Azure DevOps Board items!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-new-priority-account-capabilities-in-microsoft-365/ba-p/1908148?WT.mc_id=modinfra-10527-abartolo"
target="_blank" rel="noopener">AzUpdate: New Priority Account capabilities in
Microsoft 365, Bastion and Vnet peering, and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>Another busy week for cloud services at
Microsoft.&nbsp; Here are the news items the team at AzUpdate are covering this
week: New Priority Account capabilities now available in Microsoft
365,&nbsp;Azure Bastion and VNet peering can be used together,&nbsp;New
integrations between GitHub and Azure Policy allow for better manage policy
definitions and assignments,&nbsp;New constrained vCPUs capable VMs now
available and of course the Microsoft Learn module of the week.</P>
<P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-create-a-windows-server-2019-nas-fileserver-from-the/ba-p/1893837?WT.mc_id=modinfra-10555-rclaus"
target="_blank" rel="noopener">HOW TO: Create a Windows Server 2019 NAS /
FileServer from the command line</A><BR /><STRONG><I><A
href="https://twitter.com/RicksterCDN" target="_blank" rel="noopener">Rick
Claus</A></I></STRONG></P> <P>Windows Server 2019 default install has no GUI or
Desktop. How do you go about setting this thing up from the command line? In
this post I give you the How To on how to setup a simple File Server to replace
an old NAS device that was failing in my home lab. We're talking PowerShell to
configure Storage Spaces, User Accounts, SMB Shares, Power Profiles and
more!&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/control-holiday-lights-with-python-azure-iot-and-power-apps-2ic6"
target="_blank" rel="noopener">Control holiday lights with Python, Azure IoT and
Power Apps</A><BR /><STRONG><I><A href="https://twitter.com/jimbobbennett"
target="_blank" rel="noopener">Jim Bennett</A></I></STRONG></P> <P>No more
controlling your holiday lights by hand - instead use IoT and a no-code mobile
app!. Tagged with pythonfunbites, azure, python, iot.</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/azure-stack-hub-partner-solutions-series-cloud-assert/"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series – Cloud
Assert</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>This week,
Tiberiu Radu (Azure Stack Hub PM <LI-USER uid="433488"></LI-USER>) and I, had
the chance to speak to Azure Stack Hub Partner Cloud Assert.</P> <P>&nbsp;</P>
<P><A
href="https://dev.to/azure/azurefunbytes-episode-21-azure-security-with-deanbryen-1kdf"
target="_blank" rel="noopener">AzureFunBytes - Episode 21 - @Azure Security with
@deanbryen</A><BR /><STRONG><I><A href="https://twitter.com/jaydestro"
target="_blank" rel="noopener">Jay Gordon</A></I></STRONG></P> <P>Security is
always the primary concern for those deploying applications into the cloud. This
week on... Tagged with azure, security, tutorial, beginners.</P> <P>&nbsp;</P>
<P><A
href="https://dev.to/azure/translating-text-with-just-a-few-lines-of-code-using-azure-cognitive-services-4fao"
target="_blank" rel="noopener">Translating text with just a few lines of code
using Azure Cognitive Services</A><BR /><STRONG><I>Christopher
Harrison</I></STRONG></P> <P>This article is part of #PythonFunBites. An old
co-worker of mine is fond of saying "we're not launc... Tagged with pythonbites,
azure, python, ai.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/getting-started-with-web-dev-using-flask-44l5"
target="_blank" rel="noopener">Getting started with web dev using Flask</A><BR
/><STRONG><I>Christopher Harrison</I></STRONG></P> <P>This article is part of
#PythonFunBites. There's a lot of different web dev frameworks out there, an...
Tagged with pythonfunbites, python, flask, webdev.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/setup-azure-shell-locally-of-on-a-local-network-part-2/ba-p/1883237?WT.mc_id=modinfra-10876-pierrer"
target="_blank" rel="noopener">Set up Azure Shell locally - part 2</A><BR
/><STRONG><I><A href="https://twitter.com/WiredCanuck" target="_blank"
rel="noopener">Pierre Roman</A></I></STRONG></P> <P>Azure Cloud Shell running in
Visual Studio Code - differences with VS Code.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/working-with-jupyter-notebooks-in-visual-studio-code-5130"
target="_blank" rel="noopener">Working with Jupyter Notebooks in Visual Studio
Code</A><BR /><STRONG><I><A href="https://twitter.com/paladique" target="_blank"
rel="noopener">Jasmine Greenaway</A></I></STRONG></P> <P>How to use Jupyter
Notebooks in Visual Studio Code. Tagged with pythonfunbites, azure, python.</P>
<P>&nbsp;</P> <P><A href="https://aka.ms/WhatsNewOct2020" target="_blank"
rel="noopener">What's New in Azure DevOps Docs For October? | Azure DevOps
Blog</A><BR /><STRONG><I><A href="https://twitter.com/AbelSquidHead"
target="_blank" rel="noopener">Abel Wang</A></I></STRONG></P> <P>What’s new for
October1, 2020 – October 31, 2020 Hey hey! New docs have dropped for Azure
DevOps for the month of October. What has changed? Oh, just things like… Delete
and recover packages Remove, delete, or restore work items Use the
Cross-platform CLI for Azure DevOps using personal access tokens (PATs) …and
much more!</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/devops/azurefunbytes-short-azure-containers-kubernetes-container-instances-more/?WT.mc_id=devops-11004-jagord"
target="_blank" rel="noopener">AzureFunBytes Short - Azure Containers
(Kubernetes, Container Instances, More) | Azure DevOps Blog</A><BR
/><STRONG><I><A href="https://twitter.com/jaydestro" target="_blank"
rel="noopener">Jay Gordon</A></I></STRONG></P> <P>Containers provide an easy way
to run batch jobs without having to manage an environment and dependencies.
Dynamic compute options, such as Azure Container Instances (ACI), can be used to
efficiently ingest source data, process it, and place it in a durable store such
as Azure Blob storage.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/the-python-community-is-stronger-together-1anl"
target="_blank" rel="noopener">The Python Community is Stronger Together</A><BR
/><STRONG><I><A href="https://twitter.com/nnja" target="_blank"
rel="noopener">Nina Zakharenko</A></I></STRONG></P> <P>Some thoughts on how to
stay connected with the Python Community in 2020.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/microsoft-365/blogs/microsoft-365-pnp-weekly-episode-105/?WT.mc_id=m365-11044-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 105 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I><A
href="https://twitter.com/waldekm" target="_blank" rel="noopener">Waldek
Mastykarz</A></I></STRONG></P> <P>Connect to the latest conferences, trainings,
and blog posts for Microsoft 365, Office client, and SharePoint developers. Join
the Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/AAacwbq" target="_blank" rel="noopener">Microsoft
Autonomous Driving Startups Program</A><BR /><STRONG><I><A
href="https://twitter.com/adipolak" target="_blank" rel="noopener">Adi
Polak</A></I></STRONG></P> <P>Join us for an exceptional conversation with
Aditya from the Microsoft Autonomous Driving program. Aditya shares the trends
in Autonomous Driving, what startups are building, how Microsoft can help,</P>
<P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/lisa-at-the-edge-podcast-thomas-maurer-career-development-azure-arc/"
target="_blank" rel="noopener">Lisa At The Edge Podcast – Thomas Maurer – Career
Development &amp; Azure Arc</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank" rel="noopener">Thomas
Maurer</A></I></STRONG></P> <P>Lisa At The Edge Podcast - Thomas Maurer - Career
Development &amp; Azure Arc we talked about Azure Arc and Azure Hybrid
Cloud!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/educator-developer-blog/control-holiday-lights-with-python-azure-iot-and-power-apps/ba-p/1903902?WT.mc_id=academic-11204-jabenn"
target="_blank" rel="noopener">Control holiday lights with Python, Azure IoT and
Power Apps</A><BR /><STRONG><I><A href="https://twitter.com/jimbobbennett"
target="_blank" rel="noopener">Jim Bennett</A></I></STRONG></P> <P>As the
December holiday season descends, some cultures celebrate with lights, where's
other folks have breaks from school and are looking for a fun</P> <P>&nbsp;</P>
Tue, 24 Nov 2020 20:53:45 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-scaling-events-w-serverless-cog/ba-p/1928458
spboyer 2020-11-24T20:53:45Z Join us for #SeasonsOfServerless - our festive
developer challenge!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/join-us-for-seasonsofserverless-our-festive-developer-challenge/ba-p/1901451
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="A Festive Serverless Developer Challenge:
https://aka.ms/SeasonsOfServerless" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234428i9ABC3E942072A5ED/image-size/large?v=v2&amp;px=999"
role="button" title="chalkboard.gif" alt="A Festive Serverless Developer
Challenge: https://aka.ms/SeasonsOfServerless" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">A Festive
Serverless Developer Challenge:
https://aka.ms/SeasonsOfServerless</span></span></P> <P>&nbsp;</P>
<P><STRONG><FONT color="#FF0000">Check out the first challenge right now:</FONT>
<BR /><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/Nov-23-2020.md"
target="_self">"The Perfect Holiday Turkey"</A> on the<A
href="https://aka.ms/SeasonsOfServerless" target="_self"> Seasons Of Serverless
Website</A>!&nbsp;</STRONG></P> <P>&nbsp;</P> <P><FONT size="6"><FONT
size="7">#SeasonsOfServerless</FONT>&nbsp;</FONT></P> <P>&nbsp;</P> <P><FONT
size="6">An Azure Advocates Festive Developer Challenge!</FONT></P> <P><FONT
size="4"><SPAN class="TextRun SCXW29597693 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW29597693 BCX8">The<SPAN>&nbsp;</SPAN></SPAN></SPAN><A
class="Hyperlink SCXW29597693 BCX8" href="https://twitter.com/azureadvocates"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW29597693 BCX8" data-contrast="none"><SPAN class="NormalTextRun SCXW29597693
BCX8" data-ccp-charstyle="Hyperlink">Azure Advocates</SPAN></SPAN></A><SPAN
class="TextRun SCXW29597693 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW29597693 BCX8">&nbsp;have teamed up
with<SPAN>&nbsp;</SPAN></SPAN></SPAN><A class="Hyperlink SCXW29597693 BCX8"
href="https://studentambassadors.microsoft.com/" target="_blank" rel="noreferrer
noopener"><SPAN class="TextRun Underlined SCXW29597693 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW29597693 BCX8"
data-ccp-charstyle="Hyperlink">Microsoft Student
Ambassadors</SPAN></SPAN></A><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693
BCX8"><SPAN>&nbsp;</SPAN>around the world for a new multi-week
series<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693 BCX8">of developer
challenges – just in time for the festive holiday season!!! Join us as we travel
the globe in search of popular festive recipes for our
virtual<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693
BCX8">potluck</SPAN></SPAN><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693
BCX8"><SPAN>&nbsp;</SPAN>– and find intriguing ways to tackle each chef’s
challenges with our time-tested serverless recipes!</SPAN></SPAN><SPAN
class="EOP SCXW29597693 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG><FONT size="5"><SPAN class="TextRun
MacChromeBold SCXW223924860 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW223924860 BCX8">WHAT IS THE CHALLENGE
ABOUT?</SPAN></SPAN><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></STRONG></P>
<P><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW250697636 BCX8" data-contrast="none"><SPAN
class="NormalTextRun SCXW250697636 BCX8" data-ccp-parastyle="Quote"><STRONG><BR
/><FONT size="4">Origin Story:<BR /></FONT><BR
/></STRONG></SPAN></SPAN></SPAN></P> <P
class="lia-indent-padding-left-30px"><EM>Mes chers amis,</EM></P> <P
class="lia-indent-padding-left-30px"><EM>Every year, we all look forward to our
annual holiday potluck. From jollof rice all across West Africa to Indian ladoos
to celebrate Diwali, sharing our favorite foods and traditions is our favorite
part of the season!</EM></P> <P class="lia-indent-padding-left-30px"><EM>Of
course, we know that's not possible this year, so we've come up with an
alternative: a virtual code challenge potluck! Each week, someone in our
community is going to post a unique code challenge exploring a recipe and a food
for all of our friends to solve. It may not be the same as breaking bread
in-person or smelling and tasting your flavorful creations, but hopefully these
delectable brain-teasers can still give us a taste of each other's
traditions.</EM></P> <P class="lia-indent-padding-left-30px"><EM>Grosses bises,
Dominique et Simone</EM></P> <P>&nbsp;</P> <P><FONT size="4"><STRONG><SPAN
class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW250697636 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559685&quot;:864,&quot;335559737&quot;:864,&quot;335559738&quot;:200,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">The
Mission:<BR /></SPAN></SPAN></STRONG><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW250697636 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559685&quot;:864,&quot;335559737&quot;:864,&quot;335559738&quot;:200,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW190509864 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW190509864 BCX8">Our intrepid chefs (and challenge
creators) quickly realized that making these dishes requires a little help
–&nbsp;</SPAN></SPAN></SPAN></SPAN><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW250697636 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559685&quot;:864,&quot;335559737&quot;:864,&quot;335559738&quot;:200,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW190509864 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW190509864 BCX8">and&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW190509864 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW190509864 BCX8">they think serverless fits the bill
quite nicely!</SPAN></SPAN></SPAN></SPAN></FONT></P> <P><FONT size="4"><A
href="https://aka.ms/SeasonsOfServerless"
target="_self">#SeasonsOfServerless</A> follows on the footsteps of last year's
popular <A
href="https://dev.to/azure/25-days-of-serverless-content-collection-3baj/comments"
target="_self">#25DaysOfServerless</A> challenge. This year, we wanted to give
you more time to enjoy each challenge so we spaced them out - a challenge a week
starting November end, and going through the holidays into the new
year!</FONT></P> <P>&nbsp;</P> <P><FONT size="4">And our first challenge is
already out! Hear all about it from the amazing Student Ambassadors and Cloud
Advocates who .. ahem .. cooked it up!</FONT></P> <P>&nbsp;</P> <P><FONT
size="4"><LI-VIDEO vid="https://youtu.be/BCbG50Zhw0Y" align="center"
size="custom" width="643" height="643" uploading="false"
thumbnail="https://i.ytimg.com/vi/BCbG50Zhw0Y/hqdefault.jpg"
external="url"></LI-VIDEO></FONT></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT
size="5"><STRONG><SPAN data-contrast="auto">HOW CAN YOU
PARTICIPATE?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Visit the&nbsp;</SPAN><A
href="https://aka.ms/SeasonsOfServerless" target="_blank" rel="noopener"><SPAN
data-contrast="none">Seasons Of Serverless</SPAN></A><SPAN
data-contrast="auto">&nbsp;website</SPAN><SPAN data-contrast="auto">&nbsp;and
familiarize yourself with the&nbsp;</SPAN><A
href="https://github.com/microsoft/seasons-of-serverless#rules" target="_blank"
rel="noopener"><SPAN data-contrast="none">Rules</SPAN></A><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Revisit the site each week to&nbsp;</SPAN><SPAN
data-contrast="auto">uncover</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><A
href="https://github.com/microsoft/seasons-of-serverless#first-challenge-november-23rd"
target="_blank" rel="noopener"><SPAN data-contrast="none">a new coding
challenge</SPAN></A><SPAN data-contrast="auto">&nbsp;and&nbsp;</SPAN><SPAN
data-contrast="auto">recipe</SPAN><SPAN data-contrast="auto">!</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Solve the challenge within the week – we have a
handy&nbsp;</SPAN><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/RESOURCES.md"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Resources</SPAN></A><SPAN data-contrast="auto">&nbsp;page
to help you!</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Submit your solution as a&nbsp;</SPAN><A
href="https://github.com/microsoft/seasons-of-serverless#submit-your-solution-as-a-custom-ISSUE-to-our-repository"
target="_blank" rel="noopener"><SPAN data-contrast="none">tagged
issue&nbsp;</SPAN><SPAN data-contrast="none">on</SPAN><SPAN
data-contrast="none">&nbsp;the repo</SPAN></A><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Celebrate!! (Qualifying solutions will earn you a spot on
the&nbsp;</SPAN><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/CONTRIBUTORS.md"
target="_blank" rel="noopener"><SPAN data-contrast="none">Contributors Hall of
Fame</SPAN></A><SPAN data-contrast="auto">!)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
</UL> <P><FONT size="4"><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P>&nbsp;</P> <P><FONT size="5"><STRONG><SPAN data-contrast="auto">WHY ARE WE
DOING THIS?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P><FONT size="4"><A href="https://aka.ms/SeasonsOfServerless" target="_blank"
rel="noopener"><SPAN data-contrast="none">#SeasonsOfServerless</SPAN></A><SPAN
data-contrast="none">&nbsp;follows&nbsp;</SPAN><SPAN
data-contrast="none">in</SPAN><SPAN data-contrast="none">&nbsp;t</SPAN><SPAN
data-contrast="none">he footsteps of&nbsp;</SPAN><SPAN
data-contrast="none">our</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">2019</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><A
href="https://dev.to/azure/25-days-of-serverless-content-collection-3baj/comments"
target="_blank" rel="noopener"><SPAN
data-contrast="none">#25DaysOfServerless</SPAN></A><SPAN
data-contrast="none">&nbsp;challenge.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">We
realized&nbsp;</SPAN><SPAN data-contrast="none">that developers not only enjoyed
solving the code puzzles,&nbsp;</SPAN><SPAN data-contrast="none">but
they</SPAN><SPAN data-contrast="none">&nbsp;al</SPAN><SPAN
data-contrast="none">so loved learning about festive customs and cultures around
the world.</SPAN><SPAN data-contrast="none">&nbsp;However, the challenge-a-day
pace is not holiday-friendly. So, this year we’re spacing them out</SPAN><SPAN
data-contrast="none">&nbsp;a little more</SPAN><SPAN
data-contrast="none">&nbsp;–&nbsp;</SPAN><SPAN data-contrast="none">with one
challenge a wee</SPAN><SPAN data-contrast="none">k starting Nov 23
and&nbsp;</SPAN><SPAN data-contrast="none">continuing&nbsp;</SPAN><SPAN
data-contrast="none">into the New Year!&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P><FONT size="4"><SPAN data-contrast="none"><BR /><STRONG>Let’s Do
This!!</STRONG> :flexed_biceps:</img></SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG><FONT color="#FF0000">Check out the first
challenge right now:</FONT> <BR /><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/Nov-23-2020.md"
target="_self">"The Perfect Holiday Turkey"</A> on the<A
href="https://aka.ms/SeasonsOfServerless" target="_self"> Seasons Of Serverless
Website</A>!&nbsp;</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="The
Perfect Turkey - #SeasonsOfServerless" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235566iD57D5BAE1D8E61F2/image-size/large?v=v2&amp;px=999"
role="button" title="banner-1.png" alt="The Perfect Turkey -
#SeasonsOfServerless" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">The Perfect Turkey -
#SeasonsOfServerless</span></span></P> <P>&nbsp;</P> Tue, 24 Nov 2020 18:01:25
GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/join-us-for-seasonsofserverless-our-festive-developer-challenge/ba-p/1901451
nityan 2020-11-24T18:01:25Z The Developer Wish List - #DevDecember
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-developer-wish-list-devdecember/ba-p/1796670
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Blog-images_week0_Devwishlist.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233828iA2DDF9EF2DD69C39/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week0_Devwishlist.png"
alt="Blog-images_week0_Devwishlist.png" /></span></SPAN></P> <P>&nbsp;</P>
<P>For many of us around the world, the holiday season is right around the
corner!</P> <P>&nbsp;</P> <P>You may find yourself struggling what gift to get
for your friends and family. Chances are that they will want some ideas for you
too! My family certainly does, and I have to come up with twice as many ideas
since my birthday is also in December!&nbsp;<img class="lia-deferred-image
lia-image-emoji"
src="https://techcommunity.microsoft.com/html/@0277EEB71C55CDE7DB26DB254BF2F52B/images/emoticons/laugh_40x40.gif"
alt=":lol:" title=":lol:" /></P> <P>&nbsp;</P> <P>This inspired me to reach out
to a few of my techy friends to ask what product would be at the top of their
wish list if they didn't already own it. The result? An awesome mix of geeky
gadgets and some products that are just for fun.</P> <P>&nbsp;</P> <P><FONT
color="#FF0000"><EM>Please note: This list is not an endorsement&nbsp;of any
product nor are we getting compensated for any of this. It's all just for fun!
</EM></FONT></P> <P>&nbsp;</P> <P><FONT size="4"><STRONG>1. A copy of <A
href="https://smile.amazon.com/GitHub-Dummies-Guthals/dp/1119572673/ref=smi_www_rco2_go_smi_4368549507?_encoding=UTF8&amp;dchild=1&amp;ie=UTF8&amp;keywords=github&amp;qid=1605222110&amp;s=books&amp;sr=1-2"
target="_blank" rel="noopener">GitHub for Dummies</A> that'll come in handy
whether you are looking to learn more about GitHub or want a useful gift to
inspire a new developer!</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_0-1606106903865.jpeg" style="width: 233px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235499i5DFA77250258B13C/image-dimensions/233x291?v=v2"
width="233" height="291" role="button" title="livelovegeek_0-1606106903865.jpeg"
alt="livelovegeek_0-1606106903865.jpeg" /></span></P> <P>&nbsp;</P>
<P><STRONG>Review: </STRONG><EM>"GitHub is the largest open source community and
with the knowledge of how to use GitHub, it opens the doors for folks to
contribute to open source projects, collaborate with people on their own
projects, and learn from others. I co-wrote this book with Phil Haack because we
believe that everyone should have the opportunity to join communities that
matter to them. I love that this book not only introduces GitHub features, but
also Git on the command line AND how to continue to engage in communities
outside of GitHub through conferences and events." </EM>– <STRONG>Dr. Sarah
Guthals, <A href="https://twitter.com/drguthals" target="_blank"
rel="noopener">@drguthals</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT
size="4"><STRONG>2. Whether you are new to coding or a seasoned pro, the <A
href="https://www.raspberrypi.org/products/raspberry-pi-400/" target="_blank"
rel="noopener">Raspberry Pi 400</A> is bound to bring out your inner
geek!</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_1-1606106903899.jpeg" style="width: 309px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235501i239AD06CBC989599/image-dimensions/309x214?v=v2"
width="309" height="214" role="button" title="livelovegeek_1-1606106903899.jpeg"
alt="livelovegeek_1-1606106903899.jpeg" /></span></P> <P>&nbsp;</P>
<P><STRONG>Review: </STRONG><EM>"The Raspberry Pi 400 should be on everyone's
wishlist! It's a Raspberry Pi in a keyboard similar to the computers I grew up
with like the ZX Spectrum. Just plug in a mouse and TV and away you go! Another
bonus? It runs VS Code natively!</EM><EM>" </EM>– <STRONG>Jim Bennett, <A
href="https://twitter.com/jimbobbennett" target="_blank"
rel="noopener">@jimbobbennett</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><FONT size="4"><STRONG>3. An <A
href="https://instantpot.com/portfolio-item/duo-gourmet/" target="_blank"
rel="noopener">Instant Pot</A> that essentially cooks your food for you don’t
have to order takeout food for the 6<SUP>th</SUP> time this week
;)</img></STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_2-1606106903912.jpeg" style="width: 276px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235500iFAD09C6065A541B0/image-dimensions/276x276?v=v2"
width="276" height="276" role="button" title="livelovegeek_2-1606106903912.jpeg"
alt="livelovegeek_2-1606106903912.jpeg" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"Working from home can be hard. We may find ourselves working weird
hours and extra to achieve the same level of productivity, and still wanting to
eat healthy and home-cooked food. That's when an Instant Pot may come handy. It
is a pressure-cooker and slow-cooker in one device. I have found it especially
useful during those long days when I have lacked motivation to cook. Just put
your ingredients in the pot and fire-and-forget. I have enjoyed making
vegetables, meat stews and lentils in my Instant Pot." </EM>– <STRONG>Orko
Momin, <A href="https://twitter.com/orktopus" target="_blank"
rel="noopener">@orktopus</A></STRONG></P> <P><STRONG>&nbsp;</STRONG></P>
<P>&nbsp;</P> <P><FONT size="4"><STRONG>4. The <A
href="https://www.hanselman.com/blog/the-perfect-nintendo-switch-travel-set-up-and-recommended-accessories"
target="_blank" rel="noopener">Scott Hanselman recommended ‘Nintendo Switch
Travel Pack’</A> that will get you set up for gaming on the road or on the
couch</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_3-1606106903935.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235502i5D31C2417C074B19/image-size/medium?v=v2&amp;px=400"
role="button" title="livelovegeek_3-1606106903935.jpeg"
alt="livelovegeek_3-1606106903935.jpeg" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"I've had a Nintendo Switch since launch day and let me tell you,
it's joyful. Joyous. It's a little joy device. I love 4k Xboxen and raw power as
much as the next Jane or Joe Gamer, but the Switch just keeps pumping out happy
games. Indie games, Metroidvania games like Axiom Verge, Legend of Zelda: Breath
of the Wild (worth the cost of the system) and now, super Mario Odyssey. Even
Doom and Wolfenstein 2 are coming to the Switch soon! I've travelled already
with my Switch all over. <A
href="https://www.hanselman.com/blog/the-perfect-nintendo-switch-travel-set-up-and-recommended-accessories"
target="_blank" rel="noopener">Here's</A> what I've come up with for my travels
- and my at-home Switch Experience. I owe and use these items personally - and I
vouch for their awesomeness and utility.” </EM>– <STRONG>Scott Hanselman, <A
href="https://twitter.com/shanselman" target="_blank"
rel="noopener">@shanselman</A></STRONG></P> <P><STRONG>&nbsp;</STRONG></P>
<P>&nbsp;</P> <P><FONT size="4"><STRONG>5. An Italian chopping knife - aka a
<EM><A
href="https://www.williams-sonoma.com/products/open-kitchen-by-williams-sonoma-mezzaluna/?sku=9031067"
target="_blank" rel="noopener">Mezzaluna</A></EM> - to cook up something
delicious after a long day of coding. Buon appetito!</STRONG></FONT></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="livelovegeek_4-1606106904111.png"
style="width: 276px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235504iB7CA9939EB870B7B/image-dimensions/276x248?v=v2"
width="276" height="248" role="button" title="livelovegeek_4-1606106904111.png"
alt="livelovegeek_4-1606106904111.png" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"For all the lovers of Italian food, this curiously-shaped knife
(mezzaluna means half-moon) is perfect for chopping vegetables and making that
perfect soffritto for your ragù, meatballs, or my personal favorite, my mom's
famous risotto! Sorry – the recipe is top secret.</EM><EM>” </EM>–
<STRONG>Alessandro Segala, </STRONG><A href="https://twitter.com/ItalyPaleAle"
target="_blank" rel="noopener"><STRONG>@ItalyPaleAle</STRONG></A></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><FONT size="4"><STRONG>6. An <A
href="https://www.elgato.com/en/gaming/stream-deck-xl" target="_blank"
rel="noopener">Elgato Stream Deck</A> to help you start or step-up your
streaming game</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_5-1606106904184.png" style="width: 315px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235503iA8E42DC086C13C03/image-dimensions/315x248?v=v2"
width="315" height="248" role="button" title="livelovegeek_5-1606106904184.png"
alt="livelovegeek_5-1606106904184.png" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"The Stream Deck is a small programmable external keyboard with LCD
buttons that comes with an initial configuration to help live-video streamers
run their shows without having to change applications, type, or move their
mouse. It can help you by automating interactions with Open Broadcaster Software
(OBS), play sounds, launch applications, manage media player applications, send
key strokes, and interact with services like Twitter, Twitch, and YouTube.&nbsp;
There are built-in tools to run a whole series of these actions with a single
button push, and every button can have a custom blog of text or image to
represent its functionality. Developers LOVE the stream deck because it is very
extensible through a WebSocket API using JavaScript, HTML, or even C# to build
plugins that will allow you to create animations, macros, and interactions with
your favorite tools.&nbsp; We’ve seen folks set up buttons to start and stop
applications as well as to automate features in their favorite development
tools.</EM><EM>” </EM>– <STRONG>Jeff Fritz, <A
href="https://twitter.com/csharpfritz" target="_blank"
rel="noopener">@csharpfritz</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><FONT size="4"><STRONG>7. A good ole’ fashion <A
href="https://smile.amazon.com/gp/product/B01M1AIV31" target="_blank"
rel="noopener">fountain pen</A> that’ll make you actually want to write out your
to-do list</STRONG></FONT></P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="livelovegeek_6-1606106904197.png"
style="width: 255px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235505i2EB3BD28378BEECE/image-dimensions/255x246?v=v2"
width="255" height="246" role="button" title="livelovegeek_6-1606106904197.png"
alt="livelovegeek_6-1606106904197.png" /></span></P>
<P><STRONG>Review:</STRONG><EM> “I love the way a solid, old-school, pen compels
me to write things down. Because I like writing with the pen so much, I started
evaluating my days in a <A
href="https://bestself.co/collections/journals-planners/products/self-journal"
target="_blank" rel="noopener">Self Journal</A> even planning what I want to
accomplish the next day. It's been semi-therapeutic as well during our funky
pandemic time where everything seems to roll together oddly: this helps me see
progress and helps with purpose.</EM><EM>” </EM>– <STRONG>Seth Juarez, <A
href="https://twitter.com/sethjuarez" target="_blank"
rel="noopener">@sethjuarez</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT
size="4"><STRONG>8. A <A
href="https://smile.amazon.com/dp/B07PZL6798/ref=cm_sw_r_cp_apa_fabt1_ui2SFbS2RM9XE?pldnSite=1"
target="_blank" rel="noopener">mini handheld fan</A> that is perfect for
maker/DIY projects or even just to cool you down during never-ending
meetings&nbsp;</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_7-1606106904280.png" style="width: 264px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235506iE3FC30F118B5EFB9/image-dimensions/264x237?v=v2"
width="264" height="237" role="button" title="livelovegeek_7-1606106904280.png"
alt="livelovegeek_7-1606106904280.png" /></span></P> <P><BR
/><STRONG>Review:</STRONG><EM> “This fan has been one of my favorite recent
purchases! Not only does it keep me cool/give me wind-swept music video hair
while on streams/Teams meetings, but I use it around the house, too! I recently
put together a maker cabinet (for all my crafts, IoT projects, etc), and this
fan has solved the problem of waiting for paint/glue/soldering projects to dry
and cool. The wrapping stand also makes it easy to clamp onto whatever surface
(computer/desk/DIY station) you need!” </EM>– <STRONG>Chloe Condon, <A
href="https://twitter.com/ChloeCondon" target="_blank"
rel="noopener">@ChloeCondon</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><FONT size="4"><STRONG>9. A <A
href="https://smile.amazon.com/ORORO-Womens-Lightweight-Heated-Battery/dp/B083LLS47W/ref=sr_1_1_sspa"
target="_blank" rel="noopener">heated vest</A> to keep you warm during the cold
months of the year or on your next plane ride (whenever that may be)
</STRONG></FONT></P> <P><BR /><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="livelovegeek_8-1606106904443.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235507iE9A96D9A931563FC/image-size/medium?v=v2&amp;px=400"
role="button" title="livelovegeek_8-1606106904443.png"
alt="livelovegeek_8-1606106904443.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Review:</STRONG><EM> “Back a long, long, time ago - when I was still
traveling by plane on a frequent basis (aka up until January 2020) - I saw a
woman wearing a glowing vest while waiting for her luggage, so naturally, I had
to ask her about it. I wrote down the brand and ordered one for myself while I
waited for my ride. The vest is cute, good quality, and most importantly, warm.
It has three different heat levels and the battery lasts for hours on a single
charge (the battery can also double as a portable USB charger). The vest comes
in men’s and women’s styles and the company makes other heated products too like
sweatshirts, parkas, gloves, and yes, even socks. So, if you are perpetually
cold like me, or know someone who is, I highly recommend checking these out!”
</EM>– Morgan Mitchell Bell, <A href="https://twitter.com/livelovegeek"
target="_blank" rel="noopener">@livelovegeek</A>&nbsp;</P> <P>&nbsp;</P> <P>So,
that's it! What caught your attention? Is there anything that you'd add to this
list? Let us know in the comments below!</P> <P>&nbsp;</P> <P>Oh, and while
you're here, make sure you follow along with <A
href="https://twitter.com/search?q=%23DevDecember&amp;src=typed_query"
target="_blank" rel="noopener">#DevDecember on Twitter</A>. We will be sharing
cool content, fun activities, and more throughout the month of December. If you
want a sneak peek of some of the fun we are planning, check out our <STRONG><A
href="https://aka.ms/DevDecember20Home" target="_self">#DevDecember
homepage</A></STRONG> (plus, we've already posted some of the digital swag
🤫).</P> Mon, 23 Nov 2020 18:35:21 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-developer-wish-list-devdecember/ba-p/1796670
livelovegeek 2020-11-23T18:35:21Z Azure Advocates Weekly Round Up - Web
Developers Beginner Curriculum!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-web-developers-beginner/ba-p/1891137
<H1><A href="https://github.com/microsoft/Web-Dev-For-Beginners"
target="_self">Web Development for Beginners now available!</A></H1>
<P><SPAN>Azure Cloud Advocates at Microsoft are pleased to offer a 12-week,
24-lesson curriculum all about JavaScript, CSS, and HTML basics. Each lesson
includes pre- and post-lesson quizzes, written instructions to complete the
lesson, a solution, an assignment and more. Our project-based pedagogy allows
you to learn while building, a proven way for new skills to 'stick'.</SPAN></P>
<P>&nbsp;</P> <P><SPAN>See more at:&nbsp;<A
href="https://github.com/microsoft/Web-Dev-For-Beginners"
target="_self">https://github.com/microsoft/Web-Dev-For-Beginners</A></SPAN></P>
<P>&nbsp;</P> <P><FONT size="5"><SPAN>Content Round Up</SPAN></FONT></P>
<P>&nbsp;</P> <P><A href="https://youtu.be/pAyG6UYuz-Y" target="_blank"
rel="noopener">Datacenter Migration &amp; Azure Migrate - Sarah Lean</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank"
rel="noopener">Sarah Lean</A></I></STRONG></P> <P>In this Skylines Summer
Session, Sarah Lean, #Microsoft #Cloud Advocate, is interviewed by Richard
Hooper and Gregor Suttie and discusses</P> <P><LI-VIDEO
vid="https://youtu.be/pAyG6UYuz-Y" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-setup-and-run-azure-shell-locally/ba-p/1840528?WT.mc_id=modinfra-8133-pierrer"
target="_blank" rel="noopener">How to setup and run Azure Cloud Shell
locally</A><BR /><STRONG><I><A href="https://twitter.com/WiredCanuck"
target="_blank" rel="noopener">Pierre Roman</A></I></STRONG></P> <P>Scripts
running in Azure Cloud Shell can exceed the 20 minute timeout. Learn how to run
it locally to avoid this restriction.</P> <P>&nbsp;</P> <P><A
href="https://www.codemag.com/Article/2010052/Project-Tye-Creating-Microservices-in-a-.NET-Way"
target="_blank" rel="noopener">CODE Magazine - Project Tye: Creating
Microservices in a .NET Way</A><BR /><STRONG><I><A
href="https://twitter.com/spboyer" target="_blank" rel="noopener">Shayne
Boyer</A></I></STRONG></P> <P>Project Tye: Creating Microservices in a .NET
Way</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-rfc/ba-p/1866550?WT.mc_id=modinfra-8956-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
RFC</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>This week
in our Azure Stack Hub Partner solution video series, I am going to introduce
you to Azure Stack Hub Partner RFC.</P> <P>&nbsp;</P> <P><A
href="https://github.com/microsoft/Web-Dev-For-Beginners" target="_blank"
rel="noopener">microsoft/Web-Dev-For-Beginners</A><BR /><STRONG><I><A
href="https://twitter.com/sinedied" target="_blank" rel="noopener">Yohan
Lasorsa</A></I></STRONG></P> <P>24 Lessons, 12 Weeks, Get Started as a Web
Developer - microsoft/Web-Dev-For-Beginners</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/Q-s6eFPv4QM" target="_blank" rel="noopener">Introduction
to #WebXR with Ayşegül Yönet</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank" rel="noopener">Aysegul
Yonet</A></I></STRONG></P> <P>🥽 WebXR is the latest evolution in the
exploration of virtual and augmented realities. Sounds interesting, right? Dive
into the Basics of WebXR with Ayşegül...</P> <P><LI-VIDEO
vid="https://youtu.be/Q-s6eFPv4QM" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/connect-react-app-microsoft-365/"
target="_blank" rel="noopener">Connect your React app to Microsoft 365</A><BR
/><STRONG><I><A href="https://twitter.com/waldekm" target="_blank"
rel="noopener">Waldek Mastykarz</A></I></STRONG></P> <P>With the Microsoft Graph
Toolkit, you'll be able to connect your app to Microsoft 365 in a matter of
minutes. Here is how you'd do it.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/debug-node-js-app-with-built-in-or-vs-code-debugger-41n4"
target="_blank" rel="noopener">Debug Node.js app with built-in or VS Code
debugger</A><BR /><STRONG><I><A href="https://twitter.com/sinedied"
target="_blank" rel="noopener">Yohan Lasorsa</A></I></STRONG></P> <P>Learn how
to use built-in or VS Code debugger to fix bugs in your Node.js apps more
efficiently with this series of bite-sized videos for beginners.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/microsoft-365/blogs/microsoft-365-pnp-weekly-episode-104/?WT.mc_id=m365-10519-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 104 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I><A
href="https://twitter.com/waldekm" target="_blank" rel="noopener">Waldek
Mastykarz</A></I></STRONG></P> <P>Connect to the latest conferences, trainings,
and blog posts for Microsoft 365, Office client, and SharePoint developers. Join
the Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-build-an-audit-azure-policy-with-multiple-parameters/ba-p/1866062?WT.mc_id=modinfra-10601-socuff"
target="_blank" rel="noopener">How to build an audit Azure Policy with multiple
parameters</A><BR /><STRONG><I><A href="https://twitter.com/SoniaCuff"
target="_blank" rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>Learn how to
build an audit mode Azure Policy, to show resources that don't have all of your
required tags.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/apps-on-azure/azure-functions-via-github-actions-with-no-publish-profile/ba-p/1859300?WT.mc_id=devops-10697-juyoo"
target="_blank" rel="noopener">Azure Functions via GitHub Actions with No
Publish Profile</A><BR /><STRONG><I><A
href="https://twitter.com/justinchronicle" target="_blank" rel="noopener">Justin
Yoo</A></I></STRONG></P> <P>Throughout this series, I'm going to show how an
Azure Functions instance can map APEX domains, add an SSL certificate and update
its public inbound IP</P> <P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-11-06-deploy-to-github-packages-with-github-actions/"
target="_blank" rel="noopener">Deploy to GitHub Packages With GitHub Actions |
LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank" rel="noopener">Aaron Powell</A></I></STRONG></P> <P>Let's look
at how to automate releases to GitHub Packages using GitHub Actions</P>
<P>&nbsp;</P> <P><A href="https://www.youtube.com/watch?v=NNDdk9Y_nPw"
target="_blank" rel="noopener">DevOps and Machine Learning, with Henk
Boelman</A><BR /><STRONG><I><A href="https://twitter.com/hboelman"
target="_blank" rel="noopener">Henk Boelman</A></I></STRONG></P> <P>DevOps and
Machine Learning, with Henk Boelman – Codecamp_The One with DevOps 2020 With
machine learning becoming more and more an engineering problem the ne...</P>
<P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/c-corner-azure-learning-and-microsoft-certification-ama-ft-thomas-maurer/"
target="_blank" rel="noopener">C# Corner Azure Learning and Microsoft
Certification – AMA ft. Thomas Maurer</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank" rel="noopener">Thomas
Maurer</A></I></STRONG></P> <P>Last week I had the honor to be a guest in the C#
Corner Live AMA (Ask Me Anything) about Azure Learning and Microsoft
Certification.</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=0hKU9yB9Ixk" target="_blank"
rel="noopener">Azure Functions - Tartine &amp; Tech</A><BR /><STRONG><I><A
href="https://twitter.com/sinedied" target="_blank" rel="noopener">Yohan
Lasorsa</A></I></STRONG></P> <P>Les Azure functions font partie de la stack
Server less d'Azure. Dans cet épisode, Yohan vous explique en quoi ça consiste
et comment créer votre premier pro...</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/11/11/openapi-extension-to-support-azure-functions-v1/"
target="_blank" rel="noopener">OpenAPI Extension to Support Azure Functions
V1</A><BR /><STRONG><I><A href="https://twitter.com/justinchronicle"
target="_blank" rel="noopener">Justin Yoo</A></I></STRONG></P> <P>This post
shows how Azure Functions v3 runtime works as a proxy to Azure Functions v1
runtime, to enable the Open API extension.</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/AAab79w" target="_blank" rel="noopener">Wayve | Disrupting
Autonomous Driving</A><BR /><STRONG><I><A href="https://twitter.com/adipolak"
target="_blank" rel="noopener">Adi Polak</A></I></STRONG></P> <P>Join us for an
exceptional conversation with Alex Kendall, co-founder, and CEO of Wayve, who
raised more than 40M$ to kickstart the biggest vehicle academy.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://codetraveler.io/2020/11/11/using-immutable-objects-with-sqlite-net/"
target="_blank" rel="noopener">Using Immutable Objects with SQLite-Net</A><BR
/><STRONG><I><A href="https://twitter.com/TheCodeTraveler" target="_blank"
rel="noopener">Brandon Minnick</A></I></STRONG></P> <P>SQLite-NET has become the
most popular database, especially amongst Xamarin developers, but it hasn't
supported Immutable Objects, until now! Thanks to Init-Only Properties in C#9.0,
we can now use Immutable Objects with our SQLite database!</P> <P>&nbsp;</P>
Mon, 16 Nov 2020 15:34:07 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-web-developers-beginner/ba-p/1891137
spboyer 2020-11-16T15:34:07Z DevTest Labs - Shutdown Notifications in Teams Chat
Messages
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-shutdown-notifications-in-teams-chat-messages/ba-p/1874092
<P>Azure DevTest Labs automatic shutdown policies can save money by ensuring
that VMs are shut down every night and do not sit idle indefinitely.&nbsp; On
those occasions when a lab user works late, the shutdown notification settings
allow lab users to be warned when the machine is about to be shutdown.&nbsp; In
this blog post, we will cover how to use the Webhook URL setting for
auto-shutdown notification settings to send a direct chat message to someone
working late and warn them that their machine is about to be turned off.&nbsp;
We will also cover how to create the chat message so the user can delay the
shutdown by an hour or two by clicking a button in the chat message.</P>
<H1>Create Logic App to receive shutdown notifications</H1> <OL> <LI><A
href="https://docs.microsoft.com/en-us/azure/logic-apps/quickstart-create-first-logic-app-workflow#create-your-logic-app"
target="_blank" rel="noopener">Create a Logic App</A>.</LI> <LI>Add <A
href="https://docs.microsoft.com/en-us/azure/connectors/connectors-native-reqres#add-request-trigger"
target="_blank" rel="noopener"><STRONG>When an HTTP request is received
trigger</STRONG></A> to the Logic App.</LI> </OL> <P
class="lia-align-center"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Sagar_Lankala_0-1605041267623.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232756iF13DD1F4D397F4BE/image-size/medium?v=v2&amp;px=400"
role="button" title="Sagar_Lankala_0-1605041267623.png"
alt="Sagar_Lankala_0-1605041267623.png" /></span></P> <P>&nbsp;</P> <P>As seen
in the picture above, this action needs a JSON schema so information in the
request body can be used by actions in the Logic App.&nbsp; Schema for the
request is below for convenience.&nbsp; The <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-auto-shutdown#notifications"
target="_blank" rel="noopener">Configure autoshutdown for lab and compute
virtual machines in Azure DevTest Labs</A> article contains the latest JSON
schema for shutdown notifications.</P> <P>&nbsp;&nbsp;</P> <P>&nbsp; <FONT
color="#000000"><STRONG>{</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "$schema":
"<A href="http://json-schema.org/draft-04/schema#" target="_blank"
rel="noopener">http://json-schema.org/draft-04/schema#</A>",</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"properties": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl120": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":
"string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl60": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"eventType": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"guid": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"labName": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"owner": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"resourceGroupName": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"skipUrl": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"subscriptionId": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"text": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmName": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmUrl": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"minutesUntilShutdown": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "required":
[</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"skipUrl",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl60",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl120",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmName",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"guid",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"owner",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"eventType",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"text",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"subscriptionId",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"resourceGroupName",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;"labName",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmUrl",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"minutesUntilShutdown"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
],</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "type":
"object"</STRONG></FONT></P> <P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;
}</STRONG></FONT></P> <P>&nbsp;</P> <OL start="3"> <LI>Add a <A
href="https://docs.microsoft.com/en-us/connectors/teams/#post-your-own-adaptive-card-as-the-flow-bot-to-a-user"
target="_blank" rel="noopener"><STRONG>Post your own adaptive card as the Flow
bot to a user (preview)</STRONG></A> action to the Logic App.&nbsp; This action
will send a chat message from the Flow bot to a specific user.&nbsp; This action
also allows &nbsp;an <A href="https://adaptivecards.io/" target="_blank"
rel="noopener">adaptive card</A> to be sent to a user, which means we can add
buttons to the message.&nbsp; This action does require a connection of a
Microsoft Account.</LI> </OL> <P>&nbsp;</P> <P>The <STRONG>recipient</STRONG> of
the message should be the owner of the VM.&nbsp; Get the owner’s email by
searching for the ‘owner’ dynamic content from the HTTP request trigger.</P>
<P>&nbsp;</P> <P>The message in this action will be JSON that uses the Adaptive
Card JSON schema.&nbsp; For our example, we have a simple message to the user
telling them that their VM will be shutdown soon and buttons to allow the user
to skip the shutdown, delay the shutdown 1 hour or delay the shutdown 2
hours.</P> <P>&nbsp;</P> <P><FONT color="#000000"><STRONG>{</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"$schema":&nbsp;"<A
href="http://adaptivecards.io/schemas/adaptive-card.json" target="_blank"
rel="noopener">http://adaptivecards.io/schemas/adaptive-card.json</A>",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"AdaptiveCard",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"version":&nbsp;"1.0",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"speak":&nbsp;"Your&nbsp;virtual&nbsp;machine&nbsp;is&nbsp;shutting&nbsp;down&nbsp;soon.&nbsp;&nbsp;Do&nbsp;you&nbsp;want&nbsp;to&nbsp;delay&nbsp;the&nbsp;shutdown?",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"body":&nbsp;[</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"TextBlock",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"text":&nbsp;"Virtual&nbsp;Machine&nbsp;Auto-Shutdown",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;"large",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"weight":&nbsp;"bolder"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"TextBlock",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"text":&nbsp;"The&nbsp;virtual&nbsp;machine&nbsp;@{triggerBody()['vmName']}&nbsp;is&nbsp;scheduled&nbsp;for&nbsp;shutdown&nbsp;in&nbsp;@{triggerBody()?['minutesUntilShutdown']}&nbsp;minutes.",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"wrap":&nbsp;"true"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;],</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"actions":&nbsp;[</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"Action.OpenUrl",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"title":&nbsp;"Delay&nbsp;1&nbsp;hour",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url":&nbsp;"@{triggerBody()['delayUrl60']}"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"Action.OpenUrl",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"title":&nbsp;"Delay&nbsp;2&nbsp;hours",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url":&nbsp;"@{triggerBody()['delayUrl120']}"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"Action.OpenUrl",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"title":&nbsp;"Skip&nbsp;shutdown",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url":&nbsp;"@{triggerBody()['skipUrl']}"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;]</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>}</STRONG></FONT></P> <P>&nbsp;</P> <P>The
‘@triggerBody()’ statements tell the LogicApp to get the value from the HTTP
request trigger we created in the previous step.</P> <P>&nbsp;</P> <P>Lastly,
set the <STRONG>IsAlert</STRONG> setting in the action to ‘Yes’.&nbsp; This will
cause the user to be notified in their Activity stream when the message is
sent.</P> <P>&nbsp;</P> <P>Action should look like the following picture.</P> <P
class="lia-align-center"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Sagar_Lankala_4-1605041410636.png"
style="width: 476px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232759iF4769805A7DF2FB9/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_4-1605041410636.png"
alt="Sagar_Lankala_4-1605041410636.png" /></span></P> <P>&nbsp;</P> <OL
start="4"> <LI>Add a HTTP <STRONG>Response</STRONG> action.&nbsp; Set the status
code to 200 to indicate everything was successful.</LI> </OL> <P>Now that we
have our Logic App that can handle sending a message to a user, it’s time to
setup the DevTest Lab to send notifications to our Logic App.&nbsp; We will need
the url to call the Logic App.&nbsp; To get the url, expand the <STRONG>When an
HTTP request is received</STRONG> trigger step and copy the <STRONG>HTTP POST
URL</STRONG> property.</P> <H1>Configure lab auto-shutdown settings</H1>
<P>&nbsp;</P> <P>Auto-shutdown settings are configured at either the lab level
or individual lab VM level.&nbsp; Individual settings for auto-shutdown
notifications are only allowed if the lab owner sets the auto-shutdown policy to
allow individual users to override the lab auto-shutdown settings.&nbsp; See <A
href="https://docs.microsoft.com/azure/devtest-labs/devtest-lab-auto-shutdown"
target="_blank" rel="noopener">Configure auto-shutdown for lab in Azure DevTest
Labs</A> for further details.</P> <P>Let’s cover how to use the Logic App we
created above by configuring auto-shutdown settings at a lab level.</P> <OL>
<LI>On the home page for your lab, select Configuration and policies.</LI>
<LI>Select <STRONG>Auto-shutdown</STRONG> in the <STRONG>Schedules</STRONG>
section of the left menu.</LI> <LI>Select&nbsp;<STRONG>On</STRONG>&nbsp;to
enable auto-shutdown policy.</LI> <LI>For <STRONG>Webhook URL</STRONG>, paste
the url for the Logic App we created earlier.</LI> <LI>Select&nbsp;Save.</LI>
</OL> <P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_2-1605041267648.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232757i75C24C3EAC58D968/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_2-1605041267648.png"
alt="Sagar_Lankala_2-1605041267648.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <H1>Conclusion</H1> <P>That’s all we need to do!&nbsp; Next time a
lab VM in our lab is about to be shutdown, the lab VM owner will be sent a chat
message in Teams.&nbsp; The message will allow the lab VM owner to quickly delay
shutdown using the action buttons on the bottom of the message.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_3-1605041267653.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232758i79803ECA42DCC3B6/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_3-1605041267653.png"
alt="Sagar_Lankala_3-1605041267653.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> Fri, 13 Nov 2020 18:06:05 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-shutdown-notifications-in-teams-chat-messages/ba-p/1874092
Sagar_Lankala 2020-11-13T18:06:05Z Azure Advocates Weekly Round Up - .NET Learn
Challenge, MS Exam Prep help and more!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-net-learn-challenge-ms-exam-prep/ba-p/1867304
<P>It's November, .NET November that is. Check out the .NET Learn Challenge get
over 35 hours of FREE Learning. More Exam help posts from the team this week
amongst many other great code samples, blog posts and videos!</P> <P>&nbsp;</P>
<P><A href="https://youtu.be/pAyG6UYuz-Y" target="_blank"
rel="noopener">Datacenter Migration &amp; Azure Migrate - Sarah Lean</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>In this Skylines Summer Session, Sarah Lean,
#Microsoft #Cloud Advocate, is interviewed by Richard Hooper and Gregor Suttie
and discusses</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/pAyG6UYuz-Y"
align="center" size="custom" width="661" height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://www.twitch.tv/videos/793735988" target="_blank"
rel="noopener">Shayne sits down with LayalCodesIt on Twitch</A><BR
/><STRONG><I><A href="https://twitter.com/spboyer" target="_blank">Shayne
Boyer</A></I></STRONG></P> <P>Hang out with Shayne on Layla's channel this week
to hear more about the .NET Learn Challenge and working within Developer
Relations at Microsoft.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/apps-on-azure/how-to-create-a-no-code-ai-app-with-azure-cognitive-services-and/ba-p/1847264?WT.mc_id=aiml-8438-ayyonet"
target="_blank" rel="noopener">How to Create a No Code AI App with Azure
Cognitive Services and Power Apps</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank">Aysegul
Yonet</A></I></STRONG></P> <P>You might have an idea for an application using AI
and not have anyone to build it. You might be a programmer and want to try out
your ideas and Azure</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-telkomtelstra/ba-p/1837289?WT.mc_id=modinfra-8960-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
telkomtelstra</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank">Thomas Maurer</A></I></STRONG></P> <P>telkomtelstra is a Service
Provider working with Enterprise customers across Indonesia. Check out their
journey with Azure Stack Hub!</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/sustainable-software/vlc-energy-optimization-with-gpu/?WT.mc_id=green-8990-ashussai"
target="_blank" rel="noopener">VLC Energy Optimization With GPU | Sustainable
Software</A><BR /><STRONG><I><A href="https://twitter.com/jawache"
target="_blank">Asim Hussain</A></I></STRONG></P> <P>For the past few years,
sustainable software engineering has arisen as one of the major topics in the
daily discussions I have with software developers. Due to the advancements in
technology, as well as the increasing awareness we share on climate change and
the overall impact of tech on the environment,</P> <P>&nbsp;</P> <P><A
href="https://github.com/microsoft/iot-curriculum/tree/main/labs/iot/environment-monitor"
target="_blank" rel="noopener">microsoft/iot-curriculum</A><BR /><STRONG><I><A
href="https://twitter.com/jimbobbennett" target="_blank">Jim
Bennett</A></I></STRONG></P> <P>Hands on labs and content for students and
educators to learn and teach the Internet of Things at schools, universities,
coding clubs, community colleges and bootcamps - microsoft/iot-curriculum</P>
<P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/what-is-azure-defender/ba-p/1843528?WT.mc_id=modinfra-9866-socuff"
target="_blank" rel="noopener">What is Azure Defender?</A><BR /><STRONG><I><A
href="https://twitter.com/SoniaCuff" target="_blank">Sonia
Cuff</A></I></STRONG></P> <P>Learn about the improved experience for managing
security across hybrid and multi-cloud environments with the Azure Defender XDR
product.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/all-you-need-to-know-about-microsoft-exams/ba-p/1794460?WT.mc_id=modinfra-10046-salean"
target="_blank" rel="noopener">All you need to know about Microsoft Exams</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Taking any exam can be a stressful experience which
requires a lot of preparation and planning.&nbsp; Let's look at the process for
studying, booking and sitting a Microsoft exam.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/Q-s6eFPv4QM" target="_blank" rel="noopener">Introduction
to #WebXR with Ayşegül Yönet</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank">Aysegul
Yonet</A></I></STRONG></P> <P>🥽 WebXR is the latest evolution in the
exploration of virtual and augmented realities. Sounds interesting, right? Dive
into the Basics of WebXR with Ayşegül.</P> <P><LI-VIDEO
vid="https://youtu.be/Q-s6eFPv4QM" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/build-a-web-api-with-node-js-and-express-16fk"
target="_blank" rel="noopener">Build a web API with Node.js and Express</A><BR
/><STRONG><I><A href="https://twitter.com/sinedied" target="_blank">Yohan
Lasorsa</A></I></STRONG></P> <P>Learn how to use Node.js and Express to create a
RESTful web API with this series of bite-sized videos for beginners.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/sharepoint/blogs/microsoft-365-pnp-weekly-episode-103/?WT.mc_id=m365-10520-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 103 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I>Waldek
Mastykarz</I></STRONG></P> <P>Connect to the latest conferences, trainings, and
blog posts for Microsoft 365, Office client, and SharePoint developers. Join the
Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/dotnet/net-learning-challenge-4008" target="_blank"
rel="noopener">.NET Learning Challenge!</A><BR /><STRONG><I><A
href="https://twitter.com/spboyer" target="_blank">Shayne
Boyer</A></I></STRONG></P> <P>Compete, Learn, and Develop Skills <A
href="https://aka.ms/dotnetskills"
target="_self">https://aka.ms/dotnetskills</A> November 1, 2020 - November
30th.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/how-to-get-started-learning-microsoft-azure-and-cloud-computing/"
target="_blank" rel="noopener">How to get started learning Microsoft Azure and
Cloud Computing</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank">Thomas Maurer</A></I></STRONG></P> <P>Here is how to get started
with learning Microsoft Azure and Cloud Computing. Check out this blog and learn
how to get started with Azure!</P> <P>&nbsp;</P> <P><STRONG><I><A
href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Interview with Sarah Lean, Senior Cloud Advocate at
Microsoft</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/experts-live-switzerland-2020-azure-hybrid-learn-about-hybrid-cloud-management/"
target="_blank" rel="noopener">Experts Live Switzerland 2020: Azure Hybrid –
Learn about Hybrid Cloud Management</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank">Thomas
Maurer</A></I></STRONG></P> <P>Now the recording of my session: "Azure Hybrid -
Learn about Hybrid Cloud Management" is available! With an overview on Microsoft
Azure Arc!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/internet-of-things/az-220-iot-developer-certification-study-guide/ba-p/1854393?WT.mc_id=iot-10684-pdecarlo"
target="_blank" rel="noopener">AZ-220 IoT Developer Certification Study
Guide</A><BR /><STRONG><I><A href="https://twitter.com/pjdecarlo"
target="_blank">Paul DeCarlo</A></I></STRONG></P> <P>Microsoft offers an
official IoT Developer Specialty Certification which requires passing the AZ-220
Certification Exam .&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/playlist?list=PLGi0uFHAUvEGIXv0dm93Dca84FT3EXGY0"
target="_blank" rel="noopener">Environment Monitor Lab - Using a Raspberry
Pi</A><BR /><STRONG><I><A href="https://twitter.com/jimbobbennett"
target="_blank">Jim Bennett</A></I></STRONG></P> <P>A walkthrough of the
Environment Monitor IoT lab available at <A
href="https://aka.ms/iot-curriculum/env-monitor"
target="_blank">https://aka.ms/iot-curriculum/env-monitor</A> using a Raspberry
Pi and a Grove Pi+ kit.</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/11/05/deploying-azure-functions-via-github-actions-without-publish-profile/"
target="_blank" rel="noopener">Deploying Azure Functions via GitHub Actions
without Publish Profile</A><BR /><STRONG><I><A
href="https://twitter.com/justinchronicle" target="_blank">Justin
Yoo</A></I></STRONG></P> <P>This post shows how to deploy Azure Functions app
via GitHub Actions, without having to know the publish profile.</P>
<P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-11-05-building-a-video-chat-app-part-3-displaying-video/"
target="_blank" rel="noopener">Building a Video Chat App, Part 3 - Displaying
Video | LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank">Aaron Powell</A></I></STRONG></P> <P>We've got access to the
camera, now to display the feed</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=FHsMf_S7Tds" target="_blank"
rel="noopener">Azure Thursday - 5 November 2020</A><BR /><STRONG><I><A
href="https://twitter.com/hboelman" target="_blank">Henk
Boelman</A></I></STRONG></P> <P>View the schedule on: <A
href="https://www.azurethursday.com"
target="_self">https://www.azurethursday.com</A></P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/download-user-group-profile-picture-microsoft-graph-js-sdk/"
target="_blank" rel="noopener">Quick tip: download user or group profile picture
using Microsoft Graph JS SDK</A><BR /><STRONG><I>Waldek
Mastykarz</I></STRONG></P> <P>When building your application on Microsoft 365
you might need to download the profile picture of a user or group. Here is how
to do it using the Microsoft Graph SDK.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/maudlv/evenements-en-ligne-intelligence-artificielle-machine-learning-et-azure-4jb6"
target="_blank" rel="noopener">Evénements en ligne : Intelligence Artificielle,
Machine Learning et Azure</A><BR /><STRONG><I>Maud Levy</I></STRONG></P> <P>Pour
le mois de novembre, Microsoft propose plusieurs conférences en ligne en
français autour du Mach...</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/McXNicDXWkM" target="_blank" rel="noopener">Dataminds
Connect - Taking Models To The Next Level With Azure Machine Learning</A><BR
/><STRONG><I><A href="https://twitter.com/hboelman" target="_blank">Henk
Boelman</A></I></STRONG></P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://youtu.be/McXNicDXWkM" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <!-- Add a placeholder for the
Twitch embed --><!-- Load the Twitch embed script --><!-- Create a Twitch.Player
object. This will render within the placeholder div --> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/c-corner-azure-learning-and-microsoft-certification-ama-ft-thomas-maurer/"
target="_blank" rel="noopener">C# Corner Azure Learning and Microsoft
Certification – AMA ft. Thomas Maurer</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank">Thomas
Maurer</A></I></STRONG></P> <P>Last week I had the honor to be a guest in the C#
Corner Live AMA (Ask Me Anything) about Azure Learning and Microsoft
Certification.</P> <P>&nbsp;</P> Mon, 09 Nov 2020 15:23:03 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-net-learn-challenge-ms-exam-prep/ba-p/1867304
spboyer 2020-11-09T15:23:03Z Using IoT and Azure to Help with Family Chores
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-iot-and-azure-to-help-with-family-chores/ba-p/1809444
<H3>Intro&nbsp;</H3> <P>&nbsp;</P> <P>At Microsoft Ignite 2020, Scott Hanselman
showcased how he is using Azure, IoT (Internet of Things), and Developer Tools
to help his family manage household chores.&nbsp;</P> <P>&nbsp;</P> <H3>The
Problem</H3> <P>&nbsp;</P> <P>Scott, like more and more people who are working
from home, realized that there had to be a better way to stay in front of the
need to do additional chores around his home. With everyone at home, things like
dishes, garbage, and general chores add up fast. He wanted to be able to see at
a glance the current list of chores that needed to be completed, real-time
status of chores that can change quickly over time, and to be notified when
certain chores were needed to be complete, for instance garbage.</P>
<P>&nbsp;</P> <H3>The Solution</H3> <P>&nbsp;</P> <P>Scott already leverages
a&nbsp;<A href="https://dakboard.com/site" target="_blank"
rel="noopener">DAKboard</A>, which allows customization of a display via a
website. On <A
href="https://www.hanselman.com/blog/how-to-build-a-wall-mounted-family-calendar-and-dashboard-with-a-raspberry-pi-and-cheap-monitor"
target="_blank" rel="noopener">his DAKboard</A>, Scott can put his work/personal
calendar, family photos and the weather all on a monitor that sits in his
kitchen. He wanted to be able to add a "heatmap" of sorts to his DAKboard that
would show parts of the house that notable chores are (garbage cans for
instance) and what the "status" of them are in real-time. This way, if he sees
that a chore needs to be done, the family can respond.&nbsp;</P> <P>&nbsp;</P>
<P>There are a few things at play here.&nbsp;</P> <P>&nbsp;</P> <UL>
<LI><STRONG>Sensors: </STRONG>Most of the chores rely on items that are not
"smart", so external sensors and an IoT solution will be needed.</LI>
<LI><STRONG>Web:</STRONG>&nbsp;The heatmap requires real-time updates, so a web
solution that offers such will be needed.</LI>
<LI><STRONG>Notifications:</STRONG>&nbsp;Finally, he wants to be notified when
the threshold is met of a certain chore instantly, so a communication mechanism
is needed.</LI> </UL> <P>&nbsp;</P> <P>With the above requirements, we can start
to build a solution. The solution will require an IoT device that will poll the
status of a particular chore. The device will update a datastore via a service
and the heatmap will be a web application that will sync with the value of the
datastore in real time. With that, we landed on the below solution
architecture.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Picture1.png" style="width: 936px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/231521iF77D129E628EDA49/image-size/large?v=v2&amp;px=999"
role="button" title="Picture1.png" alt="Picture1.png" /></span></P>
<P>&nbsp;</P> <P>To build the solution, we knew that an IoT device would be
needed to monitor the status of the chore. We decided on a&nbsp;<A
href="https://www.raspberrypi.org/" target="_blank" rel="noopener">Raspberry
Pi</A>&nbsp;with a connected . In the case of garbage status, the sensor was
attached to the inside of the lid of the garbage can. The sensor could then
check the level of the garbage in the can and update the chore datastore via an
Azure Function written in Node.js. When the datastore is updated, another Azure
Function, written in C#, is triggered that compares the current level to the
threshold, and if it is met, a notification is sent.</P> <P>&nbsp;</P> <P>For
the notification, we relied on recently announced&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/communication-services/overview"
target="_blank" rel="noopener">Azure Communication Services</A><U><SPAN> to send
an SMS</SPAN></U>. When the notification function determines a message needs to
be sent, it will leverage a <A
href="https://docs.microsoft.com/en-us/azure/communication-services/quickstarts/telephony-sms/get-phone-number"
target="_blank" rel="noopener">phone number</A> obtained via Azure Communication
Services and the chore assignee will get a message from that number. Azure
Communication Services is configured via the Azure Portal, more information can
be seen at the&nbsp;<A
href="https://github.com/microsoft/ChoresIoT#deployment-scenarios"
target="_blank" rel="noopener">GitHub repository for the ChoresIOT solution</A>.
Working against Azure Communication Services is seamless, as it is included in
the already existing&nbsp;<A href="https://azure.github.io/azure-sdk/"
target="_blank" rel="noopener">Azure SDK</A>&nbsp;(software development kit).
There is also an <A
href="https://docs.microsoft.com/en-us/azure/communication-services/quickstarts/telephony-sms/logic-app"
target="_blank" rel="noopener">Azure Logic App&nbsp;connector for Azure
Communication Services</A> that you can leverage.</P> <P>&nbsp;</P> <P>For the
heatmap UI, we need to leverage a web technology that allows real-time
communication with the function that manages the datastore. The technology that
was decided on was&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-overview"
target="_blank" rel="noopener">Azure SignalR Service</A>. The complete
application leverages&nbsp;<A
href="https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.1#blazor-webassembly"
target="_blank" rel="noopener">ASP.NET Core Blazor WebAssembly</A>&nbsp;in .NET
5 configured to integrate with Azure SignalR Service. Because we are leveraging
<A href="https://webassembly.org/" target="_self">WebAssembly</A>, we are able
to deploy the application to any host since a backend server is not required. We
deployed the web application to&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/static-web-apps/overview"
target="_blank" rel="noopener">Azure Static Web Apps</A>, a new service in Azure
where you can host applications that do not require a connected backend server.
Finally, since the solution is using Azure SignalR Service, when the chore
datastore is updated, the heatmap will update automatically whenever the
threshold for a particular chore is met.</P> <P>&nbsp;</P> <P>Now that the
solution is complete, whenever a chore status is updated via the Raspberry Pi,
the datastore will be updated via the Azure Function. Once the datastore is
updated, the other Azure Function will check the status the chore threshold and
send an SMS if needed. Finally, the heatmap will be updated in real-time. This
end to end experience can be seen below during the Microsoft Ignite 2020
session.</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://youtu.be/0oLZPgbKvmc?t=1158" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/0oLZPgbKvmc/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>As you can see in the video,
when Scott puts trash into the garbage, the heatmap automatically updates and he
receives an SMS message, powered by Azure Communication Services.&nbsp;</P>
<P>&nbsp;</P> <H3>What's Next?</H3> <P>&nbsp;</P> <P>The <A
href="https://github.com/microsoft/ChoresIoT" target="_self">ChoresIoT GitHub
Repository</A> lists out all the parts needed to setup a similar solution at
home. Take a look at the source code and contribute or ask questions if
interested. For more information on <A
href="https://azure.microsoft.com/en-us/services/communication-services/"
target="_self">Azure Communication Services</A> and how to
enable&nbsp;telephony-over-IP communications features to your applications, be
sure to check out the&nbsp;<A
href="https://docs.microsoft.com/azure/communication-services/overview"
target="_blank" rel="noopener">documentation</A>.</P> <P>&nbsp;</P> <P>Also be
sure to check out the <A
href="https://docs.microsoft.com/en-us/azure/cost-management-billing/manage/create-free-services"
target="_blank" rel="noopener">free services</A>&nbsp;that you can create in
Azure today.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> Wed, 04 Nov 2020 20:33:33 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-iot-and-azure-to-help-with-family-chores/ba-p/1809444
Isaac Levin 2020-11-04T20:33:33Z Azure Advocate Weekly Round Up - DNS + SSL &
GitHub Actions? HealthChecks for VMs? Sounds Scary!!!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-dns-ssl-amp-github-actions/ba-p/1837854
<P><A href="https://www.xamarinpodcast.com/80" target="_blank"
rel="noopener">The Xamarin Podcast Episode 80: Seeing AI</A><BR /><STRONG><I><A
href="https://twitter.com/codemillmatt" target="_blank">Matt
Soucoup</A></I></STRONG></P> <P>Seeing AI is an app for iOS that narrates the
world around you. And it's built with Xamarin and Azure. In this episode of the
Xamarin Podcast, Matt talks to the folks behind Seeing AI.</P> <P>&nbsp;</P>
<P><A
href="https://devblogs.microsoft.com/sustainable-software/the-carbon-footprint-of-ai/?WT.mc_id=green-8966-ashussai"
target="_blank" rel="noopener">The Carbon Footprint Of AI | Sustainable
Software</A><BR /><STRONG><I><A href="https://twitter.com/jawache"
target="_blank">Asim Hussain</A></I></STRONG></P> <P>The carbon footprint of AI
is increasing exponentially. Bigger models requiring ever more data contribute
toward 'RedAI' - we need a new approach</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/OIKV_jc3yec" target="_blank" rel="noopener">Collect data
from a Windows computer in a hybrid environment with Azure Monitor</A><BR
/><STRONG><I><A href="https://twitter.com/ThomasMaurer" target="_blank">Thomas
Maurer</A></I></STRONG></P> <P>Azure Monitor can collect data directly from your
physical or virtual Windows computers in your environment into a Log Analytics
workspace for detailed analy...</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=EMceqFUDh4M" target="_blank"
rel="noopener">Microsoft 365 &amp; SharePoint PnP Weekly – Episode 102</A><BR
/><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>In this weekly discussion of
latest news and topics around Microsoft 365, hosts – Vesa Juvonen (Microsoft) |
@vesajuvonen, Waldek Mastykarz (Microsoft)&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/first-look-at-azure-automanage/ba-p/1787819?WT.mc_id=modinfra-9950-salean"
target="_blank" rel="noopener">First Look at Azure Automanage</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Let's take a first look at the new service, Azure
Automanage that was launched at Microsoft Ignite 2020.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/step-by-step-azure-resource-health-alert-into-microsoft-teams/ba-p/1817484?WT.mc_id=modinfra-10077-socuff"
target="_blank" rel="noopener">Step-by-Step: Azure Resource Health alert into
Microsoft Teams</A><BR /><STRONG><I><A href="https://twitter.com/SoniaCuff"
target="_blank">Sonia Cuff</A></I></STRONG></P> <P>Step-by-step create an Azure
resource health alert for an unavailable virtual machine and post a message into
Microsoft Teams.</P> <P>&nbsp;</P> <P><A
href="https://24x7itconnection.com/2020/10/29/microsoft-endpoint-manager-for-modern-management-in-2020/"
target="_blank" rel="noopener">Microsoft Endpoint Manager for Modern Management
in 2020</A><BR /><STRONG><I><A href="https://twitter.com/ExchangeGoddess"
target="_blank">Phoummala Schmitt</A></I></STRONG></P> <P>This year more than
ever it’s important to be able to secure and manage devices. Microsoft Endpoint
Manager is a great option.</P> <P>&nbsp;</P> <P><A
href="https://www.techielass.com/teams-meeting-recordings" target="_blank"
rel="noopener">Microsoft Teams Meeting Recordings</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Techie Lass Blog - Technical…Practical…From A
Scottish Lass</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/manage-sharepoint-and-microsoft-teams-with-powershell-core/ba-p/1792229?WT.mc_id=modinfra-10259-abartolo"
target="_blank" rel="noopener">How to Manage SharePoint and Microsoft Teams with
PowerShell Core</A><BR /><STRONG><I><A href="https://twitter.com/wirelesslife"
target="_blank">Anthony Bartolo</A></I></STRONG></P> <P>If you're addicted with
SharePoint, you might be glad to know that managing SharePoint is now possible
with PowerShell Core.</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/6fhpyi1oJMk" target="_blank" rel="noopener">Azure
Security Centre - Asset Inventory</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>In this "Azure at a Glance" video let's take a look
at what the Asset Inventory feature with Azure Security Centre can offer you.
For more information check ...</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/10/28/updating-azure-dns-and-ssl-certificate-on-azure-functions-via-github-actions/"
target="_blank" rel="noopener">Updating Azure DNS and SSL Certificate on Azure
Functions via GitHub Actions</A><BR /><STRONG><I><A
href="https://twitter.com/justinchronicle" target="_blank">Justin
Yoo</A></I></STRONG></P> <P>This post shows how to automatically update A record
on Azure DNS when the inbound IP address of Azure Functions instance is updated,
and reflect the change to the SSL certificate through GitHub Actions.</P>
<P>&nbsp;</P> <P><A
href="https://www.jimbobbennett.io/run-visual-studio-code-on-a-raspberry-pi/"
target="_blank" rel="noopener">Run Visual Studio Code on a Raspberry Pi</A><BR
/><STRONG><I><A href="https://twitter.com/jimbobbennett" target="_blank">Jim
Bennett</A></I></STRONG></P> <P>It's finally here! An official supported version
of VS Code that runs on a Raspberry Pi! ICYMI: VS Code now officially supports
@Raspberry_Pi too!&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=3DgpVwnQ3V4" target="_blank"
rel="noopener">Demo JBoss EAP VMSS Quickstart</A><BR /><STRONG><I><A
href="https://twitter.com/skriemhild" target="_blank">Sandra
Ahlgrimm</A></I></STRONG></P> <P>Theresa Nguyen, Senior Product Manager at
Microsoft showcases JBoss EAP on Azure VMSS&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Stack-Hub-Partner-Solutions-Series-MyCloudDoor?WT.mc_id=modinfra-10338-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
MyCloudDoor</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank">Thomas Maurer</A></I></STRONG></P> <P>MyCloudDoor is an Azure
Stack Hub partner and Preferred SI that focused on managed services and creating
value for their customers throughout the world.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/5CZT8-7eFkg" target="_blank" rel="noopener">Az Update
Show S01E26</A><BR /><STRONG><I><A href="https://twitter.com/WiredCanuck"
target="_blank">Pierre Roman</A></I></STRONG></P> <P>Episode 26 of the Az Update
Show. Another plethora of news stories to share on this week's AzUpdate show.
News includes: What’s new for IT Pros in Windows 10...</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/get-your-to-do-tasks-every-morning-on-microsoft-teams-using-azure-logic-apps-3ci1/?WT.mc_M365-10421-aycabas"
target="_blank" rel="noopener">Get your To-Do tasks every morning on Microsoft
Teams using Azure Logic Apps</A><BR /><STRONG><I><A
href="https://twitter.com/aycabs" target="_blank">Ayca Bas</A></I></STRONG></P>
<P>I am super excited since Microsoft Graph To Do APIs are introduced at
Microsoft Build 2020.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://dev.to/sinedied/work-with-files-and-directories-in-a-node-js-app-4kh8"
target="_blank" rel="noopener">Work with files and directories in a Node.js
app</A><BR /><STRONG><I><A href="https://twitter.com/sinedied"
target="_blank">Yohan Lasorsa</A></I></STRONG></P> <P>Learn how to use built-in
modules to work with files and directories in a Node.js app with this series of
bite-sized videos for beginners. Tagged with webdev, beginners, javascript,
node.</P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/move-microsoft-teams-without-losing-content/"
target="_blank" rel="noopener">Move to Microsoft Teams without losing your
content</A><BR /><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>With this new
Microsoft Graph API you can move to Microsoft Teams and take your data with
you!</P> <P>&nbsp;</P> Fri, 30 Oct 2020 15:43:41 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-dns-ssl-amp-github-actions/ba-p/1837854
spboyer 2020-10-30T15:43:41Z Developers + Nurses = NurseHack4Health
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-nurses-nursehack4health/ba-p/1820356
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="NurseHack4Health.png" style="width: 444px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232950iF82DEF17B3243D04/image-size/large?v=v2&amp;px=999"
role="button" title="NurseHack4Health.png" alt="NurseHack4Health.png"
/></span></P> <P>Microsoft is a proud sponsor of
<STRONG>NurseHack4Health</STRONG> - a 3 day virtual hackathon from <STRONG>Nov.
13-15, 2020</STRONG> to leverage technology and help improve access to reliable,
trusted information. This hackathon is made possible by the collaboration
between Microsoft, Johnson &amp; Johnson, SONSIEL, and devup. Read below for
more details, and <STRONG>register at</STRONG> <A
href="https://www.nursehack4health.org/" target="_blank"
rel="noopener">https://www.nursehack4health.org/</A> <STRONG>by Nov. 9 to
reserve a spot</STRONG>.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>The
challenge:</STRONG> Information about the COVID-19 pandemic is rapidly changing,
and gaining access to reliable public health information has been challenging,
highlighting a need for improved communication and trustworthy
resources.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>The hackathon:</STRONG> This event
presents a rare opportunity to bring together individuals with a diverse set of
ideas and skills - nurses, other healthcare professionals, engineers, IT experts
and innovators - to problem-solve in a supporting, inspiring and innovative
environment. This is an open source hackathon being hosted on Microsoft Teams,
and using GitHub for solution repositories.</P> <P>&nbsp;</P> <P><STRONG>The
participant's experience:</STRONG> Participants will focus on how technology can
be leveraged to create better outcomes for all in the most pressing areas of
education and communication. Central ideas of focus may include:</P> <UL>
<LI>Ensuring the health and safety of students and teachers in the
classroom</LI> <LI>Relaying to the public the importance of vaccines</LI>
<LI>Breaking down racial disparities and social inequities</LI> <LI>Sharing best
practices across healthcare providers and facilities</LI> <LI>And more</LI>
</UL> <P>Participants will also:</P> <UL> <LI>Work alongside Microsoft and
architects from the dev community</LI> <LI>Bring existing skills around
HTML/JavaScript, ASP.NET, Java, SQL or NoSQL</LI> <LI>Have access to free Azure
services, Power BI, and Power Apps during the duration of the hackathon</LI>
</UL> <P>&nbsp;</P> <P><STRONG>Pre-hackathon training:</STRONG>&nbsp;The
hackathon is supported by Microsoft mentors to help answer technical questions.
To get a jump start on GitHub, Teams, Power Apps, and Power Virtual Agents bots,
join the <A href="https://aka.ms/nursehack4health/cscreg" target="_self">Cloud
Skills Challenge</A> for curated self-learning modules covering these topics.
Track your progress against others on the <A
href="https://aka.ms/nursehack4health/cscleader"
target="_self">leaderboard</A>.</P> <P>&nbsp;</P> <P>During the hackathon, the
following technologies are expected to surface:</P> <UL> <LI>AI-Driven Software
Development</LI> <LI>Progressive Web Apps</LI> <LI>Internet of Things for
Healthcare - Connecting Devices, Enhancing Accessibility</LI>
<LI>Blockchain</LI> <LI>AR/VR/MR - The Use of Immersive Technologies</LI>
<LI>Low/No-Code Development - Development Using GUIs (Power Platform)</LI> </UL>
<P>&nbsp;</P> <P><STRONG>All participants are welcomed</STRONG>: Despite the
event being called a hackathon, this is not just about coding, it's about
community. Whether you are new to hackathons or a veteran, there are plenty of
ways to get involved, and it's a great opportunity to learn. All participants
are welcomed!</P> <P>&nbsp;</P> <P>Register or learn more about the hackathon
at&nbsp;<A href="https://www.nursehack4health.org/" target="_blank"
rel="noopener">https://www.nursehack4health.org/</A></P> <P>&nbsp;</P>
<P>&nbsp;</P> Wed, 11 Nov 2020 18:16:54 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-nurses-nursehack4health/ba-p/1820356
NinaSui 2020-11-11T18:16:54Z Azure Advocates Weekly Round Up - Saving Halloween
with Azure Maps and more!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-saving-halloween-with-azure-maps/ba-p/1819428
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="CatShark.jpg" style="width: 880px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232982i8B23E1BEA8B332CE/image-size/large?v=v2&amp;px=999"
role="button" title="CatShark.jpg" alt="CatShark.jpg" /></span></P>
<P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-salt/ba-p/1795522?WT.mc_id=modinfra-8959-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
Salt</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Salt
business focuses on bringing a multi-tenanted Azure Stack Hub environment in the
Caribbean Islands. Check it out!</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=wl80Bk5T7b4" target="_blank"
rel="noopener">Microsoft 365 PnP Weekly – Episode 101</A><BR /><STRONG><I>Waldek
Mastykarz</I></STRONG></P> <P>In this 1st installment after the 100th
installment of the weekly discussion revolving around the latest news and topics
on Microsoft 365.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/windows-subsystem-for-linux-2-traffic-routing-issues/ba-p/1764074?WT.mc_id=modinfra-9875-abartolo"
target="_blank" rel="noopener">Windows Subsystem for Linux 2 - Addressing
Traffic Routing Issues</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>WSL2 traffic not routing to local Hyper-V
vSwitches? Check this out!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-migrate-and-powerbi/ba-p/1778654?WT.mc_id=modinfra-9876-salean"
target="_blank" rel="noopener">Azure Migrate and PowerBI</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Use new PowerBI templates to visualise your Azure
Migrate data!</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=lMl2r_Wi_C8&amp;feature=youtu.be"
target="_blank" rel="noopener">October 22, 2020 | Leveraging Turnkey AI Live
Tutorial</A><BR /><STRONG><I><A href="https://twitter.com/ruthieyakubu"
target="_blank" rel="noopener">Ruth Yakubu</A></I></STRONG></P> <P>Enjoy the
videos and music you love, upload original content, and share it all with
friends, family, and the world on YouTube.</P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=aiml-9969-ayyonet"
target="_blank" rel="noopener">Cognitive Services—APIs for AI Developers |
Microsoft Azure</A><BR /><STRONG><I><A href="https://twitter.com/AysSomething"
target="_blank" rel="noopener">Aysegul Yonet</A></I></STRONG></P> <P>Azure
Cognitive Services brings AI within reach of every developer through a family of
APIs that don’t require machine-learning expertise.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-portal-announcements-and-videos/ba-p/1794165?WT.mc_id=modinfra-10078-socuff"
target="_blank" rel="noopener">Azure portal - Announcements and videos</A><BR
/><STRONG><I><A href="https://twitter.com/SoniaCuff" target="_blank"
rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>Like any cloud service, the
Azure portal also gets updates - here's how to stay up to date with the
announcements.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/rabwill/hosting-my-first-ever-developer-bootcamp-in-microsoft-teams-a-retrospect-1ghi"
target="_blank" rel="noopener">Hosting my first ever Developer Bootcamp in
Microsoft Teams : A retrospect</A><BR /><STRONG><I>Rabia
Williams</I></STRONG></P> <P>IMAGINE… You have a few weeks, to collaborate with
a select groups of awesome fellow techies...</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=iiLbhj4hPJM&amp;feature=youtu.be"
target="_blank" rel="noopener">Build “One Productivity Hub” using Microsoft
Teams and Microsoft Graph Toolkit</A><BR /><STRONG><I><A
href="https://twitter.com/aycabs" target="_blank" rel="noopener">Ayca
Bas</A></I></STRONG></P> <P>In this workshop you will learn to use Microsoft
Graph Toolkit to build a solution for Microsoft Teams. The user will be able to
track daily calendar, tasks ...</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/10/video-recording-azure-architecture-best-practices/"
target="_blank" rel="noopener">Video Recording: Azure Architecture Best
Practices</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Here is the
Azure Architecture Best Practices Virtual Event Video Recording with Microsoft
Cloud Solution Architect, Dominik Zemp!</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/10/how-to-create-azure-hybrid-cloud-architectures"
target="_blank" rel="noopener">How to create Azure Hybrid Cloud
Architectures</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Looking for
Azure hybrid cloud architectures in the Azure Architecture Center? You can find
diagrams, reference architectures, and much more!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-windows-10-version-20h2-azure-ad-provisioning-updates/ba-p/1810670?WT.mc_id=modinfra-10100-abartolo"
target="_blank" rel="noopener">AzUpdate: Windows 10 version 20H2, Azure AD
provisioning updates, Modular Datacenters and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>Another plethora of news stories to share on
this week's AzUpdate show.&nbsp; News includes:&nbsp;What’s new for IT Pros in
Windows 10 version 20H2, Designing Azure Modular Datacenters, Azure AD
provisioning updates that include attribute mapping and improved performance,
newly announced plans for Microsoft to establish its first cloud region in
Austria and as always, the Microsoft Learn module of the week.</P> <P>&nbsp;</P>
<P><A href="https://dev.to/azure/azurefunbytes-short-ai-on-azure-2d8j"
target="_blank" rel="noopener">AzureFunBytes Short - AI on @Azure</A><BR
/><STRONG><I><A href="https://twitter.com/jaydestro" target="_blank"
rel="noopener">Jay Gordon</A></I></STRONG></P> <P>With AI, we can build
solutions that seemed like science fiction a short time ago; enabling
incredibl... Tagged with azure, cloud, beginners, ai.</P> <P>&nbsp;</P> <P><A
href="https://bit.ly/ato-ml-docker" target="_blank" rel="noopener">Docker and
Python: making them play nicely and securely for Ml and DS</A><BR
/><STRONG><I><A href="https://twitter.com/ixek" target="_blank"
rel="noopener">Tania Allard</A></I></STRONG></P> <P>Docker has become a standard
tool for developers around the world to deploy applications in a reproducible
and robust manner. The existence of Docker and Docker compose have reduced the
time needed to set up new software and implementing complex technology stacks
for our applications. Now, six years after the initial release of` Docker, we
can say with confidence that containers and containers orchestration have become
some of the defaults in the current technology stacks. There are thousands of
tutorials and getting started documents for those wanting to adopt Docker for
apps deployment. However, if you are a Data Scientist, a researcher or someone
working on scientific computing wanting to adopt Docker, the story is quite
different. There are very few tutorials (in comparison to app/web) and documents
focused on Docker best practices for DS and scientific computing. If you are
working on DS, ML or scientific computing, this talk is for you. We’ll cover
best practices when building Docker containers for data-intensive applications,
from optimising your image build, to ensuring your containers are secure and
efficient deployment workflows. We will talk about the most common problems
faced while using Docker with data-intensive applications and how you can
overcome most of them. Finally, I’ll give some practical and useful tips for you
to improve your Docker workflows and practises. Attendees will leave the talk
feeling confident about adopting Docker across a range of DS, ML and research
projects.</P> <P>&nbsp;</P> <P><A href="https://youtu.be/MPGUcfzSVNs"
target="_blank" rel="noopener">Deploy your Java Application to Azure App Service
with Maven</A><BR /><STRONG><I><A href="https://twitter.com/skriemhild"
target="_blank" rel="noopener">Sandra Ahlgrimm</A></I></STRONG></P> <P>In this 4
minutes tutorial Sandra shows how you can deploy a Spring Boot web application
to Azure App Service.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/saving-halloween-2020-with-azure-maps-and-candy-caches-22f"
target="_blank" rel="noopener">Saving Halloween 2020 with Azure Maps and Candy
Caches</A><BR /><STRONG><I><A href="https://twitter.com/JenLooper"
target="_blank" rel="noopener">Jen Looper</A></I></STRONG></P> <P>Let me show
you how I rallied my town and created a map showing kids where to find
contactless, pandemic-friendly candy caches that saved Halloween!. Tagged with
javascript, vue, webdev, tutorial.</P> <P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-10-22-building-a-video-chat-app-part-2-accessing-cameras/"
target="_blank" rel="noopener">Building a Video Chat App, Part 2 - Accessing
Cameras | LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank" rel="noopener">Aaron Powell</A></I></STRONG></P> <P>Lights,
camera, action! It's time to get devices for our app.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/lazerwalker/using-game-design-to-make-virtual-events-more-social-24o"
target="_blank" rel="noopener">Using Game Design to Make Virtual Events More
Social</A><BR /><STRONG><I><A href="https://twitter.com/lazerwalker"
target="_blank" rel="noopener">Em Lazer-Walker</A></I></STRONG></P> <P>A few
months ago, I had a conundrum: I couldn't stand virtual conferences. I
personally go to in-per... Tagged with games, conferences, mud, events.</P>
<P>&nbsp;</P> <P><A
href="https://www.jimbobbennett.io/run-visual-studio-code-on-a-raspberry-pi/"
target="_blank" rel="noopener">Run Visual Studio Code on a Raspberry Pi</A><BR
/><STRONG><I><A href="https://twitter.com/jimbobbennett" target="_blank"
rel="noopener">Jim Bennett</A></I></STRONG></P> <P>It's finally here! An
official supported version of VS Code that runs on a Raspberry Pi! ICYMI: VS
Code now officially supports @Raspberry_Pi too!&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=3DgpVwnQ3V4" target="_blank"
rel="noopener">Demo JBoss EAP VMSS Quickstart</A><BR /><STRONG><I><A
href="https://twitter.com/skriemhild" target="_blank" rel="noopener">Sandra
Ahlgrimm</A></I></STRONG></P> <P>Theresa Nguyen, Senior Product Manager at
Microsoft showcases JBoss EAP on Azure VMSS Find more at <A
href="https://aka.ms/jbossEAP" target="_blank"
rel="noopener">https://aka.ms/jbossEAP</A> and <A
href="https://aka.ms/jboss-eap" target="_blank"
rel="noopener">https://aka.ms/jboss-eap</A> Get y...</P> <P>&nbsp;</P> Wed, 11
Nov 2020 20:01:42 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-saving-halloween-with-azure-maps/ba-p/1819428
spboyer 2020-11-11T20:01:42Z Check out new data science Learn modules inspired
by the Netflix Original Over the Moon
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/check-out-new-data-science-learn-modules-inspired-by-the-netflix/ba-p/1806363
<P class="lia-align-left"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="OTM_Final.JPG" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/228398i13F661BB9489BCFC/image-size/large?v=v2&amp;px=999"
role="button" title="OTM_Final.JPG" alt="OTM_Final.JPG" /></span></P>
<P>&nbsp;</P> <P>The need for more data scientists, machine learning experts,
and AI engineers in every industry is rapidly growing. These roles required a
broad set of skills from data analysis with no-code and low-code solutions to
designing and writing intricate machine learning models that solve some of our
planets most difficult problems. Microsoft is dedicated to providing high
quality, free content to help you develop your skills depending on your
professional goals and personal interests.</P> <P>&nbsp;</P> <P>One such
endeavor in creating an opportunity for you to learn and upskill is through
unique partnerships. In the summer of 2020 we launched a set of Microsoft Learn
modules inspired by real NASA scientists and engineers at <A
href="https://aka.ms/LearnInSpace" target="_blank"
rel="noopener">https://aka.ms/LearnInSpace</A>. And this Fall we are excited to
bring you three more Microsoft Learn modules inspired by the new <A
href="https://www.youtube.com/watch?v=26DIABx44Tw" target="_blank"
rel="noopener">Netflix Original Over the Moon</A>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="sguthals_0-1603321787474.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/228379iBEFCDB95D74DE4AD/image-size/medium?v=v2&amp;px=400"
role="button" title="sguthals_0-1603321787474.jpeg"
alt="sguthals_0-1603321787474.jpeg" /></span></P> <P>&nbsp;</P> <P>Fei Fei is a
young girl who builds a rocket to the Moon on a mission to prove the existence
of a legendary Moon Goddess. Fei Fei is fueled by the memories and love of her
mother to use her creativity, resourcefulness, determination, and imagination to
accomplish something beyond this world: reach the Moon. While the story takes
place in a beautifully drawn universe, it is directly related to the types of
problems real-life engineers face as they prepare and execute missions to the
Moon and beyond. These lessons are also on our<A
href="http://microsoft.com/inculture/over-the-moon/?ocid=AID3024378_QSG_485828#STEM"
target="_blank" rel="noopener"> Over the Moon InCulture site,</A> where you can
also find videos from the voice actors of the film and even a drawing tutorial
from director Glen Keane!</P> <P>&nbsp;</P> <P>And with these new resources you
can start your journey of using fiction to inspire solutions to real-world
problems. I’m not a NASA scientist or engineer, and I’ve never personally been
to the Moon, but I have skilled up in coding and data wrangling, allowing me to
take what I *do* know about space exploration and make predictions and new
discoveries through basic data science practices.</P> <P>So if you’re like me,
and you are interested in:</P> <UL> <LI>Space travel</LI> <LI>Moon missions</LI>
<LI>Rockets</LI> <LI>Moon rocks</LI> <LI>Animated films</LI> <LI>Fiction</LI>
<LI>Coding</LI> <LI>Python</LI> <LI>Data Science</LI> <LI>AI</LI> <LI>Problem
solving</LI> <LI>All of the above</LI> </UL> <P>Then, I invite you to not only
check out these <A href="https://aka.ms/LearnWithDrG/OverTheMoon"
target="_blank" rel="noopener">new Learn modules</A>, but also join me on my new
show,<A href="https://aka.ms/LearnWithDrG" target="_blank" rel="noopener"> Learn
with Dr G</A>, where I will dive into these modules and do some live coding! You
can find all the details below on all of the new learning resources and
opportunities related to space!</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="sguthals_1-1603321787516.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/228380i00866566231D2CE2/image-size/medium?v=v2&amp;px=400"
role="button" title="sguthals_1-1603321787516.jpeg"
alt="sguthals_1-1603321787516.jpeg" /></span></P> <P>&nbsp;</P> <H4>Watch <A
href="https://www.netflix.com/title/80214236" target="_blank"
rel="noopener">Over The Moon - now streaming on Netflix</A>!</H4> <P>&nbsp;</P>
<H2>Microsoft Learn Modules</H2> <H4><A
href="https://docs.microsoft.com/learn/modules/plan-moon-mission-using-python-pandas?WT.mc_id=OverTheMoon_InCulture_-web-cxa%20"
target="_blank" rel="noopener">Preparing for Moon Missions</A></H4> <P>Like Fei
Fei, use data to plan your own mission to the Moon. Ensure your rocket can not
only get you there, but also bring you and all your Moon rocks safely back to
Earth.&nbsp;Analyze and visualize datasets with common data cleansing practices
with <A
href="https://code.visualstudio.com/learntocode/?utm_source=MSLearn&amp;utm_medium=direct&amp;utm_campaign=PartnerLessons"
target="_blank" rel="noopener">Python in Visual Studio Code</A>.</P>
<P>&nbsp;</P> <H4><A
href="https://docs.microsoft.com/learn/modules/predict-meteor-showers-using-python/?WT.mc_id=OverTheMoon_InCulture_-web-cxa%20"
target="_blank" rel="noopener">Predict meteor showers</A></H4> <P><SPAN
class="TextRun SCXW199629723 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">B</SPAN></SPAN><SPAN class="TextRun
SCXW199629723 BCX8" data-contrast="auto"><SPAN class="NormalTextRun
SCXW199629723 BCX8" data-ccp-charstyle="normaltextrun">uild
a<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW199629723 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">Machine
Learning<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW199629723
BCX8" data-contrast="auto"><SPAN class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">prediction model</SPAN></SPAN><SPAN
class="TextRun SCXW199629723 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun"><SPAN>&nbsp;</SPAN>after
cleansing<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW199629723
BCX8" data-contrast="auto"><SPAN class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">a space-themed data set</SPAN></SPAN><SPAN
class="TrackChangeTextInsertion TrackedChange SCXW199629723 BCX8"><SPAN
class="TextRun SCXW199629723 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun"><SPAN>&nbsp;</SPAN>on meteor showers.
Incorporate Chang’e’s potential<SPAN>&nbsp;</SPAN></SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">affects</SPAN><SPAN class="NormalTextRun
SCXW199629723 BCX8" data-ccp-charstyle="normaltextrun"><SPAN>&nbsp;</SPAN>on
meteor showers for an added complexity</SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">.<SPAN>&nbsp;</SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <H4><A
href="https://docs.microsoft.com/learn/modules/train-custom-vision-ai?WT.mc_id=OverTheMoon_InCulture_-web-cxa%20"
target="_blank" rel="noopener">Find Bungee on the Moon</A></H4> <P>Repurposing
the camera on the Lunar Rover, search through the Moon’s surface for Fei Fei’s
buddy Bungee before it’s time to head back to Earth. Use <A
href="https://azure.microsoft.com/services/cognitive-services/" target="_blank"
rel="noopener">Azure Custom Vision</A> to Classify pictures of animals (like
Bungee, main character Fei Fei’s pet) without ever writing code.</P>
<P>&nbsp;</P> <H2>Learn with Dr G Live Streams and Episodes</H2> <H4><A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/Over-the-Moon-Learn-Lessons-Overview/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener"><STRONG>Intro to the Over the Moon
Modules</STRONG></A></H4> <P>Completing a successful Moon Mission doesn't only
involve getting to the moon, but also returning safely to Earth – ideally with
some rocks to learn from! Join Dr. G as she draws inspiration from the
new&nbsp;<A href="https://www.netflix.com/title/80214236" target="_blank"
rel="noopener">Netflix Original Over the Moon</A>&nbsp;and the ingenuity of the
NASA Apollo missions to analyze and clean data to predict how much moon rock
astronauts might be able to bring back as part of the Artemis Program in 2024.
No coding experience required, and you can follow along with the free Microsoft
Learn lessons at&nbsp;<A href="https://aka.ms/LearnWithDrG/OverTheMoon"
target="_blank" rel="noopener">https://aka.ms/LearnWithDrG/OverTheMoon</A>.</P>
<P>&nbsp;</P> <H4><A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/Datas-Role-in-Moon-Missions-Fictional-and-Real/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener"><STRONG>Data’s Role in Moon Missions: Fictional
and Real </STRONG></A></H4> <P>Completing a successful Moon Mission doesn’t only
involve getting to the moon, but also returning safely to Earth – ideally with
some rocks to learn from! Join Dr. G as she draws inspiration from the film and
the ingenuity of the NASA Apollo missions to analyze and clean data to predict
how much moon rock astronauts might be able to bring back as part of the Artemis
Program in 2024.</P> <P>&nbsp;</P> <H4><STRONG>Predicting Meteor Showers Using
Python and Visual Studio Code</STRONG></H4> <P>(<A
href="https://www.meetup.com/Microsoft-Reactor-Redmond/events/273465419/"
target="_blank" rel="noopener">Sign up for Live Stream on October 27th here</A>,
<A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener">Available on-demand on October 30th here</A>)</P>
<P>In the film, Fei Fei builds a rocket to fly to the Moon to meet the Moon
Goddess Chang’e. It is said that when Chang’e cries, her tears are the shooting
starts we see in our night sky. This inspired Dr G to deep dive into what meteor
showers actually are and how they are predicted. Join this live stream as Dr G
explores how data science plays a role in predicting celestial events, and even
brings in a little magic from the film to predict when we could have seen the
meteor shower caused by Chang’e from Fei Fei’s visit.</P> <P>&nbsp;</P>
<H4><STRONG>Use Azure Custom Vision to Repurpose the Lunar Rover</STRONG></H4>
<P>(<A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener">Available on-demand on October 30th here</A>)</P>
<P>The Lunar rover has been instrumental in helping us advance our understanding
of the Moon and our Universe, and in the new film it even makes an appearance
when Fei Fei lands on the moon with her buddy Bungee and brother Chin! This
inspired Dr G. to think about a scenario where Fei Fei brought her own Lunar
rover to the Moon to take pictures and send them back to her once she returned
to Earth. In this video, Dr. G will build an image classifier using Azure Custom
Vision to identify Bungee so that if Bungee is ever on the Moon without Fei Fei,
her Lunar Rover can send down pics of Bungee exploring the surface, and avoid
sending pictures of rocks.</P> Fri, 23 Oct 2020 17:58:53 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/check-out-new-data-science-learn-modules-inspired-by-the-netflix/ba-p/1806363
sguthals 2020-10-23T17:58:53Z [Mitigated] DevTest Labs Outage: Certain lab
operations may fail due to an ARM outage
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-certain-lab-operations-may-fail/ba-p/1797510
<P>Update: We would like to inform you that the issue is mitigated as of 12:00
AM UTC on 19th Oct 2020.&nbsp;</P> <P>&nbsp;</P> <P>Please add a comment if you
are still experiencing any issues within DevTest Labs.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="AzureStatus.png" style="width: 452px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233468i2050CA62FA333C71/image-dimensions/452x226?v=v2"
width="452" height="226" role="button" title="AzureStatus.png"
alt="AzureStatus.png" /></span></P> <P>&nbsp;</P>
<P>----------------------------------------------------------------------------------------------------------------</P>
<P>We would like to inform you that starting&nbsp;<SPAN>18:35 UTC on 19 Oct
2020,</SPAN> we are currently investigating an issue where certain lab
operations may fail. Based on our current investigation, this is happening due
to an outage within the Azure Resource Manager. More details on the outage
here:&nbsp;<A
href="https://status.azure.com/en-us/status?service=cognitive-services"
target="_blank"
rel="noopener">https://status.azure.com/en-us/status?service=cognitive-services</A></P>
<P>&nbsp;</P> <P>Following lab operations may not work as expected during this
time:&nbsp;</P> <UL> <LI>Creating/ updating/ deleting lab virtual machines</LI>
<LI>Creating custom images, formulas</LI> <LI>Setting lab schedules&nbsp;</LI>
</UL> <P>&nbsp;</P> <P>Our team continues to work on a fix and we will update
this post to share regular updates.&nbsp;</P> <P>&nbsp;</P> <P>We apologize for
the inconvenience and thank you for your patience.&nbsp;</P> <P>&nbsp;</P>
<P>-DevTest Labs Team<BR />&nbsp;</P> <P>&nbsp;</P> Fri, 13 Nov 2020 17:31:07
GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-certain-lab-operations-may-fail/ba-p/1797510
TanmayeeKamath 2020-11-13T17:31:07Z Azure Advocates Weekly Round Up - Security,
JavaScript, and more M365 this week!
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-security-javascript-and-more/ba-p/1795800
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Attackers.png" style="width: 514px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233474i74491F50DC7F25DD/image-size/large?v=v2&amp;px=999"
role="button" title="Attackers.png" alt="Attackers.png" /></span></P>
<P>&nbsp;</P> <P><A href="https://aka.ms/createa11y" target="_blank"
rel="noopener">How does accessibility fit into an MVP? | Creating
Startups</A><BR /><STRONG><I><A href="https://twitter.com/simona_cotin"
target="_blank" rel="noopener">Simona Cotin</A></I></STRONG></P> <P>This is a
guest post by Obinna Ekwuno, software engineer at Gatsby and Marcy Sutton,
freelance web developer and accessibility specialist. Read more about Obinna and
Marcy at the end of this article. Accessibility has become a buzz word for
making sure that disabled users get a fair experience when interfacing with
platforms on the web or on mobile.</P> <P>&nbsp;</P> <P><A
href="https://github.com/OfficeDev/M365Bootcamp-TeamsOneProductivityHub"
target="_blank"
rel="noopener">OfficeDev/M365Bootcamp-TeamsOneProductivityHub</A><BR
/><STRONG><I><A href="https://twitter.com/aycabs" target="_blank"
rel="noopener">Ayca Bas</A></I></STRONG></P> <P>Use Microsoft Graph Toolkit to
build a solution for Microsoft Teams that will track daily calendar, tasks and
e-mails in a Teams Tab as one productivity hub. -
OfficeDev/M365Bootcamp-TeamsOneProductivityHub</P> <P>&nbsp;</P> <P><A
href="https://acloudguru.com/blog/engineering/how-to-develop-serverless-apps-with-github-codespaces"
target="_blank" rel="noopener">How to Develop Serverless Apps with GitHub
Codespaces | A Cloud Guru</A><BR /><STRONG><I>Alvaro Videla
Godoy</I></STRONG></P> <P>Want to develop a serverless app with Codespaces? This
tutorial will show you how to get an Azure Functions &amp; Static Web App
project ready.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-ivedha/ba-p/1778793?WT.mc_id=modinfra-8957-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
iVedha</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Aytra was
borne as an ISV solution aimed at enabling partners in their Azure Stack Hub
journey. Check it out!</P> <P>&nbsp;</P> <P><A
href="https://speakerdeck.com/nitya/intro-to-mobile-development" target="_blank"
rel="noopener">Intro to Mobile Development</A><BR /><STRONG><I><A
href="https://twitter.com/nitya" target="_blank" rel="noopener">Nitya
Narasimhan</A></I></STRONG></P> <P>Mobile app development is both a huge
opportunity and a constant challenge. In this talk we’ll look at the mobile
development landscape – from native apps to multi-platform development and
mobile web. We’ll talk about design challenges and personalizing user
experiences to match diverse contexts. And we’ll look at emerging paradigms in
dual-screen and multi-posture devices (e.g., Surface Duo) and talk about how we
can leverage these technological advances to rethink the modern mobile app.</P>
<P>&nbsp;</P> <P><A href="https://www.youtube.com/watch?v=Vs_8bh4jOIA"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly – Episode 100</A><BR
/><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>A weekly discussion of the
latest news and topics around Microsoft 365</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/devops/what-is-infrastructure-as-code/?WT.mc_id=devops-9609-jagord"
target="_blank" rel="noopener">What is infrastructure as code? | Azure DevOps
Blog</A><BR /><STRONG><I><A href="https://twitter.com/jaydestro" target="_blank"
rel="noopener">Jay Gordon</A></I></STRONG></P> <P>What is infrastructure as
code? Microsoft Azure provides you with a number of options to deploy your
infrastructure. In the One Dev Question series, Cloud Developer Advocate Abel
Wang explains how Azure DevOps provides developer services to support teams to
plan work...</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/top-10-best-practices-for-azure-security/ba-p/1770087?WT.mc_id=modinfra-9720-socuff"
target="_blank" rel="noopener">Top 10 Best Practices for Azure Security</A><BR
/><STRONG><I><A href="https://twitter.com/SoniaCuff" target="_blank"
rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>Mark Simos, lead Cyber
security architect for Microsoft, explored the lessons learned from protecting
both Microsoft's own technology environments and the responsibility we have to
our customers, and shares the top 10 (+1!) recommendations for Azure security
best practices.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/what-is-azure-hybrid-benefit/ba-p/1764400?WT.mc_id=modinfra-9767-salean"
target="_blank" rel="noopener">What is Azure Hybrid Benefit?</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank"
rel="noopener">Sarah Lean</A></I></STRONG></P> <P>The Azure Hybrid Benefit can
help you save move when you are running your workloads within Azure by
leveraging your on prem licenses, find out more in this blog post.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/10/automanage-for-azure-virtual-machines/"
target="_blank" rel="noopener">Automanage for Azure virtual machines</A><BR
/><STRONG><I><A href="https://twitter.com/ThomasMaurer" target="_blank"
rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Azure Automanage for
virtual machines is a service that helps to discover, onboard, and configure
Azure Management services for Azure VMs.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/lazerwalker/running-a-virtual-conference-roguelike-celebration-s-av-setup-44hk"
target="_blank" rel="noopener">Running A Virtual Conference: Roguelike
Celebration’s AV Setup </A><BR /><STRONG><I><A
href="https://twitter.com/lazerwalker" target="_blank" rel="noopener">Em
Lazer-Walker</A></I></STRONG></P> <P>The Roguelike Celebration conference has
been running for five years, but two weeks ago marks our fir... Tagged with
streaming, events, conferences, twitch.</P> <P>&nbsp;</P> <P><A
href="https://github.com/DanWahlin/Fluidvue" target="_blank"
rel="noopener">DanWahlin/FluidVue</A><BR /><STRONG><I><A
href="https://twitter.com/danwahlin" target="_blank" rel="noopener">Dan
Wahlin</A></I></STRONG></P> <P>Contribute to DanWahlin/FluidVue development by
creating an account on GitHub.</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/10/14/lets-encrypt-ssl-certificate-on-azure-functions/"
target="_blank" rel="noopener">Adding Let's Encrypt SSL Certificate to Azure
Functions</A><BR /><STRONG><I><A href="https://twitter.com/justinchronicle"
target="_blank" rel="noopener">Justin Yoo</A></I></STRONG></P> <P>This post
shows how to generate an SSL certificate through Let's Encrypt API and bind the
certificate to the custom APEX domain on Azure Functions app.</P> <P>&nbsp;</P>
<P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-microsoft-365-apps-admin-center-azure-site-recovery-tls/ba-p/1785491?WT.mc_id=modinfra-9985-abartolo"
target="_blank" rel="noopener">AzUpdate: Microsoft 365 Apps Admin Center, Azure
Site Recovery TLS Certificate Changes and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>Lots to share in the world of Microsoft services
this week. News includes Microsoft 365 Apps Admin Center's new inventory &amp;
monthly servicing feature currently in preview, Azure Cognitive Services has
achieved human parity in image captioning, Azure Site Recovery TLS Certificate
Changes, Static Web App PR Workflow for Azure App Service using Azure DevOps,
and of course the Microsoft Learn Module of the week.</P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/250-million-reasons-build-applications-microsoft-365/"
target="_blank" rel="noopener">250 million reasons to build applications on
Microsoft 365</A><BR /><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>You might
have heard of Microsoft Teams, Outlook, or SharePoint. But did you know that
next to being some of the most popular applications from Microsoft, they are a
part of a highly extensible development platform with a rich partner
ecosystem?</P> <P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-10-13-want-to-learn-javascript-weve-got-a-series-for-you/"
target="_blank" rel="noopener">Want to Learn JavaScript? We've Got a Series for
You! | LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank" rel="noopener">Aaron Powell</A></I></STRONG></P> <P>Get ready to
dive into all things JavaScript.</P> <P>&nbsp;</P> Fri, 13 Nov 2020 18:10:17 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-security-javascript-and-more/ba-p/1795800
spboyer 2020-11-13T18:10:17Z Azure DevTest Labs available in UAE North, Germany
West Central and Norway East regions
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-devtest-labs-available-in-uae-north-germany-west-central/ba-p/1769281
<P><A href="https://aka.ms/dtl" target="_blank" rel="noopener noopener
noreferrer" data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">Azure DevTest
Labs</A><SPAN>&nbsp;</SPAN><SPAN>is now available in the UAE North, Germany West
Central and Norway East regions. The support includes full Azure DevTest Labs
capabilities. To see&nbsp;the other supported regions for DevTest Labs,&nbsp;see
Azure&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fazure.microsoft.com%2Fen-us%2Fregions%2Fservices%2F&amp;data=02%7C01%7CTanmayee.Kamath%40microsoft.com%7C4e6764f82fcf4305170408d7f2b18ece%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637244716734847958&amp;sdata=t1%2B48uITWBLD3DFn4qHzoUdOjtjWFgaNaTh0MP1iNEo%3D&amp;reserved=0"
target="_blank" rel="noopener nofollow noopener noreferrer"
data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">products available by
region</A><SPAN>.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Capture (1).PNG" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/225843iEED8802282F5872E/image-size/large?v=v2&amp;px=999"
role="button" title="Capture (1).PNG" alt="Capture (1).PNG" /></span></SPAN></P>
<P>&nbsp;</P> <P>Get started by visiting the<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/" target="_blank"
rel="noopener noopener noreferrer" data-event="page-clicked-link"
data-bi-id="page-clicked-link" data-bi-an="undefined"
data-bi-tn="undefined">DevTest Labs documentation</A>.&nbsp;</P> <P>&nbsp;</P>
<P><SPAN>Try it today and let us know what you think. If you have an idea or
feedback, go to the&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ffeedback.azure.com%2Fforums%2F320373-azure-devtest-labs&amp;data=02%7C01%7CTanmayee.Kamath%40microsoft.com%7C4e6764f82fcf4305170408d7f2b18ece%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637244716734857914&amp;sdata=eDdD1dzKcQMrJsCnm5KJv2NySnPD%2BP08QsqzsuHn5SY%3D&amp;reserved=0"
target="_blank" rel="noopener nofollow noopener noreferrer"
data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">Azure DevTest Labs feedback
forum</A><SPAN>.</SPAN></P> <P>&nbsp;</P> <P><SPAN>If you or your customers have
questions, post them on the&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fanswers%2Ftopics%2Fazure-devtestlabs.html&amp;data=02%7C01%7CTanmayee.Kamath%40microsoft.com%7C4e6764f82fcf4305170408d7f2b18ece%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637244716734867870&amp;sdata=fow%2B33ifa%2FgvxFc8OUeYO1HTioMVlyeT%2FHUEqXMypUM%3D&amp;reserved=0"
target="_blank" rel="noopener nofollow noopener noreferrer"
data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">Azure DevTest Labs
forum</A><SPAN>.</SPAN></P> <P>&nbsp;</P> Mon, 12 Oct 2020 15:00:00 GMT
https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-devtest-labs-available-in-uae-north-germany-west-central/ba-p/1769281
TanmayeeKamath 2020-10-12T15:00:00Z
This XML file does not appear to have any style information associated with it.
The document tree is shown below.

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
<channel>
<title>Azure Developer Community Blog articles</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/bg-p/AzureDevCommunityBlog</link>
<description>Azure Developer Community Blog articles</description>
<pubDate>Wed, 09 Mar 2022 08:28:04 GMT</pubDate>
<dc:creator>AzureDevCommunityBlog</dc:creator>
<dc:date>2022-03-09T08:28:04Z</dc:date>
<item>
<title>Using secretless Azure Functions from within AKS</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-secretless-azure-functions-from-within-aks/ba-p/3248143</link>
<description><P>I recently implemented <A
href="https://github.com/kedacore/keda/issues/2656" target="_self">a change in
KEDA</A> (currently evaluated as a potential pull request), consisting of
leveraging managed identities in a more granular way, in order to adhere to the
least privilege principle. While I was testing my changes, I wanted to use
managed identities not only for KEDA itself but also for the Azure Functions I
was using in my tests. I found out that although there are quite a few docs on
the topic, none is targeting AKS:</P> <P>&nbsp;</P> <P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#identity-based-connections"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#identity-based-connections</A></P>
<P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference?tabs=blob#connecting-to-host-storage-with-an-identity-preview"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference?tabs=blob#connecting-to-host-storage-with-an-identity-preview</A></P>
<P>&nbsp;</P> <P>You can find many articles showing how to grab a token from an
HTTP triggered function, or using identity-based triggers, but in the context of
a function hosted in Azure itself. It's not rocket science to make this work in
AKS but I thought it was a good idea to recap it here as I couldn't find
anything on that.</P> <P>&nbsp;</P> <P><FONT size="5">Quick intro to managed
identities</FONT></P> <P>Here is a quick reminder for those who would still not
know about MI. The value proposition of MI is: no password in code (or config).
MI are considered best practices because the credentials used by identities are
entirely managed by Azure itself. Workloads can <EM>refer to</EM> identities
without the need to store credentials anywhere. On top of this, you can manage
authorization with Azure AD (single pane of glasses), unlike shared access
signatures and alternate authorization methods.</P> <P><FONT size="5">AKS &amp;
MI</FONT></P> <P>For MI to work in AKS, you need to enable them. You can find a
comprehensive explanation on how to do this <A
href="https://docs.microsoft.com/en-us/azure/aks/use-managed-identity"
target="_self">here</A>. In a nutshell, MI works the following way in AKS:</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="aksnmi.png" style="width: 879px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/353247i1EBC070C411D57A9/image-size/large?v=v2&amp;px=999"
role="button" title="aksnmi.png" alt="aksnmi.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>An <STRONG>AzureIdentity</STRONG> and
<STRONG>AzureIdentityBinding</STRONG> resource must be defined. They target a
user-assigned identity, which is attached to the cluster's VM scale set. The
identity can be referred to by deployments through the
<EM><STRONG>aadpodbinding</STRONG> </EM>annotation. The function (or anything
else) container makes a call to the MI system endpoint <A
href="http://169....which" target="_blank" rel="noopener">http://169...,
</A>that is intercepted by the NMI pod, which in turn, performs a call to Azure
Active Directory to get an access token for the calling container.&nbsp; The
calling container can present the returned token to the Azure resource to gain
access.</P> <P>&nbsp;</P> <P><FONT size="5">Using the right packages for the
function</FONT></P> <P>The packages you have to use depend on the Azure resource
you interact with. In my example, I used storage account queues as well as
service bus queues. To leverage MI from within the function, you must:</P> <UL>
<LI>use the&nbsp;Microsoft.Azure.WebJobs.Extensions.Storage &gt;= 5.0.0</LI>
<LI>use the Microsoft.Azure.WebJobs.Extensions.ServiceBus &gt;= 5.0.0</LI>
<LI>use the&nbsp;Microsoft.NET.Sdk.Functions &gt;= 4.1.0</LI> </UL> <P>Note that
the storage package is not really an option because Azure Functions need an
Azure Storage account for the most part.</P> <P><FONT size="5">Passing the right
settings to the function</FONT></P> <P>Azure functions takes their configuration
from the local settings and from their host's configuration. When using Azure
Functions hosted on Azure, we can simply use the function app settings. In AKS,
this is slightly different as we have to pass the settings through a
<STRONG>ConfigMap</STRONG> or a <STRONG>Secret</STRONG>. To target both the
Azure Storage account and the Service Bus, you'll have to define a secret like
the following:</P> <P>&nbsp;</P> <DIV> <DIV><LI-CODE lang="yaml">data:
AzureWebJobsStorage__accountName: &lt;base64 value of storage account name&gt;
ServiceBusConnection__fullyQualifiedNamespace: &lt;base64 value of the service
bus FQDN&gt; FUNCTIONS_WORKER_RUNTIME: &lt;base64 value of the function
language&gt; apiVersion: v1 kind: Secret metadata: name: &lt;secret name&gt;
---</LI-CODE></DIV> <DIV>In the above example, I use the same storage account
for my storage-queue trigger as well as the storage account that is required by
functions to work. In case I was using a different storage account for the queue
trigger, I'd declare an extra setting with the account name. The service bus
queue-triggered function relies on the __fullyQualifiedNamespace to start
listening to the service bus. Paradoxally, although I create a K8s secret, there
is no secret information here, thanks to the MI.</DIV> <DIV>&nbsp;</DIV>
<DIV>For your reference, I'm pasting the entire YAML here:</DIV>
<DIV>&nbsp;</DIV> <DIV><LI-CODE lang="yaml">data:
AzureWebJobsStorage__accountName: &lt;base64 value of the storage account
name&gt; ServiceBusConnection__fullyQualifiedNamespace: &lt;base64 value of the
service bus FQDN&gt; FUNCTIONS_WORKER_RUNTIME: &lt;base64 value of the function
code&gt; apiVersion: v1 kind: Secret metadata: name: misecret --- apiVersion:
aadpodidentity.k8s.io/v1 kind: AzureIdentity metadata: name:
storageandbushandler annotations: aadpodidentity.k8s.io/Behavior: namespaced
spec: type: 0 resourceID:
/subscriptions/.../resourceGroups/.../providers/Microsoft.ManagedIdentity/userAssignedIdentities/storageandbushandler
clientID: &lt;client ID of the user-assigned identity&gt; --- apiVersion:
aadpodidentity.k8s.io/v1 kind: AzureIdentityBinding metadata: name:
storageandbushandler-binding spec: azureIdentity: storageandbushandler selector:
storageandbushandler --- apiVersion: apps/v1 kind: Deployment metadata: name:
busandstoragemessagehandlers labels: app: busandstoragemessagehandlers spec:
selector: matchLabels: app: busandstoragemessagehandlers template: metadata:
labels: app: busandstoragemessagehandlers aadpodidbinding: storageandbushandler
spec: containers: - name: secretlessfunc image: stephaneey/secretlessfunc:dev
imagePullPolicy: Always envFrom: - secretRef: name: misecret ---</LI-CODE></DIV>
<DIV>You can see that the secret is passed to the function through the
<STRONG>envFrom</STRONG> attribute. If you want to give it a test, you can use
the docker image I pushed to Docker Hub.</DIV> <DIV>&nbsp;</DIV> <DIV>and the
code of both functions, embedded in the above docker image (nothing
special):</DIV> <DIV><LI-CODE lang="csharp">[FunctionName("StorageQueue")]
public void StorageQueue([QueueTrigger("myqueue-items", Connection =
"AzureWebJobsStorage")]string myQueueItem, ILogger log) {
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}"); }
[FunctionName("ServiceBusQueue")] public void
ServiceBusQueue([ServiceBusTrigger("myqueue-items", Connection =
"ServiceBusConnection")] string myQueueItem, ILogger log) {
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}</LI-CODE></DIV> <DIV>&nbsp;</DIV> <DIV>You just need to make sure the
connection string names you mention in the triggers correspond to the settings
you specify in the K8s secret.</DIV> </DIV></description>
<pubDate>Sat, 05 Mar 2022 16:00:53 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-secretless-azure-functions-from-within-aks/ba-p/3248143</guid>
<dc:creator>stephaneey</dc:creator>
<dc:date>2022-03-05T16:00:53Z</dc:date>
...
</item>
<item>
<title>How YOU can build a Mock REST API based on JSON for ASP .NET and minimal
API</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-can-build-a-mock-rest-api-based-on-json-for-asp-net-and/ba-p/3196039</link>
<description><BLOCKQUOTE> <P>TLDR; this article describes how to create a Mock
API from a JSON file for minimal API in ASP .NET</P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#what-and-why-mock-apis"
target="_blank" rel="noopener" name="what-and-why-mock-apis"></A>What and why
Mock APIs</H2> <P>To mock something means you respond with fake data, that data
can be in-memory, from a file or some kind of tool generating a bunch of
endpoints. There are some reasons why mocking an API could be a good idea:</P>
<UL> <LI><STRONG>Different teams work at different speeds</STRONG>. Let's say
your app is built by two different teams, or developers and one is faster than
the other. That's when it's handy to rely on a mocked API.</LI> <LI><STRONG>You
start with the frontend first</STRONG>. Your team/developer have decided to
build a full vertical and starts with the frontend and slowly work their way
towards the backend and the data source.</LI> </UL> <P>Ok, so we established
there might be a need to mock your API. So how do we do it? You want to be able
to specify the data you want to mock and there are some formats out there that
makes sense to have such mocked data in like JSON, XML or CSV perhaps. For the
sake of this article, we will go with JSON</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#planning-our-project-what-we-need-to-do"
target="_blank" rel="noopener"
name="planning-our-project-what-we-need-to-do"></A>Planning our project, what we
need to do</H2> <P>Ok, so high-level, we need to do the following:</P> <UL>
<LI><STRONG>Create a file in JSON</STRONG>, containing our routes and the
response. We imagine the JSON file looking something like so:</LI> </UL>
<P>&nbsp;</P> <LI-CODE lang="json"> { "Products": [ { "Id": 1, "Name": "Mock" },
{ "Id": 2, "Name": "Second Mock" } ] }</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <UL> <LI><STRONG>What routes do
we want?</STRONG><SPAN>&nbsp;</SPAN>A good API should implement GET, POST, PUT
and DELETE to support a RESTful approach.</LI> <LI><STRONG>Responding to
changes.</STRONG><SPAN>&nbsp;</SPAN>So what should happen if the user actually
calls POST, PUT or DELETE? Reasonably, the mocked file should change.</LI> </UL>
<P>Ok, so we know high-level what we need, and how things should behave, let's
see if we can choose our technical approach next.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#approach-lets-create-the-solution"
target="_blank" rel="noopener"
name="approach-lets-create-the-solution"></A>Approach - let's create the
solution</H2> <P>The normal way to setup routes, in Minimal API, is to call code
like so:</P> <P>&nbsp;</P> <LI-CODE lang="csharp">app.MapGet("/", () =&gt;
"Hello World!");</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>By
calling<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE><SPAN>&nbsp;</SPAN>we create a
route to "/" that when called responds with "Hello World". For the sake of our
API, we will have to
call<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE>,<SPAN>&nbsp;</SPAN><CODE>MapPost()</CODE>,<SPAN>&nbsp;</SPAN><CODE>MapPut()</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>MapDelete()</CODE>.</P>
<BLOCKQUOTE> <P>Here be dragons. Many of you, I'm sure, are used to working with
JSON in a typed manor, meaning you are likely to create types for your classes
and rely on methods
like<SPAN>&nbsp;</SPAN><CODE>Deserialize()</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>Serialize()</CODE>.
That's a great approach, however, for a mocked API that doesn't even exist yet,
this code doesn't rely on any of that :)</img></P> </BLOCKQUOTE> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#defining-the-routes-making-it-loosely-coupled"
target="_blank" rel="noopener"
name="defining-the-routes-making-it-loosely-coupled"></A>Defining the routes,
making it loosely coupled</H3> <P>It would be neat if these routes were loosely
coupled code that we could just bring in, when developing, and removed when we
are live with our app.</P>
<P>When<SPAN>&nbsp;</SPAN><CODE>app.MapGet()</CODE><SPAN>&nbsp;</SPAN>was
called, it invoked an instance of the
class<SPAN>&nbsp;</SPAN><CODE>WebApplication</CODE>. By creating an extension
method on said class, we have a way an approach to add code in a way that it's
nicely separated. We also need a static class to put said extension method in.
That means our code starting out should look something like so:</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">public static class
RouteMiddlewareExtensions { public static WebApplication UseExtraRoutes(this
WebApplication app) { } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#exercise-read-from-a-mock-file-and-add-support-for-raw-get-endraw-"
target="_blank" rel="noopener"
name="exercise-read-from-a-mock-file-and-add-support-for-raw-get-endraw-"></A>Exercise
- Read from a mock file, and add support
for<SPAN>&nbsp;</SPAN><CODE>GET</CODE></H2> <P>Ok, we know how we are starting,
a static class and an extension method, so let's make that happen:</P> <OL>
<LI>Run<SPAN>&nbsp;</SPAN><CODE>dotnet new</CODE>, to generate a new minimal API
project</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="bash"> dotnet new web -o MyApi
-f net6.0 cd Myapi</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <OL> <LI>Create a
file<SPAN>&nbsp;</SPAN><EM>MockMiddleware.cs</EM><SPAN>&nbsp;</SPAN>and give it
the following code:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp"> using
System.Text.Json; using System.Text.Json.Nodes; public static class
RouteMiddlewareExtensions { public static WebApplication UseExtraRoutes(this
WebApplication app) { } }</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <OL> <LI>Add code to read a JSON file into a JSON representation:</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="csharp"> var writableDoc =
JsonNode.Parse(File.ReadAllText("mock.json"));</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Note the choice
of<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE>, this is so we can make the JSON doc
writable, which we will need for POST, PUT and DELETE later on.</P> <OL>
<LI>Create the file<SPAN>&nbsp;</SPAN><EM>mock.json</EM><SPAN>&nbsp;</SPAN>and
give it the following content:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="json"> {
"Products": [ { "Id": 1, "Name": "Mock" }, { "Id": 2, "Name": "Second Mock" } ],
"Orders": [ { "Id": 1, "Name": "Order1" }, { "Id": 2, "Name": "Second Order" } ]
}</LI-CODE> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-get-endraw-"
target="_blank" rel="noopener"
name="add-raw-get-endraw-"></A>Add<SPAN>&nbsp;</SPAN><CODE>GET</CODE></H3>
<P>Let's support our first HTTP verb, GET.</P> <OL> <LI>Add the following
code:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp"> foreach(var elem in
writableDoc?.Root.AsObject().AsEnumerable()) { var arr = elem.Value.AsArray();
app.MapGet(string.Format("/{0}", elem.Key), () =&gt; elem.Value.ToString());
}</LI-CODE> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>In the above code, we
navigate into the root object. Then, we convert it to an object representation
and starts iterating over the keys, according to the mock file, that
means<SPAN>&nbsp;</SPAN><CODE>Products</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>Orders</CODE>.
Lastly, we setup the route and the callback, the route is
at<SPAN>&nbsp;</SPAN><CODE>elem.Key</CODE><SPAN>&nbsp;</SPAN>and the value we
want to return is at<SPAN>&nbsp;</SPAN><CODE>elem.Value</CODE>.</P> <OL> <LI>In
the file<SPAN>&nbsp;</SPAN><EM>Program.cs</EM><SPAN>&nbsp;</SPAN>add the
following line:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp">
app.UseExtraRoutes();</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>The preceding code will ensure our routes are added to the app.</P>
<OL> <LI>Run<SPAN>&nbsp;</SPAN><CODE>dotnet run</CODE>, to run the app</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="bash"> dotnet run</LI-CODE> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>Navigate to the
port indicated in the console output and navigate
to<SPAN>&nbsp;</SPAN><CODE>/products</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>/orders</CODE>,
they should both show an output</LI> </OL> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-get-endraw-by-id"
target="_blank" rel="noopener"
name="add-raw-get-endraw-by-id"></A>Add<SPAN>&nbsp;</SPAN><CODE>GET</CODE><SPAN>&nbsp;</SPAN>by
id</H3> <P>Ok, you got the basic GET case to work, what about filtering the data
with parameter. Using<SPAN>&nbsp;</SPAN><CODE>/products/1</CODE>, should just
return one record back. How do we do that?</P> <OL> <LI>Add the following code
in the foreach loop in<SPAN>&nbsp;</SPAN><EM>MockMiddlware.cs</EM>:</LI> </OL>
<P>&nbsp;</P> <LI-CODE lang="csharp">app.MapGet(string.Format("/{0}", elem.Key)
+ "/{id}", (int id) =&gt; { var matchedItem = arr.SingleOrDefault(row =&gt; row
.AsObject() .Any(o =&gt; o.Key.ToLower() == "id" &amp;&amp;
int.Parse(o.Value.ToString()) == id) ); return matchedItem; });</LI-CODE>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>The above code is
iterating over the rows for a specific route and looks for
an<SPAN>&nbsp;</SPAN><CODE>id</CODE><SPAN>&nbsp;</SPAN>property that matches
our<SPAN>&nbsp;</SPAN><CODE>{id}</CODE><SPAN>&nbsp;</SPAN>pattern. The found
item is returned.</P> <OL> <LI>Run<SPAN>&nbsp;</SPAN><CODE>dotnet
run</CODE><SPAN>&nbsp;</SPAN>to test out this code:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="bash"> dotnet run</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <OL> <LI>Navigate to<SPAN>&nbsp;</SPAN><CODE>/products/1</CODE>, you
should see the following JSON output:</LI> </OL> <P>&nbsp;</P> <LI-CODE
lang="bash"> { "Id": 1, "Name": "Mock" }</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Great, we got it to
work.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#exercise-write-data"
target="_blank" rel="noopener" name="exercise-write-data"></A>Exercise - write
data</H2> <P>Now that we can read data from our mock API, lets tackle writing
data. The fact that we
were<SPAN>&nbsp;</SPAN><CODE>JsonNode.Parse()</CODE><SPAN>&nbsp;</SPAN>in the
beginning makes it possible for us to use operations on
the<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE><SPAN>&nbsp;</SPAN>instance. In
short, our approach will be:</P> <UL> <LI>find the specific place in
the<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE>, that represents our mock data, and
change it</LI> <LI>save down the
whole<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE><SPAN>&nbsp;</SPAN>instance to
our<SPAN>&nbsp;</SPAN><EM>mock.json</EM>. If the user uses an operation to
change the data, that should be reflected in the Mock file.</LI> </UL> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-post-endraw-"
target="_blank" rel="noopener"
name="add-raw-post-endraw-"></A>Add<SPAN>&nbsp;</SPAN><CODE>POST</CODE></H3>
<P>To implement this route, we will
use<SPAN>&nbsp;</SPAN><CODE>MapPost()</CODE><SPAN>&nbsp;</SPAN>but we can't just
give it a typed object in the callback for the route, because we don't know what
it looks like. Instead, we will use the request object, read the body and add
that to the<SPAN>&nbsp;</SPAN><CODE>JsonNode</CODE>.</P> <OL> <LI>Add following
code to support<SPAN>&nbsp;</SPAN><CODE>POST</CODE>:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="csharp"> app.MapPost(string.Format("/{0}", elem.Key), async
(HttpRequest request) =&gt; { string content = string.Empty; using(StreamReader
reader = new StreamReader(request.Body)) { content = await
reader.ReadToEndAsync(); } var newNode = JsonNode.Parse(content); var array =
elem.Value.AsArray(); newNode.AsObject().Add("Id", array.Count() + 1);
array.Add(newNode); File.WriteAllText("mock.json", writableDoc.ToString());
return content; });</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>In the above code, we
have<SPAN>&nbsp;</SPAN><CODE>request</CODE><SPAN>&nbsp;</SPAN>as input parameter
to our route handler function.</P> <P>&nbsp;</P> <LI-CODE lang="csharp">
app.MapPost(string.Format("/{0}", elem.Key), async (HttpRequest request) =&gt;
{});</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>Then we read the body, using
a<SPAN>&nbsp;</SPAN><CODE>StreamReader</CODE>.</P> <P>&nbsp;</P> <LI-CODE
lang="csharp"> using(StreamReader reader = new StreamReader(request.Body)) {
content = await reader.ReadToEndAsync(); }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Next, we construct a
JSON representation from our received BODY:</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">var newNode = JsonNode.Parse(content);</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>This is followed by
locating the place to insert this new JSON and adding it:</P> <P>&nbsp;</P>
<LI-CODE lang="csharp">var array = elem.Value.AsArray();
newNode.AsObject().Add("Id", array.Count() + 1); array.Add(newNode);</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Lastly, we update the
mock file and respond something back to the calling client:</P> <P>&nbsp;</P>
<LI-CODE lang="csharp">File.WriteAllText("mock.json", writableDoc.ToString());
return content;</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-raw-delete-endraw-"
target="_blank" rel="noopener"
name="add-raw-delete-endraw-"></A>Add<SPAN>&nbsp;</SPAN><CODE>DELETE</CODE></H3>
<P>To support deletion, we need a very similar approach to how we located an
entry by id parameter. We also need to locate where to delete in
the<SPAN>&nbsp;</SPAN><CODE>JsonObject</CODE>.</P> <OL> <LI>Add the following
code to support delete:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="csharp">
app.MapDelete(string.Format("/{0}", elem.Key) + "/{id}", (int id) =&gt; { var
matchedItem = arr .Select((value, index) =&gt; new{ value, index})
.SingleOrDefault(row =&gt; row.value .AsObject() .Any(o =&gt; o.Key.ToLower() ==
"id" &amp;&amp; int.Parse(o.Value.ToString()) == id) ); if (matchedItem != null)
{ arr.RemoveAt(matchedItem.index); File.WriteAllText("mock.json",
writableDoc.ToString()); } return "OK"; });</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>First, we find the item
in question, but we also make sure that we know what the index of the found item
is. We will use this index later to remove the item. Hence, we get the following
code:</P> <P>&nbsp;</P> <LI-CODE lang="csharp"> var matchedItem = arr
.Select((value, index) =&gt; new{ value, index}) .SingleOrDefault(row =&gt;
row.value .AsObject() .Any(o =&gt; o.Key.ToLower() == "id" &amp;&amp;
int.Parse(o.Value.ToString()) == id) );</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV>
<P>Our<SPAN>&nbsp;</SPAN><CODE>matchedItem</CODE><SPAN>&nbsp;</SPAN>now contains
either NULL or an object that has
an<SPAN>&nbsp;</SPAN><CODE>index</CODE><SPAN>&nbsp;</SPAN>property. Using
this<SPAN>&nbsp;</SPAN><CODE>index</CODE><SPAN>&nbsp;</SPAN>property, we will be
able to perform deletions:</P> <P>&nbsp;</P> <LI-CODE lang="csharp"> if
(matchedItem != null) { arr.RemoveAt(matchedItem.index);
File.WriteAllText("mock.json", writableDoc.ToString()); }</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>To test writes, use
something like Postman or Advanced REST client, it should work.</P> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#add-route-info"
target="_blank" rel="noopener" name="add-route-info"></A>Add route info</H3>
<P>We're almost done, as courtesy towards the programmer using this code, we
want to print out what routes we have and support so it's easy to know what we
support.</P> <OL> <LI>Add this code, just at the start of the
method<SPAN>&nbsp;</SPAN><CODE>UseExtraRoutes()</CODE>:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="csharp"> // print API foreach (var elem in
writableDoc?.Root.AsObject().AsEnumerable()){
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(string.Format("POST /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("DELETE /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(" "); }</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>That's it, that's all we intend to implement. Hopefully, this is all
useful to you and you will be able to use it next you just want an API up and
running that you can build a front-end app off of.</P> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#full-code"
target="_blank" rel="noopener" name="full-code"></A>Full code</H3> <P>If you got
lost at any point, here's the full code:</P> <P><EM>Program.cs</EM></P>
<P>&nbsp;</P> <LI-CODE lang="csharp">using Mock; var builder =
WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/",
() =&gt; "Hello World!"); app.UseExtraRoutes(); // this is where our routes get
added app.Run();</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P><EM>MockMiddleware.cs</EM></P> <P>&nbsp;</P> <LI-CODE
lang="csharp">using System.Text.Json; using System.Text.Json.Nodes; namespace
Mock; public static class RouteMiddlewareExtensions { public static
WebApplication UseExtraRoutes(this WebApplication app) { var writableDoc =
JsonNode.Parse(File.ReadAllText("mock.json")); // print API foreach (var elem in
writableDoc?.Root.AsObject().AsEnumerable()){
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("GET /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(string.Format("POST /{0}", elem.Key.ToLower()));
Console.WriteLine(string.Format("DELETE /{0}", elem.Key.ToLower()) + "/id");
Console.WriteLine(" "); } // setup routes foreach(var elem in
writableDoc?.Root.AsObject().AsEnumerable()) { var arr = elem.Value.AsArray();
app.MapGet(string.Format("/{0}", elem.Key), () =&gt; elem.Value.ToString());
app.MapGet(string.Format("/{0}", elem.Key) + "/{id}", (int id) =&gt; { var
matchedItem = arr.SingleOrDefault(row =&gt; row .AsObject() .Any(o =&gt;
o.Key.ToLower() == "id" &amp;&amp; int.Parse(o.Value.ToString()) == id) );
return matchedItem; }); app.MapPost(string.Format("/{0}", elem.Key), async
(HttpRequest request) =&gt; { string content = string.Empty; using(StreamReader
reader = new StreamReader(request.Body)) { content = await
reader.ReadToEndAsync(); } var newNode = JsonNode.Parse(content); var array =
elem.Value.AsArray(); newNode.AsObject().Add("Id", array.Count() + 1);
array.Add(newNode); File.WriteAllText("mock.json", writableDoc.ToString());
return content; }); app.MapPut(string.Format("/{0}", elem.Key), () =&gt; {
return "TODO"; }); app.MapDelete(string.Format("/{0}", elem.Key) + "/{id}", (int
id) =&gt; { var matchedItem = arr .Select((value, index) =&gt; new{ value,
index}) .SingleOrDefault(row =&gt; row.value .AsObject() .Any(o =&gt;
o.Key.ToLower() == "id" &amp;&amp; int.Parse(o.Value.ToString()) == id) ); if
(matchedItem != null) { arr.RemoveAt(matchedItem.index);
File.WriteAllText("mock.json", writableDoc.ToString()); } return "OK"; }); };
return app; } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <H3><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#update-homework"
target="_blank" rel="noopener" name="update-homework"></A>Update - homework</H3>
<P>For your homework, see if you can implement PUT. :)</img></P> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/dotnet/how-you-can-build-a-mock-api-based-on-json-for-asp-net-and-minimal-api-1dmd#summary"
target="_blank" rel="noopener" name="summary"></A>Summary</H2> <P>I took you
through a journey of implementing a Mock API for minimal APIs. Hopefully, you
found this useful and can use it in a future project.</P> <P>Here's a repo for
the code<SPAN>&nbsp;</SPAN><A href="https://github.com/softchris/mock-sharp.git"
target="_blank" rel="noopener">repo</A></P> <BLOCKQUOTE> <P>Please comment if
you want me to make this into either a tool or a NuGet package :)</img></P>
</BLOCKQUOTE></description>
<pubDate>Tue, 22 Feb 2022 01:06:24 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-can-build-a-mock-rest-api-based-on-json-for-asp-net-and/ba-p/3196039</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2022-02-22T01:06:24Z</dc:date>
...
</item>
<item>
<title>Azure Cache for Redis TLS: Upcoming migration to DigiCert Global G2 CA
Root</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-cache-for-redis-tls-upcoming-migration-to-digicert-global/ba-p/3171086</link>
<description><P><STRONG>This blog contains important information about
TLS&nbsp;certificate changes for Azure&nbsp;Cache for Redis&nbsp;endpoints
that&nbsp;<U>may</U>&nbsp;impact client connectivity.&nbsp;</STRONG>&nbsp;</P>
<P>&nbsp;</P> <P>In 2020, most Azure services were updated to use TLS
certificates from Certificate Authorities (CAs) that chain up to the DigiCert
Global G2 root. However, Azure Cache for Redis, remained on TLS certificates
issued by the Baltimore CyberTrust Root.&nbsp;Because the current Baltimore
CyberTrust Root will expire in May 2025, now is the time for Azure Cache for
Redis&nbsp;to switch to the DigiCert Global G2
CA&nbsp;Root*.&nbsp;The&nbsp;migration&nbsp;will&nbsp;start
in&nbsp;May&nbsp;2022, and finish by&nbsp;the end
of&nbsp;June&nbsp;2022.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>We expect that
most Azure&nbsp;Cache for </STRONG><STRONG>Redis&nbsp;customers will not be
impacted; however, your application&nbsp;may be impacted&nbsp;if you explicitly
specify a list of acceptable CAs (a practice known as “certificate
pinning”)</STRONG>.&nbsp;This change is limited&nbsp;to&nbsp;the&nbsp;<A
href="https://azure.microsoft.com/regions/" target="_blank"
rel="noopener">public Azure cloud and Azure Government cloud</A>.&nbsp;There are
no changes in Azure sovereign cloud offerings.</P> <P><STRONG>If any of your
client applications are pinned to&nbsp;the&nbsp;root CA&nbsp;Baltimore
CyberTrust Root&nbsp;or&nbsp;current&nbsp;intermediate CAs&nbsp;listed in the
table below</STRONG>,&nbsp;<STRONG>immediate action is required</STRONG>&nbsp;to
prevent disruption&nbsp;to&nbsp;connectivity to Azure&nbsp;Cache for
Redis.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><EM>*&nbsp;Other Azure service TLS
certificates may be issued by a different PKI. *</EM></P> <P>&nbsp;</P>
<P><EM>Overview of Action Required</EM></P> <P>&nbsp;</P> <UL> <LI>If your
client application has pinned to the Baltimore CyberTrust Root CA, in addition
to Baltimore, add&nbsp;the <A
href="https://www.digicert.com/kb/digicert-root-certificates.htm"
target="_blank" rel="noopener">DigiCert Global Root G2</A> to your trusted root
store&nbsp;before May 2022.&nbsp;</LI> <LI>If your client application has pinned
to the&nbsp;intermediate&nbsp;CAs, in addition to&nbsp;Microsoft RSA TLS CAs,
add the&nbsp;Microsoft Azure TLS Issuing CAs to your trusted root
store&nbsp;before May 2022.&nbsp;</LI> <LI>Keep using the current root or
intermediate CAs in your applications or devices until the transition period is
completed (necessary to prevent connection
interruption).&nbsp;<EM>&nbsp;</EM></LI> </UL> <P><FONT size="5"><STRONG><U>How
to check if&nbsp;your client application is affected</U></STRONG></FONT></P>
<P>Check if your application has pinned to&nbsp;&nbsp;</P> <UL> <LI>Root
CA:&nbsp;Baltimore CyberTrust Root CA&nbsp;or,&nbsp;&nbsp;</LI> <LI>Intermediate
CA: Microsoft&nbsp;RSA&nbsp;TLS CA&nbsp;01&nbsp;</LI> <LI>Intermediate CA:
Microsoft&nbsp;RSA&nbsp;TLS CA&nbsp;02&nbsp;</LI> </UL> <P>Search your source
code for the thumbprint, Common Name, and other cert properties of any of
the&nbsp;root CA&nbsp;or intermediate CAs.&nbsp;If there is a match, then your
application will be impacted,&nbsp;<STRONG>immediate action is
required</STRONG>.</P> <P>&nbsp;</P> <P><FONT size="5"><STRONG><U>Action
required&nbsp;</U></STRONG></FONT></P> <P>1. To continue without disruption due
to this change, Microsoft recommends&nbsp;that, in addition to Baltimore, client
applications or devices trust the&nbsp;root CA&nbsp;–&nbsp;DigiCert
Global&nbsp;Root&nbsp;G2:&nbsp;</P> <P><A
href="https://www.digicert.com/kb/digicert-root-certificates.htm"
target="_blank" rel="noopener">DigiCert Global Root G2&nbsp;<BR
/></A>(Thumbprint:&nbsp;df3c24f9bfd666761b268073fe06d1cc8d4f82a4)&nbsp;</P>
<P>Intermediate certificates are expected to
change&nbsp;more&nbsp;frequently&nbsp;than the root CAs.&nbsp;Customers
who&nbsp;use certificate pinning are&nbsp;recommended to&nbsp;not take
dependencies on them and instead pin&nbsp;to&nbsp;the root certificate as it
rolls less frequently.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>2.&nbsp;&nbsp;<SPAN
data-contrast="auto">To prevent future disruption,&nbsp;you&nbsp;should also add
the following roots&nbsp;to the trusted store. This will save you from the
allowlist effort in near future&nbsp;if you add the&nbsp;recommended
root&nbsp;CAs now:</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI><A title="DigiCert Global Root G3"
href="https://www.digicert.com/kb/digicert-root-certificates.htm" target="_self"
rel="nofollow noopener noreferrer"><SPAN data-contrast="none">DigiCert
Global&nbsp;</SPAN><SPAN data-contrast="none">Root</SPAN><SPAN
data-contrast="none">&nbsp;G3</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;<BR
/></SPAN><SPAN data-contrast="auto">(Thumbprint:
7e04de896a3e666d00e687d33ffad93be83d349e)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><A
href="https://www.microsoft.com/pkiops/certs/Microsoft%20RSA%20Root%20Certificate%20Authority%202017.crt"
target="_blank" rel="noopener noreferrer"><SPAN data-contrast="none">Microsoft
RSA Root Certificate Authority 2017</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;<BR
/></SPAN><SPAN data-contrast="auto">(Thumbprint:
73a5e64a3bff8316ff0edccc618a906e4eae4d74)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><A
href="https://www.microsoft.com/pkiops/certs/Microsoft%20ECC%20Root%20Certificate%20Authority%202017.crt"
target="_blank" rel="noopener noreferrer"><SPAN data-contrast="none">Microsoft
ECC Root Certificate Authority 2017</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;<BR
/></SPAN><SPAN data-contrast="auto">(Thumbprint:
999a64c37ff47d9fab95f14769891460eec4c3c5)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P><BR />3. If you&nbsp;are currently pinning to the intermediate CAs
and&nbsp;have a requirement to&nbsp;continue&nbsp;pinning&nbsp;to intermediate
CAs,&nbsp;to&nbsp;prevent future disruption, you should also add the
intermediate&nbsp;<SPAN>Microsoft Azure ECC TLS CAs listed in the table below to
the trusted store.</SPAN></P> <P>List of possible Root CAs is available here: <A
href="https://docs.microsoft.com/azure/security/fundamentals/tls-certificate-changes#what-is-changing"
target="_blank" rel="noopener">Azure TLS Certificate Changes | Microsoft
Docs</A></P> <P>&nbsp;</P> <P><EM><U>Support</U></EM></P> <P><SPAN
data-contrast="auto">If you have any questions, get answers from community
experts in <A href="https://aka.ms/redis/QnA" target="_self">Microsoft
Q&amp;A</A>. If you have completed step 1 and need technical help, please open
a </SPAN><A
href="https://ms.portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/newsupportrequest"
target="_blank" rel="noopener nofollow noreferrer"><SPAN
data-contrast="none">support request</SPAN></A><SPAN data-contrast="auto"> with
the options below&nbsp;and a member from our engineering team will get back to
you.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI><SPAN data-contrast="auto">For&nbsp;<EM>Issue type</EM>,
select&nbsp;<STRONG>Technical</STRONG>.</SPAN></LI> <LI><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">For&nbsp;<EM>Subscription</EM>,
select your subscription.&nbsp;</SPAN></LI> <LI><SPAN
data-contrast="auto">For&nbsp;<EM>Service</EM>, select&nbsp;<STRONG>My
Services</STRONG>, then select&nbsp;<STRONG>Cache for
Redis</STRONG>.</SPAN></LI> <LI><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">For&nbsp;<EM>Resource</EM>,
select your resource.&nbsp;</SPAN></LI> <LI><SPAN
data-contrast="auto">For&nbsp;<EM>Problem type</EM>,
select&nbsp;<STRONG>Availability, Connectivity and
Timeouts</STRONG>.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">For&nbsp;<EM>Problem subtype</EM>,
select&nbsp;<STRONG>Connection Error</STRONG>.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P>&nbsp;</P> <P><U><EM>Certificate Renewal Summary&nbsp;</EM></U></P>
<P>The table below provides information about the certificates that are being
rolled out. Depending on which certificate your service uses for establishing
TLS connections, action may be needed to prevent loss of
connectivity.&nbsp;&nbsp;</P> <P>&nbsp;</P> <TABLE width="587"> <TBODY> <TR> <TD
width="58"> <P><STRONG>Certificate</STRONG>&nbsp;</P> </TD> <TD width="175">
<P><STRONG>Current</STRONG>&nbsp;</P> </TD> <TD width="264"> <P><STRONG>Post
Rollover (May 2022)</STRONG>&nbsp;</P> </TD> <TD width="90">
<P><STRONG>Action</STRONG>&nbsp;</P> </TD> </TR> <TR> <TD width="58">
<P>Root&nbsp;</P> </TD> <TD width="175"> <P>Thumbprint&nbsp;(SHA1):
d4de20d05e66fc53fe1a50882c78db2852cae474&nbsp;<BR />Expiration: Monday, May 12,
2025, 4:59:00 PM&nbsp;<BR />Subject Name:&nbsp;<BR />CN = Baltimore CyberTrust
Root&nbsp;</P> <P>OU = CyberTrust&nbsp;<BR />O = Baltimore&nbsp;<BR />C =
IE&nbsp;&nbsp;</P> </TD> <TD width="264"> <P>Thumbprint&nbsp;(SHA1):
df3c24f9bfd666761b268073fe06d1cc8d4f82a4&nbsp;</P> <P>Expiration: ‎Friday,
‎January ‎15, ‎2038 5:00:00 AM&nbsp;<BR />Subject Name:&nbsp;<BR />CN = DigiCert
Global Root G2&nbsp;<BR />OU = <A href="http://www.digicert.com/"
target="_blank" rel="noopener">www.digicert.com&nbsp;<BR /></A>O = DigiCert
Inc&nbsp;<BR />C = US &nbsp;</P> </TD> <TD width="90">
<P><STRONG>Required&nbsp;by</STRONG></P> <P><STRONG>April 30,
2022</STRONG>&nbsp;</P> </TD> </TR> <TR> <TD width="58"> <P>Root&nbsp;</P> </TD>
<TD width="175"> <P>&nbsp;&nbsp;</P> </TD> <TD width="264"> <P>Thumbprint
(SHA1):&nbsp;<BR />7e04de896a3e666d00e687d33ffad93be83d349e&nbsp;<BR
/>Expiration: Friday, ‎January ‎15, ‎2038 5:00:00 AM&nbsp;<BR />CN = DigiCert
Global Root G3&nbsp;<BR />OU =&nbsp;<A href="http://www.digicert.com/"
target="_blank" rel="noopener">www.digicert.com&nbsp;<BR /></A>O = DigiCert
Inc&nbsp;<BR />C = US&nbsp;</P> <P>&nbsp;</P> <P>Thumbprint (SHA1):&nbsp;<BR
/>73a5e64a3bff8316ff0edccc618a906e4eae4d74&nbsp;<BR />Expiration: Friday, ‎July
‎18, ‎2042 4:00:23 PM&nbsp;<BR />CN = Microsoft RSA Root Certificate Authority
2017&nbsp;<BR />O = Microsoft Corporation&nbsp;<BR />C = US&nbsp;</P>
<P>&nbsp;</P> <P>Thumbprint (SHA1):&nbsp;<BR
/>999a64c37ff47d9fab95f14769891460eec4c3c5&nbsp;<BR />Expiration: Friday, ‎July
‎18, ‎2042 4:16:04&nbsp;PM&nbsp;<BR />CN = Microsoft&nbsp;ECC&nbsp;Root
Certificate Authority 2017&nbsp;<BR />O = Microsoft Corporation&nbsp;<BR />C =
US&nbsp;</P> <P>&nbsp;</P> </TD> <TD width="90"> <P><STRONG>Recommended&nbsp;to
prevent&nbsp;disruption&nbsp;<BR />from&nbsp;future changes</STRONG>&nbsp;</P>
</TD> </TR> <TR> <TD width="58"> <P>Intermediates&nbsp;</P> </TD> <TD
width="175"> <P><U>Thumbprints&nbsp;(SHA1):&nbsp;</U>&nbsp;</P> <P> &nbsp;</P>
<P>CN = Microsoft RSA TLS CA 01&nbsp;</P> <P>Thumbprint:&nbsp;</P>
<P>703d7a8f0ebf55aaa59f98eaf4a206004eb2516a&nbsp;</P> <P>&nbsp;</P> <P>CN =
Microsoft RSA TLS CA 02&nbsp;</P> <P>Thumbprint:
b0c2d2d13cdd56cdaa6ab6e2c04440be4a429c75&nbsp;</P> <P> &nbsp;</P> <P>Expiration:
‎Tuesday, ‎October ‎8, ‎2024 12:00:00 AM.&nbsp;&nbsp;<BR />Subject
Name:&nbsp;&nbsp;</P> <P>O = Microsoft Corporation&nbsp;</P> <P>C = US&nbsp;</P>
</TD> <TD width="264"> <P><U>Thumbprints&nbsp;(SHA1):&nbsp;</U>&nbsp;</P>
<P> &nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 01&nbsp;<BR
/>Thumbprint: &nbsp;</P> <P>b9ed88eb05c15c79639493016200fdab08137af3&nbsp;</P>
<P>&nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 02&nbsp;</P>
<P>Thumbprint: &nbsp;</P> <P>c5fb956a0e7672e9857b402008e7ccad031f9b08&nbsp;</P>
<P>&nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 05&nbsp;&nbsp;</P>
<P>Thumbprint: &nbsp;</P> <P>56f1ca470bb94e274b516a330494c792c419cf87&nbsp;</P>
<P>&nbsp;</P> <P>CN =&nbsp;Microsoft Azure TLS Issuing CA 06&nbsp;</P>
<P>Thumbprint: &nbsp;</P> <P>8f1fd57f27c828d7be29743b4d02cd7e6e5f43e6&nbsp;</P>
<P>&nbsp;</P> <P>Expiration: ‎Thursday, ‎June&nbsp;27,
‎2024&nbsp;4:59:59&nbsp;PM;&nbsp;<BR />Subject Name:&nbsp;</P> <P>Issuer
=&nbsp;Microsoft&nbsp;RSA&nbsp;Root Certificate Authority 2017&nbsp;</P> <P>O =
Microsoft Corporation&nbsp;</P> <P>C = US&nbsp;</P> <P>&nbsp;</P>
<P>-------------------------------------------------------</P> <P>&nbsp;</P>
<P>CN =&nbsp;Microsoft Azure TLS Issuing CA 01&nbsp;<BR />Thumbprint: &nbsp;</P>
<P>2f2877c5d778c31e0f29c7e371df5471bd673173&nbsp;</P> <P>&nbsp;</P> <P>CN
=&nbsp;Microsoft Azure TLS Issuing CA 02&nbsp;</P> <P>Thumbprint: &nbsp;</P>
<P>e7eea674ca718e3befd90858e09f8372ad0ae2aa&nbsp;</P> <P>&nbsp;</P> <P>CN
=&nbsp;Microsoft Azure TLS Issuing CA 05&nbsp;<BR />Thumbprint: &nbsp;</P>
<P>6c3af02e7f269aa73afd0eff2a88a4a1f04ed1e5&nbsp;</P> <P>&nbsp;</P> <P>CN
=&nbsp;Microsoft Azure TLS Issuing CA 06&nbsp;</P> <P>Thumbprint: &nbsp;</P>
<P>30e01761ab97e59a06b41ef20af6f2de7ef4f7b0&nbsp;</P> <P>&nbsp;</P>
<P>Expiration: ‎Thursday, ‎June&nbsp;27,
‎2024&nbsp;4:59:59&nbsp;PM;&nbsp;&nbsp;<BR />Subject Name:&nbsp;&nbsp;</P>
<P>Issuer = DigiCert Global Root G2&nbsp;</P> <P>O =&nbsp;DigiCert Inc&nbsp;</P>
<P>C = US&nbsp;</P> <P>&nbsp;</P> </TD> <TD width="90">
<P><STRONG>Required&nbsp;by</STRONG></P> <P><STRONG>April 30,
2022&nbsp;</STRONG>&nbsp;</P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Sat, 05 Mar 2022 00:19:53 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-cache-for-redis-tls-upcoming-migration-to-digicert-global/ba-p/3171086</guid>
<dc:creator>Shruti_Pathak</dc:creator>
<dc:date>2022-03-05T00:19:53Z</dc:date>
...
</item>
<item>
<title>Building a Cloud Native Lab - Scripted Edition</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-scripted-edition/ba-p/3169848</link>
<description><P style="margin: 0in; margin-left: .375in; font-family: Calibri;
font-size: 11.0pt;">Last year I did a blog post on how to build a cloud native
lab at home based on Azure Stack HCI and AKS:</P> <P style="margin: 0in;
margin-left: .375in; font-family: Calibri; font-size: 11.0pt;"><A
title="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504</A></P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; margin-left: .375in; font-family:
Calibri; font-size: 11.0pt;">In that post I mentioned in passing that I'd also
be looking into doing day two stuff. And I did. It just didn't materialize in a
new post :)</img></P> <P style="margin: 0in; margin-left: .375in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;">What I realized when testing
out stuff was that while I did use my own blog post for reference it was sort of
unpractical scrolling up and down the page to find the right command, and
jumping between various tools and ways of solving things. I thought that "hey,
wouldn't it be nice if I could just start a script and have it go through
everything automatically?" Of course it would; it was just a matter of a little
bit of effort getting there. (Or almost there at least.)</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">TL;DR - I have a repo over at <A
title="https://github.com/ahelland/Cloud-Native-DevLab"
href="https://github.com/ahelland/Cloud-Native-DevLab" target="_blank"
rel="noopener">https://github.com/ahelland/Cloud-Native-DevLab</A> where I have
made a collection of scripts to set you up with an AKS cluster along with a
couple of features you may need/want to test on your Windows Server/Azure Stack
HCI box.</P> <P style="margin: 0in; margin-left: .375in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; margin-left: .375in;
font-family: Calibri; font-size: 11.0pt;">Still here? I'll call out a few things
to provide a backdrop and a couple of explanations.</P> <P style="margin: 0in;
margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">I wanted to have a repo you could pull down and step through
interactively on your client computer using .NET Interactive Notebooks. That's a
great way to run code inline in a document. Turns out that doesn't work when you
attempt to setup a remote PowerShell session.</P> <P style="margin: 0in;
margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">I was also thinking about having the repo set up Visual Studio Code and
all the UI tooling you need (locally on the host system). That sort of worked,
but that would assume you're running the Desktop Experience which you're not
doing if you use Azure Stack HCI. So I made it a command line experience - you
probably need to copy the initial bootstrapping from your desktop to the server,
but as part of the bootstrap Git is installed and the repo pulled down so you
can do the rest without having a CTRL-C + CTRL-V party.</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">So, looking at the commit dates it seems this was done a long time ago?
Yes and no. A couple of things went up early, but I needed some QA time and was
also stuck on bugs with the product and the components so it wasn't that easy. I
didn't want to provide a guide sending you straight into "this doesn't work".
There's also other things I spent time testing that ended up being left out. And
I wasn't in a hurry I guess :)</img></P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">Modularizing
it however was not an error; that was a deliberate choice. I have separated
things into sections that should be independent of each other&nbsp; - you just
want to test Flux and don't care about Grafana? No prob.</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<P style="margin: 0in; margin-left: .375in; font-family: Calibri; font-size:
11.0pt;">The repo does not go into great lengths explaining choices and the
"why" of things. I wanted to keep it more to the point. That way it is easier to
update and replace things as well.</P> <P style="margin: 0in; margin-left:
.375in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin:
0in; margin-left: .375in; font-family: Calibri; font-size: 11.0pt;">Here are
sections and components of the guide:</P> <UL style="direction: ltr;
unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="disc"> <LI
style="margin-top: 12pt; margin-bottom: 12pt; vertical-align: middle; color:
#201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/01_Bootstrap"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">01_Bootstrap</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />We install the necessary tooling and install a management and a
workload cluster.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/02_Monitoring"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">02_Monitoring</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />We install Prometheus, Grafana and Jaeger. Loadbalancers for all
three are also created (if you want), but not DNS names.</SPAN></LI> <LI
style="margin-top: 12pt; margin-bottom: 12pt; vertical-align: middle; color:
#201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/03_Azure_Policy"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">03_Azure_Policy</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />We create a service principal (with a "Policy Writer" role) and
use this to enable Azure Policy in our cluster.</SPAN></LI> <LI
style="margin-top: 12pt; margin-bottom: 12pt; vertical-align: middle; color:
#201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/04_ExternalAccess"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">04_ExternalAccess</SPAN></A><SPAN style="font-family: Calibri;
font-size: 11.0pt;"><BR />We install Nginx and CertManager, and configure
integration with Azure DNS. This enables you to have Kubernetes take care of
configuring DNS for you and enroll a certificate from Let's Encrypt when you
deploy an application to the cluster.</SPAN></LI> <LI style="margin-top: 12pt;
margin-bottom: 12pt; vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/05_MonitoringIngress"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">05_MonitoringIngress</SPAN></A><SPAN style="font-family: Calibri;
font-size: 11.0pt;"><BR />This section provides configuration files for enabling
ingress for Prometheus and Jaeger.</SPAN></LI> <LI style="margin-top: 12pt;
margin-bottom: 12pt; vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/06_AzureServiceOperator"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">06_AzureServiceOperator</SPAN></A><SPAN style="font-family: Calibri;
font-size: 11.0pt;"><BR />Brief explanation on Azure Service Operator with links
to MS docs.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/07_Dapr"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">07_Dapr</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />Explanation of Dapr plus installation commands. Links to more
info and samples.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/08_Flux"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">08_Flux</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />Installation of a sample app using a GitOps approach with
Flux.</SPAN></LI> <LI style="margin-top: 12pt; margin-bottom: 12pt;
vertical-align: middle; color: #201f1e;"><A
href="https://github.com/ahelland/Cloud-Native-DevLab/blob/main/Samples"
target="_blank"><SPAN style="font-family: Calibri; font-size:
11.0pt;">Samples</SPAN></A><SPAN style="font-family: Calibri; font-size:
11.0pt;"><BR />Samples for testing out the basic functionality of the cluster
based on the installations in the sections above.</SPAN></LI> </UL> <P
style="margin-left: .375in; margin-top: 12pt; margin-bottom: 12pt; font-family:
Calibri; font-size: 11.0pt; color: #201f1e;">While the focus is more on the
scripts than explanations I have attempted to include some instructions. Note
that you also need to fill in the blanks yourself for variables unique to your
environment. (Cloning the repo and just executing the PowerShell immediately
will most likely throw errors at you.)</P> <P style="margin-left: .375in;
margin-top: 12pt; margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt;
color: #201f1e;">I'm not saying this is the only way, or the right way for
everyone. And since the focus is on dev use it could very well be that you don't
care about things like Azure Policy. Having it all in one location and tested in
a cohesive manner should help though.</P> <P style="margin-left: .375in;
margin-top: 12pt; margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt;
color: #201f1e;">I'm currently working on testing workload identities. Worked
fairly easy on AKS in the cloud. Not as easy in the on-prem variant so we'll see
how that plays out. Point being - I try to add things to the guide, and will
attempt to both optimize and re-arrange content if needed. I also intend/want to
create more complex samples; but need to have the baseline working before going
all in on that.</P> <P style="margin-left: .375in; margin-top: 12pt;
margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt; color: #201f1e;">I
guess the value of all of this is still limited if you don't have the hardware
to run things. That has made me think of whether I should create a version for
AKS running in Azure as well, but I haven't decided - there are already a ton of
guides and documentation out there for that purpose.</P> <P style="margin-left:
.375in; margin-top: 12pt; margin-bottom: 12pt; font-family: Calibri; font-size:
11.0pt; color: #201f1e;"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="AzureStackHCI_Cluster.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/348449iCA020D9CCF30D643/image-size/large?v=v2&amp;px=999"
role="button" title="AzureStackHCI_Cluster.png" alt="AzureStackHCI_Cluster.png"
/></span></P> <P>&nbsp;</P> <P style="margin-left: .375in; margin-top: 12pt;
margin-bottom: 12pt; font-family: Calibri; font-size: 11.0pt; color:
#201f1e;">Here's the link to the repo again:<BR /><A title="GitHub -
ahelland/Cloud-Native-DevLab: Installation scripts and instructions for setting
up an on-prem dev lab based on Azure Stack HCI AKS."
href="https://github.com/ahelland/Cloud-Native-DevLab" target="_blank"
rel="noopener">https://github.com/ahelland/Cloud-Native-DevLab</A></P> <P
style="margin-left: .375in; margin-top: 12pt; margin-bottom: 12pt; font-family:
Calibri; font-size: 11.0pt; color: #201f1e;">As always - stay tuned for more
cloud fun!</P></description>
<pubDate>Tue, 15 Feb 2022 20:06:13 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-scripted-edition/ba-p/3169848</guid>
<dc:creator>Andreas Helland</dc:creator>
<dc:date>2022-02-15T20:06:13Z</dc:date>
...
</item>
<item>
<title>Winners Announced: Azure Hack for Wellness</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-hack-for-wellness/ba-p/3165373</link>
<description><P><SPAN>The nature of work has changed. The move to hybrid jobs is
underway, and the developer community is uniquely equipped to reimagine
experiences that enrich and fulfill employees’ wellness. Over 200 developers
participated in the <A href="https://wellnesshack.devpost.com/"
target="_self">Microsoft Azure Hack for Wellness</A>&nbsp;virtual hackathon
where the event specifically focused on using Azure services to help
organizations support their members' well beings. Organizations could be
businesses, schools, or communities. As a bonus, applications that integrate
into Microsoft Teams were eligible for additional prize. </SPAN></P>
<P>&nbsp;</P> <P><SPAN>See below for the top 3 winning projects:</SPAN></P>
<P>&nbsp;</P> <P><FONT size="6"><SPAN>1st Place: <A
href="https://devpost.com/software/rest-azzure" target="_self">Rest
Azzure</A></SPAN></FONT></P> <P><SPAN>Created by: Nefertiti Bourne, Ed Hart,
Marcos A Oliva</SPAN></P> <P><SPAN>A mobile app that connects with MS Teams and
chatbot and dashboard.</SPAN></P> <P><SPAN><LI-VIDEO
vid="https://youtu.be/N8Y6imL3iLo" align="center" size="large" width="600"
height="450" uploading="false"
thumbnail="https://i.ytimg.com/vi/N8Y6imL3iLo/hqdefault.jpg"
external="url"></LI-VIDEO><BR /></SPAN></P> <P><FONT size="6"><SPAN>2nd Place:
<A href="https://devpost.com/software/wellness-assistant" target="_self">Feeling
Well</A></SPAN></FONT></P> <P><SPAN>Created by: Zechen Lu, Amina Fong</SPAN></P>
<P><SPAN>Feeling Well incentivizes employees to take breaks for developing
wellness by offering monthly rewards based on the amount of breaks they
take.</SPAN></P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=9jNMFnzjeaA&amp;t=13s" align="center"
size="large" width="600" height="338" uploading="false"
thumbnail="https://i.ytimg.com/vi/9jNMFnzjeaA/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><FONT size="6"><SPAN>3rd
place: <A href="https://devpost.com/software/outstanding-meetings"
target="_self">Outstanding Meetings</A></SPAN></FONT></P> <P><SPAN>Created by:
Rupesh Kurvankattil, Tariku Tessema, Steve Jones</SPAN></P> <P><SPAN>Motivates
individuals in the workspace to practice healthy habits by standing up during
meetings.</SPAN></P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=bKxML45oewU" align="center" size="large"
width="600" height="338" uploading="false"
thumbnail="https://i.ytimg.com/vi/bKxML45oewU/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><FONT size="5"><U>Thank
You</U></FONT></P> <P>On behalf of the Microsoft U.S. Azure team, I'd like to
thank all of the participants, and congratulate the winners on a great job!</P>
<P>&nbsp;</P> <P>Thank you to the judges who volunteered their time to give back
to the community! Special thanks to <STRONG>Kendall Roden</STRONG>,
<STRONG>Nicole Herskowitz</STRONG>, <STRONG>Rajmohan Rajagopalan</STRONG>,
<STRONG>Scott Prather</STRONG>, <STRONG>Tomomi Imura</STRONG>, <STRONG>Uthappa
Kattera Chengappa</STRONG></P> <P>&nbsp;</P> <P><U><FONT size="5">Coming
up</FONT></U></P> <P>There are two more virtual hackathon events going on right
now! Take a look and feel free to sign up for one or more of these events!</P>
<UL> <LI><A href="https://aka.ms/hackthetrialtc" target="_self">Microsoft Azure
Trial Hackathon on DEV</A> - What's the most interesting thing you can do with a
free Azure trial? Submissions due March 8, 2022. Open to global
audiences.&nbsp;</LI> <LI><A href="https://aka.ms/humanitarianhacktc"
target="_self">Microsoft US Azure AI Hack for Humanitarian Action</A> - Build
for disaster response, refugees and displaced people, human rights, or the needs
of women and children with Azure AI. Submissions due March 28, 2022. Open to
U.S. residents.</LI> </UL> <P>&nbsp;</P></description>
<pubDate>Mon, 14 Feb 2022 23:42:38 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-hack-for-wellness/ba-p/3165373</guid>
<dc:creator>NinaSui</dc:creator>
<dc:date>2022-02-14T23:42:38Z</dc:date>
...
</item>
<item>
<title>How to utilize active geo-replication in Azure Cache for Redis</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-to-utilize-active-geo-replication-in-azure-cache-for-redis/ba-p/3074404</link>
<description><P>In an increasingly global and online world, the speed,
availability, and consistency of data has never been more important. We’ve seen
customers of all sizes take advantage of the outstanding performance of <A
href="https://azure.microsoft.com/services/cache/" target="_blank">Azure Cache
for Redis</A>, but we’ve also heard your requests for a Redis solution that
offers even higher availability and more robust geographic consistency. That’s
why we’re excited to announce the latest element of our collaboration with <A
href="https://redis.com/cloud-partners/microsoft-azure/" target="_blank">Redis
Corporation</A>—the general availability of active geo-replication in our
Enterprise offering of Azure Cache for Redis.</P> <P>&nbsp;</P> <H1>Active
geo-replication background</H1> <P>Active geo-replication is a powerful tool
that enables Azure Cache for Redis clusters to be linked together for seamless
active-active replication of data. In other words, you can write to one Redis
cluster and your data will be automatically copied to the other linked clusters,
and vice versa. Data is quickly duplicated with strong eventual consistency
between clusters. This multi-primary, multi-write architecture is built on <A
href="https://redis.com/redis-enterprise/technology/active-active-geo-distribution/"
target="_blank">conflict-free replicated data types (CRDTs)</A>, a
groundbreaking technology that enables seamless conflict resolution.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="kteegarden_0-1643313027910.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343084iB7053269D808AB29/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_0-1643313027910.png"
alt="kteegarden_0-1643313027910.png" /></span></P> <H1>Use-cases for active
geo-replication</H1> <P>Active geo-replication gives developers a powerful tool
to tackle otherwise frustrating technical challenges, such as:</P> <P>&nbsp;</P>
<H2>Enterprise-grade Availability</H2> <P>As Redis steadily increases in
popularity and adoption, it is becoming an essential part of mission-critical
applications. Many customers in the financial services, retail, and software
industries need Redis in both high availability and disaster recovery scenarios.
The Enterprise tiers of Azure Cache for Redis help deliver both. Zone redundancy
already enables Enterprise Azure Cache for Redis to be resilient to zone-level
outages and reach a <A
href="https://azure.microsoft.com/support/legal/sla/cache/v1_1/"
target="_blank">99.99% availability SLA</A>. Adding active geo-replication helps
further protect against region-level outages, <A
href="https://azure.microsoft.com/support/legal/sla/cache/v1_1/"
target="_blank">boosting the availability SLA up to 99.999%</A>.</P>
<P>&nbsp;</P> <P>Even better, experiencing the benefits of higher availability
is straightforward. Even if there is an outage in one region, the caches in
other regions will have the latest synchronized copy of the data in your cache.
And when the region comes back online, the original cache will automatically be
updated with data written to the linked regions during the outage.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="kteegarden_1-1643313027916.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343085iA140E1DDFA3DAF94/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_1-1643313027916.png"
alt="kteegarden_1-1643313027916.png" /></span></P> <P>&nbsp;</P> <H2>Local
Latency Performance</H2> <P>Customer expectations for speedy application
performance are sky high. <A
href="https://redis.com/wp-content/uploads/2021/08/DS-RedisLabs-Retail-Transformation.pdf"
target="_blank">Nine in ten shoppers will abandon a retail website if it is too
slow</A>. As applications become global, this presents a challenge with caching.
Your cache may be quick, but if your customers are talking to a cache that is
halfway around the world, network latency can erase the benefits of the cache.
With active geo-replication, you can get local latency performance while
maintaining cache consistency because users and applications can be directed to
the geo-replicated cache closest to them.</P> <P>&nbsp;</P> <P>&nbsp;</P>
<H2>Global Synchronization of Data</H2> <P>Managing multiple sources of data can
be a frustrating challenge. Scale or latency constraints can force you to silo
your app infrastructure by geography, which then can introduce data consistency
issues. Some applications are designed to have the same experience across
borders, which confounds the problem even further. For example, a game developer
might want all players to see a global leaderboard which ranks players across
regions. While Redis is a common way to implement a leaderboard, aggregating
multiple independent leaderboards from separate Redis instances is a hassle.
With active geo-replication, however, the linked Redis instances can all update
the same shared sorted set leaderboard, meaning a new high score in Tokyo will
be automatically ranked next to a score from a player in London.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="kteegarden_2-1643313027929.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/343086i1F8842A7C6FF9B0F/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_2-1643313027929.png"
alt="kteegarden_2-1643313027929.png" /></span></P> <H1>Try it on Azure</H1>
<P>Azure Cache for Redis gives you a fully-managed Redis experience. With full
portal integration, <A
href="https://docs.microsoft.com/azure/azure-cache-for-redis/cache-how-to-active-geo-replication"
target="_blank">configuring active geo-replication</A> is straightforward, and
gives you a wide selection of regions to choose from in the ever-growing Azure
footprint. <A href="https://azure.microsoft.com/en-us/free/" target="_blank">Try
active geo-replication today</A> in the Enterprise and Enterprise flash tiers of
Azure Cache for Redis, read how to <A
href="https://docs.microsoft.com/azure/azure-cache-for-redis/cache-how-to-active-geo-replication"
target="_blank">configure the feature</A>, or check out a <A
href="https://github.com/MSFTeegarden/Azure-Redis-Active-Geo-Demo"
target="_blank">simple active geo-replication demo</A>. &nbsp;</P></description>
<pubDate>Wed, 02 Feb 2022 16:00:00 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-to-utilize-active-geo-replication-in-azure-cache-for-redis/ba-p/3074404</guid>
<dc:creator>kteegarden</dc:creator>
<dc:date>2022-02-02T16:00:00Z</dc:date>
...
</item>
<item>
<title>New Learning path on Python 11 parts - check it out</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-on-python-11-parts-check-it-out/ba-p/3101700</link>
<description><P>On the Academic team, we set out to create a long path of Python
modules. The idea was to address all the concerns you might have starting out
with Python. All the way from learning the basic building blocks to managing
larger Python projects. Whether you're into #iot #datascience #machinelearning
or #webdev - this is a great way to start.</P> <P>&nbsp;</P> <P>Check out the
below article for more details on the learning path&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/educator-developer-blog/how-you-can-learn-python-with-this-11-part-series/ba-p/3101534#M779"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/educator-developer-blog/how-you-can-learn-python-with-this-11-part-series/ba-p/3101534#M779</A></P>
<P>&nbsp;</P> <P>If you just want to start learning, here's the path on
aka.ms/learn</P> <P><A
href="https://docs.microsoft.com/en-us/learn/paths/beginner-python/"
target="_self">Python path, 11 modules</A>&nbsp;</P> <P>&nbsp;</P> <P>It's free
- start learning today.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="pexels-lukas-296282.jpg" style="width:
800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/344356iF0C130D7263138F6/image-size/large?v=v2&amp;px=999"
role="button" title="pexels-lukas-296282.jpg" alt="pexels-lukas-296282.jpg"
/></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Tue, 01 Feb 2022 23:28:17 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-on-python-11-parts-check-it-out/ba-p/3101700</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2022-02-01T23:28:17Z</dc:date>
...
</item>
<item>
<title>Managing Microsoft365 with Microsoft365DSC and Azure DevOps</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/managing-microsoft365-with-microsoft365dsc-and-azure-devops/ba-p/3054333</link>
<description><P><A href="https://microsoft365dsc.com/" target="_blank"
rel="nofollow noopener">Microsoft365DSC</A><SPAN>&nbsp;is an&nbsp;Open-Source
PowerShell Desired State Module. It allows configuration, monitoring, exporting,
reporting and assessment of M365 tenants. Many organizations are implementing
DevOps practices and with&nbsp;</SPAN><A
href="https://github.com/microsoft/Microsoft365DSC" target="_blank"
rel="nofollow noopener">Microsoft365DSC</A><SPAN>&nbsp;and&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops"
target="_blank" rel="nofollow noopener">Azure DevOps</A><SPAN>&nbsp;you can
implement Configuration as Code within your Microsoft 365 tenant.</SPAN></P>
<P>&nbsp;</P> <P>At a high level the setup will look like:</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Microsoft365DSC and Azure DevOps" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/337970i89D684B397A69E18/image-size/large?v=v2&amp;px=999"
role="button" title="M365DSCDevOps (2).png" alt="Microsoft365DSC and Azure
DevOps" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Microsoft365DSC and Azure
DevOps</span></span></P> <P>&nbsp;</P> <P>The whitepaper<SPAN>&nbsp;</SPAN><A
href="https://office365dsc.azurewebsites.net/Pages/Resources/Whitepapers/Managing%20Microsoft%20365%20with%20Microsoft365Dsc%20and%20Azure%20DevOps.pdf"
target="_blank" rel="nofollow noopener">Microsoft365Dsc and Azure
DevOps</A><SPAN>&nbsp;</SPAN>dives into creating a solution with Azure DevOps
and Microsoft365DSC.</P> <P>&nbsp;</P> <P>The whitepaper will cover in detail
the following:</P> <UL> <LI>Creating account for DSC</LI> <LI>Configuration of
Azure DevOps project</LI> <LI>Configuration of Azure DevOps build agents</LI>
<LI>Configuration of Azure Key Vault to store secrets</LI> <LI>Creating build
and release pipelines to deploy configuration to M365 tenant</LI> <LI>Securing
service accounts with Azure Conditional Access policy</LI> <LI>Using certificate
instead of username/password for M365 authentication</LI> </UL></description>
<pubDate>Fri, 07 Jan 2022 14:33:21 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/managing-microsoft365-with-microsoft365dsc-and-azure-devops/ba-p/3054333</guid>
<dc:creator>Derek Smay</dc:creator>
<dc:date>2022-01-07T14:33:21Z</dc:date>
...
</item>
<item>
<title>Do the #Code4Good thing—make the world a better place</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/do-the-code4good-thing-make-the-world-a-better-place/ba-p/3016575</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="MichelleSandford_0-1638246414812.jpeg"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330257i5F8BB5A3647DC0F9/image-size/medium?v=v2&amp;px=400"
role="button" title="MichelleSandford_0-1638246414812.jpeg"
alt="MichelleSandford_0-1638246414812.jpeg" /></span></P> <P>&nbsp;</P>
<P><I><SPAN data-contrast="none">Michelle Sandford, Community Engagement PMM for
emerging Developers at Microsoft,&nbsp;shares why she does the #Code4Good thing,
and awesome ways you can use your tech skills to make the world a better place,
too.</SPAN></I><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">I focus&nbsp;on&nbsp;supporting
enablement, diversity, and inclusion initiatives. I like to teach people to code
(usually women or children), because I want to bring a more even mix of people
into the tech industry, and the best way to do that is to get involved and show
them how much fun it is. I love giving my time to do this for my community
because I am also learning while teaching. People ask me questions that I’ve
never considered, and it makes me stop and think more deeply about what I do and
how. That helps me grow, while I am enabling others to grow. But it isn’t just
about me&nbsp;and&nbsp;how much I enjoy&nbsp;these experiences.&nbsp;I think
each of us has a duty to give something back, to enable the next generation to
do more and be more than we ever were.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">People often ask me how I choose what
opportunities to get involved in. I&nbsp;say&nbsp;“</SPAN><I><SPAN
data-contrast="none">It’s easy, think about what you care about, what excites
you, what drives you, and align all your focus on those things.”</SPAN></I><SPAN
data-contrast="none">&nbsp;But of course, it’s not always easy, especially if
you have no idea&nbsp;about&nbsp;what opportunities are out there, what you can
do, what you like doing, and what you stand for. You must try all the things.
So, if you have time, say yes. Do the Thing (as&nbsp;</SPAN><A
href="https://donasarkar.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Dona&nbsp;</SPAN></A><SPAN
data-contrast="none">Sarkar</SPAN><SPAN data-contrast="none">&nbsp;says). After
a while you will discover&nbsp;some of the things&nbsp;that inspire
you&nbsp;and&nbsp;make you&nbsp;happy.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">So here are a few #Code4Good opportunities to
consider:</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Code for good in a&nbsp;</SPAN></STRONG><A
href="https://givecamp.org/" target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">GiveCamp.</SPAN></STRONG></A><SPAN
data-contrast="none">&nbsp;Learn&nbsp;</SPAN><SPAN data-contrast="none">how the
idea for&nbsp;GiveCamp&nbsp;came to life, how they use tech to help non-profits,
and how you can get involved in this&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/events/build-may-2021/general/connection-zone/con031/"
target="_blank" rel="noopener"><SPAN data-contrast="none">video.</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Volunteer as a mentor team member or event tech mentor at
hackathons</SPAN></STRONG><SPAN data-contrast="none">&nbsp;such
as&nbsp;</SPAN><A href="https://govhack.org/" target="_blank"
rel="noopener"><SPAN data-contrast="none">GovHack</SPAN></A><SPAN
data-contrast="none">&nbsp;- a festival of ideas</SPAN><SPAN
data-contrast="none">. Look at innovation or student hubs for details on local
hackathons. Microsoft’s Global Hackathon which comes out via&nbsp;</SPAN><A
href="https://www.microsoft.com/en-us/garage/" target="_blank"
rel="noopener"><SPAN data-contrast="none">The Microsoft Garage</SPAN></A><SPAN
data-contrast="none">&nbsp;each&nbsp;year is a great way to get involved and
there are many teams to choose from, often accepting external team
members.&nbsp;</SPAN><A
href="https://www.microsoft.com/en-us/ai/ai-for-good-participation"
target="_blank" rel="noopener"><SPAN data-contrast="none">Participate in
Microsoft AI for Good Projects.</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><SPAN data-contrast="none">If you
like to code,&nbsp;</SPAN><STRONG><SPAN data-contrast="none">get involved in
the&nbsp;</SPAN></STRONG><A href="https://opensource.microsoft.com/"
target="_blank" rel="noopener"><STRONG><SPAN data-contrast="none">Open Source
Community</SPAN></STRONG></A><SPAN data-contrast="none">&nbsp;There are so many
valuable projects than run entirely on the time and&nbsp;good will&nbsp;of
volunteers and you can contribute time, code, or money to&nbsp;help
out.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="" data-font="Symbol" data-listid="1"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Find in-kind dev opportunities</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;through&nbsp;</SPAN><A
href="https://www.catchafire.org/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Catchafire</SPAN></A><SPAN
data-contrast="none">&nbsp;or&nbsp;</SPAN><A
href="https://www.volunteermatch.org/" target="_blank" rel="noopener"><SPAN
data-contrast="none">VolunteerMatch</SPAN></A><SPAN data-contrast="none">, you
can&nbsp;search&nbsp;their opportunities on LinkedIn. You can also search
“Volunteer Developer” in a LinkedIn job search.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Become a mentor in a STEM program</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;such as&nbsp;</SPAN><A
href="https://shecodes.com.au/" target="_blank" rel="noopener"><SPAN
data-contrast="none">She Codes.</SPAN></A><SPAN data-contrast="none">&nbsp;This
is an Australian program but there are programs like this in every country
looking for mentors. Check out&nbsp;</SPAN><A
href="https://www.nuevofoundation.org/what-we-do" target="_blank"
rel="noopener"><SPAN data-contrast="none">Nuevo Foundation,</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><A href="https://coderdojo.com/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">CoderDojo</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://abcn.com.au/"
target="_blank" rel="noopener"><SPAN data-contrast="none">ABCN</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://djangogirls.org/en/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Django
Girls</SPAN></A><SPAN data-contrast="none">, and of course,&nbsp;</SPAN><A
href="https://www.womenwhocode.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Women Who Code</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Hit the&nbsp;</SPAN></STRONG><A
href="https://techcommunity.microsoft.com/t5/azure/ct-p/Azure" target="_blank"
rel="noopener"><STRONG><SPAN
data-contrast="none">forums</SPAN></STRONG></A><SPAN
data-contrast="none">&nbsp;and help fellow community members solve tech issues
in your area of expertise.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><STRONG><SPAN
data-contrast="none">Give an inspiring or educational
talk&nbsp;</SPAN></STRONG><SPAN data-contrast="none">at meetups and conferences.
Many encourage first time speakers and will actively support you with mentorship
from an experienced speaker. You can submit proposals to speak at conferences by
responding to a CFP (Call for Papers/Programs), which can be found on sites such
as:&nbsp;</SPAN><A href="https://www.cfpland.com/conferences/" target="_blank"
rel="noopener"><SPAN data-contrast="none">CFP Land</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://twitter.com/techdailycfp"
target="_blank" rel="noopener"><SPAN data-contrast="none">Tech Daily
CFP</SPAN></A><SPAN data-contrast="none">,&nbsp;</SPAN><A
href="https://www.papercall.io/events" target="_blank" rel="noopener"><SPAN
data-contrast="none">PaperCall</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://confs.tech/cfp"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Confs.tech</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><A href="https://twitter.com/appcfp"
target="_blank" rel="noopener"><SPAN data-contrast="none">SeeCFP</SPAN></A><SPAN
data-contrast="none">, and&nbsp;</SPAN><A href="https://callingallpapers.com/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">CallingAllPapers</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">I recently participated in a session at Microsoft
Ignite that talked about how you can make an impact through contribution to
community.<A
href="https://myignite.microsoft.com/sessions/1dabe2de-d29d-4c7e-8cb4-bcc5516d92f2?source=/schedule"
target="_self"> Check out the replay.</A></SPAN></P> <P><SPAN
data-contrast="none">Do you have favorite avenues to contribute to dev and
broader communities? Please share #Code4Good opportunities you’ve been involved
with in the blog comments section below!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><I><SPAN data-contrast="none">Michelle Sandford, Community
Engagement PMM for emerging Developers at Microsoft, is
a&nbsp;Tedx&nbsp;Speaker, Australian Computer Society WA Chairman, and was
previously named one of MCV's 30 Most Influential Women in Games. She lives at
the heart of the developer community and helps drive awareness and engagement as
an AI influencer and chatbot builder. She is an advocate for STEM, the Games
Industry, and Developers. For daily updates from Michelle follow @codess_aus on
<A href="https://twitter.com/codess_aus" target="_self">Twitter</A> and <A
href="https://instagram.com/codess_aus" target="_self">Instagram</A>, or follow
her on&nbsp;</SPAN></I><A href="https://www.linkedin.com/in/michellesandford/"
target="_blank" rel="noopener"><I><SPAN
data-contrast="none">LinkedIn</SPAN></I></A><I><SPAN
data-contrast="none">.</SPAN></I><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P></description>
<pubDate>Tue, 07 Dec 2021 01:39:30 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/do-the-code4good-thing-make-the-world-a-better-place/ba-p/3016575</guid>
<dc:creator>Michelle Sandford</dc:creator>
<dc:date>2021-12-07T01:39:30Z</dc:date>
...
</item>
<item>
<title>An airline pilot develops a robotic arm for his friend’s son using .NET
and a 3D printer</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-airline-pilot-develops-a-robotic-arm-for-his-friend-s-son/ba-p/3015347</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Monish_Gangwani_0-1638211868010.png"
style="width: 465px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330083i151162BB82C0BF1F/image-dimensions/465x261?v=v2"
width="465" height="261" role="button"
title="Monish_Gangwani_0-1638211868010.png"
alt="Monish_Gangwani_0-1638211868010.png" /></span></P> <P><EM>Kayden Jeffery
trying on the robotic arm that Clifford Agius built for him</EM></P>
<P><EM>&nbsp;</EM></P> <P><FONT size="4"><STRONG>Clifford Agius is a freelance
.NET developer who flies around the world in a Boeing 787 for his day-job. When
he is not thousands of feet above sea-level, he loves to
code.&nbsp;</STRONG><STRONG>When a family friend asked Cliff for help improving
her son’s prosthetic arm, the 787 pilot by day/freelance developer by night used
open-source software to build a new arm for the teen.</STRONG></FONT></P>
<P>&nbsp;</P> <P><FONT size="4"><STRONG>He has big plans on making the robotic
arm easily available to families and communities who do not have access to
resources and around continuing to improve the technical capability of his
creation using .NET 6 and Visual Studio 2022.</STRONG></FONT></P> <P>&nbsp;</P>
<P><STRONG><EM>We don’t usually come across someone who is a commercial pilot
and a developer. Tell us a little about your journey and what inspires you to
build the kind of apps that you do?</EM> </STRONG></P> <P>I spent the first 11
years of my career writing software and automating production line equipment. I
always wanted to learn to fly, and after many years in tech, I could afford to
go to pilot school and get a private license. So I signed up and that led to me
taking two years off to go to flight school and became a commercial pilot.</P>
<P>&nbsp;</P> <P>Shortly after, I was invited by a friend to contract for him;
he needed someone to build a few modules in C# and .NET. I knew the paradigms of
code and was quickly able to familiarize myself with .NET. I worked on those
modules during the layover downtime at hotels for six months. And that led to
how I get to work on fun dev projects during my layovers. My engineering
background has translated to me working on a lot of IoT related projects built
using .NET, and I like to work on projects that make a difference in the
world.</P> <P>&nbsp;</P> <P><EM><STRONG>Tell us about HandyApp and how it came
about.</STRONG></EM></P> <P>December of 2016, a family friend started chatting
about a news article in the media here in the UK, about a dad that 3D printed a
hand for his daughter. ”You've got 3D printer, right, Cliff?” – she asked. I
realized then that she was asking whether I could create one for her son Kayden,
who was born with half an arm. Kayden is a good kid and he had received an arm
extension from the local health services agency that had a hook, which was not
optimal for holding things and hence was not super functional. I wanted to see
if I could help – I managed to find the code for the 3D printed hand referenced
in the news in open source projects and I printed out the hand. That 3D hand did
not have a great grip either and Kayden hated it.</P> <P>&nbsp;</P> <P>I was
bitten by the bug and wanted to find a solution. I went back to the drawing
board and started revisualizing and researching. That’s when I stumbled across
<A href="https://openbionics.com/" target="_blank"
rel="noopener">OpenBionics</A> and was able to build HandyApp.</P> <P>&nbsp;</P>
<P>HandyApp is an OpenSource mobile application built using .NET; it allows
users of the OpenSource Bionic Hand project to control the hand and it's
settings via bluetooth. This is still very much a work in progress but the
current build will allow a Bluetooth Connection to the Adafruit board inside the
hand and remote control and set-up.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_1-1638211868087.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330082iC0C001CA114A4006/image-size/medium?v=v2&amp;px=400"
role="button" title="Monish_Gangwani_1-1638211868087.png"
alt="Monish_Gangwani_1-1638211868087.png" /></span></P> <P><EM>Kayden enjoying
the summer by the lake</EM></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_2-1638211868249.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330084iE8D0E408FAE5A897/image-size/medium?v=v2&amp;px=400"
role="button" title="Monish_Gangwani_2-1638211868249.png"
alt="Monish_Gangwani_2-1638211868249.png" /></span></P> <P><EM>Kayden with the
prosthetic arm provided to him by the local health services agency</EM></P>
<P>&nbsp;</P> <P><STRONG><EM>It sounds like this became an important project for
you at a personal level. What are your future plans around it?</EM>
</STRONG></P> <P>Yes, this project became important because it is so meaningful
to change people’s lives through technology… There are plans to continue the
building of this app to a point that any user can configure their own Bionic
hand as well as record sensor reading and upload them to an Azure Cloud function
for analysis and suggestion of settings, but this is still on the todo list. I
also want to take advantage of all the cool stuff in .NET 6 and Visual Studio
2022.</P> <P>&nbsp;</P> <P>Importantly, I would like to make this solution more
easily available to families. I have considered how much money this would cost a
family living where there is no health services agency. I calculated the cost
down to 500 pounds. After the pandemic is over, I intend to stick a 3D printer
in a box, some spools of filament, some screws, nuts, bolts and some electronics
boards and take them overseas on a flight. I've spoken to hospitals in Pakistan
and in India and there is some early interest.</P> <P>&nbsp;</P> <P>I have also
started looking at building LeggyApp, which is an app connected to a prosthetic
leg.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Monish_Gangwani_3-1638211868485.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/330085i2A7052AE76BFC54B/image-size/medium?v=v2&amp;px=400"
role="button" title="Monish_Gangwani_3-1638211868485.png"
alt="Monish_Gangwani_3-1638211868485.png" /></span></P> <P><EM>The robotic arm
kit</EM></P> <P>&nbsp;</P> <P><EM><STRONG>Tell us about the cool stuff in .NET 6
and Visual Studio 2022 you plan to take advantage of. </STRONG></EM></P> <P>I am
excited about .NET MAUI ((Multi-platform App UI) and plan to update the app so
it can target Windows and MacOS in addition to the current platforms, Android
and iOS - all with the same code base. I am also planning to switch to
Wilderness Labs Meadow F7 boards inside the robotic arm so that we can have .NET
not just in the mobile and desktop client but also on the actual device. Once
Wilderness Labs Meadow runs .NET on the IoT Hardware taking advantage of the new
.NET 6 tooling and changes to the BCL, we can then carry out over-the-air
updates on the hardware. So, if we wish to update the code we can build and have
an Azure Dev Ops process push the updates directly to the hardware removing the
need for the user to visit a technician for updates.</P> <P>&nbsp;</P> <P>This
change to .NET on the hardware as well as across the mobile and desktop means
that we can share code between the two code bases with shared Models and Service
layers reducing the need to have bespoke versions of these. The possibilities
with .NET MAUI are endless and I recently wrote <A
href="https://www.cliffordagius.co.uk/post/whatismaui/" target="_self">a
blog</A> about it.</P> <P>&nbsp;</P> <P>Visual Studio 2022 allows me to use hot
restart, and hot reloads, so I can edit my C# code to bring the dev cycle down
from a minute and a half to just a few seconds. The fact that I can plug my
developer iPhone into my Windows Surface Book laptop when I'm traveling around
the world and keep coding is awesome. I've been using Visual Studio 2022 for
last couple of months as my daily.</P> <P>&nbsp;</P> <P>Also Microsoft has gone
out of the way to make sure that accessibility is engrained into the design. So
the biggest advantage of Visual Studio 2022 will be the accessibility gains, the
speed improvements, app startup times, and being able to develop and compile
<EM>really, really</EM> fast.</P> <P><SPAN style="font-weight: normal
!msorm;"><STRONG>&nbsp;</STRONG></SPAN></P> <P><EM><STRONG>Do you have any
advice to aspiring or striving developers?</STRONG></EM></P> <P>Keep learning.
Learning and challenging our ourselves to explore the unexplored is where real
growth as an individual takes place. I use the content on docs.microsoft.com to
keep myself updated and recommend it to all developers.</P> <P>&nbsp;</P>
<P><STRONG>Watch Clifford Agius and young Kayden demo the robotic arm and
HandyApp </STRONG></P> <P><A
href="https://azure.microsoft.com/en-gb/developer/stories/" target="_blank"
rel="noopener"><STRONG>https://azure.microsoft.com/en-gb/developer/stories/</STRONG><BR
/></A>&nbsp;</P> <P><STRONG>.NET 6&nbsp;announcement</STRONG></P> <P><SPAN>It is
ready for your #app — over a year in the making, we are very happy to
release&nbsp;</SPAN><SPAN>.NET 6 and a higher performance web stack to simplify
and speed up development!&nbsp;</SPAN><SPAN>Learn more:&nbsp;<A
title="https://aka.ms/dotnet6-ga" href="https://aka.ms/dotnet6-GA"
target="_blank" rel="noreferrer
noopener">https://aka.ms/dotnet6-GA</A>&nbsp;</SPAN></P> <P><LI-WRAPPER>
</LI-WRAPPER></P> <P>&nbsp;</P> <P><STRONG>CODE
Magazine&nbsp;Focus&nbsp;Issue:&nbsp;.NET 6</STRONG></P> <P><SPAN>Read all about
the .NET 6 release and what’s new in Visual Studio 2022 for
.NET&nbsp;</SPAN><SPAN>#developers in this special issue of CODE
Magazine:&nbsp;<A title="https://aka.ms/dotnet6-code-mag"
href="https://aka.ms/dotnet6-code-mag" target="_blank" rel="noreferrer
noopener">https://aka.ms/dotnet6-code-</A></SPAN><SPAN><A
title="https://aka.ms/dotnet6-code-mag" href="https://aka.ms/dotnet6-code-mag"
target="_blank" rel="noreferrer noopener">mag</A>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG>Cliff's blog:&nbsp;</STRONG><A
href="https://www.cliffordagius.co.uk/" target="_blank"
rel="noopener">https://www.cliffordagius.co.uk/</A></P> <P>&nbsp;</P>
<P><EM><STRONG>CodeStories&nbsp;Blogs&nbsp;is a series of interviews with
innovative and inspiring developers.</STRONG></EM></P></description>
<pubDate>Tue, 30 Nov 2021 08:48:06 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-airline-pilot-develops-a-robotic-arm-for-his-friend-s-son/ba-p/3015347</guid>
<dc:creator>Monish_Gangwani</dc:creator>
<dc:date>2021-11-30T08:48:06Z</dc:date>
...
</item>
<item>
<title>Azure Friday: The year in retrospect</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-friday-the-year-in-retrospect/ba-p/3015107</link>
<description><P><SPAN data-contrast="auto">Hi everyone,&nbsp;I think&nbsp;one
thing we&nbsp;can all agree&nbsp;on is&nbsp;that 2021 has been a wild and
wonderful ride for anyone keeping up with&nbsp;innovations&nbsp;in
Azure&nbsp;Services. We’ve seen&nbsp;advancements&nbsp;across the
platform&nbsp;all the way from&nbsp;making&nbsp;Quantum computing&nbsp;more
accessible, to the rise of GitHub&nbsp;in&nbsp;workflows,
to&nbsp;updates&nbsp;in everything&nbsp;from Cosmos DB&nbsp;to
Blobs.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">As we are wrapping up the&nbsp;year,&nbsp;I’d like
to share some reflections on Azure Friday&nbsp;with&nbsp;a
few&nbsp;episodes&nbsp;that&nbsp;may be&nbsp;especially&nbsp;interesting and
widely useful&nbsp;to developers.&nbsp;If you&nbsp;missed any&nbsp;of these, you
might want to&nbsp;catch up on watching&nbsp;them
now.&nbsp;</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">We have data science that proves you are more
likely to be successful&nbsp;in Azure if you get started with the&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/azure-portal/azure-portal-quickstart-center"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Quickstart
Center</SPAN></A><SPAN
data-contrast="auto">.&nbsp;&nbsp;In&nbsp;</SPAN><STRONG><I><SPAN
data-contrast="auto">Better Azure content, programs &amp; services through
applied data science</SPAN></I></STRONG><SPAN data-contrast="auto">&nbsp;Lisa
Cohen explained&nbsp;how Microsoft uses data science to help Azure customers.
Learn about content, programs, and services to guide you on your cloud journey,
and how we use your feedback to&nbsp;drive improvements in Azure.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=Qll-wtjIobU" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/Qll-wtjIobU/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW236030956 BCX0" data-contrast="auto"><SPAN
class="NormalTextRun SCXW236030956 BCX0">Just because something is running in a
container, that does not automatically mean that you&nbsp;</SPAN><SPAN
class="NormalTextRun SCXW236030956 BCX0">have security baked
in.&nbsp;</SPAN><SPAN class="NormalTextRun SCXW236030956 BCX0">Azure Container
Instances (ACI) allow for a quick, simple, and cost-effective way to run
serverless containers in production.&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">Jessica&nbsp;</SPAN><SPAN class="NormalTextRun
SpellingErrorV2 SCXW236030956 BCX0">Deen</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">&nbsp;explains</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">&nbsp;ways to be intentional about</SPAN><SPAN
class="NormalTextRun SCXW236030956 BCX0">&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">how you design container</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">s</SPAN><SPAN class="NormalTextRun SCXW236030956
BCX0">&nbsp;and build with security&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">in</SPAN><SPAN class="NormalTextRun SCXW236030956
BCX0">&nbsp;mind&nbsp;</SPAN><SPAN class="NormalTextRun SCXW236030956
BCX0">in&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW236030956 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW236030956 BCX0">Best</SPAN><SPAN
class="NormalTextRun SCXW236030956 BCX0">&nbsp;practices for Azure Container
Instances (ACI) with GitHub Actions</SPAN><SPAN class="NormalTextRun
SCXW236030956 BCX0">.</SPAN></SPAN><SPAN class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=jkEkeTW1QeE" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/jkEkeTW1QeE/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN
class="NormalTextRun BCX0 SCXW182523104">O</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">ne of the most fun&nbsp;</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">episodes</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;for me this year</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;was definitely</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW182523104">gee</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW182523104">k</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW182523104">ing</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;out in</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW182523104"
data-contrast="auto"><SPAN class="NormalTextRun BCX0 SCXW182523104">Retro Game
Translation with Azure Cognitive Services and IoT Edge</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN
class="NormalTextRun BCX0 SCXW182523104">&nbsp;w</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">ith&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">Paul&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">DeCarlo</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">,</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">as he
demonstrated how he&nbsp;</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">uses IoT Edge with Cognitive Services Containers to
enhance</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">&nbsp;and
localize</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">favorite retro videogames</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">.</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">&nbsp;</SPAN><SPAN class="NormalTextRun BCX0
SCXW182523104">W</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">e shared a
few</SPAN><SPAN class="NormalTextRun BCX0 SCXW182523104">&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">treasured&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">items from our&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">respective&nbsp;</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">retro gaming collections</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">&nbsp;in this one</SPAN><SPAN
class="NormalTextRun BCX0 SCXW182523104">, too.</SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><LI-VIDEO
vid="https://www.youtube.com/watch?v=atga5uMsrYY" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/atga5uMsrYY/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="TextRun
SCXW263399982 BCX0" data-contrast="auto"><SPAN class="NormalTextRun
SCXW263399982 BCX0">Did you know that you can use optimization&nbsp;</SPAN><SPAN
class="NormalTextRun SCXW263399982 BCX0">algorithms</SPAN><SPAN
class="NormalTextRun SCXW263399982 BCX0">&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW263399982 BCX0">inspired by</SPAN><SPAN class="NormalTextRun SCXW263399982
BCX0">&nbsp;decades of quantum physics research to help solve optimization
problems?&nbsp;</SPAN><SPAN class="NormalTextRun SCXW263399982
BCX0">In&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW263399982 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW263399982
BCX0">Quantum-inspired algorithms and the Azure Quantum optimization
service</SPAN></SPAN><SPAN class="TextRun SCXW263399982 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW263399982
BCX0">&nbsp;Delbert Murphy joined Scott to show how Quantum-Inspired
optimization (QIO) takes state-of-the-art algorithmic techniques from
quantum&nbsp;</SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW263399982 BCX0">physics</SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW263399982
BCX0">,</SPAN><SPAN class="NormalTextRun ContextualSpellingAndGrammarErrorV2
SCXW263399982 BCX0">&nbsp;and</SPAN><SPAN class="NormalTextRun SCXW263399982
BCX0">&nbsp;makes these capabilities available in Azure on conventional
hardware, and callable from a Python client.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=ggwKsoR8m08" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/ggwKsoR8m08/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></SPAN></SPAN></P> <P>&nbsp;</P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW73754094 BCX0" data-contrast="auto"><SPAN
class="NormalTextRun SCXW73754094 BCX0">Something that blew my mind when I
learned it this year was that Azure offers satellite ground station as a
service. How cool is that? Scott</SPAN><SPAN class="NormalTextRun SCXW73754094
BCX0">&nbsp;spoke with rocket scientist&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW73754094 BCX0">Hrishi Shelar and learned about Azure
Orbital</SPAN></SPAN><SPAN class="TextRun SCXW73754094 BCX0"
data-contrast="none"><SPAN class="NormalTextRun SCXW73754094
BCX0">—</SPAN></SPAN><SPAN class="TextRun SCXW73754094 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW73754094 BCX0">a fully
managed cloud-based ground station as a service that enables you to communicate
with your spacecraft or satellite constellations, downlink and uplink data,
process your data in the cloud,&nbsp;</SPAN><SPAN class="NormalTextRun
SCXW73754094 BCX0">and&nbsp;</SPAN><SPAN class="NormalTextRun SCXW73754094
BCX0">chain services with Azure services. It’s&nbsp;</SPAN><SPAN
class="NormalTextRun AdvancedProofingIssueV2 SCXW73754094 BCX0">pretty
amazing</SPAN><SPAN class="NormalTextRun SCXW73754094 BCX0">!
Watch&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW73754094 BCX0"
data-contrast="auto"><SPAN class="NormalTextRun SCXW73754094 BCX0">How to use
Azure Orbital to communicate with your satellites</SPAN><SPAN
class="NormalTextRun SCXW73754094 BCX0">.</SPAN></SPAN><SPAN class="EOP
SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><LI-VIDEO
vid="https://www.youtube.com/watch?v=MqgjSBKAxIg" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/MqgjSBKAxIg/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></SPAN></SPAN></SPAN></SPAN></P> <P>&nbsp;</P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW180139325 BCX0" data-contrast="auto"><SPAN
class="NormalTextRun SCXW180139325 BCX0">Did a specific episode of Azure
Friday&nbsp;</SPAN><SPAN class="NormalTextRun SCXW180139325 BCX0">stand out to
you as memorable this year? I’d love to hear about it in the
comments.</SPAN></SPAN><SPAN class="EOP SCXW180139325 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW236030956 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW182523104" data-contrast="auto"><SPAN class="EOP
SCXW263399982 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW73754094 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW180139325 BCX0"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun BCX0 SCXW67672907" data-contrast="auto"><SPAN
class="NormalTextRun BCX0 SCXW67672907">Keep watching Azure Friday episodes
on&nbsp;<A href="https://docs.microsoft.com/en-us/shows/Azure-Friday/"
target="_blank" rel="noopener">Azure Friday | Microsoft
Docs</A></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P></description>
<pubDate>Thu, 02 Dec 2021 18:58:06 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-friday-the-year-in-retrospect/ba-p/3015107</guid>
<dc:creator>RobCaron</dc:creator>
<dc:date>2021-12-02T18:58:06Z</dc:date>
...
</item>
<item>
<title>10 shades of public API hosting on Azure</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/10-shades-of-public-api-hosting-on-azure/ba-p/2989856</link>
<description><P>APIs are everywhere and there are many ways to host them in
Azure! Let us see what are the different possibilities with the pros &amp; cons
of each. I am not going to discuss the bits and bytes about each possibility.
The purpose of this post is to give you a rough idea of what is possible for a
simple scenario (single region, high-availability and disaster recovery are out
of scope). I will provide small diagrams for more advanced scenarios.</P>
<P>&nbsp;</P> <H2>1) Function App - Consumption tier</H2> <P>&nbsp;</P>
<P>Function Apps ship with HTTP-triggered functions. These can be suitable to
expose tiny APIs.</P> <P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>:
Cost-friendly (economies of scale), Easy to deploy, Fully elastic with built-in
auto-scaling from 0 to n instances.</P> <P><U><STRONG>Cons</STRONG></U>: Limited
security controls. Network ACLs are the only way to limit public exposure. Data
accessed by such functions must be public from a connectivity perspective. Cold
start due to serverless tier. Limited execution time as well as per-execution
resource consumption. No WAF (Web Application Firewall) features.</P>
<P>&nbsp;</P> <P><U><STRONG>Use cases</STRONG></U>: Lab, PoC, Prototyping,
Limited budgets, Basic API needs (ie: no catalog, no versioning, etc.),
asynchronous APIs, Synchronous APIs that can live with the cold start, No strong
compliance requirements.</P> <P>&nbsp;</P> <H2>2) Multi-Tenant App Service -
Standard tier</H2> <P>Like functions, Web Apps are pretty neat and easy to get
started with. Microsoft is managing everything for you under the
hoods.&nbsp;</P> <P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Cost-friendly
(economies of scale) but fixed cost incurred (unlike functions on consumption
tier), Easy to deploy, Auto-scaling plans.&nbsp;Resource is limited to the
capacity you are willing to pay. No cold start when Always On is turned on!</P>
<P><U><STRONG>Cons</STRONG></U>: Limited security controls. Network ACLs are the
only way to limit public exposure. Data accessed by such apps must be public
from a network perspective.&nbsp;No WAF.</P> <P><U><STRONG>Use
cases</STRONG></U>: Lab, PoC, Prototyping, Limited budgets, Basic API needs (ie:
no catalog, no versioning, etc.),&nbsp;No strong compliance requirements.</P>
<P>&nbsp;</P> <H2>3) Azure Container Instances (ACI)</H2> <P>While Azure
Container Instances can be used to host long-running services, I would advise
against this idea and keep the ACIs for asynchronous job operations, short-lived
executions and as the serverless (virtual kubelets) part of Azure Kubernetes
Service.&nbsp;</P> <P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Cost-friendly
(pay per second of execution), providing the API is not constantly up and
running.</P> <P><U><STRONG>Cons</STRONG></U>: Limited security controls with
Windows Containers,&nbsp; better with Linux as Linux-based ACIs can integrate
with virtual networks.</P> <P><U><STRONG>Use cases</STRONG></U>: Lab, PoC,
Prototyping, Limited budgets, Basic API needs (ie: no catalog, no versioning,
etc.),&nbsp;No strong compliance requirements. Lift &amp; shift of plain old
legacy Windows-based backend services.</P> <H2>4) Functions Apps Consumption
tier or App Service standard+ Azure API Management (APIM) Consumption tier</H2>
<P>In this setup, you intend to publish APIs through Azure API Management. The
pros &amp; cons of the underlying hosting option (app service or function apps)
remain as explained earlier and are not repeated below.</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Cost-friendly because the serverless flavor of
APIM has no fixed cost. It will auto-scale with the actual demand. You can add
features to your APIs such as enforcing policies (JWT validation, headers checks
etc.) as well as version them.&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>: More
security controls but there is still a few major caveats: network ACLs remain
the only way to limit public exposure of the backend and traffic cannot be
forced through APIM because the consumption tier has no static IP so this can't
be used as a network ACL on the backend side. Data accessed by such apps must
still be public from a network perspective. Still no WAF because APIM is a a PEP
(Policy Enforcement Point) but not a WAF.&nbsp;</P> <P><U><STRONG>Use
cases</STRONG></U>: Lab, PoC, Prototyping, Limited budgets, More advanced API
needs (catalog, versioning, consistent way of exposing APIs etc.), No strong
compliance requirements.</P> <P>&nbsp;</P> <H2>5) Functions Apps Consumption
tier or App Service standard+ Azure API Management (APIM) Basic or Standard
tier</H2> <P>In this setup, you intend to publish APIs (<EM>and enforce
routing</EM>) through Azure API Management.&nbsp;</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: You benefit from APIM capabilities AND you can
restrict traffic to the backend to your APIM instance because as of the basic
tier, APIM comes with a static IP.&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>: A
bit more expensive (fixed cost for APIM). Manual scaling for the Basic tier
(plans possible as of Standard). Data stores accessed by the backends must still
be public from a network perspective. Still no WAF because APIM is a a PEP
(Policy Enforcement Point) but not a WAF.&nbsp;</P> <P><U><STRONG>Use
cases</STRONG></U>: Limited budgets, More advanced API needs (catalog,
versioning, consistent way of exposing APIs etc.), No strong compliance
requirements.</P> <P>&nbsp;</P> <H2>6) App Service (or Functions) on Premium
tier+Private Endpoint+VNET Integration+WAF</H2> <P>In this setup, you want
isolate your backend services totally from internet and make them only
accessible through a web application firewall (WAF). Because it is a little more
complex, here is a small diagram showing the different blocs and their
interactions.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="plinkvnetintegration.png" style="width:
722px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328462i3330053516527FA8/image-size/large?v=v2&amp;px=999"
role="button" title="plinkvnetintegration.png" alt="plinkvnetintegration.png"
/></span></P> <P>The traffic flies from a caller (here a mobile device) to a WAF
which has a public IP. The WAF has a backend pool targeting the endpoints
defined in the corresponding private endpoint subnet. The app service is
integrated with Azure Private Link (and private DNS zone) for the INBOUND
traffic. VNET integration for the App Service (or function app) is enabled to
handle the OUTBOUND traffic through another VNET's subnet.</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: This hosting option is more secure than the
preceding ones because the data stores can be firewalled thanks to the control
over the outbound traffic of the API.&nbsp; The backend services are isolated
from internet and proxied by a WAF.&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>:
This architecture is a bit convoluted and is not the best one to run at
scale.</P> <P><U><STRONG>Use cases</STRONG></U>: Stronger focus on security.
Basic API needs (no more APIM in the picture).&nbsp;</P> <P>&nbsp;</P> <H2>7)
App Service (or Functions) on Premium tier+Private Endpoint+VNET
Integration+WAF+APIM Premium</H2> <P>The purpose of this setup is the same as
the previous one but you want to combine both WAF &amp; APIM (how it should be)
before hitting backend services.&nbsp;</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="plinkvnetintegrationapimwaf.png" style="width: 722px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328465iD7E02E7C97E31DF8/image-size/large?v=v2&amp;px=999"
role="button" title="plinkvnetintegrationapimwaf.png"
alt="plinkvnetintegrationapimwaf.png" /></span></P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Inbound traffic is more secure because it
traverses a WAF and a PEP.&nbsp; Network ACLs can be set at backend level to
only let the API gateway (which has a static IP) call the backend. Outbound
traffic of the API gateway can be controlled by a NVA or Azure Firewall.</P>
<P><U><STRONG>Cons</STRONG></U>: This architecture is a bit convoluted and is
not the best one to run at scale, from a manageability perspective. APIM premium
is expensive but is required because at the time of writing (11/2021), only the
Premium tier integrates with Virtual Networks.&nbsp;</P> <P><U><STRONG>Use
cases</STRONG></U>: Stronger focus on security, advanced API needs and possible
geo-distributed APIs setup.</P> <P>&nbsp;</P> <H2>8)</img> WAF+APIM Premium+App
Service Environment (ASE)</H2> <P>Before ASE v3, ILB ASEs had a rather bad
reputation because of their cost (flat fees), and their complexity. It was
indeed quite easy to break them with improperly configured firewall rules. ASE
v3 are a breeze to setup and are less expensive (no more flat fee). Therefore
ILB ASE comes back as a very interesting option because it offers the
best-in-class security at an affordable price, at least from a backend hosting
perspective.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="ase.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328468iD1AA186116E5886F/image-size/large?v=v2&amp;px=999"
role="button" title="ase.png" alt="ase.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><U><STRONG>Pros</STRONG></U>: Inbound and outbound traffic can
be fully controlled by an NVA or Azure Firewall. Intra VNET traffic can be
controlled with both Network Security Groups and Azure Firewall. Backends are
totally isolated from internet. This setup is scalable because the ASE can host
tons of backends and functions. The underlying compute is based on a
single-tenant architecture (Isolated tier). Compared to the previous setup
involving only private endpoints, controlling the network traffic is easier with
an ASE. However, in 11/2021, private endpoints can also be subject to both UDRs
&amp; NSGs but it is a public preview feature that is only available in some
regions...This comment is also relevant for the ASE-based architecture since the
apps hosted on the ASE are likely to talk to public PaaS services (Azure SQL,
Azure Storage, etc.) through private endpoints.</P>
<P><U><STRONG>Cons</STRONG></U>: Costs (incurred by the isolated tiers and APIM
premium) and complexity. Although ASE v3 is a breeze compared to its
predecessors, this setup is often part of a larger Hub &amp; Spoke architecture,
which involves a lot of networking and firewalling work. You do not get started
with it over night!&nbsp;</P> <P><U><STRONG>Use cases</STRONG></U>: Stronger
compliance requirements, advanced API needs and possible geo-distributed APIs
setup. This setup is perfectly suitable as a Web Landing Zone that hosts tons of
web apps and APIs.&nbsp;</P> <P>&nbsp;</P> <H2>9) WAF+APIM Premium+AKS</H2>
<P>Kubernetes has become a first-class citizen everywhere and AKS is the
Microsoft-managed K8s offering on Azure (By the way, Azure Arc also has a ton of
handy features to manage K8s clusters at scale wherever they are hosted). So,
with this in mind, I could not skip it. Here is a very simplified diagram
showing the different building blocks:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="AKS.png" style="width: 762px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/328469iCFF6CE6FBD59A587/image-size/large?v=v2&amp;px=999"
role="button" title="AKS.png" alt="AKS.png" /></span></P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Very similar to the previous architecture with
regards to inbound and outbound, Hub &amp; Spoke integration, etc.. although AKS
adds a serious bits of extra complexity network-wise. AKS allows you to host
nearly anything and has a very rich ecosystem. When I think AKS, I think all the
benefits of VMs with all the benefits of cloud native architectures
(Infrastructure as Code, increased resilience, zero downtime, releases during
business hours, polyglot apps, etc.).&nbsp;</P> <P><U><STRONG>Cons</STRONG></U>:
Costs incurred by APIM premium and the AKS node pools, which should involve at
least 3 nodes but ideally 5 for a minimal production-grade setup. Another
potential deal-breaker for some organizations is the complexity of K8s (AKS).
App Services and Function Apps are <EM><STRONG>way easier</STRONG> </EM>to work
with and it is a Kubernetes lover who tells you this!</P> <P><U><STRONG>Use
cases</STRONG></U>: Stronger compliance requirements, advanced API needs and
possible geo-distributed APIs setup. This setup is perfectly suitable as a Web
Landing Zone that hosts tons of web apps and APIs. Microservices architectures
(K8s and its ecosystem, including service meshes, are very supportive of
microservices architectures).</P> <P>&nbsp;</P> <H2>10) Container Apps</H2> <P>I
put it last, not because it's the most advanced but because it is in preview.
This new service (public preview in 11/2021) is very promising because it comes
with some of the AKS promises without the complexity because Microsoft manages
nearly everything for you. Container apps remind me Service Fabric Mesh to some
extent, let's hope they'll have a brighter future. However, at the time of
writing, it is no way in line with typical enterprise needs (Hub &amp; Spoke)
but Microsoft is working on a BYO VNET feature. It is still a little early to
come with pros &amp; cons but here are a few of them.</P> <P>&nbsp;</P>
<P><U><STRONG>Pros</STRONG></U>: Cost friendly since it scales from 0 to n, like
Azure Functions. Easy to deploy and manage.</P> <P><U><STRONG>Cons</STRONG></U>:
N/A (too early)</P> <P><U><STRONG>Use cases</STRONG></U>: right now, PoCs and
protoyping only. In the future, microservices architectures, which is why this
service has been built from the ground up.</P></description>
<pubDate>Sat, 18 Dec 2021 15:20:47 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/10-shades-of-public-api-hosting-on-azure/ba-p/2989856</guid>
<dc:creator>stephaneey</dc:creator>
<dc:date>2021-12-18T15:20:47Z</dc:date>
...
</item>
<item>
<title>Helping Professional Developers accelerate collaboration with low-code
Power Apps on Microsoft Teams</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/helping-professional-developers-accelerate-collaboration-with/ba-p/2941803</link>
<description><P><STRONG><SPAN data-contrast="none">How Professional Developers
can use low-code&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">Microsoft Power Apps and&nbsp;Teams&nbsp;to drive agility
and collaboration within your organization&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">With major business&nbsp;disruption&nbsp;during
the&nbsp;pandemic in 2020,&nbsp;Microsoft&nbsp;Power Apps and Teams&nbsp;were
tools that quickly realized their value for being able to help teams collaborate
and automate manual processes.&nbsp;To help understand how Power Apps and Teams
can work together to help your organization,&nbsp;Professional
developers&nbsp;have pulled together a series of 16 articles that help you, a
professional developer,&nbsp;get started&nbsp;using&nbsp;low-code&nbsp;within a
collaboration tool to simplify how&nbsp;your teams&nbsp;navigate
their&nbsp;day-to-day&nbsp;tasks.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Get ready to jump in and learn how low-code Power
Apps can help your business.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="CodeProject.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/331289i0DBFE6C514DB9C42/image-size/large?v=v2&amp;px=999"
role="button" title="CodeProject.png" alt="CodeProject.png" /></span></SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Power Apps&nbsp;Solution&nbsp;for
Professional Developers&nbsp;Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We explain why professional developers should care
about Power Apps and Teams as well as where&nbsp;these
tools&nbsp;fit&nbsp;within the software development and deployment
landscape.&nbsp;We&nbsp;will also&nbsp;provide&nbsp;guidance&nbsp;on&nbsp;when
it makes sense to&nbsp;use&nbsp;Power Apps&nbsp;instead of traditional
development tools.&nbsp;Next,&nbsp;we&nbsp;demo how to build
a&nbsp;Power&nbsp;App within&nbsp;Teams&nbsp;and export the app if
needed.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303172/Power-Apps-for-Professional-Developers-1-Power-App"
target="_blank" rel="noopener"><SPAN data-contrast="none">Power Apps for
Professional Developers 1: Power Apps + Teams Overview</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303173/Power-Apps-for-Professional-Developers-2-How-to-bu"
target="_blank" rel="noopener"><SPAN data-contrast="none">Power Apps for
Professional Developers 2: How to build Power Apps</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303174/Power-Apps-for-Professional-Developers-3-Exporting"
target="_blank" rel="noopener"><SPAN data-contrast="none">Power Apps for
Professional Developers 3: Exporting Teams Apps</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;with a Customer Connector Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We explain why professional developers should care
about Power Apps and Teams and dive into how they can use a customer connector
within the Team’s environment.&nbsp;The next articles then dive into app flows
and how to think about updating information within the customer
connector.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5309042/Building-a-Teams-Power-App-Using-a-Custom-Connecto"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using a Custom Connector Part 1: Introduction to Using Custom Connectors in
Power Apps for Microsoft Teams</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5309044/Building-a-Teams-Power-App-Using-a-Custom-Connec-2"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using a Custom Connector Part 2: Integrating Power App Flow to Update
Information</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5309046/Building-a-Teams-Power-App-Using-a-Custom-Connec-3"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using a Custom Connector Part 3: Editing Data and Writing Back to the
App</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;with an&nbsp;SAP Connector Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Have SAP? Look at these articles to see how you
can use the SAP connector&nbsp;with Microsoft Power Apps within your
Microsoft&nbsp;Teams environment. There are also posts on reading
and&nbsp;highlighting&nbsp;your app and how&nbsp;to&nbsp;write back
data.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5310030/Building-a-Teams-Power-App-with-an-SAP-Connector-P"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App with an SAP Connector Part 1: Creating Environments and Adding a
Connector</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5310032/Building-a-Teams-Power-App-Using-the-SAP-Connector"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using the SAP Connector Part 2: Reading and Displaying SAP Data in a Power
App</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="" data-font="Symbol" data-listid="2"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5310033/Building-a-Teams-Power-App-Using-the-SAP-Connect-2"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App Using the SAP Connector Part 3: Writing Data from a Power App Back to
SAP</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;for Retail Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We explore how to create a customer information
application for a personalized retail shopping service, using Power Apps for
Microsoft Teams. We&nbsp;will&nbsp;go into components of the app, including data
entry and customer display UI.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303163/Building-a-Teams-Power-App-for-Retail-1-Creating-a"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App for Retail 1: Creating a Power App
and&nbsp;Dataverse&nbsp;Database</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="" data-font="Symbol" data-listid="1"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303166/Building-a-Teams-Power-App-for-Retail-2-Creating-a"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App for Retail 2: Creating a Customer Information Data Entry UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303168/Building-a-Teams-Power-App-for-Retail-3-Creating-a"
target="_blank" rel="noopener"><SPAN data-contrast="none">Building a Teams Power
App for Retail 3: Creating a Customer Display UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Building a Teams Power
Apps&nbsp;Solution&nbsp;for Manufacturing Series</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In this series, we look at a classic example of
an&nbsp;ordering system. What could be a very manual task, we show you how to
build a Power Apps&nbsp;solution. This includes creating UI’s for
both&nbsp;customers&nbsp;and&nbsp;manufacturers.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:240,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303169/Build-a-Teams-Power-App-for-Manufacturing-1-Get-St"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build a Teams Power
App for Manufacturing 1: Get Started with&nbsp;Dataverse</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303170/Build-a-Teams-Power-App-for-Manufacturing-2-Create"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build a Teams Power
App for Manufacturing 2: Create the Customer UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://www.codeproject.com/Articles/5303171/Build-a-Teams-Power-App-for-Manufacturing-3-Create"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build a Teams Power
App for Manufacturing 3: Create the Manufacturer UI</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:252}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">As you can see there are many ways Power Apps can
help various organizations be more agile.&nbsp;To learn more, check
out&nbsp;</SPAN><A href="https://powerapps.microsoft.com/en-us/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Business Apps | Microsoft Power
Apps</SPAN></A><SPAN data-contrast="none">&nbsp;or reach out to your Microsoft
representative.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P></description>
<pubDate>Thu, 02 Dec 2021 19:04:43 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/helping-professional-developers-accelerate-collaboration-with/ba-p/2941803</guid>
<dc:creator>Jacqui_Cuffe_McNamara</dc:creator>
<dc:date>2021-12-02T19:04:43Z</dc:date>
...
</item>
<item>
<title>Get started with minimal API for .NET 6</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/get-started-with-minimal-api-for-net-6/ba-p/2940108</link>
<description><BLOCKQUOTE> <P>TLDR; Using minimal API, you can create a Web API
in just 4 lines of code by leveraging new features like top-level statements and
more.</P> </BLOCKQUOTE> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0why-minimal-api"
target="_blank" rel="noopener" name="%C2%A0why-minimal-api"></A>&nbsp;Why
Minimal API</H2> <P>There are many reasons for wanting to create an API in a few
lines of code:</P> <UL> <LI><STRONG>Create a prototype</STRONG>. Sometimes you
want a quick result, a prototype, something to discuss with your colleagues.
Having something up and running quickly enables you to quickly do changes to it
until you get what you want.</LI> <LI><STRONG>Progressive enhancement</STRONG>.
You might not want all the "bells and whistles" to start with but you may need
them over time. Minimal API makes it easy to gradually add what you need, when
you need it.</LI> </UL> <H2>&nbsp;</H2> <H2>&nbsp;Learn more</H2> <P>Check out
these LEARN modules on learning to use minimal API</P> <UL> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-api?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">Your first minimal API + Swagger</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-database?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with Entity Framework</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-spa?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with React</A></LI> </UL>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#how-is-it-different-from-a-normal-web-api"
target="_blank" rel="noopener"
name="how-is-it-different-from-a-normal-web-api"></A>How is it different from a
normal Web API?</H2> <P>There are a few differences:</P> <UL> <LI><STRONG>Less
files</STRONG>.<SPAN>&nbsp;</SPAN><EM>Startup.cs</EM><SPAN>&nbsp;</SPAN>isn't
there anymore,
only<SPAN>&nbsp;</SPAN><EM>Program.cs</EM><SPAN>&nbsp;</SPAN>remains.</LI>
<LI><STRONG>Top level statements and implicit global usings</STRONG>. Because
it's using top level
statements,<SPAN>&nbsp;</SPAN><CODE>using</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>namespace</CODE><SPAN>&nbsp;</SPAN>are
gone as well, so this code:</LI> </UL> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<LI-CODE lang="csharp"> using System; namespace Application { class Program {
static void Main(string[] args) { Console.WriteLine("Hello World!"); } }
}</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <P>is now this code:</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp"> Console.WriteLine("Hello
World!");</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <UL>
<LI><STRONG>Routes</STRONG><SPAN>&nbsp;</SPAN>Your routes aren't mapped to
controller classes but rather setup with
a<SPAN>&nbsp;</SPAN><CODE>Map[VERB]</CODE><SPAN>&nbsp;</SPAN>function, like you
see above with<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE><SPAN>&nbsp;</SPAN>which
takes a route and a function to invoke when said route is hit.</LI> </UL> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0your-first-api"
target="_blank" rel="noopener" name="%C2%A0your-first-api"></A>&nbsp;Your first
API</H2> <P>To get started with minimal API, you need to make sure that .NET 6
is installed and then you can scaffold an API via the command line, like so:</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">dotnet new web -o
MyApi -f net6.0</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <P>Once you run that, you get a
folder<SPAN>&nbsp;</SPAN><EM>MyApi</EM><SPAN>&nbsp;</SPAN>with your API in
it.</P> <P>What you get is the following code
in<SPAN>&nbsp;</SPAN><EM>Program.cs</EM>:</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">var builder =
WebApplication.CreateBuilder(args); var app = builder.Build(); if
(app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); }
app.MapGet("/", () =&gt; "Hello World!"); app.Run();</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <P>To run it,
type<SPAN>&nbsp;</SPAN><CODE>dotnet run</CODE>. A little difference here with
the port is that it assumes random ports in a range rather than 5000/5001 that
you may be used to. You can however configure the ports as needed. Learn more on
this<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-6.0#working-with-ports"
target="_blank" rel="noopener">docs page</A></P> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0explaining-the-parts"
target="_blank" rel="noopener"
name="%C2%A0explaining-the-parts"></A>&nbsp;Explaining the parts</H2> <P>Ok so
you have a minimal API, what's going on with the code?</P> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0creating-a-builder"
target="_blank" rel="noopener"
name="%C2%A0creating-a-builder"></A>&nbsp;Creating a builder</H3> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp">var builder =
WebApplication.CreateBuilder(args);</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <P>On the
first line you create
a<SPAN>&nbsp;</SPAN><CODE>builder</CODE><SPAN>&nbsp;</SPAN>instance.<SPAN>&nbsp;</SPAN><CODE>builder</CODE><SPAN>&nbsp;</SPAN>has
a<SPAN>&nbsp;</SPAN><CODE>Services</CODE><SPAN>&nbsp;</SPAN>property on it, so
you can add capabilities on it like Swagger Cors, Entity Framework and more.
Here's an example where you set up Swagger capabilities (this needs install of
the Swashbuckle NuGet to work though):</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =&gt; { c.SwaggerDoc("v1", new OpenApiInfo {
Title = "Todo API", Description = "Keep track of your tasks", Version = "v1" });
});</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#creating-the-app-instance"
target="_blank" rel="noopener" name="creating-the-app-instance"></A>Creating the
app instance</H3> <P>Here's the next line:</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <LI-CODE lang="csharp">var app = builder.Build();</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <P>Here we create
an<SPAN>&nbsp;</SPAN><CODE>app</CODE><SPAN>&nbsp;</SPAN>instance. Via
the<SPAN>&nbsp;</SPAN><CODE>app</CODE><SPAN>&nbsp;</SPAN>instance, we can do
things like:</P> <UL> <LI>Starting the
app,<SPAN>&nbsp;</SPAN><CODE>app.Run()</CODE></LI> <LI>Configuring
routes,<SPAN>&nbsp;</SPAN><CODE>app.MapGet()</CODE></LI> <LI>Configure
middleware,<SPAN>&nbsp;</SPAN><CODE>app.UseSwagger()</CODE></LI> </UL> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#defining-the-routes"
target="_blank" rel="noopener" name="defining-the-routes"></A>Defining the
routes</H3> <P>With the following code, a route and route handler is
configured:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">app.MapGet("/", () =&gt; "Hello World!");</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>The
method<SPAN>&nbsp;</SPAN><CODE>MapGet()</CODE><SPAN>&nbsp;</SPAN>sets up a new
route and takes the route "/" and a route handler, a function as the second
argument<SPAN>&nbsp;</SPAN><CODE>() =&gt; "Hello World!"</CODE>.</P> <H3><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#starting-the-app"
target="_blank" rel="noopener" name="starting-the-app"></A>Starting the app</H3>
<P>To start the app, and have it serve requests, the last thing you do is
call<SPAN>&nbsp;</SPAN><CODE>Run()</CODE><SPAN>&nbsp;</SPAN>on
the<SPAN>&nbsp;</SPAN><CODE>app</CODE><SPAN>&nbsp;</SPAN>instance like so:</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">app.Run();</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0add-routes"
target="_blank" rel="noopener" name="%C2%A0add-routes"></A>&nbsp;Add routes</H2>
<P>To add an additional route, we can type like so:</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp">public record Pizza(int Id,
string Name); app.MapGet("/pizza", () =&gt; new Pizza(1,
"Margherita"));</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <P>Now you have code that looks
like so:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">var builder = WebApplication.CreateBuilder(args); var app =
builder.Build(); if (app.Environment.IsDevelopment()) {
app.UseDeveloperExceptionPage(); } app.MapGet("/pizza", () =&gt; new Pizza(1,
"Margherita")); app.MapGet("/", () =&gt; "Hello World!"); public record
Pizza(int Id, string Name); app.Run();</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <P>Where you
to run this code, with<SPAN>&nbsp;</SPAN><CODE>dotnet
run</CODE><SPAN>&nbsp;</SPAN>and navigate
to<SPAN>&nbsp;</SPAN><CODE>/pizza</CODE><SPAN>&nbsp;</SPAN>you would get a JSON
response:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">{
"pizza" : { "id" : 1, "name" : "Margherita" } }</LI-CODE> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#example-app"
target="_blank" rel="noopener" name="example-app"></A>Example app</H2> <P>Let's
take all our learnings so far and put that into an app that supports GET and
POST and lets also show easily you can use query parameters:</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="csharp">var builder =
WebApplication.CreateBuilder(args); var app = builder.Build(); if
(app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var
pizzas = new List&lt;Pizza&gt;(){ new Pizza(1, "Margherita"), new Pizza(2, "Al
Tonno"), new Pizza(3, "Pineapple"), new Pizza(4, "Meat meat meat") };
app.MapGet("/", () =&gt; "Hello World!"); app.MapGet("/pizzas/{id}", (int id)
=&gt; pizzas.SingleOrDefault(pizzas =&gt; pizzas.Id == id));
app.MapGet("/pizzas", (int ? page, int ? pageSize) =&gt; { if(page.HasValue
&amp;&amp; pageSize.HasValue) { return pizzas.Skip((page.Value -1) *
pageSize.Value).Take(pageSize.Value); } else { return pizzas; } });
app.MapPost("/pizza", (Pizza pizza) =&gt; pizzas.Add(pizza)); app.Run(); public
record Pizza(int Id, string Name);</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <P>Run this
app with<SPAN>&nbsp;</SPAN><CODE>dotnet run</CODE></P> <P>In your browser, try
various things like:</P> <UL> <LI>"<A href="http://localhost:%7BPORT%7D/pizzas"
target="_blank" rel="noopener">http://localhost:{PORT}/pizzas</A>", should give
you all pizzas back</LI> <LI>"<A
href="http://localhost:%7BPORT%7D/pizzas?page=1&amp;pageSize=2" target="_blank"
rel="noopener">http://localhost:{PORT}/pizzas?page=1&amp;pageSize=2</A>", should
give you the two first pizzas. See how the query parameters are working for
you.</LI> <LI>"<A href="http://localhost:%7BPORT%7D/pizzas/2" target="_blank"
rel="noopener">http://localhost:{PORT}/pizzas/2</A>", should give you the "Al
Tonno" pizza back. Here you have
the<SPAN>&nbsp;</SPAN><CODE>{id}</CODE><SPAN>&nbsp;</SPAN>matching the 2 and
thereby it filters down on the one item that matches.</LI> </UL> <H2><A
href="https://dev.to/dotnet/get-started-with-minimal-api-1il7#%C2%A0learn-more"
target="_blank" rel="noopener" name="%C2%A0learn-more"></A></H2> <H2>&nbsp;Learn
more</H2> <P>Check out these LEARN modules on learning to use minimal API</P>
<UL> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-api?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">Your first minimal API + Swagger</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-database?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with Entity Framework</A></LI> <LI><A
href="https://docs.microsoft.com/learn/modules/build-web-api-minimal-spa?wt.mc_id=academic-0000-chnoring"
target="_blank" rel="noopener">minimal API with React</A></LI> </UL>
<P>&nbsp;</P></description>
<pubDate>Mon, 08 Nov 2021 21:16:22 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/get-started-with-minimal-api-for-net-6/ba-p/2940108</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-11-08T21:16:22Z</dc:date>
...
</item>
<item>
<title>Azure Logic Apps Announcement - Fall 2021 Release</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-fall-2021-release/ba-p/2911923</link>
<description><P>Azure Logic Apps team is happy to announce the Fall 2021 release
at the Ignite conference.</P> <P>&nbsp;</P> <P><SPAN><STRONG>Why it
matters:</STRONG> Logic Apps is a key part of Azure Integration Services, at the
//build conference this year, we announced the General Availability of Logic
Apps Standard, a&nbsp;flexible, containerized, modern cloud-scale workflow
engine you can run anywhere. Over the past 6 months, we've seen accelerate
growth of the service. Equipped&nbsp;with feedbacks, recommendations, and
business scenarios from customers like you, the team have worked
extremely&nbsp;hard to deliver this release, addressing many of the top
asks.</SPAN></P> <P>&nbsp;</P> <P><SPAN><STRONG>The big
picture:</STRONG>&nbsp;Microsoft has been named as a Leader in <A
href="https://azure.microsoft.com/blog/microsoft-named-as-a-leader-in-2021-gartner-magic-quadrant-for-enterprise-integration-platform-as-a-service/"
target="_self">2021 Gartner® Magic Quadrant™ for Enterprise Integration Platform
as a Service</A>, this marked the 4th year of Microsoft as a leader in terms of
both ability to execute and completeness of vision. In addition, Microsoft have
also been named as a Leader in t</SPAN><SPAN>he Forrester Wave™ on Enterprise
integration platform as a service (iPaaS).</SPAN></P> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Gartner MQ on enterprise iPaaS" style="width: 694px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322848i472DCEE753BEDEEF/image-size/large?v=v2&amp;px=999"
role="button" title="gartner.png" alt="Gartner MQ on enterprise iPaaS" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">Gartner MQ on
enterprise iPaaS</span></span></SPAN></P> <P><SPAN><STRONG>Go deeper:</STRONG>
the Fall 2021 release of Logic Apps is feature-packed, most of them will be
available by the time you're reading this blob post, with the rest being rolled
out and becoming available throughout the week of Ignite.</SPAN></P> <UL>
<LI><SPAN><STRONG>SQL as storage provider</STRONG> is now in public preview.
Storage is a key piece of the Logic Apps service, it is where the runtime stores
the states of the workflows as they are running, enabling Logic Apps to be
highly resilient and suitable for mission-critical&nbsp;workloads. With the new
runtime, it is possible to create and run Logic Apps Standard anywhere: locally,
on premises, multi-cloud thanks to Azure Arc. The SQL as a storage provider
feature allows you to use a SQL database as storage for Logic Apps, which can be
co-located with wherever the Logic Apps runtime is. This removes the dependency
on Azure Storage, and affords you low latency, more predictable&nbsp;cost, and
the ability to run in a fully disconnected manner if needed. <A
href="https://docs.microsoft.com/azure/logic-apps/set-up-sql-db-storage-single-tenant-standard-workflows"
target="_self">Learn more</A></SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SQL
as a storage provider" style="width: 587px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322855i9FA8A70EC08920A2/image-dimensions/587x352?v=v2"
width="587" height="352" role="button" title="sql.png" alt="SQL as a storage
provider" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">SQL as a storage
provider</span></span></SPAN></P> <UL> <LI><SPAN><STRONG>Managed
identity</STRONG>&nbsp;provides an identity for applications to use when
connecting to resources that support Azure Active Directory authentication. In
the Fall 2021 release, we added managed identity support for multi-auth capable
Azure connectors such as SQL and Azure Blob in Logic Apps Consumption, as well
as managed identity support for all Azure connectors in Logic Apps Standard. <A
href="https://docs.microsoft.com/azure/logic-apps/create-managed-service-identity?tabs=consumption"
target="_self">Learn more</A></SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Managed identity in Logic Apps" style="width: 520px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322856i23498FA227108529/image-dimensions/520x310?v=v2"
width="520" height="310" role="button" title="msi.JPG" alt="Managed identity in
Logic Apps" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Managed identity in Logic
Apps</span></span></SPAN></P> <UL> <LI><SPAN><STRONG>Automation
Tasks</STRONG>&nbsp;provides all Azure customers an easy way to automate their
daily tasks, with just a few clicks, you can create tasks that automatically
turns on and off the virtual machine on a schedule, purge old blobs in the
storage account, or get a monthly usage report sent via email. In this release,
the Logic Apps team have partnered with the Azure messaging team on building the
experience for easy event replication. As a customer, you can choose from
out-of-box templates to replicate the actual messages and events (rather than
just metadata) between and across Service Bus queue, Service Bus topic, and
Event Hub. Stateless workflows in Logic Apps standard are used to power this
experience behind the scene, so you know the replication is highly performant.
<A
href="https://docs.microsoft.com/azure/logic-apps/create-replication-tasks-azure-resources"
target="_self">Learn more</A></SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Automation tasks for event replication" style="width: 490px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322857i645436E732616345/image-dimensions/490x320?v=v2"
width="490" height="320" role="button" title="task.JPG" alt="Automation tasks
for event replication" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Automation tasks for event
replication</span></span></SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <UL>
<LI><STRONG>Designer</STRONG> is the key to fast development, and we have made
it even better. Following the major designer refresh that gave it a new
look-and-feel, designer have also gotten a performance boost with the latest
release. The lines rendered on the canvas is more intuitive to help you better
understand the flow, especially for composite actions such as Condition and
Switch. <A href="https://docs.microsoft.com/azure/logic-apps/designer-overview"
target="_self">Learn more</A></LI> </UL> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Line
rendering on condition action" style="width: 599px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322859i530C962469BCC362/image-dimensions/599x306?v=v2"
width="599" height="306" role="button" title="if.png" alt="Line rendering on
condition action" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Line rendering on condition
action</span></span></P> <UL> <LI><SPAN><STRONG>Consumption to Standard
export</STRONG> is available for public preview. To aid customers with existing
Logic Apps Consumption resources to upgrade to Standard, an export experience is
available in the Azure portal. It will analyze the workflow and help you create
corresponding&nbsp;resources in the Standard SKU, accelerating the adoption and
unlock richer capabilities in Logic Apps Standard such as virtual network
integration.</SPAN></LI> </UL> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Export Logic Apps Consumption to Standard" style="width: 559px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/322860i241205B932710279/image-dimensions/559x239?v=v2"
width="559" height="239" role="button" title="export.JPG" alt="Export Logic Apps
Consumption to Standard" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Export Logic Apps Consumption to
Standard</span></span></SPAN></P> <UL> <LI><SPAN><STRONG>Connectors</STRONG>, a
key&nbsp;value proposition for Logic Apps is continuously&nbsp;being improved,
including SFTP with trigger support; <A
href="https://docs.microsoft.com/azure/logic-apps/logic-apps-enterprise-integration-flatfile?tabs=standard"
target="_self">flatfile encode/decode without Integration Account dependency in
Logic Apps Standard</A>; <A
href="https://docs.microsoft.com/azure/connectors/connectors-create-api-cosmos-db?tabs=standard"
target="_self">Cosmos DB with trigger, CRUD, and bulk create support</A>;
and&nbsp;lastly but certainly not least, peek-lock support is added to the
built-in Service Bus connector to allow the implementation of advanced messaging
patterns.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>See for
yourself:</STRONG>&nbsp;make sure to check out our&nbsp;<A
href="https://myignite.microsoft.com/sessions/94dac4c6-9cf2-4426-b22e-0304e4aefbf1"
target="_self">demo-packed session for Ignite</A> that also features how ASOS, a
global leader in fashion and tech, is leveraging Logic Apps to deliver innovate
solutions.</P> <P>&nbsp;</P> <P><SPAN><STRONG>What's next:</STRONG>&nbsp;if you
are not already using Logic Apps, get started today with <A
href="https://azure.microsoft.com/free/serverless/" target="_self">12 months of
free services</A>&nbsp;a see how Logic Apps can help your business innovate
faster. If you are an experienced Logic Apps customer, be sure to check out the
new features, and as always, let us know your thoughts and feedback in the
discussion section below.</SPAN></P> <P>&nbsp;</P> <P><SPAN>Derek Li, on behalf
of the entire Logic Apps team</SPAN></P></description>
<pubDate>Tue, 02 Nov 2021 18:24:11 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-fall-2021-release/ba-p/2911923</guid>
<dc:creator>derek1ee</dc:creator>
<dc:date>2021-11-02T18:24:11Z</dc:date>
...
</item>
<item>
<title>Putting Tools in Your Hands to Improve Developer Productivity</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/putting-tools-in-your-hands-to-improve-developer-productivity/ba-p/2902225</link>
<description><P><STRONG>By:&nbsp;<LI-USER uid="61063"></LI-USER>, Senior Product
Marketing Manager and&nbsp;&nbsp;<LI-USER uid="1023930"></LI-USER>,&nbsp;Senior
Product Marketing Manager&nbsp;</STRONG></P> <P>&nbsp;</P> <P>Developers are
tasked with building the future. For organizations looking to usher in the next
wave of digital transformation, it’s essential to create the right working
environment to maximize developer innovation and well-being.</P> <P>&nbsp;</P>
<P><A href="https://azure.microsoft.com/overview/developer-velocity/"
target="_self"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="DeveloperVelocity.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/331504i48BAE046213C6976/image-size/large?v=v2&amp;px=999"
role="button" title="DeveloperVelocity.png" alt="DeveloperVelocity.png"
/></span></A></P> <P>&nbsp;</P> <P>When we talk about improving <A
href="https://azure.microsoft.com/overview/developer-velocity/" target="_blank"
rel="noopener">Developer Velocity</A>, we’re referring to removing barriers and
points of friction for developers so they can feel valued and achieve more.</P>
<P>&nbsp;</P> <P>Organizations that boost Developer Velocity achieve better
business results and innovate faster<A href="#_ftn1" target="_blank"
rel="noopener" name="_ftnref1"><SPAN><SUP>[1]</SUP></SPAN></A>. Naturally, this
has become a common goal among businesses, but unfortunately, many struggle to
accurately measure Developer Velocity. Historically, firms have measured this by
tracking activity-related metrics such as lines of code written per day or
number of builds shipped in a quarter, but this approach fails to consider other
key factors. It’s time for organizations to take a step back and see the bigger
picture: Developer Velocity is about far more than just speed of delivery – it’s
about the other factors that impact developers as well.</P> <P>&nbsp;</P> <P>For
the past two years, Microsoft has been a strong proponent of Developer Velocity
research, leading numerous projects and initiatives to understand what it takes
for organizations to achieve it.</P> <P>&nbsp;</P> <P>In 2021, we took the next
step in our journey by launching <A href="https://aka.ms/dvl" target="_blank"
rel="noopener">Developer Velocity Lab</A> (DVL), a joint GitHub and Microsoft
initiative which lives under Microsoft Research. DVL is led by Dr. Nicole
Forsgren. Her industry-leading work in DevOps and software development metrics
includes authoring the Shingo Publication Award-winning book&nbsp;Accelerate:
The Science of Lean Software and DevOps.</P> <P>&nbsp;</P> <P>Today, we’re
highlighting two pre-existing tools, and releasing one more, which will help you
measure Developer Velocity more holistically in your own organization and make
improvements to drive better business. Here are the three tools available to
help teams and organizations improve their Developer Velocity:</P> <UL> <LI>The
Developer Velocity Assessment, which organizations have been using to improve
outcomes for almost two years.</LI> <LI>The SPACE framework, a flexible tool
which can be used to help anyone think more deeply about measuring and improving
development work and create their own metrics.</LI> <LI>The DevOps Workflow
Generator, a new interactive tool that helps teams build their workflows so they
can visualize and communicate their work, and later benchmark their
performance.</LI> </UL> <P>Now, let’s explore how each tool can help you and
your organization improve your Developer Velocity.</P> <P>&nbsp;</P>
<H4><U>Measuring your organization’s Developer Velocity with the Assessment
</U></H4> <P>One of our key goals has always been to provide you with tools to
take action. In May 2020 we released the&nbsp;<A
href="https://developervelocityassessment.com/" target="_blank"
rel="noopener">Developer Velocity Assessment</A>&nbsp;to help organizations
measure their current Developer Velocity. Since release, this tool has helped
hundreds of companies of all sizes understand the impact of technology, working
practices, and organization enablement on their development teams’ performance.
This assessment helps organizations benchmark their Developer Velocity Index
(DVI) scores relative to industry peers, as well as understand actionable
guidance for how to drive better business outcomes for their organization.
Understanding your current level of Developer Velocity enables you to begin
making improvements. &nbsp;</P> <P>&nbsp;</P> <H4><U>Using </U><U>the SPACE
framework to enhance Developer Velocity </U></H4> <P>Another tool to help you
understand Developer Velocity in your own organization is the SPACE framework.
True to DVL’s research roots, this framework is derived from DVL’s first
publication, <A
href="https://www.microsoft.com/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/?cid=techcommblog/"
target="_blank" rel="noopener"><EM>The SPACE of Developer Productivity: There's
more to it than you think</EM></A>. The SPACE framework is an easily adaptable
and flexible tool that helps organizations measure developer productivity in a
more holistic manner.</P> <P>&nbsp;</P> <P>The five dimensions of the SPACE
framework are: <STRONG>S:</STRONG> satisfaction and well-being,
<STRONG>P:</STRONG> performance, <STRONG>A:</STRONG> activity,
<STRONG>C:</STRONG> communication and collaboration, and <STRONG>E:</STRONG>
efficiency and flow. We suggest measuring at least three of the five dimensions
at any given time. Traditionally, developer activity was the main metric that
organizations measured, without focusing as much on other key areas such as
efficiency and flow.</P> <P>&nbsp;</P> <P>To see an example of the SPACE
framework in action, check out how GitHub implemented it during <A
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">The Good Day Project</A>. This two-week study
invited GitHub developers to take a daily survey and share their engineering
data to help identify which patterns and practices could help them have “good
days.” The study yielded many interesting results, but some of the key findings
were that interruptions are more disruptive than we think, too many meetings can
get in the way of progress, and a short reflection period at the end of each day
makes a big difference in how people feel in terms of meeting their goals.</P>
<P>&nbsp;</P> <P>By implementing the SPACE framework, you can more holistically
measure and understand Developer Velocity in your organization.</P>
<P>&nbsp;</P> <H4><U>Visualize and improve your work with the DevOps Workflow
Generator</U> <FONT color="#FF0000"><SUP>NEW!</SUP></FONT></H4> <P>Today, DVL is
excited to announce the release of a new tool designed to help organizations
measure and improve Developer Velocity: the <A
href="https://aka.ms/devopsworkflow" target="_blank" rel="noopener">DevOps
Workflow Generator</A>. By granting users an end-to-end view of their entire
DevOps toolchain in one place, they can begin to surface, track, and understand
the tooling and automation that supports their workflows. Without a clear – and
shared – understanding of the workflow, improving it is not possible.</P>
<P>&nbsp;</P> <BLOCKQUOTE> <P>At Microsoft Research, we’re very focused on
helping developers around the world be happy and successful. As we better
understand developers’ environments and what contributes to good days and good
outcomes, we can design better tools and solutions to support them. We’re
confident that the DevOps Workflow Generator will help users better understand
the interplay between their various tools and enable them to have more
productive conversations about optimizing their environments for improved
efficiency and flow.</P> <P>&nbsp;</P> <P>- Dr. Nicole Forsgren, Partner
Research Manager, Microsoft Research<SPAN style="font-family:
inherit;">&nbsp;</SPAN></P> </BLOCKQUOTE> <P><SPAN style="font-family:
inherit;">Additionally, the anonymous, aggregated data collected from the DevOps
Workflow Generator will help users understand up-to-date DevOps trends in their
industry and/or geography. Once the tool has collected enough responses, DVL
will release reports summarizing and revealing any prevalent DevOps
trends</SPAN><A style="font-family: inherit; background-color: #ffffff;"
href="#_ftn2" target="_blank" rel="noopener"
name="_ftnref2"><SUP>[2]</SUP></A><SPAN style="font-family:
inherit;">.</SPAN></P> <H4>&nbsp;</H4> <H4><U>Start your Developer Velocity
journey today</U></H4> <P>As almost every company is now a software company,
developers are at the core of the next wave of digital transformation. Our
overarching goal is to help developers, teams, and organizations in a holistic
way. This includes understanding the impact of technology, working practices and
organizational enablement with the <A
href="https://developervelocityassessment.com/" target="_blank"
rel="noopener">Developer Velocity Assessment</A>; improving Developer Velocity
across multiple dimensions of the <A href="https://aka.ms/SPACEpaper"
target="_blank" rel="noopener">SPACE framework</A>; and even optimizing an
organization’s DevOps toolchain through the use of the new <A
href="https://aka.ms/devopsworkflow" target="_blank" rel="noopener">DevOps
Workflow Generator</A>.</P> <P>&nbsp;</P> <P>We are delighted to see teams
taking the next step on their Developer Velocity journeys towards unlocking
better overall performance for their teams. To learn more about how some of our
customers have improved business outcomes by tapping into the full power and
creativity of their developers, read this report on <A
href="https://azure.microsoft.com/en-us/resources/developer-velocity-lessons-from-digital-leaders/"
target="_blank" rel="noopener">Developer Velocity: Lessons from Digital
Leaders</A>. For an example of how GitHub implemented the SPACE framework and
found real-world ways to improve developers’ days, check out GitHub’s <A
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">Good Day report</A>.</P> <P>&nbsp;</P> <P>We
believe the tools that Microsoft has released will help you and your
organization improve your overall developer productivity and take the next step
on your Developer Velocity journey.</P> <P>&nbsp;</P> <P>-----------------</P>
<P><A href="#_ftnref1" target="_blank" rel="noopener"
name="_ftn1"><SPAN><SUP>[1]</SUP></SPAN></A> <A
href="https://azure.microsoft.com/resources/developer-velocity-lessons-from-digital-leaders/"
target="_blank" rel="noopener">Developer Velocity: Lessons from Digital Leaders
on Accelerating Business Performance through Software Excellence</A><SPAN>.
Microsoft</SPAN>. March, 2021.</P> <P><A href="#_ftnref2" target="_blank"
rel="noopener" name="_ftn2"><SPAN><SUP>[2]</SUP></SPAN></A> Final reports
contingent on sufficient user participation.</P></description>
<pubDate>Fri, 03 Dec 2021 18:50:38 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/putting-tools-in-your-hands-to-improve-developer-productivity/ba-p/2902225</guid>
<dc:creator>AlisonYu</dc:creator>
<dc:date>2021-12-03T18:50:38Z</dc:date>
...
</item>
<item>
<title>Build secure apps on hardened dev environments with secure DevOps
workflows</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-secure-apps-on-hardened-dev-environments-with-secure/ba-p/2893917</link>
<description><P>The threat landscape has evolved over the past few years.
Hackers are “shifting-left,” compromising upstream dependencies and engineering
systems. These advanced attacks can impact entire development environments and
software supply chains. One recent example occurred at a software vendor where
an attacker targeted their developer workflow and software supply chain. After
gaining access, the attacker uploaded a new image into thousands of builds that
scanned their software supply chain—extracting secrets/credentials and widening
the breach. This attack exemplifies how it’s no longer enough to just integrate
security within the DevOps workflow, now you must harden and secure the workflow
itself!</P> <P>&nbsp;</P> <P>So, how do you secure your upstream development
environments?</P> <P>&nbsp;</P> <P>Kick it off by securing all developer
machines and ensuring that your developers interact with non-trusted code in a
secure manner. These steps help prevent malicious code from executing on
developer machines and prevent hackers from using developer machines to act as a
"jump-box" to further systems.</P> <P>&nbsp;</P> <P><A
href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/"
target="_blank" rel="noopener">GitHub Codespaces</A> is a solution where your
developers can securely interact with non-trusted code inside a sandbox
environment. This cloud-powered development environment is available anywhere,
on any device. Going further, it’s never been simpler to manage user
permissions, store encrypted secrets in the right places, and implement GPG
verification, so that commits are verified and made only by trusted users. And
it’s fast too. Your team can go from zero to a functioning development
environment in less than 10 seconds! Developers can spin off new Codespaces for
parallel workstreams with no overhead. The solution is flexible and efficient
while also providing security, compliance, and productivity enhancements for
your organization.</P> <P>&nbsp;</P> <P>Along with developer machines, you’ll
also need to secure your DevOps workflows. GitHub Actions helps your development
teams easily create secure and automated workflows to build, test, package,
release, and deploy apps to Azure or any other cloud. Azure provides a rich set
of <A href="https://docs.microsoft.com/en-us/azure/developer/github/"
target="_blank" rel="noopener">GitHub Actions integrations</A> that help you
adopt an “everything as-code” DevOps model. In this model, compliance and
security policies, build and release pipelines, etc. are written “as code,”
enabling continuous improvement, better re-use, and greater transparency.</P>
<P>&nbsp;</P> <P>It’s now common for hackers to target development environments,
use discovered credentials to tamper with source code, and inject malicious
code. Compounding this risk is the fact that your development teams must store
their Azure service principal secrets in GitHub, which is both redundant and
extremely risky. At&nbsp;<A
href="https://myignite.microsoft.com/sessions/0c2b0490-1e47-4144-a569-20632ea53661?source=sessions"
target="_blank" rel="noopener">Microsoft Ignite 2021</A><SPAN>,</SPAN> I’m
excited to announce the preview of capabilities that enable developers to secure
their deployments to Azure without requiring them to store long-term credentials
in GitHub!</P> <P>&nbsp;</P> <P><STRONG>Remove credentials from developer
environments with new Azure and GitHub integrations</STRONG></P> <P>&nbsp;</P>
<P>Removing long-lived, Azure credentials from the development environment is a
key strategy to reduce vulnerabilities that hackers can easily exploit.
<SPAN>You can now deploy from your GitHub repo to Azure without creating,
storing, or managing credentials for Azure AD applications. This uses the <A
href="https://docs.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation"
target="_blank" rel="noopener">Azure AD workload identity federation</A>
capability which is now in public preview.</SPAN> The new capabilities alleviate
the need for managing Azure service principal secrets and other long-lived cloud
credentials in the GitHub secret store. With this integration, you can manage
all cloud resources access securely in Azure. These capabilities also minimize
the chances of service downtime due to expired credentials in GitHub.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="samit_jhaveri_0-1635396060660.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/320727i67F17330D8D5E8B0/image-size/medium?v=v2&amp;px=400"
role="button" title="samit_jhaveri_0-1635396060660.png"
alt="samit_jhaveri_0-1635396060660.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Setting up OpenID Connect (OIDC) integration with Azure AD and GitHub
Actions</STRONG></P> <P>&nbsp;</P> <P>To set up a secured GitHub Actions
workflow using OpenID Connect integration with Azure AD you'll need:</P> <UL>
<LI>An&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/active-directory/develop/"
target="_blank" rel="noopener">Active Directory application</A> with a service
principal that has contributor access to your subscription</LI> <LI>An Active
Directory application configured with a federated credential to trust tokens
issued by GitHub Actions to your GitHub repository. You can configure this in
the Azure portal or with Microsoft Graph REST APIs</LI> <LI>A GitHub Actions
workflow that requests GitHub issue tokens to the workflow and uses
the&nbsp;azure/login@v1.4.0&nbsp;action</LI> </UL> <P>&nbsp;</P> <P>To learn
more about how to set up the integration, check out the <A
href="https://aka.ms/OIDCAzureConnect" target="_blank"
rel="noopener">documentation</A>.</P> <P>&nbsp;</P> <P><STRONG>Start building
secure apps with GitHub and Azure</STRONG></P> <P>&nbsp;</P> <P>With deep
integrations between GitHub and Azure, the <A
href="https://azure.microsoft.com/en-us/solutions/devsecops/#overview"
target="_blank" rel="noopener">Microsoft DevSecOps solution</A> is the
&nbsp;complete software development solution that empowers your development
teams to securely deliver cloud-native apps at DevOps speed! This solution
enables you to write more secure code, respond quickly to vulnerabilities in
your software supply chain, adopt best practices to harden your development
environments, and foster collaboration between your developers and security
teams.</P> <P>&nbsp;</P> <P>For more information on integrating security into
your development lifecycle and hardening your DevOps workflows, check out our <A
href="https://azure.microsoft.com/en-us/resources/6-tips-to-integrate-security-into-your-devops-practices/"
target="_blank" rel="noopener">e-book</A>.</P> <P>&nbsp;</P></description>
<pubDate>Tue, 02 Nov 2021 17:01:14 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-secure-apps-on-hardened-dev-environments-with-secure/ba-p/2893917</guid>
<dc:creator>samit_jhaveri</dc:creator>
<dc:date>2021-11-02T17:01:14Z</dc:date>
...
</item>
<item>
<title>Plan your Microsoft Azure experience at Microsoft Ignite 2021</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite-2021/ba-p/2871583</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="bff948bd-7c60-41e2-ba58-6d3195441884.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319128iF4AFDC943B3C5026/image-size/large?v=v2&amp;px=999"
role="button" title="bff948bd-7c60-41e2-ba58-6d3195441884.png"
alt="bff948bd-7c60-41e2-ba58-6d3195441884.png" /></span></P> <P>&nbsp;</P>
<P><SPAN style="font-family: inherit;">We thought you might be interested to
learn how you can plan your Microsoft and Azure experience at the upcoming
Microsoft Ignite, our free digital event from November 2</SPAN><SUP
style="font-family: inherit;">nd</SUP><SPAN style="font-family: inherit;"> –
4</SPAN><SUP style="font-family: inherit;">th</SUP><SPAN style="font-family:
inherit;">, 2021.</SPAN></P> <P>&nbsp;</P> <P>During the event, you’ll discover
the latest infrastructure, data and AI, application development, and security
technologies that help you innovate anywhere from multicloud to edge, with
Microsoft and Azure. You’ll also have a chance to speak with Microsoft experts
and have the opportunity to continue your technical learning journey.</P>
<P>&nbsp;</P> <P><A href="https://myignite.microsoft.com/home" target="_blank"
rel="noopener">Register</A> to gain full access to all Microsoft Ignite has to
offer – it’s easy and at no-cost to you.</P> <P>&nbsp;</P> <P><STRONG>Innovate
Anywhere from Multicloud to Edge</STRONG></P> <P>We are excited to share how
we’re delivering next-generation apps that run securely anywhere, are built with
limitless data capabilities, and harness the power of AI.&nbsp; Join Scott
Guthrie who will kick off with <STRONG><EM>Innovate Anywhere From Multicloud to
Edge</EM></STRONG> along with these curated sessions you won’t want to miss:</P>
<P>&nbsp;</P> <UL> <LI><STRONG><A
href="https://myignite.microsoft.com/sessions/bd48b752-53b7-4e0e-b15c-4245a0e5ca50?source=sessions"
target="_blank" rel="noopener">CTS03: Innovate Anywhere From Multicloud to
Edge</A></STRONG></LI> <LI><A
href="https://myignite.microsoft.com/sessions/27b4aeb9-ba89-403c-9cdf-4c629eb538c1?source=sessions"
target="_blank" rel="noopener">BRK210: Secure, develop, and innovate in hybrid
and multicloud with Microsoft Azure</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/56830052-a938-459e-8b5c-950ac6ac945d?source=sessions"
target="_blank" rel="noopener">BRK211: Accelerate your cloud migration and
modernization journey with Azure</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/0c2b0490-1e47-4144-a569-20632ea53661?source=sessions"
target="_blank" rel="noopener">BRK212: Build secure apps with collaborative
DevSecOps practices</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/64ad9ab4-31aa-410a-b5a0-792c9318eb90?source=sessions"
target="_blank" rel="noopener">BRK213: Innovate with Cloud Native and Open
Source on Azure</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/225eccb7-68f8-4d7b-9f67-4828b20b0a0f?source=sessions"
target="_blank" rel="noopener">BRK214: Accelerate innovation with low-code
applications using Power Platform</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/cb857345-7f4b-459f-b8bf-ab481a02be72?source=sessions"
target="_blank" rel="noopener">BRK215: Accelerate time to insight with Azure
Synapse</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/e3f5c4bc-5cc8-4e09-89a7-033da3a16433?source=sessions"
target="_blank" rel="noopener">BRK216: Introducing new innovations in Azure
AI</A></LI> <LI><A
href="https://myignite.microsoft.com/sessions/88fb4748-e5a9-4fc2-8ddb-68366473a8bd?source=sessions"
target="_blank" rel="noopener">BRK225: Transform your business with new
innovations from edge to cloud across SQL Server and Azure SQL</A></LI> </UL>
<P><STRONG>Follow #MSIgnite</STRONG></P> <P>Explore the latest event news,
trending topics, and share your point of view in real time with your community.
Join us on Twitter and LinkedIn by using #MSIgnite.</P> <P><A
href="https://twitter.com/MS_Ignite" target="_blank" rel="noopener">Join the
conversation &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Connection Zone</STRONG></P>
<P>Only at #MSIgnite can you discover live, interactive content from Microsoft
experts and your worldwide community.</P> <P><A
href="https://myignite.microsoft.com/community-connect" target="_blank"
rel="noopener">Get connected &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Learning
Zone</STRONG></P> <P>Are you ready to accelerate your skills? Check out the
Learning Zone at #MSIgnite and gain access to expert-guided sessions, become
certified and take the Cloud Skills Challenge!</P> <P><A
href="https://myignite.microsoft.com/learning-zone" target="_blank"
rel="noopener">Learning Zone &gt;</A></P> <P>&nbsp;</P> <P><STRONG>1:1
Consultation</STRONG></P> <P>Connect with a Microsoft engineer for questions
related to architecting, implementing, or migrating a new solution by scheduling
a 45-minute consultation.</P> <P><A
href="https://myignite.microsoft.com/app-consult" target="_blank"
rel="noopener">Schedule today &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Continue
your learning journey</STRONG></P> <P>Discover more in-depth learning paths,
training options, communities, and certification details across all Microsoft
cloud solutions from one place.</P> <P><A href="https://aka.ms/learnatignite"
target="_blank" rel="noopener">Start exploring &gt;</A></P></description>
<pubDate>Fri, 03 Dec 2021 18:52:02 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite-2021/ba-p/2871583</guid>
<dc:creator>Jenn Jinhong</dc:creator>
<dc:date>2021-12-03T18:52:02Z</dc:date>
...
</item>
<item>
<title>How YOU create a script package for PowerShell gallery</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-create-a-script-package-for-powershell-gallery/ba-p/2870551</link>
<description><HEADER id="main-title" class="crayons-article__header"> <DIV
class="crayons-article__header__meta"> <DIV class="spec__tags"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screenshot 2021-10-21 at 18.24.49.png" style="width: 787px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319019i7E14ACC2534DB0E5/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-10-21 at 18.24.49.png" alt="Screenshot
2021-10-21 at 18.24.49.png" /></span></DIV> </DIV> </HEADER> <DIV
class="crayons-article__main"> <DIV id="article-body"
class="crayons-article__body text-styles spec__body" data-article-id="871543">
<BLOCKQUOTE> <P>TLDR; this article covers how to build a package for the
PowerShell gallery. This is a great way to share your scripts and modules with
others. You want to help the community, right? Of course, you do :)</img></P>
</BLOCKQUOTE> <P>Here's the steps we are about to take:</P> <UL>
<LI><STRONG>Author script</STRONG>. First you need to create a script. In this
case we are creating a script, but you can also create and upload a module to
PowerShell gallery.</LI> <LI><STRONG>Document it</STRONG>. When you document
your script, you do so,
so<SPAN>&nbsp;</SPAN><CODE>Get-Help</CODE><SPAN>&nbsp;</SPAN>will work with it,
this is highly recommended to do.</LI> <LI><STRONG>Prepare the package</STRONG>.
To be able to upload your script, it needs a specific set of metadata, there are
commands that will help you do that.</LI> <LI><STRONG>Sign up for PowerShell
gallery</STRONG>. It's free to sign up for the gallery, but what you do need
from it is an API key that will help you publish your package.</LI>
<LI><STRONG>Publish</STRONG>. Using a command, you can push your package to the
gallery. At this point you have bragging rights, and can show your friends
:)</img></LI> <LI><STRONG>Save or install package</STRONG>. There are two
different approaches you can use to consume a package, pick one.</LI> <LI>that's
it :)</img></LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#author-script"
target="_blank" rel="noopener" name="author-script"></A>Author script</H2> <P>To
author a script, you need a file ending in<SPAN>&nbsp;</SPAN><CODE>.ps1</CODE>.
Then you can use the PowerShell scripting language to add your commands and/or
parameters.</P> <H2>&nbsp;</H2> <H2>Support Get-Help</H2> <P>&nbsp;To support
the Get-Help command, you want to add some documentation that supports. Add for
example the above meta information right on top of a function:</P> <LI-CODE
lang="powershell">&lt;# .SYNOPSIS Retrieves a planet .DESCRIPTION A command that
retrieves a planet by id .PARAMETER Id Specifies the record you want back
.INPUTS Id .OUTPUTS Object. .EXAMPLE PS&gt; Get-Planet 1 #&gt; Function
Get-Planet { implementation... }</LI-CODE> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#document-it"
target="_blank" rel="noopener" name="document-it"></A>Document it</H2> <P>Before
you can upload your package, it needs some metadata. Without this metadata, your
package will be rejected if you try to upload it. The metadata you need are
information on things like version, author, company and a description. What you
do is to feed that information into a command and out comes metadata + a unique
GUID. At this point you need to add this metadata to the top of your script
file.</P> <P>First, let's generate the metadata, or script info, as it's also
referred to:</P> <OL> <LI>Generate script file info:</LI> </OL> <LI-CODE
lang="powershell">$Parms = @{ Path = "./new.ps1" Version = "1.0" Author =
"&lt;email&gt;" CompanyName = "&lt;company&gt;" Description = "Description" }
New-ScriptFileInfo @Parms -PassThru</LI-CODE> <DIV class="highlight
js-code-highlight"><CODE>this creates a file <EM>new.ps1</EM>.</CODE></DIV> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>You will also get meta
information within the above file that looks something like so:</P> <LI-CODE
lang="powershell"> &lt;#PSScriptInfo .VERSION 1.0 .GUID &lt;a unique GUID&gt;
.AUTHOR &lt;email&gt; .COMPANYNAME &lt;company&gt; .COPYRIGHT .TAGS the tags you
want, comma separated .LICENSEURI https://mit-license.org .PROJECTURI link to
for example github, if that's where you store the code .ICONURI
.EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES .PRIVATEDATA #&gt; &lt;# .DESCRIPTION Description #&gt; # Here's
the rest of your script</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel">&nbsp;</DIV>
</DIV> <P>Next, you want to perhaps fill in more info in the above meta
information. You want to make sure you have a nice project description and tags
for better visibility in the gallery. Next, you can verify that the script file
and its script info validates.</P> <OL> <LI>Ensure all is good with script file
info:</LI> </OL> <LI-CODE lang="powershell">Test-ScriptFileInfo -Path
./swapi.ps1</LI-CODE> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>If everything is good,
you will get a response similar to:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE> Version Name Author
Description ------- ---- ------ ----------- 1.1 swapi author Description
</CODE></PRE> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>Great, you are ready for the next step, which is to publish your
script to the gallery.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#sign-up-for-the-powershell-gallery"
target="_blank" rel="noopener"
name="sign-up-for-the-powershell-gallery"></A>Sign up for the PowerShell
Gallery</H2> <OL> <LI>Navigate to<SPAN>&nbsp;</SPAN><A
href="https://www.powershellgallery.com/" target="_blank"
rel="noopener">https://www.powershellgallery.com/</A><SPAN>&nbsp;</SPAN>and
create a user.</LI> <LI>Select API keys menu option in top-right part of the
page.</LI> <LI>Select "Create" and expand that section. Here you are faced with
following fields:</LI> </OL> <span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Chris_Noring_0-1634837022312.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319017i614C473B9811476D/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_0-1634837022312.png"
alt="Chris_Noring_0-1634837022312.png" /></span> <OL> <LI>Fill in the following
values:</LI> </OL> <span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Chris_Noring_1-1634837022308.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319015i249CB82F836453E5/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_1-1634837022308.png"
alt="Chris_Noring_1-1634837022308.png" /></span> <P>&nbsp;</P> <P>and select
"Create". Now copy this API key, you will use it next.</P> <OL> <LI> <P>Publish
your script using<SPAN>&nbsp;</SPAN><CODE>Publish-Script</CODE>:</P> </LI> </OL>
<LI-CODE lang="powershell">Publish-Script -Path ./swapi.ps1 -NuGetApiKey &lt;api
key&gt;</LI-CODE> <P>&nbsp;</P> <P>That should take a few seconds, once done,
you will be able to find your script.</P> <OL> <LI> <P>In PowerShell gallery,
select "Manage Packages", expand "Published Packages", there's your package,
give yourself a high-five, well done!! :)</img></P> </LI> </OL> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#consume-your-package"
target="_blank" rel="noopener" name="consume-your-package"></A>Consume your
package</H2> <P>To ensure everything work as intended, we will try to consume
our package by downloading it from the PowerShell gallery and use it on our
machine. We have two options on how to do that:</P> <UL> <LI><STRONG>Install the
script</STRONG>. This will place the script in a specific downloads folder. We
will still need to dot source it to use it.</LI> <LI><STRONG>Save the
script</STRONG>. This will allow is to save the script to a destination on our
machine that we decide, we still need to dot source to use it.</LI> </UL>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#a-install-script"
target="_blank" rel="noopener" name="a-install-script"></A>a) Install
script</H2> <OL> <LI> <P>Install from the PowerShell gallery:</P> </LI> </OL>
<P><CODE></CODE></P> <LI-CODE lang="powershell">Install-Script -Name swapi
-Force</LI-CODE> <P><CODE></CODE></P> <P><CODE> </CODE></P> <P>At this point,
your script was installed on your machine, in a specific script folder. Next,
you need to find that script folder, so you can dot source and use the content
of the script.</P> <OL> <LI> <P>Verify install
with<SPAN>&nbsp;</SPAN><CODE>Get-InstallledScript</CODE></P> </LI> </OL>
<LI-CODE lang="powershell"> Get-InstalledScript</LI-CODE> <P
class="lia-indent-padding-left-30px"><CODE></CODE></P> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_2-1634837022309.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/319016i524BE983E7B12BAC/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_2-1634837022309.png"
alt="Chris_Noring_2-1634837022309.png" /></span> <P>&nbsp;</P> <P>Great, you
were able to get some information back on that the package (your script), was
downloaded from PowerShell Gallery. Next, you need to find the install path of
the script, to be able to use it.</P> <OL> <LI>To use the script, we first need
to localize it with<SPAN>&nbsp;</SPAN><CODE>Get-InstalledScript</CODE>:</LI>
</OL> <LI-CODE lang="powershell">(Get-InstalledScript -Name
"swapi").InstalledLocation</LI-CODE> <DIV class="highlight js-code-highlight">
<DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>it says something like so:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE>
/Users/&lt;user&gt;/.local/share/powershell/Scripts </CODE></PRE> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>dot source from
there, use the response in the last step and<SPAN>&nbsp;</SPAN><EM>dot
source</EM><SPAN>&nbsp;</SPAN>it like so:</LI> </OL> <LI-CODE
lang="powershell">.
/Users/&lt;user./.local/share/powershell/Scripts/swapi.ps1</LI-CODE> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>Note the usage of "."
and then the path as the second argument, that's what's meant by dot
sourcing.</P> <P>At this point, your script is on your machine, the content of
it is available to use.</P> <OL> <LI>To test it out, try
running<SPAN>&nbsp;</SPAN><CODE>Get-Planet</CODE>, you elected to download the
swapi</LI> </OL> <LI-CODE lang="powershell">Get-Planet 2</LI-CODE> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>This should give a JSON
response.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#b-save-script-and-then-dot-source"
target="_blank" rel="noopener" name="b-save-script-and-then-dot-source"></A>b)
Save script and then dot source</H2> <P>In this second approach, instead of
installing the script, you would save it to disk at a location you specify. The
big difference is that it doesn't end up in pre-determined install location, but
rather in a place you choose.</P> <LI-CODE lang="powershell">Save-Script -Name
swapi -Repository PSGallery –Path ./package-swapi -Force</LI-CODE> <P>&nbsp;</P>
<DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>creates
a<SPAN>&nbsp;</SPAN><EM>package-swapi</EM><SPAN>&nbsp;</SPAN>subdirectory and
places the script in there. So your file system looks like so:</P> <DIV
class="highlight js-code-highlight"> <PRE class="highlight plaintext"><CODE>
/package-swapi swapi.ps1 </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>dot source
with:</LI> </OL> <DIV class="highlight js-code-highlight"> <PRE class="highlight
powershell"><CODE> <SPAN class="n">cd</SPAN> <SPAN
class="nx">package-swapi</SPAN> <SPAN class="o">.</SPAN> <SPAN
class="n">swapi.ps1</SPAN> </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <OL> <LI>To test it out,
try running<SPAN>&nbsp;</SPAN><CODE>Get-Planet</CODE>, you elected to download
the swapi package.</LI> </OL> <DIV class="highlight js-code-highlight"> <PRE
class="highlight powershell"><CODE> <SPAN class="n">Get-Planet</SPAN> <SPAN
class="nx">2</SPAN> </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <P>This should give a JSON
response.</P> <H2><A
href="https://dev.to/softchris/create-a-script-for-powershell-gallery-19m0#summary"
target="_blank" rel="noopener" name="summary"></A>Summary</H2>
<P>Congratulations, you've managed to create a package for PowerShell gallery,
upload it to the gallery and managed to download and use said package.</P>
<P>You've come a long way, now build your own packages, share them with the
community and let me know.</P> <P>Thanks for reading :)</img></P> </DIV>
</DIV></description>
<pubDate>Thu, 21 Oct 2021 17:53:22 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/how-you-create-a-script-package-for-powershell-gallery/ba-p/2870551</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-10-21T17:53:22Z</dc:date>
...
</item>
<item>
<title>Test your PowerShell code with Pester</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/test-your-powershell-code-with-pester/ba-p/2835759</link>
<description><BLOCKQUOTE> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Screenshot 2021-10-11 at 22.28.42.png"
style="width: 619px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316615i9632507F0A19192E/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-10-11 at 22.28.42.png" alt="Screenshot
2021-10-11 at 22.28.42.png" /></span></P> <P>TLDR; this article covers the
testing framework Pester that you use to test your PowerShell scripts.</P>
</BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#why-test"
target="_blank" rel="noopener" name="why-test"></A>Why test</H2> <P>The reason
you want to have tests are many:</P> <UL> <LI><STRONG>Correctness</STRONG>.
Ensure your code works as as intended for certain scenarios.</LI>
<LI><STRONG>Confidence</STRONG>. When you have a lot of tests covering your code
it creates a level of confidence. With this confidence you start daring to
change this, if you for example would need to refactor code and ensure it still
works after those changes.</LI> <LI><STRONG>Architecture</STRONG>. Another
reason for having tests is that it drives architecture. If you create tests
around what you do, you ensure you build your code in a way that makes it
testable. That,<SPAN>&nbsp;</SPAN><EM>drives the architecture</EM>.</LI> </UL>
<P>There are many other reasons for wanting to have tests but the three above
are quite compelling.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#what-is-pester"
target="_blank" rel="noopener" name="what-is-pester"></A>What is Pester</H2>
<P>Pester is a test framework meant for PowerShell and is a module you can
install. It has several features:</P> <UL> <LI><STRONG>Assertions</STRONG>.
Pester comes with diverse ways of asserting conditions that will determine if
your tests should fail or not.</LI> <LI><STRONG>Able to run tests</STRONG>. You
can run tests with Pester, both a single test with a single piece of input as
well as testing many different inputs at once.</LI> <LI><STRONG>Can group your
tests in test suites</STRONG>. When you start having quite a few tests, you want
a way to group those tests into larger logical groups, that's what test suites
are.</LI> <LI><STRONG>Ability to mock calls</STRONG>. In you tests you might
have calls to commands that carry out side-effects, like accessing a data store
or creating a file for example. When you want your tests to focus on the
behavior on the tests, mocking is a good idea.</LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#install"
target="_blank" rel="noopener" name="install"></A>Install</H2> <P>To install
Pester, you run the below command.</P> <P>&nbsp;</P> <LI-CODE
lang="powershell">Install-Module -Name Pester -Force</LI-CODE> <P>&nbsp;</P>
<P>Once it's installed, you can start authoring your tests.</P> <P>From install
page:</P> <BLOCKQUOTE> <P>Pester runs on Windows, Linux, MacOS and anywhere else
thanks to PowerShell. It is compatible with Windows PowerShell 3, 4, 5, 6 and
7.<BR />Pester 3 comes pre-installed with Windows 10</P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#our-first-test"
target="_blank" rel="noopener" name="our-first-test"></A>Our first test</H2>
<P>For our first test, we will learn how to write a test as well as running
it.</P> <OL> <LI>To create our first test, create a
file<SPAN>&nbsp;</SPAN><EM>A-Test.ps1</EM></LI> <LI>Add the following code:</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="powershell"> Describe "A suite" { It "my
first test" { $Value = "Value" $Value | Should -Be "Value" } }</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <P>The test above, have
a<SPAN>&nbsp;</SPAN><CODE>Describe</CODE><SPAN>&nbsp;</SPAN>construct which is
the declaration of a suite, and a string argument, giving the suite a name.
Within the suite there's a test definition<SPAN>&nbsp;</SPAN><CODE>It</CODE>,
which also has a string argument that represents the name of the test. Within
the test, there's test itself where the code is set up:</P> <P>&nbsp;</P>
<LI-CODE lang="powershell">$Value = "Value"</LI-CODE> <P>&nbsp;</P> <P>and then
it's asserted upon</P> <P>&nbsp;</P> <LI-CODE lang="powershell"> $Value | Should
-Be "Value"</LI-CODE> <P>&nbsp;</P> <P>Note the use of
the<SPAN>&nbsp;</SPAN><CODE>Should -Be</CODE>, which determines equality
between<SPAN>&nbsp;</SPAN><CODE>$Value</CODE><SPAN>&nbsp;</SPAN>and "Value".</P>
<OL> <LI>To run the test,
call<SPAN>&nbsp;</SPAN><CODE>Invoke-Pester</CODE><SPAN>&nbsp;</SPAN>(./ for the
path in Linux ans macOS and .\ for Windows):</LI> </OL> <DIV class="highlight
js-code-highlight"> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action"><LI-CODE
lang="powershell"> Invoke-Pester ./A-Test.ps1 </LI-CODE></DIV> </DIV> </DIV>
<P>The outcome of running the test is:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE> Starting discovery
in 1 files. Discovery found 1 tests in 6ms. Running tests. [+]
/&lt;path&gt;/A-Test.ps1 42ms (11ms|26ms) Tests completed in 44ms Tests Passed:
1, Failed: 0, Skipped: 0 NotRun: 0 </CODE></PRE> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action">&nbsp;</DIV> </DIV> </DIV> <H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#a-more-real-looking-test"
target="_blank" rel="noopener" name="a-more-real-looking-test"></A>A more real
looking test</H2> <P>The first test was great in that it let us understand the
mechanics of testing and concepts like a suite, a test, and an assertion
like<SPAN>&nbsp;</SPAN><CODE>Should -Be</CODE>. A more real looking test would
test code in a script file that's not in our test file. Here's the steps we will
take next:</P> <UL> <LI>Create a script file with our production code.</LI>
<LI><EM>Dot source</EM><SPAN>&nbsp;</SPAN>said script file.</LI> <LI>Create a
test and run it.</LI> </UL> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#create-production-code"
target="_blank" rel="noopener" name="create-production-code"></A>Create
production code</H3> <P>You will have code that you want to test but let's
create this script file for the sake of demonstration.</P> <OL> <LI>Create a
file<SPAN>&nbsp;</SPAN><EM>Get-Tomato.ps1</EM></LI> <LI>Add the following
code:</LI> </OL> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Function Get-Tomato() {
new-object psobject -property @{ Name = "Tomato" } }</LI-CODE></DIV> </DIV>
</DIV> <P>This code will create a custom object for each time
the<SPAN>&nbsp;</SPAN><CODE>Get-Tomato()</CODE><SPAN>&nbsp;</SPAN>function is
invoked.</P> <OL> <LI>Let's<SPAN>&nbsp;</SPAN><EM>dot
source</EM><SPAN>&nbsp;</SPAN>it next so are session knows about it:</LI> </OL>
<P>&nbsp;</P> <LI-CODE lang="powershell"> . ./Get-Tomato.ps1</LI-CODE>
<P>&nbsp;</P> <OL> <LI>Verify that your function has been picked up by
running:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell">
Get-Tomato</LI-CODE> <P>&nbsp;</P> <P>you should see the following in the
console:</P> <P>&nbsp;</P> <LI-CODE lang="bash">Name ---- Tomato</LI-CODE>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#create-the-test"
target="_blank" rel="noopener" name="create-the-test"></A>Create the test</H3>
<P>Now that we have our production code, let's author the test next.</P> <OL>
<LI>Create a
file<SPAN>&nbsp;</SPAN><EM>Get-Tomato.Tests.ps1</EM><SPAN>&nbsp;</SPAN>and give
it the following code</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell">
Describe "Tomatoes" { It "Get Tomato" { $tomato = Get-Tomato $tomato.Name |
Should -Be "Tomato" } }</LI-CODE> <P>&nbsp;</P> <OL> <LI>Run the test
with<SPAN>&nbsp;</SPAN><CODE>Invoke-Pester</CODE>:</LI> </OL> <P>&nbsp;</P>
<LI-CODE lang="powershell">Invoke-Pester ./Get-Tomato.Tests.ps1</LI-CODE>
<P>&nbsp;</P> <P>you should see the following output:</P> <DIV class="highlight
js-code-highlight"> <PRE class="highlight plaintext"><CODE> Invoke-Pester
./Get-Tomato.Tests.ps1 Starting discovery in 1 files. Discovery found 1 tests in
6ms. Running tests. [+] /&lt;path&gt;/Get-Tomato.Tests.ps1 66ms (9ms|52ms) Tests
completed in 68ms Tests Passed: 1, Failed: 0, Skipped: 0 NotRun: 0</CODE></PRE>
</DIV> <P>Great, you ran a test on a more real looking code.</P> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#working-with-side-effects"
target="_blank" rel="noopener" name="working-with-side-effects"></A>Working with
side effects</H2> <P>You will have code that you write that eventually performs
side effects, like accessing a network resource or create a file. Let's look at
such a case and how Pester handles it. The short answer is that you can use
mocks, a construct that's executed instead of the actual command. All you need
to do is to focus that the<SPAN>&nbsp;</SPAN><EM>right
behavior</EM><SPAN>&nbsp;</SPAN>happens.</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#update-production-code"
target="_blank" rel="noopener" name="update-production-code"></A>Update
production code</H3> <P>So, in this case, imagine that our production code now
will have more
function<SPAN>&nbsp;</SPAN><CODE>Save-Tomato</CODE><SPAN>&nbsp;</SPAN>that saves
an object to a file.</P> <OL> <LI>Update the <EM>Get-Tomato.ps1&nbsp;</EM>file
with this code:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell"> Function
Save-Tomato() { Param( [string] $Name ) New-Item -ItemType File -Path
./Tomato.txt -Value $Name -Force }</LI-CODE> <P>&nbsp;</P> <OL> <LI><EM>Dot
source</EM><SPAN>&nbsp;</SPAN>the code to ensure it's being picked up:</LI>
</OL> <P>&nbsp;</P> <LI-CODE lang="powershell">. /Get-Tomato.ps1</LI-CODE>
<P>&nbsp;</P> <DIV class="highlight js-code-highlight">&nbsp;</DIV> <H3><A
href="https://dev.to/azure/test-your-powershell-code-with-pester-4hlc#create-a-test"
target="_blank" rel="noopener" name="create-a-test"></A>Create a test</H3>
<P>Ok, so you have
added<SPAN>&nbsp;</SPAN><CODE>Save-Tomato()</CODE><SPAN>&nbsp;</SPAN>to your
script file. Now for a test. Your code is
calling<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE>, which creates a new file. As
part of testing, you don't want it to create a file each time the test is being
run. More likely, you just want to see the test does what it's supposed to, i.e.
calling the correct command/s. So, to solve this issue, we can mock, replace the
current implementation
of<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE><SPAN>&nbsp;</SPAN>with our own.</P>
<UL> <LI> <P><STRONG>To mock</STRONG>, we first need to replace the actual
implementation like so:</P> </LI> </UL> <P>&nbsp;</P> <LI-CODE
lang="powershell">Mock -CommandName New-Item -MockWith {}</LI-CODE>
<P>&nbsp;</P> <UL> <LI><STRONG>Call the command</STRONG>. At this point, you
need to call the command like you would usually do. In your case, it means that
you call<SPAN>&nbsp;</SPAN><CODE>Save-Tomato()</CODE>:</LI> </UL> <P>&nbsp;</P>
<LI-CODE lang="powershell">Save-Tomato # this should call New-Item</LI-CODE>
<P>&nbsp;</P> <UL> <LI><STRONG>Verify</STRONG>. The last part of the mocking
process is to verify that you mock has been called</LI> </UL> <P
class="lia-indent-padding-left-30px">The command<SPAN>&nbsp;</SPAN><CODE>Should
-Invoke</CODE>, allows you to specify what command it should have called, like
so:</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Should -Invoke -CommandName
New-Item -Times 1 -Exactly</LI-CODE> <P>&nbsp;</P> <P
class="lia-indent-padding-left-30px">The above code
verifies<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE><SPAN>&nbsp;</SPAN>is called
exactly one time.</P> <UL> <LI>Let's put it all together as a test:</LI> </UL>
<P>&nbsp;</P> <LI-CODE lang="powershell">It "Save tomato" { Mock -CommandName
New-Item -MockWith {} Save-Tomato "my tomato" Should -Invoke -CommandName
New-Item -Times 1 -Exactly }</LI-CODE> <P>&nbsp;</P> <OL>
<LI>Remove<SPAN>&nbsp;</SPAN><EM>Tomato.txt</EM><SPAN>&nbsp;</SPAN>and then run
the test
with<SPAN>&nbsp;</SPAN><CODE>Invoke-Pester</CODE><SPAN>&nbsp;</SPAN>like
so:</LI> </OL> <P>&nbsp;</P> <LI-CODE lang="powershell"> Invoke-Pester
./Get-Tomato.Tests.ps1</LI-CODE> <P>&nbsp;</P> <P>At this point your tests
should run successfully like so:</P> <DIV class="highlight js-code-highlight">
<PRE class="highlight plaintext"><CODE> Starting discovery in 1 files. Discovery
found 2 tests in 8ms. Running tests. [+]
/Users/chnoring/Documents/dev/projects/powershell-projects/articles/Get-Tomato.Tests.ps1
78ms (34ms|37ms) Tests completed in 80ms Tests Passed: 2, Failed: 0, Skipped: 0
NotRun: 0 </CODE></PRE> <DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action">&nbsp;</DIV> </DIV>
</DIV> <P>Also, note
how<SPAN>&nbsp;</SPAN><EM>Tomato.txt</EM><SPAN>&nbsp;</SPAN>isn't created,
because you are mocking the call to<SPAN>&nbsp;</SPAN><CODE>New-Item</CODE>,
success.</P> <P>Congrats, you've learned how to install test framework Pester,
on top of that, you've learned to author your first tests and even learned how
to mock the call to actual commands. To learn more, have a look at Pesters
GitHub page:</P> <BLOCKQUOTE> <UL> <LI><A
href="https://github.com/pester/Pester" target="_blank" rel="noopener">Pester GH
page</A></LI> <LI><A title="Pester VS Code extension"
href="https://marketplace.visualstudio.com/items?itemName=pspester.pester-test"
target="_self">Check out the Pester extension for VS Code</A>&nbsp;, thanks
JGrote</LI> </UL> </BLOCKQUOTE></description>
<pubDate>Tue, 12 Oct 2021 17:59:12 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/test-your-powershell-code-with-pester/ba-p/2835759</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-10-12T17:59:12Z</dc:date>
...
</item>
<item>
<title>Building a Web Report in PowerShell, use the -Force Luke</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-web-report-in-powershell-use-the-force-luke/ba-p/2824832</link>
<description><BLOCKQUOTE> <P>TLDR; The idea of this article is to show how to
build a web report. I will show the usage of several commands that you can
connect that does all the heavy lifting for you</P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#the-scenario-create-a-report-from-some-remote-data"
target="_blank" rel="noopener"
name="the-scenario-create-a-report-from-some-remote-data"></A>The scenario -
create a report from some remote data</H2> <P>Ok, here you are, you are looking
to read data from one place and present that as a web report. The data is
remote, you need to fetch it somehow, you also probably need to think about how
to convert the incoming data and lastly create that web report. If you are a
developer, you probably think that oh ok, this is probably a few moving parts,
10-20 lines of code. But you've heard of PowerShell, it's supposed to be
powerful, do a lot of heavy lifting, so why not give it a spin.</P>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#the-steps-we-will-take"
target="_blank" rel="noopener" name="the-steps-we-will-take"></A>The steps we
will take</H2> <P>To achieve our task, we need to plan it out. Carry it out
sequentially, and who knows, maybe this is something we can reuse? So what
steps:</P> <OL> <LI><STRONG>Fetch the data</STRONG>. Need to grab the data
somehow</LI> <LI><STRONG>Convert</STRONG>. Lets assume this data comes in some
type of format and we most likely need to convert it some other form.</LI>
<LI><STRONG>Present</STRONG>. So we fetched the data, massaged it into a
suitable format, now what? Now, we want to present it as a web report, HTML, CSS
etc.</LI> </OL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#getting-to-work"
target="_blank" rel="noopener" name="getting-to-work"></A>Getting to work</H2>
<P>We have a game plan. Now let's see if we can find the commands we need. A
good starting point is the<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/?view=powershell-7.1"
target="_blank" rel="noopener">Microsoft.PowerShell.Utility section</A>. In this
section, there are tons of commands that does a lot of heavy lifting for
you.</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#grabbing-the-data"
target="_blank" rel="noopener" name="grabbing-the-data"></A>Grabbing the
data</H3> <P>First things first, we need to grab some data remotely, so what's
our options?</P> <UL> <LI><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.1"
target="_blank" rel="noopener">Invoke-WebRequest</A><SPAN>&nbsp;</SPAN>this
seems to let us call a URL, send a body, credentials etc, seems promising.</LI>
<LI><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-restmethod?view=powershell-7.1"
target="_blank" rel="noopener">Invoke-RestMethod</A>. What about this one, how
is it different? This sentence right here:</LI> </UL> <BLOCKQUOTE> <P>PowerShell
formats the response based to the data type. For an RSS or ATOM feed, PowerShell
returns the Item or Entry XML nodes. For JavaScript Object Notation (JSON) or
XML, PowerShell converts, or deserializes, the content into [PSCustomObject]
objects.</P> </BLOCKQUOTE> <P>It takes a JSON response and turns that into a
PSCustomObject, nice. Well let's see with our other commands before we make a
decision.</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#presenting-the-data"
target="_blank" rel="noopener" name="presenting-the-data"></A>Presenting the
data</H3> <P>This is the last thing we need to do but we need to understand if
there's a command that helps us with report creation and most importantly, what
input it takes. I think we found it:</P> <UL> <LI><A
href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-html?view=powershell-7.1"
target="_blank" rel="noopener">ConvertTo-Html</A><SPAN>&nbsp;</SPAN>Converts
.NET objects into HTML that can be displayed in a Web browser.</LI> </UL>
<P>Yea, that reminds us of
something,<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE>. Why?
Cause<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE><SPAN>&nbsp;</SPAN>produces
custom objects, i.e .NET objects.</P> <P>How do we save the report to a file
though, so we can store that somewhere and let it be hosted by a web server? Oh,
here's an example, pipe it to<SPAN>&nbsp;</SPAN><CODE>Out-File</CODE>, like
so<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html | Out-File aliases.htm</CODE></P>
<H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#overview-of-the-solution"
target="_blank" rel="noopener" name="overview-of-the-solution"></A>Overview of
the solution</H3> <P>So we have a theory on how to do this:</P> <OL>
<LI>Call<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE>.</LI> <LI>Followed
by<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE>.</LI> <LI>Followed
by<SPAN>&nbsp;</SPAN><CODE>Out-File</CODE>.</LI> </OL> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#build-the-solution"
target="_blank" rel="noopener" name="build-the-solution"></A>Build the
solution</H3> <P>Seems almost too easy. Ah well, let's give it whirl. First
things first, lets choose a data source, SWAPI, the Star Wars API, cause use
the<SPAN>&nbsp;</SPAN><CODE>-Force</CODE>, am I right? :)</img></P> <OL>
<LI>Start<SPAN>&nbsp;</SPAN><CODE>pwsh</CODE><SPAN>&nbsp;</SPAN>in the
console.</LI> <LI>Create a file<SPAN>&nbsp;</SPAN><EM>web-report.ps1</EM></LI>
<LI>Add the following code:</LI> </OL> <DIV class="highlight js-code-highlight">
<DIV class="highlight__panel js-actions-panel"> <DIV
class="highlight__panel-action js-fullscreen-code-action"><LI-CODE
lang="powershell"> Invoke-RestMethod -URI https://swapi.dev/api/people/1/ |
ConvertTo-Html | Out-File report.htm</LI-CODE></DIV> </DIV> </DIV> <OL>
<LI>Run<SPAN>&nbsp;</SPAN><CODE>./web-report.ps1</CODE><SPAN>&nbsp;</SPAN>(or<SPAN>&nbsp;</SPAN><CODE>.\web-report.ps1</CODE><SPAN>&nbsp;</SPAN>for
Windows folks)</LI> </OL> <P>It created
a<SPAN>&nbsp;</SPAN><EM>report.htm</EM><SPAN>&nbsp;</SPAN>file for us. Ok, let's
have a look:</P> <P>&nbsp;</P> <LI-CODE lang="markup">&lt;!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html
xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;HTML
TABLE&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;table&gt;
&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;height&lt;/th&gt;&lt;th&gt;mass&lt;/th&gt;&lt;th&gt;hair_color&lt;/th&gt;&lt;th&gt;skin_color&lt;/th&gt;&lt;th&gt;eye_color&lt;/th&gt;&lt;th&gt;birth_year&lt;/th&gt;&lt;th&gt;gender&lt;/th&gt;&lt;th&gt;homeworld&lt;/th&gt;&lt;th&gt;films&lt;/th&gt;&lt;th&gt;species&lt;/th&gt;&lt;th&gt;vehicles&lt;/th&gt;&lt;th&gt;starships&lt;/th&gt;&lt;th&gt;created&lt;/th&gt;&lt;th&gt;edited&lt;/th&gt;&lt;th&gt;url&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Luke
Skywalker&lt;/td&gt;&lt;td&gt;172&lt;/td&gt;&lt;td&gt;77&lt;/td&gt;&lt;td&gt;blond&lt;/td&gt;&lt;td&gt;fair&lt;/td&gt;&lt;td&gt;blue&lt;/td&gt;&lt;td&gt;19BBY&lt;/td&gt;&lt;td&gt;male&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/planets/1/&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;09/12/2014
13:50:51&lt;/td&gt;&lt;td&gt;20/12/2014
21:17:56&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/people/1/&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/body&gt;&lt;/html&gt;</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <OL> <LI>Show this file in a
browser with<SPAN>&nbsp;</SPAN><CODE>Invoke_Item</CODE>:</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Invoke-Item
./report.htm</LI-CODE></DIV> </DIV> </DIV> <P>This should start up a browser and
you should see something like:</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_0-1633648317946.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316080iADB1C70B0BDCD1B3/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_0-1633648317946.png"
alt="Chris_Noring_0-1633648317946.png" /></span></P> <P>&nbsp;</P> <P>Ok, you
could be done here, or we can make it more flexible. We don't like hardcoded
values, right? RIGHT?</P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#making-it-flexible"
target="_blank" rel="noopener" name="making-it-flexible"></A>Making it
flexible</H3> <P>I thought so, now, let's add some parameters for, URL, and
report name.</P> <OL> <LI>Add the following code to the top part of our
script<SPAN>&nbsp;</SPAN><EM>web-report.ps1</EM>:</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Param( [String] $URL =
"https://swapi.dev/api/people/1/", [String] $Report = "report.htm"
)</LI-CODE></DIV> </DIV> </DIV> <OL> <LI>Lets invoke it again, this time with a
new URL "<A href="https://swapi.dev/api/people/2/%22:" target="_blank"
rel="noopener">https://swapi.dev/api/people/2/":</A></LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> ./web-report.ps1 -URL
https://swapi.dev/api/people/2/</LI-CODE></DIV> </DIV> </DIV> <OL> <LI>Lets
check the response in<SPAN>&nbsp;</SPAN><EM>report.htm</EM>. :</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> &lt;!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html
xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;HTML
TABLE&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;table&gt;
&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;height&lt;/th&gt;&lt;th&gt;mass&lt;/th&gt;&lt;th&gt;hair_color&lt;/th&gt;&lt;th&gt;skin_color&lt;/th&gt;&lt;th&gt;eye_color&lt;/th&gt;&lt;th&gt;birth_year&lt;/th&gt;&lt;th&gt;gender&lt;/th&gt;&lt;th&gt;homeworld&lt;/th&gt;&lt;th&gt;films&lt;/th&gt;&lt;th&gt;species&lt;/th&gt;&lt;th&gt;vehicles&lt;/th&gt;&lt;th&gt;starships&lt;/th&gt;&lt;th&gt;created&lt;/th&gt;&lt;th&gt;edited&lt;/th&gt;&lt;th&gt;url&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C-3PO&lt;/td&gt;&lt;td&gt;167&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;n/a&lt;/td&gt;&lt;td&gt;gold&lt;/td&gt;&lt;td&gt;yellow&lt;/td&gt;&lt;td&gt;112BBY&lt;/td&gt;&lt;td&gt;n/a&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/planets/1/&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;System.Object[]&lt;/td&gt;&lt;td&gt;10/12/2014
15:10:51&lt;/td&gt;&lt;td&gt;20/12/2014
21:17:50&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/people/2/&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/body&gt;&lt;/html&gt;</LI-CODE></DIV> </DIV> </DIV> <P>This
time we have<SPAN>&nbsp;</SPAN><CODE>C-3PO</CODE>, yup, definitely not Luke, it
seems to be working :)</img></P> <H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#improve-the-response"
target="_blank" rel="noopener" name="improve-the-response"></A>Improve the
response</H3> <P>So, so far we had a ton of columns coming back, maybe we just
need a few fields from the response,
like<SPAN>&nbsp;</SPAN><CODE>name</CODE>,<SPAN>&nbsp;</SPAN><CODE>planet</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>height</CODE>.
Yea let's do that, and justt pick what we need from the response:</P> <OL>
<LI>Let's
add<SPAN>&nbsp;</SPAN><CODE>Select-Object</CODE><SPAN>&nbsp;</SPAN>like so:</LI>
</OL> <DIV class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> Select-Object name, age,
planet |</LI-CODE></DIV> </DIV> </DIV> <P>with the full code looking like
so:</P> <P>&nbsp;</P> <LI-CODE lang="powershell"> Param( [String] $URL =
"https://swapi.dev/api/people/1/", [String] $Report = "report.htm" )
Invoke-RestMethod -URI $URL | ConvertTo-Html -Property name, height, homeworld |
Out-File $Report</LI-CODE> <P>&nbsp;</P> <DIV class="highlight
js-code-highlight">&nbsp;</DIV> <OL> <LI>Let's invoke it again:</LI> </OL> <DIV
class="highlight js-code-highlight"> <DIV class="highlight__panel
js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="powershell"> ./web-report.ps1 -URL
https://swapi.dev/api/people/1/</LI-CODE></DIV> </DIV> </DIV> <P>and our report
now looks like:</P> <P>&nbsp;</P> <LI-CODE lang="markup"> &lt;!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html
xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;HTML
TABLE&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;table&gt;
&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;height&lt;/th&gt;&lt;th&gt;homeworld&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Luke
Skywalker&lt;/td&gt;&lt;td&gt;172&lt;/td&gt;&lt;td&gt;https://swapi.dev/api/planets/1/&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/body&gt;&lt;/html&gt;</LI-CODE> <P>&nbsp;</P> <DIV
class="highlight js-code-highlight">&nbsp;</DIV> <P>Much better :)</img> In
fact, reading up a bit, we can just use -Property
on<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE>, so we get:</P> <P>&nbsp;</P>
<LI-CODE lang="powershell"> Invoke-RestMethod -URI $URL | ConvertTo-Html
-Property name, height, homeworld | Out-File $Report</LI-CODE> <P>&nbsp;</P>
<H3>&nbsp;</H3> <H3><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#make-it-pretty"
target="_blank" rel="noopener" name="make-it-pretty"></A>Make it pretty</H3>
<P>In all honesty, this report is bad, no colors, no nothing. Surely, we must be
able to pass a CSS file to<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE>?</P>
<P>Ah yes, looking through the docs there's the
parameter<SPAN>&nbsp;</SPAN><CODE>-CssUri</CODE><SPAN>&nbsp;</SPAN>that takes a
file path. Let's create a CSS file then.</P> <OL>
<LI>Create<SPAN>&nbsp;</SPAN><CODE>report.css</CODE><SPAN>&nbsp;</SPAN>and add
the following CSS</LI> </OL> <DIV class="highlight js-code-highlight"> <DIV
class="highlight__panel js-actions-panel"> <DIV class="highlight__panel-action
js-fullscreen-code-action"><LI-CODE lang="css"> table { border: solid 1px black;
padding: 10px; border-collapse: collapse; } tr:nth-child(even) {background:
#CCC} tr:nth-child(odd) {background: #FFF}</LI-CODE></DIV> </DIV> </DIV> <OL>
<LI>Update the script to take<SPAN>&nbsp;</SPAN><CODE>-CssUri
report.css</CODE><SPAN>&nbsp;</SPAN>on<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE></LI>
<LI>Run it again, you should see this in the browser:</LI> </OL> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_1-1633648317947.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316081i40A896330A464C00/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_1-1633648317947.png"
alt="Chris_Noring_1-1633648317947.png" /></span></P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/building-a-web-report-in-powershell-use-the-force-luke-58aj#summary"
target="_blank" rel="noopener" name="summary"></A>Summary</H2> <P>In summary, we
learned that we could use just a few
commands,<SPAN>&nbsp;</SPAN><CODE>Invoke-RestMethod</CODE>,<SPAN>&nbsp;</SPAN><CODE>ConvertTo-Html</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>Out-File</CODE><SPAN>&nbsp;</SPAN>and
boom, we've created ourselves a report.</P> <P>Full code:</P> <P>&nbsp;</P>
<LI-CODE lang="powershell">Param( [String] $URL =
"https://swapi.dev/api/people/1/", [String] $Report = "report.htm" )
Invoke-RestMethod -URI $URL | ConvertTo-Html -CssUri report.css -Title "Web
report" -Property name, height, homeworld | Out-File $Report</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Thu, 07 Oct 2021 23:21:24 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-web-report-in-powershell-use-the-force-luke/ba-p/2824832</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-10-07T23:21:24Z</dc:date>
...
</item>
<item>
<title>new module : Testing in C# using Visual Studio</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-testing-in-c-using-visual-studio/ba-p/2815085</link>
<description><P>Testing is an important part of shipping and maintaining an
application.&nbsp;</P> <P>&nbsp;</P> <P>To really make writing and running tests
a part of your everyday workflow, it needs to be easy to author and run tests.
Not only that, but it also needs to be fast. One of the great features of Visual
Studio is its ability to support different test frameworks but also the tooling
around authoring and running tests.</P> <P>&nbsp;</P> <P>In this module, you'll
do the following:</P> <P>&nbsp;</P> <UL> <LI><STRONG>Write a test</STRONG>:
Learn the basic parts of writing a test and use test projects that reference
your product code.</LI> <LI><STRONG>Use Visual Studio to run and debug your
tests</STRONG>: See the output of your tests and interact with a whole suite of
tests.</LI> <LI><STRONG>Sharpen your test-writing skills</STRONG>: Use Fluent
Assertions, data-driven tests, and mocking to expand your testing skills.</LI>
</UL> <P>Link to module:&nbsp;<A title="C# testing in visual studio"
href="https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-tools/1-introduction"
target="_self">https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-tools/1-introduction</A>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="vs-testing.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/315411i9F9ECBC3DFF58971/image-size/large?v=v2&amp;px=999"
role="button" title="vs-testing.png" alt="vs-testing.png"
/></span></P></description>
<pubDate>Tue, 05 Oct 2021 22:09:30 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-testing-in-c-using-visual-studio/ba-p/2815085</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-10-05T22:09:30Z</dc:date>
...
</item>
<item>
<title>Working With Azure AD B2C Custom Policies</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/working-with-azure-ad-b2c-custom-policies/ba-p/2804056</link>
<description><P>In this post, we will learn one of the two sign-in options
provided by an Azure AD B2C tenant, and this is the custom policies (the other
one is the user flows). With Custom Policies, we can build customized
authentication flows based on our needs.</P> <P>&nbsp;</P> <H1>Getting
Started</H1> <P>Before getting started make sure we have :</P> <UL> <LI>An Azure
AD B2C tenant</LI> <LI>A registered web application</LI> <LI>The necessary
policy keys and register the Identity Experience Framework Apps</LI>
<LI>Download the <A
href="https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/archive/refs/heads/master.zip"
target="_blank" rel="noopener">Azure AD B2C policy starter pack</A> from GitHub,
make the configurations and upload it to the tenant.</LI> </UL> <P>&nbsp;</P>
<H1>Add signing/encryption keys</H1> <P>Sign in to the Azure Portal, search for
the Azure AD B2C tenant, and click Open B2C Tenant.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="01.PNG" style="width: 222px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314401iBC7E2B763DBBA9DD/image-size/medium?v=v2&amp;px=400"
role="button" title="01.PNG" alt="01.PNG" /></span></P> <P>From the overview
page, under the Policies section, select&nbsp;<STRONG>Identity Experience
Framework</STRONG>.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="02.png" style="width: 292px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314402iCEE9B1E2D741A248/image-size/medium?v=v2&amp;px=400"
role="button" title="02.png" alt="02.png" /></span></P> <H2>Create the signing
key</H2> <P>&nbsp;</P> <P>Select Manage -&nbsp;<STRONG>Policy Keys</STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="03.png" style="width: 275px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314403i825C04E1C1000998/image-size/medium?v=v2&amp;px=400"
role="button" title="03.png" alt="03.png" /></span></P> <P>&nbsp;</P> <P>select
<STRONG>Add</STRONG></P> <P>&nbsp;</P> <P><STRONG><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="04.png" style="width: 352px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314405i940D36D1DE9394BF/image-size/medium?v=v2&amp;px=400"
role="button" title="04.png" alt="04.png" /></span></STRONG></P> <P>&nbsp;</P>
<UL> <LI>From the&nbsp;<STRONG>Options </STRONG>section, select from the
drop-down menu <STRONG>Generate</STRONG>.</LI> <LI>In the filed
<STRONG>Name</STRONG>, type <STRONG>TokenSigningKeyContainer</STRONG>.</LI>
<LI>In the <STRONG>Key type</STRONG>, choose <STRONG>RSA</STRONG>.</LI> <LI>In
the <STRONG>Key usage</STRONG>, select&nbsp;<STRONG>Signature</STRONG>.</LI>
</UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="05.png" style="width: 310px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314406iD217A2F4AA8F8C91/image-size/medium?v=v2&amp;px=400"
role="button" title="05.png" alt="05.png" /></span></P> <P>&nbsp;</P>
<P>Select&nbsp;<STRONG>Create</STRONG>.</P> <H2>Create the encryption key</H2>
<UL> <LI>Select&nbsp;<STRONG>Policy Keys</STRONG>&nbsp;and then
select&nbsp;<STRONG>Add</STRONG>.</LI> <LI>From
the&nbsp;<STRONG>Options&nbsp;</STRONG>section, select from the drop-down menu
<STRONG>Generate</STRONG>.</LI> <LI>In the filed <STRONG>Name</STRONG>, type
<STRONG>TokenEncryptionKeyContainer</STRONG>.</LI> <LI>In the <STRONG>Key
type</STRONG>, choose <STRONG>RSA</STRONG>.</LI> <LI>In the <STRONG>Key
usage</STRONG>, select <STRONG>Encryption</STRONG>.</LI> </UL> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="06.png" style="width: 326px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314407iBC11DE4E2D2508D6/image-size/medium?v=v2&amp;px=400"
role="button" title="06.png" alt="06.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>Select&nbsp;<STRONG>Create</STRONG>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="07.png" style="width: 125px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316378i70D85B1D33B2AA62/image-size/medium?v=v2&amp;px=400"
role="button" title="07.png" alt="07.png" /></span>&nbsp;</P> <H1>Register the
IdentityExperienceFramework application</H1> <P>At the next step, we have to
register the <STRONG>IdentityExperienceFramework</STRONG> application. <SPAN
data-preserver-spaces="true">From the left-hand side, blade
select&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">Manage</SPAN></STRONG><SPAN
data-preserver-spaces="true">&nbsp;-&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">App registration</SPAN></STRONG><SPAN
data-preserver-spaces="true">s and then select&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">+ New registration</SPAN></STRONG><SPAN
data-preserver-spaces="true">.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="08.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314408i5B2526FAE872CE1B/image-size/medium?v=v2&amp;px=400"
role="button" title="08.png" alt="08.png" /></span></P> <P>&nbsp;</P> <P>In the
field name, type <STRONG>IdentityExperienceFramework</STRONG>.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="09.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314409i7C463CB90C0D543A/image-size/medium?v=v2&amp;px=400"
role="button" title="09.png" alt="09.png" /></span></P> <P>Under
<STRONG>Supported account types</STRONG>, select <STRONG>Accounts in this
organizational directory only</STRONG> (tenant name B2C only - Single
tenant).</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="10.png" style="width: 619px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314413iC097F4AFD6CB21E8/image-size/large?v=v2&amp;px=999"
role="button" title="10.png" alt="10.png" /></span></P> <P>&nbsp;</P> <P>Under
the&nbsp;<STRONG>Redirect URI </STRONG>section, select <STRONG>Web</STRONG>, and
then type <STRONG><EM><A
href="https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com"
target="_blank"
rel="noopener">https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com</A>.</EM></STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="11.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314414i70F400742BDE640D/image-size/large?v=v2&amp;px=999"
role="button" title="11.png" alt="11.png" /></span></P> <P>&nbsp;</P> <P>Under
the&nbsp;<STRONG>Permissions</STRONG> section, select the <STRONG>Grant admin
consent to openid and offline_access permissions</STRONG>&nbsp;check box.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="12.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314416iFA002D1A0EE3AA70/image-size/large?v=v2&amp;px=999"
role="button" title="12.png" alt="12.png" /></span></P> <P>&nbsp;</P> <P>And
click <STRONG>Register</STRONG>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="13.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314415i74447F40402E9C01/image-size/medium?v=v2&amp;px=400"
role="button" title="13.png" alt="13.png" /></span></P> <H1>Expose the API by
adding a scope</H1> <P>In the left-hand&nbsp; side blade, under the
<STRONG>Manage </STRONG>section, select&nbsp;<STRONG>Expose an API,</STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="14.png" style="width: 167px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314418i1459D043F1761002/image-size/medium?v=v2&amp;px=400"
role="button" title="14.png" alt="14.png" /></span></P> <P>&nbsp;</P> <P>and
then select&nbsp;<STRONG> +</STRONG> <STRONG>Add a scope</STRONG>,</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="15.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314419iA25DF94C6D865D6B/image-size/medium?v=v2&amp;px=400"
role="button" title="15.png" alt="15.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-preserver-spaces="true">finally, select&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">Save and continue</SPAN></STRONG></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="16.png" style="width: 363px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314420i760E2DF9EF9DC87B/image-size/medium?v=v2&amp;px=400"
role="button" title="16.png" alt="16.png" /></span></P> <P>&nbsp;</P> <P>Now, we
have to type the values as shown in the image below to create a scope that
allows custom policy execution in the Azure AD B2C tenant:</P> <P>&nbsp;</P>
<UL> <LI><STRONG>Scope name:</STRONG>&nbsp;user_impersonation</LI>
<LI><STRONG>Admin consent display name:</STRONG>&nbsp;Access
IdentityExperienceFramework</LI> <LI><STRONG>Admin consent
description:</STRONG>&nbsp;Allow the application to access
IdentityExperienceFramework on behalf of the signed-in user.</LI> </UL>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="17.png" style="width: 500px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314421iE1504C66C6243DE5/image-size/large?v=v2&amp;px=999"
role="button" title="17.png" alt="17.png" /></span></P> <P>&nbsp;</P> <P>Click
<STRONG>Add scope</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="18.png" style="width: 302px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314422iF5A37A85D1E473EF/image-size/medium?v=v2&amp;px=400"
role="button" title="18.png" alt="18.png" /></span></P> <H1>Register the
ProxyIdentityExperienceFramework application</H1> <P><SPAN
data-preserver-spaces="true">Go to <STRONG>Manage</STRONG> - <STRONG>App
registrations</STRONG>, and then click&nbsp;</SPAN><STRONG><SPAN
data-preserver-spaces="true">+ New registration</SPAN></STRONG><SPAN
data-preserver-spaces="true">.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="19.png" style="width: 389px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314425iA9E5D0AD1FFD6201/image-size/medium?v=v2&amp;px=400"
role="button" title="19.png" alt="19.png" /></span></P> <P>&nbsp;</P> <P>In the
Name field, type <STRONG>ProxyIdentityExperienceFramework</STRONG>.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="20.png" style="width: 410px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314426i068D45165D4FE912/image-size/large?v=v2&amp;px=999"
role="button" title="20.png" alt="20.png" /></span></P> <P>&nbsp;</P> <P>Under
<STRONG>Supported account types</STRONG>, select<STRONG> Accounts in this
organizational directory only</STRONG>, radio button.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="21.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314427i2A897D9236A16932/image-size/large?v=v2&amp;px=999"
role="button" title="21.png" alt="21.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Redirect URI </STRONG>section, use the drop-down to select
<STRONG>Public client/native (mobile &amp; desktop), </STRONG>and for
<STRONG>Redirect URI</STRONG>, type&nbsp;<STRONG>myapp://auth</STRONG>.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="22.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314429iFD51A0DD589BDAD1/image-size/large?v=v2&amp;px=999"
role="button" title="22.png" alt="22.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Permissions </STRONG>section, select the <STRONG>Grant admin consent
to openid and offline_access permissions</STRONG>&nbsp;check box.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="23.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314430i467F9E434F2DEC76/image-size/large?v=v2&amp;px=999"
role="button" title="23.png" alt="23.png" /></span></P> <P>&nbsp;</P> <P>And
click the <STRONG>Register </STRONG>button.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="24.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314432i2E88BE01F78BE5E5/image-size/medium?v=v2&amp;px=400"
role="button" title="24.png" alt="24.png" /></span></P> <H1>Specify that the
application should be treated as a public client</H1> <P>In the left-hand side
menu, select <STRONG>Manage</STRONG> - <STRONG>Authentication</STRONG></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="25.png" style="width: 236px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314433i5EE2FFFEEB925104/image-size/medium?v=v2&amp;px=400"
role="button" title="25.png" alt="25.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Advanced settings </STRONG>section, in the&nbsp;<STRONG>Allow public
client flows</STRONG>, set the <STRONG>Enable the following mobile and desktop
flows</STRONG>&nbsp;to&nbsp;<STRONG>Yes</STRONG>.</P> <P>&nbsp;</P> <TABLE
style="border-collapse: collapse; width: 100%;"> <TBODY> <TR> <TD style="width:
100%;"><STRONG>Info:</STRONG> Make user that
"<STRONG>allowPublicClient</STRONG>": true&nbsp;is set in the application
manifest.</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="26.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314434i6A3DF44E95201FCA/image-size/large?v=v2&amp;px=999"
role="button" title="26.png" alt="26.png" /></span></P> <P>&nbsp;</P> <P>And
select <STRONG>Save</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="27.png" style="width: 415px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314435i225DC35B21B9D907/image-size/large?v=v2&amp;px=999"
role="button" title="27.png" alt="27.png" /></span></P> <P>&nbsp;</P> <P>Now,
grant permissions to the API scope we exposed earlier in
the&nbsp;IdentityExperienceFramework&nbsp;registration: In the left menu, select
<STRONG>Manage</STRONG> - <STRONG>API permissions</STRONG>.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="28.png" style="width: 171px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314436i4E64724C9C85D283/image-size/medium?v=v2&amp;px=400"
role="button" title="28.png" alt="28.png" /></span></P> <P>&nbsp;</P>
<P>Under&nbsp;<STRONG>Configured permissions</STRONG>, select&nbsp;<STRONG>Add a
permission</STRONG>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="29.png" style="width: 485px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314437iD8AC3928D4AE3118/image-size/large?v=v2&amp;px=999"
role="button" title="29.png" alt="29.png" /></span></P> <P>&nbsp;</P> <P>Under
the Request API permissions section, click on the <STRONG>My APIs</STRONG> tab,
and select the
<STRONG>IdentityExperienceFramework</STRONG>&nbsp;application.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="30.png" style="width: 564px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314438i6D7224616945B417/image-size/large?v=v2&amp;px=999"
role="button" title="30.png" alt="30.png" /></span></P> <P>&nbsp;</P> <P>Under
the <STRONG>Select Permissions</STRONG> section, select
the&nbsp;<STRONG>user_impersonation</STRONG> scope.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="31.png" style="width: 517px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314439iA7EB0520FAC16008/image-size/large?v=v2&amp;px=999"
role="button" title="31.png" alt="31.png" /></span></P> <P>&nbsp;</P> <P>And
select the <STRONG>Add permissions </STRONG>button</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="32.png" style="width: 291px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314440i2DECD59BD105DEEB/image-size/medium?v=v2&amp;px=400"
role="button" title="32.png" alt="32.png" /></span></P> <P>&nbsp;</P> <P>Now,
select <STRONG>Grant admin consent</STRONG> for (tenant name).</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="33.png" style="width: 597px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314441i19E29CCF6707A38C/image-size/large?v=v2&amp;px=999"
role="button" title="33.png" alt="33.png" /></span>&nbsp;</P> <H1>Working with
the custom policy starter pack</H1> <P>&nbsp;</P> <P>After unzipping the custom
policy starter pack, zip file, we will see the folders as the image below.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="00_1.PNG" style="width: 235px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/316377iAE5499684C84A001/image-size/medium?v=v2&amp;px=400"
role="button" title="00_1.PNG" alt="00_1.PNG" /></span></P> <P>&nbsp;</P> <TABLE
style="border-collapse: collapse; width: 80.2826%; height: 115px;"
width="80.2826%"> <TBODY> <TR style="height: 23px;"> <TD width="22.4421%"
style="width: 22.4421%; height: 23px;"><STRONG>Folder Name</STRONG></TD> <TD
width="57.8417%" style="width: 57.8417%; height:
23px;"><STRONG>Description</STRONG></TD> </TR> <TR style="height: 23px;"> <TD
width="22.4421%" style="width: 22.4421%; height: 23px;">LocalAccounts</TD> <TD
width="57.8417%" style="width: 57.8417%; height: 23px;">&nbsp;Includes custom
policies XML files for local accounts</TD> </TR> <TR style="height: 23px;"> <TD
width="22.4421%" style="width: 22.4421%; height: 23px;">SocialAccounts</TD> <TD
width="57.8417%" style="width: 57.8417%; height: 23px;">Includes custom policies
XML files for social accounts</TD> </TR> <TR style="height: 23px;"> <TD
width="22.4421%" style="width: 22.4421%; height:
23px;">SocialAndLocalAccounts</TD> <TD width="57.8417%" style="width: 57.8417%;
height: 23px;">Includes custom policies XML files for both local and social
accounts</TD> </TR> <TR style="height: 23px;"> <TD width="22.4421%"
style="width: 22.4421%; height: 23px;">SocialAndLocalAccountsWithMfa</TD> <TD
width="57.8417%" style="width: 57.8417%; height: 23px;">Includes custom policies
XML files for both local and social accounts with multi-factor authentication
(Mfa)</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <H1>Configure the Custom
Policies</H1> <P>Before we upload the custom policy XML files we must make some
changes to the <STRONG><EM>TrustFrameworkExtensions.xml.</EM></STRONG></P>
<P>&nbsp;</P> <TABLE style="height: 87px; width: 82.5259%; border-collapse:
collapse; border-style: solid;"> <TBODY> <TR style="height: 24px;"> <TD
style="width: 27.0469%; height: 24px;">ProxyIdentityExperienceFramework</TD> <TD
style="width: 29.269%; height: 24px;">&lt;Item&nbsp;Key="client_id"&gt;</TD> <TD
style="width: 34.1997%; height: 24px;"> <DIV
class="fxc-essentials-label-container
fxc-essentials-label-container-left"><LABEL id="_essentials_161"
class="fxc-essentials-label fxs-portal-subtext" title="Application (client)
ID">Application (client) ID</LABEL></DIV> </TD> <TD style="width:
28.6073%;">&nbsp;IdentityExperienceFrameworkAppId</TD> </TR> <TR style="height:
24px;"> <TD style="width: 27.0469%; height:
24px;">IdentityExperienceFramework</TD> <TD style="width: 29.269%; height:
24px;">&lt;Item&nbsp;Key="IdTokenAudience"&gt;</TD> <TD style="width: 34.1997%;
height: 24px;"><LABEL id="_essentials_161" class="fxc-essentials-label
fxs-portal-subtext" title="Application (client) ID">Application (client)
ID</LABEL></TD> <TD style="width: 28.6073%;">IdentityExperienceFramework</TD>
</TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Find, open the
<STRONG>LocalAccounts</STRONG>/<STRONG>TrustFrameworkExtensions.xml,</STRONG>&nbsp;search
for the <STRONG>&lt;TechnicalProfile Id="login-NonInteractive"&gt;</STRONG>
element and replace the values as the examples below, and save the files.</P>
<P>&nbsp;</P> <TABLE style="height: 255px; width: 85.0635%; border-collapse:
collapse; border-style: solid;" width="85.06350000000002%"> <TBODY> <TR> <TD
width="100%" style="width: 100%;"> <P><STRONG>&lt;DisplayName&gt;Local Account
SignIn&lt;/DisplayName&gt;</STRONG></P> <P>&lt;TechnicalProfiles&gt;
<STRONG>&lt;TechnicalProfile Id="login-NonInteractive"&gt;</STRONG></P>
<P>&lt;Metadata&gt;</P> <P><STRONG>&lt;Item
Key="client_id"&gt;ProxyIdentityExperienceFrameworkAppId&lt;/Item&gt;</STRONG></P>
<P><STRONG>&lt;Item
Key="IdTokenAudience"&gt;IdentityExperienceFrameworkAppId&lt;/Item&gt;</STRONG></P>
<P>&lt;/Metadata&gt;</P> <P>&lt;InputClaims&gt;</P> <P><STRONG>&lt;InputClaim
ClaimTypeReferenceId="client_id"
DefaultValue="ProxyIdentityExperienceFrameworkAppId" /&gt;</STRONG></P>
<P><STRONG>&lt;InputClaim ClaimTypeReferenceId="resource_id"
PartnerClaimType="resource" DefaultValue="IdentityExperienceFrameworkAppId"
/&gt;</STRONG></P> <P>&lt;/InputClaims&gt;</P> </TD> </TR> </TBODY> </TABLE>
<P>&nbsp;</P> <TABLE style="height: 340px; width: 84.6896%; border-collapse:
collapse; border-style: solid;"> <TBODY> <TR> <TD style="width: 100%;">
<DIV>&nbsp; &nbsp;
&nbsp;<STRONG>&lt;DisplayName&gt;Local&nbsp;Account&nbsp;SignIn&lt;/DisplayName&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;TechnicalProfiles&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&lt;TechnicalProfile&nbsp;Id="login-NonInteractive"&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Metadata&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&lt;Item
Key="client_id"&gt;########-####-####-####-############&lt;/Item&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&nbsp;&lt;Item
Key="IdTokenAudience"&gt;########-####-####-####-############&lt;/Item&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Metadata&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;InputClaims&gt;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&lt;InputClaim
ClaimTypeReferenceId="client_id"
DefaultValue="########-####-####-####-############" /&gt;</STRONG></DIV>
<DIV><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;InputClaim
ClaimTypeReferenceId="resource_id" PartnerClaimType="resource"
DefaultValue="########-####-####-####-############" /&gt;</STRONG></DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/InputClaims&gt;</DIV>
</TD> </TR> </TBODY> </TABLE> <H1>Upload the Policies</H1> <P>The last step is
to upload the custom policies to the Azure B2C tenant. Under the Policies
section, select the Identity Experience Framework menu item in the B2C tenant in
the Azure portal.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="34.png" style="width: 298px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314442i1E730BDF1960B7D3/image-size/large?v=v2&amp;px=999"
role="button" title="34.png" alt="34.png" /></span></P> <P>&nbsp;</P> <P>Select
<STRONG>Upload custom policy</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="35.png" style="width: 692px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/314443iBECA0839C5331F00/image-size/large?v=v2&amp;px=999"
role="button" title="35.png" alt="35.png" /></span></P> <P>&nbsp;</P> <P>Upload
the policy files, in the following order:</P> <P>&nbsp;</P> <OL>
<LI>TrustFrameworkBase.xml</LI> <LI>TrustFrameworkExtensions.xml</LI>
<LI>SignUpOrSignin.xml</LI> <LI>ProfileEdit.xml</LI> <LI>PasswordReset.xml</LI>
</OL> <P>Every policy file we upload will add the <STRONG>B2C_1A_
prefix</STRONG>.</P> <H1>Useful links</H1> <UL> <LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/overview"
target="_blank" rel="noopener">What is Azure Active Directory B2C?</A></LI>
<LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant"
target="_blank" rel="noopener">Create an Azure Active Directory B2C
tenant</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-register-applications?tabs=app-reg-ga"
target="_blank" rel="noopener">Register a web application in Azure Active
Directory B2C</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy"
target="_blank" rel="noopener">Create custom policies in Azure Active Directory
B2C</A></LI> </UL> <P>&nbsp;</P></description>
<pubDate>Sun, 10 Oct 2021 09:45:08 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/working-with-azure-ad-b2c-custom-policies/ba-p/2804056</guid>
<dc:creator>George Grammatikos</dc:creator>
<dc:date>2021-10-10T09:45:08Z</dc:date>
...
</item>
<item>
<title>NEW data science curriculum on GitHub was just released, 20 free
lessons</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-data-science-curriculum-on-github-was-just-released-20-free/ba-p/2797143</link>
<description><P>The curriculum can be found at:</P> <UL> <LI><A
href="https://aka.ms/datascience-beginners"
target="_self">aka.ms/datascience-beginners</A></LI> </UL> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="MicrosoftTeams-image (4).png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/313795iE2E04DF57A7745EE/image-size/large?v=v2&amp;px=999"
role="button" title="MicrosoftTeams-image (4).png" alt="MicrosoftTeams-image
(4).png" /></span></P> <P>&nbsp;</P> <P><SPAN>Azure Cloud Advocates at Microsoft
are pleased to offer a 10-week, 20-lesson curriculum all about Data Science.
Each lesson includes pre-lesson and post-lesson quizzes, written instructions to
complete the lesson, a solution, and an assignment. Our project-based pedagogy
allows you to learn while building, a proven way for new skills to
'stick'.</SPAN></P> <P>&nbsp;</P> <H2>Each lesson includes:</H2> <UL>
<LI>Optional sketchnote</LI> <LI>Optional supplemental video</LI> <LI>Pre-lesson
warmup quiz</LI> <LI>Written lesson</LI> <LI>For project-based lessons,
step-by-step guides on how to build the project</LI> <LI>Knowledge checks</LI>
<LI>A challenge</LI> <LI>Supplemental reading</LI> <LI>Assignment</LI>
<LI>Post-lesson quiz</LI> </UL> <P>&nbsp;</P> <P>&nbsp;</P> <P>This curriculum
is in a series that shows beginners different technical industries:</P> <UL>
<LI><SPAN><A href="https://github.com/microsoft/Data-Science-For-Beginners"
target="_self">Data Science for Beginners</A> - Check out all the content for
this curriculum!</SPAN></LI> <LI> <DIV><A href="https://aka.ms/webdev-beginners"
target="_self" rel="noopener
noreferrer"><SPAN>Web&nbsp;Dev&nbsp;for&nbsp;Beginners</SPAN></A></DIV> </LI>
<LI> <DIV><A href="https://aka.ms/iot-beginners" target="_self" rel="noopener
noreferrer"><SPAN>IoT&nbsp;for&nbsp;Beginners</SPAN></A></DIV> </LI> <LI>
<DIV><A href="https://github.com/microsoft/ML-For-Beginners" target="_self"
rel="noopener
noreferrer"><SPAN>Machine&nbsp;Learning&nbsp;for&nbsp;Beginners</SPAN></A></DIV>
</LI> </UL> <P>&nbsp;&nbsp;</P> <P>You can find a related blog post at <A
href="https://techcommunity.microsoft.com/t5/educator-developer-blog/introducing-data-science-for-beginners/ba-p/2796770"
target="_self">announcing a new curriculum</A></P></description>
<pubDate>Mon, 04 Oct 2021 18:27:57 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-data-science-curriculum-on-github-was-just-released-20-free/ba-p/2797143</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-10-04T18:27:57Z</dc:date>
...
</item>
<item>
<title>From Tunisian classroom full of boys to architect for Canadian
government: A journey of perseverance</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/from-tunisian-classroom-full-of-boys-to-architect-for-canadian/ba-p/2783379</link>
<description><P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="MonishGangwani_0-1632512735534.png"
style="width: 623px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312753iA814E8A16840BEE7/image-dimensions/623x441?v=v2"
width="623" height="441" role="button"
title="MonishGangwani_0-1632512735534.png"
alt="MonishGangwani_0-1632512735534.png" /></span></P> <P><FONT
size="5"><STRONG>HAMIDA REBAI TRABELSI </STRONG>is a passionate learner who
juggles multiple roles with ease: a senior technology professional at one of
Canada’s government agencies, a Microsoft MVP, a mother. Hamida’s journey to
Software and Cloud Architect at Revenu in Quebec has been one of determination;
as one of the only two girls in a classroom of 28 boys in Tunisia, North Africa,
she used the computer lab at school to teach herself PASCAL programming. Today
she is the only woman on Revenu’s Cloud Migration team, architecting the
agency’s migration strategy to digitize all their data by March 2023. An expert
on the use of Kubernetes for data digitization, Hamida freely shares her
knowledge through blogs, technical articles, and conferences. Hamida shares
about her experience with Kubernetes and what she’s working on now in this
discussion.</FONT></P> <P>&nbsp;</P> <P><STRONG>Tell us about your job at
Revenu. What are you currently working on?</STRONG></P> <P>Renevu is a
government agency that encourages social and economic development in Québec. We
help individuals and businesses understand and fulfill their tax obligations.
Specifically, we administer tax legislation and the social programs entrusted to
us by the government; we collect debts and run checks to ensure that tax laws
are applied fairly; we collect support and pay it to the rightful
recipients.</P> <P>&nbsp;</P> <P>As you can imagine, our work generates huge
volumes of unstructured data. The ability to mine data in a manner that scales
and is accurate is super critical to help us do our job thoroughly and serve the
taxpayers and our various constituents. I am currently architecting and
implementing our cloud migration strategy, which is a multi-year project to
digitize our data across multiple clouds. Doing so will help us have a common
structure for data, which in turn will yield greater accuracy and help the
agency work with greater speed. We will also have the capability to apply AI
models in the future. For applications that we are not able to migrate, we are
working on plans to rearchitect them using containers and microservices.</P>
<P>&nbsp;</P> <P><STRONG>Tell us more about the use of containers and their
impact on your migration project.</STRONG></P> <P>In order to simplify the
deployment and management of applications based on microservices, we used
containers with Kubernetes orchestrators. To ensure the continuous integration
and continuous delivery and secure DevOps implementation with Kubernetes using
Azure DevOps, AKS is also a reliable solution for bringing DevOps and Kubernetes
together to improve the speed and security of the development process.</P>
<P>&nbsp;</P> <P>In order to ensure our huge volume of applications function
without any problems, we use Constant Monitoring in AKS and in Azure to
accelerate the feedback loop. Azure Pipelines help us deliver faster while
staying compliant with critical policies specified by Azure.</P> <P>During peaks
AKS and Azure Container Instances offer several functionalities to help us scale
and manage costs based on our consumption.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_0-1632521137661.png" style="width: 653px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312793i3BE77152C07F29E5/image-dimensions/653x302?v=v2"
width="653" height="302" role="button"
title="Monish_Gangwani_0-1632521137661.png"
alt="Monish_Gangwani_0-1632521137661.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>Who has been the single biggest influence on your life
and career?</STRONG></P> <P>My father. <EM>As one of the only two girls in a
classroom with 28 boys back in Tunisia, I was determined to pursue my passion
for software programming</EM> and having my father’s support was immensely
valuable. He always encouraged to keep learning and growing; at a time when
progressive parents expect their kids to become doctors, he acknowledged my
aptitude for and supported me in pursuing software as a career. I learned the
importance of being responsible for my choices and not to take the opportunities
I have been presented with for granted.</P> <P>&nbsp;</P> <P><STRONG>Clearly
your father ignited the spark for learning in you. How has that become a
full-fledged passion and how do you stay up-to-date yourself?</STRONG></P>
<P>Well, for me learning is my way of having fun. Whether we are on vacation or
it’s a regular workday, I create time within my day to learn something new.
Learning has become my hobby, my favorite pastime. And when you’re having fun
and it adds value to your entire life, it becomes something you believe in
strongly and that has translated into a passion for me.</P> <P>&nbsp;</P> <P>My
dream would be to create a consolidated web-based learning platform where I can
share articles, blogs, podcasts with others and they can do the same.</P>
<P>&nbsp;</P> <P>As far as staying updated myself, I am committed to training
others which propels me to keep up with the latest tech. Also, as an MVP, I get
access to a ton of latest information from Microsoft, which keeps me current.
There is also a vast amount of free training available. In fact, I just
delivered a training on ‘Essentials of Azure Kubernetes Services’ that is <A
href="https://www.linkedin.com/learning/l-essentiel-d-azure-kubernetes-service-aks/bienvenue-dans-l-essentiel-d-azure-kubernetes-service-aks/?ocid=AID3041046"
target="_blank" rel="noopener">available on LinkedIn Learning</A>&nbsp;and I am
delivering a talk on ‘Deploying an application on AKS’ at <A
href="https://azuresummit.live/speaker/rebai-hamida/?ocid=AID3041046"
target="_blank" rel="noopener">the Cloud Summit</A>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Monish_Gangwani_1-1632521174118.png" style="width: 424px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312794iBCC7E91BA460EEB9/image-dimensions/424x322?v=v2"
width="424" height="322" role="button"
title="Monish_Gangwani_1-1632521174118.png"
alt="Monish_Gangwani_1-1632521174118.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>Your advice to developers?</STRONG></P> <P>Data is the
most important asset today and learning about Kubernetes will make possible data
interactions that were previously unthinkable.&nbsp;<SPAN style="font-family:
inherit;">So definitely learn more about Kubernetes. Beyond that, I encourage
all developers to commit themselves to lifelong learning.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><FONT size="2"><EM>Follow Hamida on <A
href="https://twitter.com/RebaiHamida" target="_blank"
rel="noopener">Twitter</A>, <A
href="https://www.linkedin.com/in/hamida-rebai-trabelsi-09b8525/"
target="_blank" rel="noopener">LinkedIn</A>, and <A
href="https://didourebai.medium.com/" target="_blank" rel="noopener">Medium</A>.
Hamida's Essentials of AKS Training (in French) on&nbsp;<A
href="https://www.linkedin.com/learning/l-essentiel-d-azure-kubernetes-service-aks/bienvenue-dans-l-essentiel-d-azure-kubernetes-service-aks/?ocid=AID3041046"
target="_blank" rel="noopener">LinkedIn Learning</A>.</EM></FONT></STRONG></P>
<P><FONT size="2"><EM><STRONG>Continue learning about Kubernetes on Azure: visit
the <A href="https://github.com/microsoft/monthlyresources/?ocid=AID3041046"
target="_blank" rel="noopener">Microsoft Dev Repo on
GitHub</A>.</STRONG></EM></FONT></P></description>
<pubDate>Tue, 12 Oct 2021 21:11:25 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/from-tunisian-classroom-full-of-boys-to-architect-for-canadian/ba-p/2783379</guid>
<dc:creator>Monish_Gangwani</dc:creator>
<dc:date>2021-10-12T21:11:25Z</dc:date>
...
</item>
<item>
<title>Journey Towards Cloud Architecture</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/journey-towards-cloud-architecture/ba-p/2780579</link>
<description><P class="wk wl uu wm b wn wo wp wq wr ws wt wu wv ww wx wy wz xa
xb oh xc pk by" data-selectable-paragraph="">In this
article,<SPAN>&nbsp;</SPAN><A class="ay ow" href="https://github.com/i-am-dan"
target="_blank" rel="noopener ugc
nofollow">@i-am-dan<SPAN>&nbsp;</SPAN></A>and<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://github.com/pjirsa" target="_blank" rel="noopener ugc
nofollow">@pjirsa</A><SPAN>&nbsp;</SPAN>(Microsoft’s Cloud Solutions Architects)
highlight the benefits of a modern event-based cloud architecture while
migrating a legacy WebAPI to Azure.</P> <H2 class="xd xe uu bv fs xf xg xh xi xj
xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">&nbsp;</H2> <H2 id="be56" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph=""><STRONG class="be">Our Story</STRONG></H2> <P
class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb
xc pk by" data-selectable-paragraph="">Our legacy API (Hackathon registration
service)</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="DanielKim_0-1632419899038.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312460i82A1FB0AF56629E0/image-size/medium?v=v2&amp;px=400"
role="button" title="DanielKim_0-1632419899038.png"
alt="DanielKim_0-1632419899038.png" /></span></P> <P class="wk wl uu wm b wn yu
wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">(Figure 1)</P> <P class="wk wl uu wm b wn yu wo wp
wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Figure 1 represents the architecture of our
original Hackathon Registration service.</P> <P class="wk wl uu wm b wn yu wo wp
wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">It includes the following components:</P> <UL
class=""> <LI id="a75b" class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv
ww yx wx wy wz yy xa xb xc yz za zb by" data-selectable-paragraph=""><EM
class="zc">Registration Form —<SPAN>&nbsp;</SPAN></EM>A website which collects
registration info from a new hackathon participant.</LI> <LI id="8f5e" class="wk
wl uu wm b wn zd wo wp wq ze wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za
zb by" data-selectable-paragraph=""><EM class="zc">Registration API
—<SPAN>&nbsp;</SPAN></EM>An ASP.NET Core WebAPI providing CRUD over the
registration data.</LI> <LI id="438e" class="wk wl uu wm b wn zd wo wp wq ze wr
ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><EM class="zc">Registration
DB</EM><SPAN>&nbsp;</SPAN>— An Azure SQL Database to persist registration
data.</LI> </UL> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww
yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">Over time,
additional functionality and business logic have been added to the legacy API.
Some examples are:</P> <UL class=""> <LI id="8e2d" class="wk wl uu wm b wn yu wo
wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc yz za zb by"
data-selectable-paragraph="">Adding a new user to a mailing list service
(Mailchimp).</LI> <LI id="f282" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt
zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph="">Inviting new guest users to an Azure AD
tenant.</LI> <LI id="7c4a" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt zf wu
wv ww zg wx wy wz zh xa xb xc yz za zb by" data-selectable-paragraph="">Adding a
new user to a Microsoft Teams team and channels.</LI> </UL> <P class="wk wl uu
wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph=""><STRONG class="wm hq">And more requirements mean
more code!</STRONG></P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu
wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">Our technical
debt and existing design patterns were making it challenging to adapt to the new
requirements.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww
yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">While
th<SPAN>e</SPAN><SPAN>&nbsp;</SPAN>core functionality of collecting and storing
user registration information remains constant, each hackathon event usually has
its own requirements around other capabilities. Some events want to use an
alternate mailing list provider. Others want to configure a unique hierarchy for
teams and channels. Our API codebase<SPAN>&nbsp;</SPAN><EM class="zc">quickly
started filling up with conditional statements and logical
branches<SPAN>&nbsp;</SPAN></EM>making it nearly impossible to test and
difficult to maintain.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw
wu wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P>
<P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa
xb xc pk by" data-selectable-paragraph="">While the American divorce rate
has<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://www.census.gov/library/stories/2020/12/united-states-marriage-and-divorce-rates-declined-last-10-years.html"
target="_blank" rel="noopener ugc nofollow">dropped</A>, we knew
the<SPAN>&nbsp;</SPAN><STRONG class="wm hq">answer to our problem was to
decouple</STRONG>. We want to decouple what we currently have into
separate<SPAN>&nbsp;</SPAN><EM class="zc">components</EM>. Each component takes
care of an atomic piece of business logic and should be easily modifiable
without disrupting other components. This removes the need to bake unnecessary
code into our base business logic. We decided to take a spike and design out how
we can accomplish that using out of the box Azure services.</P> <P class="wk wl
uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <H2 id="06af" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">What does this have to do with me?</H2> <P
class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb
xc pk by" data-selectable-paragraph="">Though this API is a small example we
believe componentizing your architecture while it’s still small is a big step
towards modernizing your architecture.</P> <P class="wk wl uu wm b wn ya wo wp
wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">As developers, we believe in<SPAN>&nbsp;</SPAN><A
class="ay ow"
href="https://dev.to/danialmalik/a-brief-guide-to-clean-code-functions-104h#:~:text=A%20Brief%20Guide%20to%20Clean%20Code%3A%20Functions%201,of%20the%20system%20while%20classes%20are%20the%20nouns."
target="_blank" rel="noopener ugc nofollow">Clean Code</A>. We have to think
software architecture, similarly. Each small component is doing only what it is
supposed to and then passes control to another component. This helps us to
architect cleaner and sensible solutions in the cloud.</P> <P class="wk wl uu wm
b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Whether you are already on the cloud or just
thinking about modernizing your current architecture for the cloud, this article
will hopefully give you a decent grasp of how you can go about approaching it
the right way — or at least a better way. There’s no one design pattern to
address all solutions of course.</P> <P class="wk wl uu wm b wn yu wo wp wq yv
wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph=""><STRONG class="wm hq">Options Options
Options</STRONG></P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv
ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2
id="5077" class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu
xv xw xx xy xz by" data-selectable-paragraph="">App Service</H2> <P class="wk wl
uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">One of the quickest way to modernize your software
is using<SPAN>&nbsp;</SPAN><STRONG class="wm
hq">Azure</STRONG><SPAN>&nbsp;</SPAN><STRONG class="wm hq">App Service</STRONG>.
This way you allow Azure to handle all the networking and security for you. Here
are some great ways to secure your App Services!</P> <UL class=""> <LI id="7124"
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc yz za zb by" data-selectable-paragraph=""><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint"
target="_blank" rel="noopener ugc nofollow">App Service Private
Endpoint</A></LI> <LI id="04f6" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt
zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by" data-selectable-paragraph=""><A
class="ay ow"
href="https://docs.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions"
target="_blank" rel="noopener ugc nofollow">App Service Access
Restriction</A></LI> <LI id="d820" class="wk wl uu wm b wn zd wo wp wq ze wr ws
wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/app-service/environment/intro"
target="_blank" rel="noopener ugc nofollow">App Service Environment</A></LI>
</UL> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz
yy xa xb xc pk by" data-selectable-paragraph=""><EM class="zc">(VM is of course
another route but going back to our reasoning we want to make sure things are
small and manageable.)</EM></P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws
wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">You can either host all your messy giant
application in the App Service, OR you can refactor like mentioned above and put
them into separate App Services and this gets into the territory
of<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://www.martinfowler.com/microservices/" target="_blank" rel="noopener
ugc nofollow">Microservices</A>.</P> <P class="wk wl uu wm b wn yu wo wp wq yv
wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Did we mention the cost can be significantly
cheaper?</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx
wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2
id="7b08" class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu
xv xw xx xy xz by" data-selectable-paragraph="">Serverless</H2> <P class="wk wl
uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">One step further than an app service route is the
Serverless<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener ugc nofollow">Azure
Functions</A><SPAN>&nbsp;</SPAN>route. This is where Azure dynamically manages
the allocation and provisioning of servers. All the benefit of the App Service
but with added bonus of being only charged when it’s invoked. Scott Guthrie
calls it the ‘<EM class="zc">invocation model</EM>’ where you are only
responsible for chargers when the resource is called.</P> <P class="wk wl uu wm
b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Now… the fun(?) part!</P> <P class="wk wl uu wm b
wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <H2 id="4c11" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">Events and Messages</H2> <P class="wk wl uu wm b wn
ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">As you manage multiple components, event and
messaging architecture becomes very important. We want our services to
communicate and respond to each other. However, if we make direct calls between
them, we are re-introducing strict dependencies. Ideally, these services should
be able to communicate without needing any specific knowledge about what those
services are, or where they are located. To accomplish this, we introduce an
eventing system.</P> <P class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv
ww yd wx wy wz ye xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">Should I use events or messages?</P> <UL
class=""> <LI id="aa6e" class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv
ww yx wx wy wz yy xa xb xc yz za zb by" data-selectable-paragraph=""><STRONG
class="wm hq">Events</STRONG><SPAN>&nbsp;</SPAN>Think of it as a notification.
The sender of an event does not necessarily care who receives or acts on the
event. Eventing systems typically provide confirmation that an event has been
submitted, and no response to the sender that a subscriber has consumed or
processed the event.</LI> <LI id="a219" class="wk wl uu wm b wn zd wo wp wq ze
wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><STRONG class="wm
hq">Messaging<SPAN>&nbsp;</SPAN></STRONG>Think of it as a task given by System A
to System B. Messages usually contain a data payload. Messaging systems can
accommodate a more formal relationship between a publisher and a subscriber. The
sender generally knows who the consumer will be and is sending a data payload
that the consumer expects for processing.</LI> </UL> <P class="wk wl uu wm b wn
yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Whichever direction you go you need
a<SPAN>&nbsp;</SPAN><EM class="zc">Broker</EM>.</P> <P class="wk wl uu wm b wn
yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">The broker we chose for our example
is<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/event-grid/overview"
target="_blank" rel="noopener ugc nofollow">Azure Event Grid</A>.</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">&gt;<SPAN>&nbsp;</SPAN><A class="ay ow"
href="https://docs.microsoft.com/en-us/azure/event-grid/compare-messaging-services"
target="_blank" rel="noopener ugc nofollow">Checkout the
doc</A><SPAN>&nbsp;</SPAN>which explains different event-driven services in
Azure</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx
wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2 id="5b5f"
class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx
xy xz by" data-selectable-paragraph="">Our Solution</H2> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="DanielKim_1-1632420074586.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/312461i8E08DF9FE18F5C80/image-size/medium?v=v2&amp;px=400"
role="button" title="DanielKim_1-1632420074586.png"
alt="DanielKim_1-1632420074586.png" /></span></P> <P class="wk wl uu wm b wn yu
wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">(Figure 2) represents the architecture of our
refactored solution.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw
wu wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P>
<P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa
xb xc pk by" data-selectable-paragraph="">The core functionality of the API is
still there. But we have moved all the customizable supporting features out to
their own services.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu
wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">In order to decouple them from the
original API, and orchestrate the business logic, an Event Grid Topic has been
implemented. This service receives event notifications from the API when
operations are performed on the registration data.</P> <P class="wk wl uu wm b
wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">&nbsp;</P> <P class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc pk by"
data-selectable-paragraph="">Our supporting feature services can subscribe to
these notifications to take the appropriate action when changes in the system
occur.</P> <H2 class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs
xt xu xv xw xx xy xz by" data-selectable-paragraph="">&nbsp;</H2> <H2 id="4308"
class="xd xe uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx
xy xz by" data-selectable-paragraph="">What are the benefits?</H2> <P class="wk
wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">The immediate impact of this redesign is
tremendous.</P> <UL class=""> <LI id="c1c4" class="wk wl uu wm b wn yu wo wp wq
yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb xc yz za zb by"
data-selectable-paragraph="">Each component is completely autonomous.
Interdependencies are decoupled and cross-service communication is faciliated by
a highly fault-tolerant messaging system.</LI> <LI id="811c" class="wk wl uu wm
b wn zd wo wp wq ze wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph=""><A class="ay ow"
href="https://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank"
rel="noopener ugc nofollow">Cyclomatic Complexity</A><SPAN>&nbsp;</SPAN>of each
component is greatly reduced. In some cases reaching a perfect score. This has
the added benefit of making the code easier to test and easier for developers to
understand. Not only are unit tests easier, but integration testing can be done
by testing each component individually. For example, before the changes, we
would have to submit an entire “new user” request through the API to make sure
that the “Add to Mailchimp” feature was working properly. Now, we can just test
that one service on its own.</LI> <LI id="8bb7" class="wk wl uu wm b wn zd wo wp
wq ze wr ws wt zf wu wv ww zg wx wy wz zh xa xb xc yz za zb by"
data-selectable-paragraph="">Updates to the system are much easier now. Each of
the supporting services are “plug-n-play”. For example, we can easily swap out
the Mailchimp service for another service that interfaces with SendGrid.</LI>
<LI id="f807" class="wk wl uu wm b wn zd wo wp wq ze wr ws wt zf wu wv ww zg wx
wy wz zh xa xb xc yz za zb by" data-selectable-paragraph="">Event Grid allows
multiple subscriptions to the same event, which makes adding new features and
layering in additional business logic a snap.</LI> </UL> <H2 class="xd xe uu bv
fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">&nbsp;</H2> <H2 id="7595" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">The downside</H2> <P class="wk wl uu wm b wn ya wo
wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">You might be saying, “<EM class="zc">But now there
are so many more ‘things’ to deal with!</EM>”.<SPAN>&nbsp;</SPAN><STRONG
class="wm hq">Yes, that is true</STRONG>. But the
benefits<SPAN>&nbsp;</SPAN><STRONG class="wm
hq">FAR</STRONG><SPAN>&nbsp;</SPAN>out-weigh the downsides here. Cloud platforms
(such as Azure) provide a wealth of governance and management tools out of the
box that make it easy to provision, manage, and monitor ‘all the things’.</P> <P
class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb
xc pk by" data-selectable-paragraph="">&nbsp;</P> <H2 id="aaff" class="xd xe uu
bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">Lesson to be learnt</H2> <P class="wk wl uu wm b wn
ya wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph=""><EM class="zc">In hindsight I guess we got to this
point because we didn’t have a good design discussion when the API was being
created</EM>.</P> <P class="wk wl uu wm b wn ya wo wp wq yb wr ws wt yc wu wv ww
yd wx wy wz ye xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P> <P
class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa xb
xc pk by" data-selectable-paragraph="">But I’m sure lot of development shops do
similar things. In order to push code out, the design you think is going to last
doesn’t really do you any good, OR you just write code without designing at all!
IT’S OK! The point is to<SPAN>&nbsp;</SPAN><EM
class="zc">LEARN</EM><SPAN>&nbsp;</SPAN>from what you have built and try to
continuously improve.</P> <P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw
wu wv ww yx wx wy wz yy xa xb xc pk by" data-selectable-paragraph="">&nbsp;</P>
<P class="wk wl uu wm b wn yu wo wp wq yv wr ws wt yw wu wv ww yx wx wy wz yy xa
xb xc pk by" data-selectable-paragraph="">The cloud offers flexibility. A
light-weight, adaptable design for the cloud is more resilient to changes in
feature requirements. As your needs change and grow, you are not locked in to
the server or license you bought last year, you can scale up, down, out and in
whenever you need to and the cost is only for what you use.</P> <H2 class="xd xe
uu bv fs xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">&nbsp;</H2> <H2 id="6ed2" class="xd xe uu bv fs xf
xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz by"
data-selectable-paragraph="">The Final Word</H2> <P class="wk wl uu wm b wn ya
wo wp wq yb wr ws wt yc wu wv ww yd wx wy wz ye xa xb xc pk by"
data-selectable-paragraph="">Migrating legacy application architectures to the
cloud sometimes requires a shift in perspective and thought-process. These
cloud-native patterns can seem foreign and complicated at first. But with a
little time and experience you will start to see the flexibility, scalability,
and cost benefits of these designs.</P></description>
<pubDate>Fri, 24 Sep 2021 03:53:41 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/journey-towards-cloud-architecture/ba-p/2780579</guid>
<dc:creator>Daniel-Kim</dc:creator>
<dc:date>2021-09-24T03:53:41Z</dc:date>
...
</item>
<item>
<title>Calling on developers for Virtual Hackathon</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/calling-on-developers-for-virtual-hackathon/ba-p/2778977</link>
<description><P><STRONG><EM>Did you know that 1 in 5 nurses are leaving or
considering leaving the profession?</EM></STRONG></P> <P>&nbsp;</P> <P>The
disappearing frontline affects us all, and our health care practitioners
are<SPAN>&nbsp;</SPAN><STRONG>calling on all
developers</STRONG><SPAN>&nbsp;</SPAN>to bring your innovation and solutions to
help build a sustainable nursing workforce for the future.</P> <P>&nbsp;</P>
<P><U></U><A href="https://nursehack4health.org/" target="_self" rel="nofollow
noopener noreferrer"><U>Join our 3 day virtual hackathon</U></A><SPAN>&nbsp;to
work with other technologists, healthcare workers, and innovators to build
meaningful solutions.</SPAN></P> <P>&nbsp;</P> <P><SPAN><STRONG>Why should You
Attend?<BR /></STRONG>For the greater good? Ha ha.&nbsp;</SPAN><SPAN>Attending a
hackathon is a great way to bond, brainstorm, develop and pitch healthcare
solutions that will forever change the way you think about a problem, your
perceived value and impact and your vision for your future in nursing and
healthcare!</SPAN></P> <P>&nbsp;</P> <P><SPAN>You will get a chance
to:</SPAN></P> <UL> <LI>Work along side and network with MS experts and other
technologists who share a common vision.</LI> <LI>Ideate and create meaningful
solutions&nbsp;to address real pain points that our new and seasoned heroes are
going through.</LI> <LI>Getting to work&nbsp;alongside nurses on the frontlines
will help them make their ideas a reality!</LI> <LI>Close the gap between your
technical skills and the needs of our nurses.</LI> <LI>Perfect chance to
contribute to open source and help build your brand.</LI> </UL> <P><STRONG>What
if I don’t have any healthcare experience?&nbsp;</STRONG>No problem! That’s what
the nurses are for (and we’ll have some tech-y healthcare industry people there
too)</P> <P><STRONG><BR />What if I don’t have skills on the tech and tools the
team needs?<SPAN>&nbsp;</SPAN></STRONG>Again,&nbsp;No problem! Your background
on any developer tools and tech are more than enough – and we’ll have plenty of
MSFT mentors in a variety of areas there to help you as well. Commonly used tech
includes (but is definitely not limited to):</P> <UL> <LI>C#/Java/JavaScript,
React.js, SQL, MySQL, Power Apps, bot frameworks, Power Virtual Agent, mobile
app dev</LI> </UL> <P><STRONG>Check with your employer(s)&nbsp;</STRONG>Some
employers have policies around employees moonlighting and working on open source
projects</P> <P data-unlink="true">&nbsp;</P> <P>Testimony:<BR /><A
href="https://www.youtube.com/watch?v=JQVjOT7DZcU" target="_self" rel="nofollow
noopener noreferrer">Company founded through NurseHack! (Youtube
Video)</A>&nbsp;<BR /><BR /></P> <P data-unlink="true">Resources that could help
prepare you for the hackathon:</P> <P data-unlink="true"><A
href="https://github.com/NurseHack4Health/NH4H2021SpringHackathon"
target="_self" rel="noopener noreferrer">NurseHack4Health Spring
2021</A><SPAN>&nbsp;</SPAN>(past solutions/presentation)&nbsp;</P> <P>&nbsp;</P>
<P>Help build&nbsp;a&nbsp;sustainable nursing workforce for the future. Leverage
your tech skills and hack for nurses’ wellbeing.</P> <P><EM>To register and to
learn more:&nbsp;</EM><STRONG><EM><A href="https://nursehack4health.org/"
target="_blank" rel="noopener nofollow
noreferrer">https://nursehack4health.org</A></EM></STRONG></P></description>
<pubDate>Thu, 23 Sep 2021 15:38:01 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/calling-on-developers-for-virtual-hackathon/ba-p/2778977</guid>
<dc:creator>Anshika Goyal</dc:creator>
<dc:date>2021-09-23T15:38:01Z</dc:date>
...
</item>
<item>
<title>Meet the band backstage at Azure and build</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/meet-the-band-backstage-at-azure-and-build/ba-p/2768701</link>
<description><P><SPAN data-contrast="auto"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AAA
Event card.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/311663iA88DC946DA8F1BB5/image-size/large?v=v2&amp;px=999"
role="button" title="AAA Event card.png" alt="AAA Event card.png"
/></span></SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">We&nbsp;know
it’s not easy&nbsp;juggling&nbsp;tradeoffs&nbsp;and prioritizing improvements.
This is&nbsp;where&nbsp;the&nbsp;</SPAN><A
href="https://aka.ms/wellarchitected/framework" target="_blank"><SPAN
data-contrast="none">Azure Well-Architected Framework</SPAN></A><SPAN
data-contrast="auto">&nbsp;comes into the picture.&nbsp;</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN data-contrast="auto">Here’s how we
describe it:</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-contrast="none">The </SPAN><A
href="https://aka.ms/wellarchitected/framework" target="_blank"><SPAN
data-contrast="none">Well-Architected Framework</SPAN></A><SPAN
data-contrast="none"> is </SPAN><I><SPAN data-contrast="none">a set of guiding
tenets that can be used to improve the quality of a workload. The framework
consists of five pillars of architecture excellence: Cost Optimization,
Operational Excellence, Performance Efficiency, Reliability, and Security.
Incorporating these pillars helps produce high-quality, stable, and efficient
cloud architecture.</SPAN></I><SPAN data-ccp-props="{}">&nbsp;</SPAN></P>
<P><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-contrast="auto">Using the&nbsp;Azure&nbsp;Well-Architected Framework as our
guide, we are going to do something we have never done before.&nbsp;On September
23</SPAN><SPAN data-contrast="auto">rd</SPAN><SPAN
data-contrast="auto">&nbsp;online at&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/tv/" target="_blank"><SPAN
data-contrast="none">Learn&nbsp;TV</SPAN></A><SPAN
data-contrast="auto">,&nbsp;followed several weeks later around the
globe&nbsp;via&nbsp;the&nbsp;</SPAN><A
href="https://developer.microsoft.com/reactor/" target="_blank"><SPAN
data-contrast="none">Microsoft&nbsp;Reactors</SPAN></A><SPAN
data-contrast="none">,</SPAN><SPAN
data-contrast="auto">&nbsp;&nbsp;we’re&nbsp;going to take
you&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">behind the scenes at
Azure.</SPAN></STRONG><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">Join us
for&nbsp;</SPAN><A href="https://aka.ms/WAF-Backstage" target="_blank"><I><SPAN
data-contrast="none">Well-Architected: The Backstage Tour</SPAN></I></A><SPAN
data-contrast="auto">, a virtual event&nbsp;where you will get five brief peeks
at how we power the features that address each of these pillars of the Azure
Well-Architected Framework. Not only will you learn how things work behind the
curtain, but you’ll also take away some tips and tricks you won’t find anywhere
else.</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">Mark
Russinovich, Azure Chief Technology Officer, will deliver the opening address to
this two hour live event on Learn TV. It will bring you five sessions, each with
an opportunity to get your questions answered directly from our
speakers.</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">And if you
miss&nbsp;this week, don’t worry about it!&nbsp;Register&nbsp;now&nbsp;and
we’ll&nbsp;notify you&nbsp;as soon as the recording&nbsp;is
available.</SPAN><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">We hope you
can join us -&nbsp;</SPAN><A href="https://aka.ms/WAF-Backstage"
target="_blank"><SPAN data-contrast="none">RSVP today!</SPAN></A><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><I><SPAN data-contrast="auto">Please
see below for the&nbsp;full&nbsp;list of sessions and their
speakers.</SPAN></I><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P
aria-level="1"><SPAN data-contrast="none">Keynote </SPAN><SPAN
data-ccp-props="{&quot;335559738&quot;:240}">&nbsp;</SPAN></P> <P><STRONG><SPAN
data-contrast="auto">Presenter: Mark Russinovich</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:-360,&quot;335559731&quot;:360}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Reliability: Bringing Reliability Right to
your Front Door </SPAN><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN
data-contrast="auto">Presenter: Daniel Gicklhorn, Director Content Delivery for
Azure.</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto">In this session we’ll go behind the scenes with Azure Front
Door and how it leverages global vantage points and Microsoft’s global network
to self-heal and optimize user experiences all the way from the edge to the app
on Azure.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Security: The Secret Life of a Security
Signal </SPAN><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN
data-contrast="auto">Presenter: Rod Trent,&nbsp;(Senior Security Cloud
Advocate),&nbsp;Cloud Advocacy</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To combat cyber-attacks and protect against urgent
threats, Microsoft collects billions of signals from the security ecosystem to
create the contextual threat intelligence that’s built into products
like Office 365, Windows, and Azure, Defender and Azure Sentinel.</SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In this session, follow a single signal through
its entire journey - from first detection in the wild to the rules that protect
you. Then, we'll show you how to gain direct access to these rules and extend
them for your own purposes.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Cost Optimization: Two reasons why you should
believe us when we say you can optimize your Azure costs </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Presenters:</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Priyanshi Mittal (PM), Azure Cost
Management and Billing</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Ritesh Kini (Senior PM), Azure Cost
Optimization</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">David Blank-Edelman (Senior Cloud
Advocate), Scalable Content</SPAN></STRONG><SPAN
data-contrast="auto">  </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Azure has many tools and techniques to help
customers optimize their cloud spend.  In this session, we are going to behind
the scenes and look at two of them built into Azure Advisor. There’s some pretty
magical stuff based on fascinating research and careful engineering powering
this service. We will show you all that plus some direct tips for your own cost
optimization efforts.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Operational Excellence: ARM Templates
Unplugged: How your resource </SPAN><I><SPAN
data-contrast="none">actually</SPAN></I><SPAN
data-contrast="none">&nbsp;gets provisioned </SPAN><SPAN>&nbsp;<BR
/></SPAN><STRONG><SPAN
data-contrast="auto">Presenter:  </SPAN></STRONG><SPAN>&nbsp;<BR
/></SPAN><STRONG><SPAN data-contrast="auto">Alex Frankel (Senior PM), Azure
Deployments  </SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">David Blank-Edelman (Senior Cloud
Advocate), Scalable Content </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Reproduceable infrastructure and workloads can be
crucial for operational excellence. At some point as you build on Azure you will
press into service some ARM templates – either authored directly or through
tools like Bicep, Farmer, or PSArm. Ever wonder how we go from a simple template
to a not-so-simple set of running resources? We’ll reveal the whole story from
end-to-end and in the process show you some tips for working with this key
provisioning tool. </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Performance Efficiency: Fast &amp; Furious:
Optimizing for Quick &amp; Reliable VM Deployments </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Presenter: Sofia Joison (PM), Azure Core
Fundamentals</SPAN></STRONG><STRONG><SPAN
data-contrast="auto"> </SPAN></STRONG><SPAN>&nbsp;<BR /></SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN data-contrast="auto"> </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN
data-contrast="auto">Virtual Machines are the building blocks of the cloud. And
with something that fundamental, it's important to have a performant and
reliable experience. In this session, we will go behind the scenes and learn
about Azure's secret sauce to provisioning VMs. We'll share some tips and tricks
so you can leverage these capabilities to ensure you get the best experience for
all your VM deployment needs.</SPAN><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true}">&nbsp;</SPAN></P>
<P><SPAN data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P> <P><SPAN data-contrast="auto">We hope you
can join us -&nbsp;</SPAN><A href="https://aka.ms/WAF-Backstage"
target="_blank"><SPAN data-contrast="none">RSVP&nbsp;today!</SPAN></A><SPAN
data-ccp-props="{}">&nbsp;</SPAN></P></description>
<pubDate>Mon, 20 Sep 2021 21:03:18 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/meet-the-band-backstage-at-azure-and-build/ba-p/2768701</guid>
<dc:creator>wendywilson</dc:creator>
<dc:date>2021-09-20T21:03:18Z</dc:date>
...
</item>
<item>
<title>New path : Tech resilience</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-path-tech-resilience/ba-p/2749436</link>
<description><P class="">For many developers, tech-driven fields can be
intimidating.</P> <P class="">&nbsp;</P> <P class="">When you get stuck or lack
support, you might end up leaving tech instead of staying in tech and get
promoted.</P> <P class="">&nbsp;</P> <P
class=""><STRONG>Consequence</STRONG></P> <P class="">"The result is a smaller
and less diverse workforce in tech."</P> <P class="">&nbsp;</P> <P
class=""><STRONG>Feeling of exclusion</STRONG></P> <P>Those who make it past
these barriers during their educational journey can end up feeling excluded by
workplace cultures that don’t match their own backgrounds and experiences.&nbsp;
Far too many talented people avoid choosing or actively decide to leave tech
because it can be unwelcoming.</P> <P>&nbsp;</P>
<P><STRONG>Solution</STRONG></P> <P>By fostering tech resilience, confidence and
mindset, you can grow the needed skills to not only stay in tech but also
prepare you for your next position in tech, whether that's a new type of role or
one with more managerial responsibility.</P> <P>&nbsp;</P> <P><STRONG>Our
mission?</STRONG> To help build a more inclusive future for the tech industry by
fostering confidence, resilience, and a sense of belonging.</P> <P>&nbsp;</P>
<P><LI-VIDEO vid="https://www.youtube.com/watch?v=0xT4mBgjg0w" align="center"
size="custom" width="676" height="676" uploading="false"
thumbnail="https://i.ytimg.com/vi/0xT4mBgjg0w/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Therefore, we
created this learning path&nbsp;<A
href="https://docs.microsoft.com/learn/paths/tech-resilience/" target="_blank"
rel="noopener">https://docs.microsoft.com/learn/paths/tech-resilience/</A></P>
<P>&nbsp;</P> <P>- Develop a growth mindset&nbsp;<A
href="https://docs.microsoft.com/learn/modules/develop-growth-mindset/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/develop-growth-mindset/</A></P>
<P>- Enhance your self-efficacy,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/enhance-self-efficacy/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/enhance-self-efficacy/</A></P>
<P>- Cultivate a culture of belongingness,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/cultivate-culture-belongingness/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/cultivate-culture-belongingness/</A></P>
<P>- Exercise your emotional intelligence,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/exercise-your-emotional-intelligence/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/exercise-your-emotional-intelligence/</A></P>
<P>- Give and receive effective feedback,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/give-receive-effective-feedback/"
target="_blank"
rel="noopener">https://docs.microsoft.co/learn/modules/give-receive-effective-feedback/</A></P>
<P>- Grow your cognitive flexibility,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/grow-cognitive-flexibility/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/grow-cognitive-flexibility/</A></P>
<P>- Leverage self-regulation to work strategically,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/self-regulation-work-strategically/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/self-regulation-work-strategically/</A></P>
<P>- Communicate with others strategically through mirroring and
coaching,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/communicate-strategically-mirror-coach/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/communicate-strategically-mirror-coach/</A></P>
<P>- Work with others by practice active listening,&nbsp;<A
href="https://docs.microsoft.com/learn/modules/practice-active-listening/"
target="_blank"
rel="noopener">https://docs.microsoft.com/learn/modules/practice-active-listening/</A></P>
<P>&nbsp;</P></description>
<pubDate>Wed, 15 Sep 2021 13:21:21 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-path-tech-resilience/ba-p/2749436</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-09-15T13:21:21Z</dc:date>
...
</item>
<item>
<title>new Learning path, Start in tech as an intern</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-start-in-tech-as-an-intern/ba-p/2714167</link>
<description><P>You might be a student or in mid-career and you are starting to
think, what if I can get into tech?&nbsp; It's never too late to start in tech,
just know that there are ways to build your skills, get noticed and start to
work at that new dream job of yours.</P> <P>&nbsp;</P> <P>At first, you might
start with an intimidating feeling, where do I even begin, how would I build my
skills? There are a lot of guidance to be had and in this learning path we've
collected all that guidance for you in three modules.</P> <P>&nbsp;</P>
<P><STRONG>First module</STRONG></P> <P>The idea is that your first starts
building your skills, then craft a resume. Once you have a resume, you can start
to network (or even before having a resume) in places where other tech folks
might be.</P> <P>&nbsp;</P> <P><STRONG>Second module</STRONG></P> <P>Lastly, all
that leg work hopefully leads to an interview, and here we also inform you of
various interviews, questions you might get and how to approve them.&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>Third module</STRONG></P> <P>In the last interview,
you've landed that coveted intern position and we guide you how to best carry it
out&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="career-interview.jpg" style="width:
800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/307431i19E45C5D22141567/image-size/large?v=v2&amp;px=999"
role="button" title="career-interview.jpg" alt="career-interview.jpg"
/></span></P> <P>Here is the learning path <A title="Start a career in tech"
href="https://docs.microsoft.com/en-gb/learn/paths/start-career-in-tech/"
target="_self">Start a career in tech</A></P> <P>&nbsp;</P> <P>- <A title="Grow
your tech skills and get noticed"
href="https://docs.microsoft.com/en-gb/learn/modules/career-get-noticed/"
target="_self">Get noticed</A> Grow your tech skills and learn where and how to
network, even as a student</P> <P>- <A title="Successfully interview to land an
intern position"
href="https://docs.microsoft.com/en-gb/learn/modules/career-interview/"
target="_self">Successful interviewing</A> prepare for different types of
interviews, tech and non tech ones</P> <P>- <A title="Learn how to grow as an
intern and maximize your chances to be offered a full-time position"
href="https://docs.microsoft.com/en-gb/learn/modules/career-growth/"
target="_self">From intern to full time position</A>. Grow in your role as an
intern, and turn that into a full-time position.</P> <P>&nbsp;</P> <P>Hear from
<A title="Eleanor Lewis on why intern"
href="https://www.microsoft.com/en-gb/videoplayer/embed/RE4OPAi?postJsllMsg=true&amp;autoCaptions=en-gb"
target="_self">Eleanor Lewis</A>, intern that now works full-time at
Microsoft.</P> <P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Tue, 14 Sep 2021 17:35:04 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learning-path-start-in-tech-as-an-intern/ba-p/2714167</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-09-14T17:35:04Z</dc:date>
...
</item>
<item>
<title>Hackathon as a Service with GitHub Actions, Microsoft 365 and Power
Platform</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hackathon-as-a-service-with-github-actions-microsoft-365-and/ba-p/2671063</link>
<description><P>Generally speaking, an off-line hackathon event takes place with
people getting together at the same time and place for about two to three
nights, intensively. On the other hand, all events have turned into online-only
nowadays, and there's no exception for the hackathon events either. To keep the
same event experiences, hackathon organisers use many online collaboration
tools. In this case, almost the same number of event staff members are
necessary. What if you have limited resources and budget and are required to run
the online hackathon event?</P> <P>&nbsp;</P> <P>For two weeks, I recently ran
an online-only hackathon event called <A
href="https://github.com/devrel-kr/HackaLearn/blob/main/README.en.md"
target="_blank" rel="noopener">HackaLearn</A> from August 2, 2021. This post is
the retrospective of the event from the event organiser's perspective. If anyone
is planning a hackathon with a similar concept, I hope this post could be
helpful.</P> <P>&nbsp;</P> <H2>The Background</H2> <P>&nbsp;</P> <P>In May 2021
at <A href="https://mybuild.microsoft.com/home?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">//Build</A> Conference, <A
href="https://docs.microsoft.com/azure/static-web-apps/overview?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Azure Static Web Apps (ASWA)</A> became generally
available. It's relatively newer than the other competitors' ones meaning it is
less popular than the others. This HackaLearn event is one of the practices to
promote ASWA. The idea was simple. We're not only running a hackathon event but
also offering the participants learning experiences with <A
href="https://docs.microsoft.com/learn/paths/azure-static-web-apps/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Learn</A> to participants so that they
can feel how convenient ASWA is to use. Therefore, all participants can learn
ASWA and build their app with ASWA – this was the direction.</P> <P>&nbsp;</P>
<P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-01-en.png"
border="0" alt="HackaLearn Banner" /></P> <P>&nbsp;</P> <P>In fact, the first
HackaLearn event was held in Israel, and other countries in the EMEA region have
been running this event. I also borrowed the concept and localised the format
for Korean uni students. With support from <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Learn Student Ambassadors (MLSA)</A>
and <A href="https://githubcampus.expert" target="_blank" rel="noopener">GitHub
Campus Experts (GCE)</A>, they review the participants pull requests and
external field experts were invited as mentors and ran online mentoring
sessions.</P> <P>&nbsp;</P> <H2>The Problems</H2> <P>&nbsp;</P> <P>As mentioned
above, running a hackathon event requires intensive, dedicated and exclusive
resources, including time, people and money. However, none of them was adequate.
I've got very limited resources, and even I couldn't dedicate myself to this
event either. I was the only one who could operate the event. Both <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">MLSAs</A> and <A
href="https://githubcampus.expert" target="_blank" rel="noopener">GCEs</A> were
dedicated for PR reviews and mentors for mentoring sessions. Automating all the
event operation processes was the only answer for me.</P> <P>&nbsp;</P>
<BLOCKQUOTE> <P>How can I automate all the things?</P> </BLOCKQUOTE>
<P>&nbsp;</P> <P>For me, finding out the solution is the key focus area
throughout this event.</P> <P>&nbsp;</P> <H2>The Constraints</H2> <P>&nbsp;</P>
<P>There were a few constraints to be considered.</P> <P>&nbsp;</P> <UL> <LI>
<P><STRONG>No Website for Hackathon</STRONG></P> <P>:police_car_light:</img>
There was no website for HackaLearn. Usually, the event website is built on a
one-off basis, which seems less economical.<BR
/>:backhand_index_pointing_right:</img> Therefore, I decided to use the GitHub
repository for the event because it offers many built-in features such as
Project, Discussions, Issues, Wiki, etc.</P> </LI> <LI> <P><STRONG>No Place for
Participant Registration</STRONG></P> <P>:police_car_light:</img> There was no
registration form.<BR />:backhand_index_pointing_right:</img> Therefore, I
decided to use <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A>.</P> </LI> <LI> <P><STRONG>No
Database for Participant Management</STRONG></P> <P>:police_car_light:</img>
There was no database for the participant management to record their challenge
progress.<BR />:backhand_index_pointing_right:</img> Therefore, instead of
provisioning a database instance, I decided to use <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>.</P> </LI> <LI> <P><STRONG>No
Dashboard for Teams and Individuals Progress Tracking</STRONG></P>
<P>:police_car_light:</img> There was no dashboard to track each team's and each
participant's progress.<BR />:backhand_index_pointing_right:</img> So instead, I
decided to use their team page by merging their pull requests.</P> </LI> </UL>
<P>&nbsp;</P> <P>I've defined the overall business process workflow in the
following sequence diagrams. All I needed was to sort out those limitations
stated above. To me, it was <A
href="https://powerplatform.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Power Platform</A>, <A
href="https://github.com/features/actions" target="_blank" rel="noopener">GitHub
Actions</A> and <A
href="https://www.microsoft.com/microsoft-365?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft 365</A> with minimal coding efforts and
maximum outcomes.</P> <P>&nbsp;</P> <H2>The Plans for Process Automation</H2>
<P>&nbsp;</P> <P>All of sudden, the limitations above have become opportunities
to experiment with the new process automation!</P> <P>&nbsp;</P> <UL> <LI>The
event itself uses the GitHub repository, meaning all PRs and issues can be
handled by <A href="https://github.com/features/actions" target="_blank"
rel="noopener">GitHub Actions</A>.</LI> <LI><A
href="https://www.microsoft.com/microsoft-365?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft 365</A> services like <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A> and <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A> are used for data input and
storage.</LI> <LI><A
href="https://flow.microsoft.com/?WT.mc_id=power-39037-juyoo" target="_blank"
rel="noopener">Power Automate</A> is one of the <A
href="https://powerplatform.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Power Platform</A> services and is used for the
core of process automation.</LI> </UL> <P>&nbsp;</P> <P>So, the GitHub
repository and Microsoft 365 services are fully integrated with GitHub Actions
workflows and Power Automate workflows. As a result, I was able to save a
massive amount of time and money with them.</P> <P>&nbsp;</P> <H2>The Result –
Participant Registration</H2> <P>&nbsp;</P> <P>The first automation process I
worked on was about storing data. The participant details need to be saved in <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>. When a participant enters
their details through <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A>, then a <A
href="https://flow.microsoft.com/?WT.mc_id=power-39037-juyoo" target="_blank"
rel="noopener">Power Automate</A> workflow is triggered to process the
registration details. At the same time, the workflow calls a GitHub Actions
workflow to create a team page for the participant. Here's the simple sequence
diagram describing this process.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/registration-en.png"
border="0" alt="Registration Sequence Diagram" /></P> <P>&nbsp;</P> <P>The
overall process is divided into two parts – one to process participant details
in the Power Automate workflow, and the other to process the details in the
GitHub Actions workflow.</P> <P>&nbsp;</P> <H3>Power Automate Workflow</H3>
<P>&nbsp;</P> <P>Let's have a look at the Power Automate part. When a
participant registers through <A
href="https://www.microsoft.com/microsoft-365/online-surveys-polls-quizzes?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Forms</A>, the form automatically
triggers a Power Automate workflow. The workflow checks the email address
whether the participant has already registered or not. If the email doesn't
exist, the participant details are stored to <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-05.png"
border="0" alt="Registration Flow 1" /></P> <P>&nbsp;</P> <P>Then it generates a
team page. Instead of creating it directly from the Power Automate workflow, it
builds the page content and sends it to the GitHub Actions workflow. The <A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch"
target="_blank" rel="noopener"><CODE>workflow_dispatch</CODE></A> event is
triggered for this action.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-06.png"
border="0" alt="Registration Flow 2" /></P> <P>&nbsp;</P> <P>Finally, the
workflow sends a confirmation email. In terms of the name, participants may
register themselves with English names or Korean names. Therefore, I need logic
to check the participant's name. If the participant name is written in English,
it should be <CODE>[Given Name] [Surname]</CODE> (with a space; eg. Justin Yoo).
If it's written in Korean, it should be <CODE>[Surname][Given Name]</CODE>
(without a space; eg. 유저스틴). The red-boxed actions are responsible for
identifying the participant's name. It may be simplified by adopting a custom
connector with an Azure Functions endpoint.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-07.png"
border="0" alt="Registration Flow 3" /></P> <P>&nbsp;</P> <H3>GitHub Actions
Workflow</H3> <P>&nbsp;</P> <P>As mentioned above, the Power Automate workflow
calls a GitHub Actions workflow to generate a team page. Let's have a look. The
<CODE>workflow_dispatch</CODE> event takes the input details from Power
Automate, and they are <CODE>teamName</CODE> and <CODE>content</CODE>.</P>
<P>&nbsp;</P> <PRE>name: On Team Page Requested on: workflow_dispatch: inputs:
teamName: description: The name of team required: true default: Team_HackaLearn
content: description: The content of the file to be created required: true
default: Hello HackaLearn </PRE> <P>&nbsp;</P> <P>Since GitHub <A
href="https://github.com/marketplace?type=actions" target="_blank"
rel="noopener">Marketplace</A> has various types of Actions, I can simply choose
one to create the team page, commit the change and push it back to the
repository.</P> <P>&nbsp;</P> <PRE> - name: Create team page uses:
DamianReeves/write-file-action@master with: path: "./teams/${{
github.event.inputs.teamName }}.md" contents: ${{ github.event.inputs.content }}
write-mode: overwrite - name: Commit team page shell: bash run: | git config
--local user.email "hackalearn.korea@outlook.com" git config --local user.name
"HackaLearn Korea" git add ./teams/\* --force git commit -m "Team: ${{
github.event.inputs.teamName }} added" - name: Push team page uses:
ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }} </PRE> <P>&nbsp;</P> <P>Now, I've got the registration
process fully automated. Let's move on.</P> <P>&nbsp;</P> <H2>The Result –
Challenges Update</H2> <P>&nbsp;</P> <P>In this HackaLearn event, each
participant was required to complete six challenges. Every time they finish one
challenge, they MUST update their team page and create a PR to reflect their
progress. As there are not many differences between the challenges, I'm going to
use the Social Media Challenge as an example.</P> <P>&nbsp;</P> <P>Here's the
simple sequence diagram describing the process.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/challenge-social-en.png"
border="0" alt="Social Media Challenge Sequence Diagram" /></P> <P>&nbsp;</P>
<OL> <LI>After the participant posts a post to their social media, they update
their team page and raise a PR. Then, a GitHub Actions workflow labels the PR
with <CODE>review-required</CODE> and assigns a reviewer.</LI> <LI>The assigned
reviewer checks the social media post whether it's appropriately hashtagged with
<CODE>#hackalearn</CODE> and <CODE>#hackalearnkorea</CODE>.</LI> <LI>Once
confirmed, the reviewer adds the <CODE>review-completed</CODE> label to the PR.
Then another GitHub Actions workflow automatically removes the
<CODE>review-required</CODE> label from the PR.</LI> <LI>The reviewer completes
the review by leaving a comment of <CODE>/socialsignoff</CODE>, and the comment
triggers another GitHub Actions workflow. The workflow calls the Power Automate
workflow that updates the record on <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A> with the challenge
progress.</LI> <LI>The Power Automate workflow calls back to another GitHub
Actions workflow to add <CODE>record-updated</CODE> and
<CODE>completed-social</CODE> labels to the PR and remove the
<CODE>review-completed</CODE> labels from it.</LI> <LI>If there is an issue
while updating the record, the GitHub Actions workflow adds the
<CODE>review-required</CODE> label so that the assigned reviewer starts review
again.</LI> </OL> <P>&nbsp;</P> <H3>GitHub Actions Workflow</H3> <P>&nbsp;</P>
<P>As described above, there are five GitHub Actions workflow used to handle
this request.</P> <P>&nbsp;</P> <H4>Challenge Update PR</H4> <P>&nbsp;</P>
<P>The GitHub Actions workflow is triggered by the participant requesting a new
PR. The event triggered is <A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#pull_request_target"
target="_blank" rel="noopener"><CODE>pull_request_target</CODE></A>, and it's
only activated when the changes occur under the <CODE>teams</CODE>
directory.</P> <P>&nbsp;</P> <PRE>name: On Challenge Submitted on:
pull_request_target: types: - opened branches: - main paths: - 'teams/**/*.md'
</PRE> <P>&nbsp;</P> <P>If the PR is created later than the due date and time,
the PR should not be accepted. Therefore, A PowerShell script is used to check
the due date automatically. Since the PR's <CODE>created_at</CODE> value is the
UTC value, it should be converted to the Korean local time, included in the
PowerShell script.</P> <P>&nbsp;</P> <PRE>jobs: labelling: name: 'Add a label on
submission: review-required' runs-on: ubuntu-latest steps: - name: Get PR
date/time id: checkpoint shell: pwsh run: | $tz =
[TimeZoneInfo]::FindSystemTimeZoneById("Asia/Seoul") $dateSubmitted =
[DateTimeOffset]::Parse("${{ github.event.pull_request.created_at }}") $offset =
$tz.GetUtcOffset($dateSubmitted) $dateSubmitted =
$dateSubmitted.ToOffset($offset) $dateDue =
$([DateTimeOffset]::Parse("2021-08-16T00:00:00.000+09:00")) $isOverdue =
"$($dateSubmitted -gt $dateDue)".ToLowerInvariant() $dateSubmittedValue =
$dateSubmitted.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz") $dateDueValue =
$dateDue.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz") echo "::set-output
name=dateSubmitted::$dateSubmittedValue" echo "::set-output
name=dateDue::$dateDueValue" echo "::set-output name=isOverdue::$isOverdue"
</PRE> <P>&nbsp;</P> <P>If the PR is over the due, it's immediately rejected and
closed.</P> <P>&nbsp;</P> <PRE> - name: Add a label - Overdue if: ${{
steps.checkpoint.outputs.isOverdue == 'true' }} uses:
buildsville/add-remove-label@v1 with: token: "${{ secrets.GITHUB_TOKEN }}"
label: 'OVERDUE-SUBMIT' type: add - name: Comment to PR - Overdue if: ${{
steps.checkpoint.outputs.isOverdue == 'true' }} uses: bubkoo/auto-comment@v1
with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} pullRequestOpened: | 👋🏼 @{{
author }} 님! * PR 제출 시각: ${{ steps.checkpoint.outputs.dateSubmitted }} * PR 마감
시각: ${{ steps.checkpoint.outputs.dateDue }} 안타깝게도 제출하신 PR은 마감 기한인 ${{
steps.checkpoint.outputs.dateDue }}을 넘기셨습니다. 😭 따라서, 이번 HackaLearn 이벤트에 반영되지
않습니다. 그동안 HackaLearn 이벤트에 참여해 주셔서 감사 드립니다. 다음 기회에 다시 만나요! - name: Close PR -
Overdue if: ${{ steps.checkpoint.outputs.isOverdue == 'true' }} uses:
superbrothers/close-pull-request@v3 with: comment: "제출 기한 종료" </PRE>
<P>&nbsp;</P> <P>If it's before the due, label the PR, leave a comment and
randomly assign a reviewer.</P> <P>&nbsp;</P> <PRE> - name: Add a label if: ${{
steps.checkpoint.outputs.isOverdue == 'false' }} uses: actions/labeler@v3 with:
repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path:
'.github/labeler.yml' - name: Comment to PR if: ${{
steps.checkpoint.outputs.isOverdue == 'false' }} uses: bubkoo/auto-comment@v1
with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} pullRequestOpenedReactions:
'rocket, +1' pullRequestOpened: &gt; 👋🏼 @{{ author }} 님! 챌린지 완료 PR를 생성해 주셔서
감사합니다! 🎉 참가자님의 해커톤 완주를 응원해요! 💪🏼 PR 템플릿 작성 가이드라인을 잘 준수하셨는지 확인해주세요. 최대한 빠르게
리뷰하겠습니다! 😊 🔹 From. HackaLearn 운영진 일동 🔹 - name: Randomly assign a staff if:
${{ steps.checkpoint.outputs.isOverdue == 'false' }} uses:
gerardabello/auto-assign@v1.0.1 with: github-token: "${{ secrets.GITHUB_TOKEN
}}" number-of-assignees: 1 assignee-pool: "${{ secrets.PR_REVIEWERS }}" </PRE>
<P>&nbsp;</P> <H4>Challenge Review Completed</H4> <P>&nbsp;</P> <P>The assigned
reviewer confirms the challenge and labels the result. This labelling action
triggers the following GitHub Actions workflow.</P> <P>&nbsp;</P> <PRE>name: On
Challenge Labelled on: pull_request_target: types: - labeled - unlabeled jobs:
labelling: name: 'Update a label' runs-on: ubuntu-latest steps: - name: Respond
to label uses: dessant/label-actions@v2 with: process-only: prs </PRE>
<P>&nbsp;</P> <H4>Challenge Review Approval</H4> <P>&nbsp;</P> <P>Commenting
like <CODE>/socialsignoff</CODE> for the social media post challenge
automatically triggers the following GitHub Actions workflow, with the event of
<A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#issue_comment"
target="_blank" rel="noopener"><CODE>issue_comment</CODE></A>.</P> <P>&nbsp;</P>
<PRE>name: On Challenge Review Commented on: issue_comment: types: - created
</PRE> <P>&nbsp;</P> <P>The first step of this workflow is to check whether the
commenter is the assigned reviewer, then find out which challenge is approved.
The <CODE>review-completed</CODE> label MUST exist on the PR, and the commenter
MUST be in the reviewer list (<CODE>secrets.PR_REVIEWERS</CODE>).</P>
<P>&nbsp;</P> <PRE>env: PR_REVIEWERS: ${{ secrets.PR_REVIEWERS }} jobs: signoff:
if: ${{ github.event.issue.pull_request }} name: 'Sign-off challenge' runs-on:
ubuntu-latest steps: - name: Get checkpoints id: checkpoint shell: pwsh run: |
$hasValidLabel = "${{ contains(github.event.issue.labels.*.name,
'review-completed') }}" $isCommenterAssignee = "${{
github.event.comment.user.login == github.event.issue.assignee.login }}"
$isValidCommenter = "${{ contains(env.PR_REVIEWERS,
github.event.comment.user.login) }}" $isAswaSignoff = "${{
github.event.comment.body == '/aswasignoff' }}" $isGhaSignoff = "${{
github.event.comment.body == '/ghasignoff' }}" $isSocialSignoff = "${{
github.event.comment.body == '/socialsignoff' }}" $isAppSignoff = "${{
github.event.comment.body == '/appsignoff' }}" $isRepoSignoff = "${{
github.event.comment.body == '/reposignoff' }}" $isRetroSignoff = "${{
github.event.comment.body == '/retrosignoff' }}" $timestamp = "${{
github.event.comment.created_at }}" echo "::set-output
name=hasValidLabel::$hasValidLabel" echo "::set-output
name=isCommenterAssignee::$isCommenterAssignee" echo "::set-output
name=isValidCommenter::$isValidCommenter" echo "::set-output
name=isAswaSignoff::$isAswaSignoff" echo "::set-output
name=isGhaSignoff::$isGhaSignoff" echo "::set-output
name=isSocialSignoff::$isSocialSignoff" echo "::set-output
name=isAppSignoff::$isAppSignoff" echo "::set-output
name=isRepoSignoff::$isRepoSignoff" echo "::set-output
name=isRetroSignoff::$isRetroSignoff" echo "::set-output
name=timestamp::$timestamp" </PRE> <P>&nbsp;</P> <P>If all conditions are met,
the workflow takes one action based on the type of the challenge. Each action
calls a Power Automate workflow to update the record on <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>, send a confirmation email,
and calls back to another GitHub Actions workflow.</P> <P>&nbsp;</P> <PRE>-
name: Record challenge ASWA if: ${{ steps.checkpoint.outputs.hasValidLabel ==
'true' &amp;&amp; steps.checkpoint.outputs.isCommenterAssignee == 'true'
&amp;&amp; steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isAswaSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "aswa",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge GHA if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isGhaSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "gha",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge SOCIAL if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isSocialSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "social",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge APP if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isAppSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "app",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge REPO if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isRepoSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "repo",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' - name: Record challenge RETRO if: ${{
steps.checkpoint.outputs.hasValidLabel == 'true' &amp;&amp;
steps.checkpoint.outputs.isCommenterAssignee == 'true' &amp;&amp;
steps.checkpoint.outputs.isValidCommenter == 'true' &amp;&amp;
steps.checkpoint.outputs.isRetroSignoff == 'true' }} uses:
joelwmale/webhook-action@2.1.0 with: url: ${{ secrets.FLOW_URL }} body:
'{"gitHubId": "${{ github.event.issue.user.login }}", "challengeType": "retro",
"timestamp": "${{ steps.checkpoint.outputs.timestamp }}", "prId": ${{
github.event.issue.number }} }' </PRE> <P>&nbsp;</P> <H4>Challenge Complete or
Further Review</H4> <P>&nbsp;</P> <P>This GitHub Actions workflow completes the
challenge, triggered by a Power Automate workflow through the <A
href="https://docs.github.com/en/github-ae@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch"
target="_blank" rel="noopener"><CODE>workflow_dispatch</CODE></A> event. Power
Automate sends values of <CODE>prId</CODE>, <CODE>labelsToAdd</CODE>,
<CODE>labelsToRemove</CODE> and <CODE>isMergeable</CODE>.</P> <P>&nbsp;</P>
<PRE>name: On Challenge Completed on: workflow_dispatch: inputs: prId:
description: PR ID required: true default: '' labelsToAdd: description: The
comma delimited labels to add required: true default: record-updated
labelsToRemove: description: The comma delimited labels to remove required: true
default: review-completed isMergeable: description: The value indicating whether
the challenge is mergeable or not. required: true default: 'false' </PRE>
<P>&nbsp;</P> <P>The first action is to add labels to the PR and remove labels
from the PR.</P> <P>&nbsp;</P> <PRE>jobs: update_labels: name: 'Update labels'
runs-on: ubuntu-latest steps: - name: Update labels on PR shell: pwsh run: |
$headers = @{ "Authorization" = "token ${{ secrets.GITHUB_TOKEN }}";
"User-Agent" = "HackaLearn Bot"; "Accept" = "application/vnd.github.v3+json" }
$owner = "devrel-kr" $repository = "HackaLearn" $issueId = "${{
github.event.inputs.prId }}" $labelsToAdd = "${{ github.event.inputs.labelsToAdd
}}" -split "," $body = @{ "labels" = $labelsToAdd } $url =
"https://api.github.com/repos/$owner/$repository/issues/$issueId/labels"
Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body $($body |
ConvertTo-Json) $labelsToRemove = "${{ github.event.inputs.labelsToRemove }}"
-split "," $labelsToRemove | ForEach-Object { $label = $_; $url =
"https://api.github.com/repos/$owner/$repository/issues/$issueId/labels/$label";
Invoke-RestMethod -Method Delete -Uri $url -Headers $headers } </PRE>
<P>&nbsp;</P> <P>And finally, this action merges the PR. If there's an error on
the Power Automate workflow side, the <CODE>isMeargeable</CODE> value MUST be
<CODE>false</CODE>, meaning it won't execute the merge action.</P> <P>&nbsp;</P>
<PRE> merge_pr: name: 'Merge PR' needs: update_labels runs-on: ubuntu-latest
steps: - name: Merge PR if: ${{ github.event.inputs.isMergeable == 'true' }}
shell: pwsh run: | $headers = @{ "Authorization" = "token ${{
secrets.WORKFLOW_DISPATCH_TOKEN }}"; "User-Agent" = "HackaLearn Bot"; "Accept" =
"application/vnd.github.v3+json" } $owner = "devrel-kr" $repository =
"HackaLearn" $issueId = "${{ github.event.inputs.prId }}" $url =
"https://api.github.com/repos/$owner/$repository/pulls/$issueId" $pr =
Invoke-RestMethod -Method Get -Uri $url -Headers $headers $sha = $pr.head.sha
$title = "" $message = "" $merge = "squash" $body = @{ "commit_title" = $title;
"commit_message" = $message; "sha" = $sha; "merge_method" = $merge; } $url =
"https://api.github.com/repos/$owner/$repository/pulls/$issueId/merge"
Invoke-RestMethod -Method Put -Uri $url -Headers $headers -Body $($body |
ConvertTo-Json) </PRE> <P>&nbsp;</P> <H3>Power Automate Workflow</H3>
<P>&nbsp;</P> <P>The challenge approval workflow calls this Power Automate
workflow. Firstly, it checks the type of challenges. If no challenge is
identified, it does nothing.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-08.png"
border="0" alt="Challenge Update Flow 1" /></P> <P>&nbsp;</P> <P>If the
challenge is linked to the registered participant's GitHub ID, update the record
on <A
href="https://www.microsoft.com/microsoft-365/microsoft-lists?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft Lists</A>; otherwise, do nothing.</P>
<P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-09.png"
border="0" alt="Challenge Update Flow 2" /></P> <P>&nbsp;</P> <P>Finally, it
sends a confirmation email using a different email template based on the number
of challenges completed.</P> <P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-10.png"
border="0" alt="Challenge Update FLow 3" /></P> <P>&nbsp;</P> <H2>The Others:
Other Power Automate Workflows</H2> <P>&nbsp;</P> <P>Previously described Power
Automate workflows are triggered by GitHub Actions for integration. However,
there are other workflows only for management purposes. As most processes are
similar to each other, I'm not going to describe them all. Instead, it's the
total number of workflows that I used for the event, which is 15 in total.</P>
<P>&nbsp;</P> <P><IMG
src="https://sa0blogs.blob.core.windows.net/devkimchi/2021/08/running-hackathon-by-yourself-with-gha-m365-and-pp-04.png"
border="0" alt="List of Power Automate Workflows" /></P> <P>&nbsp;</P> <P>Now
all my business processes are fully automated. As an operator, I can focus on
questions and PR reviews, but nothing else.</P> <P>&nbsp;</P> <H2>The Stats</H2>
<P>&nbsp;</P> <P>The HackaLearn even was over! Here are some numbers related to
this HackaLearn event.</P> <P>&nbsp;</P> <UL> <LI><CODE>14</CODE>: Number of
days for HackaLearn</LI> <LI><CODE>171</CODE>: Total number of participants</LI>
<LI><CODE>62</CODE>: Total number of participants who completed Cloud Skills
Challenge</LI> <LI><CODE>21</CODE>: Total number of teams who uploaded social
media posts</LI> <LI><CODE>17</CODE>: Total number of teams who completed
building Azure Static Web Apps</LI> <LI><CODE>16</CODE>: Total number of teams
who completed provided their GitHub repository</LI> <LI><CODE>20</CODE>: Total
number of teams who published their blog post as a retrospective</LI>
<LI><CODE>13</CODE>: Total number of teams who completed all six challenges</LI>
</UL> <P>&nbsp;</P> <H2>The Lessons Learnt</H2> <P>&nbsp;</P> <P>Surely, there
are many spaces for future improvement. What I've learnt from the automation
exercise are:</P> <P>&nbsp;</P> <UL> <LI> <P><STRONG>Do not assume the way
participants create their PRs is expected</STRONG></P>
<P>:backhand_index_pointing_right:</img> The review automation process should be
as flexible as possible.</P> </LI> <LI> <P><STRONG>Make the review process as
simple as possible</STRONG></P> <P>:backhand_index_pointing_right:</img> The
reviewers should only be required to focus on the PR, not anything else.</P>
</LI> <LI> <P><STRONG>Reviewer should be assigned to a team instead of
individual PRs</STRONG></P> <P>:backhand_index_pointing_right:</img> If a
reviewer is assigned to a team, the chance for merge conflicts will dramatically
decrease.</P> </LI> <LI> <P><STRONG>Make Power Automate workflows as modular as
possible</STRONG></P> <P>:backhand_index_pointing_right:</img> There are many
similar sequence of actions across many workflows.<BR
/>:backhand_index_pointing_right:</img> They can be modularised into either
sub-workflows or custom APIs through custom connectors.</P> </LI> </UL>
<P>&nbsp;</P> <H2>The Side Events</H2> <P>&nbsp;</P> <P>During the event, we ran
live hands-on workshops for <A href="https://github.com/features/actions"
target="_blank" rel="noopener">GitHub Actions</A> and <A
href="https://docs.microsoft.com/azure/static-web-apps/overview?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Azure Static Web Apps</A> led by a <A
href="https://githubcampus.expert" target="_blank" rel="noopener">GCE</A> and an
<A href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">MLSA</A> respectively.</P> <P>&nbsp;</P> <UL>
<LI> <P>Live Hands-on: GitHub Actions (in Korean)</P> <P><IFRAME
src="https://www.youtube.com/embed/e_elLW6uNSc" width="710" height="399"
allowfullscreen="allowfullscreen" loading="lazy"></IFRAME></P> </LI> <LI>
<P>Live Hands-on: Azure Static Web Apps (in Korean)</P> <P><IFRAME
src="https://www.youtube.com/embed/Hxkv6AjAisY" width="710" height="399"
allowfullscreen="allowfullscreen" loading="lazy"></IFRAME></P> </LI> <LI>
<P>Live Hands-on: Azure Static Web Apps with Headless CMS (in Korean)</P>
<P><IFRAME src="https://www.youtube.com/embed/x3j3mDblqMY" width="710"
height="399" allowfullscreen="allowfullscreen" loading="lazy"></IFRAME></P>
</LI> </UL> <P>&nbsp;</P> <HR /> <P>&nbsp;</P> <P>So far, I summarised what I've
learnt from this event and what I've done for workflow automation, using <A
href="https://github.com/features/actions" target="_blank" rel="noopener">GitHub
Actions</A>, <A
href="https://www.microsoft.com/microsoft-365?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">Microsoft 365</A> and <A
href="https://flow.microsoft.com/?WT.mc_id=power-39037-juyoo" target="_blank"
rel="noopener">Power Automate</A>. Although there are lots of spaces to improve,
I managed to run the online hackathon event with a fully automated process. I
can now do it again in the future.</P> <P>&nbsp;</P> <P>Specially thanks to <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=power-39037-juyoo"
target="_blank" rel="noopener">MLSAs</A> and <A
href="https://githubcampus.expert" target="_blank" rel="noopener">GCEs</A> to
review all the PRs, and mentors who answered questions from participants.
Without them, regardless of the fully automated workflows, this event wouldn't
be successfully running.</P> <P>&nbsp;</P> <P style="text-align: center;">This
article was originally published on <A
href="https://devkimchi.com/2021/08/20/running-hackathon-by-yourself-with-gha-m365-and-pp/"
target="_blank" rel="noopener">Dev Kimchi</A>.</P></description>
<pubDate>Mon, 23 Aug 2021 00:00:00 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hackathon-as-a-service-with-github-actions-microsoft-365-and/ba-p/2671063</guid>
<dc:creator>justinyoo</dc:creator>
<dc:date>2021-08-23T00:00:00Z</dc:date>
...
</item>
<item>
<title>New module: Build Serverless apps with Azure and Go</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-build-serverless-apps-with-azure-and-go/ba-p/2662657</link>
<description><P><SPAN>Serverless architecture is a type of application
development that allows you to run logic in the cloud without having to worry
about building server infrastructure. Azure Functions implements a serverless
architecture that runs your code on demand without requiring you to manually
provision servers.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To author Azure Functions
in Go or Rust, for example, you use a feature called custom handlers. Custom
handlers allow you to bring almost any language to Azure Functions.</SPAN></P>
<P>&nbsp;</P> <H2 id="what-are-custom-handlers">What are custom handlers?</H2>
<P>At its core, a custom handler is a web server. The web server receives events
from the Functions host. You then have an opportunity to write code in your
preferred language to respond to the events.</P> <P>With custom handlers, you
can use any language that supports HTTP primitives. That's nearly any
language.</P> <P>&nbsp;</P> <H2>An Azure Function app using Go</H2>
<P>&nbsp;</P> <P>To create such an app, you only need to listen to HTTP events +
make some minor configurations. Here's an example of what the code looks
like:</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">package main import (
"fmt" "io/ioutil" "log" "net/http" "os" ) func helloHandler(w
http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type",
"application/json") if r.Method == "GET" { w.Write([]byte("hello world")) } else
{ body, _ := ioutil.ReadAll(r.Body) w.Write(body) } } func main() {
customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT") if
!exists { customHandlerPort = "8080" } mux := http.NewServeMux() //
mux.HandleFunc("/api/hello", helloHandler) fmt.Println("Go server Listening on:
", customHandlerPort) log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))
}</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>To learn more about how to configure
the app properly and work with things like message queues, have a look at this
module</P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/serverless-go/"
target="_blank" rel="noopener">Build serverless apps with Go and custom handlers
- Learn | Microsoft Docs</A></P> <P>&nbsp;</P></description>
<pubDate>Fri, 03 Dec 2021 18:53:58 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-build-serverless-apps-with-azure-and-go/ba-p/2662657</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-12-03T18:53:58Z</dc:date>
...
</item>
<item>
<title>API Management, Power Platform, & Teams Better Together</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/api-management-power-platform-amp-teams-better-together/ba-p/2642915</link>
<description><P aria-level="2"><STRONG><SPAN data-contrast="none">API
Management, Power Platform, &amp; Teams Better Together</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P aria-level="2"><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the webinar of the month for the Low-code application development
(LCAD) on Azure solution.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">LCAD on&nbsp;Azure
demonstrates&nbsp;the robust development capabilities of integrating low-code
Microsoft Power Apps and the Azure products you may be familiar with.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">This month’s webinar is ‘API
Management, Power Platform &amp; Teams: Better Together.’</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In this blog I will briefly
recap&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">Low-code application development on
Azure</SPAN></A><SPAN data-contrast="none">, providing&nbsp;an overview
of&nbsp;Power Platform Development patterns, an overview of Azure API
Management, and&nbsp;Geetha&nbsp;Sivasailam’s&nbsp;demo of API Management’s
integration with Power Platform.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P aria-level="2"><STRONG><SPAN data-contrast="none">What is
Low-code application development on Azure?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">Low-code application development
(LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was created to help
developers build business applications faster with less code, leveraging the
Power Platform, and more specifically Power Apps, yet helping them scale and
extend their Power Apps with Azure services.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_0-1628801638874.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302877i1AC48058FF6D4C09/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_0-1628801638874.png"
alt="riduncan_0-1628801638874.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse&nbsp;employees&nbsp;track incoming inventory.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">That application would take months
to build, test, and deploy, however with Power Apps’ it can take hours to build,
saving time and resources.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">However, say the warehouse employees want the application
to place procurement orders for additional inventory automatically when current
inventory hits a determined low.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In the past that would require
another heavy lift by the development team to rework their previous application
iteration.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Due to the integration of Power Apps
and Azure a professional developer can build an API in Visual Studio (VS) Code,
publish it to their Azure portal, and export the API to Power Apps integrating
it into their application as a custom connector.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Afterwards, that same API is
re-usable indefinitely in the Power Apps’ studio, for future use with other
applications, saving the company and developers more time and
resources.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">To learn more,
visit the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">LCAD on Azure page</SPAN></A><SPAN
data-contrast="none">, and to walk through the&nbsp;aforementioned
scenario&nbsp;try the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank"><SPAN data-contrast="none">LCAD on Azure guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_1-1628801638894.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302879i4E2C3ECC5C917E72/image-size/medium?v=v2&amp;px=400"
role="button" title="riduncan_1-1628801638894.jpeg"
alt="riduncan_1-1628801638894.jpeg" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Power Platform Development Patterns</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Expounding on the explanation of low code
application development on Azure, there are other ways to build&nbsp;low code
applications. Below you will see 3 infographics, the first demonstrates the
out-of-box capabilities of Power Platform.&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">The “clients” are the devices on which the end
user consumes the UI and logic, typically a web and mobile device. The UI and
logic are built in Power Apps&nbsp;and&nbsp;Power Automate, these are the canvas
apps and workflow screens that you will see in Geetha’s demo.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">The UI and logic are built upon the
data either stored in Dataverse or&nbsp;connected to 1</SPAN><SPAN
data-contrast="auto">st</SPAN><SPAN data-contrast="auto">&nbsp;and 3</SPAN><SPAN
data-contrast="auto">rd</SPAN><SPAN data-contrast="auto">&nbsp;party services
such as SharePoint, Office 365, and Twitter as seen below.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_2-1628801638896.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302878iA662FE39CF862134/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_2-1628801638896.png"
alt="riduncan_2-1628801638896.png" /></span></P> <P><SPAN
data-contrast="auto">However, as alluded to in the opening section, there are
times professional development is necessary. This is typically because the low
code application requires connectivity that doesn’t come out of the box. These
are what are referred to as custom connectors.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">There are 5 steps to building a custom connector. First is
building and securing your API, describing that API and defining the connector,
using your connector, and if you feel inclined you can share and certify that
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">If you’re
looking to learn how to build a custom connector inside a Power App, check out
the documentation on&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/connectors/custom-connectors/define-blank"
target="_blank"><SPAN data-contrast="none">Create a custom connector from
scratch | Microsoft Docs.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_3-1628801638898.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302881i660F447BC71F54E7/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_3-1628801638898.png"
alt="riduncan_3-1628801638898.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Lastly, one of the ways Microsoft is enabling low code
application development to be leveraged further you can use Power Apps and Power
Automate in Teams. Custom connectors can be exposed to apps in Teams via Azure
API Management.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">To build
the API Management connector from scratch you create a test API, add an
operation to the test API, add inbound policy to mock API response, add
definition for API response schema, secure API Management with subscription
keys, export API management as a custom connector to a Teams environment and
consume the API from Power Apps &amp; Power Automate in the same Teams’
environment.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_5-1628801638899.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302880i529BA1F8E84A3AA9/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_5-1628801638899.png"
alt="riduncan_5-1628801638899.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">If you already have Teams subscriptions, Power Apps
licenses, and Azure&nbsp;API Management subscriptions there is no additional
cost to import your custom connectors in Teams.&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="APIM-to-Teams.gif" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302887i96D8DDB62A37ADEF/image-size/large?v=v2&amp;px=999"
role="button" title="APIM-to-Teams.gif" alt="APIM-to-Teams.gif"
/></span></SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">This integration enables the end user to access UI and
Logic easier and faster than before.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Azure API Management Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In this webinar Geetha does a great job covering
the benefits of Azure API Management. For those unfamiliar with Azure
API&nbsp;Management,&nbsp;it is a SaaS solution for controlling access&nbsp;and
governance nearly maintenance free.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">It allows you to manage thousands of APIs and backend
services, maintenance free, products evolving endpoints evolving you can tweak
them. Rather than trying to wrap and maintain APIs you can&nbsp;focus on
developing the APIs.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">&nbsp;For more information on Azure API Management look at
the infographic below and check out&nbsp;Geetha’s&nbsp;</SPAN><A
href="https://channel9.msdn.com/Shows/POWERful-Devs/Geetha-Sivasailam-APIM-Power-Platform--Teams-Better-Together"
target="_blank"><SPAN data-contrast="none">webinar</SPAN></A><SPAN
data-contrast="auto">&nbsp;on the&nbsp;POWERful&nbsp;Devs show on Channel
9.</SPAN></P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_6-1628801638902.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302883i5D0A8F5B524B77DF/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_6-1628801638902.png"
alt="riduncan_6-1628801638902.png" /></span></P> <P><STRONG><SPAN
data-contrast="auto">Build an&nbsp;Azure&nbsp;APIM&nbsp;Connector&nbsp;and
Integration into&nbsp;Power Platform Demo</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Geetha’s&nbsp;demo covers building an APIM
connector&nbsp;from scratch in API Management&nbsp;and&nbsp;walks through the
perspective of a citizen or pro developer who wants to proceed with
implementation and testing of API&nbsp;Management.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">The demo covers a scenario in which the&nbsp;API
façade has been designed, but the actual&nbsp;back-end&nbsp;implementation will
come in later or is being developed in parallel.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">She answers questions such as “how can
you&nbsp;mockup&nbsp;API responses&nbsp;and still work with your apps and
flow&nbsp;implementation?”&nbsp;“How can you expose a mocked API via APIM as a
connector and consume that?”&nbsp;Taking you through how to connect a custom
connector in Power Apps and Power Automate.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">She also&nbsp;uses an API service to show the different
ways you can create an API and either start from a blank API or start from a
definition.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">When starting with a definition you can&nbsp;use
an Open API definition, WADL, or WSDL.&nbsp;However, in this demo she
shows&nbsp;how to start from a blank API.&nbsp;She subsequently shows
the&nbsp;APIMSandbox, shown below.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_7-1628801638904.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302884i1D424C27E32C3C8A/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_7-1628801638904.png"
alt="riduncan_7-1628801638904.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">&nbsp;In the&nbsp;frontend, she has a “get” action, and
demonstrates how to mock the get request with a sample mock
text,&nbsp;specifying a&nbsp;“mocktext” definition rather than the raw json you
would get otherwise.&nbsp;The inbound processing, outbound processing, and
backend are where you can specify and define policies.</SPAN></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_8-1628801638906.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302885i2706824190DCFF60/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_8-1628801638906.png"
alt="riduncan_8-1628801638906.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Afterward, Geetha shows how to export the API into Power
Apps or Power Automate.&nbsp;&nbsp;All you&nbsp;must&nbsp;do is select your
Teams’&nbsp;environment, specify a name for it and export it.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">She concludes by&nbsp;demonstrating
how to consume the API in Power Automate, but that same API can be consumed in
Power Apps as well.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_9-1628801638905.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/302886iED4C68C493B1F7F3/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_9-1628801638905.png"
alt="riduncan_9-1628801638905.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Conclusion</SPAN></STRONG></P> <P><SPAN
data-contrast="none">Make sure to watch the&nbsp;</SPAN><A
href="https://channel9.msdn.com/Shows/POWERful-Devs/Geetha-Sivasailam-APIM-Power-Platform--Teams-Better-Together"
target="_blank"><SPAN data-contrast="none">webinar</SPAN></A><SPAN
data-contrast="none">&nbsp;on&nbsp;Channel 9 subscribe to
the&nbsp;POWERful&nbsp;Devs channel&nbsp;to learn more about Power&nbsp;Platform
and Azure integrations.&nbsp;Moreover, look out for news
about&nbsp;the&nbsp;POWERful&nbsp;Devs conference this September&nbsp;which will
cover the roles of citizen developers, professional developers, and&nbsp;fusion
teams.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Resources</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Channel 9:&nbsp;POWERful&nbsp;Devs
link</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://channel9.msdn.com/Shows/POWERful-Devs/Geetha-Sivasailam-APIM-Power-Platform--Teams-Better-Together"
target="_blank"><SPAN data-contrast="none">Geetha Sivasailam - APIM, Power
Platform &amp; Teams Better Together | POWERful Devs | Channel
9&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Low Code Application Development on
Azure</SPAN></STRONG><SPAN data-contrast="none">&nbsp;</SPAN><SPAN>&nbsp;<BR
/></SPAN><A href="https://azure.microsoft.com/en-us/products/powerapps/"
target="_blank"><SPAN data-contrast="none">Microsoft Power Apps on
Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank"><SPAN data-contrast="none">LCAD on Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Learning Resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="http://aka.ms/fusiondevpath" target="_blank"><SPAN
data-contrast="none">Fusion Development learning path</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_blank"><SPAN data-contrast="none">Fusion Development
E-book</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://aka.ms/ppcvscode" target="_blank"><SPAN
data-contrast="none">Power Platform Visual Studio Extension</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P></description>
<pubDate>Thu, 12 Aug 2021 21:31:50 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/api-management-power-platform-amp-teams-better-together/ba-p/2642915</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-08-12T21:31:50Z</dc:date>
...
</item>
<item>
<title>Build Custom Apps with Power Apps Component Framework</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-custom-apps-with-power-apps-component-framework/ba-p/2588515</link>
<description><P aria-level="2"><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the webinar of the month for the Low-code application development
(LCAD) on Azure solution.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">LCAD on Azure is a new solution to demonstrate the robust
development capabilities of integrating low-code Microsoft Power Apps and the
Azure products you may be familiar with.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">This month’s webinar is ‘Build Custom Power Apps with Power
Apps Component Framework.’</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">In this blog I will&nbsp;briefly&nbsp;recap&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development&nbsp;on Azure</SPAN></A><SPAN
data-contrast="none">,&nbsp;provide&nbsp;an overview of&nbsp;how to build a code
component, and&nbsp;how to&nbsp;add a PCF&nbsp;to a Power App.</SPAN></P>
<P>&nbsp;</P> <P aria-level="2"><STRONG><SPAN data-contrast="none">What
is&nbsp;Low-code application
development&nbsp;on&nbsp;Azure?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was
created to help developers build business applications faster with less code,
leveraging the Power Platform, and more specifically Power Apps, yet helping
them scale and extend their Power Apps with Azure services.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_0-1627332157351.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298493i043FCD2B1E002D5D/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_0-1627332157351.png"
alt="riduncan_0-1627332157351.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN><SPAN
data-contrast="none">For example, a pro developer who works for a manufacturing
company would need to build a line-of-business (LOB) application to help
warehouse&nbsp;employees&nbsp;track incoming inventory.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">That application would take months to build, test,
and deploy, however with Power Apps’ it can take hours to build, saving time and
resources.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">However, say the warehouse employees want the
application to place procurement orders for additional inventory automatically
when current inventory hits a determined low.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In the past that would require another heavy lift
by the development team to rework their previous application
iteration.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Due to the integration of Power Apps and Azure a
professional developer can build an API in Visual Studio (VS) Code, publish it
to their Azure portal, and export the API to Power Apps integrating it into
their application as a custom connector.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Afterwards, that same API is re-usable
indefinitely in the Power Apps’ studio, for future use with other applications,
saving the company and developers more time and
resources.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">To learn&nbsp;more,&nbsp;visit the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD&nbsp;on Azure
page</SPAN></A><SPAN data-contrast="none">,&nbsp;and to walk through
the&nbsp;aforementioned&nbsp;scenario&nbsp;try the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on Azure guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_1-1627332157359.jpeg" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298494i9BBBE1E2B225B65F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_1-1627332157359.jpeg"
alt="riduncan_1-1627332157359.jpeg" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">How to Build a Code Component</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Power Component Frameworks are custom code
components that extend your application when out-of-the-box connectors don’t
fully meet your needs. These code components are reusable that can be leveraged
across Power Apps applications.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">These components are all HTML or&nbsp;JavaScript
but&nbsp;can support React and AngularJS as well.&nbsp;For those interested
after reading this blog and watching the webinar, there is a PCF gallery that
houses PCFs made by Microsoft developers and the Power Apps community, for any
developer to leverage.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Feel free to add your own PCFs to the&nbsp;</SPAN><A
href="https://pcf.gallery/" target="_blank" rel="noopener"><SPAN
data-contrast="none">gallery!</SPAN></A></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Code components consist of three
elements:</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">First is&nbsp;the&nbsp;manifest,&nbsp;an XML
document that describes the meta data for the component.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Second is component implementation.
To implement the component, the metadata is stored in the&nbsp;index.ts, also
housing the logic.&nbsp;Additionally, there is a lifecycle to interact with the
Power Apps component or framework.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Therefore, some methods will need to&nbsp;be created to
control the lifecycle of the code component. Those methods are created when you
“init” the project through the CLI.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Third are the resources; tags in the manifest that refer to
the resource that the component requires to implement its’ visualization.
Examples are&nbsp;css, code,&nbsp;img, html, and&nbsp;resx.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">To better understand the PCF
architecture below is an infographic describing the four standard&nbsp;methods
created for you when you “init” the project through the CLI.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_2-1627332157361.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298495i689358527821CA7B/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_2-1627332157361.png"
alt="riduncan_2-1627332157361.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">The next infographic depicts how the methods are invoked
through a Framework Runtime process in a standardized life cycle.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_3-1627332157363.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298496i3F37B5686AE47466/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_3-1627332157363.png"
alt="riduncan_3-1627332157363.png" /></span></P> <P>&nbsp;</P> <P
aria-level="2"><STRONG><SPAN data-contrast="none">What to expect in the
webinar?&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In the webinar&nbsp;</SPAN><SPAN
data-contrast="auto">Cassie&nbsp;Breviu&nbsp;walks you step by step on&nbsp;how
to build a PCF&nbsp;in CLI and Visual Studio&nbsp;that&nbsp;adds&nbsp;a
slider&nbsp;component for&nbsp;Power Apps.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The&nbsp;end user&nbsp;can&nbsp;leverage&nbsp;the
slider&nbsp;when accounting for inventory, inputting customer order quantities,
or a host of other&nbsp;use cases.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">That is one of the great benefits of PCFs, that
they are reusable across Power Apps for a variety of use
cases.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Prior to importing the PCF into her Power App,
Cassie&nbsp;will also demonstrate the necessary steps in the Power Platform
Admin Center to secure her&nbsp;component and&nbsp;set the proper governance
regulations.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P aria-level="2"><STRONG><SPAN
data-contrast="none">Summary&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Make sure to watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-build-apps-Powerapps-component-framework.html?lcid=en-us"
target="_blank" rel="noopener"><SPAN
data-contrast="none">webinar</SPAN></A><SPAN data-contrast="none">&nbsp;to learn
more Power Apps&nbsp;and Power Component Frameworks. Moreover, look out for news
about&nbsp;the&nbsp;POWERful&nbsp;Devs conference this September&nbsp;which will
cover the roles of citizen developers, professional developers, and&nbsp;fusion
teams.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Resources</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Webinar Registration
Link</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://info.microsoft.com/ww-Landing-build-apps-Powerapps-component-framework.html?lcid=en-us"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build Custom
Apps</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Low Code Application
Development&nbsp;on&nbsp;Azure</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN>&nbsp;<BR /></SPAN><A
href="https://azure.microsoft.com/en-us/products/powerapps/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Microsoft Power Apps on
Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on
Azure</SPAN></A><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:276}">&nbsp;</SPAN></P>
<P><STRONG>Learning Resources</STRONG></P> <P><A
href="http://aka.ms/fusiondevpath" target="_self"><STRONG>Fusion Development
learning path</STRONG></A></P> <P><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_self"><STRONG>Fusion Development E-book</STRONG></A></P> <P><A
href="https://aka.ms/ppcvscode" target="_self"><STRONG>Power Platform Visual
Studio Extension</STRONG></A></P> <P>&nbsp;</P></description>
<pubDate>Thu, 12 Aug 2021 20:46:04 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-custom-apps-with-power-apps-component-framework/ba-p/2588515</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-08-12T20:46:04Z</dc:date>
...
</item>
<item>
<title>Winners Announced: Azure IoT Hack for Sustainability</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-iot-hack-for-sustainability/ba-p/2573056</link>
<description><P>Over 300 developers gathered virtually over the course of 7
weeks to participate in the <A href="https://iotsustainabilityhack.devpost.com/"
target="_blank" rel="noopener">Microsoft Azure IoT Hack for Sustainability</A>
challenge. Participants were asked to join Microsoft in advancing sustainability
by understanding how to use technology to measure and minimize environmental
impact. The hackathon specifically focused on using Azure IoT technologies that
will give endless possibilities: collect real time data, capture rich
information using cameras and machine learnings, create real time insights, and
automated action without human intervention.&nbsp;</P> <P>&nbsp;</P> <P>Let's
take a look at the top 6 winning projects below:</P> <P>&nbsp;</P> <P><FONT
size="5"><STRONG><U>1st Place:<A
href="https://devpost.com/software/stemm-network" target="_blank"
rel="noopener"> STEM Network</A></U></STRONG></FONT></P> <P>Created by: Advyth
Ramachandran, Pranav Bhusari, Joshua Qin, Justin Shao</P> <P>The STEM Network -
Street Tree Monitoring Network - consists of moisture sensors for
public/municipal trees, designed to reduce the mortality of saplings and improve
urban reforestation outcomes.</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=cFhvWSK0l2M" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/cFhvWSK0l2M/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><STRONG><U>2nd
Place:<A href="https://devpost.com/software/air_quality_bonanza" target="_blank"
rel="noopener"> Air Quality Dashboard Analytics</A></U></STRONG></FONT></P>
<P>Created by: Tarun Hari, William Short, Michael Huang, Martin Fabbri</P>
<P>Empowered by the Azure Maps and IoT Platforms, the Air Quality Dashboard
Analytics deliver actionable insights to citizens, homeowners, and cities. Think
Trulia's crime maps, but for Air Quality!</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=uzA7f0Z_o9A" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/uzA7f0Z_o9A/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><STRONG><U>3rd
Place:<A href="https://devpost.com/software/aquasave-ey6f2u" target="_blank"
rel="noopener"> AquaSave</A></U></STRONG></FONT></P> <P>Created by: Aparna
Ghantasala, Alexandra Talsky, Praveen Chandra, Ryan Curtis, Amarnath
Tadigadapa</P> <P>Motivating people to recycle water and minimize water
consumption, so that communities can work towards a water-positive future.</P>
<P>&nbsp;</P> <P><LI-VIDEO vid="https://www.youtube.com/watch?v=61w27Fo2slQ"
align="center" size="small" width="200" height="113" uploading="false"
thumbnail="http://i.ytimg.com/vi/61w27Fo2slQ/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT
size="5"><STRONG><U>Honorable Mentions</U></STRONG></FONT></P> <P><FONT
size="5"><U><STRONG><A href="https://devpost.com/software/hydrofarm"
target="_blank" rel="noopener">HydroFarm</A></STRONG></U></FONT></P> <P>Created
by: Germaine Ng, Wesley Muthemba, Yifei Fang, Guanting Li, Hernan Herrera</P>
<P>About 70 percent of all the world's freshwater withdrawals go towards
irrigation uses. HydroFarm aims to improve water use efficiency without
decreasing yield.</P> <P>&nbsp;</P> <P><A
href="https://devpost.com/software/the-smart-valve-2049" target="_blank"
rel="noopener"><FONT size="5"><STRONG><U>The Smart Valve
2049</U></STRONG></FONT></A></P> <P>Created by: Derek Jamison, Brian Dinh</P>
<P>State-of-the-art water management using Azure IoT Central, Azure Logic Apps,
Web APIs &amp; Raspberry Pi (plus sensors). Your outdoor plants are watered
based on needs (moisture, weather, forecast, etc).</P> <P>&nbsp;</P> <P><A
href="https://devpost.com/software/foodcy-v2fi8k" target="_blank"
rel="noopener"><FONT size="5"><STRONG><U>Foodcy</U></STRONG></FONT></A></P>
<P>Created by: Miko Aro</P> <P>Foodcy app connects local businesses like
bakeries and supermarkets with residents and local shelters so they can reduce
surplus food. It also uses AI technology to reduce food waste in the
kitchen.</P> <P>&nbsp;</P> <P><U><STRONG><FONT size="5">Thank
You</FONT></STRONG></U></P> <P>On behalf of the Microsoft U.S. Azure team, I'd
like to thank all of the participants, and congratulate the winners on a job
well done!</P> <P>&nbsp;</P> <P>Thank you to the judges who volunteered their
time to give back to the community! Shout out to <STRONG>Amit Agrawal</STRONG>
<LI-USER uid="50703"></LI-USER>&nbsp;, <STRONG>Diana Phillips</STRONG>,
<STRONG>Lucio Tiberi</STRONG>, <STRONG>Monica Rodriquez</STRONG>, <STRONG>Pamela
Cortez</STRONG> <LI-USER uid="263511"></LI-USER>&nbsp;, <STRONG>Rae
Lyon</STRONG> <LI-USER uid="685674"></LI-USER>&nbsp;, <STRONG>Sarah
Maston</STRONG>&nbsp;<LI-USER uid="153349"></LI-USER>&nbsp;</P> <P>&nbsp;</P>
<P><U><STRONG><FONT size="5">Coming up</FONT></STRONG></U></P> <P>Don't miss out
on future hackathon events! Sign up for the <A
href="https://azure.microsoft.com/en-us/resources/join-the-azure-developer-community/"
target="_blank" rel="noopener">Microsoft.Source Newsletter</A> to receive a
regular digest of relevant technical content, events, and training.</P>
<P>&nbsp;</P></description>
<pubDate>Wed, 21 Jul 2021 21:55:41 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/winners-announced-azure-iot-hack-for-sustainability/ba-p/2573056</guid>
<dc:creator>NinaSui</dc:creator>
<dc:date>2021-07-21T21:55:41Z</dc:date>
...
</item>
<item>
<title>New LEARN modules: Write your first code in F#, Write your first F#
programs</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learn-modules-write-your-first-code-in-f-write-your-first-f/ba-p/2569795</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Screenshot 2021-07-21 at 11.42.54.png"
style="width: 747px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297341i627E194D17ACB625/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-07-21 at 11.42.54.png" alt="Screenshot
2021-07-21 at 11.42.54.png" /></span></P> <P>F# is an open-source,
cross-platform programming language that makes it easy to write succinct,
performant, robust, and practical code.</P> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#%C2%A0references"
target="_blank" rel="noopener" name="%C2%A0references"></A>References</H2>
<P>&nbsp;</P> <UL> <LI><STRONG>LEARN module</STRONG><SPAN>&nbsp;</SPAN>The first
F# module of many was just published on LEARN, check it out<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-steps/"
target="_blank">Take your first steps with F#</A></LI> <LI><STRONG>LEARN
module</STRONG><SPAN>&nbsp;</SPAN>The second module just
published.<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-program/"
target="_blank">Write your first F# programs</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/dotnet/fsharp/" target="_blank">F#
docs</A></LI> </UL> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#%C2%A0why-f"
target="_blank" rel="noopener" name="%C2%A0why-f"></A>&nbsp;</H2> <H2>Why
F#?</H2> <P>There are many language features and aspects of the F# language that
make it easy to be productive when writing code:</P> <UL>
<LI><STRONG>Succinct</STRONG>: You write less code with F# that's also expressed
in a clear manner.</LI> <LI><STRONG>Performant</STRONG>: F# comes with built-in
parallelism and concurrency. It also uses the fact that it's part of the .NET
runtime to speed things up.</LI> <LI><STRONG>Robust</STRONG>: There are language
constructs that makes the code fault tolerant and robust like immutable by
default, null value management and more.</LI> <LI><STRONG>Supports multiple
programming paradigms</STRONG>: F# lets you choose the patterns and practices
most effective for solving problems by providing strong support for functional
and object programming paradigms.</LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#how-do-i-get-started"
target="_blank" rel="noopener" name="how-do-i-get-started"></A>How do I get
started?</H2> <P>There are a few things you need to get started.</P> <UL>
<LI><STRONG>.NET SDK</STRONG>. You need to install the .NET SDK to be able to
buiild, run, test and also create F# projects. You can find
the<SPAN>&nbsp;</SPAN><A href="https://dotnet.microsoft.com/download"
target="_blank" rel="noopener">F# SDK install</A><SPAN>&nbsp;</SPAN>here</LI>
<LI><STRONG>Ionide</STRONG>. It's a VS Code plugin. It's not necessary to
install, but it will give you things like Intellisense, tooltips, codelens,
error highlight and more.</LI> </UL> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#your-first-code"
target="_blank" rel="noopener" name="your-first-code"></A>Your first code</H2>
<P>You can start writing F# by using the REPL called FSI, you can also scaffold
an F# project using
the<SPAN>&nbsp;</SPAN><CODE>dotnet</CODE><SPAN>&nbsp;</SPAN>executable.</P>
<H3><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#create-a-project"
target="_blank" rel="noopener" name="create-a-project"></A>Create a project</H3>
<P>You create a project
using<SPAN>&nbsp;</SPAN><CODE>dotnet</CODE><SPAN>&nbsp;</SPAN>like so:</P>
<P>&nbsp;</P> <LI-CODE lang="bash">dotnet new console --language F# -o
MyFSharpApp</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>Then you get a project with
files:</P> <UL> <LI><STRONG>Program.fs</STRONG>, your entrypoint file</LI>
<LI><STRONG>MyFSharpApp.csproj</STRONG>, your project file that contains
everything it needs to know to build the project like dependencies for
example.</LI> </UL> <H3><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#what-does-the-code-look-like"
target="_blank" rel="noopener" name="what-does-the-code-look-like"></A>What does
the code look like?</H3> <P>Here you have the code
of<SPAN>&nbsp;</SPAN><EM>Program.fs</EM>. Itt contains the
functions<SPAN>&nbsp;</SPAN><CODE>from()</CODE><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><CODE>main()</CODE>.<SPAN>&nbsp;</SPAN><CODE>main()</CODE><SPAN>&nbsp;</SPAN>is
the entry point of the app, as seen
by<SPAN>&nbsp;</SPAN><CODE>[&lt;EntryPoint&gt;]</CODE>.</P> <P>&nbsp;</P>
<LI-CODE lang="fsharp">open System // Define a function to construct a message
to print let from whom = sprintf "from %s" whom [&lt;EntryPoint&gt;] let main
argv = let message = from "F#" // Call the function printfn "Hello world %s"
message 0 // return an integer exit code</LI-CODE> <P>&nbsp;</P>
<P>The<SPAN>&nbsp;</SPAN><CODE>from()</CODE><SPAN>&nbsp;</SPAN>function takes
the arg<SPAN>&nbsp;</SPAN><CODE>whom</CODE><SPAN>&nbsp;</SPAN>and the function
body prints a string using the
function<SPAN>&nbsp;</SPAN><CODE>sprintf</CODE>.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/write-your-first-code-in-f-36gl#how-do-i-learn-more"
target="_blank" rel="noopener" name="how-do-i-learn-more"></A>How do I learn
more?</H2> <P>&nbsp;</P> <UL> <LI><STRONG>LEARN
module</STRONG><SPAN>&nbsp;</SPAN>The first F# module of many was just published
on LEARN, check it out<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-steps/"
target="_blank">Take your first steps with F#</A></LI> <LI><STRONG>LEARN
module</STRONG><SPAN>&nbsp;</SPAN>The second module just
published.<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-gb/learn/modules/fsharp-first-program/"
target="_blank">Write your first F# programs</A></LI> <LI><A
href="https://docs.microsoft.com/en-us/dotnet/fsharp/" target="_blank">F#
docs</A></LI> </UL></description>
<pubDate>Fri, 23 Jul 2021 10:36:18 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-learn-modules-write-your-first-code-in-f-write-your-first-f/ba-p/2569795</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-07-23T10:36:18Z</dc:date>
...
</item>
<item>
<title>An Illustrated Guide to Fusion Development</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-illustrated-guide-to-fusion-development/ba-p/2567146</link>
<description><P><FONT size="5">1. Introduction<BR /></FONT></P> <P><FONT
size="4">If you've attended any flagship Microsoft event, you've likely heard
CEO Satya Nadella talk about&nbsp;<STRONG>Tech Intensity</STRONG> and the
importance of&nbsp;<STRONG>Fusion teams&nbsp;</STRONG>for digital transformation
at scale. But what do those words mean? And how does this relate to concepts
like&nbsp;<STRONG>low-code development</STRONG> and related technologies
like&nbsp;<STRONG>Power Platform</STRONG>? Here are three resources that can
help you learn:<BR /><BR /></FONT></P> <OL> <LI><FONT size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development Learning Path</A></STRONG>&nbsp;- takes you
from concepts (fusion teams, low code) to code (Power Apps components,
OpenAPI-enabled Web APIs, integration with API Management and usage in Power
Apps) with hands-on exercises and knowledge checks.</FONT></LI> <LI><FONT
size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development e-Book</A></STRONG> - a guide that summarizes
how fusion teams (of citizen developers and professional developers) can work
together to build complex, fully-functional business applications using low-code
development techniques, and combining Power Apps with Azure
services.</FONT></LI> <LI><FONT size="4"><STRONG><A
href="https://aka.ms/AzureFunctionsOnDemand" target="_self">Azure Functions:
OpenAPI and Power Platforms Event</A>&nbsp;</STRONG>- a 2-hour live-streamed
event with sessions covering core concepts (Power Apps, Power Fx, OpenAPI, Azure
Functions) with interactive demos showcasing useful integrations for a fusion
development workflow. Click below to visit the event page and watch the session
replays!<BR /><BR /><A href="https://aka.ms/AzureFunctionsOnDemand"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="AzureFunctionsEventSessions.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297177i47090CD07E885E10/image-size/large?v=v2&amp;px=999"
role="button" title="AzureFunctionsEventSessions.png"
alt="AzureFunctionsEventSessions.png" /></span></A></FONT></LI> </OL>
<P>&nbsp;</P> <P><FONT size="5">2. An Illustrated Guide to Fusion
Development</FONT></P> <P>&nbsp;</P> <P><FONT size="4">If you're a visual or
visual-spatial learner, you might find it helpful to get "the big picture"
before you dive into the step-by-step progression of the learning paths. So
today, I want to share one more resource that can help in this context -- this
illustrated guide that visually summarizes the&nbsp;<STRONG><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development Learning Path</A>.</STRONG>&nbsp;</FONT></P>
<P><FONT size="4"><BR /><A
href="https://aka.ms/visual/fusion-dev-path/illustrated" target="_blank"
rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="VisualGuide-FusionDevPath-DevTo.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297178i84E63E8EECAF3991/image-size/large?v=v2&amp;px=999"
role="button" title="VisualGuide-FusionDevPath-DevTo.png"
alt="VisualGuide-FusionDevPath-DevTo.png" /></span></A></FONT></P> <P>&nbsp;</P>
<P><FONT size="4">&nbsp;Click on the image to get access to a <A
href="https://aka.ms/visual/fusion-dev-path/illustrated"
target="_self">higher-resolution (poster-sized) version</A> of the guide that
can be printed out or used as desktop wallpaper. </FONT></P> <P>&nbsp;</P>
<P><FONT size="5">3. Using The Illustrated Guide on your learning
journey</FONT></P> <P><SPAN style="font-size: large; font-family: inherit;"><BR
/>Use this guide as a pre-read (to get a sense of terms, topics and
flow&nbsp;</SPAN><STRONG style="font-size: large; font-family:
inherit;">before</STRONG><SPAN style="font-size: large; font-family: inherit;">
you start the learning path. Then revisit the guide&nbsp;</SPAN><STRONG
style="font-size: large; font-family: inherit;">after</STRONG><SPAN
style="font-size: large; font-family: inherit;"> completing the path, to
identify any gaps and reinforce learned concepts. </SPAN></P> <P>&nbsp;</P>
<P><SPAN style="font-size: large; font-family: inherit;">Every cell in this
illustration maps to a related unit or module within that learning path. By
checking out the visual before and after you complete the relevant section, you
might find yourself making connections or seeing patterns that help you remember
that concept better, or see it in a new perspective. <STRONG>For
instance:&nbsp;</STRONG>look at the examples below.</SPAN><BR /><BR /></P>
<TABLE border="1" width="100%"> <TBODY> <TR> <TD width="50%"> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="TechIntensity.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297185i6C1817C2C1E0F3C1/image-size/large?v=v2&amp;px=999"
role="button" title="TechIntensity.png" alt="TechIntensity.png" /></span></P>
<P>&nbsp;</P> </TD> <TD width="50%"> <P><STRONG><FONT size="4">What is Tech
Intensity?</FONT></STRONG></P> <P><FONT size="4">It's about three dimensions
(organizational trust, individual capability &amp; technological readiness) that
signal successful&nbsp;<EM>adoption</EM> of technology to power digital
transformation.</FONT></P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/transform-business-software-authoring-with-fusion-dev/2-tech-intensity?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> <TR> <TD width="50%"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="FusionDevProcess.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297184iC478E79A4FB62458/image-size/large?v=v2&amp;px=999"
role="button" title="FusionDevProcess.png" alt="FusionDevProcess.png"
/></span></TD> <TD width="50%"> <P><STRONG><FONT size="4">What is Fusion
Development?</FONT></STRONG></P> <P><FONT size="4">It's about breaking the silos
between citizen devs and professional devs, enabling them to work closely
together to build apps that solve real business needs or challenges.</FONT></P>
<P><A
href="https://docs.microsoft.com/en-us/learn/modules/transform-business-software-authoring-with-fusion-dev/4-fusion-development-process?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> <TR> <TD width="50%"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="LowCode.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297186iEDA3C6D214CBC7B1/image-size/large?v=v2&amp;px=999"
role="button" title="LowCode.png" alt="LowCode.png" /></span></TD> <TD
width="50%"> <P><STRONG><FONT size="4">What is Low Code?</FONT></STRONG></P>
<P><FONT size="4">It's about removing barriers and enabling more actions with
less code (e.g., using drag-and-drop UI, scripting languages, declarative
interfaces etc.) - so that&nbsp;<EM>anyone</EM> on the team can contribute
meaningfully to their app development process.</FONT></P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/understanding-low-code-as-a-traditional-developer/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> <TR> <TD width="50%"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="power-apps.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297183iFBCFF6B8E5E60EB7/image-size/large?v=v2&amp;px=999"
role="button" title="power-apps.png" alt="power-apps.png" /></span></TD> <TD
width="50%"> <P><STRONG><FONT size="4">What is Power Apps?</FONT></STRONG></P>
<P><FONT size="4">Part of the Power Platforms product suite, it enables citizen
developers to rapidly build mobile and web apps, while pro-devs can craft custom
APIs, data connectors, and event-driven workflows - to support their fusion team
development process.</FONT></P> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/understanding-low-code-as-a-traditional-developer/2-what-is-low-code?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_blank" rel="noopener"><STRONG><FONT size="3">Learn
More</FONT></STRONG></A></P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P>
<P><FONT size="5"><BR />4. Summary<BR /></FONT></P> <P><FONT size="4">Thanks for
reading! I hope you find this illustrated guide useful to you in your learning
journey - as a citizen developer or professional developer exploring fusion
development, or just as a curious technologist eager to learn about emerging
technologies and paradigms.</FONT></P> <P>&nbsp;</P> <P><FONT size="4">Have
feedback for me in what could make the illustrations better for your learning
style? Leave a comment below! I would love to hear from you. Want more visual
guides and visual storytelling content - <A
href="https://twitter.com/sketchthedocs" target="_blank" rel="noopener">follow
me&nbsp;</A>@SketchTheDocs.<BR /><BR />And don't forget to check out these three
resources to skill up on Fusion Development:<BR /></FONT></P> <OL> <LI><FONT
size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development Learning Path</A></STRONG>&nbsp;</FONT></LI>
<LI><FONT size="4"><STRONG><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/?WT.mc_id=azurefunctionsonlearntv-35831-ninarasi"
target="_self">Fusion Development e-Book </A></STRONG> </FONT></LI> <LI><FONT
size="4"><STRONG><A href="https://aka.ms/AzureFunctionsOnDemand"
target="_self">Azure Functions: OpenAPI and Power Platforms
Event</A>&nbsp;&nbsp;</STRONG>(session replays)</FONT></LI> </OL> <P><FONT
size="4">Happy learning trails!</FONT></P> <P>&nbsp;</P></description>
<pubDate>Tue, 20 Jul 2021 22:09:34 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/an-illustrated-guide-to-fusion-development/ba-p/2567146</guid>
<dc:creator>nityan</dc:creator>
<dc:date>2021-07-20T22:09:34Z</dc:date>
...
</item>
<item>
<title>New module: Introduction to testing in .NET</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-introduction-to-testing-in-net/ba-p/2567743</link>
<description><P>Testing is crucial part of software development. We want to make
sure the software we ship is as tested as much as possible. However, there are
many ways to test, and the scenario and the application is usually what
determines what the best approach is. Upskill your testing knowledge and get a
good high-level view of all types of testing that exist, so you are better
informed how to approach testing for your next program - cause you do test
right?</P> <P>&nbsp;</P> <P>This module covers:</P> <P>&nbsp;</P> <UL>
<LI>Evaluate if testing is right for your scenarios.</LI> <LI>Describe how
different types of testing, the testing pyramid, and different testing schools
of thought answer the demands of modern development.</LI> </UL> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screenshot 2021-07-20 at 21.15.57.png" style="width: 869px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297160i7FD40D3597FAE6FE/image-size/large?v=v2&amp;px=999"
role="button" title="Screenshot 2021-07-20 at 21.15.57.png" alt="Screenshot
2021-07-20 at 21.15.57.png" /></span></P> <P>Check it out: <A
href="https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-concepts/"
target="_self">https://docs.microsoft.com/en-us/learn/modules/visual-studio-test-concepts/</A></P></description>
<pubDate>Tue, 20 Jul 2021 20:21:15 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-module-introduction-to-testing-in-net/ba-p/2567743</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-07-20T20:21:15Z</dc:date>
...
</item>
<item>
<title>Hardening an ASP.NET container running on Kubernetes</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hardening-an-asp-net-container-running-on-kubernetes/ba-p/2542224</link>
<description><P>In my day to day job, I often stumbled upon a surprising fact:
many ASP.NET Core (or .NET 5) K8s deployments are too permissive when it comes
to the execution context. Basically, most deployments are not hardened properly,
and I see countless ASP.NET containers running as root. Admitedly, there is a
lack of guidance from Microsoft in that matter. At the time of writing, I
challenge you to find a single source of truth (feel free to add it in comment
if I missed any), <EM>endorsed by Microsoft</EM> on how to to harden an ASP.NET
Docker image. You'll rather stumble upon GitHub issues and questions here and
there.</P> <P>As you know, ASP.NET relies on the built-in Kestrel web server and
most ASP.NET applications are either MVC, either Web APIs, meaning that they are
unlikely going to leverage operating system level capabilities that require high
privileges.</P> <P>That said, if you take the simplest ASP.NET web API project
and choose the default Visual Studio 2019 template, you'll end up with the
following Dockerfile:</P> <P>&nbsp;</P> <LI-CODE lang="bash">FROM
mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE
80 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY
["simpleapi/simpleapi.csproj", "simpleapi/"] RUN dotnet restore
"simpleapi/simpleapi.csproj" COPY . . WORKDIR "/src/simpleapi" RUN dotnet build
"simpleapi.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet
publish "simpleapi.csproj" -c Release -o /app/publish FROM base AS final WORKDIR
/app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "simpleapi.dll"]
</LI-CODE> <P>&nbsp;</P> <P>If you build an image and run this, you must run it
as root. If you don't, by requesting it specifically in your deployment through
a securityContext:</P> <P>&nbsp;</P> <LI-CODE lang="bash">securityContext:
runAsNonRoot: true </LI-CODE> <P>&nbsp;</P> <P>You'll encounter the following
issue:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="stephaneey_0-1626175023077.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295431i6148D566A5AD1758/image-size/medium?v=v2&amp;px=400"
role="button" title="stephaneey_0-1626175023077.png"
alt="stephaneey_0-1626175023077.png" /></span></P> <P>Describing the pod with
Kubectl quickly shows that the container tried to start as root:</P>
<P>&nbsp;</P> <LI-CODE lang="bash">Warning Failed 94s (x8 over 2m53s) kubelet,
aks-agentpool-38789445-vmss000001 Error: container has runAsNonRoot and image
will run as root</LI-CODE> <P>&nbsp;</P> <P>What K8s tells you is that the image
wants to start as root because no other user has been defined, so it defaults to
root. But, because you explicitely added a <EM>runAsNonRoot</EM> instruction, it
can't start it. Never mind, just specify a user and it should work, right? Let's
try:</P> <P>&nbsp;</P> <LI-CODE lang="bash">securityContext: runAsNonRoot: true
runAsUser: 1000 runAsGroup: 2000</LI-CODE> <P>&nbsp;</P> <P>By the way, if you
wonder, when no user is specified in the Docker image itself or through a
securityContext, user 0 is assumed and 0 stands for root. Linux needs to have a
user identifier (not name) as an input. Trying with the above config results in
another error:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="stephaneey_1-1626175696989.png" style="width:
400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295432iD0C4482CA431535E/image-size/medium?v=v2&amp;px=400"
role="button" title="stephaneey_1-1626175696989.png"
alt="stephaneey_1-1626175696989.png" /></span></P> <P>This time it goes further
as the container starts, crashes and restarts. Looking at the container logs
with Kubectl logs reveals the problem (shortened for brevity):</P> <P>&nbsp;</P>
<LI-CODE lang="bash">←[41m←[1m←[37mcrit←[39m←[22m←[49m:
Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel.
System.Net.Sockets.SocketException (13): Permission denied</LI-CODE>
<P>&nbsp;</P> <P>This could make you think that being root is required to start
Kestrel but that is not the culprit. The problem is the port number it tries to
bind to, which in the default image, is either 80 either 443. Both ports are
below 1024 and today, you must be <EM>root</EM> to bind to a port that is &lt;
1024. In Linux, the alternative to bind to a low port while not being root is to
use Linux capabilities. However, ambient capabilities <A
href="https://github.com/kubernetes/kubernetes/issues/56374" target="_self">are
still not available</A> in K8s. So, first take away is: do not use port 80 or
443 in your ASP.NET Core images. Whatever setup you are using, I don't see how
you could justify to bind to either of these ports. Most webapps/APIs are:</P>
<UL> <LI>Proxied by a K8s Service which can listen to 80 and forward to 8080 for
example, same with 443 of course</LI> <LI>Proxied by a sidecar container, which
is part of a service mesh or solutions such as Dapr. Here again, the proxy can
easily fallback to 8080 or 4433</LI> </UL> <P>So, I see no reason to stick to
these ports. Therefore, the first thing to do is to pick another bunc of ports,
right in the DockerFile. So, for example, you can simply achieve this with the
following instructions in the Dockerfile (the same applies to 443 and TLS):</P>
<P>&nbsp;</P> <LI-CODE lang="bash">EXPOSE 8080 ENV
ASPNETCORE_URLS=http://*:8080</LI-CODE> <P>&nbsp;</P> <P>When changing the
default port, you also need to instruct ASP.NET (core in this example) about it
through an environment variable. Adding those two lines to our former DockerFile
and deploying it with the above <EM>securityContext</EM> will result in an up
and running ASP.NET container running as non-root. To enforce non-root, you may
even do it right from the Dockerfile itself, yet, using another bunch of Docker
instructions:</P> <P>&nbsp;</P> <LI-CODE lang="bash">RUN addgroup --group
friendlygroupname --gid 2000 \ &amp;&amp; adduser \ --uid 1000 \ --gid 2000 \
"friendlyusername" RUN chown friendlyusername:friendlygroupname /app USER
friendlyusername:friendlygroupname </LI-CODE> <P>&nbsp;</P> <P>If you build and
push the new Docker image and redeploy it, you will have an up and running
ASP.NET container, running with its own user and group objects.&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="stephaneey_0-1626176706154.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295435i61AC98E75C70C958/image-size/medium?v=v2&amp;px=400"
role="button" title="stephaneey_0-1626176706154.png"
alt="stephaneey_0-1626176706154.png" /></span></P> <P>This approach is even
preferred because even if you ommit the security context in the K8s deployment,
the container will be started with the user and group specified in the image,
meaning as a rootless container. But is it enough to consider this hardened?
Well, we are in a much better situation than with the default image because:</P>
<UL> <LI>The non-root user will be restricted even if the container itself is
privileged in the K8s deployment (which should never be the case of an ASP.NET
app by the way)</LI> <LI>The non-root user will be restricted in the container
itself. For example, installing extra packages through <EM>apt-get</EM> will be
denied, which could make it harder to setup tools in a remote code execution
attack. By the way, the default ASP.NET base image does not ship with many
tools, which makes it harder (good thing) to discover and run attacks. If on top
of it, you make sure that no extra tools can be installed, you're already
preventing most attacks.</LI> </UL> <P>But, we can do even more than this. For
example, depending on the ASP.NET distrib you work with, curl might be available
in the container, facilitating attacks such as downloading a binary or shell
file from a remote endpoint. Of course, you should always make sure that the
<EM>egress</EM> traffic is controlled correctly, which goes beyond the
management of the container itself. However, such attacks could not be done in a
read-only file system because the binary/archive/shell could not be stored
locally in the container. So, we might be tempted to add another line to our
securityContext:</P> <P>&nbsp;</P> <LI-CODE lang="bash">readOnlyRootFilesystem:
true</LI-CODE> <P>&nbsp;</P> <P>Which will cause the container to fail at
startup. In the logs you'll find:</P> <P>&nbsp;</P> <LI-CODE lang="bash">Failed
to create CoreCLR, HRESULT: 0x80004005</LI-CODE> <P>&nbsp;</P> <P>And that is
because you should disable some debugging telemetry setting in the Dockerfile by
adding an extra ENV statement:</P> <P>&nbsp;</P> <LI-CODE lang="basic">ENV
COMPlus_EnableDiagnostics=0</LI-CODE> <P>&nbsp;</P> <P>Note that it depends on
the base image (ASP.NET version) you use and it is still debated whether ASP.NET
runs smoothly or not on a read-only filesystem. You might have edge cases where
the system needs to buffer "stuff" on the filesystem. So, use it with caution
and make sure you spot any potential issue during your integration tests.</P>
<P>Last but not least and because it never hurts, you should always drop all
capabilities by default (full securityContext for clarity):</P> <P>&nbsp;</P>
<LI-CODE lang="bash">runAsNonRoot: true runAsUser: 1000 runAsGroup: 2000
allowPrivilegeEscalation: false privileged: false readOnlyRootFilesystem: true
capabilities: drop: - all</LI-CODE> <P>&nbsp;</P> <P>Because if you don't bind
to a low port, you will not even need NET_BIND_SERVICE and because should you
still run a container as root, dropping all these capabilities will still
prevent root from leveraging some system capabilities, making it harder for an
attacker to harm your environment. Of course, if you are running edge cases, you
may add <A
href="https://github.com/torvalds/linux/blob/master/include/uapi/linux/capability.h"
target="_self">some capabilities</A> as needed, but removing all by default
sounds like a good idea.&nbsp;</P> <P>Is that all? Well, no! There is still
something that help harden not the image, but the container itself. You should
always define resource requests and limits to make sure a single container
cannot take up all CPU and Memory of the node it runs on. That will also help
you detect unexpected memory leaks.</P></description>
<pubDate>Tue, 13 Jul 2021 17:11:51 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/hardening-an-asp-net-container-running-on-kubernetes/ba-p/2542224</guid>
<dc:creator>stephaneey</dc:creator>
<dc:date>2021-07-13T17:11:51Z</dc:date>
...
</item>
<item>
<title>IoT for Beginners, curriculum</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/iot-for-beginners-curriculum/ba-p/2533895</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="MicrosoftTeams-image.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293187i882CF1EF57FD59F2/image-size/large?v=v2&amp;px=999"
role="button" title="MicrosoftTeams-image.png" alt="MicrosoftTeams-image.png"
/></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>It is our very great pleasure to
announce the release of a new, free, MIT-licensed open-source curriculum all
about the Internet of Things: <A href="https://aka.ms/iot-beginners"
target="_blank" rel="noopener">IoT for Beginners</A>. Brought to you by a team
of Azure Cloud Advocates, Program Managers, and <A
href="https://studentambassadors.microsoft.com/?WT.mc_id=academic-17441-jabenn"
target="_blank" rel="noopener">Microsoft Learn Student Ambassadors</A>, we hope
to empower students of all ages to learn the basics of IoT. Presuming no
knowledge of IoT, we offer a free 12-week, 24-lesson curriculum to help you dive
into this amazing field.</P> <P>&nbsp;</P> <P>If you liked our first two
curricula, <A href="https://aka.ms/webdev-beginners" target="_blank"
rel="noopener">Web Dev for Beginners</A> and <A
href="https://aka.ms/ml-beginners" target="_blank" rel="noopener">Machine
Learning for beginners</A>, you will love IoT for Beginners!</P> <H2>&nbsp;</H2>
<H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#join-us-on-the-journey-of-your-food-from-farm-to-table"
target="_blank" rel="noopener"
name="join-us-on-the-journey-of-your-food-from-farm-to-table"></A>Join us on the
journey of your food, from farm to table!</H2> <P>&nbsp;</P> <P>Join us as we
take the same journey as your food as it travels from farm to table, taking
advantage of IoT on the way to improve farming, transport, manufacturing and
food processing, retail and smart homes.</P> <P>&nbsp;</P> <P>Our curricula are
structured with a modified Project-Based pedagogy and include:</P> <P>&nbsp;</P>
<UL> <LI>a pre-lesson warmup quiz</LI> <LI>a written lesson</LI> <LI>video</LI>
<LI>knowledge checks</LI> <LI>a project to build</LI> <LI>infographics,
sketchnotes, and visuals</LI> <LI>a challenge</LI> <LI>an assignment</LI> <LI>a
post-lesson quiz</LI> <LI>opportunities to deepen your knowledge on Microsoft
Learn</LI> </UL> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#what-will-you-learn"
target="_blank" rel="noopener" name="what-will-you-learn"></A>What will you
learn?</H2> <P>&nbsp;</P> <DIV id="tinyMceEditorChris_Noring_0"
class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P>
<P><A
href="https://github.com/microsoft/IoT-For-Beginners/blob/main/sketchnotes/Roadmap.jpg"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Roadmap.jpg" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294143iE08C947DD69E5E51/image-size/large?v=v2&amp;px=999"
role="button" title="Roadmap.jpg" alt="Roadmap.jpg" /></span></A></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>The lessons are grouped so that you can deep-dive
into use cases of IoT. We start with an introduction to IoT, covering devices,
sensors, actuators and cloud connectivity, where you will build an internet
connected version of the "Hello world" or IoT, an LED. We then move on to
farming, learning about digital agriculture and feedback loops to control
automated watering systems. Your food then leaves the farm on trucks, and you
learn how to track vehicles using GPS, visualize their journeys and get alerts
when a truck approaches a processing plant. Once in the plant, we move to AIoT,
learning how to distinguish between ripe and unripe fruit using AI models
running from IoT devices and on the edge. Next we move to the supermarket, using
IoT to manage stock levels. Finally we take the food home to cook, and learn
about consumer smart devices, building a voice controlled smart timer that can
even speak multiple languages.</P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#hardware"
target="_blank" rel="noopener" name="hardware"></A>Hardware</H2> <P>&nbsp;</P>
<P>The hard part (pun intended) for IoT is hardware, so we've designed this
curriculum to be as accessible as possible. We want you to Learn IoT, not learn
how to solder, know how to read resistor color codes, or know what a microfarad
is, so we've made hardware choices to make things easier.</P> <P>&nbsp;</P>
<P>You can choose to learn using microcontrollers using Arduino with a <A
href="https://www.seeedstudio.com/Wio-Terminal-p-4509.html" target="_blank"
rel="noopener">Wio Terminal</A>, or single board computers using a <A
href="https://www.raspberrypi.org/products/raspberry-pi-4-model-b/"
target="_blank" rel="noopener">Raspberry Pi</A>. We've also added a virtual
hardware option so you can learn without having to purchase anything!</P>
<P>&nbsp;</P> <P>For sensors and actuators, we've gone with the <A
href="https://www.seeedstudio.com/category/Grove-c-1003.html" target="_blank"
rel="noopener">Grove kit</A> from <A href="https://www.seeedstudio.com/"
target="_blank" rel="noopener">Seeed Studio</A>, with easy to connect sensors
and actuators.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="JimBennett_1-1625255958076.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293184iD7C16D337728ABB0/image-size/medium?v=v2&amp;px=400"
role="button" title="JimBennett_1-1625255958076.png"
alt="JimBennett_1-1625255958076.png" /></span></P> <P>&nbsp;</P> <P>Our friends
at Seeed have made it easy to buy the hardware, with packages containing all of
the kit you need.</P> <UL> <LI><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html"
target="_blank" rel="noopener">IoT for beginners with Seeed and Microsoft - Wio
Terminal Starter Kit</A></LI> <LI><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html"
target="_blank" rel="noopener">IoT for beginners with Seeed and Microsoft -
Raspberry Pi 4 Starter Kit</A></LI> </UL> <P>If you are interested in learning
using virtual hardware, you can write IoT code locally as if you were using a
Raspberry Pi, then simulate sensors and actuators using <A
href="https://github.com/CounterFit-IoT" target="_blank"
rel="noopener">CounterFit</A>, a free, open source tool for simulating
hardware.</P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#a-sneak-peek"
target="_blank" rel="noopener" name="a-sneak-peek"></A>A sneak peek</H2>
<P>&nbsp;</P> <P>This curriculum is filled with a lot of art, created by our
team. Take a look at this cool sketchnote created by <A class="mentioned-user"
href="https://dev.to/nitya" target="_blank" rel="noopener">@nitya</A> .</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="JimBennett_2-1625255958257.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293185i6B46F7DAD862A4F3/image-size/large?v=v2&amp;px=999"
role="button" title="JimBennett_2-1625255958257.png"
alt="JimBennett_2-1625255958257.png" /></span></P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-iot-for-beginners-12i7-temp-slug-1229194?preview=0044589665a79384ed7e8767cf1e73697457c37127dc9e95f279691ac039d97e24bdf1aee1b0a2a78b50a502432f50d8e9b466caab22b963430a3f11#without-further-ado-please-meet-iot-for-beginners-a-curriculum"
target="_blank" rel="noopener"
name="without-further-ado-please-meet-iot-for-beginners-a-curriculum"></A>Without
further ado, please meet <A href="https://aka.ms/iot-beginners" target="_blank"
rel="noopener">IoT For Beginners: A Curriculum</A>!</H2></description>
<pubDate>Tue, 13 Jul 2021 12:03:40 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/iot-for-beginners-curriculum/ba-p/2533895</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-07-13T12:03:40Z</dc:date>
...
</item>
<item>
<title>Building a Cloud Native Lab at Home</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="accelerate.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293760iDAE4D393C7479C5E/image-size/large?v=v2&amp;px=999"
role="button" title="accelerate.png" alt="accelerate.png" /></span></P>
<P>&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Everyone loves a good home lab setup. The cloud is great, but buying
and installing hardware in the comfort of your own home is something one can get
addicted to :)</img></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Don't get me wrong&nbsp; - there are things I put straight into the
cloud without even considering self-hosting. Even though I have been an Exchange
Admin in a previous life I use Office 365, and I certainly trust OneDrive and
Azure File Storage more than the maintenance of my own RAID/NAS. But running 30
virtual machines ain't free and even if there is a cost to buying hardware it
might come up cheaper over time.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">The challenge is that these days you want things to
be as cloud native as they can. So, you don't want to install virtual machines
where you install a web server that you subsequently have to configure. And even
though you can install Docker on both Windows and Linux servers you want
something more sophisticated than individual containers.</P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">You want something like Kubernetes
with all the fixings. No, Kubernetes is not the perfect option that you always
want to use, but it's certainly something you should have hands-on experience
with these days. (I'm approaching this lab from the developer perspective.
Running VMs has been a solved problem for years.) Sure, there's options like
Service Fabric as well since we're dealing with the Microsoft tech stack, but
I'm not diving into that right now.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">If you set up an Ubuntu VM you can get going with
Microk8s in minutes, but why stop there?</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">Microsoft announced Azure Stack HCI AKS a few
months back, and it just went GA. (That's hyper-converged servers that can plug
into Azure and then you optionally put Azure Kubernetes Service on top.)</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">More info:</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/" target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">I felt that not
all my questions were easily answered in the docs. Do you need two nodes? What
does it cost? How much hardware at a minimum?</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN>Well, it's not like the docs are
bad, but they do kind of drive you towards a more enterprisey setup. The bigger
problem is that all the info you need is spread across a number of sections in
the docs and that's why I wanted a more complete set of instructions (while not
diving into all the technical details). So, inspired by what I could find on
docs.microsoft.com and </SPAN><A href="http://aka.ms/azurearcjumpstart"
target="_blank"
rel="noopener"><SPAN>h</SPAN><SPAN>ttp://aka.ms/azurearcjumpstart</SPAN></A><SPAN>&nbsp;as
well as an amount of testing and validation on my own I put together a little
guide for building this at home.</SPAN></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">If you want a "proper" cluster you need at least
two nodes (with the witness going in the cloud) , and you'll want 2 NVMe drives
+ 8 SSDs for Storage Spaces Direct. (Well, you probably want all NVMe if money
is no concern.) You'll probably want minimum 64 gigs of RAM in each box as
well.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Azure Stack HCI doesn't have an up-front cost, but it will set you back
10$ a month pr core at the current pricing. So, it adds up if you're on a
budget. And that does not include the licenses for any Windows VMs you run on
the cluster. You can trial it for free for 60 days so there's no risk testing it
though. It works nicely, but at the moment I don't feel it's quite worth it now
as many of the features are still "Coming Soon". Since there are new versions in
preview this might change in the future, so this is not a permanent evaluation
on my part.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Wait a moment, I first said "Azure Stack HCI AKS" and then "Azure Stack
HCI" without the AKS term. Was that a spelling error? No. The AKS part is an
additional installation after you get the HCI part working. (Which means that
HCI doesn't mean you must run Kubernetes. You can still do VMs in parallell.)
Azure Stack HCI is an operating system you install yourself so you can install
software on top of that. It shares a lot of the code base with Windows Server,
but with some tweaks to become a cloud-connected evergreen OS.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">You can however
skip the cluster part and go single node, and for the sake of it I tested the
latest build of Windows Server 2022 Preview instead of this purpose-built OS.
This works like a charm.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">For hardware I went with an HPE Microserver Gen 10 Plus with
32GB RAM and even if I stuffed in two SSDs I tested on a single HDD just to be
sure. Storage Spaces and/or RAID is a recommendation, but not a hard
prerequisite. (I can confirm the Microserver unofficially supports 64GB RAM as
well, but it's slightly expensive and tricky to chase down known good RAM
sticks.) You can certainly make it work on different bits of hardware too&nbsp;
- a configuration like this doesn't have to break your bank account in any way.
(I like the size of the Microserver as well as iLO, built in quad port NIC even
if it is just gigabit, etc.)</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">Righty, I managed to install an operating system&nbsp; - now
what? If you want a UI for management you're driven towards Windows Admin Center
(WAC) in general these days:</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;" lang="nb"><A
href="https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/overview"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/overview</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Azure Stack HCI
has the Server Core UI whereas with Windows Server 2022 you can still go full
desktop mode.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Note: This isn't an intro to Kubernetes as such; it's about getting a
specific wrapping of Kubernetes going. If you're a k8s veteran there are parts
you can skim through, and if you're new to container orchestration you might
want to research things in other places as well along the way. I try to hit a
middle ground here.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">There's an AKS plugin for WAC that in theory will let you set it up
through a wizard. I'm saying "theory" because I'm seeing inconsistency&nbsp; -
sometimes I get an unhelpful CredSSP or WinRM error thrown in the face, and
sometimes it works. And I'm not liking that. However, it is a great way to
install the Powershell cmdlets and have a quick look if things in general are
ok. (Screenshot from a two-node setup.)</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Windows Admin Center AKS Prereqs"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293775iAC028BBE06BF6571/image-size/medium?v=v2&amp;px=400"
role="button" title="aks_01.png" alt="Windows Admin Center AKS Prereqs" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">Windows Admin
Center AKS Prereqs</span></span></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">There's a quick start for using the Windows Admin
Center (WAC) to set things up here:</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;" lang="nb"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/setup"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/setup</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">And for PowerShell
here (you can install everything without involving WAC):</P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;" lang="nb"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/kubernetes-walkthrough-powershell"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/kubernetes-walkthrough-powershell</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Step 2 &amp; 3 (in
PowerShell) is where things can get a little confusing. I did not feel the
parameters where sufficiently explained. An example of what I basically went
with follows. (I have a slightly different IP addressing scheme, but same same
in the bigger picture).</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">Assuming you have a 192.168.0.0/24 subnet, and have already
created a virtual switch on the server named "LAN". Let's say you use
192.168.0.2 - 192.168.0.99 (default gateway on .1) as your DHCP scope you'll
want to carve out a static space separately for AKS.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">You will want a range for the nodes,
and you will want a range for any load balancers you provision in the cluster.
(Adjust to account for your specifics.)</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <LI-CODE lang="powershell">$vnet =
New-AksHciNetworkSetting -name aksvnet -vSwitchName "LAN" -macPoolName
aksMacPool -k8sNodeIpPoolStart "192.168.0.101" -k8sNodeIpPoolEnd "192.168.0.110"
-vipPoolStart "192.168.0.111" -vipPoolEnd "192.168.0.120" -ipAddressPrefix
"192.168.0.0/24" -gateway "192.168.0.1" -dnsServers "192.168.0.1"
Set-AksHciConfig -vnet $vnet -imageDir C:\ClusterStorage\Volume01\Images
-cloudConfigLocation C:\ClusterStorage\Volume01\Config -cloudservicecidr
"192.168.0.100/24" Set-AksHciRegistration -subscriptionId "guid"
-resourceGroupName "rg-AKS" Install-AksHci -Verbose</LI-CODE> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">It might take a little while to
provision, but with a bit of luck it will go through. Don't worry about the
Azure registration&nbsp; - this does not incur a cost, but is used for Azure
Arc. (Azure Arc is a service for managing on-prem services from Azure and is not
specific to AKS.)</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">After installation of the host cluster you might want to run the <SPAN
style="font-style: italic;">Update-AksHci</SPAN> cmdlet in case you didn't get
the newest release on the first go. (I have experienced this.)</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">This takes care of
setting up the AKS host, but not the actual nodes for running workloads so you
will want to create that next. I went with Linux nodes, but you can create
Windows nodes as well if you like. This actually mirrors AKS hosted in Azure,
but things have been abstracted away slightly there so you might not think much
about this. (Which is OK.)</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">If you have a 32GB RAM server the <SPAN style="font-style:
italic;">New-AksHciCluster</SPAN> cmdlet without parameters will probably fail
since you don't have enough memory. And when scaling things down you'll also
want to account for upgrades&nbsp; - when upgrading the cluster a new instance
of each virtual machine is spun up in parallel requiring you to have enough
headroom for this. This should work:</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">&nbsp;</P> <LI-CODE
lang="powershell">New-AksHciCluster -Name aks01 -loadBalancerVmSize
"Standard_A2_v2" -controlplaneVmSize "Standard_A2_v2" -linuxNodeVmSize
"Standard_A2_v2"</LI-CODE> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><SPAN>(I attempted using "Standard_K8S_v1</SPAN><SPAN>" for
the worker node, but the memory peaked almost immediately resulting in a loop of
creating new nodes that were also underpowered and never getting to a fully
working state with the workloads described here.)</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">If you have 64GB or more you shouldn't
have to tweak this.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">You can upgrade your workload cluster to a newer Kubernetes version
independently of the host version. There are limits though&nbsp; - to run the
newest versions of Kubernetes on the nodes you may have to upgrade the host to a
newer version as well in some cases. Both clusters can be connected to Azure
with Arc, but the workload cluster is the most important one here.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Connect the
cluster you just created to Azure like this:</P> <LI-CODE
lang="powershell">Connect-AzAccount Enable-AksHciArcConnection -name
aks01</LI-CODE> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">At this point you should be good to verify things by putting some
containers inside the cluster if you like.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">I have a very simple frontend &amp;
backend setup here:</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="nb"><A href="https://github.com/ahelland/HelloFoo"
target="_blank" rel="noopener">https://github.com/ahelland/HelloFoo</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Since the images
are on Docker hub you only need the <SPAN style="font-style:
italic;">/k8s/HelloFoo.yaml</SPAN> if you don't feel like playing with the code
or build your own images.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">I wouldn't call it fancy by any means, but it consists of
two "microservices" you can test with a Kestrel-based image (dotnet run), Docker
and Kubernetes.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">While still on the server you can download kubectl as you will need
that to proceed:</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="nb"><SPAN style="font-style: italic;">curl </SPAN><A
href="https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe"
target="_blank" rel="noopener"><SPAN style="font-style:
italic;">https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe</SPAN></A><SPAN
style="font-style: italic;"> -Outfile kubectl.exe</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">You also need credentials to access
the cluster:</P> <LI-CODE lang="powershell">Get-AksHciCredential -name
aks01</LI-CODE> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Apply with <SPAN style="font-style: italic;">.\kubectl.exe apply -f
HelloFoo.yaml</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Then you can run <SPAN style="font-style: italic;">kubectl get -svc
-A</SPAN> to give you the IP address (from the load balancer range you
provided)</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">If you just want a plain cloud native setup you're done now. (You can
of course install <SPAN style="font-style: italic;">kubectl</SPAN> on your
desktop if you prefer.)</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">However I kinda like testing out "day 2" use cases as
well.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">GitOps and Flux is getting more popular as the option for installing
configuration and services.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">This is also slightly lacking in the docs. It's actually
quite simple (using the same repo):</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">Find the cluster through Azure Arc in the Azure
Portal and go to the GitOps blade and "Add configuration"</P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="GitOps/Flux" style="width: 582px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293782iB7F7A348FCBF3E09/image-size/large?v=v2&amp;px=999"
role="button" title="flux_01.png" alt="GitOps/Flux" /><span
class="lia-inline-image-caption"
onclick="event.preventDefault();">GitOps/Flux</span></span></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">For adding a
public GitHub repo (like mine) it looks like this, but it's also possible to add
private repos. Note the use of the git-path parameter to point to the right
folder (containing yaml):</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="GitOps/Flux" style="width: 612px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293783iDB597EA80B9F2B5B/image-size/large?v=v2&amp;px=999"
role="button" title="flux_02.png" alt="GitOps/Flux" /><span
class="lia-inline-image-caption"
onclick="event.preventDefault();">GitOps/Flux</span></span></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN>For more
background:<BR /></SPAN><A
href="https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/use-gitops-with-helm"
target="_blank"
rel="noopener"><SPAN>https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/use-gitops-with-helm</SPAN></A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Once you have this
working (you should probably have separate repos for config and apps) you can
just go at it in your editor of choice and check in the results to do a
roll-out. For an automated bootstrap scenario you can perform the setup with
PowerShell as well. Which basically means - a script does all the work of
setting up the Kubernetes cluster and then Git kicks in to deploy the
essentials.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Since we're at it we will of course need monitoring and tracing
abilities too. Azure Monitor is decent, but it does have a cost so if you're on
a budget either skip it or keep an eye on it so it doesn't run up a huge
bill.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">The combo of Prometheus and Grafana is a well known solution for
Kubernetes, and that's fairly easy to implement. Follow the instructions
here:</P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://docs.microsoft.com/en-us/azure-stack/aks-hci/monitor-logging"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure-stack/aks-hci/monitor-logging</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">First enable
Prometheus:</P> <LI-CODE lang="powershell">Install-AksHciMonitoring -Name aks01
-storageSizeGB 100 -retentionTimeHours 240</LI-CODE> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">To load the config for Grafana:</P>
<LI-CODE lang="powershell">kubectl apply -f
https://raw.githubusercontent.com/microsoft/AKS-HCI-Apps/main/Monitoring/data-source.yaml
kubectl apply -f
https://raw.githubusercontent.com/microsoft/AKS-HCI-Apps/main/Monitoring/dashboards.yaml</LI-CODE>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN>Then install
Grafana (which will use the data source and the dashbord from the previous two
yaml files). (Note that this requires the installation of Helm - </SPAN><A
href="https://helm.sh/docs/intro/install/" target="_blank"
rel="noopener"><SPAN>https://helm.sh/docs/intro/install/</SPAN></A>&nbsp;downloading
the zip and extracting should work on Windows Server.<SPAN>)</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P>
<LI-CODE lang="powershell">helm repo add grafana
https://grafana.github.io/helm-charts helm repo update helm install grafana
grafana/grafana --version 6.11.0 --set nodeSelector."kubernetes\.io/os"=linux
--set sidecar.dashboards.enabled=true --set sidecar.datasources.enabled=true -n
monitoring</LI-CODE> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Retrieve the Grafana secret (and have it ready for logging in to the
dashboard afterwards):</P> <LI-CODE lang="powershell">kubectl get secret
--namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64
--decode ; echo</LI-CODE> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">(Note that the base64 option doesn't work on Windows, so you
would need to do that decode separately.)</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Grafana displaying Prometheus metrics" style="width: 432px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293784i065D1D3516B1587A/image-size/large?v=v2&amp;px=999"
role="button" title="Grafana_01.png" alt="Grafana displaying Prometheus metrics"
/><span class="lia-inline-image-caption"
onclick="event.preventDefault();">Grafana displaying Prometheus
metrics</span></span></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P>There's one more thing we want to do in the
monitoring and diagnostics department, but a small digression first.</P>
<P>&nbsp;</P> <P>For a small lab at home it's not necessary to be super strict
with security and policies inside the cluster, but if you want to practice
production the term "service mesh" will come up. I'm not going to do a
comparison of those, but Istio, Linkerd and Consul are popular choices that
Microsoft provides instructions for as well:</P> <P><A
href="https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about</A></P>
<P>&nbsp;</P> <P>For more info on meshes you can also check out <A
href="https://meshery.io" target="_blank"
rel="noopener">https://meshery.io</A></P> <P>&nbsp;</P> <P>I wanted to test
"Open Service Mesh" as that is available as an add-on for AKS. I found these
instructions clearer:</P> <P><A
href="https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/tutorial-arc-enabled-open-service-mesh#install-arc-enabled-open-service-mesh-osm-on-an-arc-enabled-kubernetes-cluster"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/tutorial-arc-enabled-open-service-mesh#install-arc-enabled-open-service-mesh-osm-on-an-arc-enabled-kubernetes-cluster</A></P>
<P>&nbsp;</P> <P>Since I didn't want to bother with making sure I had the right
version of Azure Cli installed locally I just did it in Azure Cloud Shell
:)</img> (Point being that you don't need to be on-prem to perform this
step.)</P> <P>&nbsp;</P> <P>There is a snag at the time of writing this. The
instructions point to version 0.8.4, but I wanted to use 0.9.0 (newer) which
required me to use this cmdlet:</P> <LI-CODE lang="powershell">az k8s-extension
create --cluster-name aks01 --resource-group ARC-AKS-01 --cluster-type
connectedClusters --extension-type Microsoft.openservicemesh --scope cluster
--release-train staging --name osm --version 0.9.0</LI-CODE> <P>&nbsp;</P>
<P>Since I'm using OSM I will also follow the MS instructions for installing the
bookstore app:</P> <P><A
href="https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-windows#deploy-a-new-application-to-be-managed-by-the-open-service-mesh-osm-azure-kubernetes-service-aks-add-on"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-windows#deploy-a-new-application-to-be-managed-by-the-open-service-mesh-osm-azure-kubernetes-service-aks-add-on</A></P>
<P>&nbsp;</P> <P>Note that you should not use the instructions for Grafana and
Prometheus from this page - these instructions are for "cloud AKS" not "on-prem
AKS". (Prometheus will fail to run due to permissions issues.)</P> <P>&nbsp;</P>
<P>You can however use the yaml from this page to install&nbsp;a popular tracing
tool called Jaeger. Copy the yaml on the page and save to a file while adding
the namespace on top:</P> <P>&nbsp;</P> <LI-CODE lang="yaml">apiVersion: v1
kind: Namespace metadata: &nbsp; name: jaeger &nbsp; labels: &nbsp;&nbsp;&nbsp;
name: jaeger ---</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>And apply:</P>
<LI-CODE lang="powershell">kubectl apply -f jaeger.yaml</LI-CODE> <P>&nbsp;</P>
<P>Another quick note about the instructions here. It is referred to a configmap
for the settings - this is not used in 0.9.0 any more so to read the config you
will need to run the following command:</P> <LI-CODE lang="powershell">kubectl
get meshconfig osm-mesh-config -n arc-osm-system -o yaml</LI-CODE> <P>&nbsp;</P>
<P>We need to make two small adjustments (enable tracing and change the address
for Jaeger) to this meshconfig which can be done by patching the meshconfig:</P>
<LI-CODE lang="powershell">kubectl patch meshconfig osm-mesh-config -n
arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true,"address":
"jaeger.jaeger.svc.cluster.local","port":9411,"endpoint":"/api/v2/spans"}}}}'&nbsp;
--type=merge</LI-CODE> <P>&nbsp;</P> <P>On Windows you will probably see an
error about invalid json so you have to do an extra step:</P> <LI-CODE
lang="powershell">$jsonpatch =
'{"spec":{"observability":{"tracing":{"enable":true,"address":
"jaeger.jaeger.svc.cluster.local","port":9411,"endpoint":"/api/v2/spans"}}}}' |
ConvertTo-Json kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p
$jsonpatch --type=merge</LI-CODE> <P>&nbsp;</P> <P>More info:</P> <P><A
href="https://docs.openservicemesh.io/docs/concepts_features/osm_mesh_config/"
target="_blank"
rel="noopener">https://docs.openservicemesh.io/docs/concepts_features/osm_mesh_config/</A></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Jaeger" style="width: 993px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293785iC8B9C1E65AF01DE6/image-size/large?v=v2&amp;px=999"
role="button" title="jaeger_01.png" alt="Jaeger" /><span
class="lia-inline-image-caption"
onclick="event.preventDefault();">Jaeger</span></span></P> <P>&nbsp;</P> <P>For
testing you can port-forward to the pods and this makes sense for the bookstore
apps, but it's probably better to set up load balancers for this when you want
it more permanent so create a file like this to expose Grafana, Jaeger and
Prometheus:</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="yaml">apiVersion: v1
kind: Service metadata: namespace: monitoring name: grafana labels:
app.kubernetes.io/instance: grafana app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: grafana app.kubernetes.io/version: 7.5.5 helm.sh/chart:
grafana-6.11.0 spec: externalTrafficPolicy: Cluster ports: - port: 80 protocol:
TCP targetPort: 3000 selector: app.kubernetes.io/instance: grafana
app.kubernetes.io/name: grafana sessionAffinity: None type: LoadBalancer ---
apiVersion: v1 kind: Service metadata: namespace: jaeger name: jaeger spec:
externalTrafficPolicy: Cluster ports: - port: 80 protocol: TCP targetPort: 16686
selector: app: jaeger sessionAffinity: None type: LoadBalancer --- apiVersion:
v1 kind: Service metadata: namespace: monitoring name: prometheus spec:
externalTrafficPolicy: Cluster ports: - port: 80 protocol: TCP targetPort: 9090
selector: app: prometheus sessionAffinity: None type: LoadBalancer</LI-CODE>
<P>&nbsp;</P> <P>&nbsp;</P> <P>It would actually be even better to set up
ingresses and DNS names, etc. but for the purpose of getting your lab up and
running in a basic form this is out of scope.</P> <P>&nbsp;</P> <P>Sure, I
skipped some parts you might want to look into here:</P> <UL> <LI>The docs refer
to Prometheus scraping metrics from OSM, which you kind of want, but I left that
out for now.</LI> <LI>The service mesh is set to permissive which means you
don't get all that mesh goodness.</LI> <LI>I have not touched upon network
policies or plugins.</LI> <LI>Since I didn't do ingress and didn't do DNS it
follows that https isn't part of the picture either.</LI> <LI>While GitOps is
part of the CI/CD story we have not explored a setup with pipelines and repos so
you might want to tinker with GitHub Actions to automate these pieces.</LI>
</UL> <P>&nbsp;</P> <P>I will be exploring these features as well (don't know if
I'll put out some instructions on that or not), and I encourage you to do the
same. With the risk of repeating myself - this is intended to get an AKS cluster
going so it can be used for a basic cloud native setup. What you make of it is
up to you :)</img></P> <P>&nbsp;</P> <P>And the disclaimer - I know that this
works and seems to be an acceptable way to use the software at the time of
writing, but I cannot predict if Microsoft will change anything on the technical
or licensing side of things.</P></description>
<pubDate>Tue, 06 Jul 2021 19:10:00 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/building-a-cloud-native-lab-at-home/ba-p/2519504</guid>
<dc:creator>Andreas Helland</dc:creator>
<dc:date>2021-07-06T19:10:00Z</dc:date>
...
</item>
<item>
<title>Web Development for Beginners: A new Learning Path on Microsoft
Learn</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/web-development-for-beginners-a-new-learning-path-on-microsoft/ba-p/2502044</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="webdev.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290366i358D67A3A7A0B4A8/image-size/large?v=v2&amp;px=999"
role="button" title="webdev.png" alt="webdev.png" /></span></P> <P>&gt; This is
based on the Git Hub curriculum <A
href="https://github.com/microsoft/Web-Dev-For-Beginners/?WT.mc_ID=academic-33004-leestott"
target="_blank"
rel="noopener">https://github.com/microsoft/Web-Dev-For-Beginners</A></P>
<P>&nbsp;</P> <P>There are 16 million developers in the world today. Roughly
half of those, 8 million are web developers. Web development is therefore a good
skill to have as you are looking to land that first job and build a career in
tech. But where do you begin to learn all that? With this path&nbsp;</P>
<BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/paths/web-development-101/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Web dev for beginners path</A>.</P> </BLOCKQUOTE>
<P>It covers everything from HTML, CSS, JavaScript to Accessibility.&nbsp;</P>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#intro-to-programming"
target="_blank" rel="noopener" name="intro-to-programming"></A>Intro to
programming</H2> <P>What even is programming? Well, it's a way to instruct your
machine to do things for you. By running statements, you can things like
creating a web a page, a simple script or why not a computer game. The
possibilities are endless. You do need some kind of text editor to type it all
in, we provide that to in this first module.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-introduction-programming/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Intro to programming</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#accessibility-on-the-web"
target="_blank" rel="noopener" name="accessibility-on-the-web"></A>Accessibility
on the Web</H2> <P>Not everyone has perfect eyesight or see the colors you do or
can even see at all. As a developer you need to realize that when you build
programs, you should include everyone. There are specific tags and approaches
you can use to make your app usable by anyone, regardless of disability. Be
inclusive and build better apps.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-accessibility/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Web accessibility</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#javascript-variables-and-data-types"
target="_blank" rel="noopener"
name="javascript-variables-and-data-types"></A>JavaScript variables and data
types</H2> <P>One of the most popular programming languages right now is
JavaScript. JavaScript can be used in the browser to create an interactive
experience, but it can also be used on the backend to create APIs, application
that can talk to other services and even databases. Learn how to think in
programming by being introduced to the concept of variables and data types.</P>
<BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-variables/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">JavaScript variables and data types</A></P>
</BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#functions"
target="_blank" rel="noopener" name="functions"></A>Functions</H2> <P>When you
start out, you might have all your code statements in one file. But there is a
way to organize your code so it can be made more readable but also reusable.
What you can do is to create named areas, functions, which can be called
whenever you need them to carry out a task for you.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-functions/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Functions in JavaScript</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#decisions-with-ifelse"
target="_blank" rel="noopener" name="decisions-with-ifelse"></A>Decisions with
IF/ELSE</H2> <P>Your code can execute differently depending on the values of
different variables or some other condition. Having that flexibility makes your
application useful in many different scenarios. Learn about IF, ELSE and much
more.</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-if-else/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Decisions with IF/ELSE</A></P> </BLOCKQUOTE>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/softchris/web-dev-for-beginners-on-learn-4j48-temp-slug-4222989?preview=75a0f612dc3a5e5d8048270079990c140ffcb18e23d4521c4463fe6b41d50b9cfe002e00d2ccd731d9af88204e037d60b9aab82c60824744ba2abe30#arrays-and-loops"
target="_blank" rel="noopener" name="arrays-and-loops"></A>Arrays and loops</H2>
<P>Sometimes your data takes on the form of a list. Imagining a recipe, or an
ice cream menu or why not a receipt of things. Lists make it possible to store
more than one thing and there are constructs that make it possible to operate on
lists and get what you need from them such as their sum, or maybe the highest
value and so on.&nbsp;</P> <BLOCKQUOTE> <P><A
href="https://docs.microsoft.com/en-us/learn/modules/web-development-101-arrays/?WT.mc_ID=academic-33004-leestott"
target="_blank" rel="noopener">Arrays and loops</A></P> </BLOCKQUOTE>
<P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Wed, 30 Jun 2021 13:46:59 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/web-development-for-beginners-a-new-learning-path-on-microsoft/ba-p/2502044</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-06-30T13:46:59Z</dc:date>
...
</item>
<item>
<title>Machine Learning for Beginners, Curriculum</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/machine-learning-for-beginners-curriculum/ba-p/2502024</link>
<description><P>It is our very great pleasure to announce the release of a new,
free, MIT-licensed open-source curriculum all about classic Machine
Learning:<SPAN>&nbsp;</SPAN><STRONG><A href="https://aka.ms/ml-beginners"
target="_blank" rel="noopener">Machine Learning for Beginners</A></STRONG>.
Brought to you by a team of Azure Cloud Advocates and Program Managers, we hope
to empower students of all ages to learn the basics of ML. Presuming no
knowledge of ML, we offer a free 12-week, 24-lesson curriculum, plus a bonus
'postscript' lesson to help you dive into this amazing field.</P> <BLOCKQUOTE>
<P>If you liked our first curriculum,<SPAN>&nbsp;</SPAN><A
href="https://aka.ms/webdev-beginners" target="_blank" rel="noopener">Web Dev
for Beginners</A>, you will love<SPAN>&nbsp;</SPAN><A
href="https://aka.ms/ml-beginners" target="_blank" rel="noopener">Machine
Learning for Beginners</A>!</P> </BLOCKQUOTE> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#join-us-on-a-voyage"
target="_blank" rel="noopener" name="join-us-on-a-voyage"></A>Join us on a
voyage!</H2> <P>Travel around the world in this themed semester-long self-study
course as we look at ML topics through the lens of world cultures.</P>
<P>&nbsp;</P> <P>Our curricula are structured with a modified Project-Based
pedagogy and include:</P> <UL> <LI>a pre-lesson warmup quiz</LI> <LI>a written
lesson</LI> <LI>video</LI> <LI>knowledge checks</LI> <LI>a project to build</LI>
<LI>infographics, sketchnotes, and visuals</LI> <LI>a challenge</LI> <LI>an
assignment</LI> <LI>a post-lesson quiz</LI> <LI>a 'PAT' (see below)</LI>
<LI>opportunities to deepen your knowledge on Microsoft Learn</LI> </UL>
<H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#meet-the-team"
target="_blank" rel="noopener" name="meet-the-team"></A>Meet the team!</H2>
<P>&nbsp;</P> <DIV class=" fluidvids"><IFRAME
src="https://www.youtube.com/embed/Tj1XWrDSYJU" width="710" height="399"
allowfullscreen="allowfullscreen" class=" fluidvids-elem" loading="lazy"
data-mce-fragment="1"></IFRAME></DIV> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#what-will-you-learn"
target="_blank" rel="noopener" name="what-will-you-learn"></A>What will you
learn?</H2> <P>&nbsp;</P> <P>The lessons are grouped so that you can deep-dive
into various important aspects of classic ML. We start with
an<SPAN>&nbsp;</SPAN><STRONG>introduction</STRONG><SPAN>&nbsp;</SPAN>to ML
concepts, moving to its<SPAN>&nbsp;</SPAN><STRONG>history</STRONG>, concepts
of<SPAN>&nbsp;</SPAN><STRONG>fairness</STRONG><SPAN>&nbsp;</SPAN>in machine
learning, and discussing the tools
and<SPAN>&nbsp;</SPAN><STRONG>techniques</STRONG><SPAN>&nbsp;</SPAN>of the
trade. We then move on
to<SPAN>&nbsp;</SPAN><STRONG>Regression</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Classification</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Clustering</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Natural
Language Processing</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Time Series
Forecasting</STRONG>,<SPAN>&nbsp;</SPAN><STRONG>Reinforcement Learning</STRONG>,
with two<SPAN>&nbsp;</SPAN><STRONG>'applied'</STRONG><SPAN>&nbsp;</SPAN>lessons
demonstrating how to use your models within web apps for inference. We end with
a 'postscript' lesson listing<SPAN>&nbsp;</SPAN><STRONG>"real-world"
applications</STRONG><SPAN>&nbsp;</SPAN>of ML, showing how these techniques are
used "in the wild".</P> <P>To make it easy for new learners to get started with
ML, we built the content so that it can be used offline and so that the
exercises can be completed using .ipynb notebooks within Visual Studio Code.
Grab your datasets and let's go!</P> <BLOCKQUOTE> <P>This curriculum is all
about "classic Machine Learning", so we tackle these basic concepts for the most
part using<SPAN>&nbsp;</SPAN><A
href="https://scikit-learn.org/stable/user_guide.html" target="_blank"
rel="noopener">Scikit-learn</A>, a library that helps demystify and explain
these concepts. We don't discuss deep learning or neural networks in this ML
curriculum, but please stay tuned as we release our AI for Beginners curriculum
this Fall!</P> </BLOCKQUOTE> <P>Travel with us to discover North American
pumpkin market pricing (Regression), Pan-Asian cuisines (Classification),
Nigerian musical tastes (Clustering), European Hotel Reviews (NLP), World
electricity usage (Time Series) and the Russian story about Peter and the Wolf
(Reinforcement Learning).</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#how-to-use-this-curriculum-meet-pat"
target="_blank" rel="noopener"
name="how-to-use-this-curriculum-meet-pat"></A>How to use this curriculum: meet
PAT</H2> <P>&nbsp;</P> <P>This is a self-study course, but it works well in
groups so consider finding study buddies and learning together. Warm up with a
pre-lesson low-stakes quiz and work through the lessons and assignments together
or solo. Test your knowledge with the post-lesson quiz.</P> <P>New for this
curriculum is the use of<SPAN>&nbsp;</SPAN><STRONG>Progress Assessment
Tools</STRONG><SPAN>&nbsp;</SPAN>in the Discussion Board area. Once done with a
lesson group, visit the Discussion Board and copy the template to a new
Discussion using the "quote reply". Fill in your learnings in the
self-reflection box and respond to other students in the repo. Let's learn
together!</P> <P>We are also open to PRs and Issue raising, following our Code
of Conduct and templating systems. We hope the community will chip in with
translations of the lessons, quizzes and assignments. Thank you for
participating as we learn together.</P> <H2>&nbsp;</H2> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#a-sneak-peek"
target="_blank" rel="noopener" name="a-sneak-peek"></A>A sneak peek</H2>
<P>&nbsp;</P> <P>This curriculum is filled with a lot of art, created by our
team. Take a look at this cool sketchnote created by<SPAN>&nbsp;</SPAN><A
class="mentioned-user" href="https://dev.to/girlie_mac" target="_blank"
rel="noopener">@girlie_mac</A><SPAN>&nbsp;</SPAN>.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Chris_Noring_1-1625058142891.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292562i74A89D6D4F805B73/image-size/medium?v=v2&amp;px=400"
role="button" title="Chris_Noring_1-1625058142891.jpeg"
alt="Chris_Noring_1-1625058142891.jpeg" /></span></P> <P>&nbsp;</P> <H2><A
href="https://dev.to/azure/announcing-a-new-free-curriculum-machine-learning-for-beginners-1h58#without-further-ado-please-meet-machine-learning-for-beginners-a-curriculum"
target="_blank" rel="noopener"
name="without-further-ado-please-meet-machine-learning-for-beginners-a-curriculum"></A><STRONG>Without
further ado, please meet<SPAN>&nbsp;</SPAN><A href="https://aka.ms/ml-beginners"
target="_blank" rel="noopener">Machine Learning For Beginners: A
Curriculum</A>!</STRONG></H2> <P>&nbsp;</P> <P><FONT size="6"><STRONG>You need
to LEARN Python? </STRONG></FONT></P> <P><STRONG>Here's our best recommendations
from LEARN:</STRONG></P> <P>&nbsp;</P> <P><STRONG>-&nbsp;<A
href="https://docs.microsoft.com/en-us/learn/modules/intro-to-python/"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/learn/modules/intro-to-python/</A></STRONG></P>
<P><STRONG>- <A
href="https://docs.microsoft.com/en-us/learn/paths/python-first-steps/"
target="_blank"
rel="noopener">https://docs.microsoft.com/en-us/learn/paths/python-first-steps/</A></STRONG></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Wed, 30 Jun 2021 13:42:31 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/machine-learning-for-beginners-curriculum/ba-p/2502024</guid>
<dc:creator>Chris_Noring</dc:creator>
<dc:date>2021-06-30T13:42:31Z</dc:date>
...
</item>
<item>
<title>#JulyOT 2021 - 31 Days of Learning for everyone interested in the
Internet of Things</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/julyot-2021-31-days-of-learning-for-everyone-interested-in-the/ba-p/2450414</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="JulyOT-Cloud-Logo.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288881i3C8AEB5098245D11/image-size/large?v=v2&amp;px=999"
role="button" title="JulyOT-Cloud-Logo.png" alt="JulyOT-Cloud-Logo.png"
/></span></P> <P><SPAN data-contrast="none"><FONT
size="5"><STRONG>Introduction</STRONG></FONT></SPAN></P> <P><SPAN
data-contrast="none">It’s a new year, and&nbsp;it’s&nbsp;time&nbsp;for another
round of #JulyOT!&nbsp; This themed month&nbsp;of&nbsp;blog posts, live
streams,&nbsp;videos, and&nbsp;learning materials&nbsp;focuses on all things
related to development&nbsp;of&nbsp;IoT Solutions&nbsp;built&nbsp;using Azure
IoT Services.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Throughout the month of July, the
IoT Cloud Advocacy team @ Microsoft will be sharing content and events put
together by IoT enthusiasts from around the world. 
This includes content from community members, Microsoft employees, and could
even involve you!  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none"><BR />For every weekday&nbsp;in July, we’ll focus
on a featured content piece from our </SPAN><A href="https://aka.ms/julyot"
target="_blank" rel="noopener"><SPAN data-contrast="none">curated collection at
the IoT Tech Community</SPAN></A><SPAN data-contrast="none">.  The idea is to
inspire those curious about IoT to pursue their own personal projects within the
realm of Internet of Things.  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Make sure to bookmark our <A
href="https://aka.ms/julyot" target="_blank" rel="noopener">#JulyOT post at
the </A></SPAN><A href="https://aka.ms/julyot" target="_blank"
rel="noopener"><SPAN data-contrast="none">Microsoft IoT Tech
Community</SPAN></A><SPAN data-contrast="none"> and be sure to refresh the page
throughout the month, as we will be adding new content each week that align to
this year’s #JulyOT Content Themes!  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><FONT size="5"><STRONG><SPAN data-contrast="none">#JulyOT
Content Themes</SPAN></STRONG></FONT><SPAN><FONT size="5">&nbsp;</FONT><BR
/></SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN data-contrast="none">Each
week&nbsp;during the month of #JulyOT, we will focus on&nbsp;a&nbsp;specific
area of IoT&nbsp;and we are pleased to&nbsp;say that we&nbsp;have a little bit
of something for everyone.&nbsp;&nbsp;See below for a quick listing of our
content themes for the month!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><SPAN data-contrast="none">July 1 – 2
: #JulyOT Content Kickoff  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><SPAN data-contrast="none">July 5 – 9
: Artificial Intelligence at the Edge  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><SPAN data-contrast="none">July 12
– 16 : &nbsp;Beginners, Students, Teachers and Makers</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><SPAN data-contrast="none">July 19
– 23 : Microcontrollers and Embedded Hardware  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><SPAN data-contrast="none">July 26
– 30 : Online learning and Certification  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN>&nbsp;</LI>
</UL> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Whether you are interested in applied artificial
intelligence, a total beginner, a student looking to start a class project,
teacher looking for an IoT course curriculum, a hardware tinkerer / hacker, or
professional developer looking to designate yourself as an
official&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure IoT
Developer</SPAN></A><SPAN data-contrast="none">, we have you
covered!&nbsp;&nbsp;Check out the sections below for more details on what to
expect during these themed weeks.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">Throughout
the month we'll also be hosting a variety of livestreams throughout the world as
part of the&nbsp;<A title="Microsoft Reactor #JulyOT2021 Series"
href="https://developer.microsoft.com/en-us/reactor/eventseries/JulyOT2021?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener noreferrer">Microsoft Reactor #JulyOT2021
Series</A>.&nbsp; Register to attend live sessions featuring QnA with experts
from the Microsoft IoT Advocacy team!</SPAN></P> <P>&nbsp;</P> <P><A
title="Microsoft Reactor #JulyOT2021 Series"
href="https://developer.microsoft.com/en-us/reactor/eventseries/JulyOT2021?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="reactor.PNG" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292963i8EBD0FE6711D8E1B/image-size/medium?v=v2&amp;px=400"
role="button" title="reactor.PNG" alt="reactor.PNG" /></span></SPAN></A></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">July 1
–&nbsp;2&nbsp;:&nbsp;#JulyOT Content Kickoff&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We plan to begin #JulyOT by spreading the word far
and wide ot let everyone know that&nbsp;we are&nbsp;looking to inspire
interested individuals from all over the world to build innovative IoT
solutions.&nbsp; Help us by sharing this very blog post to your favorite IoT
Communities!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN
data-contrast="none">July&nbsp;5&nbsp;–&nbsp;9&nbsp;:&nbsp;&nbsp;Artificial
Intelligence&nbsp;at the Edge</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="pdecarlo_0-1623782410042.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288882iF6AF3BF0746A1C13/image-size/medium?v=v2&amp;px=400"
role="button" title="pdecarlo_0-1623782410042.png"
alt="pdecarlo_0-1623782410042.png" /></span></P> <P>&nbsp;</P> <P><A
href="https://microsoft.github.io/ai-at-edge/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Artificial Intelligence&nbsp;at the
Edge</SPAN></A><SPAN data-contrast="none">&nbsp;is one of the hottest trends in
IoT, and we have an excellent line-up of community created content to excite all
who have an interest in this area.&nbsp; We’ll begin with a creative
solution&nbsp;from&nbsp;</SPAN><A
href="https://www.linkedin.com/in/goranvuksic/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Goran Vuksic</SPAN></A><SPAN
data-contrast="none">&nbsp;that leverages the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/azure-percept?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Percept Dev
Kit</SPAN></A><SPAN data-contrast="none">&nbsp;and&nbsp;</SPAN><A
href="https://www.lego.com/en-us/themes/boost?CMP=AFC-AffiliateUS-msYS1Nvjv4c-3624890-115554-1"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Lego&nbsp;Boost&nbsp;sensors</SPAN></A><SPAN
data-contrast="none">&nbsp;to create an Azure Percept Mobile!&nbsp;
Also,&nbsp;</SPAN><A href="https://www.linkedin.com/in/pjgcreations/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Peter&nbsp;Gallagher</SPAN></A><SPAN
data-contrast="none">&nbsp;and&nbsp;</SPAN><A
href="https://www.linkedin.com/in/clifford-agius/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Clifford&nbsp;Agius</SPAN></A><SPAN
data-contrast="none">,&nbsp;both incredible&nbsp;</SPAN><A
href="https://mvp.microsoft.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">Azure IoT MVPs</SPAN></A><SPAN
data-contrast="none">&nbsp;from the larger IoT Developer Community and hosts
of&nbsp;</SPAN><A
href="https://www.youtube.com/channel/UCVQtNIXAgtJA-w9pd17WH5A" target="_blank"
rel="noopener"><SPAN data-contrast="none">Azureish&nbsp;Live</SPAN></A><SPAN
data-contrast="none">, will share&nbsp;some&nbsp;exciting&nbsp;content&nbsp;that
will&nbsp;show you how to build your own solutions using the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/azure-percept?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Percept Dev
Kit</SPAN></A><SPAN data-contrast="none">.&nbsp; This will be followed up by an
article from&nbsp;</SPAN><A
href="https://www.linkedin.com/in/chintan-shah-7b7a2811/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Chintan Shah</SPAN></A><SPAN
data-contrast="none">, product manager at&nbsp;</SPAN><A
href="https://nvidia.com/" target="_blank" rel="noopener"><SPAN
data-contrast="none">NVIDIA</SPAN></A><SPAN data-contrast="none">,
that&nbsp;will show you how to enhance pre-trained&nbsp;AI&nbsp;models using the
Transfer Learning Toolkit on Azure Virtual Machines!&nbsp;&nbsp;To&nbsp;finish
off&nbsp;the week, Benjamin Cabe will share his infamous&nbsp;</SPAN><A
href="https://makezine.com/2021/05/28/what-an-ai-nose-knows/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Artificial Nose</SPAN></A><SPAN
data-contrast="none">, a device that can make sense of smells using an off the
shelf microcontroller paired with&nbsp;</SPAN><A href="https://www.tinyml.org/"
target="_blank" rel="noopener"><SPAN data-contrast="none">TinyML</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">July&nbsp;12&nbsp;–&nbsp;16&nbsp;:&nbsp;&nbsp;Beginners,
Students, Teachers, and Makers</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="pdecarlo_1-1623782562639.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288884i4CC049FE5E4CCC1D/image-size/medium?v=v2&amp;px=400"
role="button" title="pdecarlo_1-1623782562639.png"
alt="pdecarlo_1-1623782562639.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">We often hear questions from folks interested in getting
started with IoT, whether it is students looking to add a new in-demand skill to
their learning, faculty looking for curricula to teach their knowledge-hungry
students, bootcamps wanting to upskill&nbsp;their members, or experienced
developers looking to learn a new area.&nbsp;This is
why&nbsp;we’ve&nbsp;built&nbsp;</SPAN><A href="https://aka.ms/iot-beginners"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT for
beginners</SPAN></A><SPAN data-contrast="none">, a&nbsp;free, open
source,&nbsp;project-based,&nbsp;24 lesson&nbsp;curriculum&nbsp;designed to
teach you&nbsp;or your students&nbsp;IoT from the ground up, built in
collaboration between Microsoft and students around the globe.&nbsp;We
understand that not everyone has access to IoT hardware for learning, so we’ve
provided multiple options for what you need to get
started.</SPAN><SPAN>&nbsp;<BR /><BR /></SPAN></P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="pdecarlo_0-1625749717591.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294289iF90BF23C46FCDA14/image-size/medium?v=v2&amp;px=400"
role="button" title="pdecarlo_0-1625749717591.png"
alt="pdecarlo_0-1625749717591.png" /></span></P> <P><SPAN
data-contrast="none">One option is to use IoT kits that our friends
as&nbsp;</SPAN><A href="https://www.seeedstudio.com/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Seeed&nbsp;Studio</SPAN></A><SPAN
data-contrast="none">&nbsp;have put together, based around either an
Arduino-based&nbsp;Wio&nbsp;Terminal, or a Raspberry Pi:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT for beginners with
Seeed and Microsoft - Wio Terminal Starter Kit</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT for beginners with
Seeed and Microsoft - Raspberry Pi 4 Starter Kit</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P><SPAN data-contrast="none">The other option is&nbsp;to
use&nbsp;</SPAN><A href="https://github.com/CounterFit-IoT/CounterFit"
target="_blank" rel="noopener"><SPAN data-contrast="none">virtual IoT hardware
that you can run on your computer</SPAN></A><SPAN data-contrast="none">,
simulating a range of sensors and actuators.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">We’ll be kicking off the week
with&nbsp;a&nbsp;</SPAN><A href="http://aka.ms/HelloIoTSeriesPage"
target="_blank" rel="noopener"><SPAN data-contrast="none">series of
livestreams</SPAN></A><SPAN data-contrast="none">&nbsp;in collaboration with
the&nbsp;</SPAN><A
href="https://developer.microsoft.com/reactor/?WT.mc_id=academic-26896-jabenn"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft
Reactor</SPAN></A><SPAN data-contrast="none">&nbsp;covering the first 4
lessons.&nbsp;We will then share more&nbsp;lessons, focusing on a different
project each day. We start with learning how to&nbsp;use&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/2-farm"
target="_blank" rel="noopener"><SPAN data-contrast="none">IoT in a smart
farm</SPAN></A><SPAN data-contrast="none">&nbsp;to help feed our&nbsp;growing
population.&nbsp;We then move on a journey from the farm to your table with
lessons based on a&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/3-transport"
target="_blank" rel="noopener"><SPAN data-contrast="none">smart logistics
project</SPAN></A><SPAN data-contrast="none">, tracking your food as it leaves
the farm.&nbsp;We jump to AI on the edge next as you learn how to build
an&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/4-manufacturing"
target="_blank" rel="noopener"><SPAN data-contrast="none">AI powered fruit
quality detector</SPAN></A><SPAN data-contrast="none">&nbsp;as part of a smart
factory.&nbsp;Retail is next on the agenda as you see how to&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/5-retail"
target="_blank" rel="noopener"><SPAN data-contrast="none">build stock
counting&nbsp;once again using AI on the edge</SPAN></A><SPAN
data-contrast="none">. To round off the week it’s time to cook something nice,
using a timer you’ve built as part of a&nbsp;</SPAN><A
href="https://github.com/microsoft/IoT-For-Beginners/tree/main/6-consumer"
target="_blank" rel="noopener"><SPAN data-contrast="none">voice controlled smart
assistant</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN data-contrast="none">As you get involved
trying out these lessons and learning IoT we want you to share your experiences!
Please share the IoT apps you have built with the hashtag #JulyOT!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">July&nbsp;26&nbsp;–&nbsp;30&nbsp;:&nbsp;&nbsp;Microcontrollers
and Embedded Hardware</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="azure-sphere-end-to-end.png" style="width: 538px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288885i0A7CD10A7A86BA7E/image-size/large?v=v2&amp;px=999"
role="button" title="azure-sphere-end-to-end.png"
alt="azure-sphere-end-to-end.png" /></span></P> <P><SPAN data-contrast="none">If
you are not thinking about secure IoT then you should be
especially&nbsp;considering&nbsp;recent&nbsp;ransomware attacks on&nbsp;American
infrastructure. The focus of this week will be on building secure by design and
default IoT solutions with&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-au/services/azure-sphere?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure
Sphere</SPAN></A><SPAN data-contrast="none">&nbsp;and Azure
IoT.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">This week will&nbsp;kickstart your Azure
Sphere&nbsp;journey,&nbsp;and&nbsp;learn about best practices and&nbsp;useful
tools&nbsp;that&nbsp;will make&nbsp;your
life&nbsp;easier&nbsp;developing&nbsp;Azure
Sphere&nbsp;applications.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Following this, be first to learn
how we bought the&nbsp;</SPAN><A
href="https://en.wikipedia.org/wiki/Altair_8800" target="_blank"
rel="noopener"><SPAN data-contrast="none">Altair 8800</SPAN></A><SPAN
data-contrast="none">&nbsp;to Azure Sphere and cloud
enabled&nbsp;the&nbsp;40-year-old&nbsp;technology born&nbsp;when the internet
was&nbsp;just&nbsp;a&nbsp;twinkle&nbsp;in&nbsp;Tim Berners-Lee's eye.&nbsp;This
project pushed the boundaries of Azure Sphere, the project is open
source&nbsp;and&nbsp;you will learn how to run&nbsp;the&nbsp;Altair 8800&nbsp;on
the Azure Sphere and develop Basic, Assembler and C applications on the Azure
Sphere.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">We've also teamed up with Microchip
to release new&nbsp;free&nbsp;courseware on&nbsp;</SPAN><A
href="https://aka.ms/mu.microchip/AzureIoT" target="_blank" rel="noopener"><SPAN
data-contrast="none">Microchip University&nbsp;</SPAN></A><SPAN
data-contrast="none">and&nbsp;the&nbsp;Enabling a Seamless IoT Experience with
Microsoft Azure IoT and Microchip MCUs/MPUs&nbsp;</SPAN><A
href="https://aka.ms/mu.microchip/AzureIoT/ConnectingDevices/Webinar"
target="_blank" rel="noopener"><SPAN data-contrast="none">on-demand
webinar</SPAN></A><SPAN data-contrast="none">.&nbsp;Courses will cover the full
device lifecycle, including provisioning at scale, connecting devices to the
cloud, and working with top Microchip MCUs. (PIC, SAM E54,&nbsp;etc)&nbsp;Plus,
we will cover how to work with IoT Plug and Play and using Azure IoT Central for
device management.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">And finally, the Raspberry Pi Foundation released
the new RP2040 based Raspberry Pi Pico this year and there is now a Wi-Fi
enabled developer board built on the RP2040 from&nbsp;</SPAN><A
href="https://store.arduino.cc/usa/nano-rp2040-connect-with-headers"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Arduino</SPAN></A><SPAN data-contrast="none">. In this
segment we will cover how to connect&nbsp;an&nbsp;RP2040 based microcontrollers
to Azure IoT and Azure IoT Central&nbsp;with the&nbsp;new&nbsp;</SPAN><A
href="https://github.com/Azure/azure-sdk-for-c" target="_blank"
rel="noopener"><SPAN data-contrast="none">Azure&nbsp;SDK&nbsp;for Embedded
C</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">July&nbsp;27&nbsp;–&nbsp;31&nbsp;:&nbsp;&nbsp;Online
Learning and Certification</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="0.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288890i36CFFBAC67F7DE5E/image-size/medium?v=v2&amp;px=400"
role="button" title="0.jpg" alt="0.jpg" /></span></SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">During these 31 days, we also want to challenge
our community to sharpen their knowledge of Azure IoT Services by offering
an Azure IoT Developer Journey designed to guide learners in pursuit of an
official designation as a </SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">certified Azure IoT
Developer</SPAN></A><SPAN data-contrast="none">.  We are accompanying this
Learning journey with a “</SPAN><A
href="https://developer.microsoft.com/en-us/offers/30-days-to-learn-it?challenge_option=6437124F-B20B-4840-9715-CFD6D3F25C89?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">30 Days to Learn It -
Cloud Skills Challenge</SPAN></A><SPAN data-contrast="none">”.  This is a
limited-time promotion that will challenge you to learn and apply knowledge of
Azure IoT Services by completing a </SPAN><A
href="https://docs.microsoft.com/en-us/users/cloudskillschallenge/collections/n52yhn0emjx0?WT.mc_id=cloudskillschallenge_6437124F-B20B-4840-9715-CFD6D3F25C89?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">curated series of
interactive learning</SPAN></A><SPAN data-contrast="none"> modules from
the </SPAN><A
href="https://docs.microsoft.com/en-us/learn/browse/?expanded=azure&amp;products=azure-iot%2Cazure-iot-central%2Cazure-iot-edge%2Cazure-iot-hub&amp;resource_type=module"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft Learn Online
Learning Platform</SPAN></A><SPAN data-contrast="none">.  Once you have
registered for the Cloud Skills Challenge, if you are able to complete
the assigned modules within a 30-day time period, you may be
eligible to receive a 50% off voucher to take the official </SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/exams/az-220?WT.mc_id=iot-21003-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">AZ-220 IoT Developer
Certification Exam</SPAN></A><SPAN data-contrast="none">.”&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Otherwise, if you would like to
complete the recommended learning&nbsp;outside the 30 Days to learn it here are
the&nbsp;individuals&nbsp;learning paths:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/introduction-to-azure-iot/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Introduction to Azure
IoT</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/build-intelligent-edge-with-azure-iot-edge/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Build the intelligent
edge with Azure IoT Edge</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/securely-connect-iot-devices/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Securely connect IoT
devices to the cloud</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/develop-iot-solutions-with-azure-iot-central/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop IoT solutions
with Azure IoT Central</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="5" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><A
href="https://docs.microsoft.com/en-us/learn/paths/develop-azure-digital-twins/?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop with Azure
Digital Twins</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <P>&nbsp;</P> <P><SPAN data-contrast="none">Apart from the self-paced
learning&nbsp;approach&nbsp;if you prefer an instructor-led approach to complete
your certification&nbsp;training&nbsp;here is where you
may&nbsp;find&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/certifications/courses/az-220t00?WT.mc_id=iot-20412-cxa"
target="_blank" rel="noopener"><SPAN data-contrast="none">more
information</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Also,&nbsp;during
this&nbsp;week&nbsp;you will learn more about how to&nbsp;</SPAN><A
href="https://aka.ms/IoT-online-workshop" target="_blank" rel="noopener"><SPAN
data-contrast="none">build&nbsp;end to end IoT solutions&nbsp;with our&nbsp;6
part&nbsp;series.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><SPAN
data-contrast="auto">Learn&nbsp;how&nbsp;you can implement&nbsp;Microsoft Azure
Defender for IoT&nbsp;to secure your entire&nbsp;IoT/OT
environment,&nbsp;protect existing IoT/OT devices, and build security into new
IoT innovations in&nbsp;our&nbsp;</SPAN><A href="https://aka.ms/defenderiot"
target="_blank" rel="noopener"><SPAN data-contrast="none">new learning
path</SPAN></A><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">If you would like to take your
learning journey to the next level, applying and relating services and concepts
to a&nbsp;real-world scenario, we have a bunch of demo resources, virtual cloud
workshops and hands-on labs to&nbsp;help you&nbsp;tackle&nbsp;some of these
common scenarios end-to-end whether you are a developer, architect or decision
maker trying to apply some of these key concepts to your industry
or&nbsp;specific&nbsp;business scenario:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="6" data-aria-level="1"><SPAN data-contrast="none">Leveraging
Azure Digital Twins in a supply chain (</SPAN><A
href="https://github.com/microsoft/MCW-Leveraging-Azure-Digital-Twins-in-a-supply-chain"
target="_blank" rel="noopener"><SPAN data-contrast="none">MCW</SPAN></A><SPAN
data-contrast="none">&nbsp;version,&nbsp;</SPAN><A
href="https://github.com/Azure-Samples/IoTDemos/tree/master/ADT-SupplyChainDemo"
target="_blank" rel="noopener"><SPAN data-contrast="none">GitHub</SPAN></A><SPAN
data-contrast="none">&nbsp;version)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="7" data-aria-level="1"><A
href="https://github.com/Azure-Samples/IoTDemos/tree/master/RetailDemo"
target="_blank" rel="noopener"><SPAN data-contrast="none">Retail Demo - Instore
Analytics</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="8" data-aria-level="1"><A
href="https://github.com/Azure-Samples/IoTDemos/tree/master/WorkplaceHealthAndSafetyDemo"
target="_blank" rel="noopener"><SPAN data-contrast="none">Workplace Health and
Safety Demo</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="4" aria-setsize="-1"
data-aria-posinset="8" data-aria-level="1"><SPAN data-contrast="none">Chocolate
Manufacturing Factory Condition Monitoring using Azure Digital Twins (MS
Learn&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/develop-azure-digital-twins/"
target="_blank" rel="noopener"><SPAN
data-contrast="none">version</SPAN></A><SPAN data-contrast="none">,
GitHub&nbsp;</SPAN><A
href="https://github.com/Azure-Samples/digital-twins-samples/tree/master/HandsOnLab"
target="_blank" rel="noopener"><SPAN
data-contrast="none">version</SPAN></A><SPAN data-contrast="none">)</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></LI> </UL> <P><FONT size="5"><STRONG><SPAN
data-contrast="none">Conclusion:</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P><SPAN data-contrast="none">We hope to inspire all who partake in #JulyOT with
the motivation to&nbsp;learn and apply your knowledge to create something
new!&nbsp; If you have an idea, let us know about it on social media by using
the hashtag #JulyOT to share your ideas and creations!&nbsp;&nbsp;We plan to
feature your awesome submissions&nbsp;in a follow-up post, so start
thinking&nbsp;about that project you always wanted
to&nbsp;and&nbsp;keep&nbsp;us&nbsp;posted along the way, we can’t wait to see
what you create!</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P></description>
<pubDate>Thu, 08 Jul 2021 13:11:08 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/julyot-2021-31-days-of-learning-for-everyone-interested-in-the/ba-p/2450414</guid>
<dc:creator>pdecarlo</dc:creator>
<dc:date>2021-07-08T13:11:08Z</dc:date>
...
</item>
<item>
<title>Combating gender-based violence in South Africa with Microsoft
Azure</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/combating-gender-based-violence-in-south-africa-with-microsoft/ba-p/2417972</link>
<description><P>When Naomi and Christine Bisimwa took part in the Microsoft
Hackathon, they had one goal: help local women experiencing gender-based
violence.</P> <P>&nbsp;</P> <P>The result? S.A.F.E., a platform dedicated to
empowering and protecting women.&nbsp;</P> <P>&nbsp;</P> <P>These dedicated
developers led a team called “Combat against GBV” in using Microsoft Azure, AI,
and GitHub to create an educational and interactive solution for women and
children, accessible through Twitter, Facebook Messenger, and WhatsApp.</P>
<P>&nbsp;</P> <P>In this video, Naomi and Christine Bisimwa explain the
importance of cloud and mobile technology in tackling the rampant effects of
gender-based violence in South Africa and the role their chatbot plays in
empowering girls and women in their community to take their lives back into
their own hands.</P> <P>&nbsp;</P> <P>If you are interested in being a change
agent in your community, sharpen your technical skills today at <A
href="http://aka.ms/trainingandcertification"
target="_self">aka.ms/trainingandcertification</A>.</P> <P>&nbsp;</P>
<P><LI-VIDEO vid="https://www.youtube.com/watch?v=rHpNoZthYWw" align="center"
size="large" width="600" height="338" uploading="false"
thumbnail="http://i.ytimg.com/vi/rHpNoZthYWw/hqdefault.jpg"
external="url"></LI-VIDEO></P></description>
<pubDate>Fri, 11 Jun 2021 06:23:58 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/combating-gender-based-violence-in-south-africa-with-microsoft/ba-p/2417972</guid>
<dc:creator>Elsa_Ramesh</dc:creator>
<dc:date>2021-06-11T06:23:58Z</dc:date>
...
</item>
<item>
<title>Fusion Teams 101: Low-Code Apps with Power Platform</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/fusion-teams-101-low-code-apps-with-power-platform/ba-p/2414037</link>
<description><P aria-level="1"><STRONG><SPAN
data-contrast="auto">Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, there will be a blog covering
the&nbsp;webinar of the month for the Low-code application development (LCAD) on
Azure solution.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">LCAD on Azure&nbsp;is a solution
that&nbsp;integrates the robust development capabilities of low code Microsoft
Power Apps and the Azure products such as Azure Functions, Azure Logic Apps, and
more.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">This
month’s&nbsp;webinar&nbsp;is&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-fusion-teams-101LowCode-power-platform.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">‘Fusion Teams 101: Low
Code Apps with Power&nbsp;Platform.’</SPAN></A></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_0-1622747557549.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286060i942D4AE1E8A54363/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_0-1622747557549.png"
alt="riduncan_0-1622747557549.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">This blog will briefly recap</SPAN><SPAN
data-contrast="none"> </SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">, </SPAN><SPAN
data-contrast="auto">provide an overview of the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">fusion development&nbsp;learning path</SPAN></STRONG><SPAN
data-contrast="auto">,&nbsp;low code&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">serverless architecture</SPAN></STRONG><SPAN
data-contrast="auto">, and recent&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">pro developer focused updates to the Power
Platform</SPAN></STRONG><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">This&nbsp;is a helpful blog for those&nbsp;looking
to deep dive on Fusion Development with Power Platform&nbsp;and those who want
to&nbsp;integrate a fusion development team&nbsp;in their work
environment.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">What&nbsp;is Low code application development on
Azure?</SPAN></STRONG><SPAN data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none"> </SPAN><SPAN
data-contrast="none">was created to help developers build business applications
faster with less code.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Leveraging the Power Platform, and more
specifically Power Apps, yet helping them scale and extend their Power Apps with
Azure services.  </SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">For
example, a pro developer who works for a manufacturing company would need to
build a line-of-business (LOB) application to help warehouse employees
track&nbsp;incoming&nbsp;inventory.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">That application would take months to build, test, and
deploy. Using Power Apps,&nbsp;it can take hours to build, saving time and
resources.  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">However, say the warehouse employees want the
application to place procurement orders for additional&nbsp;inventory
automatically when current&nbsp;inventory hits a determined low.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In the past that would require
another heavy lift by the development team to rework their previous
application&nbsp;iteration.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Due to the&nbsp;integration of Power Apps and Azure a
professional developer can build an API&nbsp;in Visual Studio (VS) Code,
publish&nbsp;it to their Azure portal, and export the API&nbsp;to Power
Apps&nbsp;integrating&nbsp;it&nbsp;into their application as a custom
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Afterwards,
that same API&nbsp;is re-usable&nbsp;indefinitely&nbsp;in the Power Apps’
studio, for future use with other applications, saving the company and
developers more time and resources.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">To learn more about&nbsp;possible scenarios&nbsp;with LCAD
on Azure go through the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">self-guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_1-1622747557535.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286061iF8B49FD1CB33A415/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_1-1622747557535.png"
alt="riduncan_1-1622747557535.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Fusion Development Learning Path</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The fusion development&nbsp;learning path&nbsp;is
centered around&nbsp;a unique&nbsp;story telling style.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">The learner&nbsp;is&nbsp;embedded as part
of&nbsp;the&nbsp;fusion development&nbsp;team
and&nbsp;helps&nbsp;them&nbsp;solve their&nbsp;business&nbsp;problem.&nbsp;The
fusion team needs&nbsp;to track&nbsp;inventory more easily&nbsp;and&nbsp;needs
to track data on&nbsp;their&nbsp;back end,
but&nbsp;the&nbsp;data&nbsp;is&nbsp;in a legacy back end.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">The two&nbsp;teams&nbsp;of&nbsp;the
professional developers and the
citizen&nbsp;developers&nbsp;work&nbsp;together,&nbsp;and the learning path
situates you as a member of the team.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_2-1622747557581.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286062i8820CBCAE7374D8E/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_2-1622747557581.png"
alt="riduncan_2-1622747557581.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Below are the</SPAN><STRONG><SPAN
data-contrast="auto">&nbsp;5 modules</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;that you walk through to solve the&nbsp;problem.
Keep&nbsp;in mind each module&nbsp;can be completed&nbsp;individually but
you&nbsp;learn more throughout each module.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_3-1622747557575.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286065i268087B1732C6B15/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_3-1622747557575.png"
alt="riduncan_3-1622747557575.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Transform&nbsp;Business&nbsp;Software&nbsp;Authoring&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You learn how software development,&nbsp;IT, and
business teams work better together using a new software paradigm called fusion
development&nbsp;and how to&nbsp;develop&nbsp;apps&nbsp;better&nbsp;and faster
using fusion development, which&nbsp;increases
technical&nbsp;intensity.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">&nbsp;Understanding&nbsp;Low&nbsp;Code as
a&nbsp;Traditional&nbsp;Developer</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Professional developers are used to using VS and
VS Code,&nbsp;Power Apps&nbsp;is a different environment&nbsp;therefore&nbsp;the
module covers&nbsp;bridging&nbsp;the gap between existing traditional
development knowledge and Power Apps&nbsp;logic, user&nbsp;interface creation,
and data flow.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">Lastly,
the module&nbsp;introduces Microsoft&nbsp;Power&nbsp;Fx, the language
you&nbsp;write&nbsp;in Power Apps, not just&nbsp;drag,&nbsp;and drop but can
write code behind&nbsp;it.&nbsp;You will&nbsp;see the
Power&nbsp;Fx&nbsp;formula,&nbsp;and the JavaScript equivalent will be side by
side so you can see how you would traditionally build&nbsp;it.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">&nbsp;Build a Power
Apps&nbsp;component&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">This module&nbsp;is&nbsp;about building a custom
Power Apps&nbsp;component.&nbsp;The ability for code first developers&nbsp;to
create something that&nbsp;does not&nbsp;exist yet, build&nbsp;it, test&nbsp;it,
deploy&nbsp;it&nbsp;in Power Apps.&nbsp;Like&nbsp;their current role but they
only&nbsp;build one&nbsp;component&nbsp;of the app rather than build the
entire&nbsp;app.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">&nbsp;Integrate&nbsp;Open
API-enabled&nbsp;web&nbsp;APIs&nbsp;with Azure API&nbsp;Management through
Visual Studio.</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In this module you take a&nbsp;web&nbsp;API, add
an Open API&nbsp;description to&nbsp;it,&nbsp;and&nbsp;deploy to Azure App
Service and API&nbsp;Management.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">&nbsp;Discover and use&nbsp;web APIs with Power
Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Lastly,&nbsp;in this module you build a custom
connector to bridge the gap between Power Apps and API&nbsp;Management to bring
an existing&nbsp;web service&nbsp;into your&nbsp;Power App.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">In the&nbsp;webinar&nbsp;the
presenter, Matt&nbsp;Soucoup&nbsp;will take you through&nbsp;a demo
on&nbsp;building&nbsp;the&nbsp;inventory management
application&nbsp;and&nbsp;will walk you through modules 2, 4, and 5.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Low Code Serverless
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To understand the benefits of building a low code
serverless architecture you&nbsp;must&nbsp;first understand the benefits&nbsp;of
serverless&nbsp;and traditional PaaS architectures.</SPAN></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_4-1622747557537.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286063iC725EEBCB5C35664/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_4-1622747557537.png"
alt="riduncan_4-1622747557537.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">What&nbsp;is Serverless?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Serverless&nbsp;applications&nbsp;can
be&nbsp;defined by&nbsp;three groups, abstraction of servers, event-driven
or&nbsp;instant scale applications, and&nbsp;micro-billing charges.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Abstraction of
servers</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">When as a professional developer you deploy and
develop&nbsp;apps,&nbsp;but you don't have to manage servers.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Event-driven/instant
scale</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The ability for your&nbsp;apps to scale
elastically, scaling can be triggered and be brought back down as
needed.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Micro-billing</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You are billed&nbsp;on a per transaction
basis&nbsp;for the services your&nbsp;applications consume.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Conventional PaaS
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_5-1622747557551.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286064iFA745E64C3991EA2/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_5-1622747557551.png"
alt="riduncan_5-1622747557551.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">It was&nbsp;important to highlight the benefits of
serverless&nbsp;before&nbsp;we&nbsp;dove&nbsp;into the differences of
conventional PaaS architectures, standard serverless architectures, and
serverless architectures that leverage low code.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">In conventional PaaS architectures&nbsp;web and
mobile front ends are where the end user consumes the application. While the
business logic&nbsp;is&nbsp;hosted&nbsp;in an app service,&nbsp;if you’re using
Azure, then Azure App Service.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">That app service communicates with the&nbsp;database,
however&nbsp;if any adjustments are needed for the application the&nbsp;entire
app must be taken down. Or&nbsp;if a function&nbsp;in the app needs to scale up,
the entire app must scale up which&nbsp;increases costs.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Serverless
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_6-1622747557565.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286068iCCD52C5A82FA73B6/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_6-1622747557565.png"
alt="riduncan_6-1622747557565.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">With standard serverless architectures the way the end user
experiences the app on a&nbsp;web or mobile front end&nbsp;is all normal.
However, rather than the app being stored&nbsp;in an app
service,&nbsp;it&nbsp;is broken&nbsp;into&nbsp;its core functions&nbsp;as
serverless APIs, on Azure&nbsp;we&nbsp;call this service Azure
Functions.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">These
functions have all the above-listed benefits of serverless applications, the
ability to scale elastically and only pay for what you consume.&nbsp;Moreover,
react or angular software&nbsp;is used to build the front end.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Low Code&nbsp;Serverless
Architecture</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_7-1622747557567.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286067iAB321E6552479CC0/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_7-1622747557567.png"
alt="riduncan_7-1622747557567.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Serverless Architecture with Power Apps&nbsp;can be the
same build architecture as&nbsp;a&nbsp;standard serverless
architecture&nbsp;build.&nbsp;However,&nbsp;rather
than&nbsp;React&nbsp;or&nbsp;Angular&nbsp;software&nbsp;it&nbsp;is replaced with
Power Apps to build the front end of the app.&nbsp;Power Apps takes less time
than traditional front end build software and can save up to 74% on development
costs.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Build 2021
Fusion Team Power Platform Enhancements</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="auto">In
the&nbsp;webinar&nbsp;the&nbsp;speaker,&nbsp;Kartik&nbsp;Kanakasabesan&nbsp;walks
you through the new&nbsp;improvements to the Power Platform’s capabilities for
professional developers and fusion teams.&nbsp;More specifically,
he&nbsp;demonstrates the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Microsoft Power Platform Command Line&nbsp;interface
support for packages and canvas source files</SPAN></STRONG><SPAN
data-contrast="auto">,&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">Microsoft
Power Platform tools for Visual Studio Code and Visual
Studio</SPAN></STRONG><SPAN data-contrast="auto">, and
the&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">New Microsoft Power Platform
application lifecycle management accelerators</SPAN></STRONG><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN data-contrast="auto">Power Platform
Command Line&nbsp;interface support for packages and canvas source
files</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_8-1622747557539.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286066i8FDF824BD233D71F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_8-1622747557539.png"
alt="riduncan_8-1622747557539.png" /></span></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">As part of the fusion theme, Microsoft
now&nbsp;provides&nbsp;developers with the ability to render canvas apps&nbsp;in
a source-code-friendly format.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The benefit of this capability&nbsp;is to enable
canvas applications to take advantage of enterprise CI/CD pipelines for
deployment and enhance the collaboration between citizens and code-first
developers.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">For example,
when resolving Power&nbsp;Fx&nbsp;functions, a citizen developer referencing a
complicated regular expression for rounding updates&nbsp;in their canvas app,
can collaborate with a pro developer to fix the function&nbsp;in the developer’s
primary tool.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">The citizen
developer can then continue with their application development work using the
fixed regular expression by the pro developer.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_9-1622747557568.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286071i09A5A1F1A1D087CD/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_9-1622747557568.png"
alt="riduncan_9-1622747557568.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_10-1622747557569.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286070i8D1B18AEE581C477/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_10-1622747557569.png"
alt="riduncan_10-1622747557569.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><I><SPAN data-contrast="none">Traditional rendition of Canvas App&nbsp;in
Source control system (Top)&nbsp;issuing the unpack command
(Bottom).</SPAN></I></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_11-1622747557553.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286069i9080CB02BCC1B959/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_11-1622747557553.png"
alt="riduncan_11-1622747557553.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_12-1622747557574.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286073i164F56C749C5AEFB/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_12-1622747557574.png"
alt="riduncan_12-1622747557574.png" /></span></P> <P><I><SPAN
data-contrast="none">Source code rendition of a canvas app (Top)
authoring&nbsp;PowerFx&nbsp;in&nbsp;VSCode&nbsp;(Bottom).</SPAN></I></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In addition, the Microsoft Power
Platform CLI&nbsp;now also simplifies the package deployment process for
Microsoft Power Platform developers and&nbsp;independent software vendors
(ISVs).</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">In the past, this
process required several other command-line tools just to deploy a
package&nbsp;into an environment. Now the Microsoft Power Platform CLI&nbsp;has
a simple new sub command called&nbsp;</SPAN><I><SPAN
data-contrast="none">package.</SPAN></I></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Within the package sub command, developers can
now&nbsp;initialize a package with a template, add package references to
solutions, and build and deploy without manual procedures.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN>&nbsp;<BR /></SPAN><STRONG><SPAN data-contrast="auto">Microsoft Power
Platform tools for Visual Studio Code and Visual Studio</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_13-1622747557554.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286072i4E4815B42D1D7CE2/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_13-1622747557554.png"
alt="riduncan_13-1622747557554.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Microsoft has been actively working on simplifying the
myriad of tools required to develop, pack, and deploy code first components to
Microsoft Power Platform.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">&nbsp;Microsoft Power Platform CLI&nbsp;was the
first&nbsp;iteration of this, and&nbsp;there are now&nbsp;similar capabilities
directly&nbsp;into the code first experience for developers&nbsp;in Visual
Studio Code.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">The Visual
Studio Code extension will be available across different Operating System
platforms like Windows and Mac OS, as&nbsp;Microsoft&nbsp;continues&nbsp;to
bring consistent experiences across platforms.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_14-1622747557576.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286074i5412B67F789CA18F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_14-1622747557576.png"
alt="riduncan_14-1622747557576.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">In addition to the Visual Studio Code capabilities, the
Visual Studio team has been actively working on&nbsp;improving the application
programming&nbsp;interface (API) publishing experience for
developers.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">In the past,
developers building APIs would have to go outside of their developer
environment, after publishing their API&nbsp;to Azure, to register their
API&nbsp;in Azure API&nbsp;Management.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">There are&nbsp;improvements to simplify the process and
provide the ability to publish the API&nbsp;and register&nbsp;in
API&nbsp;Management from Visual Studio directly.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_15-1622747557556.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286077i3BCCDD8E4B3BDDB1/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_15-1622747557556.png"
alt="riduncan_15-1622747557556.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_16-1622747557557.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286078iCBE0FF28002BD7BB/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_16-1622747557557.png"
alt="riduncan_16-1622747557557.png" /></span></P> <P>&nbsp;</P> <P><I><SPAN
data-contrast="none">Publishing the API&nbsp;and registering the API&nbsp;in
API&nbsp;Management from Visual Studio.</SPAN></I></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Once the API&nbsp;is registered&nbsp;in the
API&nbsp;Management catalog, a developer can then export the API&nbsp;to
Microsoft Power Platform as an API&nbsp;Management connector with only a few
clicks.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_17-1622747557540.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286076iE984A0EED53BE036/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_17-1622747557540.png"
alt="riduncan_17-1622747557540.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_18-1622747557542.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286079iCA063A57DF938B03/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_18-1622747557542.png"
alt="riduncan_18-1622747557542.png" /></span></P> <P>&nbsp;</P> <P><I><SPAN
data-contrast="none">Publishing the API&nbsp;from Management to Microsoft Power
Platform.</SPAN></I></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_19-1622747557559.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286081iBCFC1DC6F1489C62/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_19-1622747557559.png"
alt="riduncan_19-1622747557559.png" /></span><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">This now allows citizen developers to easily
access their own company data when creating Microsoft&nbsp;Power Platform apps
and flows.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Similarly,&nbsp;this
capability&nbsp;expanded&nbsp;to also&nbsp;include Azure Functions, allowing
developers to build serverless functions and have them be consumed via
API&nbsp;Management&nbsp;in Microsoft Power Platform.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">Using the Visual Studio 2019 preview edition,
developers within Visual Studio can author their Azure Functions, and publish
them directly&nbsp;into Azure,&nbsp;where&nbsp;</SPAN><A
href="https://aka.ms/openapifunctions" target="_blank" rel="noopener"><SPAN
data-contrast="none">developers are also able to register their
Functions&nbsp;in API&nbsp;Management without leaving Visual
Studio</SPAN></A><SPAN data-contrast="none">.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_20-1622747557560.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286080i1EFF9315E5D8BA53/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_20-1622747557560.png"
alt="riduncan_20-1622747557560.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_21-1622747557543.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286084iB92B450F34773342/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_21-1622747557543.png"
alt="riduncan_21-1622747557543.png" /></span></P> <P><I><SPAN
data-contrast="none">Publishing Azure Functions and registering&nbsp;in
API&nbsp;Management from within Visual Studio.</SPAN></I></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">Once the API&nbsp;is published and
registered&nbsp;in API&nbsp;Management, the API&nbsp;can be exported as a
connector to Microsoft Power Platform and consumed by apps and flows with
ease.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_22-1622747557533.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286082iCFF2C8DCF1591175/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_22-1622747557533.png"
alt="riduncan_22-1622747557533.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_23-1622747557544.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286083i4C66A06F54C4341B/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_23-1622747557544.png"
alt="riduncan_23-1622747557544.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_24-1622747557508.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286085iAD65B72DC5C1D72E/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_24-1622747557508.png"
alt="riduncan_24-1622747557508.png" /></span></P> <P><I><SPAN
data-contrast="none">Using the Azure Function as Custom Connector&nbsp;in
Microsoft Power Platform Applications.</SPAN></I><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Microsoft&nbsp;is&nbsp;constantly
looking at ways to make&nbsp;citizens&nbsp;and pro developers
collaborate&nbsp;in a frictionless way, without leaving their authoring
environments.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">&nbsp;You
can download Visual Studio 2019 build 16.10 to try out these API&nbsp;publishing
capabilities&nbsp;in June.</SPAN></P> <P>&nbsp;</P> <P
aria-level="3"><STRONG><SPAN data-contrast="none">New Microsoft Power Platform
application lifecycle management accelerators</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_25-1622747557570.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286086i82C3ED72B12F59B5/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_25-1622747557570.png"
alt="riduncan_25-1622747557570.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">The&nbsp;</SPAN><A href="https://aka.ms/coestarterkit"
target="_blank" rel="noopener"><SPAN data-contrast="none">Center of Excellence
(CoE) Starter Kit</SPAN></A><SPAN data-contrast="none">, empowers&nbsp;pro and
citizen developers alike to participate&nbsp;in&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/power-platform/alm/" target="_blank"
rel="noopener"><SPAN data-contrast="none">application lifecycle management
(ALM)</SPAN></A><SPAN data-contrast="none">&nbsp;and accelerate the process with
out-of-the-box Azure DevOps pipelines and GitHub workflow templates.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">The accelerators will be open source
and available at the&nbsp;</SPAN><A
href="https://github.com/microsoft/coe-starter-kit" target="_blank"
rel="noopener"><SPAN data-contrast="none">new CoE Starter Kit GitHub
repository</SPAN></A><SPAN data-contrast="none">. An&nbsp;</SPAN><A
href="https://www.youtube.com/watch?v=aO-CmmGebLk" target="_blank"
rel="noopener"><SPAN data-contrast="none">overview of the accelerators&nbsp;is
available here</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_26-1622747557578.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286087i613386931E8C2531/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_26-1622747557578.png"
alt="riduncan_26-1622747557578.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">New template&nbsp;Dataverse&nbsp;Solution to reference and
exercise pipelines and workflows ensures all developers understand all elements
of how the toolkit works and what’s available.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">With ready-to-go pipeline templates enabling Microsoft
Power Platform ALM scenarios that can be quickly configured to drive advanced
scenarios, developers can now benefit from a streamlined experience saving them
valuable time.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_27-1622747557571.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286089iB2AE1B013FF54869/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_27-1622747557571.png"
alt="riduncan_27-1622747557571.png" /></span></P> <P><SPAN
data-contrast="none">New canvas app for&nbsp;</SPAN><A
href="https://aka.ms/aa4am" target="_blank" rel="noopener"><SPAN
data-contrast="none">developers and advanced makers</SPAN></A><SPAN
data-contrast="none">&nbsp;familiar with GitHub concepts and Azure DevOps will
offer a convenient way to drive the dev loop.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">It allows developers to manage
all&nbsp;Dataverse&nbsp;solutions&nbsp;in a single place, enables an easy
approach to commit to Git branches, submit pull requests, and deploy specific
builds to a dev environment while surfacing the status of those
activities.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_28-1622747557573.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286090iE410E3C14F746CD0/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_28-1622747557573.png"
alt="riduncan_28-1622747557573.png" /></span><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">New canvas app for&nbsp;</SPAN><A
href="https://aka.ms/aa4m" target="_blank" rel="noopener"><SPAN
data-contrast="none">citizen developers</SPAN></A><SPAN
data-contrast="none">&nbsp;will offer an easy approach to drive their portion of
DevOps by viewing and managing source code on GitHub and community
contributions.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Once a
project&nbsp;is created and approved, a dashboard allows users to view projects
and navigate to the maker portal to build and create assets under a newly
created solution&nbsp;in just a few clicks.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Makers can deploy their progress or finalized solution to a
test and a production environment.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_29-1622747557562.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286088i2002DE1C5FDB034F/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_29-1622747557562.png"
alt="riduncan_29-1622747557562.png" /></span></P> <P>&nbsp;</P> <P><A
href="https://github.com/microsoft/coe-starter-kit" target="_blank"
rel="noopener"><SPAN data-contrast="none">Open source on GitHub</SPAN></A><SPAN
data-contrast="none">, with acceptance of community contributions,&nbsp;is
coming soon.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">With an active backlog on
GitHub,&nbsp;Microsoft&nbsp;is&nbsp;actively building new functionality and will
start accepting changes from&nbsp;the&nbsp;community soon to make the toolkit
better for all developers.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN>&nbsp;<BR /></SPAN></P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_30-1622747557579.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286093i6036B84F6390FBA3/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_30-1622747557579.png"
alt="riduncan_30-1622747557579.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Conclusion</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">This&nbsp;is just the beginning of what&nbsp;is
possible with fusion team development. To learn more&nbsp;about
Fusion&nbsp;teams watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-fusion-teams-101LowCode-power-platform.html"
target="_blank" rel="noopener"><SPAN data-contrast="none">Fusion Teams 101 Low
Code Apps with Power Platform&nbsp;webinar</SPAN></A><SPAN
data-contrast="auto">&nbsp;that premiers June 4</SPAN><SPAN
data-contrast="auto">th</SPAN><SPAN data-contrast="auto">.</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_31-1622747557563.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286091iAD2562D3828437FE/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_31-1622747557563.png"
alt="riduncan_31-1622747557563.png" /></span></P> <P>&nbsp;</P> <P
aria-level="1"><SPAN data-contrast="auto">To get hands on experience creating a
custom connector and extending a Power App with custom code as covered&nbsp;in
this blog, start with the new learning path&nbsp;</SPAN><SPAN
data-contrast="none">“</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Transform
your&nbsp;business applications with fusion development”.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="1">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_32-1622747557546.jpeg" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286092iC488ED8843095003/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_32-1622747557546.jpeg"
alt="riduncan_32-1622747557546.jpeg" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="1"><SPAN data-contrast="none">After completing the learning
path,&nbsp;if you want to learn even more about how extend your&nbsp;low code
applications with Azure and establishing a fusion development team&nbsp;in
your&nbsp;organization read the accompanying e-book “</SPAN><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Fusion development
approach to building apps using Power Apps”.</SPAN></A></P> <P
aria-level="1">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_33-1622747557547.jpeg" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286095iD06FE0141D13DB71/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_33-1622747557547.jpeg"
alt="riduncan_33-1622747557547.jpeg" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Lastly,&nbsp;if you want to try the new Power Platform
Visual Studio and Visual Studio Code Extensions, visit&nbsp;</SPAN><A
href="https://marketplace.visualstudio.com/items?itemName=microsoft-IsvExpTools.powerplatform-vscode"
target="_blank" rel="noopener"><SPAN
data-contrast="none">aka.ms/ppcvscode</SPAN></A><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_34-1622747557526.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286094iA9455EC53713A775/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_34-1622747557526.png"
alt="riduncan_34-1622747557526.png" /></span></P></description>
<pubDate>Thu, 10 Jun 2021 21:48:44 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/fusion-teams-101-low-code-apps-with-power-platform/ba-p/2414037</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-06-10T21:48:44Z</dc:date>
...
</item>
<item>
<title>Community and certification related resources for developers</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/community-and-certification-related-resources-for-developers/ba-p/2382116</link>
<description><P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">At
Build 2021, we are hosting a table topic for developers - <A
href="https://mybuild.microsoft.com/sessions/9d3582b7-4169-4b80-84fa-367dccad3d41?source=sessions"
target="_blank" rel="noopener">How the community and certifications can help you
achieve more</A>.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Here are a list useful links that will support you to do more with the
community and learning resources at Microsoft.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 14.0pt; color: #7f7f7f;"><SPAN
style="font-weight: bold; text-decoration: underline;">Developer
Content</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><A href="https://docs.microsoft.com/learn/tv/" target="_self"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="LearnTV.png" style="width: 455px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/331507i33C9B0AFA2B76EBE/image-dimensions/455x263?v=v2"
width="455" height="263" role="button" title="LearnTV.png" alt="LearnTV.png"
/></span></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><SPAN style="font-weight: bold;">Learn TV</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">Learn how to build solutions and
use Microsoft products from the experts that built them! Learn TV is the place
to find the latest digital content so you can always keep updated on the latest
announcements, features, and products from Microsoft.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://docs.microsoft.com/learn/tv/" target="_blank"
rel="noopener">https://docs.microsoft.com/learn/tv/</A></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Channel 9</SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">Channel 9 is a community where we bring forward the people
behind our products and connect them with you. One of the recommended shows is
<SPAN style="font-weight: bold;">CodeStories</SPAN>, where we showcase local
Cloud Advocates, MVPs, Product Managers and Community Leaders.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://channel9.msdn.com/" target="_blank"
rel="noopener">https://channel9.msdn.com/</A></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2Fc9CodeStories&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C838d8abe57244217116808d91bd32a15%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637571416018864233%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=l1YwAy1w8aGFty7bl7BlWVLsDsVchW0yNdmMljAaxkw%3D&amp;reserved=0"
target="_blank" rel="noopener">https://aka.ms/c9CodeStories</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft.Source</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Get the latest articles,
documentation, and events from Microsoft. Source—the curated monthly developer
community newsletter.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><A
href="https://azure.microsoft.com/resources/join-the-azure-developer-community/"
target="_blank"
rel="noopener">https://azure.microsoft.com/resources/join-the-azure-developer-community/</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft Tech News</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">The monthly newsletter for developers
and tech professionals, tailored to your preferences. Get the latest information
from around Microsoft, covering technology advancements, interesting finds,
product news, and events near you.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><A
href="https://developer.microsoft.com/Newsletter/" target="_blank"
rel="noopener">https://developer.microsoft.com/Newsletter/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 14.0pt; color:
#7f7f7f;"><SPAN style="font-weight: bold; text-decoration:
underline;">Community</SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><SPAN style="font-weight: bold;">Developer
Communities</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">Discover and connect with others who build with Microsoft tools and
services.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.microsoft.com%2Fcommunity%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7Cbeba118009a44be2d09408d91cb02f05%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637572365289462464%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=N%2FPzxWNBvWtmFYJ%2FPkBlfa1EO9XWfg4Dae8itwHYQH4%3D&amp;reserved=0"
target="_blank"
rel="noopener">https://developer.microsoft.com/community/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Azure</SPAN></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;">Your community for best practices and the latest
news on Azure.</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;"><A href="https://techcommunity.microsoft.com/t5/azure/ct-p/Azure"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/azure/ct-p/Azure</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft 365</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Microsoft 365 on Tech Community.</P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://techcommunity.microsoft.com/t5/microsoft-365/ct-p/microsoft365"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/microsoft-365/ct-p/microsoft365</A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Microsoft Dynamics 365</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">Engage with experts and peers in
our forums; discover blogs, webinars, videos, events, and more.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://community.dynamics.com/" target="_blank"
rel="noopener">https://community.dynamics.com/</A></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN style="font-weight:
bold;">Power Platform Community</SPAN></P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;" lang="en-GB">Microsoft community site for Power
Platform. It has separate forums for Power Apps, Power Automate, Power BI, and
Power Virtual Agents. The new community user groups can also be accessed from
here.</P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpowerusers.microsoft.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175919819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=e3mYIKzS6ldoah8ZLdBHyGVCIF7KoNjoccEgTTlnhDc%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://powerusers.microsoft.com
</SPAN></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
14.0pt; color: #7f7f7f;"><SPAN style="font-weight: bold; text-decoration:
underline;">Learning and Certification Resources</SPAN></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Microsoft Learn</SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">The home for Microsoft documentation and learning for
developers and technology professionals.</P> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><A href="https://docs.microsoft.com/learn/"
target="_blank" rel="noopener">https://docs.microsoft.com/learn/</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">30 Days to Learn It</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">30 Days to Learn It can help you build
skills and start your preparation for Microsoft Certifications for AI, DevOps,
Microsoft 365, low code, IoT, data science, cloud development, and more.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://aka.ms/30-Days-To-Learn-It" target="_blank"
rel="noopener">https://aka.ms/30-Days-To-Learn-It</A></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Microsoft Learn Certifications</SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Earn certifications that show you are
keeping pace with today’s technical roles and requirements.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmicrosoft.com%2Fcertifications&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776530327%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=QWZEJDmWFBYBhsd8Bglujf1zdp3NYoJeCfXiLRUNmZU%3D&amp;reserved=0"
target="_blank" rel="noopener">Microsoft.com/certifications </A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Certification Training Poster</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">Expand your
technical skill set for Azure, Microsoft 365, Dynamics 365, and Power Platform.
Certification overview poster with aligned exams – updated monthly.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2Ftraincertposter&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776530327%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=4pqQ4C%2BLDDK6YYE1qfbBXRn9YzXe46n0XkteaaGzZb0%3D&amp;reserved=0"
target="_blank" rel="noopener">Aka.ms/CertTrainPoster </A></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><SPAN style="font-weight:
bold;">Certification Renewal Overview</SPAN></P> <H1 style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;">Stay current with in-demand skills
through free certification renewals.</H1> <P style="margin: 0in; font-family:
Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2FCertRenewalOverview&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776540320%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=Y90y2pKId0I9hNXMLwPFPzQY1bJKnNV4KfhcKc0UqJQ%3D&amp;reserved=0"
target="_blank" rel="noopener">Aka.ms/CertRenewalOverview</A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Training and Certification Deck </SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">The Microsoft
Azure training and certifications guide has been created to provide training and
certification options to achieve personal success. It includes resources such as
certification portfolio, overview, journey and learning path to help you prepare
for your learning experience.</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2Ftraincertdeck&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C74371ac8a91f4e06c0c608d91e5d2a81%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574207776550314%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=GeBBul%2FA3nw3aFYr%2FO4HXoPmsdGdbbZrz%2Bs7yhJ4iik%3D&amp;reserved=0"
target="_blank" rel="noopener">Aka.ms/TrainCertDeck</A></P> <P style="margin:
0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in;
font-family: Calibri; font-size: 14.0pt; color: #7f7f7f;"><SPAN
style="font-weight: bold; text-decoration: underline;">Resources shared by
Julian Sharp</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB">Want to get involved? Connect with&nbsp;<LI-USER
uid="8450"></LI-USER>&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;" lang="en-GB"><SPAN style="font-weight: bold;">Power
Community events </SPAN></P> <P style="margin: 0in; font-family: Calibri;
font-size: 11.0pt;" lang="en-GB">Community led weekly events covering all
aspects of Dynamics 365 and Power Platform.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fevents.powercommunity.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175919819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=V7wW4amCZdT8BhPsqNd7bvkLJWVFrrh15hAzpQ8U8Bw%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://events.powercommunity.com
</SPAN></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB"><SPAN style="font-weight: bold;">Power Platform School
</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"
lang="en-GB">The Power Platform Summer School works with adults from the BAME
community, providing training on the Microsoft Power Platform as well as
mentorship from industry professionals, during an 8 week program.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpowerplatformschool.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175929811%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=88g3OnN4%2FLcF%2FMPbE%2B%2B1rsM%2FquDYpIMdCnIz4NqbT4s%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://powerplatformschool.com</SPAN></A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN
style="font-weight: bold;">Power Platform Starter Days</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"
lang="en-GB">Inspiring people to find their way into the tech industry and set
the stage for them to start into a Power Platform tech career.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpowerplatformstarterdays.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175939810%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=cafLURw7n624hUVknfWXpkdWbzEm6CCfoYceUF%2F4Zhw%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://powerplatformstarterdays.com
</SPAN></A></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">&nbsp;</P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB"><SPAN style="font-weight: bold;">Power Platform
Hackathons</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;" lang="en-GB">How to plan and run hackathons using Power Platform
tools.</P> <P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fpower-platform%2Fguidance%2Fadoption%2Fhackathons&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175939810%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HXNVEld988GIXQavZvgo%2BHkUgB2p9hhw3L%2BtEw1oAeQ%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://docs.microsoft.com/power-platform/guidance/adoption/hackathons</SPAN></A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN
style="font-weight: bold;">Power Community Virtual Event Hub</SPAN></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB">A
centralised view of Community Virtual events.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.virtualeventshub.com%2F&amp;data=04%7C01%7Cheidic%40redtech.com%7Cec2581de6beb49d25ebd08d91ee0a1d4%7C2a8bb167584b4ff0a140ac2de8b87f70%7C0%7C0%7C637574772407716211%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=jRf9F3cmY8SoqIf30erllYDdC0u0k3TqtkVL7nhUXo0%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://www.virtualeventshub.com</SPAN></A></P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><SPAN
style="font-weight: bold;">Power Platform Study </SPAN><SPAN style="font-weight:
bold;">Group</SPAN></P> <P style="margin: 0in; font-family: Calibri; font-size:
11.0pt;">An online community group learning program for people wanting to take
the Power Platform App Maker PL-100 exam.</P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fukcrm.wordpress.com%2F2021%2F05%2F23%2Fpl-100-study-group-june-2021%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175959798%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HMys9TJY%2FPTzEgYHrrC0rEVN%2F8QhKSx5Z05VMZyvayM%3D&amp;reserved=0"
target="_blank"
rel="noopener"><SPAN>https://ukcrm.wordpress.com/2021/05/23/pl-100-study-group-june-2021/</SPAN></A></P>
<P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;">&nbsp;</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-GB"><SPAN
style="font-weight: bold;">D365 Champs </SPAN></P> <P style="margin: 0in;
font-family: Calibri; font-size: 11.0pt;" lang="en-GB">A Dynamics and Power
Platform community based in South East Asia with over 5,000 followers.</P> <P
style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.d365champions.com%2F&amp;data=04%7C01%7Cv-zugree%40microsoft.com%7C4f41eb6a9d544ae8b67008d91edc63d2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637574754175949804%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=Ah1c%2FeRyol3fwNqaz1x%2Fj3nKcX102ymDQbsEKB0F7hs%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>https://www.d365champions.com
</SPAN></A></P></description>
<pubDate>Fri, 03 Dec 2021 18:57:43 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/community-and-certification-related-resources-for-developers/ba-p/2382116</guid>
<dc:creator>Monish_Gangwani</dc:creator>
<dc:date>2021-12-03T18:57:43Z</dc:date>
...
</item>
<item>
<title>Azure Logic Apps Announcement – GA of single-tenant Standard SKU</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-ga-of-single-tenant-standard-sku/ba-p/2382460</link>
<description><P><STRONG>Meet the New Standard in Workflow</STRONG></P>
<P>&nbsp;</P> <P>Today marks a new chapter for integration at Microsoft - the
General Availability (GA) of Logic Apps Standard - our new single-tenant
offering.&nbsp;A flexible, containerized, modern cloud-scale workflow engine you
can run anywhere. Today, integration is more important than ever, it connects
organizations with their most valuable assets - customers, business partners and
their employees. It makes things happen, seamlessly, silently, to power
experiences we take for granted, APIs being called by your TV to browse
must-watch shows or catch the latest weather, snagging a bargain on your
favorite website (with all the stock checking, order fulfillment and charging
your credit card as backend workflows). Booking vacations when that was a thing,
and keeping us all safe scheduling vaccine appointments on our phones, as well
as checking in with friends and family wherever we are. The list goes on.
Integration is everything.</P> <P>&nbsp;</P> <P><STRONG>Breaking Through the
Cloud Barrier</STRONG></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/services/logic-apps/" target="_blank"
rel="noopener">Logic Apps</A> has always been central to our <A
href="https://www.gartner.com/reprints/?id=1-1ZNT008W&amp;ct=200812&amp;st=sb"
target="_blank" rel="noopener">industry-leading</A> modern cloud integration
platform – <A
href="https://azure.microsoft.com/en-us/product-categories/integration/"
target="_blank" rel="noopener">Azure Integration Services</A>. But it was stuck
in the cloud, our cloud. We know that business can’t always be bounded like
this, and integration needs to be pervasive and accessible, connecting to where
things are today, where they need to be tomorrow and where they might be in the
future. For that, you need to be able <SPAN>to </SPAN>extend the reach of your
network using an integration platform than can truly meet you where you are.
Welcome Logic Apps Standard, our born in the cloud integration engine that can
now be deployed anywhere - our cloud, your cloud, their cloud, on-premises or
edge. And your laptop or dev machine for local development. Windows, Linux or
Mac. Anywhere.</P> <DIV id="tinyMceEditorJon Fancey_0" class="mceNonEditable
lia-copypaste-placeholder">&nbsp;</DIV> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="VSCode.png" style="width: 974px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283359i3E25AD2258F84268/image-size/large?v=v2&amp;px=999"
role="button" title="VSCode.png" alt="VSCode.png" /></span></P> <P>Figure 1. New
VS Code extension.</P> <P>&nbsp;</P> <P><STRONG>The Speed You Need</STRONG></P>
<P>&nbsp;</P> <P>We’ve also introduced new Stateless Workflows. As their name
implies, this is a new workflow type in Logic Apps that doesn’t need storage to
persist state between actions, making your workflows run faster and saving you
money. What’s not to like about that? Stateless Workflows open up new
high-volume, high-throughput scenarios for real-time processing of events,
messages, APIs and data. We’ve achieved performance improvements across both
Stateful and Stateless with a new connector model, built-in to the runtime, to
provide high performance of some of our most common connectors - Service Bus,
Event Hubs, Blob, SQL and MQ. Not only this but you can also now write your own
connectors in .Net just like we do with all the same benefits with our new
extensibility model for custom connectors.</P> <P>&nbsp;</P> <P><STRONG>A New
Designer Designed For You</STRONG></P> <P>&nbsp;</P> <P>We didn’t want to
reimagine our new runtime without reimagining the designer too. The no-code
magic that brings integration to everyone, not just those who can code – or have
time to. The canvas now allows you to bring your most complex business workflow,
orchestration and automation problems. It has been recreated with not just a
more modern look but incorporat<SPAN>e</SPAN>s a new layout engine making
complex workflows render faster than ever, with full drag/drop, a new dedicated
editing pane to de-clutter the whole experience, and new accessibility and other
gestures to make authoring easier than ever. For everyone.</P> <P>&nbsp;</P>
<P>But that’s not all, we’ve also created a new VS Code extension for authoring,
allowing you – for the first time– to easily debug and test on your local
machine, set breakpoints, examine variables values in flight and generally, just
do what you do faster – in the World’s most popular IDE.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="NewDesigner.png" style="width: 974px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283356i694D2143EA572047/image-size/large?v=v2&amp;px=999"
role="button" title="NewDesigner.png" alt="NewDesigner.png" /></span></P>
<P>Figure 2. New Workflow Designer.</P> <P>&nbsp;</P> <P><STRONG>Easier To Live
With</STRONG></P> <P>&nbsp;</P> <P>As well as leaps forward in our runtime, our
designer and general ‘developer flow’ we know that getting your great work to
production with as little manual effort and intervention as possible is also
what you need. We’ve worked on making it possible to parameterize your workflows
in Logic Apps Standard so that you can automate deployments and set
environment-specific values in your pipelines to make DevOps a snap. You can
choose what you’re familiar with to stay in your groove with support for both
Azure DevOps pipelines and GitHub Actions - with provided templates to help you
get productive as quickly as possible. You’re able to take an infrastructure as
code approach to deploy your solutions and use CI/CD practices to enable you and
your team to iterate and deploy without friction as fast as your business
demands.</P> <P>&nbsp;</P> <P>Not only this but Logic Apps Standard also now
provides App Insights support too, allowing you ’see’ your running processes, as
data flows between endpoints and monitor them using Azure Monitor as well as a
host of other Azure built-in management capabilities.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="DevOps.png" style="width: 974px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283357i3D478283523D16C1/image-size/large?v=v2&amp;px=999"
role="button" title="DevOps.png" alt="DevOps.png" /></span></P> <P>Figure 3.
DevOps with Logic Apps.</P> <P>&nbsp;</P> <P><STRONG>You’re Always In
Control</STRONG></P> <P>&nbsp;</P> <P>Because Logic Apps Standard runs on <A
href="https://azure.microsoft.com/en-us/services/app-service/" target="_blank"
rel="noopener">App Service</A> – powering over 2 million web apps serving 40
billion requests per day - you get all the same great benefits that makes App
Service great too. Auto scale, virtual network (VNet) support and Private
Endpoints - right there at your fingertips - to build amazing solutions that
span Web, Workflow and Functions. And of course, because Logic Apps is part of
Azure Integration Services too, you can easily connect your applications using
over 450 connectors, publish and consume APIs with API Management with just a
few clicks and process events with Event Grid at planet-scale.&nbsp;</P>
<P>&nbsp;</P> <P><STRONG>So What’s Next?</STRONG></P> <P>&nbsp;</P> <P>In a
word, lots! We’ve also <A
href="https://docs.microsoft.com/en-us/azure/logic-apps/azure-arc-enabled-logic-apps-overview"
target="_blank" rel="noopener">released today</A>, the public preview of Logic
Apps (and our other PaaS application services) on Azure Arc. Arc brings a new
level of distributed deployment and centralized management to your application
and integration environments. We’re also readying SQL support (Azure SQL, SQL
Server, SQL Data Services) enabling you to run workloads fully locally with no
Azure dependency on storage. Now in private preview, you can sign up <A
href="http://aka.ms/logicappssql" target="_blank" rel="noopener">here</A> to
express interest and get early access before the rest.</P> <P>&nbsp;</P>
<P><STRONG>See For Yourself</STRONG></P> <P>&nbsp;</P> <P>Don’t just take our
word for it, watch our Build session on-demand <A
href="https://mybuild.microsoft.com/sessions/92bd3e12-fbf4-4278-b68f-fe776b02adfa"
target="_blank" rel="noopener">here</A> where Derek Li, will take you through
everything that’s new to get you up to speed. You’ll see how <A
href="https://www.asos.com/" target="_blank" rel="noopener">ASOS</A>, a global
leader in fashion and tech, is using Logic Apps Standard to help them realize
their business goals faster than ever before.</P> <P>&nbsp;</P> <P>You can start
right now, <A href="https://azure.microsoft.com/en-us/free/serverless/"
target="_blank" rel="noopener">for free</A>, and take us for a spin. Read more
on Logic Apps Standard <A
href="https://docs.microsoft.com/en-us/azure/logic-apps/create-single-tenant-workflows-azure-portal"
target="_blank" rel="noopener">here</A>. If you’re already familiar with Logic
Apps and want to understand the differences you can review <A
href="https://docs.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare"
target="_blank" rel="noopener">this</A> article. And as always, let us know what
you think and what we can do to help you in your efforts.</P> <P>&nbsp;</P> <P>-
Jon<SPAN data-contrast="auto">&nbsp;&amp; the Logic Apps&nbsp;</SPAN><SPAN
data-contrast="auto">t</SPAN><SPAN
data-contrast="auto">eam</SPAN></P></description>
<pubDate>Tue, 25 May 2021 15:00:02 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-logic-apps-announcement-ga-of-single-tenant-standard-sku/ba-p/2382460</guid>
<dc:creator>Jon Fancey</dc:creator>
<dc:date>2021-05-25T15:00:02Z</dc:date>
...
</item>
<item>
<title>Introducing Developer Velocity Lab – A Research Initiative to Amplify
Developer Work and Well-Being</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-developer-velocity-lab-a-research-initiative-to/ba-p/2333140</link>
<description><P><A title="Developer Velocity"
href="https://azure.microsoft.com/en-us/overview/developer-velocity/?cid=dvl"
target="_blank" rel="noopener">Developer Velocity</A> is an important and
integral part of developer productivity, and software development is at the core
of how organizations run. Improving developer velocity is critical to continued
satisfaction, iteration, and innovation in software teams. Today, Microsoft is
doubling down on its commitment to improving developers' work and well-being.
Microsoft and GitHub are proud to present <A title="Developer Velocity Lab
(DVL)"
href="https://www.microsoft.com/en-us/research/group/developer-velocity-lab/?cid=techcomm"
target="_blank" rel="noopener">Developer Velocity Lab (DVL)</A>, a joint
research initiative that will live in Microsoft Research.</P> <P>&nbsp;</P>
<P>Microsoft believes scientific advances through research are a fundamental
part of how we empower people through our products and impact society more
generally. Johannes Gehrke, Microsoft Research Technical Fellow and Lab Director
notes, “Microsoft Research is transforming the world through deep research. We
are excited to invest into research to empower developers to achieve more.” With
DVL, we’re creating a mission-focused initiative about developers, which signals
our belief in the importance of the developer community. Leading this research
initiative is Dr. Nicole Forsgren, VP Research and Strategy at GitHub. Her
industry leading work in DevOps and software development metrics includes
authoring the Shingo Publication Award-winning book <A title="Accelerate: The
Science of Lean Software and DevOps"
href="https://www.amazon.com/Accelerate-Software-Performing-Technology-Organizations-ebook/dp/B07B9F83WM"
target="_blank" rel="noopener"><EM>Accelerate: The Science of Lean Software and
DevOps</EM></A>. In Nicole’s own words, “Creating a better experience for the
world’s developers is core to the future of our digital world – whether that’s
through advanced tooling or low/no-code. I’m thrilled to be leading the
initiative in DVL.”</P> <P>&nbsp;</P> <P>DVL's mission is to discover, improve,
and amplify developer work and well-being. We do this through socio-technical
investigations in the following focus areas:</P> <P>&nbsp;</P> <P
class="lia-indent-padding-left-30px"><STRONG>Productivity.</STRONG> Investigate
ways to measure and improve developer productivity so we can help everyone work
better, faster, smarter, and more securely. This includes investigations of
low-code, no-code, and work at the intersection of code and ML and AI.</P> <P
class="lia-indent-padding-left-30px"><STRONG>Community.</STRONG> Study the ways
that people communicate, collaborate, share knowledge, and build communities
when they build software. An important aspect of this is making all kinds of
software development more accessible, inclusive, and sustainable.</P> <P
class="lia-indent-padding-left-30px"><STRONG>Well-being.</STRONG> Investigate
the intersections of happiness, satisfaction, and personal value with software
development activities so we can find ways to make development more fun,
enjoyable, and sustainable.</P> <P>&nbsp;</P> <P>As DVL continues to grow, this
will include cultivating a community of researchers, organizations, and
developers who share our love and commitment to this work. Our goal is for
everyone to benefit from our research, with the intent to develop easily
accessible work, optimized for developers and their communities. DVL will commit
to making the bulk of our findings open, accessible, and available. We hope that
you’ll follow along and utilize our upcoming work.</P> <P>&nbsp;</P> <H2>The
SPACE of Developer Productivity</H2> <P>DVL's first publication, <A title="The
SPACE of Developer Productivity: There's more to it than you think"
href="https://www.microsoft.com/en-us/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/?cid=techcommblog/"
target="_blank" rel="noopener"><EM>The SPACE of Developer Productivity: There's
more to it than you think</EM></A>, introduces a framework to help individuals,
teams, and organizations measure developer productivity in a more holistic and
impactful way.&nbsp; The framework includes five dimensions of software
development to present a more complete picture of productivity and well-being.
The framework is easily adaptable and flexible to many contexts. By including
measures across multiple dimensions (we recommend at least three), teams and
organizations can make better decisions and see better outcomes.</P>
<P>&nbsp;</P> <P>To learn more, watch Nicole present a deep dive into the SPACE
framework and its five dimensions, which are <STRONG>S</STRONG>: satisfaction
and well-being, <STRONG>P</STRONG>: performance, <STRONG>A</STRONG>: activity,
<STRONG>C</STRONG>: communication and collaboration, and <STRONG>E</STRONG>:
efficiency and flow. She’ll also discuss the ins and outs of developer
productivity, sharing common misconceptions as well as example metrics and how
the framework can work for you.</P> <P>&nbsp;</P> <CENTER><IFRAME
src="https://www.youtube.com/embed/t7SXM7njKXw" width="560" height="315"
frameborder="0" allowfullscreen="allowfullscreen" title="YouTube video player"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;
picture-in-picture"></IFRAME></CENTER> <P>&nbsp;</P> <H2>SPACE Framework in
Action: The Good Day Project</H2> <P>In conjunction with DVL’s launch, GitHub
published <A title="The Good Day Project – Personal analytics for good days"
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">&nbsp;The Good Day Project – Personal analytics
for good days</A>. The research presented a first look at the SPACE framework, a
two-week study that invited GitHub developers to take a survey and share their
engineering data to help identify what patterns and practices could help them
have “good days.” A few overarching discoveries into patterns the team
found:</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Finding
flow is key, and interruptions are a drag.</STRONG> Minimal or no interruptions
give developers an 82% chance of having a good day, but interruptions throughout
the day decrease the chance of a good day to just 7%.</P> <P
class="lia-indent-padding-left-30px"><STRONG>Meetings are both awesome and
terrible.</STRONG> Collaboration improves our work, but too many meetings can be
a blocker; going from two to three meetings per day lowered the chances of
developers making progress toward their goals by 60%.</P> <P
class="lia-indent-padding-left-30px"><STRONG>A two minute daily reflection can
help developers improve their days.</STRONG> Developers reported the daily
reflection was a great new habit, and seeing patterns gave them clear ideas for
what to change in their days.</P> <P
class="lia-indent-padding-left-30px">&nbsp;</P> <P>The data was also used to
classify developers’ days as Flowing or Disrupted. Taking a look at these
classifications shows us:</P> <P>&nbsp;</P> <TABLE border="1" width="100%">
<TBODY> <TR> <TD width="50%" height="42px"> <H4>Flowing Days</H4> </TD> <TD
width="50%" height="42px"> <H4>Disrupted Days</H4> </TD> </TR> <TR> <TD
width="50%" height="29px">Less than three meetings per day</TD> <TD width="50%"
height="29px">More than three meetings per day</TD> </TR> <TR> <TD width="50%"
height="29px">Interruptions during a small part of the day</TD> <TD width="50%"
height="29px">Interruptions during most of the day</TD> </TR> <TR> <TD
width="50%" height="29px">Progress towards goals most of the day</TD> <TD
width="50%" height="29px">Less progress towards goals</TD> </TR> </TBODY>
</TABLE> <P>&nbsp;</P> <P>When the study concluded, each participant received a
personalized report to help them optimize their days moving forward. To glean
more insight, including the full survey, read the <A title="The Good Day Project
– Personal analytics for good days"
href="https://github.blog/2021-05-25-octoverse-spotlight-good-day-project/"
target="_blank" rel="noopener">report</A>.</P> <P>&nbsp;</P></description>
<pubDate>Fri, 03 Dec 2021 18:59:02 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-developer-velocity-lab-a-research-initiative-to/ba-p/2333140</guid>
<dc:creator>AlisonYu</dc:creator>
<dc:date>2021-12-03T18:59:02Z</dc:date>
...
</item>
<item>
<title>Kickstart collaborative DevSecOps practices with GitHub and Azure</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/kickstart-collaborative-devsecops-practices-with-github-and/ba-p/2357730</link>
<description><H2>Kickstart collaborative DevSecOps practices with GitHub and
Azure</H2> <P>&nbsp;</P> <P>Companies on the forefront of digital transformation
have seen DevOps provide software engineers and operations teams with a faster
and more efficient way to develop code. Unfortunately, while DevOps practices
have enabled faster, more efficient development cycles, they’ve also uncovered a
new bottleneck—security. While many organizations have opted to push security to
the end of application development and management, this can be very costly. <A
href="https://securityboulevard.com/2020/09/the-importance-of-fixing-and-finding-vulnerabilities-in-development/#:~:text=According%20to%20the%20NIST%20(the,that%20should%20concern%20most%20organizations"
target="_blank" rel="noopener">NIST</A> estimated the cost of fixing a security
defect in production can be up to 60 times more expensive than during the
development cycle. Conversely, Digital leaders recognize the importance of
shifting security left and tackling vulnerabilities as soon as they arise. These
leaders are integrating security into delivery pipelines, leveraging modern
platform capabilities and fostering collaboration between the development and
security teams in the latest evolution of the DevOps methodology, DevSecOps.
Embracing DevSecOps is a software delivery advantage! By uncovering
vulnerabilities earlier, your team can save time remediating issues and
realizing compliancy, while also minimizing any associated costs.</P>
<P>&nbsp;</P> <P>So how can your organization begin their DevSecOps adoption
journey?</P> <P>&nbsp;</P> <P>It starts with incorporating security into the
early stages of the development lifecycle (shift left) along with providing
end-to-end observability to facilitate collaboration between the development and
security teams. At last year’s Ignite, we discussed ways to shift left by <A
href="https://azure.microsoft.com/en-us/blog/enabling-resilient-devops-practices-with-code-to-cloud-automation/"
target="_blank" rel="noopener">adding security scans to container images</A>
created as part of Continuous Integration (CI) workflow. This helps developers
scan for common vulnerabilities in their container images before pushing to a
container registry. Securing Container images is one great way of shifting
security left, but organizations also need to give visibility into delivery
pipelines and registry scans to their security teams.</P> <P>&nbsp;</P>
<P>At&nbsp;<A href="https://aka.ms/Build2021-BRK214" target="_blank"
rel="noopener">Microsoft Build 2021</A>, we are excited to announce the public
preview of <A href="https://azure.microsoft.com/en-us/services/security-center/"
target="_blank" rel="noopener">Azure Security Center</A> (ASC) integration with
GitHub Actions. The new capabilities are our first steps towards building shared
tooling and experience by extending the reporting from container scans into
Azure Security Center—providing security teams better insight and understanding
as to the source of vulnerable container images and the workflows and
repositories they come from.</P> <P>&nbsp;</P> <H1>Provide DevSecOps teams
observability into GitHub Action workflows</H1> <P>With this tighter integration
we are allowing DevSecOps teams to run vulnerability scans, resolve findings,
and visualize the security posture of workflows within their CI/CD pipeline.</P>
<P>&nbsp;</P> <P>CI/CD vulnerability scanning of container images helps shift
security left by offering increased visibility and control and by providing
CI/CD scan assessments to Azure Security Center (ASC). Now, your security teams
can access a holistic, 360-degree view across CI/CD pipelines and runtime
resources through CI/CD scan assessments in ASC. DevSecOps teams will now
receive greater, shared insight into development practices and potentially
vulnerable code, containers, and infrastructure.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_0-1621124575237.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280894i58E28FDD71FA96F3/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_0-1621124575237.png"
alt="samitjhaveri_0-1621124575237.png" /></span></P> <P>&nbsp;</P> <P>Going
forward, any workflow that pushes a container image without a scan action
present will alert the user with an ASC recommendation. Each ASC recommendation
details the affected resources along with a proposed remediation path and steps
to help each path achieve a “healthy” state. Below are details on how to enable
the new capabilities across GitHub and Azure to get you started with your
DevSecOps journey.</P> <P>&nbsp;</P> <H1>How to setup Azure Security Center for
GitHub integration</H1> <P>You can easily onboard this feature by navigating to
Settings-&gt;Integrations in Azure Security Center</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_1-1621124575266.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280897i2D917054CE1310E9/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_1-1621124575266.png"
alt="samitjhaveri_1-1621124575266.png" /></span></P> <P>&nbsp;</P> <P>After
clicking on Configure CI/CD integration, select the Microsoft Managed
Application Insights account pertaining your region of choice.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_2-1621124575294.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280895i1FDE5D441DC1D496/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_2-1621124575294.png"
alt="samitjhaveri_2-1621124575294.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>To enable CI/CD Scanning in GitHub, start by adding the connection string and
authentication token to publish the CI/CD scan results back to your Microsoft
Managed Application Insights account.</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="samitjhaveri_3-1621124575361.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280899i8B234D73CC622E22/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_3-1621124575361.png"
alt="samitjhaveri_3-1621124575361.png" /></span></P> <P>&nbsp;</P> <P>Now it’s
time to harvest insights into container image vulnerabilities. After you’ve
enabled CI/CD scanning for images built and published from GitHub workflows, ASC
showcases any vulnerabilities found in those images. Of course, it’s important
to form a holistic picture of your data, and you can use these CI/CD scan
results along with registry scan results to trace the lifecycle of the image
from CI/CD to registry.</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="samitjhaveri_4-1621124575373.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/280898iDAAAE00808710D09/image-size/medium?v=v2&amp;px=400"
role="button" title="samitjhaveri_4-1621124575373.png"
alt="samitjhaveri_4-1621124575373.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>It’s important to think of this expanded scanning capability as the conduit
to foster collaboration among your developer and SecOps teams. CI/CD
vulnerability scanning gives much needed visibility into container images and
the GitHub workflows that are pushing these images. You can also help developers
scan their container images for common vulnerabilities—eliminating issues before
deploying to a container registry, a containerized web app, or a Kubernetes
cluster.</P> <P>&nbsp;</P> <H1>Start collaborating with GitHub and Azure</H1>
<P>This feature is currently in Public Preview so please use non-production
workflows while using this feature. This feature is available only in Public
Cloud. You will need to use the feature flag as shown to use the feature in
Azure Portal (<A style="font-family: inherit; background-color: #ffffff;"
title="https://ms.portal.azure.com/?"
href="https://ms.portal.azure.com/?feature.cicd=true#blade/Microsoft_Azure_Security/SecurityMenuBlade/5/0/"
target="_blank"
rel="noopener">https://ms.portal.azure.com/?feature.cicd=true#blade/Microsoft_Azure_Security/SecurityMenuBlade/5/0/</A><SPAN
style="font-family: inherit;">)</SPAN><SPAN style="font-family:
inherit;">.&nbsp;</SPAN>This feature flag will be removed in a few days.</P>
<P>&nbsp;</P> <P>To learn more about container security check out <A
href="https://aka.ms/DevSecOpsBlogDoc" target="_blank"
rel="noopener">documentation</A> and visit the <A
href="https://azure.microsoft.com/en-us/products/github/" target="_blank"
rel="noopener">GitHub and Azure</A> page to find the full list of GitHub and
Azure integrations. Don’t forget to check out the <A
href="https://aka.ms/DevSecOpsPaper" target="_blank" rel="noopener">6 tips for
integrating security into your DevOps practices</A> whitepaper to explore even
more ways to kickstart your DevSecOps journey.</P> <P>&nbsp;</P> <P>For any
questions regarding the public preview please send an email to <A
href="mailto:azseccontainerred@microsoft.com" target="_blank"
rel="noopener">azseccontainerred@microsoft.com</A></P></description>
<pubDate>Thu, 10 Jun 2021 21:49:47 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/kickstart-collaborative-devsecops-practices-with-github-and/ba-p/2357730</guid>
<dc:creator>samit_jhaveri</dc:creator>
<dc:date>2021-06-10T21:49:47Z</dc:date>
...
</item>
<item>
<title>Increase Efficiency with Azure Functions and Power Platform</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/increase-efficiency-with-azure-functions-and-power-platform/ba-p/2370351</link>
<description><H3><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none"> </SPAN></H3> <P><SPAN data-contrast="auto">In
2021,&nbsp;</SPAN><SPAN data-contrast="auto">there will be&nbsp;</SPAN><SPAN
data-contrast="auto">a</SPAN><SPAN data-contrast="auto">&nbsp;blog covering the
webinar of the month for the Low-code application development (LCAD) on Azure
solution.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">LCAD on
Azure&nbsp;is a solution that&nbsp;integrates the robust development
capabilities of lo</SPAN><SPAN data-contrast="auto">w&nbsp;</SPAN><SPAN
data-contrast="auto">code Microsoft Power Apps and the Azure
products</SPAN><SPAN data-contrast="auto">&nbsp;such as Azure Functions,
A</SPAN><SPAN data-contrast="auto">zure Logic Apps, and more.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">This month’s webinar&nbsp;is
‘</SPAN><A
href="https://info.microsoft.com/ww-Landing-IncreaseEfficiencyAzureFunctionsPowerPlatform.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN data-contrast="none">Increase Efficiency
with Azure Functions and Power Platform</SPAN></A><SPAN
data-contrast="auto">’</SPAN><SPAN data-contrast="auto">.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">T</SPAN><SPAN
data-contrast="auto">his blog&nbsp;</SPAN><SPAN
data-contrast="auto">will briefly recap</SPAN><SPAN
data-contrast="none"> </SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">, </SPAN><SPAN
data-contrast="auto">provide an overview of&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Azure Functions</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;reusability</SPAN></STRONG><SPAN
data-contrast="auto">,&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">Durable
Functions</SPAN></STRONG><SPAN data-contrast="auto">,&nbsp;</SPAN><SPAN
data-contrast="auto">and&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">how to
integrate Functions&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">across the Power Platform</SPAN></STRONG><SPAN
data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">This&nbsp;is a&nbsp;</SPAN><SPAN
data-contrast="auto">helpful&nbsp;</SPAN><SPAN data-contrast="auto">blog for
those new to Azure Functions and those who want to start&nbsp;integrating Azure
Functions&nbsp;into their Power Platform&nbsp;</SPAN><SPAN
data-contrast="auto">build cases.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_7-1621465684123.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281986i0DEEA1EF3C45C0D9/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_7-1621465684123.png"
alt="riduncan_7-1621465684123.png" /></span> </P> <H3><STRONG><SPAN
data-contrast="none">What&nbsp;is Low</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">code application development on Azure?</SPAN></STRONG><SPAN
data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></H3>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none"> </SPAN><SPAN
data-contrast="auto">was created to help developers build business applications
faster with less code.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Leveraging the Power Platform, and more specifically Power
Apps, yet helping them scale and extend their Power Apps with Azure
services. </SPAN></P> <P><SPAN data-contrast="auto"> </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse&nbsp;</SPAN><SPAN data-contrast="auto">employees</SPAN><SPAN
data-contrast="auto">&nbsp;track&nbsp;incoming&nbsp;inventory.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">That application would take months
to build, test, and deploy. Using Power Apps,&nbsp;it can take hours to build,
saving time and resources. </SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">However, say the warehouse employees want the application
to place procurement orders for additional&nbsp;inventory automatically when
current&nbsp;inventory hits a determined low.&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">In the past that would require another heavy lift
by the development team to rework their previous
application&nbsp;iteration.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Due to the&nbsp;integration of Power Apps and
Azure a professional developer can build an API&nbsp;in Visual Studio (VS) Code,
publish&nbsp;it to their Azure portal, and export the API&nbsp;to Power
Apps&nbsp;integrating&nbsp;it&nbsp;into their application as a custom
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">Afterwards,
that same API&nbsp;is re-usable&nbsp;indefinitely&nbsp;in the Power Apps’
studio, for future use with other applications, saving the company and
developers more time and resources.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To learn more about possible scenarios with LCAD
on Azure go through the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">self-guided
tour</SPAN></A><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Guided tour.JPG" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/282001i461FF92CD4E9752D/image-size/large?v=v2&amp;px=999"
role="button" title="Guided tour.JPG" alt="Guided tour.JPG" /></span></P>
<H3><STRONG><SPAN data-contrast="none">Azure Functions
Reusability</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></H3>
<P><SPAN data-contrast="auto">Why should you reuse functionality? There are four
key reasons: shorter development time, consistency, easier testing, and live
proven code.</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_8-1621465684121.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281987i71741F5488C80B98/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_8-1621465684121.png"
alt="riduncan_8-1621465684121.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">The&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">shorter
development time</SPAN></STRONG><SPAN data-contrast="auto">&nbsp;is
driven&nbsp;by not having to build code again</SPAN><SPAN
data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">
For example,&nbsp;if you’re validating a phone number with your application you
don’t want to have to re-write the code for each nuanced small scenario, such as
rebuilding a web app, then a portal, etc.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Not re-writing code even&nbsp;if&nbsp;it&nbsp;is being
plugged&nbsp;into a new app enables shorter development time.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Additionally, this ties&nbsp;into
greater&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">consistency</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;in your code&nbsp;</SPAN><SPAN
data-contrast="auto">creating a much cleaner user experience</SPAN><SPAN
data-contrast="auto">&nbsp;across platforms and devices.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Reuse of functionality also
enables&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">easier
testing</SPAN></STRONG><SPAN data-contrast="auto">.&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">When reusing functionality you can
automate tests, however&nbsp;if yo</SPAN><SPAN data-contrast="auto">u write new
code each time,&nbsp;</SPAN><SPAN data-contrast="auto">for each&nbsp;iteration
you must manually test the code, subsequently&nbsp;increasing development
time.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">However,&nbsp;if
you reuse functionality, o</SPAN><SPAN data-contrast="auto">nce set up and spun
up, every time you test apps down the line, all you need to do&nbsp;is check the
Azure Function connection rather than starting from scratch.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Lastly,&nbsp;is the advantage
of&nbsp;</SPAN><STRONG><SPAN data-contrast="auto">live proven
code</SPAN></STRONG><SPAN data-contrast="auto">, which can’t be
overstated</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">The separate
aspects of functionality are already proven to work, therefore speeding up the
application development lifecycle.</SPAN></P> <H3><STRONG><SPAN
data-contrast="auto">Durable Functions</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H3>
<P><SPAN data-contrast="auto">Durable Functions are an
extension&nbsp;</SPAN><SPAN data-contrast="auto">of</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">Azure Functions,
that&nbsp;</SPAN><SPAN data-contrast="auto">let you write stateful
functions&nbsp;in a serverless environment. The durable
extension&nbsp;</SPAN><SPAN data-contrast="auto">manages state, checkpoints and
restarts out of the box.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Durable Functions allow the creation of workflow
activities like&nbsp;</SPAN><SPAN data-contrast="auto">Lo</SPAN><SPAN
data-contrast="auto">gic&nbsp;</SPAN><SPAN data-contrast="auto">A</SPAN><SPAN
data-contrast="auto">pps</SPAN><SPAN data-contrast="auto">&nbsp;b</SPAN><SPAN
data-contrast="auto">ut</SPAN><SPAN data-contrast="auto">&nbsp;are</SPAN><SPAN
data-contrast="auto">&nbsp;completely customizable and&nbsp;</SPAN><SPAN
data-contrast="auto">scalable.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Durable F</SPAN><SPAN
data-contrast="auto">unctions can be called both synchronously and
asynchronously. Output from&nbsp;</SPAN><SPAN data-contrast="auto">F</SPAN><SPAN
data-contrast="auto">unctions can be saved to local variables and used
later&nbsp;in execution.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">State and executions are managed within an Azure
Table using the Event Sourcing Pattern and can be queried&nbsp;if
needed.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_9-1621465684132.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281988i54EB7C13D1166FF4/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_9-1621465684132.png"
alt="riduncan_9-1621465684132.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">For example,&nbsp;</SPAN><SPAN data-contrast="auto">if you
want to fill&nbsp;in a field on a&nbsp;</SPAN><SPAN data-contrast="auto">form
and</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">need</SPAN><SPAN data-contrast="auto">&nbsp;to
check&nbsp;</SPAN><SPAN data-contrast="auto">input&nbsp;information
across&nbsp;</SPAN><SPAN data-contrast="auto">multiple databases,</SPAN><SPAN
data-contrast="auto">&nbsp;the</SPAN><SPAN
data-contrast="auto">&nbsp;orchestration&nbsp;</SPAN><SPAN
data-contrast="auto">capabilities&nbsp;</SPAN><SPAN
data-contrast="auto">of&nbsp;</SPAN><SPAN data-contrast="auto">D</SPAN><SPAN
data-contrast="auto">urable Functions&nbsp;</SPAN><SPAN
data-contrast="auto">enable</SPAN><SPAN
data-contrast="auto">&nbsp;that&nbsp;</SPAN><SPAN
data-contrast="auto">functionality</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Moreover,&nbsp;if you
need</SPAN><SPAN data-contrast="auto">&nbsp;all the tasks to happen at the same
time or&nbsp;</SPAN><SPAN data-contrast="auto">need</SPAN><SPAN
data-contrast="auto">&nbsp;them to happen&nbsp;in different patterns</SPAN><SPAN
data-contrast="auto">, you c</SPAN><SPAN data-contrast="auto">ould build
th</SPAN><SPAN data-contrast="auto">at&nbsp;</SPAN><SPAN
data-contrast="auto">functionali</SPAN><SPAN
data-contrast="auto">ty&nbsp;</SPAN><SPAN data-contrast="auto">in Power Automate
or Logic apps.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">L</SPAN><SPAN data-contrast="auto">everaging Durable
Functions enables greater&nbsp;</SPAN><SPAN data-contrast="auto">detail and
options for functionality.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Lastly</SPAN><SPAN data-contrast="auto">,&nbsp;</SPAN><SPAN
data-contrast="auto">these Functions scale rapidly to meet demand levels,
however when&nbsp;inactive they&nbsp;</SPAN><SPAN data-contrast="auto">rest
until called upon again.</SPAN></P> <P>&nbsp;</P> <H3><STRONG><SPAN
data-contrast="auto">Functions&nbsp;Integration across the Power
Platform</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H3>
<H4><STRONG><SPAN data-contrast="auto">Power Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H4>
<P><SPAN data-contrast="auto">There are 3 types of Power Apps&nbsp;available to
integrate with Azure Functions.&nbsp;</SPAN><SPAN data-contrast="auto">Note that
this blog will be covering JavaScript, however you can write Azure Functions in
any language.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">First,
there are&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Dataverse</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;forms</SPAN></STRONG><SPAN data-contrast="auto">.
Dataverse forms are used within Model Drive</SPAN><SPAN data-contrast="auto">n
applications that can contain JavaScript&nbsp;</SPAN><SPAN
data-contrast="auto">F</SPAN><SPAN data-contrast="auto">unctions that fire on
load or property change. These functions can call out to Azure Functions for
long running queries.&nbsp;</SPAN><SPAN data-contrast="auto">Thus, enabling your
colleagues to leverage your&nbsp;Azure Function.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">Second, are&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Power Component Framework controls</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;(PCFs). They are a web packet that you can
put&nbsp;in both model-driven app forms and canvas apps.&nbsp;</SPAN><SPAN
data-contrast="auto">The code can be called from either place,&nbsp;if used to
call out an Azure Function&nbsp;it creates a double layer of reusability and can
separate deployment for use across&nbsp;</SPAN><SPAN
data-contrast="auto">your</SPAN><SPAN
data-contrast="auto">&nbsp;business.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Third, are&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Power Apps&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">P</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">ortals</SPAN></STRONG><SPAN data-contrast="auto">. These
scripts are very similar to&nbsp;</SPAN><SPAN
data-contrast="auto">Dataverse</SPAN><SPAN data-contrast="auto">&nbsp;forms and
can be embedded&nbsp;into a portal to call&nbsp;</SPAN><SPAN
data-contrast="auto">any web&nbsp;</SPAN><SPAN
data-contrast="auto">API&nbsp;and</SPAN><SPAN
data-contrast="auto">&nbsp;call&nbsp;</SPAN><SPAN
data-contrast="auto">an&nbsp;</SPAN><SPAN data-contrast="auto">Azure
Function</SPAN><SPAN data-contrast="auto">&nbsp;from the portal</SPAN><SPAN
data-contrast="auto">. Security will have to be handled differently for public
facing po</SPAN><SPAN data-contrast="auto">rtals than&nbsp;internal
applications.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_10-1621465684134.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281994i50A2E1296CC758AE/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_10-1621465684134.png"
alt="riduncan_10-1621465684134.png" /></span></P> <H3><STRONG><SPAN
data-contrast="auto">Power Automate</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H3>
<P><SPAN data-contrast="auto">In the webinar Lee</SPAN><SPAN
data-contrast="auto">&nbsp;Baker</SPAN><SPAN data-contrast="auto">&nbsp;covers
the stages of when</SPAN><SPAN data-contrast="auto">&nbsp;and&nbsp;</SPAN><SPAN
data-contrast="auto">how to connect a Power Automate flow to an Azure
Function.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">When?&nbsp;</SPAN></STRONG><SPAN data-contrast="auto">You
c</SPAN><SPAN data-contrast="auto">an start when a record&nbsp;is
selected&nbsp;in a model driven app, hitting the on-demand flow button,
pus</SPAN><SPAN data-contrast="auto">hes</SPAN><SPAN
data-contrast="auto">&nbsp;those records&nbsp;</SPAN><SPAN
data-contrast="auto">to Power Automate</SPAN><SPAN data-contrast="auto">. Or
you&nbsp;</SPAN><SPAN data-contrast="auto">can&nbsp;</SPAN><SPAN
data-contrast="auto">use</SPAN><SPAN
data-contrast="auto">&nbsp;standard&nbsp;</SPAN><SPAN
data-contrast="auto">Dataverse triggers&nbsp;</SPAN><SPAN
data-contrast="auto">when creating, reading, updating, and deleting
(CRUD)</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN data-contrast="auto">How?</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN data-contrast="auto">HTTP
request actions from Power Automate or Logic Apps, can put data or
URLs&nbsp;</SPAN><SPAN data-contrast="auto">incorporate&nbsp;</SPAN><SPAN
data-contrast="auto">and get payload</SPAN><SPAN
data-contrast="auto">s</SPAN><SPAN data-contrast="auto">&nbsp;back to
use&nbsp;in Azure Functions</SPAN><SPAN data-contrast="auto">, or</SPAN><SPAN
data-contrast="auto">&nbsp;you&nbsp;</SPAN><SPAN
data-contrast="auto">can&nbsp;</SPAN><SPAN data-contrast="auto">build a custom
connector</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">You would build a custom connector
because&nbsp;</SPAN><SPAN data-contrast="auto">HTTP requests&nbsp;</SPAN><SPAN
data-contrast="auto">are&nbsp;</SPAN><SPAN
data-contrast="auto">often</SPAN><SPAN data-contrast="auto">&nbsp;blocked by
data loss policies&nbsp;in Power Platform&nbsp;</SPAN><SPAN
data-contrast="auto">environments but</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">can&nbsp;</SPAN><SPAN data-contrast="auto">circumnavigate
policies</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">Custom connectors&nbsp;</SPAN><SPAN
data-contrast="auto">can be&nbsp;</SPAN><SPAN
data-contrast="auto">created&nbsp;in accordance with data loss&nbsp;</SPAN><SPAN
data-contrast="auto">policies but&nbsp;pull the HTTP request directly&nbsp;into
the canvas application via Azure Functions for a secure and streamlined
approach.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_11-1621465684126.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281993iC659EA39B87CCF71/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_11-1621465684126.png"
alt="riduncan_11-1621465684126.png" /></span></P> <H3><STRONG><SPAN
data-contrast="auto">Conclusion</SPAN></STRONG></H3> <P><SPAN
data-contrast="auto">Th</SPAN><SPAN data-contrast="auto">is&nbsp;is just the
beginning of what&nbsp;is possible with the</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">integration
of&nbsp;</SPAN><SPAN data-contrast="auto">APIs&nbsp;into&nbsp;</SPAN><SPAN
data-contrast="auto">Power Apps&nbsp;</SPAN><SPAN
data-contrast="auto">via&nbsp;</SPAN><SPAN data-contrast="auto">Azure
Functions</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-contrast="auto">&nbsp;To learn more about the&nbsp;integration of Azure
Functions and Power Apps watch&nbsp;</SPAN><SPAN
data-contrast="auto">the&nbsp;</SPAN><SPAN
data-contrast="auto">webinar</SPAN><SPAN
data-contrast="auto">&nbsp;covered&nbsp;in this blog</SPAN><SPAN
data-contrast="auto">&nbsp;titled “</SPAN><A
href="https://info.microsoft.com/ww-Landing-IncreaseEfficiencyAzureFunctionsPowerPlatform.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN data-contrast="none">Increase Efficiency
with Azure Functions and Power Platform</SPAN></A><SPAN
data-contrast="auto">”</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P aria-level="1"><SPAN data-contrast="auto">To get hands on
experience creating a custom connector and extending a Power App with custom
code&nbsp;</SPAN><SPAN data-contrast="auto">as covered&nbsp;in this
blog,&nbsp;</SPAN><SPAN data-contrast="auto">start with the new learning path
“</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Transform your
business applications with fusion development</SPAN><SPAN
data-contrast="none">”.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="1">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_12-1621465684128.jpeg" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281995i3181718C12E14EC9/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_12-1621465684128.jpeg"
alt="riduncan_12-1621465684128.jpeg" /></span></P> <P><SPAN
data-contrast="none">After completing the learning path,&nbsp;i</SPAN><SPAN
data-contrast="none">f you want to learn even more about how extend your low
code applications with Azure and establish</SPAN><SPAN
data-contrast="none">ing&nbsp;</SPAN><SPAN data-contrast="none">a fusion
development team&nbsp;in your organization read the
accompanying&nbsp;</SPAN><SPAN data-contrast="none">e</SPAN><SPAN
data-contrast="none">-</SPAN><SPAN data-contrast="none">b</SPAN><SPAN
data-contrast="none">ook&nbsp;</SPAN><SPAN data-contrast="none">“</SPAN><A
href="https://docs.microsoft.com/en-us/powerapps/guidance/fusion-dev-ebook/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Fusion development
approach to building apps using Power Apps</SPAN><SPAN
data-contrast="none">”.</SPAN></A></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_13-1621465684130.jpeg" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/281997i859947C45CCB8DEB/image-size/large?v=v2&amp;px=999"
role="button" title="riduncan_13-1621465684130.jpeg"
alt="riduncan_13-1621465684130.jpeg" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P></description>
<pubDate>Fri, 03 Dec 2021 18:55:35 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/increase-efficiency-with-azure-functions-and-power-platform/ba-p/2370351</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-12-03T18:55:35Z</dc:date>
...
</item>
<item>
<title>Deprecating the Distribution of Microsoft Container Images via Docker
Hub</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deprecating-the-distribution-of-microsoft-container-images-via/ba-p/2366861</link>
<description><H2>Summary</H2> <P>As containers and cloud native workloads
continue to grow, ensuring that customers can reliably acquire vendor artifacts
becomes crucial. Microsoft is committed to offer its customers reliable and
performant experience for pulling Microsoft container images from the Microsoft
Container Registry (MCR or mcr.microsoft.com). MCR contains the full catalog of
container images produced by Microsoft with their most up-to-date versions and
tags. By leveraging Azure’s global footprint, MCR offers public access to
Microsoft’s images globally. With that in mind, we are deprecating all <A
href="https://hub.docker.com/publishers/microsoftowner"
target="_self">/microsoft</A> org container images hosted in Docker Hub
repositories on June 30<SUP>th</SUP>, 2021.</P> <P>&nbsp;</P> <H2>How does this
impact you?</H2> <P>If you continue to reference Microsoft container images
using repositories in Docker Hub, this will have impact on your development,
deployment, and automation scripts.</P> <P>Examples for such references are:
<CODE>FROM microsoft/*</CODE> in Dockerfile or <CODE>docker run
microsoft/*</CODE> in automation scripts. You can leverage <A
href="https://grep.app/" target="_blank" rel="noopener">https://grep.app/</A> to
discover such references in OSS scripts.</P> <UL> <LI>Starting June
1<SUP>st</SUP>, 2021 pulls of <A
href="https://hub.docker.com/publishers/microsoftowner"
target="_self">microsoft/</A> org container images from Docker Hub registry will
be throttled according to Docker Terms of Use. This will limit the number of
pulls that you are allowed within certain time period.</LI> <LI>Starting July
1<SUP>st</SUP>, 2021 repositories from microsoft/ org on Docker Hub will be
removed. At this point development, deployment and automation scripts that still
reference <A href="https://hub.docker.com/publishers/microsoftowner"
target="_self">microsoft/</A> org images from Docker Hub registry will
fail.</LI> </UL> <P>To avoid any impact on your development, deployment or
automation scripts, you must update <CODE>docker pull</CODE> commands,
<CODE>FROM</CODE> statements in Dockerfiles, and other references to
<CODE>microsoft/</CODE> container images to explicitly reference the
<CODE>mcr.microsoft.com</CODE> registry.</P> <P>We understand that certain
repositories from <A href="https://hub.docker.com/publishers/microsoftowner"
target="_self">microsoft/</A> org on Docker Hub registry are highly trafficked,
and customers relying on them may not be able to complete these changes by June
30<SUP>th</SUP>, 2021. We are working to identify those repositories and provide
extension for them. A list of such repositories and for how long they will be
available will be published on <A
href="https://github.com/microsoft/containerregistry/" target="_blank"
rel="noopener">MCR’s GitHub repository</A> by June 1<SUP>st</SUP>, 2021.</P>
<P>&nbsp;</P> <H2>Mapping of Docker Hub repositories to MCR repositories</H2>
<P>Mapping between the repository names on Docker Hub and MCR can be found on <A
href="https://github.com/microsoft/containerregistry/blob/master/docs/dockerhub-to-mcr-repo-mapping.md"
target="_self">MCR's GitHub repository</A>.</P> <P>&nbsp;</P> <H2>Guidance for
Consuming Public Container Images</H2> <P>Having a controlled workflow for
consumption of public content like container images from Docker Hub and MCR is a
key for building a secured and reliable software supply chain. Please see the <A
href="https://opencontainers.org/posts/blog/2020-10-30-consuming-public-content/"
target="_blank" rel="noopener">Open Container Initiative’s Consuming Public
Content</A> for general guidance and <A
href="https://aka.ms/consuming-public-content" target="_blank"
rel="noopener">Azure’s guidance for consuming public content</A>.</P>
<P>&nbsp;</P> <H2>Background</H2> <P>Back in 2018, we announced the <A
href="https://azure.microsoft.com/en-us/blog/microsoft-syndicates-container-catalog/"
target="_blank" rel="noopener">transition of Microsoft container images hosting
to MCR with syndication to Docker Hub</A>, which laid the ground for worldwide
distribution of Microsoft container images. Last year <A
href="https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/"
target="_blank" rel="noopener">Docker announced an update of their terms of
use</A> and <A
href="https://www.docker.com/blog/docker-hub-image-retention-policy-delayed-and-subscription-updates/"
target="_blank" rel="noopener">plans for image retention</A> – both changes
impacting pulls of container images from Docker Hub. Microsoft and Docker have
worked closely to provide smooth transition for customers who need to pull
/microsoft org container images. Docker Hub pages were updated to reflect the
new pull location, mcr.microsoft.com, and are continuously updated with
information how to pull up-to-date tags from MCR. We will continue this
collaboration to provide an easy and frictionless discoverability mechanism for
Microsoft container images through Docker Hub.</P> <P>&nbsp;</P> <H2>How to get
additional help?</H2> <P>We understand that there may be unanswered questions.
You can get additional help by submitting an <A
href="https://github.com/microsoft/containerregistry/issues/new" target="_blank"
rel="noopener">issue on GitHub</A> or sending an email to <A
href="mailto:mcrfeedback@microsoft.com" target="_blank"
rel="noopener">mcrfeedback@microsoft.com</A>.</P></description>
<pubDate>Wed, 19 May 2021 19:56:31 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deprecating-the-distribution-of-microsoft-container-images-via/ba-p/2366861</guid>
<dc:creator>toddysm</dc:creator>
<dc:date>2021-05-19T19:56:31Z</dc:date>
...
</item>
<item>
<title>Plan your Microsoft Azure experience at Microsoft Build</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-build/ba-p/2365265</link>
<description><P>Microsoft Build, our free digital event, starts next week and
runs from May 25-27, 2021. We thought you might be interested to learn ways you
can plan to experience the latest set of developer tools, platforms, and
services helping you build amazing things on your terms, anywhere, with
Microsoft and Azure. You’ll also have a chance to speak with Microsoft experts
and have the opportunity to continue your technical learning journey.</P>
<P>&nbsp;</P> <P><A href="https://mybuild.microsoft.com/home"
target="_self">Register</A>&nbsp;to gain full access to all Microsoft Build has
to offer—it’s easy and at no-cost to you.</P> <P>&nbsp;</P> <P><STRONG>Create
the perfect event schedule</STRONG></P> <P>Explore the session catalog to find
expert speakers, interactive sessions, and more. After registering, get started
on your journey using the <A href="https://mybuild.microsoft.com/sessions"
target="_blank" rel="noopener">Build session catalogue</A>.</P> <P>&nbsp;</P>
<P>Below are a set of featured Technical Sessions kicking off the key themes of
Build 2021, with deeper related Breakout Sessions—all of which you won’t want to
miss:</P> <P>&nbsp;</P> <P><STRONG>Increase Developer Velocity with Microsoft’s
end-to-end developer platform:</STRONG></P> <UL> <LI>TS01: <A
href="https://mybuild.microsoft.com/sessions/5ac55e8d-82e5-4b9f-b9bc-d51187761b42"
target="_blank" rel="noopener">Increase Developer Velocity with Microsoft’s
end-to-end developer platform</A></LI> <LI>BRK210: <A
href="https://mybuild.microsoft.com/sessions/5d379e17-9e56-4afb-a871-d3ab807c75f1"
target="_blank" rel="noopener">What's new in Windows 10 for ALL
developers</A></LI> <LI>BRK211: <A
href="https://mybuild.microsoft.com/sessions/309d47fd-5319-42cf-a54f-3a177653ab63"
target="_blank" rel="noopener">Power Platform is the best way for teams to build
together</A></LI> <LI>BRK212: <A
href="https://mybuild.microsoft.com/sessions/2575e7f5-b57b-487d-950f-ab91b7238f00"
target="_blank" rel="noopener">What's new in Visual Studio Code</A></LI>
<LI>BRK213: <A
href="https://mybuild.microsoft.com/sessions/76ebac39-517d-44da-a58e-df4193b5efa9"
target="_blank" rel="noopener">The future of modern application development with
.NET</A></LI> <LI>BRK214: <A
href="https://mybuild.microsoft.com/sessions/87cc3b82-bc57-483d-90b3-e91e12516352"
target="_blank" rel="noopener">Scaling DevSecOps with GitHub and Azure</A></LI>
<LI>BRK215: <A
href="https://mybuild.microsoft.com/sessions/1b7f92ef-71a6-4a64-bece-001f94a2b7b8"
target="_blank" rel="noopener">Empowering developers with powerful tooling and
enabling frictionless app adoption</A></LI> <LI>BRK216: <A
href="https://mybuild.microsoft.com/sessions/2a64cf46-9578-4c40-b503-00ad0ec21813"
target="_blank" rel="noopener">Building Low Code Vertical Apps using the Power
Platform</A></LI> </UL> <P><STRONG>Deliver new intelligent cloud-native
applications by harnessing the power of Data and AI:</STRONG></P> <UL> <LI>TS02:
<A
href="https://mybuild.microsoft.com/sessions/46f12ac0-4d74-4a53-95b1-22e406edd72c"
target="_blank" rel="noopener">Harness the power of data in your applications
with Azure</A></LI> <LI>BRK220: <A
href="https://mybuild.microsoft.com/sessions/2ba55238-d398-46f9-9ff2-eafcd9d69df3"
target="_blank" rel="noopener">Build intelligent applications infused with
world-class AI</A></LI> <LI>BRK221: <A
href="https://mybuild.microsoft.com/sessions/10930f2e-ad9c-460b-b91d-844d17a5a875"
target="_blank" rel="noopener">Understand the ML process and embed models into
apps</A></LI> <LI>BRK222: <A
href="https://mybuild.microsoft.com/sessions/bd7db37e-c50e-45bc-9e7e-6f791881b887"
target="_blank" rel="noopener">Scale, analyze and serve Microsoft Dynamics 365
application data with Azure</A></LI> <LI>BRK223: <A
href="https://mybuild.microsoft.com/sessions/f06287c8-8e56-452f-ae2f-e739c2be4870"
target="_blank" rel="noopener">Building Digital Twins, Mixed Reality and
Metaverse Apps</A></LI> </UL> <P><STRONG>Build cloud-native applications your
way and run them anywhere:</STRONG></P> <UL> <LI>TS03: <A
href="https://mybuild.microsoft.com/sessions/2debfc2e-f0b3-4adf-bcec-d126930f806f"
target="_blank" rel="noopener">Build cloud-native applications that run
anywhere</A></LI> <LI>BRK230: <A
href="https://mybuild.microsoft.com/sessions/b66c3a65-4d11-4c1b-9b29-4df873a8cf4d"
target="_blank" rel="noopener">Run Open Source Applications your way with
Microsoft Azure</A></LI> <LI>BRK231: <A
href="https://mybuild.microsoft.com/sessions/fd09c810-26ad-45bd-957b-1a70b74d93ec"
target="_blank" rel="noopener">Modernize applications using containers</A></LI>
<LI>BRK232: <A
href="https://mybuild.microsoft.com/sessions/c52cef38-5c92-4bbd-ae49-f78ded025e04"
target="_blank" rel="noopener">Serverless: Event-driven application
development</A></LI> <LI>BRK233: <A
href="https://mybuild.microsoft.com/sessions/bafa8204-25b2-44c1-86a0-2c852c1e3794"
target="_blank" rel="noopener">Build consistent hybrid and multicloud
applications with Azure Arc</A></LI> </UL> <P><STRONG>Follow
#MSBuild</STRONG></P> <P>Explore the latest event news, trending topics, and
share your point of view in real time with your community. Join us on Twitter
and LinkedIn by using #MSBuild.</P> <P>&nbsp;</P> <P><A
href="https://twitter.com/msdev" target="_blank" rel="noopener">Join us on
social &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Connection Zone</STRONG></P>
<P>Only at #MSBuild can you strengthen your network with local connections and
meet with Microsoft product teams to help influence the future of products and
services.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/community-connect" target="_blank"
rel="noopener">Connect today&gt;</A></P> <P>&nbsp;</P> <P><STRONG>Learning
Zone</STRONG></P> <P>The Learning Zone is the center for training, development,
and certification with Microsoft. Whatever your style of learning happens to be,
you can find content and interactive opportunities to boost and diversify your
cloud skills.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/learning-zone" target="_blank"
rel="noopener">Explore trainings &gt;</A></P> <P>&nbsp;</P> <P><STRONG>[New] to
Microsoft Build:&nbsp;Product Roundtables!</STRONG> <BR />There is so much for
you to learn by attending Microsoft Build. And while you attend, we want to
learn from you too! Join group discussions between you, fellow attendees and our
product teams to share insights that will help shape the future of the products
you use.&nbsp;Follow these steps to sign-up for a Product Roundtable:&nbsp;</P>
<P>&nbsp;</P> <UL> <LI>Go to <A href="https://mybuild.microsoft.com"
target="_blank" rel="noopener">https://mybuild.microsoft.com</A> and select “<A
href="https://register.build.microsoft.com/" target="_blank"
rel="noopener">Register Now</A>” (You must be registered for Build to
participate in a Product Roundtable)</LI> <LI>Once you’re registered and are
authenticated, click the “<A
href="https://mybuild.microsoft.com/community-connect" target="_blank"
rel="noopener">Connection Zone</A>” drop-down and select “<A
href="https://sessions.mybuild.microsoft.com/Page/Timezone?redir=sessionscheduler_roundtablehttps://sessions.mybuild.microsoft.com/Account/Login?ReturnUrl=/Page/Timezone?redir=sessionscheduler_roundtable"
target="_blank" rel="noopener">Product Roundtables</A>”.</LI> <LI>Browse the
list of available Product Roundtable meetings; search for a keyword or choose
from the available filters on the left.</LI> </UL> <P>&nbsp;</P> <P><A
href="https://sessions.mybuild.microsoft.com/Account/Login?ReturnUrl=/Page/Timezone?redir=sessionscheduler_roundtable"
target="_blank" rel="noopener">Participate in a Product Roundtable &gt;</A></P>
<P>&nbsp;</P> <P><STRONG>One-on-one consultation</STRONG></P> <P>Schedule your
45-minute, one-on-one consultation with a Microsoft engineer to architect,
design, implement or migrate your solutions.</P> <P>&nbsp;</P> <P><A
href="https://mybuild.microsoft.com/app-consult" target="_blank"
rel="noopener">Schedule today &gt;</A></P> <P>&nbsp;</P> <P><STRONG>Continue
your learning journey</STRONG></P> <P>Discover more in-depth learning paths,
training options, communities, and certification details across all Microsoft
cloud solutions from one place.</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/learnatbuild" target="_blank" rel="noopener">Explore
trainings &gt;</A></P></description>
<pubDate>Thu, 20 May 2021 20:59:13 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-build/ba-p/2365265</guid>
<dc:creator>Mark Winters</dc:creator>
<dc:date>2021-05-20T20:59:13Z</dc:date>
...
</item>
<item>
<title>Microsoft Power Platform is bridging the digital divide in Latin
America</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-power-platform-is-bridging-the-digital-divide-in-latin/ba-p/2356463</link>
<description><P>Sharif Nasser grew up with the dream of becoming an
inventor.</P> <P>&nbsp;</P> <P>As a teenager, he became interested in AI and
machine learning and became a strong believer in technology as a powerful tool
for equity and progress. While currently studying Robotics at Tecnolo’gico de
Monterrey, in Monterrey, Mexico, he uses his technical knowledge and expertise
to bridge the digital divide across Latin America.</P> <P>&nbsp;</P> <P>Through
large scale online teaching ventures of up to 5000 students, he is making
technology more accessible to all. Learn more about his journey and his belief
in low code platforms to lower the barrier to entry: <U><FONT
color="#0000FF">aka.ms/power-students</FONT></U>.</P> <P>&nbsp;</P> <P>If you
would like to sharpen your own technical skills, check out:
aka.ms/trainingandcertification.</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=lMStzDY9TKQ&amp;list=PL6ihFEvicZRClm9-3ohcw3xSw-ZZYbeJo"
align="center" size="large" width="600" height="338" uploading="false"
thumbnail="http://i.ytimg.com/vi/lMStzDY9TKQ/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Fri, 14 May 2021 22:36:47 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-power-platform-is-bridging-the-digital-divide-in-latin/ba-p/2356463</guid>
<dc:creator>Elsa_Ramesh</dc:creator>
<dc:date>2021-05-14T22:36:47Z</dc:date>
...
</item>
<item>
<title>Unlock the Future of Azure IoT through Power Platform</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/unlock-the-future-of-azure-iot-through-power-platform/ba-p/2318270</link>
<description><P><STRONG><SPAN data-contrast="none"><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Azure
IoT Gif maker.gif" style="width: 600px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/277510i56E7681A2EEDBEED/image-size/large?v=v2&amp;px=999"
role="button" title="Azure IoT Gif maker.gif" alt="Azure IoT Gif maker.gif"
/></span></SPAN></STRONG></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none"> </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month&nbsp;there&nbsp;will&nbsp;be
a&nbsp;monthly blog covering the&nbsp;webinar&nbsp;of the month for the Low-code
application development (LCAD) on Azure solution.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">LCAD on Azure is a solution
to&nbsp;demonstrate&nbsp;the robust development capabilities of integrating
low-code Microsoft Power Apps and the Azure products you may be familiar
with. </SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">This
month’s&nbsp;webinar&nbsp;is ‘Unlock the Future of Azure IoT through Power
Platform’.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none"> In this blog
I will briefly recap </SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">, provide an overview
of&nbsp;IoT on Azure and Azure Functions,&nbsp;how to pull an Azure Function
into Power Automate, and&nbsp;how to integrate your Power Automate flow into
Power Apps.</SPAN></P> <P><SPAN data-contrast="none"> </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">What is Low-code application development
on Azure?</SPAN></STRONG><SPAN data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none"> was created to
help developers build business applications faster with less code.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Leveraging the Power Platform, and more
specifically Power Apps, yet helping them scale and extend their Power Apps with
Azure services.</SPAN></P> <P><SPAN data-contrast="none">  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse employees’ track incoming inventory.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">That application would take months to build, test,
and deploy.&nbsp;Using&nbsp;Power&nbsp;Apps,&nbsp;it can take hours to build,
saving time and resources.  </SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">However, say the warehouse employees want the
application to place procurement orders for&nbsp;additional&nbsp;inventory
automatically when current inventory hits a determined low.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">In the past that would require
another heavy lift by the development team
to&nbsp;rework&nbsp;their&nbsp;previous&nbsp;application
iteration.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Due to the integration of Power Apps and Azure a
professional developer can build an&nbsp;API&nbsp;in Visual Studio (VS) Code,
publish it to their Azure portal, and export the API to Power Apps integrating
it into their application as a custom connector.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Afterwards, that same API is re-usable
indefinitely in the Power Apps’ studio, for future use with other applications,
saving the company and developers more time and resources.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">IoT on Azure and Azure
Functions</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-contrast="auto">The&nbsp;goal&nbsp;of&nbsp;this&nbsp;webinar&nbsp;is
to&nbsp;understand&nbsp;how&nbsp;to&nbsp;use IoT hub and Power Apps
to&nbsp;control&nbsp;an&nbsp;IoT device.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To start, one would&nbsp;write the code
in&nbsp;Azure&nbsp;IoT Hub, to send&nbsp;commands&nbsp;directly&nbsp;to your
IoT&nbsp;device.&nbsp;In this&nbsp;webinar&nbsp;Samuel&nbsp;wrote in&nbsp;Node
for IoT Hub, and&nbsp;wrote two&nbsp;basic commands,&nbsp;toggle&nbsp;fan on,
and off.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The commands are sent via the code
in&nbsp;Azure&nbsp;IoT Hub, which&nbsp;at first&nbsp;run locally.&nbsp;Once
tested and confirmed to be running properly the next question is how
can&nbsp;one&nbsp;rapidly&nbsp;call the API&nbsp;from anywhere across the
globe?</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="auto">The answer is to
create a flow in&nbsp;Power Automate, and&nbsp;connect that flow to a&nbsp;Power
App, which&nbsp;will be&nbsp;a complete dashboard that&nbsp;controls&nbsp;the
IoT device&nbsp;from anywhere in the world.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-contrast="auto">To&nbsp;accomplish&nbsp;this&nbsp;task,&nbsp;you&nbsp;have
to&nbsp;first create an Azure Function, which will then be pulled into Power
Automate&nbsp;using a “Get” function creating the flow.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">Once&nbsp;you've&nbsp;built
the&nbsp;Azure&nbsp;Function,&nbsp;run&nbsp;and test it locally first, test
the&nbsp;on and off&nbsp;states&nbsp;via the Function&nbsp;URL.</SPAN></P>
<P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To build&nbsp;a&nbsp;trigger&nbsp;for&nbsp;the
Azure Function, in this case a Power Automate flow, you need&nbsp;to
create&nbsp;an Azure resources group to check the Azure&nbsp;Function
and&nbsp;test&nbsp;its&nbsp;local capabilities.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">If the test fails it could potentially be that you
did&nbsp;not create or have an access token for the IoT device.&nbsp;To connect
a device, IoT or otherwise to the cloud, you need to have an access
token.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">In the&nbsp;webinar&nbsp;Samuel added&nbsp;two
application settings&nbsp;to his function for the on and off
commands.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After adding these access tokens and adjusting the
settings of the IoT device,&nbsp;Samuel was able to successfully run his Azure
Function.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Azure
Function automated with Power Automate</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After building&nbsp;the&nbsp;Azure Function, you
now can build your Power Automate flow&nbsp;to start building your globally
accessible&nbsp;dashboard&nbsp;to&nbsp;operate&nbsp;your IoT device.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Samuel&nbsp;starts by&nbsp;building
a basic Power Automate&nbsp;framework,
then&nbsp;flow,&nbsp;and&nbsp;demonstrates&nbsp;how to test&nbsp;the flow once
complete.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">He starts with a&nbsp;HTTP&nbsp;request,
and&nbsp;implements a “Get”&nbsp;command.&nbsp;From there it is a
straightforward process, to test and get the IoT Device to run.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Power Automate flow into
Power&nbsp;Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After building your Power Automate flow, you
develop a simple UI to toggle the fan on and off.&nbsp;Do this
by&nbsp;building&nbsp;a canvas Power App and importing&nbsp;the Power Automate
flow into the app.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To start,&nbsp;create a blank canvas app, and name
it.&nbsp;In&nbsp;the Power Apps ribbon, you&nbsp;select&nbsp;“button”,
and&nbsp;pick the button’s&nbsp;source,&nbsp;selecting&nbsp;“Power
Automate”&nbsp;and&nbsp;“add&nbsp;a flow”.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Select the flow that is connected to the Azure IoT
device, its name should be reflected in the selection menu.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">If everything is running properly your IoT device
will turn on.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">FYI</SPAN></STRONG><SPAN data-contrast="auto">&nbsp;in the
webinar Samuel is running out of time, so he creates a new Power Automate flow,
which he imports into the canvas app.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Summary</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Make sure to&nbsp;watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-UnlocktheFutureofAzureIoTthroughPowerPlatform.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN
data-contrast="none">webinar </SPAN></A><SPAN data-contrast="none">to learn more
about&nbsp;Azure IoT&nbsp;and how to&nbsp;import Azure Functions&nbsp;into your
Power Apps.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Additionally,
there will be a Low-code application development on Azure ‘Learn Live’ session
during&nbsp;Build, covering the new&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/learn/paths/transform-business-applications-with-fusion-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">.NET&nbsp;x Power Apps
learning path</SPAN></A><SPAN data-contrast="none">, covering integrations with
Azure Functions, Visual Studio, and&nbsp;API Management.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Lastly, tune in to&nbsp;the Power
Apps x Azure featured session&nbsp;at Build&nbsp;on May 25</SPAN><SPAN
data-contrast="none">th</SPAN><SPAN data-contrast="none">,&nbsp;to learn more
about the next Visual Studio extensions, Power Apps source code, and
the&nbsp;ALM&nbsp;accelerator package.&nbsp;Start registering&nbsp;for Microsoft
Build&nbsp;at&nbsp;</SPAN><A href="https://register.build.microsoft.com/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft Build
2021.</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:240}">&nbsp;</SPAN></P></description>
<pubDate>Wed, 19 May 2021 12:19:21 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/unlock-the-future-of-azure-iot-through-power-platform/ba-p/2318270</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-05-19T12:19:21Z</dc:date>
...
</item>
<item>
<title>Visual Studio 2019 Tricks and Techniques - Review, sort of</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/visual-studio-2019-tricks-and-techniques-review-sort-of/ba-p/2280956</link>
<description><P>Earlier this year, Packt released a new book...</P>
<P>&nbsp;</P> <H1 id="title" class="a-spacing-none a-text-normal"><SPAN
class="a-size-extra-large">Visual Studio 2019 Tricks and Techniques: A
developer's guide to writing better code and maximizing productivity</SPAN></H1>
<P>&nbsp;</P> <P><A href="http://aka.ms/VS2019Book" target="_self"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="VS2019Cover.png" style="width: 809px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/274498i98828BF915DFECFC/image-size/large?v=v2&amp;px=999"
role="button" title="VS2019Cover.png" alt="VS2019Cover.png" /></span></A></P>
<P>&nbsp;</P> <P><A href="http://aka.ms/VS2019Book" target="_blank"
rel="noopener">http://aka.ms/VS2019Book</A>&nbsp;</P> <P>&nbsp;</P> <P>But I
should be honest. I was involved in this book. Let me find a version of the
cover with my name on it...</P> <P>&nbsp;</P> <P><A
href="http://aka.ms/VS2019Book" target="_self"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="VS2019Cover02.png" style="width: 637px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/274499i276B431C5E80328F/image-size/large?v=v2&amp;px=999"
role="button" title="VS2019Cover02.png" alt="VS2019Cover02.png"
/></span></A></P> <P>&nbsp;</P> <P>There you go. I wrote the foreword! It was a
great and wonderful thing! At least, I think it was. I really can't remember
what I wrote. I'll go read it...</P> <P>&nbsp;</P> <P>Oh, I like how I opened
the foreword...</P> <P>&nbsp;</P> <P><EM>"By combining Visual Studio Code and
Visual Studio (VS), the brand is over two times more commonly used by developers
than any other environment (Stack Overflow, 2019). What that means is that this
topic is for 80% of all developers."</EM></P> <P>&nbsp;</P> <P>Have you thought
about that? In this day and age, when there are so many IDE options for
developers to pick from, they simply are choosing Visual Studio. There are many
reasons why developers want to use Visual Studio, including compatibility with
languages and tools, as well as various feature sets.&nbsp;</P> <P>&nbsp;</P>
<P>I suppose it doesn't hurt that this is a professional tool (which means it
makes money and thus is very well made, not cobbled together like a Frankenstein
monster, as an open-source project by weekend warriors). And only a company like
Microsoft could do that (invest in a great tool like this) and still make
versions of it available for free!</P> <P>&nbsp;</P> <P>And that's really what
this book is about... unleashing the power and capabilities of this well-adopted
tool set. As I said/wrote in my foreword, the authors (Paul Schroeder and Aaron
Cure) <STRONG>have cracked the code</STRONG>!</P> <P>&nbsp;</P> <P>If you apply
the snippets, templates, git tips, and extension-based practices that you'll
find in this book, then not only will you become more efficient, but you'll also
become your team's hero and thought leader!</P> <P>&nbsp;</P> <P>Before I move
on, did you notice how weird the subtitle was in the top version of the book
cover? Let's inspect it:</P> <P>&nbsp;</P> <P><EM>"A developer's guide to
mastering in core skills with the IDE and unlock advanced productivity
secrets."</EM></P> <P>&nbsp;</P> <P>You could probably read that sentence for 20
minutes before you decipher and interpret all its secrets. I can see why they
landed on a subtitle that was a little simpler to grok ("A developer's guide to
writing better code and maximizing productivity"). Moving on...</P>
<P>&nbsp;</P> <P>Let's take a look at what the topics are...</P> <P>&nbsp;</P>
<OL> <LI>Flavors of Visual Studio</LI> <LI>Keyboard Shortcuts</LI> <LI>IDE Tips
and Tricks</LI> <LI>Working with a Repository</LI> <LI>Working with
Snippets</LI> <LI>Database Explorers</LI> <LI>Compiling, Debugging, and
Versioning&nbsp;</LI> <LI>Introduction to Project and Item Templates</LI>
<LI>Creating Your Own Templates</LI> <LI>Deploying Custom Templates</LI>
<LI>Overviewing Visual Studio 2019 Extensions</LI> <LI>Overviewing VS Code
Extensions</LI> <LI>CodeMaid is Your Friend</LI> <LI>Be Your Team's Hero with
CodeGenHero</LI> <LI>Secure Code with Puma Scan</LI> <LI>Appendix: Other Popular
Productivity Extensions</LI> </OL> <P>&nbsp;</P> <P>I know what you're thinking!
You're thinking, "Is&nbsp;<EM>overviewing</EM> a word?" Yes, yes it is a word!
More specifically, it's <A
href="https://www.bing.com/search?q=define+overviewing&amp;cvid=a5f9a1c4017a4a2aa4f3be7cd9514d1c&amp;aqs=edge.0.0.3836j0j1&amp;pglt=43&amp;FORM=ANNAB1&amp;PC=U531"
target="_self">the present participle of a word</A>.</P> <P>&nbsp;</P>
<P>Anyway, the reason why I wanted to write the foreword (and blog about it), is
because I truly believe in the value. Developers don't use templates,
especially, to the degree that they could. Plus, you'll peruse a plethora of
other topics that you'd be wise to glean from.&nbsp;</P> <P>&nbsp;</P> <P>Also,
one interesting tidbit is that the author (Mr. Schroeder) is partially at fault
for the extension featured in chapter 14, CodeGenHero. So check that out!</P>
<P>&nbsp;</P> <P>Whilst perusing the Amazons, I saw the reviews for the book,
and they're pretty impressive. I want to give you just the titles of the reviews
here, so you can see what I mean:</P> <P>&nbsp;</P> <UL> <LI>"Useful Visual
Studio shortcuts, Git-Jitsu, snippet and debugging knowledge here." - Dan
Hermes</LI> <LI>"Clear and concise with good examples to draw upon for
furthering learning." - Robert Frey</LI> <LI>"This one is a must have!" - Binit
Datta</LI> <LI>"Learn everything about Visual Studio 2019." - Yusuf</LI>
<LI>"Excellent for those with some C# programming experience." - Ben Miller</LI>
</UL> <P>&nbsp;</P> <P>This book is great for noobs and still useful for
ratchety, engineering curmudgeons (I think I'm in transition from the former to
the latter). So check it out, and leave a review on the Amazons:</P>
<P>&nbsp;</P> <UL> <LI><A href="http://aka.ms/VS2019Book" target="_blank"
rel="noopener">http://aka.ms/VS2019Book</A>&nbsp;</LI> </UL> <P>&nbsp;&nbsp;</P>
<P>Remember to keep your mask on your face, your feet on the ground, and your
head in the Cloud!</P> <P>&nbsp;</P> <P>Socially-Distanced Ed</P> <P>&nbsp;</P>
<P>&nbsp;</P></description>
<pubDate>Wed, 19 May 2021 12:31:48 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/visual-studio-2019-tricks-and-techniques-review-sort-of/ba-p/2280956</guid>
<dc:creator>Ed Price</dc:creator>
<dc:date>2021-05-19T12:31:48Z</dc:date>
...
</item>
<item>
<title>Six reasons to join us at RedisConf 2021</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/six-reasons-to-join-us-at-redisconf-2021/ba-p/2273109</link>
<description><P>Spring has arrived, which means that <A
href="https://redislabs.com/redisconf/" target="_self">RedisConf</A>—the annual
celebration of all things Redis—is almost here! Attending RedisConf is one of
the best ways to sharpen your Redis skills by exploring best practices, learning
about new features, and hearing from industry experts. You’ll also be able to
virtually hang out with and learn from thousands of other developers passionate
about Redis.</P> <P>&nbsp;</P> <P>We love Redis here at Microsoft, so we’re
excited to be showing up at RedisConf in a big way this year. We’ll not only be
talking more about our new <A href="https://aka.ms/redisenterprise"
target="_blank" rel="noopener">Azure Cache for Redis Enterprise</A> offering,
but we’ll also be hosting sessions and panels that dive deeper into the best
ways to use Redis on Azure. Want to learn more? Here are seven reasons to attend
RedisConf 2021:</P> <P>&nbsp;</P> <OL> <LI>Explore <A
href="https://redislabs.com/redisconf/training/" target="_blank"
rel="noopener">live and on-demand training</A> on how to use Redis with popular
frameworks like Spring and .NET Core.</LI> <LI>Hear Microsoft CVP Julia Liuson
present a keynote status update about the ongoing collaboration between
Microsoft and Redis Labs, including the Enterprise tiers of Azure Cache for
Redis.</LI> <LI>Listen to customers like Genesys, <A
href="https://redislabs.com/redisconf/sessions/rc21-s23/" target="_blank"
rel="noopener">Adobe</A>, and <A
href="https://redislabs.com/redisconf/sessions/rc21-s21/" target="_blank"
rel="noopener">SitePro</A> who are using Redis Enterprise on Azure for use-cases
as diverse as IoT data ingestion and mobile push notification
deduplication.</LI> <LI>Tune in for a roundtable discussion between the
Microsoft and Redis Labs teams that touches on what the collaboration between
the companies looks like and the benefits it brings to customers.</LI> <LI>Learn
how to <A href="https://redislabs.com/redisconf/sessions/rc21-s10/"
target="_blank" rel="noopener">harness the power of Redis and Apache Kafka</A>
to crunch high-velocity time series data through the power of
RedisTimeSeries.</LI> <LI>Hear from experts from our product team on the best
way to run Redis on Azure, including tips-and-tricks for maximizing performance,
ensuring network security, limiting costs, and building enterprise-scale
deployments.</LI> </OL> <P class="lia-align-center"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="kteegarden_0-1618426689978.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/272899i9F7F1F42B277CAB4/image-size/medium?v=v2&amp;px=400"
role="button" title="kteegarden_0-1618426689978.png"
alt="kteegarden_0-1618426689978.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>RedisConf kicks off on April 20<SUP>th</SUP>, and registration is
free! &nbsp;<A
href="https://redislabs.com/redisconf/?utm_medium=referral&amp;utm_source=partner&amp;utm_campaign=Microsoft+redisconf21-registration-promo"
target="_blank" rel="noopener">Sign-up now to attend</A>. </STRONG>We’ll see you
there.</P></description>
<pubDate>Wed, 14 Apr 2021 18:59:55 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/six-reasons-to-join-us-at-redisconf-2021/ba-p/2273109</guid>
<dc:creator>kteegarden</dc:creator>
<dc:date>2021-04-14T18:59:55Z</dc:date>
...
</item>
<item>
<title>The Azure Data Architecture Map</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-data-architecture-map/ba-p/2251943</link>
<description><P>Hi,</P> <P>&nbsp;</P> <P>I'm excited to announce this new map
and I'm happy to see the great success (beyond expectations) of this map series.
With nearly 300K views, these maps even gave birth to a more exhaustive
book.</P> <P>&nbsp;</P> <P>FYI, here are all the maps of the series:</P> <UL>
<LI><A id="link_20" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></LI> <LI><A id="link_13" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><A id="link_14" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect Map</A></LI> <LI><A
id="link_15" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P>Admittedly, the data map was by far the hardest to build, because there is a
big functional overlap across data services. Nevertheless, I tried to identify
the primary use case of each service, or where a given service shines the
most.&nbsp;</P> <P><BR />The purpose of the this map is to see, in a glimpse,
which services may suit your&nbsp;functional needs but it is up to you to dig
deeper.</P> <P>&nbsp;</P> <P>Here is the map:</P> <P>&nbsp;</P> <P><A
title="Azure Data Architecture Map"
href="https://techcommunity.microsoft.com/gxcuf89792/attachments/gxcuf89792/AzureDevCommunityBlog/641.9/2/data%20architecture.png"
target="_self"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="data architecture.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/269290iA4815DF1EBA9AFE9/image-size/large?v=v2&amp;px=999"
role="button" title="data architecture.png" alt="data architecture.png"
/></span></A></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>which focuses on
the following areas:</P> <UL> <LI>Traditional: many enterprises still deal with
traditional BI and there is nothing wrong with it! This category regroups Azure
services which you can use to build your cubes, run your ETL jobs, etc.<BR /><BR
/></LI> <LI>Modern: this category is the counterpart of the traditional
category. For example, ELT is the modern counterpart of ETL...that's a bit the
spirit :). You may of course find services that are in both sides.<BR /><BR
/></LI> <LI>Big Data: Big Data is also recent in the data lanscape, so it could
have been a subset of the modern group, but for sake of clarity, I decided to
make it a separate group.&nbsp;<BR /><BR /></LI> <LI>Artificial Intelligence: AI
is on every lips so I couldn't skip it although this category was hard to craft.
There is so much overlap across AI services that it's kind of hard to categorize
them. I tried to have a very condensed group. AI would deserve to have its own
map.<BR /><BR /></LI> <LI>Others: in this category, you'll find concerns such as
"sharing data with other companies", "Governing data", etc.</LI> </UL> <P>One
note though: Microsoft is pushing hard on Azure Synapse Analytics and their aim
is to have an all-in-one service, that combines decades of on-premises data
practices and the most modern and top-notch data features. So, you'd better keep
an eye on its development!</P> <P>&nbsp;</P> <P>Here is the pointer to the
map:</P> <P>&nbsp;</P> <TABLE style="border-collapse: collapse; width: 100%;"
border="1" width="100%"> <TBODY> <TR> <TD height="29px" style="width: 50%;">v
1.0</TD> <TD height="29px" style="width: 50%;"><A
href="https://app.mindmapmaker.org/#m:mm3727bf0da6e94510b0861090c0f35d1b"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm3727bf0da6e94510b0861090c0f35d1b</A></TD>
</TR> <TR> <TD height="29px" style="width: 50%;">PDF version</TD> <TD
height="29px" style="width: 50%;"> <TABLE style="border-collapse: collapse;
width: 100%;" border="1" width="100%"> <TBODY> <TR> <TD height="56px"
style="width: 50%;"> <P><A
href="https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter06/maps/Data%20Architecture.pdf"
target="_blank"
rel="noopener">https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter06/maps/Data%20Architecture.pdf</A></P>
</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> </TD> </TR> </TBODY> </TABLE>
<P>&nbsp;</P></description>
<pubDate>Thu, 08 Apr 2021 06:58:03 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-data-architecture-map/ba-p/2251943</guid>
<dc:creator>stephaneey</dc:creator>
<dc:date>2021-04-08T06:58:03Z</dc:date>
...
</item>
<item>
<title>Modern Application Development</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/modern-application-development/ba-p/2235485</link>
<description><P><STRONG><SPAN data-contrast="auto">Blog
Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">This blog will provide an overview
of&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/#:~:text=Modern%20application%20development%20is%20an,%2C%20and%20built%2Din%20monitoring."
target="_blank" rel="noopener"><SPAN data-contrast="none">Modern application
development</SPAN></A><SPAN data-contrast="auto">. The blog will first
define</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">the&nbsp;</SPAN><SPAN data-contrast="auto">m</SPAN><SPAN
data-contrast="auto">odern</SPAN><SPAN data-contrast="auto">&nbsp;application
development</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">approach</SPAN><SPAN
data-contrast="auto">.&nbsp;</SPAN><SPAN data-contrast="auto">Then delve into
the&nbsp;</SPAN><SPAN data-contrast="auto">‘</SPAN><SPAN data-contrast="auto">7
building blocks</SPAN><SPAN data-contrast="auto">’</SPAN><SPAN
data-contrast="auto">&nbsp;of</SPAN><SPAN
data-contrast="auto">&nbsp;the&nbsp;</SPAN><SPAN
data-contrast="auto">approach&nbsp;</SPAN><SPAN data-contrast="auto">starting
with cloud native architecture</SPAN><SPAN data-contrast="auto">, followed by
AI,&nbsp;</SPAN><SPAN data-contrast="auto">Integration, Data, Software delivery,
Operations,&nbsp;</SPAN><SPAN data-contrast="auto">and Security.</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Each segment will define</SPAN><SPAN
data-contrast="auto">&nbsp;and explain&nbsp;</SPAN><SPAN
data-contrast="auto">the&nbsp;</SPAN><SPAN data-contrast="auto">‘</SPAN><SPAN
data-contrast="auto">building block</SPAN><SPAN
data-contrast="auto">’</SPAN><SPAN data-contrast="auto">&nbsp;and how
th</SPAN><SPAN data-contrast="auto">e modern application development approach
leverages the ‘building blocks’ to produce more robust applications.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/"
target="_blank" rel="noopener"><STRONG><SPAN data-contrast="none">What is Modern
Application Development</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;(MAD)</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/#:~:text=Modern%20application%20development%20is%20an,%2C%20and%20built%2Din%20monitoring."
target="_blank" rel="noopener"><SPAN data-contrast="none">Modern application
development</SPAN></A><SPAN data-contrast="none">&nbsp;is an approach that
enables you to&nbsp;</SPAN><SPAN data-contrast="auto">innovate rapidly by using
cloud-native architectures with loosely coupled microservices, managed
databases, AI, DevOps support, and built-in monitoring.</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">The</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">resulting
modern&nbsp;</SPAN><SPAN data-contrast="none">applications</SPAN><SPAN
data-contrast="none">&nbsp;leverage&nbsp;</SPAN><SPAN data-contrast="none">cloud
native architectures by packaging code and dependencies in containers and
deploy</SPAN><SPAN data-contrast="none">ing</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">them&nbsp;</SPAN><SPAN data-contrast="none">as
microservices to increase developer velocity using DevOps practices.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Subsequently m</SPAN><SPAN
data-contrast="none">odern applications utilize continuous integration and
delivery</SPAN><SPAN data-contrast="none">&nbsp;(CI/CD)</SPAN><SPAN
data-contrast="none">&nbsp;technologies and processes to improve system
reliability</SPAN><SPAN data-contrast="none">. Modern apps employ a</SPAN><SPAN
data-contrast="none">utomation to identify and quickly mitigate issues applying
best practices like infrastructure as code and increas</SPAN><SPAN
data-contrast="none">ing</SPAN><SPAN data-contrast="none">&nbsp;data security
with threat detection and protection.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Lastly, modern applications are faster by infusing AI into
native architecture structures to reduce manual tasks, accelerating workflows
and introducing low code application development tools to simplify and expedite
development processes.</SPAN></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/overview/cloudnative/" target="_blank"
rel="noopener"><STRONG><SPAN
data-contrast="none">Cloud-native&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">architectures</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">According to The Cloud Native Computing
Foundation</SPAN><SPAN data-contrast="none">&nbsp;(CNCF)</SPAN><SPAN
data-contrast="none">, cloud&nbsp;</SPAN><SPAN
data-contrast="none">native</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">is</SPAN><SPAN data-contrast="none">&nbsp;defined as
“</SPAN><SPAN data-contrast="none">Cloud-native technologies empower
organizations to build and run scalable applications in modern, dynamic
environments such as public, private, and hybrid clouds.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Containers, service meshes, microservices,
immutable infrastructure, and declarative APIs exemplify this
approach.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">These
techniques enable loosely coupled systems that are resilient, manageable, and
observable. Combined with robust automation, they allow engineers to make
high-impact changes frequently and predictably with minimal toil.”</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Utilizing that definition, what are
the key tenants of a cloud-native approach, and how does each tenant benefit
you?&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">As stated above, cloud-native architectures center
on speed and agility. That speed and agility are derived from 6
factors</SPAN><SPAN data-contrast="auto">:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">C</SPAN><SPAN data-contrast="auto">loud
infrastructure</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">M</SPAN><SPAN data-contrast="auto">odern design</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;M</SPAN><SPAN
data-contrast="auto">icroservices</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;C</SPAN><SPAN
data-contrast="auto">ontainers</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;B</SPAN><SPAN data-contrast="auto">acking
services</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;A</SPAN><SPAN
data-contrast="auto">utomation.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_0-1615417254157.png" style="width: 1378px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262621i9AA898CFC043E67A/image-dimensions/1378x485?v=v2"
width="1378" height="485" role="button" title="riduncan_0-1615417254157.png"
alt="riduncan_0-1615417254157.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Cloud infrastructure</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;is the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">most important factor</SPAN></STRONG><SPAN
data-contrast="auto">&nbsp;that contributes to the speed and agility of
cloud-native architecture.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">3&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">K</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">ey&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">Factors</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="auto">&nbsp;Cloud-native systems full</SPAN><SPAN
data-contrast="auto">y leverage the cloud service model using PaaS compute
infra</SPAN><SPAN data-contrast="auto">structure</SPAN><SPAN
data-contrast="auto">&nbsp;and managed services.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;Cloud-native systems continue to run
as&nbsp;</SPAN><SPAN data-contrast="auto">infrastructure</SPAN><SPAN
data-contrast="auto">&nbsp;scales in or out without worrying about the back end
because the infra is fully managed.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-contrast="auto">Cloud-native systems&nbsp;</SPAN><SPAN
data-contrast="auto">have</SPAN><SPAN data-contrast="auto">&nbsp;auto
scal</SPAN><SPAN data-contrast="auto">ing</SPAN><SPAN data-contrast="auto">,
self-heal</SPAN><SPAN data-contrast="auto">ing</SPAN><SPAN
data-contrast="auto">, and monitor</SPAN><SPAN data-contrast="auto">ing
capabilities.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="auto">Modern Design is highly&nbsp;</SPAN><SPAN
data-contrast="auto">effective&nbsp;</SPAN><SPAN data-contrast="auto">in
part&nbsp;</SPAN><SPAN data-contrast="auto">due to the&nbsp;</SPAN><STRONG><SPAN
data-contrast="auto">Twelve-Factor Application method</SPAN></STRONG><SPAN
data-contrast="auto">, which is a set of principles and practices that
develope</SPAN><SPAN data-contrast="auto">rs follow to construct applications
optimized for modern cloud environments.</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN data-contrast="auto">Most Critical Considerations for Modern
Design</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-contrast="auto">Communication</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">-&nbsp;</SPAN><SPAN
data-contrast="auto">How front ends communication with&nbsp;</SPAN><SPAN
data-contrast="auto">back-end</SPAN><SPAN data-contrast="auto">&nbsp;services,
and how&nbsp;</SPAN><SPAN data-contrast="auto">back-end</SPAN><SPAN
data-contrast="auto">&nbsp;services communicate with each other.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">Resiliency</SPAN><SPAN data-contrast="auto">&nbsp;- How
services in your distributed architecture respond in&nbsp;</SPAN><SPAN
data-contrast="auto">less-than-ideal</SPAN><SPAN
data-contrast="auto">&nbsp;scenarios due to the in-process,
out-process&nbsp;</SPAN><SPAN data-contrast="auto">network communications of
microservices architecture.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-contrast="auto">Distributed Data</SPAN><SPAN data-contrast="auto">&nbsp;-
How do you query data or implement a transaction across multiple
services?</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">Identity</SPAN><SPAN data-contrast="auto">&nbsp;- How does
your service identify who is accessing it and their allotted
permissions?</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><STRONG><SPAN data-contrast="auto">What are
Microservices?</SPAN></STRONG><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Microservices are built as a distributed set of
small, independent services that interact through a shared
fabric.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_1-1615417254174.png" style="width: 1546px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262623i3649D2C4FCDF09FD/image-dimensions/1546x653?v=v2"
width="1546" height="653" role="button" title="riduncan_1-1615417254174.png"
alt="riduncan_1-1615417254174.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Improved Agility
with&nbsp;</SPAN></STRONG><A
href="https://azure.microsoft.com/en-us/solutions/microservice-applications/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Microservices</SPAN></STRONG></A><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Each
microservice has an autonomous lifecycle and can evolve independently and deploy
frequently.&nbsp;</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Each
microservice can scale independently</SPAN><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN data-contrast="none">enabling services
to scale to meet demand.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="none">Those microservices are then
packaged&nbsp;</SPAN><SPAN data-contrast="none">a container image, those images
are stored in container registry</SPAN><SPAN data-contrast="none">. When needed
you transform the container into a running&nbsp;</SPAN><SPAN
data-contrast="none">container&nbsp;</SPAN><SPAN
data-contrast="none">instance</SPAN><SPAN data-contrast="none">, to utilize the
stored microservices.&nbsp;</SPAN><SPAN data-contrast="none">How</SPAN><SPAN
data-contrast="none">&nbsp;do</SPAN><SPAN data-contrast="none">&nbsp;containers
benefit cloud native apps?</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Benefits of&nbsp;</SPAN></STRONG><A
href="https://azure.microsoft.com/en-us/product-categories/containers/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Containers</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Provide portability and guarantee consistency across
environments.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Containers can isolate&nbsp;</SPAN><SPAN
data-contrast="none">microservices</SPAN><SPAN data-contrast="none">&nbsp;and
their dependencies from the underlying infrastructure.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Smaller&nbsp;</SPAN><SPAN
data-contrast="none">footprints</SPAN><SPAN data-contrast="none">&nbsp;than full
virtual machines (VMs). That smaller size increases densi</SPAN><SPAN
data-contrast="none">ty, the number of microservices, that a given host can run
at a time.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="none">Cloud native solutions also increase
application speed and agility via backing services.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_2-1615417254161.png" style="width: 1520px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262622i5F3F3AA6AA90942E/image-dimensions/1520x942?v=v2"
width="1520" height="942" role="button" title="riduncan_2-1615417254161.png"
alt="riduncan_2-1615417254161.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Benefits of&nbsp;</SPAN></STRONG><A
href="https://12factor.net/backing-services" target="_blank"
rel="noopener"><STRONG><SPAN data-contrast="none">Backing
Services</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Save
time and&nbsp;</SPAN><SPAN data-contrast="none">labor</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Treat</SPAN><SPAN data-contrast="none">ing</SPAN><SPAN
data-contrast="none">&nbsp;backing services as</SPAN><SPAN
data-contrast="none">&nbsp;attached&nbsp;</SPAN><SPAN
data-contrast="none">resources</SPAN><SPAN
data-contrast="none">&nbsp;enabl</SPAN><SPAN data-contrast="none">es</SPAN><SPAN
data-contrast="none">&nbsp;the services to attach and detach as needed without
code changes&nbsp;</SPAN><SPAN data-contrast="none">to&nbsp;</SPAN><SPAN
data-contrast="none">the&nbsp;</SPAN><SPAN data-contrast="none">microservices
that contain information, enabling greater&nbsp;</SPAN><SPAN
data-contrast="none">dynamism</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><SPAN data-contrast="none">Lastly, cloud-native solutions leverage
automation.&nbsp;</SPAN><SPAN data-contrast="none">Using
cloud-native&nbsp;</SPAN><SPAN data-contrast="none">architectures</SPAN><SPAN
data-contrast="none">&nbsp;your&nbsp;</SPAN><SPAN
data-contrast="none">infrastructure and deployment are automated, consistent,
and reputable.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Benefits of Automation</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><A
href="https://docs.microsoft.com/en-us/azure/devops/learn/what-is-infrastructure-as-code"
target="_blank" rel="noopener"><SPAN data-contrast="none">In</SPAN><SPAN
data-contrast="none">fr</SPAN><SPAN data-contrast="none">astructure</SPAN><SPAN
data-contrast="none">&nbsp;as Code</SPAN><SPAN
data-contrast="none">&nbsp;(IaC)</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">avoids</SPAN><SPAN
data-contrast="none">&nbsp;manual</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">environment&nbsp;</SPAN><SPAN
data-contrast="none">configuration&nbsp;</SPAN><SPAN data-contrast="none">and
deliver</SPAN><SPAN data-contrast="none">s</SPAN><SPAN
data-contrast="none">&nbsp;stable environments rapidly at scale.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Automated
deployment leverages CI/CD to speed up innovation and deployment, updating
on-demand</SPAN><SPAN data-contrast="none">;&nbsp;</SPAN><SPAN
data-contrast="none">saving money and time.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</OL> <P><A
href="https://azure.microsoft.com/en-us/overview/ai-platform/dev-resources/"
target="_blank" rel="noopener"><STRONG><SPAN data-contrast="none">Artificial
Intelligence</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The second building block in the modern
application development approach is A</SPAN><SPAN data-contrast="none">rtificial
intelligence (AI)</SPAN><SPAN data-contrast="none">.</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN data-contrast="none">What
comprises</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">artificial intelligence</SPAN></STRONG><STRONG><SPAN
data-contrast="none">? How do I&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">add AI to my applications?&nbsp;</SPAN></STRONG><A
href="https://azure.microsoft.com/en-us/overview/ai-platform/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Azure Artificial
Intelligence</SPAN></A><SPAN data-contrast="none">&nbsp;is comprised
of&nbsp;</SPAN><SPAN data-contrast="none">machine learning, knowledge mining,
and AI apps and agents. Un</SPAN><SPAN data-contrast="none">der the apps and
agent's domain there are two overarching products,&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/cognitive-services/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Cognitive
Services</SPAN></A><SPAN data-contrast="none">&nbsp;and&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/services/bot-services/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Bot Service</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN data-contrast="none">that we're going
to focus on</SPAN><SPAN data-contrast="none">.</SPAN></P> <P><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Cognitive services are a collection of domain
specific pre-trained AI models that can be customized with your data. Bot
service&nbsp;</SPAN><SPAN data-contrast="none">is a</SPAN><SPAN
data-contrast="none">&nbsp;purpose-built bot development environment with
out-of-the-box templates. To learn how to add AI to your applications watch
the</SPAN><SPAN data-contrast="none">&nbsp;short</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">video
titled&nbsp;</SPAN><SPAN data-contrast="none">“</SPAN><A
href="https://azure.microsoft.com/en-us/overview/ai-platform/dev-resources/#videos"
target="_blank" rel="noopener"><SPAN data-contrast="none">Easily add AI to your
applications.</SPAN></A><SPAN data-contrast="none">”</SPAN></P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_3-1615417254190.png" style="width: 1543px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262626i22363CD93A58FCD4/image-dimensions/1543x734?v=v2"
width="1543" height="734" role="button" title="riduncan_3-1615417254190.png"
alt="riduncan_3-1615417254190.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Innate Benefits</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">User
benefits:&nbsp;</SPAN></STRONG><SPAN data-contrast="none">Translation, chatbots,
and voice for AI-enabled user interfaces.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Business benefits:</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;Enhanced business logic for scenarios like search,
personalization, document processing, image ana</SPAN><SPAN
data-contrast="none">lytics, anomaly detection, and speech analytics.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">Modern
App</SPAN></STRONG><STRONG><SPAN
data-contrast="none">lication</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">Dev</SPAN></STRONG><STRONG><SPAN
data-contrast="none">elopment</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">unique</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">benefit</SPAN></STRONG><STRONG><SPAN
data-contrast="none">:</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Enable</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">d</SPAN><SPAN
data-contrast="none">evelopers&nbsp;</SPAN><SPAN data-contrast="none">of any
skill&nbsp;</SPAN><SPAN data-contrast="none">to add AI capabilities to their
applications with pre-built and customizable AI models for speech,
vision,&nbsp;</SPAN><SPAN data-contrast="none">language, and
decision-making</SPAN><SPAN data-contrast="none">.</SPAN></P> <P>&nbsp;</P>
<P><A href="https://azure.microsoft.com/en-us/product-categories/integration/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Integration</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The third building block is
integration.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">Why
is integration needed, and how is it accomplished?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Integration is needed to integrate applications by
connecting multiple i</SPAN><SPAN data-contrast="none">ndependent
systems</SPAN><SPAN data-contrast="none">.&nbsp;</SPAN><SPAN
data-contrast="none">The four core cloud services to meet integration needs
are</SPAN><SPAN data-contrast="none">:</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<OL> <LI><STRONG><SPAN data-contrast="none">&nbsp;</SPAN></STRONG><SPAN
data-contrast="none">A</SPAN><SPAN data-contrast="auto">&nbsp;way to publish and
manage application programming interfaces (APIs).&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:720}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">A way to
create and run integration logic</SPAN><SPAN data-contrast="auto">, typically
with a graphical tool for defining the workflow’s logic.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:720}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;A way for applications and integration
technologies to communicate in a loosely coupled way via
messaging.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:720}">&nbsp;</SPAN></LI>
<LI><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">A
technology that supports communication via events</SPAN></LI> </OL>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="riduncan_4-1615417254165.jpeg" style="width:
1537px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262624i680ADC41AE4E218D/image-dimensions/1537x771?v=v2"
width="1537" height="771" role="button" title="riduncan_4-1615417254165.jpeg"
alt="riduncan_4-1615417254165.jpeg" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">What are the benefits of Azure integration
services</SPAN></STRONG><STRONG><SPAN data-contrast="none">&nbsp;and how do they
translate to the modern app dev approach</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Azure meets all four needs, the first need is met
by</SPAN><SPAN data-contrast="none">&nbsp;Azure&nbsp;</SPAN><SPAN
data-contrast="none">API management, the second is met by Azure Logic Apps, the
third is Azure Service&nbsp;</SPAN><SPAN data-contrast="none">B</SPAN><SPAN
data-contrast="none">us</SPAN><SPAN data-contrast="none">, and
the&nbsp;</SPAN><SPAN data-contrast="none">final is met by&nbsp;</SPAN><SPAN
data-contrast="none">Azure Event Grid.</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="auto">The four components of Azure Integration Services address
the core requirements of application integration. Yet real scenarios often
require&nbsp;</SPAN><SPAN data-contrast="auto">more,</SPAN><SPAN
data-contrast="auto">&nbsp;and this is where the modern application development
approach comes into play</SPAN><SPAN data-contrast="auto">.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Perhaps&nbsp;</SPAN><SPAN
data-contrast="auto">your integration application needs a place to store
unstructured data, or a way to include custom code that does specialized data
transformations.</SPAN></P> <P><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Azure Integration Services is part of the larger
Azure cloud platform,&nbsp;</SPAN><SPAN data-contrast="auto">making
it</SPAN><SPAN data-contrast="auto">&nbsp;easi</SPAN><SPAN
data-contrast="auto">er</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">to&nbsp;</SPAN><SPAN data-contrast="auto">in</SPAN><SPAN
data-contrast="auto">tegrate data, APIs, and&nbsp;</SPAN><SPAN
data-contrast="auto">into your modern app to meet your needs.</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You might store unstructured data in Azure Data
Lake Store, for instance, or write custom code using Azure
Functions,&nbsp;</SPAN><SPAN data-contrast="auto">to meet</SPAN><SPAN
data-contrast="auto">&nbsp;serverless compute tech</SPAN><SPAN
data-contrast="auto">&nbsp;needs</SPAN><SPAN data-contrast="auto">.</SPAN></P>
<P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/services/azure-sql/sql-managed-instance/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Data</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The fourth building block is data, and more
specifically managed databases.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">What are the advantages of managed
databases?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Fully managed, cloud-based databases provide
limitless scale, low-latency access to rich data, and advanced data
protection—all built in, regardless of languages or frameworks.</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">How does the modern
application development approach benefit from fully managed
databases</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Modern application development leverages
microservices and containers, the benefit to both technologies&nbsp;</SPAN><SPAN
data-contrast="none">is</SPAN><SPAN data-contrast="none">&nbsp;their ability to
operate independently</SPAN><SPAN
data-contrast="none">&nbsp;and&nbsp;</SPAN><SPAN data-contrast="none">scale as
demand warrants.</SPAN></P> <P><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">To ensure the greatest user satisfaction and app
functionality the limitless scale and low</SPAN><SPAN
data-contrast="none">-</SPAN><SPAN data-contrast="none">latency
access&nbsp;</SPAN><SPAN data-contrast="none">to data enable apps to
run&nbsp;</SPAN><SPAN data-contrast="none">unimpeded.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_5-1615417254180.png" style="width: 1886px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262625iCA63945B54B2A5F3/image-dimensions/1886x1204?v=v2"
width="1886" height="1204" role="button" title="riduncan_5-1615417254180.png"
alt="riduncan_5-1615417254180.png" /></span></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/solutions/devops/" target="_blank"
rel="noopener"><STRONG><SPAN data-contrast="none">Software
Delivery</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The fifth building block is software
delivery.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">What
constitutes modern development software delivery practices?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Modern app development software delivery practices
enable you to meet r</SPAN><SPAN data-contrast="none">apid market changes that
require shorter release cycles without sacrificing quality, stability, and
security.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">The
practice</SPAN><SPAN data-contrast="none">s help you to release in a fast,
consistent, and reliable way by using highly productive tools, automating
mundane and manual steps, and iterating in small increments through CI/CD and
DevOps practices.</SPAN></P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/en-us/overview/what-is-devops/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">What&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">is&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">DevOps?</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">A compound of development (Dev) and operations
(Ops), DevOps is the union of people, process, and technology to continually
provide value to customers.</SPAN><SPAN data-contrast="none">&nbsp;DevOps
enables formerly siloed roles—development, IT operations, quality engineering,
and security—to coordinate and collaborate to produce better, more reliable
products.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">By adopting a
DevOps culture along with DevOps practices and tools, teams gain the ability to
better respond to customer needs, increase confidence in the applications they
build, and achieve development goals faster.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">DevOps influences the application lifecycle
throughout its&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">plan</SPAN></STRONG><SPAN
data-contrast="none">,&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">develop</SPAN></STRONG><SPAN
data-contrast="none">,&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">deliver</SPAN></STRONG><SPAN data-contrast="none">,
and&nbsp;</SPAN><STRONG><SPAN
data-contrast="none">operate&nbsp;</SPAN></STRONG><SPAN
data-contrast="none">phases.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="riduncan_6-1615417254185.png" style="width: 1642px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262627iEB7A264D4A97EAF5/image-dimensions/1642x1414?v=v2"
width="1642" height="1414" role="button" title="riduncan_6-1615417254185.png"
alt="riduncan_6-1615417254185.png" /></span></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="none">Plan</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In the plan phase, DevOps teams ideate, define,
and describe features and capabilities of the applications and systems they are
building.&nbsp;</SPAN><SPAN data-contrast="none">Creating backlogs, tracking
bugs, managing agile software development with Scrum, using Kanban boards, and
visualizing progress with dashboards are some of the ways DevOps teams plan with
agility and visibility.</SPAN></P> <P>&nbsp;</P> <P aria-level="3"><STRONG><SPAN
data-contrast="none">Develop</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="none">The develop phase includes all
aspects of coding—writing, testing, reviewing, and the integration of code by
team members—as well as building that code into build artifacts that can be
deployed into various environments.&nbsp;</SPAN><SPAN data-contrast="none">To
develop rapidly, they use highly productive tools, automate mundane and manual
steps, and iterate in small increments through automated testing and continuous
integration.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3">&nbsp;</P> <P aria-level="3"><STRONG><SPAN
data-contrast="none">Deliver</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="none">Delivery is the process of
deploying applications into production environments and deploying and
configuring the fully governed foundational infrastructure that makes up those
environments.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><SPAN data-contrast="none">In the deliver phase, teams define
a release management process with clear manual approval&nbsp;</SPAN><SPAN
data-contrast="none">stages.</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">They</SPAN><SPAN data-contrast="none">&nbsp;also set
automated gates that move applications between stages until they’re made
available to customers.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P aria-level="3"><STRONG><SPAN
data-contrast="none">Operate</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">The&nbsp;</SPAN><SPAN
data-contrast="none">operate</SPAN><SPAN data-contrast="none">&nbsp;phase
involves maintaining, monitoring, and troubleshooting applications in production
environments. In adopting DevOps practices, teams work to ensure system
reliability, high availability, and aim for zero downtime while reinforcing
security and governance.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/overview/continuous-delivery-vs-continuous-deployment/"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">W</SPAN></STRONG><STRONG><SPAN data-contrast="none">hat is
CI/CD?</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Under continuous integration, the develop
phase—building and testing code—is fully automated.&nbsp;</SPAN><SPAN
data-contrast="none">Each time you commit code, changes are validated and merged
to the master branch, and the code is packaged in a build artifact.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Under continuous delivery, anytime a
new build artifact is available, the artifact is automatically placed in the
desired environment and deployed.</SPAN><SPAN data-contrast="none">&nbsp;With
continuous deployment, you automate the entire process from
code&nbsp;</SPAN><SPAN data-contrast="none">commit</SPAN><SPAN
data-contrast="none">&nbsp;to production</SPAN><SPAN
data-contrast="none">.</SPAN></P> <P><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://azure.microsoft.com/en-us/services/monitor/" target="_blank"
rel="noopener"><STRONG><SPAN
data-contrast="none">Operations</SPAN></STRONG><SPAN>&nbsp;<BR
/></SPAN></A><SPAN data-contrast="auto">The sixth building block is operations
to maximize automation.</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">How do</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">you maximize automation in your modern
app</SPAN></STRONG><STRONG><SPAN data-contrast="auto">lication development
approach?</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">With an increasingly complex environment to
manage, maximizing the use of automation helps you improve operational
efficiency, identify issues before they affect customer experiences, and quickly
mitigate issues when they occur.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Fully managed platforms provide automated logging,
scaling, and high availability. Rich telemetry, actionable alerting, and full
visibility into applications and the underlying system are key to a modern
application development approach.</SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Automating regular checkups and applying best
practices like infrastructure as code and site reliability engineering promotes
resiliency and helps you respond to incidents with minimal downtime and data
loss.</SPAN></P> <P>&nbsp;</P> <P><A
href="https://docs.microsoft.com/en-us/azure/security/fundamentals/best-practices-and-patterns"
target="_blank" rel="noopener"><STRONG><SPAN
data-contrast="none">Security</SPAN></STRONG></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The seventh building block is multilayered
security.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Why do I need multi-layered
security in my modern&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">applications?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">Modern applications&nbsp;</SPAN><SPAN
data-contrast="none">require</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/security/fundamentals/best-practices-and-patterns"
target="_blank" rel="noopener"><SPAN data-contrast="none">multilayered
security</SPAN></A><SPAN data-contrast="none">&nbsp;across code, delivery
pipelines, app runtimes, and databases. Start by providing developers secure dev
boxes with well-governed identity. As part of the DevOps lifecycle, use
automated tools to examine dependencies in code repositories and scan for
vulnerabilities as you deploy apps to the target environment.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Enterprise-grade secrets and policy
management encrypt the applications and give the operations team centralized
policy enforcement.</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">With fully managed compute and database services, security
control is built in and threat protection is executed in real time.</SPAN></P>
<P>&nbsp;</P> <P class="hd he fn hf b hg iu hh hi hj iv hk hl hm iw hn ho hp ix
hq hr hs iy ht hu hw db dw" data-selectable-paragraph=""><STRONG class="hf
co">Conclusion</STRONG><BR />While modern application development can seem
daunting, it is an approach that can be done iteratively, and each step can
yield large benefits for your team.</P> <P class="hd he fn hf b hg iu hh hi hj
iv hk hl hm iw hn ho hp ix hq hr hs iy ht hu hw db dw"
data-selectable-paragraph="">&nbsp;</P> <P class="hd he fn hf b hg iu hh hi hj
iv hk hl hm iw hn ho hp ix hq hr hs iy ht hu hw db dw"
data-selectable-paragraph="">Access webinars, analyst reports, tutorials, and
more on the<SPAN>&nbsp;</SPAN><A class="bp iz"
href="https://azure.microsoft.com/en-us/solutions/modern-application-development/"
target="_blank" rel="noopener nofollow">Modern application development on
Azure</A><SPAN>&nbsp;</SPAN>page.</P></description>
<pubDate>Fri, 26 Mar 2021 00:59:09 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/modern-application-development/ba-p/2235485</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-03-26T00:59:09Z</dc:date>
...
</item>
<item>
<title>[DevTest Labs] Decommissioning preview API's '2015-05-21-preview' &
'2017-04-26-preview' in 90 days</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-decommissioning-preview-api-s-2015-05-21-preview/ba-p/2219208</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Develop and Test.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/267325iA0FC3F81BD42ECF9/image-size/large?v=v2&amp;px=999"
role="button" title="Develop and Test.png" alt="Develop and Test.png"
/></span></P> <P>&nbsp;</P> <P>There were a few preview API’s that were made
available in the previous years for Azure DevTest Labs, with the goal of
enabling early access to certain features and functionalities.</P> <P>&nbsp;</P>
<P>We have incorporated all the functionalities related to below preview API’s
in the latest API specs, that were generally made available and we have decided
to decommission below DTL preview API’s by June 17, 2021.</P> <P>&nbsp;</P> <UL>
<LI>&nbsp; <STRONG>2015-05-21-preview</STRONG></LI> <LI><STRONG>&nbsp;
</STRONG><STRONG>2017-04-26-preview</STRONG></LI> </UL> <P>If you are still
using any of the above preview API’s, We recommend to migrate and use the <A
href="https://github.com/Azure/azure-rest-api-specs/tree/master/specification/devtestlabs/resource-manager/Microsoft.DevTestLab/stable/2018-09-15"
target="_blank" rel="noopener">latest DTL REST API Specs</A> that were generally
made available. The decommissioning does not impact our current API version in
preview, 2018-09-15-preview.</P> <P>&nbsp;</P>
<P>‘<STRONG>2015-05-21-preview’</STRONG> and<STRONG>
‘</STRONG><STRONG>2017-04-26-preview</STRONG><STRONG>’ </STRONG>API versions
would be decommissioned on June 17, 2021 and if you are using the preview API’s,
we request you to kindly migrate before June 17, 2021.</P> <P>&nbsp;</P> <P>As
always, please reach out to us in case of any questions or concerns.</P>
<P>&nbsp;</P> <P>-&nbsp;&nbsp;DevTest Labs Product Team</P>
<P>&nbsp;</P></description>
<pubDate>Thu, 27 May 2021 22:17:43 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-decommissioning-preview-api-s-2015-05-21-preview/ba-p/2219208</guid>
<dc:creator>Sagar_Lankala</dc:creator>
<dc:date>2021-05-27T22:17:43Z</dc:date>
...
</item>
<item>
<title>Microsoft Customer Co-Creation: How You Can Help Influence the way
Products and Services are Built</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-customer-co-creation-how-you-can-help-influence-the/ba-p/2217804</link>
<description><P><SPAN data-contrast="auto">March is Women’s History
Month&nbsp;</SPAN><SPAN data-contrast="auto">and what a more
fitting&nbsp;</SPAN><SPAN data-contrast="auto">time</SPAN><SPAN
data-contrast="auto">&nbsp;for our team,</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">Microsoft Azure
Engineering,&nbsp;</SPAN><SPAN data-contrast="auto">to have our first post go up
here on the Tech Community Blog.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="IWD2021Blog_800.png" style="width: 800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/265096iC2D31AA25D562AAD/image-size/large?v=v2&amp;px=999"
role="button" title="IWD2021Blog_800.png" alt="IWD2021Blog_800.png"
/></span></SPAN></P> <P><SPAN data-contrast="auto">As a woman working in tech,
I’m proud to work for a company like Microsoft, where diversity and inclusion is
celebrated.&nbsp;</SPAN><SPAN data-contrast="auto">This mindset also shapes the
way we build our&nbsp;</SPAN><SPAN data-contrast="auto">products and services.
That’s where a program like&nbsp;</SPAN><SPAN
data-contrast="auto">Microsoft&nbsp;</SPAN><SPAN data-contrast="auto">Customer
Co-creation comes into play. If you haven’t heard about&nbsp;</SPAN><SPAN
data-contrast="auto">it</SPAN><SPAN data-contrast="auto">, I’d like to take this
opportunity to tell you&nbsp;</SPAN><SPAN data-contrast="auto">more</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="CustomerCoCreationBlog_800.png" style="width: 800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/265097iE06B95E39C6D5D7F/image-size/large?v=v2&amp;px=999"
role="button" title="CustomerCoCreationBlog_800.png"
alt="CustomerCoCreationBlog_800.png" /></span></SPAN></P> <P><A
href="https://customercocreation.microsoft.com/home/blog" target="_blank"
rel="noopener"><SPAN data-contrast="none">Microsoft</SPAN><SPAN
data-contrast="none">&nbsp;Customer co-creation</SPAN></A><SPAN
data-contrast="auto">&nbsp;connects you directly with engineers
within&nbsp;</SPAN><SPAN data-contrast="auto">the&nbsp;</SPAN><SPAN
data-contrast="none">Cloud Engineering (C+ AI) organization&nbsp;</SPAN><SPAN
data-contrast="auto">so you can&nbsp;</SPAN><SPAN data-contrast="auto">talk to
them about the products you care about. Sometimes this could mean playing an
early role in product and service development</SPAN><SPAN
data-contrast="auto">&nbsp;before a single line of code is even
written</SPAN><SPAN data-contrast="auto">. Ultimately, our hope
is&nbsp;</SPAN><SPAN data-contrast="auto">your feedback will result
in&nbsp;</SPAN><SPAN data-contrast="auto">the creation of&nbsp;</SPAN><SPAN
data-contrast="auto">something you’ll</SPAN><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">really love
using</SPAN><SPAN data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">You can start by&nbsp;</SPAN><A
href="https://customercocreation.microsoft.com/home/blog" target="_blank"
rel="noopener"><SPAN data-contrast="none">fill</SPAN><SPAN
data-contrast="none">ing</SPAN><SPAN data-contrast="none">&nbsp;out your
profile</SPAN></A><SPAN data-contrast="auto">&nbsp;and tell</SPAN><SPAN
data-contrast="auto">ing</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">us about yourself and what you’re interested in</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">When the right opportunity comes
up,&nbsp;</SPAN><SPAN data-contrast="auto">our team will</SPAN><SPAN
data-contrast="auto">&nbsp;contact you, let you know the topic</SPAN><SPAN
data-contrast="auto">,</SPAN><SPAN data-contrast="auto">&nbsp;and ask your
availability to participate in a feedback session.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Your voice matters and&nbsp;</SPAN><SPAN
data-contrast="auto">I</SPAN><SPAN data-contrast="auto">&nbsp;hope you’ll
consider joining the Microsoft</SPAN><SPAN
data-contrast="auto">&nbsp;Customer</SPAN><SPAN
data-contrast="auto">&nbsp;Co-creation program&nbsp;</SPAN><SPAN
data-contrast="auto">and help</SPAN><SPAN
data-contrast="auto">&nbsp;influence&nbsp;</SPAN><SPAN data-contrast="auto">the
services and products&nbsp;</SPAN><SPAN
data-contrast="auto">you&nbsp;</SPAN><SPAN data-contrast="auto">use</SPAN><SPAN
data-contrast="auto">.</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="BlogLogo.jpg" style="width: 800px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/265100i8988DD20F3E1590E/image-size/large?v=v2&amp;px=999"
role="button" title="BlogLogo.jpg" alt="BlogLogo.jpg"
/></span></P></description>
<pubDate>Fri, 26 Mar 2021 00:58:34 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/microsoft-customer-co-creation-how-you-can-help-influence-the/ba-p/2217804</guid>
<dc:creator>Malgosia Mazany</dc:creator>
<dc:date>2021-03-26T00:58:34Z</dc:date>
...
</item>
<item>
<title>[Customer Story] Enabling an Event Driven Architecture with DevTest
Labs</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-enabling-an-event-driven-architecture-with/ba-p/2214548</link>
<description><P><A
href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration"
target="_blank" rel="noopener">SharePoint Online</A> (SPO) is Microsoft’s
enterprise-class document management service for&nbsp;<A
href="https://www.microsoft.com/en-us/microsoft-365" target="_blank"
rel="noopener">Microsoft365</A>.&nbsp; The <A
href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration"
target="_blank" rel="noopener">SharePoint Online</A> (SPO) team at Microsoft has
created a solution, built on Azure DevTest Labs (DTL), to make SPO testing
environments readily available to SharePoint engineers, leveraging the strengths
of DevTest Labs and Azure. This is the second in a series of blog entries
enabling anyone to build, configure and run a similar system using Azure and
DTL. For part 1, see <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781"
target="_blank" rel="noopener">How the SharePoint Online Team Leverages DevTest
Labs</A>.&nbsp;</P> <P>&nbsp;</P> <P>In this blog post, two use cases of the
solution’s expected VM lifecycle are described. A simple architecture is
proposed that involves hooking up an <A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener">Azure Function App</A> to <A
href="https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftdevtestlab"
target="_blank" rel="noopener">DevTest Lab Events</A> by way of <A
href="https://azure.microsoft.com/en-us/services/event-grid/" target="_blank"
rel="noopener">Azure Event Grid</A> to implement the two use cases. There is a
brief walk-through of the implementation intended to be used by other Azure
customers to build similar solutions. If you are building an event-driven DTL
application, consider using Azure Functions and Event Grid as the SPO team did.
This article is of interest to you!</P> <P>&nbsp;</P> <H2>Scenario</H2>
<P>&nbsp;</P> <P>As introduced in <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781"
target="_blank" rel="noopener">Part 1</A> of this blog series, environments in
Azure DevTest Labs are a natural fit for SPO integration testing. SPO engineers
can claim test environments that are miniaturized data centers, with all
components shrunk down and interacting on a single Azure VM inside DTL.&nbsp;
Pools of these VMs are made available for SPO engineers so that test
environments are readily available at any time.&nbsp; When finished, they
unclaim them.&nbsp;</P> <P>&nbsp;</P> <P>There are two features that the SPO
team has built on top of existing DevTest Labs Claim/Unclaim operations:</P>
<P>&nbsp;</P> <P><STRONG><FONT color="#000000">Feature</FONT> 1 – Tag a Claimed
VM</STRONG></P> <P>&nbsp;</P> <P>By default, DTL does not allow an easy way for
the admin to know the ownership of claimed VMs. A common way to do this is to
add an “Owner” tag to the VM using <A
href="https://docs.microsoft.com/en-us/rest/api/resources/tags" target="_blank"
rel="noopener">Azure Tags</A>. Tags are flexible and allow lab admins to easily
organize Azure resources and make them easy to query, for example, to list VMs
assigned to a given user or set of users.&nbsp; In this solution, when a user
claims a VM, an event is fired, and the handler attaches an “Owner” tag, with
associated user name as data, to the VM.&nbsp; The tag shows up in the VM’s
properties in the Azure Portal.</P> <P>&nbsp;</P> <P><STRONG>Feature 2 – Delete
an Unclaimed VM</STRONG></P> <P>&nbsp;</P> <P>In SPO’s use case, VMs are not
re-usable. Once a VM is claimed by a lab user, the state on the VM may change in
such a way as to make the VM unsuitable for future users’ needs. For example,
users can change the state of one of the SharePoint web applications, or
introduce state into SharePoint by simply adding a document to a document
library as part of a test. (For a better understanding of SharePoint’s document
libraries, try: <A
href="https://support.microsoft.com/en-us/office/what-is-a-document-library-3b5976dd-65cf-4c9e-bf5a-713c10ca2872"
target="_blank" rel="noopener">What is a document library?</A>) The engineer may
also update the code running on the VM, which can change behavior in a way
undesirable for other engineers.</P> <P>&nbsp;</P> <P>In general, once a VM is
assigned to a lab user, its validity as a clean test environment can no longer
be trusted. With this use case in mind, VMs in the SPO solution are
single-use.&nbsp; Once unclaimed, they are deleted.</P> <P>&nbsp;</P>
<P><STRONG><EM>Note:</EM></STRONG><EM> Replenishment of the pool of available
VMs is described in a future blog entry in this series, entitled “Maintaining a
Pool of Claimable VMs”.</EM></P> <P>&nbsp;</P> <P>Both of these features can be
added to DevTest Labs using <A
href="https://azure.microsoft.com/en-us/services/event-grid/" target="_blank"
rel="noopener">Azure Event Grid</A>, with an <A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener">Azure Function</A> listening and handling events.
The solution is simple and elegant; please read on to see how this is
configured.</P> <P>&nbsp;</P> <H2>Event Handling with Azure Functions</H2>
<P>&nbsp;</P> <P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"
target="_blank" rel="noopener">Azure Functions</A>&nbsp;are a flexible,
serverless computing platform in Azure. Functions can be configured to trigger
when an Azure event fires, and DevTest Labs fires “Claim” and “Unclaim” events
when VMs are claimed or unclaimed, respectively.&nbsp; When configured properly
through <A href="https://azure.microsoft.com/en-us/services/event-grid/"
target="_blank" rel="noopener">Event Grid</A>, events are dispatched to an Azure
Function subscriber.</P> <P>&nbsp;</P> <P>For simplicity and brevity, the
solution described herein implements a single Azure function to handle both
Claim and Unclaim events. The function is written in <A
href="https://docs.microsoft.com/en-us/powershell" target="_blank"
rel="noopener">PowerShell</A> and implements the tagging and delete business
logic for these events. &nbsp;It is deployed in a Function App, triggered when
events fire, in accordance with this table:</P> <P>&nbsp;</P> <TABLE
width="719"> <TBODY> <TR> <TD width="133"> <P><STRONG>DevTestLab Event
</STRONG></P> </TD> <TD width="370"> <P><STRONG>Event Name</STRONG></P> </TD>
<TD width="215"> <P><STRONG>Action</STRONG></P> </TD> </TR> <TR> <TD
width="133"> <P><STRONG>Claim</STRONG></P> </TD> <TD width="370">
<P>microsoft.devtestlab/labs/virtualmachines/claim/action</P> </TD> <TD
width="215"> <P>Add an "Owner" tag to the VM</P> </TD> </TR> <TR> <TD
width="133"> <P><STRONG>Unclaim</STRONG></P> </TD> <TD width="370">
<P>microsoft.devtestlab/labs/virtualmachines/unclaim/action</P> </TD> <TD
width="215"> <P>Delete the VM</P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P>
<P><STRONG><EM>Note:</EM></STRONG><EM> You can find a complete list of
DevTestLab events here: </EM><A
href="https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftdevtestlab"
target="_blank" rel="noopener"><EM>DevTest Lab Events</EM></A><EM>. There are
several useful ones that, when paired with the technique described in this post,
can be used to solve other event-driven scenarios using the template given
here.</EM></P> <P>&nbsp;</P> <H2>Solution Architecture</H2> <P>&nbsp;</P>
<P>This solution builds on the ideas presented in the article <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/extend-devtest-labs-azure-functions"
target="_blank" rel="noopener">Use Azure Functions to extend DevTest Labs</A>. A
key difference is how the events are triggered: In the article, the Functions
are triggered via an HTTP call.&nbsp; In this example, Claim/Unclaim events are
generated from the DevTest Lab and routed via Event Grid to the function app.
&nbsp;We will also be building on the coding concepts in <A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid-trigger?tabs=csharp"
target="_blank" rel="noopener">Azure Event Grid trigger for Azure
Functions</A>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_15-1615912246433.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264413iBF4DEA280572CB61/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_15-1615912246433.png"
alt="Sagar_Lankala_15-1615912246433.png" /></span></P> <P>&nbsp;</P>
<H2>Walkthrough</H2> <P>&nbsp;</P> <P>The following solution assumes a
pre-created Azure DevTest Lab, such as one created using the steps in <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-create-lab"
target="_blank" rel="noopener">Create a lab in Azure DevTest Labs</A>. In this
example, the Lab has been freshly deployed with name “PetesDTL” and resource
group “PetesDTL_rg” with no VMs yet created.</P> <P>&nbsp;</P> <P><STRONG>Step
1: Create a Function App</STRONG></P> <P>Use the “Create a Resource” UI and find
“Function App” in your Azure subscription, and hit “Create”. &nbsp;Select the
resource group for your DevTest Lab.&nbsp; This is optional but is a convenience
for grouping your app with the other resources for your Lab. In this example,
the Name of the app is "PetesFnApp" and is in the “PetesDTL_rg” resource group
with a Runtime stack that is PowerShell Core.&nbsp; <A
href="https://microsoft.com/powershell" target="_blank"
rel="noopener">PowerShell Core</A> is a flexible, operating system independent
control language that is easy to get to work with Azure.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_16-1615913628568.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264430iAC7FA62F4D69F6A4/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_16-1615913628568.png"
alt="Sagar_Lankala_16-1615913628568.png" /></span></P> <P>&nbsp;</P> <P>Leaving
the majority of the settings with their defaults, hit “Review + create”, then
“Create” to deploy the function app after the verification step.</P>
<P>&nbsp;</P> <P><STRONG>Step 2: Create the FnDTLClaimUnclaim
Function</STRONG></P> <P>Navigate to the newly-deployed Function App, hit
“Functions” and then “+ Add” to add a new function to the App.&nbsp; Leave the
“Development environment” to be “Develop in portal” and select “Azure Event Grid
trigger” for the template.&nbsp; In this example, the new function is named
“FnDTLClaimUnclaim”.&nbsp; The name indicates that this Powershell Core function
is dual-purpose and will handle both the “Claim” and “Unclaim” events from the
DevTest Lab.&nbsp; Click “Add”.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_17-1615913657857.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264431iECF8CB03B838F24F/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_17-1615913657857.png"
alt="Sagar_Lankala_17-1615913657857.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Step 3: Add logic to the function</STRONG></P> <P>Navigate to the
newly-created function, and hit “Code + Test”.&nbsp; There is some sample code
in the edit window, which you can replace with the following code:</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE
lang="csharp">param($eventGridEvent, $TriggerMetadata) $operationName =
$eventGridEvent.data["operationName"] # Apply an Owner tag to a VM based on
passed-in claims function ApplyOwnerTag($vmId, $claims) { # Get the VM $dtlVm =
Get-AzResource -ResourceId $vmId -ErrorAction SilentlyContinue # Fetch user. #
Prefer user specified in claims, then owner, then createdBy $claimPropName =
$claims.keys | Where-Object {$_ -like "*/identity/claims/name"} if
($claimPropName) { $user = $claims[$claimPropName] } if (-not $user) { $user =
$dtlVm.Properties.ownerUserPrincipalName } if (-not $user) { $user =
$dtlVm.Properties.createdByUser } $tags = $dtlvm.Tags if ($tags) { if (-not
$tags.keys.Contains("Owner")) { $tags.Add("Owner", $user) } } else { $tags = @{
Owner=$user } } # Save the VM's tags Set-AzResource -ResourceId $vmId -Tag $tags
-Force | Out-Null } # Event Action # ------------------------------------------
# Claim Add "owner" tag to the VM # Unclaim Delete the VM $claimAction =
($operationName -eq "microsoft.devtestlab/labs/virtualmachines/claim/action")
$unclaimAction = ($operationName -eq
"microsoft.devtestlab/labs/virtualmachines/unclaim/action") if ($claimAction -or
$unclaimAction) { $vmId = $eventGridEvent.subject Connect-AzAccount -Identity
$dtlVm = Get-AzResource -ResourceId $vmId -ErrorAction SilentlyContinue if
($claimAction) { if (-not $dtlVm.Properties.allowClaim) { ApplyOwnerTag $vmId
$eventGridEvent.data.claims } } else { if ($dtlVm.Properties.allowClaim) {
Remove-AzResource -ResourceId $vmId -Force -ErrorAction SilentlyContinue } } }
</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Click “Save” to save the
function.</P> <P>&nbsp;</P> <P>The code snippet contains an ApplyOwnerTag
function and a main body.&nbsp; The ApplyOwnerTag function gets the user from
variety of sources, preferring first the identity from the passed-in claims,
then looking at the owner or created-by user from the DevTestLabs VM.&nbsp; Once
it has a valid user name, it adds the “Owner” tag to the VM.</P> <P>&nbsp;</P>
<P>The main body of the Azure Function first determines which event is being
handled.&nbsp; On a Claim event, the ApplyOwnerTag function is called to add the
“Owner” tag to the given VM.&nbsp; On Unclaim, the VM is removed.&nbsp; This
logic implements the behavior desired for the SharePoint Online application for
these two events.</P> <P>&nbsp;</P> <P><STRONG>Step 4: Assign an Identity and
Role for the Azure Function</STRONG></P> <P>&nbsp;</P> <P>The Azure function has
a call to Connect-AzAccount, which requires that the function app uses a
System-assigned identity.&nbsp; (User-assigned identities can also be
configured, however for simplicity this example uses a System-assigned
identity.)&nbsp; Further, the identity in question needs access to resources in
the subscription in order to add tags and to delete VMs.&nbsp; To configure
this, click on the Function App, then Identity.&nbsp; Change the Status to
“On”.&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_18-1615913793433.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264432iEACFF1531B2A335E/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_18-1615913793433.png"
alt="Sagar_Lankala_18-1615913793433.png" /></span></P> <P>&nbsp;</P> <P>Next,
Click on “Azure role assignments” to configure role-based access control for
this Function App.&nbsp; In this example, Contributor role is assigned for the
entire Azure subscription.&nbsp; While it’s possible to configure more
fine-grained access to the Identity, this example in order to keeps things
simple.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_19-1615913821861.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264433iD1200866F8C407DE/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_19-1615913821861.png"
alt="Sagar_Lankala_19-1615913821861.png" /></span></P> <P>&nbsp;</P> <P>The
resultant role assignment should look like this:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_20-1615913843791.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264434iD67D84695E111C29/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_20-1615913843791.png"
alt="Sagar_Lankala_20-1615913843791.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Step 5: Create an Event Subscription for the Function
App</STRONG></P> <P>&nbsp;</P> <P>At this point we have logic ready to handle
the DevTestLabs events, but the Function App is not configured to subscribe to
those events.&nbsp; Azure Event Grid is infrastructure for mapping Azure events
to logic and can be used to create rich applications. To get deeper into Azure
Event Grid, please check out <A
href="https://docs.microsoft.com/en-us/azure/event-grid/overview"
target="_blank" rel="noopener">Azure Event Grid Overview</A>.</P> <P>Navigate to
the subscription, then click Events.&nbsp; Under “Get Started”, click on “Azure
Function”:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_21-1615913869342.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264435i85DEC63D32A4187F/image-size/medium?v=v2&amp;px=400"
role="button" title="Sagar_Lankala_21-1615913869342.png"
alt="Sagar_Lankala_21-1615913869342.png" /></span></P> <P>&nbsp;</P> <P>Enter
“DTLEventSub” as the name.&nbsp; Use “ClaimUnclaimVM” for the System Topic
Name.&nbsp; For Endpoint Type select “Azure Function” with Endpoint
“FnDTLClaimUnclaim”.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_22-1615913902855.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264436i42FA487A8A2B0F61/image-size/medium?v=v2&amp;px=400"
role="button" title="Sagar_Lankala_22-1615913902855.png"
alt="Sagar_Lankala_22-1615913902855.png" /></span></P> <P>&nbsp;</P> <P>Hit
Create.&nbsp; This will create the ClaimUnclaimVM Topic and the Event
Subscription.</P> <P>&nbsp;</P> <P><STRONG>Step 6: Test the Claim
functionality</STRONG></P> <P>&nbsp;</P> <P>Navigate to the DevTest Lab in your
subscription, “PetesDTL” in this example, and click “+ Add” to create a new
VM.&nbsp; The type of VM you choose is not relevant for this example – you can
select the operating system and resources that are appropriate for your
application.&nbsp; In this example the VM is named “petesvm001”.&nbsp;</P> <P>In
“Advanced Settings”, select “Yes” for “Make this machine claimable” under “Claim
options”, then in “Basic Settings” click “Create”. The reason is that we expect
to Claim the VM through the UI to trigger the tagging behavior.&nbsp; Later,
when we Unclaim the VM, we will expect to see the VM being deleted.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_26-1615914079102.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264440i5CBD3181F30BF22C/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_26-1615914079102.png"
alt="Sagar_Lankala_26-1615914079102.png" /></span></P> <P>&nbsp;</P> <P>After
the VM is created (this may take several minutes, perhaps tens of minutes, to
complete) it should show in the “Claimable virtual machines” section of the
DevTest Labs UI:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_25-1615914033001.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264439i82B28E8C950B2806/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_25-1615914033001.png"
alt="Sagar_Lankala_25-1615914033001.png" /></span></P> <P>&nbsp;</P> <P>Note
that this VM does not have an “Owner” tag yet, since it has not yet been
claimed:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_24-1615914016828.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264438iC8791D649CECEE07/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_24-1615914016828.png"
alt="Sagar_Lankala_24-1615914016828.png" /></span></P>
<P><STRONG>&nbsp;</STRONG></P> <P>Now, click the ellipsis (…) on the VM in the
Claimable virtual machines, and select “Claim”.&nbsp; This operation will also
take several tens of minutes before the VM is successfully claimed and the Azure
event has made its way through the Event Grid infrastructure and called our
Azure Function.&nbsp; You can monitor when your Function has been called by
selecting the Function in the Function App UI and seeing Total and Successful
Execution Count in the Overview section:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_23-1615913992716.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264437iD5AB4F190B7F02D5/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_23-1615913992716.png"
alt="Sagar_Lankala_23-1615913992716.png" /></span></P> <P>&nbsp;</P> <P>You can
also see what the Azure Function logs in near real-time by using the “Code +
Test” UI and opening the Logs popup at the bottom:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_27-1615914114419.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264441i15CD0666D69AAF45/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_27-1615914114419.png"
alt="Sagar_Lankala_27-1615914114419.png" /></span></P> <P>&nbsp;</P> <P>After
several minutes, the Function is called, and the ApplyOwnerTag PowerShell
function adds the current user’s name in the Owner tag, as expected:</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_28-1615914135842.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264443i2D857FC55D6C0EB9/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_28-1615914135842.png"
alt="Sagar_Lankala_28-1615914135842.png" /></span></P> <P>&nbsp;</P> <P>Now
navigate to “My virtual machines” in the DevTest Labs UI, click the ellipsis (…)
and select “Unclaim”:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_29-1615914157921.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264444i609FE37C7ECF3AC3/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_29-1615914157921.png"
alt="Sagar_Lankala_29-1615914157921.png" /></span></P> <P>&nbsp;</P> <P>Once
again, it will take several minutes for the event to make its way through Azure
to call FnDTLClaimUnclaim, but when it does the Remove-AzResource call will
ensure the VM gets deleted:</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_30-1615914175826.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/264445i4829C43F36BD6A6C/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_30-1615914175826.png"
alt="Sagar_Lankala_30-1615914175826.png" /></span></P> <P>&nbsp;</P>
<P><SPAN>This completes the full Claim/Unclaim cycle that a SharePoint Online
user would experience and demonstrates the two features built on top of DevTest
Labs.</SPAN></P> <P>&nbsp;</P> <P><SPAN><STRONG>Some Notes on
Performance</STRONG></SPAN></P> <P>&nbsp;</P> <P>The Azure Function App used in
this example uses the <A href="https://microsoft.com/powershell" target="_blank"
rel="noopener">PowerShell Core</A> runtime.&nbsp; PowerShell was chosen for its
strength as a simple control language for Azure, and its amenability to concise
code samples.&nbsp; However, there is overhead to the boot time and resource
consumption for PowerShell-based Function Apps over, say, C#-based Apps that
should not be overlooked for performance-sensitive applications.</P>
<P>&nbsp;</P> <P>Eventing in Azure has its own set of performance
characteristics, and you will notice with these samples delays of minutes and
sometimes up to tens of minutes for events to fire and be handled by the
Function App.&nbsp; This can be improved somewhat by upgrading from a
Consumption Plan to an Dedicated App Service Plan, but one should bear in mind
that there is always inherent and unavoidable latency due to the Azure’s
eventing model, and this should be accounted for in the design of the Azure
application.</P> <P>&nbsp;</P> <P><FONT size="4"><STRONG>What's
Next?</STRONG></FONT></P> <P>&nbsp;</P> <P>The next blog post will describe how
the SharePoint team built an Azure VPN that complements the DevTest Lab,
securing the connection between lab users and the VMs they connect to. If you
are interested in securing your environment, this is not one you will want to
miss!</P> <P>If you run into any problems with the content, or have any
questions, please feel free to drop a comment below this post and we will
respond. Your feedback is always welcome.</P> <P>&nbsp;</P> <P><STRONG>- Pete
Harwood</STRONG>, Principal Engineering Manager, OneDrive and SharePoint
Engineering Fundamentals at Microsoft</P> <P>&nbsp;</P>
<P>&nbsp;</P></description>
<pubDate>Tue, 16 Mar 2021 21:23:59 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-enabling-an-event-driven-architecture-with/ba-p/2214548</guid>
<dc:creator>Sagar_Lankala</dc:creator>
<dc:date>2021-03-16T21:23:59Z</dc:date>
...
</item>
<item>
<title>Build new skills in 30 days</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-new-skills-in-30-days/ba-p/2197517</link>
<description><P>Today, we are excited to share <A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A>, a guided, time-bound,
personal learning challenge, built upon the Microsoft Learn interactive training
platform. And as you learn, the new program helps you work towards certification
– by completing a learning collection within the 30 days, you can earn a voucher
once every six months for 50% off the cost of a Microsoft Certification
exam.*</P> <P>&nbsp;</P> <P>At Microsoft, our goal is to help make technical
learning accessible to anyone who wants to acquire a new skill, chase a new
career path, and stay up to date on the latest technological advances.</P>
<P>&nbsp;</P> <P>Technology continues to accelerate and change the world around
us – requiring people and businesses to quickly innovate and adapt to the latest
skills needed to thrive as a company and as an individual. To stay current,
access to technical learning resources is critical. &nbsp;Last year we made <A
href="https://blogs.microsoft.com/blog/2020/06/30/microsoft-launches-initiative-to-help-25-million-people-worldwide-acquire-the-digital-skills-needed-in-a-covid-19-economy/"
target="_self">a big bet on learning with our Global Skilling Initiative</A>,
aimed at helping 25 million people worldwide acquire critical new digital skills
with free access to learning paths and content, and low-cost certifications to
help people develop the skills new positions require.</P> <P>&nbsp;</P> <P><A
title="30 Days to Learn It"
href="https://developer.microsoft.com/offers/30-days-to-learn-it"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="30 Days to Learn It banner for blog.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262585iC7DD1D3EA2DEAC38/image-size/large?v=v2&amp;px=999"
role="button" title="30 Days to Learn It banner for blog.png" alt="30 Days to
Learn It banner for blog.png" /></span></A></P> <P>&nbsp;</P> <P><STRONG>30
Days&nbsp;of Learning&nbsp;</STRONG></P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A> accelerates your time to
mastery of in-demand technical skills with a commitment of less than an hour
each day for a month. Each learning journey introduces new technical skills and
concepts using Microsoft Learn’s step-by-step tutorials, browser-based
interactive coding and scripting environments, and task-based achievements. From
the day you sign up, you have a month-long journey with a personal project
tracker to visualize your progress through the learning content.</P>
<P>&nbsp;</P> <P>Today, the program launches with eight different journeys to
help you gain cloud development skills using Microsoft technologies. Topics
covered include AI, DevOps, cloud-native apps, serverless applications, low
code, Internet of Things (IoT), machine learning (ML), and compute
infrastructure. Each learning journey is designed to also provide a foundation
to help you prepare for the certification exam of your preferred learning
journey. A Microsoft Certification provides an industry-recognized validation of
your skills and can help advance your career.</P> <P>&nbsp;</P> <P
style="text-align: center;"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Blog Post 2.png" style="width: 883px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/262276i86653BA755911811/image-size/large?v=v2&amp;px=999"
role="button" title="Blog Post 2.png" alt="Blog Post 2.png" /></span></P> <P
style="font-size: .65em;"><SUP>1 </SUP>Source: IDC White Paper, sponsored by
Microsoft, Benefits of Role-Based Certifications (June 2020)&nbsp;</P> <P
style="font-size: .65em;"><SUP>2 </SUP>Source: Nigel Frank Microsoft Azure
Salary Survey (June 2020)</P> <P>&nbsp;</P> <P><STRONG>Okay – Start
Learning!&nbsp;</STRONG></P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A>&nbsp;offers the
flexibility of completing a learning journey within 30 days from the time you
sign up, at your own pace, and provides the added opportunity to earn a discount
voucher for a Microsoft Certification exam if you complete your learning modules
in the 30-day period*.</P> <P>&nbsp;</P> <P>This program is now available
worldwide in 17 languages, and is currently <A
href="https://developer.microsoft.com/offers/30-days-to-learn-it/official-rules#terms-and-conditions"
target="_blank" rel="noopener">running through the end of June 2021</A>.</P>
<P>&nbsp;</P> <P>Register for <A
href="https://developer.microsoft.com/offers/30-days-to-learn-it?ocid=AID3028423_PersonalCSC_Corp_HQ_Blog"
target="_blank" rel="noopener">30 Days to Learn It</A>&nbsp;and start your
learning journey today!</P> <P>&nbsp;</P> <P style="font-size: .8em;">* <A
href="&quot;https://developer.microsoft.com/offers/30-days-to-learn-it/official-rules#terms-and-conditions"
target="_blank" rel="noopener">Terms &amp; conditions</A> apply: one (1) voucher
per person every six months</P> <P style="font-size:
.8em;">&nbsp;</P></description>
<pubDate>Thu, 11 Mar 2021 18:44:53 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/build-new-skills-in-30-days/ba-p/2197517</guid>
<dc:creator>Cliff_Simpkins</dc:creator>
<dc:date>2021-03-11T18:44:53Z</dc:date>
...
</item>
<item>
<title>Deliver Java Apps Quickly using Custom Connectors in Power Apps</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deliver-java-apps-quickly-using-custom-connectors-in-power-apps/ba-p/2176592</link>
<description><P><STRONG><SPAN data-contrast="none">Overview</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the&nbsp;webinar&nbsp;of the month for the Low-code application
development (LCAD) on Azure solution. LCAD on Azure is a new solution
to&nbsp;demonstrate&nbsp;the robust development capabilities of integrating
low-code Microsoft Power Apps and the Azure products you may be familiar
with.&nbsp;&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">This month’s webinar is ‘</SPAN><SPAN
data-contrast="auto">Deliver Java Apps Quickly using Custom Connectors in Power
Apps’</SPAN><SPAN data-contrast="none">&nbsp;In this blog I will
briefly&nbsp;</SPAN><SPAN data-contrast="none">recap</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">,</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">how the app was
built with Java on Azure, app deployment, and building the app’s front end and
UI with Power Apps.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">What is Low-code application
development&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="none">on</SPAN></STRONG><STRONG><SPAN
data-contrast="none">&nbsp;Azure</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was
created to help developers build business applications faster with less
code,&nbsp;leveraging&nbsp;the Power Platform, and more specifically Power Apps,
yet helping them scale and extend their Power Apps with Azure
services.&nbsp;&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">For example, a pro developer who works for a
manufacturing company would need to build a line-of-business (LOB) application
to help warehouse employees’ track incoming inventory. That application would
take months to build, test, and deploy, however with Power Apps’ it can take
hours to build, saving time and resources.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">&nbsp;However, say the warehouse employees want
the application to place procurement orders for&nbsp;additional&nbsp;inventory
automatically when current inventory hits a determined low. In the past that
would require another heavy lift by the development team
to&nbsp;rework&nbsp;their&nbsp;previous&nbsp;application iteration. Due to the
integration of Power Apps and Azure a professional developer can build an API in
Visual Studio (VS) Code, publish it to their Azure portal, and export the API to
Power Apps integrating it into their application as a custom connector.
Afterwards, that same API is re-usable indefinitely in the Power Apps’ studio,
for future use with other applications, saving the company and developers more
time and resources. To learn&nbsp;</SPAN><SPAN
data-contrast="none">more,</SPAN><SPAN data-contrast="none">&nbsp;visit
the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD</SPAN><SPAN
data-contrast="none">&nbsp;on Azure page</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN data-contrast="none">and to walk
through the</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">a</SPAN><SPAN
data-contrast="none">forementioned&nbsp;</SPAN><SPAN
data-contrast="none">scenario</SPAN><SPAN data-contrast="none">&nbsp;try
the&nbsp;</SPAN><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on Azure guided
tour</SPAN></A><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="none">Java on Azure Code</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="none">In this&nbsp;webinar&nbsp;the sample application
will be a Spring Boot application, or a Spring application on
Azure,&nbsp;</SPAN><SPAN data-contrast="none">that is&nbsp;</SPAN><SPAN
data-contrast="none">generated&nbsp;</SPAN><SPAN
data-contrast="none">using&nbsp;</SPAN><SPAN
data-contrast="none">JHipster</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">and
will&nbsp;</SPAN><SPAN data-contrast="none">deploy the app&nbsp;</SPAN><SPAN
data-contrast="none">with&nbsp;</SPAN><SPAN data-contrast="none">Azure
App</SPAN><SPAN data-contrast="none">&nbsp;service. The app’s purpose
is&nbsp;</SPAN><SPAN data-contrast="none">to catalog products, product
descriptions,&nbsp;</SPAN><SPAN data-contrast="none">ratings&nbsp;and image
links</SPAN><SPAN data-contrast="none">, in
a&nbsp;monolithic&nbsp;app.&nbsp;</SPAN><SPAN data-contrast="none">To learn how
to build serverless PowerApps</SPAN><SPAN data-contrast="none">,</SPAN><SPAN
data-contrast="none">&nbsp;please refer to last month’s&nbsp;</SPAN><A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-deep-dive-into-serverless-applications-on-power-apps-and-azure/ba-p/2113430"
target="_blank" rel="noopener"><SPAN data-contrast="none">Serverless Low-code
application development on Azure</SPAN></A><SPAN data-contrast="auto">&nbsp;blog
for details.&nbsp;</SPAN><SPAN data-contrast="auto">During the development of
the&nbsp;</SPAN><SPAN data-contrast="auto">API</SPAN><SPAN
data-contrast="auto">&nbsp;Sandra used H2SQL and in production she used
MySQL.&nbsp;</SPAN><SPAN data-contrast="auto">She then add</SPAN><SPAN
data-contrast="auto">s</SPAN><SPAN data-contrast="auto">&nbsp;descriptions,
ratings, and image links to the&nbsp;</SPAN><SPAN
data-contrast="auto">API</SPAN><SPAN
data-contrast="auto">&nbsp;in&nbsp;</SPAN><SPAN
data-contrast="auto">a</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-contrast="auto">JDS studio.&nbsp;</SPAN><SPAN data-contrast="auto">Lastly,
she applies the API to her GitHub repository</SPAN><SPAN
data-contrast="auto">&nbsp;prior to deploying to Azure App
service.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Deploying</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;the</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">S</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">ample&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">A</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">pp</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">Sandra&nbsp;leverages&nbsp;the Maven plug-in in
JHipste</SPAN><SPAN data-contrast="auto">r</SPAN><SPAN
data-contrast="auto">&nbsp;to deploy the app to Azure App
service.&nbsp;</SPAN><SPAN data-contrast="auto">A</SPAN><SPAN
data-contrast="auto">fter&nbsp;providing&nbsp;an A</SPAN><SPAN
data-contrast="auto">zure&nbsp;resource group name&nbsp;</SPAN><SPAN
data-contrast="auto">due to her choice of ‘split and deploy’ in GitHub
Actions&nbsp;</SPAN><SPAN data-contrast="auto">she only manually
deploy</SPAN><SPAN data-contrast="auto">s</SPAN><SPAN
data-contrast="auto">&nbsp;once, and a</SPAN><SPAN data-contrast="auto">ny new
Git push from her master branch will be&nbsp;automatically
deployed.&nbsp;</SPAN><SPAN data-contrast="auto">Once the app is successfully
deployed it is available at myhispter.azurewebsites.net/V2APIdocs, where she
copies the&nbsp;</SPAN><SPAN data-contrast="auto">Swagger API file into a JSON,
which will be imported&nbsp;</SPAN><SPAN data-contrast="auto">into</SPAN><SPAN
data-contrast="auto">&nbsp;Power Apps as a custom connector.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN
data-contrast="auto">Front-end&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">D</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">evelopment</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">The goal of the front-end development is to build
a user interface that end users will be satisfied with, to&nbsp;</SPAN><SPAN
data-contrast="auto">do so the JSON must be brought into Power Apps as a custom
connect</SPAN><SPAN data-contrast="auto">or so end users can access the API. The
first step is clearly to import the open API into Power Apps, note that much of
this process has been streamlined via the tight integration</SPAN><SPAN
data-contrast="auto">&nbsp;of Azure API management with Power Apps. To learn
more about this tighter integration&nbsp;</SPAN><SPAN data-contrast="auto">watch
a&nbsp;</SPAN><A
href="https://www.youtube.com/watch?v=06CRN18kH1k&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=6"
target="_blank" rel="noopener"><SPAN data-contrast="none">demo on integrating
APIs via API management into Power Apps</SPAN><SPAN
data-contrast="none">.</SPAN></A><SPAN data-contrast="auto">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">After importing the API, you&nbsp;</SPAN><SPAN
data-contrast="auto">must</SPAN><SPAN data-contrast="auto">&nbsp;create a custom
connector,</SPAN><SPAN data-contrast="auto">&nbsp;and connect that custom
connector with the Open API the backend developer built.&nbsp;</SPAN><SPAN
data-contrast="auto">After creating the custom connector Dawid used Power Apps
logic formula language to collect data into a dataset, creating gallery display
via the collected data. Lastly, Dawid will show you the data in a finalized
application a</SPAN><SPAN data-contrast="auto">nd walk you through the process
of sharing the app with a colleague or making them a co-owner. Lastly, once the
app is shared, Dawid walks you through testing the app and soliciting user
feedback via the app.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Conclusion</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN data-contrast="auto">To conclude, professional developers can rapidly
build the back and front ends of the application using Java, or any programming
language with Power Apps.&nbsp;Fusion development teams, professional developers
and citizen developers,&nbsp;can collaborate on apps together, reducing much of
the lift for professional developers. Please watch the&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-Landing-DeliverJavaAppsQuicklyUsingCustomConnectors.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN
data-contrast="none">webinar</SPAN></A><SPAN
data-contrast="auto">&nbsp;and&nbsp;</SPAN><SPAN data-contrast="auto">complete
the&nbsp;</SPAN><A
href="https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbRzDZlq55wCpLjWQ_IU7xv-VURVRFQUdPSTJVTjBOR0RWM0U1VFFSM1pYUS4u"
target="_blank" rel="noopener"><SPAN data-contrast="none">survey</SPAN></A><SPAN
data-contrast="auto">&nbsp;</SPAN><SPAN data-contrast="auto">so,</SPAN><SPAN
data-contrast="auto">&nbsp;we can improve these blogs and webinars in the
future.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="-" data-font="Calibri" data-listid="6"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Webinar</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="6"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://info.microsoft.com/ww-Landing-DeliverJavaAppsQuicklyUsingCustomConnectors.html?LCID=EN-US"
target="_blank" rel="noopener"><SPAN data-contrast="none">Deliver Java Apps
Quickly</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="-" data-font="Calibri" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Low-code application
development&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">on</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;Azure&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low Code Application
Development</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="2"><A
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code app dev
guided tour</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="-" data-font="Calibri" data-listid="5"
aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Java on Azure resources&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://azure.microsoft.com/en-us/develop/java/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Java on Azure</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/java-on-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Java on Azure -
Learn</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/publish-azure-web-app-with-azure-toolkit-eclipse/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop Java web app
on Azure using Eclipse - Learn&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/publish-web-app-with-maven-plugin-for-azure-app-service/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Develop Java web app
on Azure using Maven - Learn&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/deploy-java-containers/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Automate Java
container deployments with Azure Pipelines - Learn&nbsp;</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/modules/azure-spring-cloud-workshop/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Deploy Spring
microservices to Azure - Learn</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="-" data-font="Calibri" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><STRONG><SPAN
data-contrast="auto">Power Apps resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="2" data-aria-level="2"><A
href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure plus Power Apps
for pro developers</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/intro-developing-power-platform/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Introduction to
developing with Power Platform</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
<LI data-leveltext="o" data-font="Courier New" data-listid="5" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/use-power-apps-component-framework/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Create components with
Power Apps Component Framework</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL> <UL> <LI data-leveltext="o" data-font="Courier New" data-listid="5"
aria-setsize="-1" data-aria-posinset="1" data-aria-level="2"><A
href="https://docs.microsoft.com/en-us/learn/paths/get-started-cds/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Get started using
Microsoft Dataverse</SPAN></A><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></LI>
</UL></description>
<pubDate>Fri, 26 Mar 2021 01:01:09 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/deliver-java-apps-quickly-using-custom-connectors-in-power-apps/ba-p/2176592</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-03-26T01:01:09Z</dc:date>
...
</item>
<item>
<title>Announcing Logic Apps Public Preview Refresh</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/announcing-logic-apps-public-preview-refresh/ba-p/2180994</link>
<description><DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"> <P>We&nbsp;<A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-logic-apps-runtime-performance-and-developer-improvements/ba-p/1645335"
target="_blank" rel="noopener">announced</A>&nbsp;the&nbsp;public preview of
Logic Apps' new runtime, performance and developer improvements in September
2020, and first <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-s-new-in-logic-apps/ba-p/1969149"
target="_blank" rel="noopener">public preview refresh</A> in December 2020.
Today, we are happy to announce another major update that continue to extend the
capability of Logic Apps. You can find the highlights about this release
below.</P> <P>&nbsp;</P> <P><STRONG>Quality focused</STRONG></P> <P>We have
received tremendous amount of interests from customers in healthcare, insurance,
retail and other industries on the new runtime. As the team gears up towards
general availability of the new runtime, the top focus of this public preview
refresh is quality.&nbsp;The team spent significant amount of time on bug fix,
reliability, and supportability improvements, so that you can feel confident
using the new runtime for production workload at general availability.</P>
<P>&nbsp;</P> <P><STRONG>Cross-platform&nbsp;compatibility</STRONG></P>
<P>Inline Code action allows customers to write simple JavaScript code from
right within the workflow designer with the ability to reference outputs from
previous actions. In this release, Inline Code action is now supported not only
on Windows, but also on macOS and Linux.&nbsp;</P> <P>&nbsp;</P>
<P><STRONG>Developer productivity</STRONG></P> <P>With the new runtime,
customers can author workflows using the visual designer locally from <A
href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps"
target="_self">VS Code</A>. In this release, we’ve made it even more streamlined
by removing designer’s storage dependency. This means you are no longer required
to have storage emulator or connection to storage account in Azure to use the
visual designer in VS Code.</P> <P>&nbsp;</P> <P>Other improvements to VS Code
extension includes the ability to configure webhook hostname so that the
callback request can be routed to localhost during testing, and the ability to
switch from extension bundle to NuGet-based local project.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Screen Shot 2021-03-02 at 11.59.15 PM.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/260428i04DB83552F2401F5/image-size/medium?v=v2&amp;px=400"
role="button" title="Screen Shot 2021-03-02 at 11.59.15 PM.png" alt="Screen Shot
2021-03-02 at 11.59.15 PM.png" /></span></P> <P>&nbsp;</P> <P><STRONG>Designer
and portal&nbsp;improvements</STRONG></P> <P>New designer features in this
release allow you to create parallel branches, drag-and-drop to rearrange
actions, and easily delete unwanted actions via right-click menu.</P>
<P>&nbsp;</P> <P>In Azure portal, the resource browse experience is combined to
show both the multi-tenant/consumption Logic Apps, as well as the single-tenant
Logic Apps on Functions runtime. Trigger history page is added to allow easy
debugging when the workflow isn’t being triggered as expected.</P> <P>&nbsp;</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Screen Shot 2021-03-03 at 12.01.02 AM.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/260429i112C2B7DF001C403/image-size/medium?v=v2&amp;px=400"
role="button" title="Screen Shot 2021-03-03 at 12.01.02 AM.png" alt="Screen Shot
2021-03-03 at 12.01.02 AM.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Accessibility</STRONG></P> <P>Microsoft is <A
href="https://www.microsoft.com/accessibility" target="_self">committed</A> to
revolutionizing access to technology for people living with disabilities, and us
from the Logic Apps team believe in developing technologies that enable everyone
to easily build workflows and integration solutions. In this release, we added
keyboard navigation shortcuts to allow&nbsp;intuitive navigation of the graph
between actions.</P> <P>&nbsp;</P> <P><STRONG>Learn more</STRONG></P> <P
data-unlink="true">Please check out <A
href="https://docs.microsoft.com/azure/logic-apps/logic-apps-overview-preview"
target="_self">documentations</A> on the new runtime, and tune in to the
upcoming <A href="https://www.youtube.com/watch?v=mJo-Lr5rZc0"
target="_self">Logic Apps Live</A>, scheduled to premiere on March 4th, 2021 at
9AM pacific time, during which the team will cover the release in more
details.</P> <P data-unlink="true"><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Screen Shot 2021-03-01 at 11.28.15 PM.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/260427i0E39E65AC02B1F64/image-size/medium?v=v2&amp;px=400"
role="button" title="Screen Shot 2021-03-01 at 11.28.15 PM.png" alt="Screen Shot
2021-03-01 at 11.28.15 PM.png" /></span></P> <P>&nbsp;&nbsp;</P> <P><SPAN>To get
started, download the&nbsp;</SPAN><A
href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps"
target="_self" rel="noopener noreferrer">VS Code extension</A><SPAN>&nbsp;and
create a local project, or create a new resource from the&nbsp;</SPAN><A
href="https://portal.azure.com/" target="_self" rel="nofollow noopener
noreferrer">Azure Portal</A><SPAN>. You can submit your feedback&nbsp;</SPAN><A
href="http://aka.ms/lafeedback" target="_self" rel="noopener
noreferrer">here</A><SPAN>.</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><SPAN>Derek, on behalf of the Logic Apps team</SPAN></P> </DIV></description>
<pubDate>Fri, 05 Mar 2021 00:00:37 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/announcing-logic-apps-public-preview-refresh/ba-p/2180994</guid>
<dc:creator>derek1ee</dc:creator>
<dc:date>2021-03-05T00:00:37Z</dc:date>
...
</item>
<item>
<title>Introducing Microsoft Power Fx: the low-code programming language</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-microsoft-power-fx-the-low-code-programming-language/ba-p/2169705</link>
<description><P><SPAN data-contrast="auto">Today the Power Platform introduces
its&nbsp;</SPAN><SPAN data-contrast="auto">formula language for
low-code</SPAN><SPAN data-contrast="auto">,&nbsp;</SPAN><SPAN
data-contrast="auto">Microsoft Power&nbsp;Fx</SPAN><SPAN data-contrast="auto">.
This language originates from&nbsp;</SPAN><SPAN data-contrast="auto">Microsoft
Excel and</SPAN><SPAN data-contrast="auto">&nbsp;is already the foundation of
the&nbsp;</SPAN><A
href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Microsoft Power
Apps</SPAN></A><SPAN data-contrast="auto">&nbsp;canvas. You
may&nbsp;</SPAN><SPAN data-contrast="auto">wonder</SPAN><SPAN
data-contrast="auto">, why does a low-code platform need a programming
language?&nbsp;</SPAN><SPAN data-contrast="none">The truth is, point-and-click
tools are great for quickly assembling experiences and workflows, but many apps
need a layer of logic that goes beyond what is practical to drag and
drop</SPAN><SPAN data-contrast="none">, for example:</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><I><SPAN data-contrast="none">Show a
list of customers who signed up in the last 7 days within 15 miles of this
location.&nbsp;</SPAN></I><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><I><SPAN
data-contrast="none">Highlight the newest entries in
green.&nbsp;</SPAN></I><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><I><SPAN data-contrast="none">When a
user clicks for more details, if the record has outstanding action items
associated with it, pop those to the top of the screen.</SPAN></I><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[720],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}">&nbsp;</SPAN></LI>
</UL> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_0-1614365930920.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/258488i54F16EFBD10B8E65/image-size/medium?v=v2&amp;px=400"
role="button" title="riduncan_0-1614365930920.png"
alt="riduncan_0-1614365930920.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><SPAN
data-contrast="auto">C</SPAN><SPAN data-contrast="auto">ustom logic
traditionally needed to solve such problems is where low-code platforms have
“hit a cliff”&nbsp;</SPAN><SPAN data-contrast="auto">requiring&nbsp;</SPAN><SPAN
data-contrast="none">traditional&nbsp;</SPAN><SPAN
data-contrast="none">code,&nbsp;whe</SPAN><SPAN
data-contrast="none">re</SPAN><SPAN
data-contrast="none">&nbsp;the&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;solution has
stepped in</SPAN><SPAN data-contrast="none">.&nbsp;</SPAN><SPAN
data-contrast="none">Power&nbsp;Fx&nbsp;</SPAN><SPAN
data-contrast="none">enables 200+ million people globally who&nbsp;</SPAN><SPAN
data-contrast="none">build</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">with&nbsp;</SPAN><SPAN data-contrast="none">Microsoft
Excel&nbsp;</SPAN><SPAN data-contrast="none">syntax</SPAN><SPAN
data-contrast="none">&nbsp;to build custom logi</SPAN><SPAN
data-contrast="none">c</SPAN><SPAN data-contrast="none">, reducing much of the
“cliff</SPAN><SPAN data-contrast="none">”</SPAN><SPAN
data-contrast="none">.</SPAN><SPAN data-contrast="none">&nbsp;However,
this&nbsp;</SPAN><SPAN data-contrast="none">does not</SPAN><SPAN
data-contrast="none">&nbsp;reduce the integration capabilities of Azure and
Power&nbsp;</SPAN><SPAN data-contrast="none">Apps but</SPAN><SPAN
data-contrast="none">&nbsp;enhances them</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="auto">Developers will cut their
development time and cost by using Power&nbsp;Fx&nbsp;where the complexities of
async coding are taken care of,&nbsp;</SPAN><SPAN
data-contrast="auto">Dataverse, Power Apps’ underlying data platform,
e</SPAN><SPAN data-contrast="auto">ntities and data types are first class
objects, and guard rails prevent run away code and other common
pitfalls.&nbsp;</SPAN><SPAN data-contrast="auto">Additionally, developers
can&nbsp;</SPAN><SPAN data-contrast="auto">use&nbsp;</SPAN><SPAN
data-contrast="auto">Power&nbsp;Fx&nbsp;with&nbsp;</SPAN><SPAN
data-contrast="auto">tools they are already familiar with such
as&nbsp;</SPAN><SPAN data-contrast="auto">VS (Visual Studio)</SPAN><SPAN
data-contrast="auto">&nbsp;Code, GitHub, Azure DevOps, and their own build
scripts and tools.&nbsp;</SPAN><SPAN
data-contrast="auto">Power&nbsp;Fx&nbsp;w</SPAN><SPAN data-contrast="auto">orks
with “pro-code” components created in JavaScript, C#, or other professional
languages.</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">Read the entire
Power&nbsp;Fx&nbsp;announcement&nbsp;</SPAN><A
href="https://powerapps.microsoft.com/en-us/blog/what-is-microsoft-power-fx/"
target="_blank">here.</A></P></description>
<pubDate>Fri, 05 Mar 2021 00:00:42 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/introducing-microsoft-power-fx-the-low-code-programming-language/ba-p/2169705</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-03-05T00:00:42Z</dc:date>
...
</item>
<item>
<title>Plan your Microsoft Azure experience at Microsoft Ignite</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite/ba-p/2156674</link>
<description><P>Microsoft Ignite, our free digital event, starts next week and
runs from March 2-4, 2021. We thought you might be interested to learn ways you
can plan to experience the power of&nbsp;<SPAN
data-contrast="none">Microsoft&nbsp;</SPAN><SPAN data-contrast="none">Azure and
connect with your worldwide data, infrastructure, applications, and hybrid
communities like never before. Attendees will learn about new innovations, speak
with Microsoft experts from around the globe</SPAN><SPAN data-contrast="none">,
and&nbsp;</SPAN><SPAN data-contrast="none">continue your
technical&nbsp;</SPAN><SPAN data-contrast="none">learning</SPAN><SPAN
data-contrast="none">&nbsp;journey</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><A
href="https://register.ignite.microsoft.com/" target="_blank"
rel="noopener"><SPAN data-contrast="none">Register</SPAN></A><SPAN
data-contrast="none">&nbsp;to gain full access to all Microsoft Ignite has to
offer–it’s easy and at no-cost to you.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN data-contrast="none">Create the perfect event
schedule</SPAN></STRONG><SPAN data-contrast="none">&nbsp;</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN data-contrast="none">Explore the session
catalog&nbsp;</SPAN><SPAN data-contrast="none">to</SPAN><SPAN
data-contrast="none">&nbsp;find expert speakers,&nbsp;</SPAN><SPAN
data-contrast="none">interactive sessions</SPAN><SPAN data-contrast="none">, and
more.&nbsp;</SPAN><SPAN data-contrast="none">After
registering,&nbsp;</SPAN><SPAN data-contrast="none">get&nbsp;</SPAN><SPAN
data-contrast="none">s</SPAN><SPAN data-contrast="none">tart</SPAN><SPAN
data-contrast="none">ed on</SPAN><SPAN data-contrast="none">&nbsp;your journey
at&nbsp;</SPAN><A href="https://myignite.microsoft.com/sessions" target="_blank"
rel="noopener"><SPAN data-contrast="none">myignite.microsoft.co</SPAN><SPAN
data-contrast="none">m/sessions</SPAN></A><SPAN
data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">Below are&nbsp;</SPAN><SPAN
data-contrast="none">seven featured&nbsp;</SPAN><SPAN
data-contrast="none">session</SPAN><SPAN
data-contrast="none">s&nbsp;</SPAN><SPAN data-contrast="none">on Microsoft
Azure&nbsp;</SPAN><SPAN data-contrast="none">you can’t miss:</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/44be5449-eec6-4d63-8732-716147341d56?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS174: Go Limitless:
with Azure Data &amp;&nbsp;</SPAN><SPAN data-contrast="none">AI</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/9a68aef7-867e-441d-87bd-598923d7c5fc?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS175: Empowering
every developer to innovate with Microsoft Azure</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/1b57402f-1284-422f-b45d-010a8d0eef4a?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS176: Innovate across
Hybrid and Multicloud with Azure Arc</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/8c615c6a-64ef-4c40-8ede-7eed49bc92bc?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS177: Latest Azure
innovation for Windows Server and SQL Server</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/48e213fc-37e7-4203-b507-59c0cb74b876?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS178: Introducing the
future of mixed reality</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="6" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/80b8f59f-7b3b-41a1-ae79-7884e5eca5ba?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS179: New innovations
to bring AI to the edge</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1"
data-aria-posinset="7" data-aria-level="1"><A
href="https://myignite.microsoft.com/sessions/df53b87d-ef87-45ec-b4e4-11f29f7fa755?source=sessions"
target="_blank" rel="noopener"><SPAN data-contrast="none">FS180: What's new with
Microsoft Azure infrastructure</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></LI>
</UL> <P><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><STRONG>Follow&nbsp;#MSIgnite&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">Explore the latest event news, trending topics, and share
your point of view in real time</SPAN><SPAN
data-contrast="none">&nbsp;with&nbsp;</SPAN><SPAN
data-contrast="none">your</SPAN><SPAN
data-contrast="none">&nbsp;communit</SPAN><SPAN
data-contrast="none">y</SPAN><SPAN data-contrast="none">.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">Join us on Twitter
and LinkedIn by using&nbsp;</SPAN><SPAN
data-contrast="none">#MSIgnite.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://twitter.com/MS_Ignite" target="_blank" rel="noopener"><SPAN
data-contrast="none">Join today &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>Connection Zone&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">Only at #MSIgnite will you meet the engineers and partners
who build and maintain our tools and get the answers to your toughest technical
questions. Register for an Ask the Expert session at
#MSIgnite.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://myignite.microsoft.com/community-connect" target="_blank"
rel="noopener"><SPAN data-contrast="none">Connect today
&gt;</SPAN></A><STRONG><SPAN data-contrast="auto">&nbsp;</SPAN></STRONG><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>Learning Zone&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">The Learning Zone is the center for training, development,
and certification with Microsoft. Whatever your style of learning happens to
be,&nbsp;</SPAN><SPAN data-contrast="none">you can find content and interactive
opportunities to boost and diversify your&nbsp;</SPAN><SPAN
data-contrast="none">cloud skills</SPAN><SPAN
data-contrast="none">.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://myignite.microsoft.com/learning-zone" target="_blank"
rel="noopener"><SPAN data-contrast="none">Explore today &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>One-on-one consultation&nbsp;</STRONG></P> <P><SPAN
data-contrast="none">Schedule your 45-minute, one-on-one consultation
with&nbsp;</SPAN><SPAN data-contrast="none">Microsoft&nbsp;</SPAN><SPAN
data-contrast="none">Azure&nbsp;</SPAN><SPAN data-contrast="none">experts
in&nbsp;</SPAN><SPAN data-contrast="none">infrastructure, data&nbsp;</SPAN><SPAN
data-contrast="none">and&nbsp;</SPAN><SPAN data-contrast="none">AI, and
application</SPAN><SPAN data-contrast="none">&nbsp;development.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://myignite.microsoft.com/app-consult" target="_blank"
rel="noopener"><SPAN data-contrast="none">Schedule today &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG>Continue your learning journey&nbsp;</STRONG></P>
<P><SPAN data-contrast="none">Find your way to deeper content, training options,
communities</SPAN><SPAN data-contrast="none">,</SPAN><SPAN
data-contrast="none">&nbsp;and certification details across all Microsoft cloud
solutions from one place.</SPAN><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P>
<P><A href="https://aka.ms/learnatignite" target="_blank" rel="noopener"><SPAN
data-contrast="none">Start exploring &gt;</SPAN></A><SPAN
data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P></description>
<pubDate>Wed, 24 Feb 2021 18:32:26 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/plan-your-microsoft-azure-experience-at-microsoft-ignite/ba-p/2156674</guid>
<dc:creator>Mark Winters</dc:creator>
<dc:date>2021-02-24T18:32:26Z</dc:date>
...
</item>
<item>
<title>The Azure Security Architect Map</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091</link>
<description><P>Hi,</P> <P>&nbsp;</P> <P>Recently, I built the <A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Solution-Architect-Map/ba-p/689700"
target="_self">Azure <STRONG>Solution</STRONG> Architect Map</A> aimed at
helping Architects finding their way in Azure.&nbsp; Given the unexpected
success and the very positive feedback I received, I decided to come up with
other maps, namely the Azure <STRONG>Security </STRONG>Architect Map, the Azure
<STRONG>Infrastructure</STRONG> Architect Map and the Azure
<STRONG>Application</STRONG> Architect Map.</P> <P>&nbsp;</P> <P>Here are all
the maps in my series of Architecture Maps:</P> <UL> <LI><A id="link_20"
class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></LI> <LI><A id="link_13" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><STRONG><A id="link_14" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_15" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P><BR />The purpose of the Solution Architect map is to give a high-level view
and quick insights about what is available and how to choose between the
different services according to some functional needs. <BR />It covers a few key
areas, mostly about putting in place the foundations of an Azure Platform, and
cannot go into the details because this would make the map very
indigestible.</P> <P>&nbsp;</P> <P>Today I come with the Azure Security
Architect Map:</P> <P>&nbsp;</P> <P><A
href="https://stephaneeyskens.files.wordpress.com/2019/12/securitymap.png"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="map.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/162829iB5D0F42F300842C8/image-size/large?v=v2&amp;px=999"
role="button" title="securitymap.png" alt="securitymap.png" /></span></A></P>
<P>&nbsp;</P> <P>which focuses on security only and goes much deeper into that
key area. It is by no means the holy grail but it should help you take informed
decisions on how you plan to use and deploy services and how you will govern
your Azure workloads. I bring business drivers such as TTM, cost optimization
and true elasticity into the equation to highlight the consequences of choosing
an option over another.</P> <P>&nbsp;</P> <P>The map focuses on the following
areas:</P> <UL> <LI>Network Layer</LI> <LI>Identity Layer</LI> <LI>Application
Service Layer</LI> <LI>Application Data</LI> <LI>Security Posture</LI> <LI>Keys,
Certificates and Secrets Management as well as Encryption capabilities</LI>
<LI>MDM &amp; MAM</LI> </UL> <P><STRONG><FONT size="3">How to read this
map?</FONT></STRONG></P> <P>&nbsp;</P> <P>Whenever you see the attachment icon
<span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="attachicon.png" style="width: 22px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120128i004B5A4431671EB0/image-size/large?v=v2&amp;px=999"
role="button" title="attachicon.png" alt="attachicon.png" /></span>, it means
that I have attached an explanation on a given rationale or service. If you see
a (*) next to a node, it is kind of a must read information. So for instance, in
the following screenshot:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="vnet.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120129i449A2BE58FE83622/image-size/large?v=v2&amp;px=999"
role="button" title="vnet.png" alt="vnet.png" /></span></P> <P>&nbsp;</P> <P>I
want to catch your attention on the following:</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="attention.png" style="width: 458px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120315iAF01654DFE885992/image-dimensions/458x115?v=v2"
width="458" height="115" role="button" title="attention.png" alt="attention.png"
/></span></P> <P>The rationales behind certain routes are based on my own
experience and do not represent the only option, but they should be considered
as advisory only. So the idea is to review these maps frequently since the above
information is likely to change over the coming months and I'll simply keep
adding notes or remove them when it does not make sense anymore.</P>
<P>&nbsp;</P> <P>The link icon&nbsp;&nbsp;<span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="link.png" style="width: 31px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120317i038D48CCA48EF590/image-size/small?v=v2&amp;px=200"
role="button" title="link.png" alt="link.png" /></span>is a pointer to the
corresponding Microsoft documentation.</P> <P>&nbsp;</P> <P>With this tool, any
Security Architect (Cloud or not) will quickly grasp the security landscape of
Azure.&nbsp;</P> <P>&nbsp;</P> <P>Here is the pointer to the map:</P> <P>Update
(02/2021): the online MindMapMaker tool deletes maps that are older than 1
year....A pointer to the last version is available in the below table.</P>
<TABLE style="border-collapse: collapse; width: 100%;" border="1" width="100%">
<TBODY> <TR> <TD height="29px" style="width: 50%;"><STRIKE>v1.0
(06/2019)</STRIKE></TD> <TD height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mmc00bf17b40454ecda863046602b7be3e"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mmc00bf17b40454ecda863046602b7be3e</A></STRIKE></TD>
</TR> <TR> <TD height="29px" style="width: 50%;"><STRIKE>v1.1
(12/2019)</STRIKE></TD> <TD height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mm2247a15d373d4e97bf589772950af0ff"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm2247a15d373d4e97bf589772950af0ff</A></STRIKE></TD>
</TR> <TR> <TD style="width: 50%;">Last MindMapMaker map</TD> <TD style="width:
50%;"> <P><A
href="https://app.mindmapmaker.org/#m:mmd329ac370bf141948f565b79c40b0ff6"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mmd329ac370bf141948f565b79c40b0ff6</A></P>
</TD> </TR> <TR> <TD style="width: 50%;">Last PDF map</TD> <TD style="width:
50%;"> <P><A
href="https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter07/maps/Security%20Architecture.pdf"
target="_blank"
rel="noopener">https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter07/maps/Security%20Architecture.pdf</A></P>
</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Here are all the maps in my
series of Architecture Maps:</P> <UL> <LI><A id="link_20" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></LI> <LI><A id="link_13" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><STRONG><A id="link_14" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_15" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P> </P></description>
<pubDate>Tue, 23 Feb 2021 09:46:20 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091</guid>
<dc:creator>stephaneey</dc:creator>
<dc:date>2021-02-23T09:46:20Z</dc:date>
...
</item>
<item>
<title>The Cloud-native Azure Application Architect Map</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242</link>
<description><P>Hi,</P> <P>&nbsp;</P> <P>Recently, I built the <A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Solution-Architect-Map/ba-p/689700"
target="_self">Azure <STRONG>Solution</STRONG> Architect Map</A>&nbsp;,
the&nbsp;<A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Security-Architect-Map/ba-p/714091"
target="_self">Azure <STRONG>Security</STRONG> Architect Map</A>&nbsp; and the
<A
href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/The-Azure-Infrastructure-Architect-Map/ba-p/766268"
target="_self">Azure Infrastructure Architect Map</A> aimed at helping
Architects finding their way in Azure.&nbsp;Here are all the maps in my series
of Architecture Maps:</P> <UL> <LI><A id="link_20" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><STRONG><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_13" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><A id="link_14" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect Map</A></LI> <LI><A
id="link_15" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P>&nbsp;</P> <P>I'm now coming with the next map in this series, namely: the
Cloud-native Azure Application Architect Map.</P> <P><BR />As usual, this map is
by no means the holy grail and is just there to highlight some good fit between
Azure Services and Design Patterns. This map is certainly subject to controversy
as they are thousands of ways to design and develop and application. My goal is
only to highlight some possibilities.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>As usual,
here is a screenshot of the map:</P> <P>&nbsp;</P> <P><A
href="https://stephaneeyskens.files.wordpress.com/2019/12/cnative.png"
target="_blank" rel="noopener"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="map.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/128490i338079449BEA0B23/image-size/large?v=v2&amp;px=999"
role="button" title="The Azure Application Architect Map.png" alt="The Azure
Application Architect Map.png" /></span></A></P> <P>&nbsp;</P> <P>The map
focuses on the following areas:</P> <UL> <LI>Data &amp; Big Data</LI> <LI>Common
Design Patterns: SAGA, Circuit Breaker, Event-driven Architecture, etc.</LI>
<LI>Domain-driven Design &amp; Microservices: yes I clubbed them together
:)</img></LI> <LI>Artificial Intelligence: NLP, Supervised &amp; Unsupervised ML
etc.</LI> <LI>Miscellaneous: things that come back regularly when developing
applications such as real-time HTTP, search, job scheduling etc.&nbsp;</LI>
</UL> <P><STRONG><FONT size="3">How to read this map?</FONT></STRONG></P>
<P>&nbsp;</P> <P>Whenever you see the attachment icon <span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="attachicon.png" style="width: 22px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120128i004B5A4431671EB0/image-size/large?v=v2&amp;px=999"
role="button" title="attachicon.png" alt="attachicon.png" /></span>, it means
that I have attached an explanation on a given rationale or service. If you see
a (*) next to a node, it is kind of a must read information. So for instance, in
the following screenshot:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="dddcqrs.png" style="width: 439px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/127580i76912648F0FA13ED/image-size/large?v=v2&amp;px=999"
role="button" title="dddcqrs.png" alt="dddcqrs.png" /></span></P> <P>&nbsp;</P>
<P>I want to catch your attention on why I make an association between DDD and
Microservices:</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="dddcqrsexplained.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/127581i95B7FA9354C040F8/image-size/large?v=v2&amp;px=999"
role="button" title="dddcqrsexplained.png" alt="dddcqrsexplained.png"
/></span></P> <P>as well as why I make an association between CQRS and DDD:</P>
<P><span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="cqrsdddexplained.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/127582i06C4646B502D6531/image-size/large?v=v2&amp;px=999"
role="button" title="cqrsdddexplained.png" alt="cqrsdddexplained.png"
/></span></P> <P>You might of course disagree with this but at least, you
understand my rationale.</P> <P>The link icon&nbsp;&nbsp;<span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="link.png" style="width: 31px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/120317i038D48CCA48EF590/image-size/small?v=v2&amp;px=200"
role="button" title="link.png" alt="link.png" /></span>is a pointer to the
corresponding Microsoft documentation.</P> <P>&nbsp;</P> <P>Note that I haven't
dived into AKS or Service Fabric since this guys would deserve a dedicated map
and are not Azure services like others, they are a universe by themselves.</P>
<P>&nbsp;</P> <P>With this tool, any Cloud-native Application Architect should
quickly grasp the application landscape of Azure.&nbsp;</P> <P>&nbsp;</P>
<P>Update: the online MindMapMaker tool deletes maps that are older than a year,
therefore, just visit the last version.</P> <TABLE style="border-collapse:
collapse; width: 100%;" border="1" width="100%"> <TBODY> <TR> <TD height="29px"
style="width: 50%;"><STRIKE>v1.0 &amp; v.1 (09/2019)</STRIKE></TD> <TD
height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mm5e724c4dc8324504ab58c6d9b0f708b8"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm5e724c4dc8324504ab58c6d9b0f708b8</A></STRIKE></TD>
</TR> <TR> <TD height="29px" style="width: 50%;"><STRIKE>v 1.2
(12/2019)</STRIKE></TD> <TD height="29px" style="width: 50%;"><STRIKE><A
href="https://app.mindmapmaker.org/#m:mm41003e37953d47e0841ae28cf0079f0e"
target="_blank"
rel="noopener">https://app.mindmapmaker.org/#m:mm41003e37953d47e0841ae28cf0079f0e</A></STRIKE></TD>
</TR> <TR> <TD height="56px" style="width: 50%;">Last version MindMapMaker</TD>
<TD height="56px" style="width: 50%;"> <P><A
href="https://app.mindmapmaker.org/#m:mm87db50f890484619b2429b32c3545916"
target="_blank">https://app.mindmapmaker.org/#m:mm87db50f890484619b2429b32c3545916</A></P>
</TD> </TR> <TR> <TD height="29px" style="width: 50%;">Last version PDF</TD> <TD
height="29px" style="width: 50%;"> <P><A
href="https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter05/maps/Azure%20Application%20Architecture.pdf"
target="_blank">https://github.com/PacktPublishing/The-Azure-Cloud-Native-Architecture-Mapbook/blob/master/Chapter05/maps/Azure%20Application%20Architecture.pdf</A></P>
</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Here are all the maps in my
series of Architecture Maps:</P> <UL> <LI><A id="link_20" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-openid-connect-oidc-architecture-map/ba-p/1119450"
target="_blank" rel="noopener">The OpenID Connect (OIDC) Architecture
Map</A></LI> <LI><A id="link_26" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-kubernetes-service-aks-architecture-map/ba-p/1078714"
target="_blank" rel="noopener">The Azure Kubernetes Service (AKS) Architecture
Map</A></LI> <LI><STRONG><A id="link_10" class="page-link lia-link-navigation
lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242"
target="_blank" rel="noopener">The Cloud-native Azure Application Architect
Map</A></STRONG>&nbsp;- This map</LI> <LI><A id="link_13" class="page-link
lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-infrastructure-architect-map/ba-p/766268"
target="_blank" rel="noopener">The Azure Infrastructure Architect Map</A></LI>
<LI><A id="link_14" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-security-architect-map/ba-p/714091"
target="_blank" rel="noopener">The Azure Security Architect Map</A></LI> <LI><A
id="link_15" class="page-link lia-link-navigation lia-custom-event"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-azure-solution-architect-map/ba-p/689700"
target="_blank" rel="noopener">The Azure Solution Architect Map</A></LI> </UL>
<P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Sun, 21 Feb 2021 17:30:06 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-cloud-native-azure-application-architect-map/ba-p/812242</guid>
<dc:creator>stephaneey</dc:creator>
<dc:date>2021-02-21T17:30:06Z</dc:date>
...
</item>
<item>
<title>A Visual Introduction To Azure Fundamentals</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-visual-introduction-to-azure-fundamentals/ba-p/2132410</link>
<description><P><SPAN style="font-family: inherit; font-size: xx-large;">A
Visual Introduction To Azure Fundamentals<BR /></SPAN></P> <P><EM>This is a
summary of an article that I&nbsp;<A href="https://aka.ms/visual-azure-acg"
target="_blank" rel="noopener">just published in A Cloud Guru</A>&nbsp;which
goes into more details on the choice of the "truck" (delivery) metaphor and
resources to prep for AZ-900. Don't forget to check that out!</EM></P>
<P>&nbsp;</P> <P><FONT size="5">Setting The Stage</FONT></P> <P>The start of a
new year is great to kickstart learning resolutions - and aiming for
certification (like AZ-900) is a great goal to have!! But sticking to that
resolution requires a study plan (for accountability) and study resources (that
suit your learning style). Read the <A href="https://aka.ms/visual-azure-acg"
target="_self">A Cloud Guru article</A>&nbsp;for some thoughts on how you can
set yourself up for success, including links to communities and study guides
that can help.</P> <P>&nbsp;</P> <P>Today though I want to focus on the learning
styles we adopt - and in particular, on our&nbsp;<EM>visual learning</EM>
ability. <A
href="https://www.inc.com/molly-reynolds/how-to-spot-visual-auditory-and-kinesthetic-learni.html"
target="_blank" rel="noopener">65% of us are visual learners</A>&nbsp;-- which
means we absorb information ("see the big picture") more quickly from images
than from text, and can make connections more quickly to relevant ideas
("connect the dots") by detecting or reinforcing patterns that we are innately
familiar with.</P> <P>&nbsp;</P> <P>In reality, we all learn by mixing several
styles - read/write (articles), kinesthetic (tutorials), auditory (lectures) and
visual (imagery) -- so as you study for certification, it's worth exploring
different resources to see which ones give you the best approach to not just
understanding the topic, but retaining that knowledge and recalling it
effectively later.</P> <P>&nbsp;</P> <P><FONT size="5">Azure Fundamentals: A
Sketchnote!</FONT></P> <P>In 2021, I started the <A
href="https://azure.cloud-skills.dev" target="_blank"
rel="noopener">VisualAzure</A> project, and its accompanying <A
href="https://cloud-skills.dev" target="_blank" rel="noopener">Cloud Skills:
Sketchnotes</A> repository, in an effort to create useful learning resources for
visual learners that could complement relevant <A
href="https://docs.microsoft.com/?WT.mc_id=mobile-12359-ninarasi"
target="_blank" rel="noopener">Microsoft Docs</A>&nbsp;and <A
href="https://learn.microsoft.com/?WT.mc_id=mobile-12359-ninarasi"
target="_self">Microsoft Learn</A> content. My first target -- the <A
href="https://docs.microsoft.com/en-us/learn/certifications/azure-fundamentals?WT.mc_id=mobile-12359-ninarasi"
target="_self">Azure Fundamentals learning paths and AZ-900.</A></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Cloud_Guru.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/254744iE7FBA79C8717E50F/image-size/large?v=v2&amp;px=999"
role="button" title="Cloud_Guru.png" alt="Cloud_Guru.png" /></span></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>Here is the sketchnote visualizing the&nbsp;<A
href="https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-fundamentals/?WT.mc_id=mobile-12359-ninarasi"
target="_blank" rel="noopener">Introduction To Azure Fundamentals</A>&nbsp;unit
of the common module that anchors all six learning paths. The sketchnote uses
two key visual storytelling tactics:</P> <UL> <LI><STRONG>A visual
vocabulary</STRONG> -- so you can quickly scan the sheet at a glance, spot
various "sections" and navigate the information "flow" using visual cues like
icons, arrows and banners.</LI> <LI><STRONG>A visual metaphor&nbsp;</STRONG>--
in this case, the definition of cloud computing as "the&nbsp;<EM>delivery</EM>
of computing services over the internet" inspired me to use a transport
(delivery truck) metaphor, and use related analogies to explain other concepts
tied to cloud computing.</LI> </UL> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Azure-2-ACloudGuru-Fundamentals-Small.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/254745i05D151493044D40E/image-size/large?v=v2&amp;px=999"
role="button" title="Azure-2-ACloudGuru-Fundamentals-Small.png"
alt="Azure-2-ACloudGuru-Fundamentals-Small.png" /></span></P> <P>&nbsp;</P> <P>I
hope you find this not just interesting, but also informative and useful, for
your Azure learning and certification journeys. I encourage you to check out
these resources to learn more:</P> <UL> <LI>Read <A
href="https://aka.ms/visual-azure-acg" target="_blank" rel="noopener">this
accompanying article at A Cloud Guru!</A>&nbsp;to dive into metaphor and
analogies.</LI> <LI>Check out <A
href="https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-fundamentals/?WT.mc_id=mobile-12359-ninarasi"
target="_blank" rel="noopener">the relevant MS Learn unit/module</A> and see if
this helps your understanding.</LI> <LI>Download a higher-quality image
from&nbsp;<A href="https://cloud-skills.dev/" target="_blank"
rel="noopener">this site</A>, review it after a few weeks to test your
recall.</LI> </UL> <P>&nbsp;</P> <P>Last but not least - if you have feedback
for improving these sketchnotes, or want to request one for a specific Microsoft
Learn (module) or Docs (topic) - leave me a request or share your comments via
this <A href="https://github.com/SketchTheDocs/visual-azure/discussions"
target="_blank" rel="noopener">Discussion Forum!</A>&nbsp;And if you found this
useful and are a Redditor, I'd <A
href="https://www.reddit.com/r/AZURE/comments/liebot/a_visual_guide_to_azure_fundamentals_a_cloud_guru/"
target="_blank" rel="noopener">love an upvote</A>
:smiling_face_with_smiling_eyes:</img><BR /><BR /></P> <P>Happy
learning!</P></description>
<pubDate>Sun, 14 Feb 2021 15:40:46 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-visual-introduction-to-azure-fundamentals/ba-p/2132410</guid>
<dc:creator>nityan</dc:creator>
<dc:date>2021-02-14T15:40:46Z</dc:date>
...
</item>
<item>
<title>A Deep Dive into Serverless Applications on Power Apps and Azure</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-deep-dive-into-serverless-applications-on-power-apps-and-azure/ba-p/2113430</link>
<description><H2><STRONG><SPAN
data-contrast="auto">Overview</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">In 2021, each month we will be releasing a monthly
blog covering the webinar of the month for the Low-code application development
(LCAD) on Azure solution. </SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">LCAD on Azure is a new solution to demonstrate the robust
development capabilities of integrating low-code Microsoft Power Apps and the
Azure products you may be familiar with.&nbsp;&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">This month’s webinar is ‘A Deep
Dive&nbsp;</SPAN><SPAN data-contrast="none">into</SPAN><SPAN
data-contrast="none">&nbsp;Serverless</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="auto">Applications on
Power Apps and Azur</SPAN><SPAN data-contrast="auto">e.</SPAN><SPAN
data-contrast="auto">’</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">In
this blog I will&nbsp;</SPAN><SPAN
data-contrast="none">briefly&nbsp;</SPAN><SPAN
data-contrast="none">recap</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development</SPAN><SPAN data-contrast="none">&nbsp;on Azure</SPAN></A><SPAN
data-contrast="none">,&nbsp;</SPAN><SPAN
data-contrast="none">provide&nbsp;</SPAN><SPAN data-contrast="none">an overview
of serverless, why to build a serverless Power App, and what to look forward to
in the webinar’s demos.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<H2><STRONG><SPAN data-contrast="none">What
is&nbsp;</SPAN></STRONG><STRONG><SPAN data-contrast="none">Low-code application
development&nbsp;on&nbsp;Azure</SPAN></STRONG><STRONG><SPAN
data-contrast="none">?</SPAN></STRONG><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low-code application
development (LCAD) on Azure</SPAN></A><SPAN data-contrast="none">&nbsp;was
created to help developers build business applications faster with less code,
leveraging the Power Platform, and more specifically Power Apps, yet helping
them scale and extend their Power Apps with Azure services.</SPAN></P> <P><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_0-1614964504187.png" style="width: 1395px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261234iAE4D8B9F49A1768D/image-dimensions/1395x784?v=v2"
width="1395" height="784" role="button" title="riduncan_0-1614964504187.png"
alt="riduncan_0-1614964504187.png" /></span></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">For example, a pro developer who works for a manufacturing
company would need to build a line-of-business (LOB) application to help
warehouse employees’ track incoming inventory. </SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">That application would take months to build, test,
and deploy, however with Power Apps’ it can take hours to build, saving time and
resources.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">However, say the warehouse employees
want the application to place procurement orders for additional inventory
automatically when current inventory hits a determined low.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none"> In the past that would require
another heavy lift by the development team to rework their previous application
iteration. </SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Due to the
integration of Power Apps and Azure a professional developer can build an API in
Visual Studio (VS) Code, publish it to their Azure portal, and export the API to
Power Apps integrating it into their application as a custom connector.
</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">Afterwards, that same
API is re-usable indefinitely in the Power Apps’ studio, for future use with
other applications, saving the company and developers more time and
resources.&nbsp;&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none"><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">To
learn&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">more,</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">&nbsp;visit
the&nbsp;</SPAN></SPAN><A class="Hyperlink BCX8 SCXW12267399"
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined BCX8
SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399"
data-ccp-charstyle="Hyperlink">LCAD</SPAN></SPAN><SPAN class="TextRun Underlined
BCX8 SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399" data-ccp-charstyle="Hyperlink">&nbsp;on Azure
page</SPAN></SPAN></A><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">,&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">and to walk
through the</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">a</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">forementioned&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX8
SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8
SCXW12267399">scenario</SPAN></SPAN><SPAN class="TextRun BCX8 SCXW12267399"
data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399">&nbsp;try
the&nbsp;</SPAN></SPAN><A class="Hyperlink BCX8 SCXW12267399"
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined BCX8
SCXW12267399" data-contrast="none"><SPAN class="NormalTextRun BCX8 SCXW12267399"
data-ccp-charstyle="Hyperlink">LCAD on Azure guided tour</SPAN></SPAN></A><SPAN
class="TextRun BCX8 SCXW12267399" data-contrast="none"><SPAN
class="NormalTextRun BCX8 SCXW12267399">.</SPAN></SPAN><SPAN class="EOP BCX8
SCXW12267399"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="riduncan_0-1614961772841.jpeg" style="width:
1397px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261222i2B2105E0958B3158/image-dimensions/1397x787?v=v2"
width="1397" height="787" role="button" title="riduncan_0-1614961772841.jpeg"
alt="riduncan_0-1614961772841.jpeg" /></span></P> <P>&nbsp;</P>
<H2><STRONG><SPAN data-contrast="none">Serverless
Applications</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">You may be wondering what a serverless
application</SPAN><SPAN data-contrast="none">&nbsp;is?</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Serverless is a cloud computing execution model where the
cloud provider dynamically manages the allocation and provisioning of servers. A
serverless application runs in stateless compute containers that are
event-triggered, ephemeral, and fully managed by the cloud provider.</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none"> In turn this model greatly benefits
the developer and team by reducing th</SPAN><SPAN data-contrast="none">eir
workload by&nbsp;</SPAN><SPAN data-contrast="none">reducing the need</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">to manage servers,
and this model is much cheaper because teams don’t incur the hardware and
associated costs.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">A logical next question is
“</SPAN><SPAN data-contrast="none">in what scenario(s) do I go serverless?”
</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">You can choose it when
you have asynchronous</SPAN><SPAN data-contrast="none">&nbsp;and concurrent
tasks to be executed, when you have infrequent requests and spiky
traffic</SPAN><SPAN data-contrast="none">&nbsp;where you don’t have a dependency
on latency. Also, when you’re looking to quickly iterate your development, build
MVPs, change your code or change business requirements to</SPAN><SPAN
data-contrast="none">&nbsp;immediately deploy that code.&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN data-contrast="none">You’re now convinced of serverless
code’s benefits,&nbsp;</SPAN><SPAN data-contrast="none">but&nbsp;</SPAN><SPAN
data-contrast="none">how do you get started?&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="none">At&nbsp;</SPAN><SPAN data-contrast="none">the core
are cloud functions th</SPAN><SPAN data-contrast="none">at</SPAN><SPAN
data-contrast="none">&nbsp;enable&nbsp;</SPAN><SPAN
data-contrast="none">you&nbsp;</SPAN><SPAN data-contrast="none">to write code
in&nbsp;</SPAN><SPAN data-contrast="none">containers</SPAN><SPAN
data-contrast="none">. I</SPAN><SPAN data-contrast="none">n reaction to an event
execution can be triggered by any of the managed services or any
custom</SPAN><SPAN data-contrast="none">&nbsp;sources you might be defining that
are important for your application.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Due</SPAN><SPAN
data-contrast="none">&nbsp;to&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp"
target="_blank" rel="noopener"><SPAN data-contrast="none">durable
functions</SPAN></A><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">you</SPAN><SPAN data-contrast="none">&nbsp;can write
stateful functions in a serverless compute environment. Lastly, serverless
c</SPAN><SPAN data-contrast="none">ode is event driven, run</SPAN><SPAN
data-contrast="none">ning&nbsp;</SPAN><SPAN data-contrast="none">in response to
specific triggers which can be a HTTP or a blob trigger when running code in
re</SPAN><SPAN data-contrast="none">sponse to a file being uploaded to a storage
account number.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <H2><STRONG><SPAN data-contrast="none">Serverless Power
Apps</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">Building serverless applications on Azure sound
great by themselves, why would you bother to build your using Microsoft Power
Apps?</SPAN><SPAN data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Building business applications quickly is not easy
when&nbsp;</SPAN><SPAN data-contrast="none">utilizing</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">several</SPAN><SPAN
data-contrast="none">&nbsp;different frameworks, hosting options, and complex
integrations between systems. Leveraging serverless technologies (Azure
Functions and Logic Apps) can&nbsp;</SPAN><SPAN
data-contrast="none">provide</SPAN><SPAN data-contrast="none">&nbsp;the building
blocks for&nbsp;</SPAN><SPAN data-contrast="none">APIs</SPAN><SPAN
data-contrast="none">&nbsp;to connect to custom backends, services, or a Data
Model (</SPAN><SPAN data-contrast="none">Dataverse</SPAN><SPAN
data-contrast="none">) that stores data across many applications. </SPAN></P>
<P><LI-VIDEO
vid="https://www.youtube.com/watch?v=etVdXkGAiRc&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=11"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/etVdXkGAiRc/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P><SPAN data-contrast="none">Leverage these APIs
to deeply integrate with PowerApps or&nbsp;</SPAN><SPAN
data-contrast="none">Power Automate</SPAN><SPAN data-contrast="none">&nbsp;and
extend the data that is most critical to business users with apps that are
quickly built, managed, and distributed.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Moreover, with the development of ‘Fusion Development’
teams a term coined by analysts, developers can build back-end serverless APIs
and import them via&nbsp;</SPAN><A
href="https://powerapps.microsoft.com/en-us/blog/azure-api-management-connector-on-the-power-platform/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure API management
directly into&nbsp;</SPAN><SPAN data-contrast="none">Microsoft&nbsp;</SPAN><SPAN
data-contrast="none">Power Apps</SPAN></A><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">as custom
connectors.</SPAN></P> <P>&nbsp;</P> <P><SPAN data-contrast="none">‘Citizen
Developers’ or those who aren’t professional developers, can&nbsp;</SPAN><SPAN
data-contrast="none">leverage&nbsp;</SPAN><SPAN data-contrast="none">these
APIs&nbsp;</SPAN><SPAN data-contrast="none">in their Power App, reducing the
overall work of the developer, by not having to build front-end
code.</SPAN><SPAN data-contrast="none">&nbsp;Thus, piling on the time and
resources saved by building serverless&nbsp;</SPAN><SPAN
data-contrast="none">applications.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<H2><STRONG><SPAN data-contrast="auto">What to expect in the
webinar?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">Simona will cover first build a web API that
generates jokes, throughout this process she will test and debug her APIs.
Afterward publishing the API to&nbsp;</SPAN><SPAN data-contrast="none">which is
available to test at aka.</SPAN><SPAN data-contrast="none">ms</SPAN><SPAN
data-contrast="none">/joke</SPAN><SPAN data-contrast="none">&nbsp;which
generates jokes using random words. </SPAN></P> <P>&nbsp;</P> <P><SPAN
data-contrast="none">Lastly, she exports the API to&nbsp;</SPAN><SPAN
data-contrast="none">Power Apps via the Azure portal and challenges the viewers
to extend her app with Power Automate AI chatbots that send jokes as text
messages.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><LI-VIDEO
vid="https://www.youtube.com/watch?v=o8XnPISgHqQ&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=9"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/o8XnPISgHqQ/hqdefault.jpg"
external="url"></LI-VIDEO></P> <H2><STRONG><SPAN
data-contrast="none">Summary</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></H2>
<P><SPAN data-contrast="none">Make sure to tune into&nbsp;</SPAN><SPAN
data-contrast="none">the <A
href="https://info.microsoft.com/ww-Landing-ADeepDiveintoServerlessApplications.html?LCID=EN-US"
target="_self">webinar</A> on February 25</SPAN><SPAN
data-contrast="none">th</SPAN><SPAN data-contrast="none">&nbsp;to learn more
about serverless APIs and how to export them into your Power Apps. Moreover,
there will be a Low-code application development on Azure ‘Learn
Live’&nbsp;</SPAN><SPAN data-contrast="none">session during
Ignite,&nbsp;</SPAN><SPAN data-contrast="none">the data loss prevention and new
governance policies for Power Apps at Ignite, and&nbsp;</SPAN><SPAN
data-contrast="none">an SAP on Azure&nbsp;</SPAN><SPAN
data-contrast="none">Power Apps</SPAN><SPAN data-contrast="none">&nbsp;webinar
in March</SPAN><SPAN data-contrast="none">.</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN
data-contrast="auto">Resources</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG>Webinar Registration Link</STRONG></P> <P><STRONG><A
href="https://info.microsoft.com/ww-Landing-ADeepDiveintoServerlessApplications.html?LCID=EN-US"
target="_blank" rel="noopener">Serverless Applications | Microsoft Power
Apps</A></STRONG></P> <P><STRONG><SPAN data-contrast="auto">Low Code Application
Development&nbsp;</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">on</SPAN></STRONG><STRONG><SPAN
data-contrast="auto">&nbsp;Azure</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener"><SPAN data-contrast="none">LCAD on
Azure</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure plus Power Apps
for pro developers</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://www.youtube.com/playlist?list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM"
target="_blank" rel="noopener"><SPAN data-contrast="none">Low Code Application
Development on Azure - YouTube</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Power Apps x Azure
documentation</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/powerapps/developer/data-platform/azure-integration"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure integration
document</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://powerapps.microsoft.com/en-us/blog/azure-api-management-connector-on-the-power-platform/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure API Management
integration announcement</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/azure/api-management/export-api-power-platform"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure API Management
integration documentation</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><STRONG><SPAN data-contrast="auto">Serverless
documentation</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs"
target="_blank" rel="noopener"><SPAN data-contrast="none">Compare serverless
options</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A
href="https://docs.microsoft.com/en-us/learn/modules/choose-azure-service-to-integrate-and-automate-business-processes/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Compare serverless
options module</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://docs.microsoft.com/en-us/azure/azure-functions/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Functions
documentation</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><A href="https://azure.microsoft.com/en-us/services/functions/"
target="_blank" rel="noopener"><SPAN data-contrast="none">Azure Functions
website</SPAN></A><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P>
<P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P></description>
<pubDate>Fri, 05 Mar 2021 17:22:14 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/a-deep-dive-into-serverless-applications-on-power-apps-and-azure/ba-p/2113430</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-03-05T17:22:14Z</dc:date>
...
</item>
<item>
<title>Creating a JWT Validation Web App</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/creating-a-jwt-validation-web-app/ba-p/2109450</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="JWT.png" style="width: 401px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/251081i4C16DA40C0BF968F/image-dimensions/401x217?v=v2"
width="401" height="217" role="button" title="JWT.png" alt="JWT.png"
/></span></P><P>&nbsp;</P><P>If you have been doing any OAuth and/or Open ID
Connect troubleshooting in recent years it's very likely you've run across <A
href="https://jwt.io" target="_blank" rel="noopener">https://jwt.io</A>, or in
the Microsoft world <A href="https://jwt.ms" target="_blank"
rel="noopener">https://jwt.ms</A>. Great tools, but primarily JWT parsing tools
rather than JWT validation tools.</P><P>&nbsp;</P><P>Yes, jwt.io allows you to
upload your keys in the UI, but there are a lot of scenarios that doesn't work
for.</P><P>&nbsp;</P><P>Let's rewind a step or two here first though. Last year
I showed how you could create your own faux tokens. That is; the tokens were
real enough, but they mimicked actual tokens as they would look if issued by
Azure AD and Azure AD B2C without actually being signed by Microsoft's keys. If
you pasted the result into jwt.ms it would look like a real
token.</P><P>&nbsp;</P><P>Identity is a large topic, but the two central
concepts are "who are you" (authentication) and "what are you allowed to do"
(authorization). If your approach in web app or api is to accept any old token
and say "this looks good" you might run into trouble.</P><P>&nbsp;</P><P>Which
is why I wanted to show how to&nbsp; build a web app that will attempt to
validate the token in addition to parsing it. This is based on supplying a
metadata url to retrieve signing keys, etc. If you don't have this the app will
just parse the token and check against the attributes you supply (issuer,
audience).</P><P>&nbsp;</P><P>The code for this post can be found here:</P><P><A
title="GitHub"
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor_jwt_validator_dotnet_core"
target="_blank"
rel="noopener">https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor_jwt_validator_dotnet_core</A>&nbsp;</P><P>&nbsp;</P><P>In
the real world i don't actually recommend you to do all these steps manually.
There are libraries that will handle most of these things for you like MSAL on
the client side of Identity.Web on the backend side. It is however always useful
to dig a little deeper to gain an understanding of how it works behind the
scenes.</P><P>&nbsp;</P><P>There are third party libraries available for token
validation that support a large range of algorithms and formats, but to keep it
simple I'm just using components native to the .NET
toolbox.</P><P>&nbsp;</P><P><STRONG>Step 1 - Is it a JWT that has been pasted
in?</STRONG></P><P>The web app will allow pretty much any text to be passed in
so we need to validate that it is actually a
token.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
//Check if readable token (string is in a JWT format) var readableToken =
handler.CanReadToken(Jwt.Base64Token); if (readableToken != true) { FormatStatus
= "The token doesn't seem to be in a proper JWT format."; return; } if
(readableToken == true) { FormatStatus = "The token seems to be in a proper JWT
format.";
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 2
- Do we have metadata?</STRONG></P><P>To be able to leverage concepts like
public/private key cryptography we need to exchange the keys used, and we also
need to agree on a couple of other attributes the tokens contain. It is entirely
possible to exchange this in a manual way whether that is sending files per
email or reading them loud over the phone for that matter, but the recommended
approach is to have the identity provider expose a metadata endpoint. Loading
things in a more manual way also requires more code, so we've kept it simple
here and only provide the option for using an endpoint. (If you don't have one
the code will not break, but revert to just parsing the
token.)</P><P>&nbsp;</P><P>If you followed my previous post you should be able
to provide your own endpoint even if that's just pointing to a different port on
<A href="https://localhost" target="_blank"
rel="noopener">https://localhost</A>.</P><P><A title="Generating Azure AD
&quot;Look-Alike&quot; Tokens"
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/generating-azure-ad-quot-look-alike-quot-tokens/ba-p/1163098"
target="_blank"
rel="noopener">https://techcommunity.microsoft.com/t5/azure-developer-community-blog/generating-azure-ad-quot-look-alike-quot-tokens/ba-p/1163098</A>&nbsp;</P><P><A
title="GitHub"
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor-jwt_generator-dotnet-core"
target="_blank"
rel="noopener">https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/blazor-jwt_generator-dotnet-core</A>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">//Load Metadata if available
IConfigurationManager&lt;OpenIdConnectConfiguration&gt; configurationManager;
OpenIdConnectConfiguration openIdConfig = null; bool metadataAvailable; try {
configurationManager = new
ConfigurationManager&lt;OpenIdConnectConfiguration&gt;(Jwt.MetadataAddress, new
OpenIdConnectConfigurationRetriever()); openIdConfig =
configurationManager.GetConfigurationAsync(CancellationToken.None).Result;
metadataAvailable = true; MetadataStatus = $"Successfully loaded metadata."; }
catch (Exception e) { MetadataStatus = $"Failed to load metadata (skipping
signature validation): {e.Message}"; metadataAvailable = false;
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 3
- Set up token validation parameters</STRONG></P><P>As said already we handle
the absence of metadata gracefully. We can still check things like the lifetime
and the audience, but we are not able to verify the signature. And that is the
critical part - what separates my fake tokens with actual Azure AD tokens is the
keys they are signed with. Which is why you should never disable validation of
the signing key like we do here :)</img></P><P>&nbsp;</P><P>While there is some
logic in locating the keys and retrieving them we see that this is one of the
things the libraries handle for us in a developer friendly
way.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">TokenValidationParameters validationParameters = null; //If we
cannot load metadata we fall back if (!metadataAvailable) { validationParameters
= new TokenValidationParameters { ValidIssuer = Jwt.Issuer, ValidAudience =
Jwt.Audience, ValidateLifetime = true, ValidateAudience = true, ValidateIssuer =
true, //Needed to force disabling signature validation SignatureValidator =
delegate (string token, TokenValidationParameters parameters) { var jwt = new
JwtSecurityToken(token); return jwt; }, ValidateIssuerSigningKey = false, }; }
//If we succcessfully loaded metadata we do signature validation as well if
(metadataAvailable) { validationParameters = new TokenValidationParameters {
ValidIssuer = openIdConfig.Issuer, ValidAudience = Jwt.Audience,
ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidateAudience =
true, ValidateIssuer = true, IssuerSigningKeys = openIdConfig.SigningKeys };
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 4
- Validate the token</STRONG></P><P>The actual validation is shorter than the
setup. We read the JWT. (Notice how Microsoft also use "token" twice in the
naming - spelling out the acronym it would be
ReadJsonWebTokenToken.)</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><LI-CODE
lang="csharp">token = handler.ReadJwtToken(Jwt.Base64Token); try { var identity
= handler.ValidateToken(Jwt.Base64Token, validationParameters, out SecurityToken
validatedToken); if (metadataAvailable) { output += "Token is valid according to
metadata!"; } else { output += "Token is valid according to a self-evaluation!";
} jwtSignature = token.RawSignature; } catch (Exception e) { //Print errors
}</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Step 5
- Pretty print the contents and the result</STRONG></P><P>The last step is to
print out the result of the validation test, and the contents of the token split
into header/payload/signature with some color coding. I did not find
satisfactory ways to do this with the built-in mechanisms as these didn't really
play nice with Blazor so I did a more hackish and manual approach for this. Not
including the code here, but it is of course part of the sample on
GitHub.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="ValidationResult.png" style="width:
532px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/251094i9680A5F7CA039B23/image-size/large?v=v2&amp;px=999"
role="button" title="ValidationResult.png" alt="ValidationResult.png"
/></span></P><P>&nbsp;</P><P>In an actual app or api you would of course not
care so much about these things anyway.</P><P>&nbsp;</P><P>While I also prefer
using "proper" libraries for validation I use tools like this all the time when
working with things like custom policies in Azure AD B2C.</P><P>&nbsp;</P><P>I'm
sure you are able to come up with more elaborate versions that what I did here,
but I'm hoping it provided some of the basic understand for making sure you
don't end up in the category of developers who skip token validation. (There are
unfortunately too many that don't do this right and produce code with horrible
vulnerabilities included.)</P></description>
<pubDate>Mon, 01 Feb 2021 20:03:44 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/creating-a-jwt-validation-web-app/ba-p/2109450</guid>
<dc:creator>Andreas Helland</dc:creator>
<dc:date>2021-02-01T20:03:44Z</dc:date>
...
</item>
<item>
<title>Developers Unite to Hack for Social Justice</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-unite-to-hack-for-social-justice/ba-p/2077118</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="NinaSui_1-1611882553594.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/250480iD45625E7A7620819/image-size/large?v=v2&amp;px=999"
role="button" title="NinaSui_1-1611882553594.png"
alt="NinaSui_1-1611882553594.png" /></span></P> <P>&nbsp;</P> <P>Over the course
of 8 weeks, developers gathered virtually to participate in the <A
href="https://socialjusticehack.devpost.com/" target="_blank"
rel="noopener">Microsoft Azure Hack for Social Justice</A> event. The hackathon
challenge statement was straightforward: design and build an application
prototype that uses Azure to address a social justice issue. Participants were
given access to Microsoft technical mentors, dedicated Azure environment, and
self-paced learning resources.&nbsp;Although technology alone cannot solve
complex societal issues, our hope is that participants will develop solutions
that can help empower communities and drive change.</P> <P>&nbsp;</P> <P>Over
500 participants registered for the hack, 300+ were from the U.S., and 6 winning
projects were selected. Check out these creations:</P> <P>&nbsp;</P> <P><FONT
size="5"><U><STRONG>1st Place :&nbsp;</STRONG></U><A
href="https://devpost.com/software/refugee-restrooms-agmx8p" target="_blank"
rel="noopener">Equitable Restroom Access for Gender
Non-Conforming&nbsp;</A></FONT></P> <P>Created by: <STRONG>Mahesh Babu</STRONG>
(<LI-USER uid="395609"></LI-USER>)&nbsp;</P> <P>Provides safe restroom access
for transgender, gender non-conforming, disabled individuals, and parents
traveling with kids to find restrooms per their needs.</P> <P><EM>Azure Services
Used: Azure Functions, Azure SendGrid</EM></P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://vimeo.com/479646923" align="center" size="custom" width="663"
height="663" uploading="false"
thumbnail="https://i.vimeocdn.com/video/995544352_1280.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><U><STRONG>2nd
Place:&nbsp;</STRONG></U><A href="https://devpost.com/software/lll-8nthku"
target="_blank" rel="noopener">GetPro</A></FONT></P> <P>Created by:
<STRONG>Amina Fong</STRONG> (<LI-USER uid="899575"></LI-USER>), <STRONG>William
Broniec</STRONG> (<LI-USER uid="362934"></LI-USER>), <STRONG>Zechen Lu</STRONG>
(<LI-USER uid="900127"></LI-USER>)&nbsp;</P> <P>Web app that centralizes
information and professional resources for underrepresented populations to help
even the playing field in educational and career opportunities.</P> <P><EM>Azure
Services Used: Azure App Services, Azure SQL Database</EM></P> <P>&nbsp;</P>
<P><LI-VIDEO vid="https://youtu.be/CxzBDm-gHyU" align="center" size="custom"
width="507" height="507" uploading="false"
thumbnail="https://i.ytimg.com/vi/CxzBDm-gHyU/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT size="5"><U><STRONG>3rd
Place:</STRONG></U><U><STRONG>&nbsp;</STRONG></U><A
href="https://devpost.com/software/legal-helper-bot" target="_blank"
rel="noopener">Legal Helper Bot</A></FONT></P> <P>Created by: <STRONG>Murtada
Ahmed</STRONG></P> <P>Not knowing the law and ones rights can expose already
vulnerable groups to more discrimination and abuse. Legal Helper Bot was created
to change that.</P> <P><EM>Azure Services Used: Azure Bot Services, Azure
Storage</EM></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/RnT0eOvsNCU"
align="center" size="custom" width="492" height="492" uploading="false"
thumbnail="https://i.ytimg.com/vi/RnT0eOvsNCU/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><FONT
size="5"><U><STRONG>Honorable Mentions</STRONG></U></FONT></P> <P><FONT
size="5"><A
href="https://devpost.com/software/racial-bias-and-score-prediction-of-compas-score"
target="_blank" rel="noopener">Racial Bias and Score Prediction of COMPAS
Score</A></FONT></P> <P>Created by: <STRONG>Yuki Ao</STRONG> (<LI-USER
uid="899871"></LI-USER>)&nbsp;</P> <P>Inform people of the racial bias in the
U.S. Justice system and give the offenders a chance to know their score level
beforehand.</P> <P>&nbsp;</P> <P><FONT size="5"><A
href="https://devpost.com/software/tutorfirst" target="_blank"
rel="noopener">TutorFirst</A></FONT></P> <P>Created by: <STRONG>Farhan
Mashud</STRONG> (<LI-USER uid="899519"></LI-USER>), <STRONG>Isfar
Oshir</STRONG>&nbsp;(<LI-USER uid="899521"></LI-USER>), <STRONG>Mohammed
Uddin</STRONG> (<LI-USER uid="899520"></LI-USER>)&nbsp;</P> <P>App for low
income students to receive free, high quality tutoring from tutor
volunteers.</P> <P>&nbsp;</P> <P><FONT size="5"><A
href="https://devpost.com/software/numbers-rvyjc1" target="_blank"
rel="noopener">Feminist Action Board</A></FONT></P> <P>Created by: <STRONG>Aroma
Rodrigues</STRONG> (<LI-USER uid="899816"></LI-USER>)&nbsp;</P> <P>Subscribes to
a news API to provide real time news on gender violence and tracks
organizations, petitions, and initiatives</P> <P>&nbsp;</P> <P>On behalf of the
Microsoft U.S. Azure team, I'd like to sincerely thank all of the participants,
and congratulate the winners on a job well done. Also, thank you to the mentors
and judges who volunteered their time to give back to the community.&nbsp;</P>
<P>&nbsp;</P> <P>Next up: check out these new hackathons that are open for
registration</P> <UL> <LI><A href="https://aka.ms/accessibilityhacktc"
target="_blank" rel="noopener">Microsoft Azure U.S. Hack for Accessibility (Jan
28 - Mar 15, 2021)</A></LI> <LI><A href="https://aka.ms/azureaihacktc"
target="_blank" rel="noopener">Microsoft Azure AI Hackathon (Jan 26 - April 5,
2021)</A></LI> </UL></description>
<pubDate>Fri, 29 Jan 2021 01:20:19 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-unite-to-hack-for-social-justice/ba-p/2077118</guid>
<dc:creator>NinaSui</dc:creator>
<dc:date>2021-01-29T01:20:19Z</dc:date>
...
</item>
<item>
<title>Automate Application Lifecycle Management with GitHub Actions for Power
Platform Webinar</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/automate-application-lifecycle-management-with-github-actions/ba-p/2083829</link>
<description><DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG style="color:
inherit; font-family: inherit; font-size: 18px;">Overview</STRONG><SPAN
style="color: inherit; font-family: inherit; font-size:
18px;">&nbsp;</SPAN></DIV> <DIV class="lia-message-body-wrapper
lia-component-message-view-widget-body"> <DIV id="bodyDisplay"
class="lia-message-body"> <DIV class="lia-message-body-content"> <P><SPAN>In
2021,&nbsp;each month we will be releasing a monthly blog covering
the&nbsp;webinar&nbsp;of the month for the&nbsp;<A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener noreferrer">Low Code Application Development on
Azure</A>&nbsp;solution.</SPAN></P> <P>&nbsp;</P> <P><SPAN>Low-code app dev on
Azure is a new&nbsp;solution to&nbsp;demonstrate&nbsp;the&nbsp;robust
development capabilities of&nbsp;integrating&nbsp;low-code&nbsp;Microsoft
Power&nbsp;Apps&nbsp;and the Azure products you may be familiar
with.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>This
month’s&nbsp;webinar&nbsp;is ‘Develop&nbsp;Application Lifecycle Management
(ALM) processes with GitHub Actions and Power Apps.’</SPAN></P> <P>&nbsp;</P>
<P><SPAN>In this blog I will highlight what LCAD on Azure is, the 3 most
prevalent products in the&nbsp;webinar&nbsp;and use&nbsp;cases
and&nbsp;provide&nbsp;supporting documentation for you to learn more about the
webinar's content.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId--1634335751"><STRONG>What is Low-code application
development&nbsp;(LCAD)&nbsp;on Azure?</STRONG>&nbsp;</H4> <P><SPAN><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener noreferrer">Low Code Application Development on
Azure</A>&nbsp;was created to help developers build business applications
faster&nbsp;with less code,&nbsp;leveraging&nbsp;the Power Platform, and more
specifically Power Apps, yet helping them scale and extend their Power
Apps&nbsp;with Azure services.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<span class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="riduncan_0-1614960637782.png" style="width: 1398px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261205i1D97A7FBC728FFAB/image-dimensions/1398x786?v=v2"
width="1398" height="786" role="button" title="riduncan_0-1614960637782.png"
alt="riduncan_0-1614960637782.png" /></span> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P><SPAN>For example,&nbsp;a pro developer&nbsp;who&nbsp;works for
a manufacturing company would need to build a line-of-business (LOB)
application&nbsp;to help warehouse employees’
track&nbsp;incoming&nbsp;inventory.</SPAN></P> <P>&nbsp;</P> <P><SPAN>That
application would take months to build, test, and deploy, however with Power
Apps’ it can take hours to build, saving time and
resources.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>&nbsp;However,
say the warehouse employees want the application to place procurement
orders&nbsp;for&nbsp;additional&nbsp;inventory&nbsp;automatically
when&nbsp;current&nbsp;inventory hits a determined&nbsp;low.&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>In the past that would require another heavy lift by the
development team to&nbsp;rework&nbsp;their&nbsp;previous&nbsp;application
iteration.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>Due to the integration of
Power Apps and Azure a professional developer can build an API in Visual
Studio&nbsp;(VS)&nbsp;Code, publish it to their Azure portal, and export
the&nbsp;API to Power Apps integrating it into their application as a custom
connector.</SPAN></P> <P>&nbsp;</P> <P><SPAN>Afterwards, that same API is
re-usable indefinitely in the Power Apps’&nbsp;studio, for future use with other
applications, saving the company and developers more time and
resources.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>This is
just one scenario that highlights the capabilities of the LCAD on Azure
solution.&nbsp;To learn more about the solution itself there is a link at the
bottom of this blog in the supporting documentation section.</SPAN></P>
<P>&nbsp;</P> <P><SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">To
learn&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">more,</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">&nbsp;visit
the&nbsp;</SPAN></SPAN><A class="Hyperlink SCXW12267399 BCX8"
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW12267399 BCX8" data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8" data-ccp-charstyle="Hyperlink">LCAD</SPAN></SPAN><SPAN class="TextRun
Underlined SCXW12267399 BCX8" data-contrast="none"><SPAN class="NormalTextRun
SCXW12267399 BCX8" data-ccp-charstyle="Hyperlink">&nbsp;on Azure
page</SPAN></SPAN></A><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">,&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">and to walk
through the</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">a</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">forementioned&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">scenario</SPAN></SPAN><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399 BCX8">&nbsp;try
the&nbsp;</SPAN></SPAN><A class="Hyperlink SCXW12267399 BCX8"
href="https://dynamicstestdrive-uat.azurewebsites.net/en-us/guidedtour/power-platform/azure-low-code-app-development-with-power-apps/1/1"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW12267399 BCX8" data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8" data-ccp-charstyle="Hyperlink">LCAD on Azure guided
tour</SPAN></SPAN></A><SPAN class="TextRun SCXW12267399 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW12267399
BCX8">.</SPAN></SPAN><SPAN class="EOP SCXW12267399 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></SPAN></P>
<P>&nbsp;</P> <span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="riduncan_1-1614960637783.jpeg" style="width:
1397px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261206iD8C87BEAFD01FDCE/image-dimensions/1397x787?v=v2"
width="1397" height="787" role="button" title="riduncan_1-1614960637783.jpeg"
alt="riduncan_1-1614960637783.jpeg" /></span> <P>&nbsp;</P> <P><SPAN>This
month’s&nbsp;webinar&nbsp;is focused on the capability to automate application
lifecycle management, like the above scenario, with GitHub Actions
to&nbsp;further&nbsp;expedite&nbsp;and streamline the development process for
developers.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId-853177082"><STRONG>Webinar Content</STRONG>&nbsp;</H4>
<P><SPAN>The&nbsp;webinar&nbsp;explains&nbsp;<STRONG><U>‘Fusion
Development’</U></STRONG>&nbsp;a process that&nbsp;leverages&nbsp;the citizen
developer to build low-code applications&nbsp;themselves, further reducing
strain on development teams, but professional
developers&nbsp;meeting&nbsp;citizen&nbsp;developer's&nbsp;half-way by extending
these applications with custom code.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>The&nbsp;webinar&nbsp;includes&nbsp;<STRONG><U>2
demos</U></STRONG>, one on the&nbsp;<STRONG><U>integration of API management and
Power Apps</U></STRONG>,&nbsp;how to&nbsp;<STRONG><U>create a CI/CD pipeline
using GitHub Actions</U></STRONG>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>The integration of API management and Power
Apps&nbsp;will&nbsp;cover&nbsp;the&nbsp;no cliff extensibility&nbsp;capabilities
of Power Apps and Azure together,&nbsp;how to export APIs to Power Apps, and how
to&nbsp;connect API management with&nbsp;Power Apps via Microsoft Teams for
free.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>We
introduced&nbsp;Azure API Management connectors&nbsp;to&nbsp;quickly publish
Azure API Management backed APIs to the Power Platform for easy discovery and
consumption, dramatically reducing the time it takes to create apps connecting
to Azure services.</SPAN></P> <P>&nbsp;</P> <P><SPAN>This means that enterprises
can now truly&nbsp;benefit&nbsp;from existing assets hosted on Azure, by making
these available to Citizen developers with just a few clicks in the Azure
portal.</SPAN></P> <P>&nbsp;</P>
<P><SPAN>Thereby&nbsp;eliminating&nbsp;the&nbsp;additional&nbsp;steps to go
create custom connectors in the Power Apps or Power Automate maker
experiences.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=06CRN18kH1k&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=7"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/06CRN18kH1k/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P><SPAN>The&nbsp;</SPAN><A
href="https://help.github.com/articles/about-github-actions" target="_blank"
rel="noopener noreferrer"><SPAN>GitHub Actions</SPAN></A><SPAN>&nbsp;demo will
cover&nbsp;developer's&nbsp;ability to build&nbsp;automated software development
lifecycle workflows.</SPAN></P> <P>&nbsp;</P> <P><SPAN>With GitHub Actions for
Microsoft Power Platform,&nbsp;developers&nbsp;can create workflows
in&nbsp;their&nbsp;repository to build, test, package, release, and deploy apps;
perform automation; and manage bots and other components built on Microsoft
Power Platform.</SPAN></P> <P>&nbsp;</P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=g3qfBeat-PM&amp;list=PL8IYfXypsj2Dp-jDh4TpkxnYlGmIccKfM&amp;index=8"
align="center" size="medium" width="400" height="225" uploading="false"
thumbnail="https://i.ytimg.com/vi/g3qfBeat-PM/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId-1533235452"><STRONG>Conclusion</STRONG>&nbsp;</H4>
<P><SPAN>The&nbsp;webinar&nbsp;is&nbsp;currently available&nbsp;</SPAN><A
href="https://info.microsoft.com/ww-ondemand-develop-test-and-deliver-applications-with-github-actions-for-power-platform.html?lcid=en-us"
target="_blank" rel="noopener
noreferrer"><SPAN>on-demand</SPAN></A><SPAN>,&nbsp;and&nbsp;<SPAN class="TextRun
SCXW253825262 BCX8" data-contrast="auto"><SPAN class="NormalTextRun
SCXW253825262 BCX8">and&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW253825262
BCX8" data-contrast="auto"><SPAN class="NormalTextRun SCXW253825262
BCX8">complete the&nbsp;</SPAN></SPAN><A class="Hyperlink SCXW253825262 BCX8"
href="https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbRzDZlq55wCpLjWQ_IU7xv-VURVRFQUdPSTJVTjBOR0RWM0U1VFFSM1pYUS4u"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW253825262 BCX8" data-contrast="none"><SPAN class="NormalTextRun
SCXW253825262 BCX8" data-ccp-charstyle="Hyperlink">survey</SPAN></SPAN></A><SPAN
class="TextRun SCXW253825262 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW253825262 BCX8">&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW253825262 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW253825262 BCX8">so,</SPAN></SPAN><SPAN class="TextRun
SCXW253825262 BCX8" data-contrast="auto"><SPAN class="NormalTextRun
SCXW253825262 BCX8">&nbsp;we can improve these blogs and webinars in the
future.</SPAN></SPAN>&nbsp;The February webinar will cover the intersection of
serverless applications and low-code.&nbsp;&nbsp;</SPAN></P> <P>&nbsp;</P> <H4
id="toc-hId--274219011"><STRONG>Resources</STRONG></H4> <P>&nbsp;</P>
<P><STRONG>Power Apps x Azure websites&nbsp;</STRONG></P> <UL> <LI><A
href="https://azure.microsoft.com/en-us/solutions/low-code-application-development/"
target="_blank" rel="noopener noreferrer"><SPAN>LCAD on Azure
website</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://powerapps.microsoft.com/en-us/power-apps-and-azure/"
target="_blank" rel="noopener noreferrer"><SPAN>Azure plus Power Apps for pro
developers I Microsoft Power Apps</SPAN></A><SPAN>&nbsp;</SPAN></LI> </UL>
<P><STRONG>Power Platform x Azure API Management Integration&nbsp;</STRONG></P>
<UL> <LI><A
href="https://powerapps.microsoft.com/en-us/blog/azure-api-management-connector-on-the-power-platform/"
target="_blank" rel="noopener noreferrer"><SPAN>Public Preview Blog
Post</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://docs.microsoft.com/en-us/azure/api-management/export-api-power-platform"
target="_blank" rel="noopener noreferrer"><SPAN>Step by Step
Instruction</SPAN></A><SPAN>&nbsp;</SPAN></LI> </UL> <P><STRONG>Power Platform x
GitHub Actions Automated SDLC workflows&nbsp;</STRONG></P> <UL> <LI><A
href="https://powerapps.microsoft.com/en-us/blog/github-actions-for-the-power-platform-now-available-in-preview/"
target="_blank" rel="noopener noreferrer"><SPAN>Public Preview Blog
Post</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://docs.microsoft.com/en-us/power-platform/alm/devops-github-actions"
target="_blank" rel="noopener noreferrer"><SPAN>GitHub Actions for Power
Platform overview</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://docs.microsoft.com/en-us/power-platform/alm/devops-github-available-actions"
target="_blank" rel="noopener noreferrer"><SPAN>Capabilities
Documentation</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://www.youtube.com/watch?v=Bk4KpE_6YtY&amp;feature=youtu.be"
target="_blank" rel="noopener nofollow noreferrer"><SPAN>Source control and
automated deployment -
Demo</SPAN></A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://github.com/microsoft/powerplatform-actions-lab" target="_blank"
rel="noopener noreferrer"><SPAN>Hands on lab of source control and automated
deployment demo</SPAN></A><SPAN>&nbsp;</SPAN></LI> <LI><A
href="https://github.com/microsoft/powerplatform-actions" target="_blank"
rel="noopener noreferrer"><SPAN>Power Platform x GitHub Actions
repo</SPAN></A><SPAN>&nbsp;</SPAN></LI> </UL> <P>&nbsp;</P> </DIV> </DIV>
</DIV></description>
<pubDate>Fri, 05 Mar 2021 17:28:02 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/automate-application-lifecycle-management-with-github-actions/ba-p/2083829</guid>
<dc:creator>riduncan</dc:creator>
<dc:date>2021-03-05T17:28:02Z</dc:date>
...
</item>
<item>
<title>[Mitigated] DevTest Labs Outage: Customers in certain regions might
experience degraded performance</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-customers-in-certain-regions-might/ba-p/2064696</link>
<description><DIV> <DIV><SPAN style="font-family: inherit;">Update at 12:30 AM
UTC on 16 Jan 2021 - Issue has been mitigated and we do not expect customers to
face any issues.&nbsp;We will update the blog post with the RCA
soon.&nbsp;</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <DIV><SPAN style="font-family:
inherit;">Update at 19:30 UTC - We see decreasing number of failures but we are
still keeping an eye out for any other potential issues.&nbsp;</SPAN></DIV>
</DIV> <DIV><SPAN style="font-family:
inherit;">-------------------------------------------------------------------------------------------------</SPAN></DIV>
<DIV>&nbsp;</DIV> <DIV><SPAN style="font-family: inherit;"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="devtestlabsintro_960.jpg" style="width: 424px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/250206i4A727BF2A649AF64/image-dimensions/424x258?v=v2"
width="424" height="258" role="button" title="devtestlabsintro_960.jpg"
alt="devtestlabsintro_960.jpg" /></span></SPAN></DIV> <DIV>&nbsp;</DIV> <SPAN
style="font-family: inherit;">We would like to inform you that,
starting&nbsp;</SPAN><SPAN style="font-family: inherit;">07:59 UTC on 15 Jan
2021,</SPAN><SPAN style="font-family: inherit;">&nbsp;</SPAN><FONT
face="inherit">customers in the below mentioned regions might
</FONT>experience<FONT face="inherit">&nbsp;degraded performance while
performing any major action on DevTest Labs. We are currently investigating the
root cause and our team continues to work diligently on a fix. </FONT></DIV>
<DIV>&nbsp;</DIV> <DIV> <UL> <LI>Australia Southeast</LI> <LI>Canada
Central</LI> <LI>Central India</LI> <LI>East Asia</LI> <LI>East US</LI>
<LI>Japan East</LI> <LI>Korea Central</LI> <LI>North Europe</LI> <LI>UK
West</LI> <LI>West India</LI> </UL> <P>&nbsp;</P> <DIV><FONT face="inherit">We
will update this post to share regular updates and will also share a root cause
analysis once the fix is rolled out.&nbsp;</FONT>We apologize for the
inconvenience and thank you for your patience.&nbsp;</DIV> <P>&nbsp;</P> <P>-
DevTest Labs Team</P> </DIV></description>
<pubDate>Thu, 28 Jan 2021 09:23:09 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-customers-in-certain-regions-might/ba-p/2064696</guid>
<dc:creator>Sagar_Lankala</dc:creator>
<dc:date>2021-01-28T09:23:09Z</dc:date>
...
</item>
<item>
<title>[Customer Story] SharePoint Online Team leverages DevTest Labs to create
Testing Environments</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781</link>
<description><P>There are several teams within Microsoft which use <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-overview"
target="_blank" rel="noopener">Azure DevTest Labs</A> (DTL). <A
href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration"
target="_blank" rel="noopener">SharePoint Online</A> (SPO) team at Microsoft has
created a solution, built on DTL, to solve the problem of making SPO testing
environments readily available to SharePoint engineers – securely, at scale and
with high availability – leveraging the strengths of DevTest Labs and Azure.</P>
<P>&nbsp;</P> <P>This blog post is the first in a series of posts that
highlights key parts of this solution. The series enables anyone to build,
configure and run a similar system on DTL. Each post will cover one core aspect
of the SharePoint Online solution, with a brief description of the scenarios
involved, and the strategies applied to solve them. Each comes equipped with
architecture diagrams, walk-throughs and code samples, presented in a generic
and reusable way. It is hoped that customers in the Azure community, desiring to
solve similar problems for their users, can benefit from the content herein to
create their own DTL solutions.</P> <P>&nbsp;</P> <H2>About SharePoint
Online</H2> <P>&nbsp;</P> <P>For background, SharePoint Online is Microsoft’s
document storage service for <A
href="https://www.microsoft.com/en-us/microsoft-365" target="_blank"
rel="noopener">Microsoft365</A>. It is a massive enterprise business. In
addition to providing enterprise-class document management, it has team
collaboration, portal sites and content management. It forms the document
storage backbone for <A
href="https://www.microsoft.com/en-us/microsoft-365/exchange/email"
target="_blank" rel="noopener">Exchange Online</A>, <A
href="https://teams.microsoft.com/edustart" target="_blank"
rel="noopener">Teams</A> and <A
href="https://www.microsoft.com/en-us/download/office.aspx" target="_blank"
rel="noopener">Office applications</A> such as Word and Excel. As one example,
when you save a document in Teams, it is stored in SPO under the hood.&nbsp;
Fortune 500 companies, schools, governments and non-profits critically depend on
SharePoint Online for their business, storing over 480 exabytes of their data in
it.</P> <P><EM>If you would like to learn more about SharePoint Online and its
potential application to your business, start <A
href="https://www.microsoft.com/en-us/microsoft-365/buy/compare-all-microsoft-365-products"
target="_blank" rel="noopener">here</A>. There are Microsoft365 subscriptions
tailored for home, business, and institutional use.</EM></P> <P>&nbsp;</P>
<H2>SharePoint Online Scenario</H2> <P>&nbsp;</P> <P>With over 1000 engineers
working on an ever-evolving 140 MLOC codebase in SharePoint Online,
<STRONG>integration testing</STRONG> is a critical part of the engineering
workflow. At its core, SharePoint is a three-tier web application, featuring a
web tier, a business logic tier and a data layer, each working in conjunction as
a single service in data centers across the globe. Engineers working on it
require safe, isolated simulation environments that function like scaled-down
three-tier data center deployments so that they can deeply test their code
before it goes worldwide.</P> <P>The SharePoint Online team has shrunk the core
SPO components and services so that they all fit on a single, interactive
virtual machine (VM) that simulates the full data center, but is stripped down
to its essence. It is therefore much easier to deploy. These single-VM
environments are well-suited to testing most SPO scenarios – of course core
document storage and team collaboration, but notably scenarios involving
interaction with Office or Teams. Using these VMs, code changes can be deployed,
poked and prodded, and debugged as it interacts with these components and
services – all well before the code is ultimately deployed for enterprise
customers in production data centers.</P> <P>&nbsp;</P> <H2>Use of DevTest
Labs</H2> <P>&nbsp;</P> <P>DevTest Labs provides “labs” of machines, intended to
host pre-configured testing environments at scale. The SPO team has built a
solution in DevTest Labs to host these single-VM SPO environments, giving
engineers a private, isolated, safe, simulated data center in which to test
their code.</P> <P>Breaking it down step-by-step, the scenario for SharePoint
Online engineers is as follows:</P> <OL> <LI>An engineer wishes to test their
code. They fetch a virtual machine (VM) from the DevTest Lab.</LI> <LI>The VM
hosts a pre-configured single-VM SPO environment with a stable build.</LI>
<LI>They log in, interact with the environment, and patch a new code change into
place to do testing.</LI> <LI>When they are finished, they throw away their VM –
they can always fetch a fresh one for their next iteration.</LI> </OL> <P>The
complexity of building these single-VM SPO environments, with all services and
components wired up correctly, is hidden from the lab user. The work is done
before the VM is assigned to the engineer, saving them the time and
effort.&nbsp; Environments are ready to use as they are. Engineers have the
option to simply use them as-is, or optionally patch their private changes and
onto the VM to see how it behaves.&nbsp; These single-VM environments are the
heart of their inner loop debugging and integration testing.</P> <P>Today, about
500 engineers use the SPO integration lab on a monthly basis, with plans to grow
this to 750 or more. Typically about 2,500 VMs are allocated at any one point in
time, running in three different Azure regions around the world. Azure allows
the solution to easily scale to meet growing demand.</P> <P>&nbsp;</P> <H3>Why
DevTest Labs?</H3> <P>&nbsp;</P> <P>Certainly a solution of this nature can be
created without DevTest Labs, using Azure VMs directly. However, DevTest Labs
provides out-of-box features that save time and money in implementation and
maintenance. These include:</P> <UL> <LI>Standard service grouping and
administration</LI> <LI>Flexible and extensible <A
href="https://azure.microsoft.com/en-us/services/#networking" target="_blank"
rel="noopener">networking</A> and user connectivity</LI> <LI>Ability for lab
users to claim pre-created VMs without going through the full creation
process</LI> <LI><A
href="https://azure.microsoft.com/en-us/documentation/articles/devtest-lab-set-lab-policy/"
target="_blank" rel="noopener">Policies and thresholds</A> to manage costs by
shutting unused machines down</LI> <LI><A
href="https://azure.microsoft.com/en-us/documentation/articles/devtest-lab-add-vm-with-artifacts/"
target="_blank" rel="noopener">DTL Artifacts</A> to reduce the time required to
set up and configure virtual machines once created</LI> </UL> <P>The full
feature set of Azure is also available to extend DevTest Labs where needed, but
leveraging the native capabilities of DevTest Labs reduces the cost to build,
maintain and extend the solution. It also sets the solution up for future
improvements planned by the Azure team at Microsoft. In short, <STRONG>DevTest
Labs is a quite natural fit for this use case</STRONG>, rather than reinventing
the wheel.</P> <P><EM>If you haven’t tried DevTest Labs yet, <A
href="https://go.microsoft.com/fwlink/?LinkId=627034&amp;clcid=0x409"
target="_blank" rel="noopener">click here</A> to create your first lab. DevTest
Labs is a <A
href="https://azure.microsoft.com/en-us/pricing/details/devtest-lab/"
target="_blank" rel="noopener">free service</A>!</EM></P> <H2>&nbsp;</H2>
<H2>Solution Architecture</H2> <P>&nbsp;</P> <P>The solution builds on DevTest
Labs as its basis. It is an event-driven architecture, using Azure EventGrid and
an Azure Function app. It uses Shared Image Gallery to host VM images and
employs a Point-to-Site VPN for secure access to the network hosting the VMs. It
has an easy-to-use interface for checkin/checkout that is hosted outside the
Azure portal.&nbsp; It extends DevTest Labs policy and allows users to manage
when machines are shut down, and even postpone shutting machines down, above the
times assigned by Azure DevTest Labs policy.&nbsp;</P> <P>Below is a diagram
covering the architecture. Starting from the left, we have an Image Service
which is responsible for creating Azure Compute images with SPO
pre-configured.&nbsp; Image Service pulls the latest build available, triggers
the deployment, waits for success, and publishes the result to Azure Shared
Image Gallery for general consumption by DevTest Labs. It then fires an event
that, by way of Event Grid, triggers an Azure Function App.</P> <DIV
id="lia-teaserTinyMceEditorSagar_Lankala_0" class="mceNonEditable
lia-copypaste-placeholder">&nbsp;</DIV> <DIV id="tinyMceEditorSagar_Lankala_1"
class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Picture1.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/245507iC4443202A6A04FB6/image-size/large?v=v2&amp;px=999"
role="button" title="Picture1.png" alt="Picture1.png" /></span></P>
<P>&nbsp;</P> <P>The Function App contains the business logic for the SPO
solution, which extends the core functionality DevTest Labs natively provides.
The Function App responds to the event by triggering VM creation in DevTest
Labs, in accordance with desired VM pool targets. A VPN Gateway is configured to
provide point-to-site VPN connectivity for end users, who use Azure VPN Client
to ensure the communication between the lab user and the VMs is authenticated
and secure.</P> <P>The solution created has potential application to a broad set
of scenarios. The designs and architecture described should be beneficial to
Azure customers wanting to build similar solutions on DevTest Labs, including
what code to build and what components to configure for their applications.</P>
<H2>&nbsp;</H2> <H2>Introducing This Blog Series</H2> <P>&nbsp;</P> <P>In
several upcoming blog posts, we’ll cover the following topics:&nbsp;</P> <UL>
<LI>Overview:&nbsp; How the SharePoint team leverages DevTest Labs <EM>(Current
Blog Post)</EM></LI> <LI>Enabling an Event-Driven Architecture with DevTest
Labs</LI> <LI>Leveraging Point-to-Site VPN with DevTest Labs</LI>
<LI>Maintaining a Pool of Claimable VMs</LI> <LI>Building a Simple User
Interface for DevTest Labs</LI> <LI>Enabling Shutdown notifications via
Teams</LI> </UL> <P>Each blog post borrows the concepts and architecture from
the SPO solution, boiled down and made generally accessible for re-use by the
Azure community. The content of this blog series forms a set of templates for
others to build the same types of solutions for their applications as the
SharePoint Online team did for their engineers.</P> <P>&nbsp;</P> <P><FONT
size="4"><STRONG>What's Next?</STRONG></FONT></P> <P>&nbsp;</P> <P>In
forthcoming blog posts, the rest of the topics will be covered, starting with
how to enable an event-driven architecture with DevTest Labs similar to the one
described above. Please stay tuned!</P> <P>&nbsp;</P> <P>If you run into any
problems with the content, or have any questions, please feel free to drop a
comment below this post and we will respond. Your feedback is always
welcome!</P> <P>&nbsp;</P> <P><STRONG>- Pete Harwood</STRONG>, Principal
Engineering Manager, OneDrive and SharePoint Engineering Fundamentals at
Microsoft</P></description>
<pubDate>Sat, 15 May 2021 01:15:00 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/customer-story-sharepoint-online-team-leverages-devtest-labs-to/ba-p/2050781</guid>
<dc:creator>Sagar_Lankala</dc:creator>
<dc:date>2021-05-15T01:15:00Z</dc:date>
...
</item>
<item>
<title>#DevDecember Week 5: It’s a (festive) wrap</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-5-it-s-a-festive-wrap/ba-p/1834830</link>
<description><P><SPAN><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Blog-images_week5.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/239463i9C0D2E6CB09CF544/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week5.png" alt="Blog-images_week5.png"
/></span></SPAN></P> <P><SPAN>The end of #DevDecember is near, and we’re ready
to kick off 2021. To help you mark the transition and start anew, we’ve created
digital New Year postcards in three designs that you can adapt and share with
fellow devs, friends, and family. Download the New Year cards</SPAN><FONT
color="#000000">&nbsp;on&nbsp;our&nbsp;</FONT><U><FONT
color="#FF0000"><SPAN><STRONG><A href="https://aka.ms/DevDecember20Home"
target="_self" rel="noopener noreferrer">#DevDecember
homepage.</A></STRONG></SPAN></FONT></U></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Slide_8_1.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/239464iDC97AE1A044CDC85/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_8_1.png" alt="Slide_8_1.png" /></span></P>
<P>&nbsp;</P> <P><STRONG>Before we&nbsp;hit&nbsp;send,&nbsp;let’s&nbsp;take one
more&nbsp;look&nbsp;in the rearview
mirror.&nbsp;</STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Each week, we asked for
your #DevDecember thoughts, starting with the ways you grew this year as
developer, and moving on to what communities had your back, what inspired you,
and what projects and challenges you were most looking forward to in
2021.</SPAN><SPAN>&nbsp;</SPAN><A href="https://twitter.com/hashtag/DevDecember"
target="_blank" rel="noopener"><SPAN>Check out what fellow devs
shared</SPAN></A><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN>Week 1</SPAN><SPAN>:&nbsp;</SPAN><SPAN>What helped us
grow</SPAN><SPAN>&nbsp;</SPAN><SPAN>professionally</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>Beginner's series to
JavaScript&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Taking your
first steps toward mastering a new programming language is exciting, but it can
also feel overwhelming. To help you get started with JavaScript, we've created
short and easy-to-consume videos that break down the key concepts you need to
know.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured1" target="_blank"
rel="noopener"><SPAN>Start watching the series</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P>
<P><SPAN> </SPAN><STRONG><SPAN>Agrotech</SPAN></STRONG><STRONG><SPAN>&nbsp;</SPAN></STRONG><STRONG><SPAN>IoT</SPAN></STRONG><STRONG><SPAN>&nbsp;workshop</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>Want to grow your
professional&nbsp;</SPAN><SPAN>IoT</SPAN><SPAN>&nbsp;skills? Your first stop may
be the garden. Get your hands dirty with a workshop on how to build an
internet-connected device to gather soil moisture data that will tell you (by
lighting up an LED) if a plant needs watering.</SPAN><SPAN>&nbsp;</SPAN></P>
<P><A href="https://aka.ms/DevEdCalDec20featured3" target="_blank"
rel="noopener"><SPAN>Start digging in</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P> <P><SPAN> </SPAN><STRONG><SPAN>Bringing
browser developer tools to Visual Studio
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>One of our favorite
releases in 2020 was the Microsoft Edge Tools for VS Code extension, designed to
simplify workflows. Connect to an existing browser instance, start a new one, or
use a “headless” browser.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured4" target="_blank"
rel="noopener"><SPAN>Explore the extension</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P> <P><STRONG><SPAN>Building a first "Power
Apps"</SPAN></STRONG><STRONG><SPAN> app</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>@JoeCamp13</SPAN><SPAN>&nbsp;built an app to track inventory entirely
with Power Apps. His explanation of how he did it, is illustrated with
screenshots so you can follow along.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured2" target="_blank"
rel="noopener"><SPAN>Start the walkthrough</SPAN><SPAN><BR
/></SPAN></A><SPAN>&nbsp;</SPAN></P> <P><SPAN>Week
2:</SPAN><SPAN>&nbsp;</SPAN><SPAN>How the community
came</SPAN><SPAN>&nbsp;</SPAN><SPAN>together</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>Live coding community</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>Learn from the best on Twitch! Watch&nbsp;devs&nbsp;code&nbsp;live,
and&nbsp;connect and ask questions in real time. Find out how joining
Microsoft’s virtual community can speed up learning new skills and
languages.</SPAN><SPAN>&nbsp;<BR /></SPAN><A
href="https://channel9.msdn.com/Events/Start-Dev-Change/Start-Dev-Change/Intro-to-Twitch-Join-the-Live-Coding-Community"
target="_blank" rel="noopener"><SPAN>Watch an intro video on Twitch and live
coding</SPAN></A><SPAN>&nbsp;(25 min)</SPAN><SPAN>&nbsp;<BR
/></SPAN><SPAN>&nbsp;</SPAN></P> <P><STRONG><SPAN>The ReadMe
Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Behind the open-source
code used by millions of people are the unseen efforts of countless
contributors, who put in long hours to build software, fix issues, and more.
Meet some of the people making contributions, including veterans who find the
teamwork required for open-source collaboration a natural
fit.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A href="https://github.com/readme"
target="_blank" rel="noopener"><SPAN>Read their inspiring
stories</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Remote
collaboration with Live Share in Visual Studio
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>With Live Share, you can
instantly share your project with fellow developers. No need to clone a repo or
set up the environment. It’s a one-stop, real-time collaboration tool for
pairing, code reviews, technical interviews, boot camps, and
more.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://www.youtube.com/watch?v=A2ceblXTBBc" target="_blank"
rel="noopener">Watch a short video on how to&nbsp;set&nbsp;up Live
Share</A><SPAN>&nbsp;(5 min)</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>From the open source cookbook</SPAN></STRONG></P>
<P><SPAN>Cooking up code is a bit like developing food recipes. The more people
who test your recipe, the more it's likely to guarantee that what lands on your
plate is what you intended.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://microsoft.github.io/DevCookbook/" target="_blank"
rel="noopener"><SPAN>Browse our crowdsourced cookbook with free code
recipes</SPAN></A><SPAN>&nbsp;</SPAN></P> <P><SPAN>&nbsp;<BR /></SPAN><SPAN>Week
3:</SPAN><SPAN>&nbsp;</SPAN><SPAN>What
inspired&nbsp;</SPAN><SPAN>us</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>IoT</SPAN></STRONG><STRONG><SPAN>&nbsp;and Azure help with
family chores&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>With
everyone at home, dishes pile up faster, garbage accumulates, and chores must be
done more frequently. To keep track in real time what&nbsp;chores&nbsp;need to
be completed and by when,
Scott&nbsp;</SPAN><SPAN>Hanselman</SPAN><SPAN>&nbsp;built
an&nbsp;</SPAN><SPAN>IoT</SPAN><SPAN>&nbsp;solution, using sensors, a
web-based&nbsp;</SPAN><SPAN>heatmap</SPAN><SPAN>, and
notifications.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-iot-and-azure-to-help-with-family-chores/ba-p/1809444"
target="_blank" rel="noopener"><SPAN>Check out how to build
Chores&nbsp;</SPAN><SPAN>IoT</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>The Developer Activity
Book&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Taking your mind off
what you’re working on is sometimes the best way to get inspiration. The
Developer Activity Book features family-friendly fun, including seven coloring
pages, a crossword puzzle, a word search, and a logic
puzzle.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-developer-activity-book-for-remotedevlife/ba-p/1432196"
target="_blank" rel="noopener"><SPAN>Get the Developer Activity
Book</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>2020
Imagine Cup World Championship</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>The Imagine Cup World Championship encourages students across the globe
to innovate using Microsoft Azure. Finalist teams created technological
solutions to tackle pressing global issues. Get inspired by their passion and
the incredible projects they created.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://www.youtube.com/watch?v=ssxYilfoomQ&amp;feature=youtu.be"
target="_blank" rel="noopener"><SPAN>Watch the recap</SPAN></A><SPAN>&nbsp;(3
minutes)</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Plastic
Origins Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Most of the
plastic that ends up in the oceans comes from inland sources. In this episode
of&nbsp;</SPAN><SPAN>CodeStories</SPAN><SPAN>, Seth Juarez shows how developers
can use AI to address this problem by
monitoring&nbsp;</SPAN><SPAN>microplastic</SPAN><SPAN>&nbsp;and tracking
ocean-bound plastic waste.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://channel9.msdn.com/Shows/CodeStories/Microsoft-France-Surfrider-EU--Plastic-Origins-Project"
target="_blank" rel="noopener"><SPAN>Watch the video</SPAN></A><SPAN>&nbsp;(13
minutes)</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>&nbsp;</SPAN></P> <P><SPAN>Week
4:</SPAN><SPAN>&nbsp;</SPAN><SPAN>Looking forward to
new</SPAN><SPAN>&nbsp;</SPAN><SPAN>challenges</SPAN><SPAN>&nbsp;</SPAN></P>
<P><STRONG><SPAN>Microsoft Learn Student
Ambassadors&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>In 2020, we
launched the Microsoft Learn Student Ambassadors program, where students can
join a global community of peers, connect with mentors, learn the skills they
need to land a dream job, and make a difference. Applications are open
year-round, and we will accept hundreds more Student Ambassadors in
2021.</SPAN><SPAN>&nbsp;<BR /></SPAN><A
href="https://techcommunity.microsoft.com/t5/student-developer-blog/welcome-microsoft-learn-student-ambassadors/ba-p/1570828"
target="_blank" rel="noopener">Learn more about the
program</A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Speed up
development</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>What does it take to
go from idea to development without detours? Best-in-class tools and product
management are two of the things that boost velocity, a new McKinsey report
found. Find out how to get stuff done faster in 2021 with this and other
real-world strategies.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://azure.microsoft.com/en-us/blog/unleash-the-full-potential-of-your-developer-teams-and-increase-developer-velocity/"
target="_blank" rel="noopener"><SPAN>Read the McKinsey report on how to boost
developer velocity</SPAN></A></P> <P>&nbsp;</P> <P><STRONG><SPAN>Learning to
code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Intimidated by the idea of
learning a new programming language? We’ve got a few ways to make it easier so
2021 is the year you make it happen. Download Visual Studio Code, then dive into
tutorials and other resources that you can go through at your own
pace.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://code.visualstudio.com/learntocode" target="_blank"
rel="noopener"><SPAN>Learn to program with Visual Studio Code</SPAN></A></P>
<P>&nbsp;</P> <P><STRONG><SPAN>Predicting meteor showers using Python and VS
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Shooting for the moon in
2021? This session may provide
inspiration.&nbsp;</SPAN><SPAN>Dr</SPAN><SPAN>&nbsp;G explains what meteor
showers are and how data science is used to predict these events. No coding
experience required.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://www.youtube.com/watch?v=Aln9p6farRg" target="_blank"
rel="noopener"><SPAN>Watch the recorded live stream</SPAN></A><SPAN>&nbsp;(50
min)&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>Finally, before
we raise a glass, cup, or mug to&nbsp;</SPAN><SPAN>2021</SPAN><SPAN>, we’d like
to thank&nbsp;</SPAN><SPAN>all&nbsp;</SPAN><SPAN>of you&nbsp;</SPAN><SPAN>who
have shared</SPAN><SPAN>&nbsp;</SPAN><A
href="https://twitter.com/hashtag/DevWithABev" target="_blank"
rel="noopener"><SPAN>#</SPAN><SPAN>D</SPAN><SPAN>ev</SPAN><SPAN>W</SPAN><SPAN>ith</SPAN><SPAN>AB</SPAN><SPAN>ev</SPAN></A><SPAN>&nbsp;pictures
during the month.</SPAN><SPAN>&nbsp;We’ve discovered a few new beverages and
flavors to&nbsp;</SPAN><SPAN>sip</SPAN><SPAN>&nbsp;</SPAN><SPAN><img
class="lia-deferred-image lia-image-emoji"
src="https://techcommunity.microsoft.com/html/@8341BD79091AF36AA2A09063B554B5CD/images/emoticons/smile_40x40.gif"
alt=":smile:" title=":smile:"
/></SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><FONT color="#800080"><SPAN>Here’s to</SPAN><SPAN>&nbsp;new
projects and new
adventures</SPAN><SPAN>!</SPAN><SPAN>&nbsp;H</SPAN>appy&nbsp;New
Year<SPAN>!</SPAN><SPAN>&nbsp;</SPAN></FONT></P></description>
<pubDate>Fri, 01 Jan 2021 10:05:20 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-5-it-s-a-festive-wrap/ba-p/1834830</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2021-01-01T10:05:20Z</dc:date>
...
</item>
<item>
<title>#DevDecember Week 4 Recap: Looking forward</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-4-recap-looking-forward/ba-p/1834829</link>
<description><P><SPAN><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Blog-images_week4.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237579i8C81B976DAB62F1E/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week4.png" alt="Blog-images_week4.png"
/></span></SPAN></P> <P><SPAN class="TextRun SCXW119958490 BCX0"><SPAN
class="NormalTextRun SCXW119958490 BCX0">2021 is right around the corner,
and<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW119958490
BCX0"><SPAN class="NormalTextRun SCXW119958490 BCX0">with it
comes</SPAN></SPAN><SPAN class="TextRun SCXW119958490 BCX0"><SPAN
class="NormalTextRun SCXW119958490 BCX0"><SPAN>&nbsp;</SPAN>the optimism a new
year brings. A clean slate, a new story to write.&nbsp;</SPAN></SPAN><SPAN
class="EOP SCXW119958490 BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><SPAN
class="TextRun SCXW68609620 BCX0"><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW68609620 BCX0">So</SPAN><SPAN
class="NormalTextRun SCXW68609620 BCX0">&nbsp;this week, w</SPAN></SPAN><SPAN
class="TextRun SCXW68609620 BCX0"><SPAN class="NormalTextRun SCXW68609620
BCX0">e invite you to share&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW68609620
BCX0"><SPAN class="NormalTextRun SCXW68609620
BCX0">what&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW68609620 BCX0"><SPAN
class="NormalTextRun SCXW68609620 BCX0">you hope to achieve in
2021</SPAN></SPAN><SPAN class="TextRun SCXW68609620 BCX0"><SPAN
class="NormalTextRun SCXW68609620 BCX0">—</SPAN></SPAN><SPAN class="TextRun
SCXW68609620 BCX0"><SPAN class="NormalTextRun SCXW68609620 BCX0">and the
activities that will get you there.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW68609620 BCX0">&nbsp;</SPAN> </SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun
SCXW36221302 BCX0">Do you plan<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">to</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302 BCX0"><SPAN>&nbsp;</SPAN>spend more time
listening in and sharing on live stream channels? Are there a</SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">reas you want to brush up on</SPAN></SPAN><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302 BCX0">? Do you have
projects and goals you can't wait to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">work on?</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">Use<SPAN>&nbsp;</SPAN></SPAN></SPAN><A
href="https://aka.ms/DevDecember20Home" target="_self"><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">our</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun Underlined SCXW36221302 BCX0"><SPAN class="NormalTextRun
SCXW36221302 BCX0">fill-in-the-blank</SPAN></SPAN></A><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0"><SPAN>&nbsp;</SPAN>to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">share</SPAN></SPAN><SPAN class="TextRun SCXW36221302 BCX0"><SPAN
class="NormalTextRun SCXW36221302
BCX0"><SPAN>&nbsp;</SPAN>your</SPAN></SPAN><SPAN class="TextRun SCXW36221302
BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW36221302
BCX0"><SPAN class="NormalTextRun SCXW36221302 BCX0">can-d</SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">o items<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW36221302
BCX0"><SPAN class="NormalTextRun SCXW36221302 BCX0">for 2021</SPAN></SPAN><SPAN
class="TextRun SCXW36221302 BCX0"><SPAN class="NormalTextRun SCXW36221302
BCX0">.</SPAN></SPAN><SPAN class="EOP SCXW36221302 BCX0">&nbsp;</SPAN></P>
<P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_8_2.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/239460i234714BFBD0B43AC/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_8_2.png" alt="Slide_8_2.png" /></span></SPAN></P>
<P>&nbsp;</P> <P><SPAN class="TextRun SCXW89562749 BCX0"><SPAN
class="NormalTextRun SCXW89562749 BCX0">W</SPAN></SPAN><SPAN class="TextRun
SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">e
shared<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">these
resources<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">recently</SPAN></SPAN><SPAN
class="TextRun SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">t</SPAN></SPAN><SPAN
class="TextRun SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749
BCX0">hat support<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749
BCX0">developer</SPAN></SPAN><SPAN class="TextRun SCXW89562749 BCX0"><SPAN
class="NormalTextRun SCXW89562749
BCX0"><SPAN>&nbsp;</SPAN>efforts</SPAN></SPAN><SPAN class="TextRun SCXW89562749
BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">, whether you're just
starting out or<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW89562749 BCX0"><SPAN class="NormalTextRun SCXW89562749 BCX0">are ready to
kick it up a notch:</SPAN></SPAN><SPAN class="EOP SCXW89562749
BCX0">&nbsp;</SPAN></P> <P><STRONG><SPAN>Microsoft Learn Student
Ambassadors&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN><SPAN
class="TextRun BCX0 SCXW171597127"><SPAN class="NormalTextRun BCX0
SCXW171597127">In 2020</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW171597127"><SPAN class="NormalTextRun BCX0 SCXW171597127">, we launched the
Microsoft Learn Student Ambassadors program, where students can join a global
community of peers, connect with mentors, learn the skills they need to land a
dream job, and make a difference. Applications are open
year-round</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW171597127"><SPAN
class="NormalTextRun BCX0 SCXW171597127">, and we will acce</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW171597127"><SPAN class="NormalTextRun BCX0
SCXW171597127">pt hundreds more Student Ambassadors</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW171597127"><SPAN class="NormalTextRun BCX0
SCXW171597127">&nbsp;in 2021</SPAN></SPAN></SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured13" target="_blank"
rel="noopener">Learn more about the program</A><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN>Speed up
development</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW133027991 BCX0"><SPAN class="NormalTextRun SCXW133027991 BCX0">What does it
take to go from idea to development without detours? Best-in-class tools and
product management are two<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW133027991 BCX0"><SPAN class="NormalTextRun SCXW133027991 BCX0">of the things
that boost veloci</SPAN></SPAN><SPAN class="TextRun SCXW133027991 BCX0"><SPAN
class="NormalTextRun SCXW133027991 BCX0">ty, a new McKinsey report
found</SPAN></SPAN><SPAN class="TextRun SCXW133027991 BCX0"><SPAN
class="NormalTextRun SCXW133027991 BCX0">. Find out how
to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW133027991
BCX0"><SPAN class="NormalTextRun SCXW133027991 BCX0">get stuff done
faster</SPAN></SPAN><SPAN class="TextRun SCXW133027991 BCX0"><SPAN
class="NormalTextRun SCXW133027991 BCX0"><SPAN>&nbsp;</SPAN>in 2021 with this
and other real-world strategies.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW133027991 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured14 " target="_blank"
rel="noopener">Read the McKinsey report on how to boost&nbsp;developer
velocity</A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>Learning to code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN class="TextRun SCXW76440558 BCX0"><SPAN class="NormalTextRun
SCXW76440558 BCX0">Intimidated by the idea of learning
a<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558
BCX0">new<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">programming
language?<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">We’ve
got<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">a few ways to make it
easier</SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558 BCX0"><SPAN>&nbsp;</SPAN>so 2021 is the year
you make it happen</SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558 BCX0">.
Download<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">Visual Studio
Code</SPAN></SPAN><SPAN class="TextRun SCXW76440558 BCX0"><SPAN
class="NormalTextRun SCXW76440558 BCX0">, then dive into tutorials and other
resources<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558
BCX0">that<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW76440558
BCX0"><SPAN class="NormalTextRun SCXW76440558 BCX0">you can go through at your
own pace.</SPAN></SPAN><SPAN class="EOP SCXW76440558 BCX0">&nbsp;</SPAN></P>
<P><A href="https://aka.ms/DevEdCalDec20featured15" target="_blank"
rel="noopener">Learn to program with Visual Studio
Code</A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Predicting meteor
showers using Python and Visual Studio
Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590 BCX0">Shooting for
the moon<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW235576590
BCX0"><SPAN class="NormalTextRun SCXW235576590 BCX0">in 2021</SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0">? T</SPAN></SPAN><SPAN class="TextRun SCXW235576590 BCX0"><SPAN
class="NormalTextRun SCXW235576590 BCX0">his session
may<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW235576590
BCX0"><SPAN class="NormalTextRun SCXW235576590 BCX0">provide</SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0"><SPAN>&nbsp;</SPAN>inspiration. Dr G explains what meteor showers are and
how data science is used to predict<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0">these</SPAN></SPAN><SPAN class="TextRun SCXW235576590 BCX0"><SPAN
class="NormalTextRun SCXW235576590 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW235576590 BCX0"><SPAN class="NormalTextRun SCXW235576590
BCX0">events. No coding experience required.</SPAN></SPAN><SPAN class="EOP
SCXW235576590 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured16" target="_blank"
rel="noopener"><SPAN>Watch the recorded live stream</SPAN></A><SPAN>&nbsp;(50
min)&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>We’ve got one
more thing to mention before we close out week 4&nbsp;</SPAN><SPAN>of
#DevDecember:</SPAN><SPAN>&nbsp;</SPAN></P> <UL>
<LI><SPAN>#DevWithABev</SPAN><SPAN>&nbsp;is still going strong</SPAN><SPAN>.
It’s simple. Snap a pic of you with your fav&nbsp;bev&nbsp;and post on Twitter
with the hashtag</SPAN><SPAN>&nbsp;#DevWithABev.</SPAN><SPAN>&nbsp;</SPAN></LI>
</UL> <P>&nbsp;</P> <P><SPAN>There
are&nbsp;</SPAN><SPAN>only&nbsp;</SPAN><SPAN>a few more days left in
2020&nbsp;</SPAN><SPAN>but</SPAN><SPAN>&nbsp;w</SPAN><SPAN>e’</SPAN><SPAN>ve got
a final surprise in store</SPAN><SPAN>—</SPAN><SPAN>keep follow</SPAN><SPAN>ing
#DevDecember&nbsp;</SPAN><SPAN>to find out what it
is.</SPAN><SPAN>&nbsp;</SPAN></P> <P><SPAN>&nbsp;<BR
/></SPAN><SPAN>Missed&nbsp;</SPAN><SPAN>a day or a week</SPAN><SPAN>? Head over
to our <STRONG><A href="https://aka.ms/DevDecember20Home"
target="_self">#DevDecember
homepage</A></STRONG></SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P></description>
<pubDate>Fri, 08 Jan 2021 01:02:23 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-4-recap-looking-forward/ba-p/1834829</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2021-01-08T01:02:23Z</dc:date>
...
</item>
<item>
<title>#DevDecember Week 3 Recap: Inspiration</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-3-recap-inspiration/ba-p/1834828</link>
<description><P><SPAN><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Blog-images_week3.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235277iC313707F6EC166D2/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week3.png" alt="Blog-images_week3.png"
/></span></SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun SCXW26024580
BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0">This week</SPAN></SPAN><SPAN
class="TextRun SCXW26024580 BCX0"><SPAN class="NormalTextRun SCXW26024580
BCX0"><SPAN>&nbsp;</SPAN>in #DevDecember</SPAN></SPAN><SPAN class="TextRun
SCXW26024580 BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0">,
we<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW26024580 BCX0"><SPAN
class="NormalTextRun SCXW26024580 BCX0">had the hard job of selecting just a
handful of sources of inspiration</SPAN></SPAN><SPAN class="TextRun SCXW26024580
BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0"><SPAN>&nbsp;</SPAN>from a
big grab bag of options</SPAN></SPAN><SPAN class="TextRun SCXW26024580
BCX0"><SPAN class="NormalTextRun SCXW26024580 BCX0">.&nbsp;</SPAN></SPAN><SPAN
class="EOP SCXW26024580 BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_20_1.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237444i851F900A2219C0F2/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_20_1.png" alt="Slide_20_1.png" /></span><SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">You’ll find&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">out what we went for below,
but there were so many other excitin</SPAN></SPAN><SPAN class="TextRun
SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">g things we
could have featured, so&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">we hope you
will&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">add the things you prized most this
year</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">.&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">What projects&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">impressed&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543
BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">you</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">?</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">&nbsp;What
tools&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">did you like using</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">?&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">Use our&nbsp;</SPAN></SPAN><SPAN
class="TextRun Underlined SCXW154441543 BCX0"><SPAN class="NormalTextRun
SCXW154441543 BCX0">fill-in-the-blank</SPAN></SPAN><SPAN class="TextRun
SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543 BCX0">&nbsp;to
s</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">hare&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">what motivated and propelled you on in 2020</SPAN></SPAN><SPAN
class="TextRun SCXW154441543 BCX0"><SPAN class="NormalTextRun SCXW154441543
BCX0">, tagged&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">as
#DevDecember.&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW154441543 BCX0"><SPAN
class="NormalTextRun SCXW154441543 BCX0">Thanks in advance for the
inspiration.</SPAN></SPAN><SPAN class="EOP SCXW154441543 BCX0">&nbsp;</SPAN>
</SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun SCXW224080501 BCX0"><SPAN
class="NormalTextRun SCXW224080501 BCX0">Now, let’s review
what<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW224080501
BCX0"><SPAN class="NormalTextRun SCXW224080501 BCX0">we featured in week
3</SPAN></SPAN><SPAN class="TextRun SCXW224080501 BCX0"><SPAN
class="NormalTextRun SCXW224080501 BCX0">:</SPAN></SPAN><SPAN class="EOP
SCXW224080501 BCX0">&nbsp;</SPAN></P>
<P><STRONG><SPAN>IoT</SPAN></STRONG><STRONG><SPAN>&nbsp;and Azure
h</SPAN></STRONG><STRONG><SPAN>elp&nbsp;</SPAN></STRONG><STRONG><SPAN>w</SPAN></STRONG><STRONG><SPAN>ith&nbsp;</SPAN></STRONG><STRONG><SPAN>f</SPAN></STRONG><STRONG><SPAN>amily&nbsp;</SPAN></STRONG><STRONG><SPAN>c</SPAN></STRONG><STRONG><SPAN>hores&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN class="TextRun SCXW113139885 BCX0"><SPAN class="NormalTextRun
SCXW113139885 BCX0">With everyone at home, dishes pile up faster, garbage
accumulates, and chores must be done more frequently. To keep track in real time
what<SPAN>&nbsp;</SPAN></SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW113139885 BCX0">chores</SPAN><SPAN
class="NormalTextRun SCXW113139885 BCX0"><SPAN>&nbsp;</SPAN>need to be completed
and<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW113139885
BCX0"><SPAN class="NormalTextRun SCXW113139885
BCX0">by<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW113139885
BCX0"><SPAN class="NormalTextRun SCXW113139885 BCX0">when, Scott Hanselman built
an IoT solution, using sensors, a web-based heatmap, and
notifications.&nbsp;</SPAN></SPAN><SPAN class="EOP SCXW113139885
BCX0">&nbsp;</SPAN></P> <P><A href="https://aka.ms/DevEdCalDec20featured9"
target="_self"><SPAN>Check out how to build
Chores&nbsp;</SPAN><SPAN>IoT</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>The Developer Activity
Book&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW123811758 BCX0"><SPAN class="NormalTextRun SCXW123811758 BCX0">Taking your
mind of</SPAN></SPAN><SPAN class="TextRun SCXW123811758 BCX0"><SPAN
class="NormalTextRun SCXW123811758 BCX0">f</SPAN></SPAN><SPAN class="TextRun
SCXW123811758 BCX0"><SPAN class="NormalTextRun SCXW123811758
BCX0"><SPAN>&nbsp;</SPAN>what you’re working on is sometimes the best way to get
inspiration. The Developer Activity Book
features<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW123811758
BCX0"><SPAN class="NormalTextRun SCXW123811758 BCX0">family-friendly fun,
including<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW123811758
BCX0"><SPAN class="NormalTextRun SCXW123811758
BCX0">seven<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW123811758
BCX0"><SPAN class="NormalTextRun SCXW123811758 BCX0">coloring pages, a crossword
puzzle, a word search, and a logic puzzle.&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW123811758 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured10" target="_self"><SPAN>Get the
Developer Activity Book</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><STRONG><SPAN>2020 Imag</SPAN></STRONG><STRONG><SPAN>ine Cup World
Championship</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">The Imagine
Cup<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">World Championship
encourages</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0"><SPAN>&nbsp;</SPAN>students across the
globe to innovate using Microsoft Azure. Finalist teams created
tech</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0">nological</SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0"><SPAN>&nbsp;</SPAN>solutions<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">tackl</SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">e</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0"><SPAN>&nbsp;</SPAN>pressing global
issues</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0">.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW118449384 BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">Get inspired by</SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">their
passion<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384
BCX0">and<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW118449384
BCX0"><SPAN class="NormalTextRun SCXW118449384 BCX0">the incredible projects
they created</SPAN></SPAN><SPAN class="TextRun SCXW118449384 BCX0"><SPAN
class="NormalTextRun SCXW118449384 BCX0">.</SPAN></SPAN><SPAN class="EOP
SCXW118449384 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured11" target="_self"><SPAN>Watch the
recap</SPAN></A><SPAN>&nbsp;(3 minutes)</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN>Plastic Origins
Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">Most of the
plastic that ends up in the oceans comes from inland sources. In this episode
of<SPAN>&nbsp;</SPAN></SPAN><SPAN class="NormalTextRun SpellingErrorV2
SCXW132318438 BCX0">CodeStories</SPAN><SPAN class="NormalTextRun SCXW132318438
BCX0">,<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">Seth
Juarez</SPAN></SPAN><SPAN class="TextRun SCXW132318438 BCX0"><SPAN
class="NormalTextRun SCXW132318438 BCX0"><SPAN>&nbsp;</SPAN>shows
how<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0">developers<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">can use AI
to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">address
th</SPAN></SPAN><SPAN class="TextRun SCXW132318438 BCX0"><SPAN
class="NormalTextRun SCXW132318438 BCX0">is</SPAN></SPAN><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0"><SPAN>&nbsp;</SPAN>problem by
monitoring<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">microplastic and
tracking<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW132318438
BCX0"><SPAN class="NormalTextRun SCXW132318438 BCX0">ocean</SPAN></SPAN><SPAN
class="TextRun SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0">-</SPAN></SPAN><SPAN class="TextRun SCXW132318438 BCX0"><SPAN
class="NormalTextRun SCXW132318438 BCX0">bound</SPAN></SPAN><SPAN class="TextRun
SCXW132318438 BCX0"><SPAN class="NormalTextRun SCXW132318438
BCX0"><SPAN>&nbsp;</SPAN>plastic waste.</SPAN></SPAN><SPAN class="EOP
SCXW132318438 BCX0">&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured12" target="_self"><SPAN>Watch the
video</SPAN></A><SPAN>&nbsp;(13 minutes)</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">Next&nbsp;</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">up is&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">week 4
of</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">&nbsp;#DevDecember</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">. We’ll cover</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">&nbsp;one of our
favorite topics:&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">the</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">&nbsp;projects and</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">technologies</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">we’re
most&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">look</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">ing</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW222089784"><SPAN
class="NormalTextRun BCX0 SCXW222089784">&nbsp;forward to</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW222089784"><SPAN class="NormalTextRun BCX0
SCXW222089784">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW222089784"><SPAN class="NormalTextRun BCX0 SCXW222089784">in
2021.</SPAN></SPAN> </SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun
SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339 BCX0">Meanwhile,
w</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339
BCX0">e’re<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW60259339
BCX0"><SPAN class="NormalTextRun SCXW60259339 BCX0">hoping you’ll upload
a</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339 BCX0"><SPAN>&nbsp;</SPAN>#DevWithABev
selfie</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339 BCX0"><SPAN>&nbsp;</SPAN>if you haven’t
already</SPAN></SPAN><SPAN class="TextRun SCXW60259339 BCX0"><SPAN
class="NormalTextRun SCXW60259339 BCX0">.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339
BCX0">What’s this about? Simply put,<SPAN>&nbsp;</SPAN></SPAN><SPAN
class="NormalTextRun SpellingErrorV2 SCXW60259339 BCX0">devs</SPAN><SPAN
class="NormalTextRun SCXW60259339 BCX0"><SPAN>&nbsp;</SPAN>take a picture of
themselves with a<SPAN>&nbsp;</SPAN></SPAN><SPAN class="NormalTextRun
SpellingErrorV2 SCXW60259339 BCX0">bev</SPAN><SPAN class="NormalTextRun
SCXW60259339 BCX0">. Hot or cold, commonplace or original, we like it all.
Share<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW60259339
BCX0"><SPAN class="NormalTextRun SCXW60259339 BCX0">and</SPAN></SPAN><SPAN
class="TextRun SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339
BCX0"><SPAN>&nbsp;</SPAN>tag your pic<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW60259339 BCX0"><SPAN class="NormalTextRun SCXW60259339
BCX0">#DevWithABev.</SPAN></SPAN><SPAN class="EOP SCXW60259339
BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN>Missed some&nbsp;</SPAN><SPAN>or
all&nbsp;</SPAN><SPAN>of</SPAN><SPAN>&nbsp;</SPAN><SPAN>#</SPAN><SPAN>DevDecember</SPAN><SPAN>?
Catch up on </SPAN><STRONG><A href="https://aka.ms/DevDecember20Home"
target="_self">our #DevDecember homepage</A>&nbsp;</STRONG><SPAN>for more
info!&nbsp;</SPAN></P></description>
<pubDate>Fri, 01 Jan 2021 10:05:48 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-3-recap-inspiration/ba-p/1834828</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2021-01-01T10:05:48Z</dc:date>
...
</item>
<item>
<title>Migrating Azure AD B2C integration going from .NET Core 3.1 to .NET
5</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/migrating-azure-ad-b2c-integration-going-from-net-core-3-1-to/ba-p/1983575</link>
<description><P>This year's release of .NET happened a few weeks ago with .NET
5. (Core is gone from the name now.) I have some sample code that works as sort
of a boilerplate to verify basic functionality without containing anything
fancy. One of those is a web app where one can sign in through Azure AD B2C.
Logically I went ahead and updated from .NET Core 3.1 to .NET 5 to see if
everything still works.</P><P>&nbsp;</P><P>It works, but there are
recommendations that you should put in some extra effort as the current NuGet
packages are on their way to deprecation. Not like "will stop working in two
weeks", but might as well tackle it now.</P><P>&nbsp;</P><P>The Microsoft
Identity platform has received an overhaul in parallel to .NET and a little
while before the .NET 5 release the Identity team released
<EM>Microsoft.Identity.Web</EM> packages for handling auth in web apps. (Not
just for Azure AD B2C, but identity in general.)</P><P>&nbsp;</P><P>Why is this
upgrade necessary? Well, the old libraries were based on the Azure AD v1
endpoints, but these new libraries fully support the v2 endpoints. Which is
great when going for full compliance with the OAuth and OpenID Connect
protocols.</P><P>&nbsp;</P><P>Using my sample at&nbsp;<A
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/aad-b2c-custom_policies-dotnet-core"
target="_blank"
rel="noopener">https://github.com/ahelland/Identity-CodeSamples-v2/tree/master/aad-b2c-custom_policies-dotnet-core</A>&nbsp;
I wanted to do a test run from old to new.</P><P>&nbsp;</P><P>The current code
is using&nbsp;<EM>Microsoft.AspNetCore.Authentication.AzureADB2C.UI</EM>. (You
can take a look at the code for the <A title="Upgraded to .NET 5"
href="https://github.com/ahelland/Identity-CodeSamples-v2/tree/b6d8def3dcf8c46e38a9419a9dc88d5eb327501b/aad-b2c-custom_policies-dotnet-core"
target="_blank" rel="noopener">Upgraded to .NET 5</A>&nbsp;checkpoint for
reference.)</P><P>&nbsp;</P><P>You can start by using NuGet to download the
latest version of <EM>Microsoft.Identity.Web</EM> and
<EM>Microsoft.Identity.Web.UI</EM>. (1.4.0 when I'm typing this.) You can also
remove&nbsp;<SPAN><EM>Microsoft.AspNetCore.Authentication.AzureADB2C.UI</EM>
while you're at it.</SPAN></P><P>&nbsp;</P><P>In <EM>Startup.cs</EM>&nbsp;you
should make the following changes:</P><P>Replace</P><P>&nbsp;</P><LI-CODE
lang="csharp">services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options =&gt; Configuration.Bind("AzureADB2C",
options)).AddCookie();</LI-CODE><P>&nbsp;</P><P>With</P><P>&nbsp;</P><LI-CODE
lang="csharp">services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureADB2C"));</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>And
change</P><P>&nbsp;</P><LI-CODE lang="csharp">services.AddRazorPages();
</LI-CODE><P>&nbsp;</P><P>To</P><P>&nbsp;</P><LI-CODE
lang="csharp">services.AddRazorPages().AddMicrosoftIdentityUI();</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>If
you have been doing "classic"</SPAN><SPAN> Azure AD apps you will notice how B2E
and B2C are now almost identical. Seeing how they both follow the same set of
standards this makes sense. As well as making it easier for .NET devs to support
both internal and external facing authentication.</SPAN></P><P>&nbsp;</P><P>B2C
has some extra logic in the sense that the different policies drive you to
different endpoints, so the UI has to have awareness of this. And you need to
modify a few things in the views.</P><P>&nbsp;</P><P>In
<EM>LoginPartial.cshtml</EM>:</P><P>Change</P><P>&nbsp;</P><LI-CODE
lang="csharp">@using Microsoft.AspNetCore.Authentication.AzureADB2C.UI @using
Microsoft.Extensions.Options @inject IOptionsMonitor&lt;AzureADB2COptions&gt;
AzureADB2COptions @{ var options =
AzureADB2COptions.Get(AzureADB2CDefaults.AuthenticationScheme);
}</LI-CODE><P>&nbsp;</P><P>To</P><P>&nbsp;</P><LI-CODE lang="csharp">@using
Microsoft.Extensions.Options @using Microsoft.Identity.Web @inject
IOptions&lt;MicrosoftIdentityOptions&gt; AzureADB2COptions @{ var options =
AzureADB2COptions.Value; }</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>And change the
asp-area in links from using AzureADB2C:</P><P>&nbsp;</P><LI-CODE
lang="csharp">&lt;a class="nav-link text-dark" asp-area="AzureADB2C"
asp-controller="Account" asp-action="SignOut"&gt;Sign
out&lt;/a&gt;</LI-CODE><P>&nbsp;</P><P>To using
MicrosoftIdentity:</P><P>&nbsp;</P><LI-CODE lang="csharp">&lt;a class="nav-link
text-dark" asp-area="MicrosoftIdentity" asp-controller="Account"
asp-action="SignOut"&gt;Sign
out&lt;/a&gt;</LI-CODE><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>And
that's all there is to it :)</img></P><P><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Azure
AD B2C SignUp" style="width: 241px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/240107i07730500C0838E23/image-size/medium?v=v2&amp;px=400"
role="button" title="SignUp.png" alt="Azure AD B2C SignUp" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">Azure AD B2C
SignUp</span></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now this is a fairly
stripped down sample app without the complexity of a real world app, but this
was a rather pain free procedure for changing the identity engine in a web
app.</P><P>&nbsp;</P></description>
<pubDate>Mon, 14 Dec 2020 17:00:00 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/migrating-azure-ad-b2c-integration-going-from-net-core-3-1-to/ba-p/1983575</guid>
<dc:creator>Andreas Helland</dc:creator>
<dc:date>2020-12-14T17:00:00Z</dc:date>
...
</item>
<item>
<title>#DevDecember Week 2 Recap: Community</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-2-recap-community/ba-p/1834827</link>
<description><P><SPAN><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Blog-images_week2.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234746i32908191DA073641/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week2.png" alt="Blog-images_week2.png"
/></span></SPAN></P> <P><SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">When you're starting
a&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">new dev&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">project or&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321
BCX0"><SPAN class="NormalTextRun SCXW168876321 BCX0">tackling</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">coding problems</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">,&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">it helps</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">t</SPAN></SPAN><SPAN class="TextRun
SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321 BCX0">o build on
the knowledge of others. In 2020 especially,&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">a helping hand&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321
BCX0"><SPAN class="NormalTextRun SCXW168876321 BCX0">was</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">&nbsp;</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">more than welcome</SPAN></SPAN><SPAN
class="TextRun SCXW168876321 BCX0"><SPAN class="NormalTextRun SCXW168876321
BCX0">!</SPAN></SPAN><SPAN class="TextRun SCXW168876321 BCX0"><SPAN
class="NormalTextRun SCXW168876321 BCX0">&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW168876321 BCX0">&nbsp;</SPAN> </SPAN></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_18_1_Recap.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235806iCC2C65DAD6A12398/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_18_1_Recap.png" alt="Slide_18_1_Recap.png"
/></span><SPAN class="TextRun SCXW95868378 BCX0"><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW95868378 BCX0
DefaultHighlightTransition">So</SPAN><SPAN class="NormalTextRun SCXW95868378
BCX0"><SPAN>&nbsp;</SPAN>i</SPAN></SPAN><SPAN class="TextRun SCXW95868378
BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">n our second week of
#DevDecember, we<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun
SCXW95868378 BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">are
taking<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378
BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">some time
to<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378 BCX0"><SPAN
class="NormalTextRun SCXW95868378 BCX0">celebrate the efforts
of<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378 BCX0"><SPAN
class="NormalTextRun SCXW95868378 BCX0">the</SPAN></SPAN><SPAN class="TextRun
SCXW95868378 BCX0"><SPAN class="NormalTextRun SCXW95868378
BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW95868378
BCX0"><SPAN class="NormalTextRun SCXW95868378 BCX0">dev
community.</SPAN></SPAN><SPAN class="TextRun SCXW95868378 BCX0"><SPAN
class="NormalTextRun SCXW95868378 BCX0">&nbsp;</SPAN></SPAN><SPAN class="EOP
SCXW95868378 BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">We’d love to
hear how the dev community came through for you in
2020.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">Did you</SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0"><SPAN>&nbsp;</SPAN>get assistance</SPAN></SPAN><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0"><SPAN>&nbsp;</SPAN>learn</SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">ing</SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0"><SPAN>&nbsp;</SPAN>a new language</SPAN></SPAN><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">?</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0"><SPAN>&nbsp;</SPAN>Did someone else
inspire you</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0">r project</SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">?</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0"><SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">Share your version of</SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0"><SPAN>&nbsp;</SPAN>this
week’s fill-</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313 BCX0">in-</SPAN></SPAN><SPAN class="TextRun
SCXW51787313 BCX0"><SPAN class="NormalTextRun SCXW51787313
BCX0">the-</SPAN></SPAN><SPAN class="TextRun SCXW51787313 BCX0"><SPAN
class="NormalTextRun SCXW51787313
BCX0">blank<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW51787313
BCX0"><SPAN class="NormalTextRun SCXW51787313 BCX0">and tag your thoughts as
#DevDecember.&nbsp;</SPAN></SPAN><SPAN class="EOP SCXW51787313
BCX0">&nbsp;</SPAN></P> <P>&nbsp;</P> <P>Now, let's&nbsp;review this week’s
highlights:&nbsp;</P>
<P><STRONG><SPAN>L</SPAN></STRONG><STRONG><SPAN>ive&nbsp;</SPAN></STRONG><STRONG><SPAN>coding
c</SPAN></STRONG><STRONG><SPAN>ommunity</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">Learn from the best on Twitch</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">!</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">Watch&nbsp;</SPAN><SPAN class="NormalTextRun SpellingErrorV2 BCX0
SCXW1136063">devs</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;code&nbsp;</SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 BCX0
SCXW1136063">live,&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun ContextualSpellingAndGrammarErrorV2 BCX0
SCXW1136063">and</SPAN><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;connect and&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">ask
questions</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;in real</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">time</SPAN></SPAN><SPAN class="TextRun
BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">. Find out
how</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;joining</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">Microsoft’s&nbsp;</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">virtual communit</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">y</SPAN></SPAN><SPAN
class="TextRun BCX0 SCXW1136063"><SPAN class="NormalTextRun BCX0
SCXW1136063">&nbsp;can speed up&nbsp;</SPAN></SPAN><SPAN class="TextRun BCX0
SCXW1136063"><SPAN class="NormalTextRun BCX0 SCXW1136063">learning new skills
and languages.</SPAN></SPAN><SPAN class="LineBreakBlob BlobObject DragDrop BCX0
SCXW1136063"><SPAN class="BCX0 SCXW1136063">&nbsp;</SPAN><BR /></SPAN><A
href="https://aka.ms/DevEdCalDec20featured6" target="_blank" rel="noopener
noreferrer"><SPAN class="TextRun Underlined BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">Watch an intro video on Twitch and live
coding</SPAN></SPAN></A><SPAN class="TextRun BCX0 SCXW1136063"><SPAN
class="NormalTextRun BCX0 SCXW1136063">&nbsp;(25 min)</SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <P><STRONG><SPAN>The ReadMe
Project</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>Behind
the&nbsp;</SPAN><SPAN>open</SPAN><SPAN>-</SPAN><SPAN>source code used by
millions of people are the unseen efforts
of&nbsp;</SPAN><SPAN>countless&nbsp;</SPAN><SPAN>contributors</SPAN><SPAN>,
who&nbsp;</SPAN><SPAN>put in long hours to build software, fix issues, and
more.&nbsp;</SPAN><SPAN>Meet</SPAN><SPAN>&nbsp;some of
the&nbsp;</SPAN><SPAN>people making contributions, including
veterans</SPAN><SPAN>&nbsp;who find the teamwork required for open source
collaboration&nbsp;</SPAN><SPAN>a natural
fit</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured5" target="_blank"
rel="noopener"><SPAN>Read their inspiring
stories</SPAN></A><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>Remote
collaboration&nbsp;</SPAN></STRONG><STRONG><SPAN>with Live Share
in</SPAN></STRONG><STRONG><SPAN>&nbsp;</SPAN></STRONG><STRONG><SPAN>Visual
Studio Code</SPAN></STRONG><SPAN>&nbsp;</SPAN></P> <P><SPAN>With Live
Share</SPAN><SPAN>,</SPAN><SPAN>&nbsp;you can instantly share your project with
fellow dev</SPAN><SPAN>eloper</SPAN><SPAN>s. No need to clone a repo or set up
the environment</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>It’s a one-stop,
r</SPAN><SPAN>eal-time
collaboration&nbsp;</SPAN><SPAN>tool</SPAN><SPAN>&nbsp;</SPAN><SPAN>for pairing,
code reviews, technical interviews,
boot</SPAN><SPAN>&nbsp;</SPAN><SPAN>camps</SPAN><SPAN>,</SPAN><SPAN>&nbsp;and
more</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured7" target="_self">Watch a short
video&nbsp;on how to set&nbsp;up Live Share</A><SPAN>&nbsp;</SPAN><SPAN>(5
min)</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN>From
the&nbsp;</SPAN></STRONG><STRONG><SPAN>open
source</SPAN></STRONG><STRONG><SPAN>&nbsp;kitchen</SPAN></STRONG><SPAN>&nbsp;</SPAN></P>
<P><SPAN>Cooking up code is a bit like developing food recipes. The more
people&nbsp;</SPAN><SPAN>who&nbsp;</SPAN><SPAN>test your recipe, the more it's
likely to guarantee that what lands on your plate is what you
intended.</SPAN><SPAN>&nbsp;</SPAN></P> <P><A
href="https://aka.ms/DevEdCalDec20featured8" target="_blank"
rel="noopener"><SPAN>Browse our crowdsourced cookbook with free code
recipes</SPAN></A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN>Before we call it a wrap, d<SPAN class="TextRun SCXW254978929
BCX0"><SPAN class="NormalTextRun SCXW254978929 BCX0">on’t forget to check in
with #DevWithABev</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun SCXW254978929 BCX0">,</SPAN></SPAN><SPAN class="TextRun
SCXW254978929 BCX0"><SPAN class="NormalTextRun SCXW254978929
BCX0">&nbsp;developer-with-a-beverage&nbsp;</SPAN></SPAN><SPAN class="TextRun
SCXW254978929 BCX0"><SPAN class="NormalTextRun SCXW254978929
BCX0">selfies</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun SCXW254978929 BCX0">. Add to the collection with a
pic</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun SCXW254978929 BCX0">&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW254978929 BCX0"><SPAN class="NormalTextRun SCXW254978929
BCX0">of yourself and a favorite holiday&nbsp;</SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW254978929
BCX0">beverage</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW254978929
BCX0">,</SPAN></SPAN><SPAN class="TextRun SCXW254978929 BCX0"><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW254978929
BCX0">&nbsp;and</SPAN><SPAN class="NormalTextRun SCXW254978929 BCX0">&nbsp;tag
it #DevWithABev.</SPAN></SPAN><SPAN class="EOP SCXW254978929
BCX0">&nbsp;</SPAN></SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
class="TextRun SCXW73902411 BCX0"><SPAN class="NormalTextRun SCXW73902411
BCX0">Next week, we’ll talk about<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN
class="TextRun SCXW73902411 BCX0"><SPAN class="NormalTextRun SCXW73902411
BCX0">what inspired us in 2020</SPAN></SPAN><SPAN class="TextRun SCXW73902411
BCX0"><SPAN class="NormalTextRun SCXW73902411
BCX0">.<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW73902411
BCX0"><SPAN class="NormalTextRun SCXW73902411 BCX0">Keep following #</SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW73902411
BCX0">DevDecember</SPAN></SPAN><SPAN class="TextRun SCXW73902411 BCX0"><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW73902411
BCX0">,<SPAN>&nbsp;and <STRONG>c</STRONG></SPAN></SPAN></SPAN><STRONG>heck
out&nbsp;<A href="https://aka.ms/DevDecember20Home" target="_self"><U>our
homepage</U></A></STRONG><STRONG>&nbsp;for more
info!&nbsp;</STRONG></P></description>
<pubDate>Fri, 01 Jan 2021 10:05:58 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-2-recap-community/ba-p/1834827</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2021-01-01T10:05:58Z</dc:date>
...
</item>
<item>
<title>What's New in Logic Apps</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-s-new-in-logic-apps/ba-p/1969149</link>
<description><DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">We <A
href="https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-logic-apps-runtime-performance-and-developer-improvements/ba-p/1645335"
target="_self">announced</A> public preview of the new Logic Apps runtime,
performance and developer improvements in September, 2020. Today, we are happy
to announce the availability of a major update that continue to extend the
capability of Logic Apps. You can find the highlights about this release
below.</DIV> <DIV class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Breakpoint
Debugging</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">You've been asking about
better debugging support, and it is now available with the new runtime. When
running Logic Apps locally, it's possible to set breakpoint before and after an
action, and examine the input and output during workflow executions.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="MicrosoftTeams-image (3).png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/238874iACF1DFB734BBB8B3/image-size/large?v=v2&amp;px=999"
role="button" title="MicrosoftTeams-image (3).png" alt="MicrosoftTeams-image
(3).png" /></span></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>New Layout
Engine for Designer</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">Since the initial
release of Logic Apps, we see customers' implementation grow in complexity: more
actions, parallel branches, extensive use of control flows and advanced
configurations. After the visual refresh for the workflow designer we recently
released, we decided it's time to update the layout engine to better render more
complex workflows. This refresh includes only the initial work to move to a new
layout engine, more improvements will come in the coming months.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Screen Shot 2020-12-08 at 3.12.07 PM.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/238878i88FCFA6B7C160CFB/image-size/large?v=v2&amp;px=999"
role="button" title="Screen Shot 2020-12-08 at 3.12.07 PM.png" alt="Screen Shot
2020-12-08 at 3.12.07 PM.png" /></span></DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Custom Connector
Extension</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">Custom connector allows
you to easily connect to systems outside of the 400+ connectors available
out-of-box. With the new runtime, you can now write codeful custom connector
extensions.&nbsp;This new approach of creating custom connectors means it runs
same process as the Logic App runtime, which results in higher throughput, low
latency, and local connectivity. You can learn more about this capability <A
href="https://techcommunity.microsoft.com/t5/integrations-on-azure/azure-logic-apps-running-anywhere-built-in-connector/ba-p/1921272"
target="_self">here</A>.</DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Integration
Account Support</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">Many of the Integration
Account capabilities are now built-in. You can upload maps and schemas directly
to the new Logic Apps resource, and perform XML validation, transformation, and
Liquid operations without needing an Integration Account.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><STRONG>Cross
Platform</STRONG></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">With this release, you
can develop and test Logic Apps locally using VS Code on macOS and Linux, and
deploy Logic Apps to Linux container runtime as well as Kubernetes.</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">I want to take this
opportunity to thank you for continued support and feedback as we work
to<SPAN>wards General Availability.&nbsp;</SPAN><SPAN style="font-family:
inherit;">We can't wait for you to try it out and hear what you
think.</SPAN></DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options"><SPAN
style="font-family: inherit;">To get started, install/update the&nbsp;</SPAN><A
style="font-family: inherit; background-color: #ffffff;"
href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurelogicapps"
target="_self">VS Code extension</A><SPAN style="font-family: inherit;"> and
create a local project, or create a new resource from the </SPAN><A
style="font-family: inherit; background-color: #ffffff;"
href="https://portal.azure.com/" target="_self">Azure Portal</A><SPAN
style="font-family: inherit;">. You can submit your feedback </SPAN><A
style="font-family: inherit; background-color: #ffffff;"
href="http://aka.ms/lafeedback" target="_self">here</A><SPAN style="font-family:
inherit;">.</SPAN></DIV> </DIV> <DIV class="lia-message-subject-wrapper
lia-component-subject
lia-component-message-view-widget-subject-with-options">&nbsp;</DIV> <DIV
class="lia-message-subject-wrapper lia-component-subject
lia-component-message-view-widget-subject-with-options">- Derek, on behalf of
the entire Logic Apps Team</DIV></description>
<pubDate>Wed, 09 Dec 2020 23:11:08 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-s-new-in-logic-apps/ba-p/1969149</guid>
<dc:creator>derek1ee</dc:creator>
<dc:date>2020-12-09T23:11:08Z</dc:date>
...
</item>
<item>
<title>Azure Advocate Weekly Round Up - Holidays are almost here!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-holidays-are-almost-here/ba-p/1957205</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Sarah_Banner.jpg" style="width: 622px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/238529iD80348C30134D075/image-dimensions/622x207?v=v2"
width="622" height="207" role="button" title="Sarah_Banner.jpg"
alt="Sarah_Banner.jpg" /></span></P> <P><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Sarah is a Cloud Advocate for Microsoft. In this
Discover STEM video Sarah talks about cloud computing, including explaining the
basic principles behind the technology, using terms like servers, data centres
and computing power. She provides some advantages and disadvantages of using the
technology and also provide &nbsp;examples for how industry might use cloud
technology in the future. &nbsp;</P> <P>&nbsp;</P> <P><A
href="https://css-tricks.com/a-gentle-introduction-to-using-a-docker-container-as-a-dev-environment/"
target="_blank" rel="noopener">A Gentle Introduction to Using a Docker Container
as a Dev Environment | CSS-Tricks</A><BR /><STRONG><I><A
href="https://twitter.com/burkeholland" target="_blank" rel="noopener">Burke
Holland</A></I></STRONG></P> <P>Sarcasm disclaimer: This article is mostly
sarcasm. I do not think that I actually speak for Dylan Thomas and I would never
encourage you to foist a light</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/sustainable-software/green-energy-efficient-progressive-web-apps/?WT.ms_id=green-8967-cxa&amp;WT.mc_id=green-8967-ashussai"
target="_blank" rel="noopener">Green Energy Efficient Progressive Web Apps |
Sustainable Software</A><BR /><STRONG><I><A href="https://twitter.com/jawache"
target="_blank" rel="noopener">Asim Hussain</A></I></STRONG></P> <P>As a web
developer, can we adjust our code to participate in the global effort to reduce
the carbon footprint? PWAs offer some solutions</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=1iZxhtxSDu0" target="_blank"
rel="noopener">How to Monitor an Azure virtual machine with Azure Monitor</A><BR
/><STRONG><I><A href="https://twitter.com/ThomasMaurer" target="_blank"
rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Here is how to use Azure
Monitor to collect and analyze monitoring data from Azure virtual machines to
maintain their health. Virtual machines can be monitor...</P> <P>&nbsp;</P>
<P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/working-with-git-branches/ba-p/1900867?WT.mc_id=modinfra-10949-salean"
target="_blank" rel="noopener">Working with Git Branches!</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Let's get to grips with Git Branches</P>
<P>&nbsp;</P> <P><A
href="https://acloudguru.com/blog/engineering/5-things-you-should-know-about-real-time-analytics"
target="_blank" rel="noopener">5 things you should know about Real-Time
Analytics | A Cloud Guru</A><BR /><STRONG><I><A
href="https://twitter.com/adipolak" target="_blank" rel="noopener">Adi
Polak</A></I></STRONG></P> <P>Running analytics on real-time data is a challenge
many data engineers are facing today. But not all analytics can be done in real
time! Many are dependent on the volume of the data and the processing
requirements. Even logic conditions are becoming a bottleneck. For example,
think about join operations on huge tables with more […]</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-azure-portal-updates-arm-template-support-for-file/ba-p/1934750?WT.mc_id=modinfra-11135-abartolo"
target="_blank" rel="noopener">AzUpdate: Azure portal updates, ARM Template
support for file share backup and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>It might be snowing in parts of the Northern
Hemisphere, but we won't let that stop us from sharing Azure news with
you.&nbsp; News covered this week includes: New Azure Portal updates for
November 2020, Azure Resource Manager template support for Azure file share
backup, How to use Windows Admin Center on-premises to manage Azure Windows
Server VMs, Multiple new features for Azure VPN Gateway now Generally Available,
and our Microsoft Learn Module of the Week.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/hybrid-management-where-do-i-start/ba-p/1943535?WT.mc_id=modinfra-11216-pierrer"
target="_blank" rel="noopener">Hybrid management. Where do I start?</A><BR
/><STRONG><I><A href="https://twitter.com/WiredCanuck" target="_blank"
rel="noopener">Pierre Roman</A></I></STRONG></P> <P>Managing &amp; maintaining
servers on-premises or in multiple clouds, as well as Azure? Learn about
management tools for your servers wherever they are.&nbsp;&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://dev.to/azure/visualizeit-a-free-online-series-of-workshops-to-build-your-visual-storytelling-skills-d2b"
target="_blank" rel="noopener">#VisualizeIT: A free online series of workshops
to build your visual storytelling skills!</A><BR /><STRONG><I>Nitya
Narasimhan</I></STRONG></P> <P>#VisualizeIT is a free online series of workshops
for creative technologists, from @MSFTReactor, @azureadvocates and members of
the @letssketchtech community.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/handle-app-button-events-microsoft-teams-tabs/"
target="_blank" rel="noopener">Handle app button events in Microsoft Teams
tabs</A><BR /><STRONG><I><A href="https://twitter.com/waldekm" target="_blank"
rel="noopener">Waldek Mastykarz</A></I></STRONG></P> <P>Did you know that you
can respond to user clicking on the app button of your Microsoft Teams personal
app?</P> <P>&nbsp;</P> <P><A href="https://youtu.be/qAIdFJC1SI8" target="_blank"
rel="noopener">Weekly Update #67 - Rebuilding laptops, filming videos and
news!</A><BR /><STRONG><I><A href="https://twitter.com/techielass"
target="_blank" rel="noopener">Sarah Lean</A></I></STRONG></P> <P>In this week's
update I talk about rebuilding my laptop, talking at a user group, filming
videos and the Azure news of the week. :red_circle:</img> Azure Cloud Shell
Update -...</P> <P><LI-VIDEO vid="https://youtu.be/qAIdFJC1SI8" align="center"
size="custom" width="661" height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/join-us-for-data-week-44il" target="_blank"
rel="noopener">Picking the Right Distributed Database [Create: Data]</A><BR
/><STRONG><I><A href="https://twitter.com/abhi_tweeter" target="_blank"
rel="noopener">Abhishek Gupta</A></I></STRONG></P> <P>"In God we trust, all
others must bring data" William Edwards Deming Well...</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/securing-a-windows-server-vm-in-azure/ba-p/1939268?WT.mc_id=modinfra-11348-socuff"
target="_blank" rel="noopener">Securing a Windows Server VM in Azure</A><BR
/><STRONG><I><A href="https://twitter.com/SoniaCuff" target="_blank"
rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>If you've built and managed
Windows Servers in an on-premises environment, you may have a set of
configuration steps as well as regular process and monitoring alerts, to ensure
that server is as secure as possible. But if you run a Windows Server VM in
Azure, apart from not having to manage the physical security of the underlying
compute hardware, what on-premises concepts still apply, what may you need to
alter and what capabilities of Azure should you include?</P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/sharepoint/blogs/cli-microsoft-365-3-3/?WT.mc_id=m365-11349-wmastyka"
target="_blank" rel="noopener">CLI for Microsoft 365 v3.3 - Microsoft 365
Developer Blog</A><BR /><STRONG><I><A href="https://twitter.com/waldekm"
target="_blank" rel="noopener">Waldek Mastykarz</A></I></STRONG></P> <P>Connect
to the latest conferences, trainings, and blog posts for Microsoft 365, Office
client, and SharePoint developers. Join the Microsoft 365 Developer Program.</P>
<P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/microsoft-365/blogs/microsoft-365-pnp-weekly-episode-107/?WT.mc_id=m365-11360-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 107 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I><A
href="https://twitter.com/waldekm" target="_blank" rel="noopener">Waldek
Mastykarz</A></I></STRONG></P> <P>Connect to the latest conferences, trainings,
and blog posts for Microsoft 365, Office client, and SharePoint developers. Join
the Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://towardsdatascience.com/what-is-serverless-sql-and-how-to-use-it-for-data-exploration-eadad1f1a036"
target="_blank" rel="noopener">What is Serverless SQL? And how to use it for
Data Exploration | by Adi Polak | Dec, 2020 | Towards Data Science</A><BR
/><STRONG><I><A href="https://twitter.com/adipolak" target="_blank"
rel="noopener">Adi Polak</A></I></STRONG></P> <P>So, you are a data scientist,
you work with data and need to explore it and run some analytics on the data
before jumping into running extensive machine learning algorithms. According to
Wikipedia…</P> <P>&nbsp;</P> <P><A href="https://youtu.be/b0APzGlBWMA"
target="_blank" rel="noopener">Terraform for Java developers, part 1 of 4</A><BR
/><STRONG><I><A href="https://twitter.com/juliendubois" target="_blank"
rel="noopener">Julien Dubois</A></I></STRONG></P> <P>An introduction to
Terraform focusing on Java developers. In this first video (out of 4), we
describe what Terraform is, and we fork the Spring Petclinic pro...</P>
<P><LI-VIDEO vid="https://youtu.be/b0APzGlBWMA" align="center" size="custom"
width="661" height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P></description>
<pubDate>Tue, 08 Dec 2020 01:32:28 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-holidays-are-almost-here/ba-p/1957205</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-12-08T01:32:28Z</dc:date>
...
</item>
<item>
<title>What I plan to learn at the Learn Together: Dev Apps for Teams
event</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-i-plan-to-learn-at-the-learn-together-dev-apps-for-teams/ba-p/1955137</link>
<description><P><STRONG><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Learntogether.PNG" style="width: 945px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237657i6189DD8201CF5082/image-size/large?v=v2&amp;px=999"
role="button" title="Learntogether.PNG" alt="Learntogether.PNG"
/></span></STRONG></P> <P>&nbsp;</P> <P><SPAN><A
href="https://aka.ms/learntogether" target="_self">Learn Together: Dev Apps for
Teams</A>&nbsp;is happening on Dec 16 and it will be more of&nbsp;a
conversation-style event.&nbsp;Make sure to&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2Flearntogether&amp;data=04%7C01%7CNina.Sui%40microsoft.com%7C0cf904fb05324a3daf3c08d885b031b2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637406339079067525%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=162wBy7uc%2BV36wBMKFUxI%2Fk7RQWwSRrl%2FFxLj8oFKdg%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>set&nbsp;your
reminders</SPAN></A><SPAN>&nbsp;to attend!&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P>
<P>&nbsp;</P> <P><SPAN>These conversations are specially curated for developers
(by developers) around the opportunities and reasons to build apps for
Teams.&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P>
<P><SPAN>So&nbsp;what are we most excited&nbsp;to&nbsp;learn&nbsp;in the two
hours?</SPAN><SPAN>&nbsp;</SPAN></P> <OL> <LI><SPAN><EM>Understand Teams
Apps</EM></SPAN><SPAN>&nbsp;Learn the key concepts and terms necessary to build
apps for Teams. Expand on the messaging, Tab app, extensions, Bots, and
more.&nbsp;Learn&nbsp;to speak the language!</SPAN><SPAN>&nbsp;</SPAN></LI>
<LI><SPAN><EM>“Hello, world!&nbsp;for&nbsp;Teams</EM></SPAN><SPAN>&nbsp;Getting
started with Teams app development is as easy as&nbsp;click,&nbsp;click, hello
world! Learn to build apps for Teams in minutes with the Teams Toolkit Visual
Studio Code&nbsp;extension.</SPAN><SPAN>&nbsp;</SPAN></LI> <LI><SPAN><EM>Make
your app part of your user’s day.</EM></SPAN><SPAN>&nbsp;Enhance the usability
of your application by integrating messaging and meeting extensions, adaptive
cards, and more.</SPAN><SPAN>&nbsp;</SPAN></LI> </OL> <P>&nbsp;</P> <P><SPAN>The
event is closely tied around the Teams App Dev Learning Path and there will even
be a Teams Dev Challenge for those that want to win prizes and put their skills
to the test.</SPAN><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><A
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka.ms%2Flearntogether&amp;data=04%7C01%7CNina.Sui%40microsoft.com%7C0cf904fb05324a3daf3c08d885b031b2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637406339079067525%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=162wBy7uc%2BV36wBMKFUxI%2Fk7RQWwSRrl%2FFxLj8oFKdg%3D&amp;reserved=0"
target="_blank" rel="noopener"><SPAN>Join us</SPAN></A><SPAN>&nbsp;live or
stream on-demand and we are excited to #learntogether!</SPAN><SPAN>&nbsp;See you
there!&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><LI-VIDEO
vid="https://www.youtube.com/watch?v=SyTbx94m1T4&amp;feature=youtu.be"
align="center" size="large" width="600" height="338" uploading="false"
thumbnail="https://i.ytimg.com/vi/SyTbx94m1T4/hqdefault.jpg"
external="url"></LI-VIDEO></SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Fri, 04 Dec 2020 07:14:58 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/what-i-plan-to-learn-at-the-learn-together-dev-apps-for-teams/ba-p/1955137</guid>
<dc:creator>NinaSui</dc:creator>
<dc:date>2020-12-04T07:14:58Z</dc:date>
...
</item>
<item>
<title>#DevDecember Week 1 Recap: Growth</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-1-recap-growth/ba-p/1834826</link>
<description><P><SPAN><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Blog-images_week1.png" style="width:
999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233216i7C519C8A7680456B/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week1.png" alt="Blog-images_week1.png"
/></span></SPAN></P><P><SPAN>In 2020, developers (along with the rest of the
world) we</SPAN><SPAN>re challenged like never before, but the traits of
determination and persistence describe practically every dev. I mean, honestly,
you can't code without them - like when you get an error and realize you forgot
a ";" somewhere and are scrolling through your IDE for dayyyssss
-&nbsp;<EM>sigh</EM>.</SPAN></P><P>&nbsp;</P><P><SPAN>So, to get our first week
of #</SPAN><SPAN>DevDecember off</SPAN><SPAN>&nbsp;to a running start, we
highlighted&nbsp;</SPAN><SPAN>how
resourceful&nbsp;</SPAN><SPAN>developers&nbsp;</SPAN><SPAN>proved</SPAN><SPAN>&nbsp;to
be</SPAN><SPAN>&nbsp;in</SPAN><SPAN>&nbsp;overcom</SPAN><SPAN>ing</SPAN><SPAN>&nbsp;unexpected
circumstances</SPAN><SPAN>.</SPAN><SPAN>&nbsp;Throughout the week we've shared
various pieces of content that highlight this growth and
determination.</SPAN></P><P>&nbsp;</P><P><SPAN>But, before we get to recapping
those, we wanted to highlight a few fun things that we are doing in #DevDecember
this year:</SPAN></P><P>&nbsp;</P><P><FONT size="4"><STRONG>Reflect with our fun
fill-in-the-blank</STRONG></FONT></P><P><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Slide_9_1.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234263i7AE01217E5F676AD/image-size/medium?v=v2&amp;px=400"
role="button" title="Slide_9_1.png" alt="Slide_9_1.png" /></span></P><P><SPAN>So
much of getting through&nbsp;the y</SPAN><SPAN>ear&nbsp;was about bridging gaps,
so we thought&nbsp;a&nbsp;fill-in-the-blank&nbsp;would
be&nbsp;the&nbsp;best&nbsp;way to&nbsp;review&nbsp;some of the ways you
became&nbsp;more skilled&nbsp;and resilient as a dev.<FONT
color="#FF0000">&nbsp;</FONT></SPAN><SPAN><A
href="https://aka.ms/DevDecember20Home" target="_self">Check out the
template</A>, fill it in, tag it as #</SPAN><SPAN>DevDecember</SPAN><SPAN>, and
share&nbsp;</SPAN><SPAN>what you got done</SPAN><SPAN>&nbsp;and
how.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG><FONT
size="4">#DevWithABev fun on social</FONT></STRONG></P><P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-left"
image-alt="Devwithbev_Selfie.png" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234756i32340B61B2F92127/image-size/medium?v=v2&amp;px=400"
role="button" title="Devwithbev_Selfie.png" alt="Devwithbev_Selfie.png"
/></span>Before&nbsp;we recap, we should&nbsp;also&nbsp;mention #DevWithABev,
a&nbsp;growing&nbsp;collection of&nbsp;developer-with-a-beverage
selfies.&nbsp;Check out everyone's favorite winter beverage,&nbsp;and add your
own personal flavor by taking&nbsp;a snapshot of yourself with yours and
tagging&nbsp;it&nbsp;#DevWithABev. It’s 2020 and we could all use some friendly
faces.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P><FONT
color="#333333">Now,</FONT><FONT color="#333333"> let's recap what we
highlighted this week:&nbsp;</FONT></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Beginner's series to JavaScript
</STRONG></FONT></P><P>Taking your first steps toward mastering a new
programming language is exciting, but it can also feel overwhelming. To help you
get started with JavaScript, we've created short and easy-to-consume videos that
break down the key concepts you need to know.</P><P><A
href="https://aka.ms/DevEdCalDec20featured1" target="_blank"
rel="noopener">Start watching the series</A></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Agrotech IoT workshop</STRONG></FONT></P><P>Want to grow
your professional IoT skills? Your first stop may be the garden. Get your hands
dirty with a workshop on how to build an internet-connected device to gather
soil moisture data that will tell you (by lighting up an LED) if a plant needs
watering.</P><P><A href="https://aka.ms/DevEdCalDec20featured3" target="_blank"
rel="noopener">Start digging in</A></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Bringing browser developer tools to Visual Studio
Code</STRONG></FONT></P><P>One of our favorite releases in 2020 was the
Microsoft Edge Tools for VS Code extension, designed to simplify workflows.
Connect to an existing browser instance, start a new one, or use a “headless”
browser.</P><P><A href="https://aka.ms/DevEdCalDec20featured4" target="_blank"
rel="noopener">Explore the extension</A></P><P>&nbsp;</P><P><FONT
color="#000000"><STRONG>Building a first "Power Apps"
app</STRONG></FONT></P><P>@JoeCamp13 built an app to track inventory entirely
with Power Apps. His explanation of how he did it, is illustrated with
screenshots so you can follow along.</P><P><A
href="https://aka.ms/DevEdCalDec20featured2" target="_blank"
rel="noopener">Start the walkthrough</A></P><P>&nbsp;</P><P><SPAN>Next week,
we’ll talk about&nbsp;</SPAN><SPAN>some of</SPAN><SPAN>&nbsp;the ways the dev
community&nbsp;</SPAN><SPAN>came together</SPAN><SPAN>&nbsp;</SPAN><SPAN>in
202</SPAN><SPAN>0</SPAN><SPAN>.&nbsp;</SPAN><SPAN>Keep following
#</SPAN><SPAN>DevDecember</SPAN><SPAN>&nbsp;for daily
updates</SPAN><SPAN>&nbsp;and affirmations of
awesomeness</SPAN><SPAN>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P><SPAN>Not
sure what&nbsp;</SPAN><SPAN>#</SPAN><SPAN>DevDecember</SPAN><SPAN>&nbsp;is all
about</SPAN><SPAN>?<STRONG> Check out <A href="https://aka.ms/DevDecember20Home"
target="_self">our homepage</A></STRONG></SPAN><STRONG>&nbsp;for more
info!&nbsp; </STRONG></P><P>&nbsp;</P><P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="slide_20_Gif.gif" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/237645i41AE169BA69EC86A/image-size/medium?v=v2&amp;px=400"
role="button" title="slide_20_Gif.gif" alt="slide_20_Gif.gif"
/></span></P></description>
<pubDate>Sat, 05 Dec 2020 00:16:45 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devdecember-week-1-recap-growth/ba-p/1834826</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2020-12-05T00:16:45Z</dc:date>
...
</item>
<item>
<title>Now That's What I Call .NET 5 on #Dev_Jams</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/now-that-s-what-i-call-net-5-on-dev-jams/ba-p/1942727</link>
<description><P><SPAN data-contrast="auto"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_1.jpg" style="width: 292px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236772iBCD07BFAE035990A/image-dimensions/292x292?v=v2"
width="292" height="292" role="button" title="NOW! DotNET 5 Booklet1024_1.jpg"
alt="NOW! DotNET 5 Booklet1024_1.jpg" /></span></SPAN></P> <P>&nbsp;</P>
<P><SPAN data-contrast="auto">Do you ever have trouble getting into the coding
flow because you just can’t decide what music you want to jam
to?&nbsp;</SPAN><SPAN data-contrast="auto">Well, we have just the playlist for
you: <A href="https://aka.ms/DevJams" target="_self">Now That's What I Call .NET
5!</A>&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">To
help celebrate the release of&nbsp;.NET 5, I reached out to some .NET&nbsp;devs
around the world and asked them&nbsp;about why they love .NET and what their
favorite song to listen to while coding is. With that info, we created
the&nbsp;<A href="https://aka.ms/DevJams"
target="_self">#dev_jams&nbsp;playlist&nbsp;on Spotify</A>&nbsp;and created an
album booklet with our featured tracks/devs! Check it out below and feel free to
download it for yourself at the bottom of the page.&nbsp;</SPAN></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_2.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236771i39E133E83CA7E19E/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_2.jpg" alt="NOW! DotNET 5
Booklet1024_2.jpg" /></span></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_3.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236774iFC245836709EF6BF/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_3.jpg" alt="NOW! DotNET 5
Booklet1024_3.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Scott
Hanselman</STRONG> -&nbsp;<A href="https://twitter.com/shanselman"
target="_self">@shanselman</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_4.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236775i1035CA1B041567D4/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_4.jpg" alt="NOW! DotNET 5
Booklet1024_4.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Amiee
Lo</STRONG> -&nbsp;<A href="https://twitter.com/amiee_lo"
target="_self">@amiee_lo</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_5.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236776iADC6E1A1C341C358/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_5.jpg" alt="NOW! DotNET 5
Booklet1024_5.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Torin
Solarin-Sodara</STRONG> -&nbsp;<A href="https://twitter.com/tonerdo"
target="_self">@tonerdo</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_6.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236777i1791F03E923EFDBC/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_6.jpg" alt="NOW! DotNET 5
Booklet1024_6.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Aida
Crone</STRONG> -&nbsp;<A href="https://twitter.com/aidapsibr"
target="_self">@aidapsibr</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_7.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236778i94A964E9EA2E7B20/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_7.jpg" alt="NOW! DotNET 5
Booklet1024_7.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Rodney
Littles, II</STRONG> -&nbsp;<A href="https://twitter.com/rlittlesii"
target="_self">@rlittiesii</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_8.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236779i7E86C416215E951A/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_8.jpg" alt="NOW! DotNET 5
Booklet1024_8.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Bron
Thulke</STRONG> -&nbsp;<A href="https://twitter.com/_bron_"
target="_self">@_bron_</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_9.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236780i9734174A5C2CBD81/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_9.jpg" alt="NOW! DotNET 5
Booklet1024_9.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Michael
Dera</STRONG> -&nbsp;<A href="https://twitter.com/michaeldera"
target="_self">@michaeldera</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_10.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236781iB95C2302CFB851C2/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_10.jpg" alt="NOW! DotNET 5
Booklet1024_10.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Mark
Rendle</STRONG> -&nbsp;<A href="https://twitter.com/markrendle"
target="_self">@markrendle</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_11.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236782i0444B80025B83FA0/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_11.jpg" alt="NOW! DotNET 5
Booklet1024_11.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Jeremy
Sinclair</STRONG> -&nbsp;<A href="https://twitter.com/sinclairinat0r"
target="_self">@sinclairinat0r</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_12.jpg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236770i6D51F6EC78DA9415/image-size/medium?v=v2&amp;px=400"
role="button" title="NOW! DotNET 5 Booklet1024_12.jpg" alt="NOW! DotNET 5
Booklet1024_12.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><STRONG>Jayme
Singleton</STRONG> -&nbsp;<A href="https://twitter.com/JaymeSingleton1"
target="_self">@jaymesingleton1</A></SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span
class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NOW!
DotNET 5 Booklet1024_13.jpg" style="width: 291px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/236773i3CA5D651269D6656/image-dimensions/291x291?v=v2"
width="291" height="291" role="button" title="NOW! DotNET 5 Booklet1024_13.jpg"
alt="NOW! DotNET 5 Booklet1024_13.jpg" /></span></SPAN></P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">+
a special shout out to <STRONG>Marc Duiker</STRONG> (<A
href="https://twitter.com/marcduiker" target="_self">@marcduiker</A>) for
creating the amazing pixel art!</SPAN></P> <P>&nbsp;</P> <P><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">What
do you think of these featured tracks? Did we miss a song? Let us
know&nbsp;your&nbsp;favorite song&nbsp;by&nbsp;using the hashtag
#dev_jams&nbsp;on Twitter. Happy jamming!</SPAN></P> <P>&nbsp;</P> <P><EM>Also,
just in case you missed it - you can download .NET 5 for Windows, macOS, and
Linux&nbsp;<A href="https://dotnet.microsoft.com/download/dotnet/5.0"
target="_blank" rel="noopener">here.</A>&nbsp;And although&nbsp;<A
href="https://www.dotnetconf.net/" target="_blank" rel="noopener">.NET Conf
2020</A>&nbsp;has wrapped up, you can still catch all the&nbsp;<A
href="https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVWop1HEOml2OdqbDs6IlcI"
target="_blank" rel="noopener">sessions on demand</A>&nbsp;and get a head start
on all the new features that were introduced with .NET 5!</EM></P></description>
<pubDate>Mon, 30 Nov 2020 23:47:33 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/now-that-s-what-i-call-net-5-on-dev-jams/ba-p/1942727</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2020-11-30T23:47:33Z</dc:date>
...
</item>
<item>
<title>Azure Advocates Weekly Round Up - Scaling Events w/ Serverless, Cog
Services, and DevOps Boards</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-scaling-events-w-serverless-cog/ba-p/1928458</link>
<description><P><A href="https://youtu.be/Lg4B_H-t8fY" target="_blank"
rel="noopener">XR Tea Party: BabylonJS &amp; WebXR</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank" rel="noopener">Aysegul
Yonet</A></I></STRONG></P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://youtu.be/Lg4B_H-t8fY" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-cloud-assert/ba-p/1866840?WT.mc_id=modinfra-8958-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series - Cloud
Assert</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>This week,
Tiberiu Radu (Azure Stack Hub PM) and I, had the chance to speak to Azure Stack
Hub Partner Cloud Assert.</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/sustainable-software/how-to-measure-the-power-consumption-of-your-frontend-application/?WT.mc_id=green-8991-ashussai"
target="_blank" rel="noopener">How To Measure The Power Consumption of Your
Frontend Application | Sustainable Software</A><BR /><STRONG><I><A
href="https://twitter.com/jawache" target="_blank" rel="noopener">Asim
Hussain</A></I></STRONG></P> <P>The second principle of Sustainable Software
Engineering is to build energy efficient applications. The very first step in
that direction is to measure the energy your application consumes, also known as
its energy cost. Once you measure or estimate the energy cost of your
application,</P> <P>&nbsp;</P> <P><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Browse content tagged with "Cloud Adoption
Framework Series" on Channel 9.</P> <P>&nbsp;</P> <P><A
href="https://cloud-days.jfrog.com/microsoft-azure/" target="_blank"
rel="noopener">DevOps Cloud Days, Day 3, Nov 18, 2020 - JFrog &amp; Microsoft
Azure</A><BR /><STRONG><I><A href="https://twitter.com/jldeen" target="_blank"
rel="noopener">Jessica Deen</A></I></STRONG></P> <P>Join JFrog and Microsoft
Azure to learn about integrations and future development. Secure your
applications and modernize your business.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/lazerwalker/scaling-an-online-virtual-world-with-serverless-tech-4pfo"
target="_blank" rel="noopener">Scaling an Online Virtual World with Serverless
Tech</A><BR /><STRONG><I><A href="https://twitter.com/lazerwalker"
target="_blank" rel="noopener">Em Lazer-Walker</A></I></STRONG></P> <P>I help
run an annual game design conference called Roguelike Celebration. Naturally,
this year we wer...</P> <P>&nbsp;</P> <P><A
href="http://aka.ms/datadog-azureiot" target="_blank" rel="noopener">Monitoring
IoT systems from edge to cloud with Datadog</A><BR /><STRONG><I><A
href="https://twitter.com/pjdecarlo" target="_blank" rel="noopener">Paul
DeCarlo</A></I></STRONG></P> <P>Microsoft Azure has a strong and active
partnership with Datadog , the leading cloud-based monitoring and observability
platform. Recently, Datadog and</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/staticWebAppPRWorkflowForAppServicePt2" target="_blank"
rel="noopener">Static Web App PR Workflow for Azure App Service using Azure
DevOps Pt 2 (But what if my code is in GitHub) | Azure DevOps Blog</A><BR
/><STRONG><I><A href="https://twitter.com/AbelSquidHead" target="_blank"
rel="noopener">Abel Wang</A></I></STRONG></P> <P>Static Web App PR Workflow for
Azure App Service using Azure DevOps Pt 2 (But what if my code is in GitHub) In
part 1 (Static Web App PR Workflow for Azure App Service), I walked you you
through how to set up that sweet pull request workflow for Static Web Apps for
your app if your app was: hosted in Azure App Service your code in Azure Repos
your CI pipeline in Azure Pipelines.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-devops-boards-and-excel/ba-p/1850371?WT.mc_id=modinfra-10509-salean"
target="_blank" rel="noopener">Azure DevOps Boards and Excel!</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank"
rel="noopener">Sarah Lean</A></I></STRONG></P> <P>Use Excel to help manage your
Azure DevOps Board items!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-new-priority-account-capabilities-in-microsoft-365/ba-p/1908148?WT.mc_id=modinfra-10527-abartolo"
target="_blank" rel="noopener">AzUpdate: New Priority Account capabilities in
Microsoft 365, Bastion and Vnet peering, and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>Another busy week for cloud services at
Microsoft.&nbsp; Here are the news items the team at AzUpdate are covering this
week: New Priority Account capabilities now available in Microsoft
365,&nbsp;Azure Bastion and VNet peering can be used together,&nbsp;New
integrations between GitHub and Azure Policy allow for better manage policy
definitions and assignments,&nbsp;New constrained vCPUs capable VMs now
available and of course the Microsoft Learn module of the week.</P>
<P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-create-a-windows-server-2019-nas-fileserver-from-the/ba-p/1893837?WT.mc_id=modinfra-10555-rclaus"
target="_blank" rel="noopener">HOW TO: Create a Windows Server 2019 NAS /
FileServer from the command line</A><BR /><STRONG><I><A
href="https://twitter.com/RicksterCDN" target="_blank" rel="noopener">Rick
Claus</A></I></STRONG></P> <P>Windows Server 2019 default install has no GUI or
Desktop. How do you go about setting this thing up from the command line? In
this post I give you the How To on how to setup a simple File Server to replace
an old NAS device that was failing in my home lab. We're talking PowerShell to
configure Storage Spaces, User Accounts, SMB Shares, Power Profiles and
more!&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/control-holiday-lights-with-python-azure-iot-and-power-apps-2ic6"
target="_blank" rel="noopener">Control holiday lights with Python, Azure IoT and
Power Apps</A><BR /><STRONG><I><A href="https://twitter.com/jimbobbennett"
target="_blank" rel="noopener">Jim Bennett</A></I></STRONG></P> <P>No more
controlling your holiday lights by hand - instead use IoT and a no-code mobile
app!. Tagged with pythonfunbites, azure, python, iot.</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/azure-stack-hub-partner-solutions-series-cloud-assert/"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series – Cloud
Assert</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>This week,
Tiberiu Radu (Azure Stack Hub PM <LI-USER uid="433488"></LI-USER>) and I, had
the chance to speak to Azure Stack Hub Partner Cloud Assert.</P> <P>&nbsp;</P>
<P><A
href="https://dev.to/azure/azurefunbytes-episode-21-azure-security-with-deanbryen-1kdf"
target="_blank" rel="noopener">AzureFunBytes - Episode 21 - @Azure Security with
@deanbryen</A><BR /><STRONG><I><A href="https://twitter.com/jaydestro"
target="_blank" rel="noopener">Jay Gordon</A></I></STRONG></P> <P>Security is
always the primary concern for those deploying applications into the cloud. This
week on... Tagged with azure, security, tutorial, beginners.</P> <P>&nbsp;</P>
<P><A
href="https://dev.to/azure/translating-text-with-just-a-few-lines-of-code-using-azure-cognitive-services-4fao"
target="_blank" rel="noopener">Translating text with just a few lines of code
using Azure Cognitive Services</A><BR /><STRONG><I>Christopher
Harrison</I></STRONG></P> <P>This article is part of #PythonFunBites. An old
co-worker of mine is fond of saying "we're not launc... Tagged with pythonbites,
azure, python, ai.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/getting-started-with-web-dev-using-flask-44l5"
target="_blank" rel="noopener">Getting started with web dev using Flask</A><BR
/><STRONG><I>Christopher Harrison</I></STRONG></P> <P>This article is part of
#PythonFunBites. There's a lot of different web dev frameworks out there, an...
Tagged with pythonfunbites, python, flask, webdev.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/setup-azure-shell-locally-of-on-a-local-network-part-2/ba-p/1883237?WT.mc_id=modinfra-10876-pierrer"
target="_blank" rel="noopener">Set up Azure Shell locally - part 2</A><BR
/><STRONG><I><A href="https://twitter.com/WiredCanuck" target="_blank"
rel="noopener">Pierre Roman</A></I></STRONG></P> <P>Azure Cloud Shell running in
Visual Studio Code - differences with VS Code.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/working-with-jupyter-notebooks-in-visual-studio-code-5130"
target="_blank" rel="noopener">Working with Jupyter Notebooks in Visual Studio
Code</A><BR /><STRONG><I><A href="https://twitter.com/paladique" target="_blank"
rel="noopener">Jasmine Greenaway</A></I></STRONG></P> <P>How to use Jupyter
Notebooks in Visual Studio Code. Tagged with pythonfunbites, azure, python.</P>
<P>&nbsp;</P> <P><A href="https://aka.ms/WhatsNewOct2020" target="_blank"
rel="noopener">What's New in Azure DevOps Docs For October? | Azure DevOps
Blog</A><BR /><STRONG><I><A href="https://twitter.com/AbelSquidHead"
target="_blank" rel="noopener">Abel Wang</A></I></STRONG></P> <P>What’s new for
October1, 2020 – October 31, 2020 Hey hey! New docs have dropped for Azure
DevOps for the month of October. What has changed? Oh, just things like… Delete
and recover packages Remove, delete, or restore work items Use the
Cross-platform CLI for Azure DevOps using personal access tokens (PATs) …and
much more!</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/devops/azurefunbytes-short-azure-containers-kubernetes-container-instances-more/?WT.mc_id=devops-11004-jagord"
target="_blank" rel="noopener">AzureFunBytes Short - Azure Containers
(Kubernetes, Container Instances, More) | Azure DevOps Blog</A><BR
/><STRONG><I><A href="https://twitter.com/jaydestro" target="_blank"
rel="noopener">Jay Gordon</A></I></STRONG></P> <P>Containers provide an easy way
to run batch jobs without having to manage an environment and dependencies.
Dynamic compute options, such as Azure Container Instances (ACI), can be used to
efficiently ingest source data, process it, and place it in a durable store such
as Azure Blob storage.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/the-python-community-is-stronger-together-1anl"
target="_blank" rel="noopener">The Python Community is Stronger Together</A><BR
/><STRONG><I><A href="https://twitter.com/nnja" target="_blank"
rel="noopener">Nina Zakharenko</A></I></STRONG></P> <P>Some thoughts on how to
stay connected with the Python Community in 2020.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/microsoft-365/blogs/microsoft-365-pnp-weekly-episode-105/?WT.mc_id=m365-11044-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 105 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I><A
href="https://twitter.com/waldekm" target="_blank" rel="noopener">Waldek
Mastykarz</A></I></STRONG></P> <P>Connect to the latest conferences, trainings,
and blog posts for Microsoft 365, Office client, and SharePoint developers. Join
the Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/AAacwbq" target="_blank" rel="noopener">Microsoft
Autonomous Driving Startups Program</A><BR /><STRONG><I><A
href="https://twitter.com/adipolak" target="_blank" rel="noopener">Adi
Polak</A></I></STRONG></P> <P>Join us for an exceptional conversation with
Aditya from the Microsoft Autonomous Driving program. Aditya shares the trends
in Autonomous Driving, what startups are building, how Microsoft can help,</P>
<P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/lisa-at-the-edge-podcast-thomas-maurer-career-development-azure-arc/"
target="_blank" rel="noopener">Lisa At The Edge Podcast – Thomas Maurer – Career
Development &amp; Azure Arc</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank" rel="noopener">Thomas
Maurer</A></I></STRONG></P> <P>Lisa At The Edge Podcast - Thomas Maurer - Career
Development &amp; Azure Arc we talked about Azure Arc and Azure Hybrid
Cloud!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/educator-developer-blog/control-holiday-lights-with-python-azure-iot-and-power-apps/ba-p/1903902?WT.mc_id=academic-11204-jabenn"
target="_blank" rel="noopener">Control holiday lights with Python, Azure IoT and
Power Apps</A><BR /><STRONG><I><A href="https://twitter.com/jimbobbennett"
target="_blank" rel="noopener">Jim Bennett</A></I></STRONG></P> <P>As the
December holiday season descends, some cultures celebrate with lights, where's
other folks have breaks from school and are looking for a fun</P>
<P>&nbsp;</P></description>
<pubDate>Tue, 24 Nov 2020 20:53:45 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-scaling-events-w-serverless-cog/ba-p/1928458</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-11-24T20:53:45Z</dc:date>
...
</item>
<item>
<title>Join us for #SeasonsOfServerless - our festive developer
challenge!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/join-us-for-seasonsofserverless-our-festive-developer-challenge/ba-p/1901451</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="A Festive Serverless Developer Challenge:
https://aka.ms/SeasonsOfServerless" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/234428i9ABC3E942072A5ED/image-size/large?v=v2&amp;px=999"
role="button" title="chalkboard.gif" alt="A Festive Serverless Developer
Challenge: https://aka.ms/SeasonsOfServerless" /><span
class="lia-inline-image-caption" onclick="event.preventDefault();">A Festive
Serverless Developer Challenge:
https://aka.ms/SeasonsOfServerless</span></span></P> <P>&nbsp;</P>
<P><STRONG><FONT color="#FF0000">Check out the first challenge right now:</FONT>
<BR /><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/Nov-23-2020.md"
target="_self">"The Perfect Holiday Turkey"</A> on the<A
href="https://aka.ms/SeasonsOfServerless" target="_self"> Seasons Of Serverless
Website</A>!&nbsp;</STRONG></P> <P>&nbsp;</P> <P><FONT size="6"><FONT
size="7">#SeasonsOfServerless</FONT>&nbsp;</FONT></P> <P>&nbsp;</P> <P><FONT
size="6">An Azure Advocates Festive Developer Challenge!</FONT></P> <P><FONT
size="4"><SPAN class="TextRun SCXW29597693 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW29597693 BCX8">The<SPAN>&nbsp;</SPAN></SPAN></SPAN><A
class="Hyperlink SCXW29597693 BCX8" href="https://twitter.com/azureadvocates"
target="_blank" rel="noreferrer noopener"><SPAN class="TextRun Underlined
SCXW29597693 BCX8" data-contrast="none"><SPAN class="NormalTextRun SCXW29597693
BCX8" data-ccp-charstyle="Hyperlink">Azure Advocates</SPAN></SPAN></A><SPAN
class="TextRun SCXW29597693 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW29597693 BCX8">&nbsp;have teamed up
with<SPAN>&nbsp;</SPAN></SPAN></SPAN><A class="Hyperlink SCXW29597693 BCX8"
href="https://studentambassadors.microsoft.com/" target="_blank" rel="noreferrer
noopener"><SPAN class="TextRun Underlined SCXW29597693 BCX8"
data-contrast="none"><SPAN class="NormalTextRun SCXW29597693 BCX8"
data-ccp-charstyle="Hyperlink">Microsoft Student
Ambassadors</SPAN></SPAN></A><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693
BCX8"><SPAN>&nbsp;</SPAN>around the world for a new multi-week
series<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693 BCX8">of developer
challenges – just in time for the festive holiday season!!! Join us as we travel
the globe in search of popular festive recipes for our
virtual<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693
BCX8">potluck</SPAN></SPAN><SPAN class="TextRun SCXW29597693 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW29597693
BCX8"><SPAN>&nbsp;</SPAN>– and find intriguing ways to tackle each chef’s
challenges with our time-tested serverless recipes!</SPAN></SPAN><SPAN
class="EOP SCXW29597693 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG><FONT size="5"><SPAN class="TextRun
MacChromeBold SCXW223924860 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW223924860 BCX8">WHAT IS THE CHALLENGE
ABOUT?</SPAN></SPAN><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></STRONG></P>
<P><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW250697636 BCX8" data-contrast="none"><SPAN
class="NormalTextRun SCXW250697636 BCX8" data-ccp-parastyle="Quote"><STRONG><BR
/><FONT size="4">Origin Story:<BR /></FONT><BR
/></STRONG></SPAN></SPAN></SPAN></P> <P
class="lia-indent-padding-left-30px"><EM>Mes chers amis,</EM></P> <P
class="lia-indent-padding-left-30px"><EM>Every year, we all look forward to our
annual holiday potluck. From jollof rice all across West Africa to Indian ladoos
to celebrate Diwali, sharing our favorite foods and traditions is our favorite
part of the season!</EM></P> <P class="lia-indent-padding-left-30px"><EM>Of
course, we know that's not possible this year, so we've come up with an
alternative: a virtual code challenge potluck! Each week, someone in our
community is going to post a unique code challenge exploring a recipe and a food
for all of our friends to solve. It may not be the same as breaking bread
in-person or smelling and tasting your flavorful creations, but hopefully these
delectable brain-teasers can still give us a taste of each other's
traditions.</EM></P> <P class="lia-indent-padding-left-30px"><EM>Grosses bises,
Dominique et Simone</EM></P> <P>&nbsp;</P> <P><FONT size="4"><STRONG><SPAN
class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW250697636 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559685&quot;:864,&quot;335559737&quot;:864,&quot;335559738&quot;:200,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">The
Mission:<BR /></SPAN></SPAN></STRONG><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW250697636 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559685&quot;:864,&quot;335559737&quot;:864,&quot;335559738&quot;:200,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW190509864 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW190509864 BCX8">Our intrepid chefs (and challenge
creators) quickly realized that making these dishes requires a little help
–&nbsp;</SPAN></SPAN></SPAN></SPAN><SPAN class="EOP SCXW223924860 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="EOP SCXW250697636 BCX8"
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559685&quot;:864,&quot;335559737&quot;:864,&quot;335559738&quot;:200,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><SPAN
class="TextRun SCXW190509864 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW190509864 BCX8">and&nbsp;</SPAN></SPAN><SPAN
class="TextRun SCXW190509864 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW190509864 BCX8">they think serverless fits the bill
quite nicely!</SPAN></SPAN></SPAN></SPAN></FONT></P> <P><FONT size="4"><A
href="https://aka.ms/SeasonsOfServerless"
target="_self">#SeasonsOfServerless</A> follows on the footsteps of last year's
popular <A
href="https://dev.to/azure/25-days-of-serverless-content-collection-3baj/comments"
target="_self">#25DaysOfServerless</A> challenge. This year, we wanted to give
you more time to enjoy each challenge so we spaced them out - a challenge a week
starting November end, and going through the holidays into the new
year!</FONT></P> <P>&nbsp;</P> <P><FONT size="4">And our first challenge is
already out! Hear all about it from the amazing Student Ambassadors and Cloud
Advocates who .. ahem .. cooked it up!</FONT></P> <P>&nbsp;</P> <P><FONT
size="4"><LI-VIDEO vid="https://youtu.be/BCbG50Zhw0Y" align="center"
size="custom" width="643" height="643" uploading="false"
thumbnail="https://i.ytimg.com/vi/BCbG50Zhw0Y/hqdefault.jpg"
external="url"></LI-VIDEO></FONT></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT
size="5"><STRONG><SPAN data-contrast="auto">HOW CAN YOU
PARTICIPATE?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<UL> <LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="1" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Visit the&nbsp;</SPAN><A
href="https://aka.ms/SeasonsOfServerless" target="_blank" rel="noopener"><SPAN
data-contrast="none">Seasons Of Serverless</SPAN></A><SPAN
data-contrast="auto">&nbsp;website</SPAN><SPAN data-contrast="auto">&nbsp;and
familiarize yourself with the&nbsp;</SPAN><A
href="https://github.com/microsoft/seasons-of-serverless#rules" target="_blank"
rel="noopener"><SPAN data-contrast="none">Rules</SPAN></A><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="2" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Revisit the site each week to&nbsp;</SPAN><SPAN
data-contrast="auto">uncover</SPAN><SPAN data-contrast="auto">&nbsp;</SPAN><A
href="https://github.com/microsoft/seasons-of-serverless#first-challenge-november-23rd"
target="_blank" rel="noopener"><SPAN data-contrast="none">a new coding
challenge</SPAN></A><SPAN data-contrast="auto">&nbsp;and&nbsp;</SPAN><SPAN
data-contrast="auto">recipe</SPAN><SPAN data-contrast="auto">!</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="3" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Solve the challenge within the week – we have a
handy&nbsp;</SPAN><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/RESOURCES.md"
target="_blank" rel="noopener"><SPAN
data-contrast="none">Resources</SPAN></A><SPAN data-contrast="auto">&nbsp;page
to help you!</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="4" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Submit your solution as a&nbsp;</SPAN><A
href="https://github.com/microsoft/seasons-of-serverless#submit-your-solution-as-a-custom-ISSUE-to-our-repository"
target="_blank" rel="noopener"><SPAN data-contrast="none">tagged
issue&nbsp;</SPAN><SPAN data-contrast="none">on</SPAN><SPAN
data-contrast="none">&nbsp;the repo</SPAN></A><SPAN
data-contrast="auto">.</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
<LI data-leveltext="" data-font="Symbol" data-listid="1" aria-setsize="-1"
data-aria-posinset="5" data-aria-level="1"><FONT size="4"><SPAN
data-contrast="auto">Celebrate!! (Qualifying solutions will earn you a spot on
the&nbsp;</SPAN><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/CONTRIBUTORS.md"
target="_blank" rel="noopener"><SPAN data-contrast="none">Contributors Hall of
Fame</SPAN></A><SPAN data-contrast="auto">!)</SPAN><SPAN
data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;335559991&quot;:360}">&nbsp;</SPAN></FONT></LI>
</UL> <P><FONT size="4"><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P>&nbsp;</P> <P><FONT size="5"><STRONG><SPAN data-contrast="auto">WHY ARE WE
DOING THIS?</SPAN></STRONG><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P><FONT size="4"><A href="https://aka.ms/SeasonsOfServerless" target="_blank"
rel="noopener"><SPAN data-contrast="none">#SeasonsOfServerless</SPAN></A><SPAN
data-contrast="none">&nbsp;follows&nbsp;</SPAN><SPAN
data-contrast="none">in</SPAN><SPAN data-contrast="none">&nbsp;t</SPAN><SPAN
data-contrast="none">he footsteps of&nbsp;</SPAN><SPAN
data-contrast="none">our</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><SPAN
data-contrast="none">2019</SPAN><SPAN data-contrast="none">&nbsp;</SPAN><A
href="https://dev.to/azure/25-days-of-serverless-content-collection-3baj/comments"
target="_blank" rel="noopener"><SPAN
data-contrast="none">#25DaysOfServerless</SPAN></A><SPAN
data-contrast="none">&nbsp;challenge.</SPAN><SPAN
data-contrast="none">&nbsp;</SPAN><SPAN data-contrast="none">We
realized&nbsp;</SPAN><SPAN data-contrast="none">that developers not only enjoyed
solving the code puzzles,&nbsp;</SPAN><SPAN data-contrast="none">but
they</SPAN><SPAN data-contrast="none">&nbsp;al</SPAN><SPAN
data-contrast="none">so loved learning about festive customs and cultures around
the world.</SPAN><SPAN data-contrast="none">&nbsp;However, the challenge-a-day
pace is not holiday-friendly. So, this year we’re spacing them out</SPAN><SPAN
data-contrast="none">&nbsp;a little more</SPAN><SPAN
data-contrast="none">&nbsp;–&nbsp;</SPAN><SPAN data-contrast="none">with one
challenge a wee</SPAN><SPAN data-contrast="none">k starting Nov 23
and&nbsp;</SPAN><SPAN data-contrast="none">continuing&nbsp;</SPAN><SPAN
data-contrast="none">into the New Year!&nbsp;</SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P><FONT size="4"><SPAN data-contrast="none"><BR /><STRONG>Let’s Do
This!!</STRONG> :flexed_biceps:</img></SPAN><SPAN
data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></FONT></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG><FONT color="#FF0000">Check out the first
challenge right now:</FONT> <BR /><A
href="https://github.com/microsoft/Seasons-of-Serverless/blob/main/Nov-23-2020.md"
target="_self">"The Perfect Holiday Turkey"</A> on the<A
href="https://aka.ms/SeasonsOfServerless" target="_self"> Seasons Of Serverless
Website</A>!&nbsp;</STRONG></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="The
Perfect Turkey - #SeasonsOfServerless" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235566iD57D5BAE1D8E61F2/image-size/large?v=v2&amp;px=999"
role="button" title="banner-1.png" alt="The Perfect Turkey -
#SeasonsOfServerless" /><span class="lia-inline-image-caption"
onclick="event.preventDefault();">The Perfect Turkey -
#SeasonsOfServerless</span></span></P> <P>&nbsp;</P></description>
<pubDate>Tue, 24 Nov 2020 18:01:25 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/join-us-for-seasonsofserverless-our-festive-developer-challenge/ba-p/1901451</guid>
<dc:creator>nityan</dc:creator>
<dc:date>2020-11-24T18:01:25Z</dc:date>
...
</item>
<item>
<title>The Developer Wish List - #DevDecember</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-developer-wish-list-devdecember/ba-p/1796670</link>
<description><P><SPAN><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Blog-images_week0_Devwishlist.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233828iA2DDF9EF2DD69C39/image-size/large?v=v2&amp;px=999"
role="button" title="Blog-images_week0_Devwishlist.png"
alt="Blog-images_week0_Devwishlist.png" /></span></SPAN></P> <P>&nbsp;</P>
<P>For many of us around the world, the holiday season is right around the
corner!</P> <P>&nbsp;</P> <P>You may find yourself struggling what gift to get
for your friends and family. Chances are that they will want some ideas for you
too! My family certainly does, and I have to come up with twice as many ideas
since my birthday is also in December!&nbsp;<img class="lia-deferred-image
lia-image-emoji"
src="https://techcommunity.microsoft.com/html/@0277EEB71C55CDE7DB26DB254BF2F52B/images/emoticons/laugh_40x40.gif"
alt=":lol:" title=":lol:" /></P> <P>&nbsp;</P> <P>This inspired me to reach out
to a few of my techy friends to ask what product would be at the top of their
wish list if they didn't already own it. The result? An awesome mix of geeky
gadgets and some products that are just for fun.</P> <P>&nbsp;</P> <P><FONT
color="#FF0000"><EM>Please note: This list is not an endorsement&nbsp;of any
product nor are we getting compensated for any of this. It's all just for fun!
</EM></FONT></P> <P>&nbsp;</P> <P><FONT size="4"><STRONG>1. A copy of <A
href="https://smile.amazon.com/GitHub-Dummies-Guthals/dp/1119572673/ref=smi_www_rco2_go_smi_4368549507?_encoding=UTF8&amp;dchild=1&amp;ie=UTF8&amp;keywords=github&amp;qid=1605222110&amp;s=books&amp;sr=1-2"
target="_blank" rel="noopener">GitHub for Dummies</A> that'll come in handy
whether you are looking to learn more about GitHub or want a useful gift to
inspire a new developer!</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_0-1606106903865.jpeg" style="width: 233px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235499i5DFA77250258B13C/image-dimensions/233x291?v=v2"
width="233" height="291" role="button" title="livelovegeek_0-1606106903865.jpeg"
alt="livelovegeek_0-1606106903865.jpeg" /></span></P> <P>&nbsp;</P>
<P><STRONG>Review: </STRONG><EM>"GitHub is the largest open source community and
with the knowledge of how to use GitHub, it opens the doors for folks to
contribute to open source projects, collaborate with people on their own
projects, and learn from others. I co-wrote this book with Phil Haack because we
believe that everyone should have the opportunity to join communities that
matter to them. I love that this book not only introduces GitHub features, but
also Git on the command line AND how to continue to engage in communities
outside of GitHub through conferences and events." </EM>– <STRONG>Dr. Sarah
Guthals, <A href="https://twitter.com/drguthals" target="_blank"
rel="noopener">@drguthals</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT
size="4"><STRONG>2. Whether you are new to coding or a seasoned pro, the <A
href="https://www.raspberrypi.org/products/raspberry-pi-400/" target="_blank"
rel="noopener">Raspberry Pi 400</A> is bound to bring out your inner
geek!</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_1-1606106903899.jpeg" style="width: 309px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235501i239AD06CBC989599/image-dimensions/309x214?v=v2"
width="309" height="214" role="button" title="livelovegeek_1-1606106903899.jpeg"
alt="livelovegeek_1-1606106903899.jpeg" /></span></P> <P>&nbsp;</P>
<P><STRONG>Review: </STRONG><EM>"The Raspberry Pi 400 should be on everyone's
wishlist! It's a Raspberry Pi in a keyboard similar to the computers I grew up
with like the ZX Spectrum. Just plug in a mouse and TV and away you go! Another
bonus? It runs VS Code natively!</EM><EM>" </EM>– <STRONG>Jim Bennett, <A
href="https://twitter.com/jimbobbennett" target="_blank"
rel="noopener">@jimbobbennett</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><FONT size="4"><STRONG>3. An <A
href="https://instantpot.com/portfolio-item/duo-gourmet/" target="_blank"
rel="noopener">Instant Pot</A> that essentially cooks your food for you don’t
have to order takeout food for the 6<SUP>th</SUP> time this week
;)</img></STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_2-1606106903912.jpeg" style="width: 276px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235500iFAD09C6065A541B0/image-dimensions/276x276?v=v2"
width="276" height="276" role="button" title="livelovegeek_2-1606106903912.jpeg"
alt="livelovegeek_2-1606106903912.jpeg" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"Working from home can be hard. We may find ourselves working weird
hours and extra to achieve the same level of productivity, and still wanting to
eat healthy and home-cooked food. That's when an Instant Pot may come handy. It
is a pressure-cooker and slow-cooker in one device. I have found it especially
useful during those long days when I have lacked motivation to cook. Just put
your ingredients in the pot and fire-and-forget. I have enjoyed making
vegetables, meat stews and lentils in my Instant Pot." </EM>– <STRONG>Orko
Momin, <A href="https://twitter.com/orktopus" target="_blank"
rel="noopener">@orktopus</A></STRONG></P> <P><STRONG>&nbsp;</STRONG></P>
<P>&nbsp;</P> <P><FONT size="4"><STRONG>4. The <A
href="https://www.hanselman.com/blog/the-perfect-nintendo-switch-travel-set-up-and-recommended-accessories"
target="_blank" rel="noopener">Scott Hanselman recommended ‘Nintendo Switch
Travel Pack’</A> that will get you set up for gaming on the road or on the
couch</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_3-1606106903935.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235502i5D31C2417C074B19/image-size/medium?v=v2&amp;px=400"
role="button" title="livelovegeek_3-1606106903935.jpeg"
alt="livelovegeek_3-1606106903935.jpeg" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"I've had a Nintendo Switch since launch day and let me tell you,
it's joyful. Joyous. It's a little joy device. I love 4k Xboxen and raw power as
much as the next Jane or Joe Gamer, but the Switch just keeps pumping out happy
games. Indie games, Metroidvania games like Axiom Verge, Legend of Zelda: Breath
of the Wild (worth the cost of the system) and now, super Mario Odyssey. Even
Doom and Wolfenstein 2 are coming to the Switch soon! I've travelled already
with my Switch all over. <A
href="https://www.hanselman.com/blog/the-perfect-nintendo-switch-travel-set-up-and-recommended-accessories"
target="_blank" rel="noopener">Here's</A> what I've come up with for my travels
- and my at-home Switch Experience. I owe and use these items personally - and I
vouch for their awesomeness and utility.” </EM>– <STRONG>Scott Hanselman, <A
href="https://twitter.com/shanselman" target="_blank"
rel="noopener">@shanselman</A></STRONG></P> <P><STRONG>&nbsp;</STRONG></P>
<P>&nbsp;</P> <P><FONT size="4"><STRONG>5. An Italian chopping knife - aka a
<EM><A
href="https://www.williams-sonoma.com/products/open-kitchen-by-williams-sonoma-mezzaluna/?sku=9031067"
target="_blank" rel="noopener">Mezzaluna</A></EM> - to cook up something
delicious after a long day of coding. Buon appetito!</STRONG></FONT></P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="livelovegeek_4-1606106904111.png"
style="width: 276px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235504iB7CA9939EB870B7B/image-dimensions/276x248?v=v2"
width="276" height="248" role="button" title="livelovegeek_4-1606106904111.png"
alt="livelovegeek_4-1606106904111.png" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"For all the lovers of Italian food, this curiously-shaped knife
(mezzaluna means half-moon) is perfect for chopping vegetables and making that
perfect soffritto for your ragù, meatballs, or my personal favorite, my mom's
famous risotto! Sorry – the recipe is top secret.</EM><EM>” </EM>–
<STRONG>Alessandro Segala, </STRONG><A href="https://twitter.com/ItalyPaleAle"
target="_blank" rel="noopener"><STRONG>@ItalyPaleAle</STRONG></A></P>
<P>&nbsp;</P> <P>&nbsp;</P> <P><FONT size="4"><STRONG>6. An <A
href="https://www.elgato.com/en/gaming/stream-deck-xl" target="_blank"
rel="noopener">Elgato Stream Deck</A> to help you start or step-up your
streaming game</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_5-1606106904184.png" style="width: 315px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235503iA8E42DC086C13C03/image-dimensions/315x248?v=v2"
width="315" height="248" role="button" title="livelovegeek_5-1606106904184.png"
alt="livelovegeek_5-1606106904184.png" /></span></P> <P><BR /><STRONG>Review:
</STRONG><EM>"The Stream Deck is a small programmable external keyboard with LCD
buttons that comes with an initial configuration to help live-video streamers
run their shows without having to change applications, type, or move their
mouse. It can help you by automating interactions with Open Broadcaster Software
(OBS), play sounds, launch applications, manage media player applications, send
key strokes, and interact with services like Twitter, Twitch, and YouTube.&nbsp;
There are built-in tools to run a whole series of these actions with a single
button push, and every button can have a custom blog of text or image to
represent its functionality. Developers LOVE the stream deck because it is very
extensible through a WebSocket API using JavaScript, HTML, or even C# to build
plugins that will allow you to create animations, macros, and interactions with
your favorite tools.&nbsp; We’ve seen folks set up buttons to start and stop
applications as well as to automate features in their favorite development
tools.</EM><EM>” </EM>– <STRONG>Jeff Fritz, <A
href="https://twitter.com/csharpfritz" target="_blank"
rel="noopener">@csharpfritz</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><FONT size="4"><STRONG>7. A good ole’ fashion <A
href="https://smile.amazon.com/gp/product/B01M1AIV31" target="_blank"
rel="noopener">fountain pen</A> that’ll make you actually want to write out your
to-do list</STRONG></FONT></P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="livelovegeek_6-1606106904197.png"
style="width: 255px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235505i2EB3BD28378BEECE/image-dimensions/255x246?v=v2"
width="255" height="246" role="button" title="livelovegeek_6-1606106904197.png"
alt="livelovegeek_6-1606106904197.png" /></span></P>
<P><STRONG>Review:</STRONG><EM> “I love the way a solid, old-school, pen compels
me to write things down. Because I like writing with the pen so much, I started
evaluating my days in a <A
href="https://bestself.co/collections/journals-planners/products/self-journal"
target="_blank" rel="noopener">Self Journal</A> even planning what I want to
accomplish the next day. It's been semi-therapeutic as well during our funky
pandemic time where everything seems to roll together oddly: this helps me see
progress and helps with purpose.</EM><EM>” </EM>– <STRONG>Seth Juarez, <A
href="https://twitter.com/sethjuarez" target="_blank"
rel="noopener">@sethjuarez</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT
size="4"><STRONG>8. A <A
href="https://smile.amazon.com/dp/B07PZL6798/ref=cm_sw_r_cp_apa_fabt1_ui2SFbS2RM9XE?pldnSite=1"
target="_blank" rel="noopener">mini handheld fan</A> that is perfect for
maker/DIY projects or even just to cool you down during never-ending
meetings&nbsp;</STRONG></FONT></P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="livelovegeek_7-1606106904280.png" style="width: 264px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235506iE3FC30F118B5EFB9/image-dimensions/264x237?v=v2"
width="264" height="237" role="button" title="livelovegeek_7-1606106904280.png"
alt="livelovegeek_7-1606106904280.png" /></span></P> <P><BR
/><STRONG>Review:</STRONG><EM> “This fan has been one of my favorite recent
purchases! Not only does it keep me cool/give me wind-swept music video hair
while on streams/Teams meetings, but I use it around the house, too! I recently
put together a maker cabinet (for all my crafts, IoT projects, etc), and this
fan has solved the problem of waiting for paint/glue/soldering projects to dry
and cool. The wrapping stand also makes it easy to clamp onto whatever surface
(computer/desk/DIY station) you need!” </EM>– <STRONG>Chloe Condon, <A
href="https://twitter.com/ChloeCondon" target="_blank"
rel="noopener">@ChloeCondon</A></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P>
<P><FONT size="4"><STRONG>9. A <A
href="https://smile.amazon.com/ORORO-Womens-Lightweight-Heated-Battery/dp/B083LLS47W/ref=sr_1_1_sspa"
target="_blank" rel="noopener">heated vest</A> to keep you warm during the cold
months of the year or on your next plane ride (whenever that may be)
</STRONG></FONT></P> <P><BR /><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="livelovegeek_8-1606106904443.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/235507iE9A96D9A931563FC/image-size/medium?v=v2&amp;px=400"
role="button" title="livelovegeek_8-1606106904443.png"
alt="livelovegeek_8-1606106904443.png" /></span></P> <P>&nbsp;</P>
<P><STRONG>Review:</STRONG><EM> “Back a long, long, time ago - when I was still
traveling by plane on a frequent basis (aka up until January 2020) - I saw a
woman wearing a glowing vest while waiting for her luggage, so naturally, I had
to ask her about it. I wrote down the brand and ordered one for myself while I
waited for my ride. The vest is cute, good quality, and most importantly, warm.
It has three different heat levels and the battery lasts for hours on a single
charge (the battery can also double as a portable USB charger). The vest comes
in men’s and women’s styles and the company makes other heated products too like
sweatshirts, parkas, gloves, and yes, even socks. So, if you are perpetually
cold like me, or know someone who is, I highly recommend checking these out!”
</EM>– Morgan Mitchell Bell, <A href="https://twitter.com/livelovegeek"
target="_blank" rel="noopener">@livelovegeek</A>&nbsp;</P> <P>&nbsp;</P> <P>So,
that's it! What caught your attention? Is there anything that you'd add to this
list? Let us know in the comments below!</P> <P>&nbsp;</P> <P>Oh, and while
you're here, make sure you follow along with <A
href="https://twitter.com/search?q=%23DevDecember&amp;src=typed_query"
target="_blank" rel="noopener">#DevDecember on Twitter</A>. We will be sharing
cool content, fun activities, and more throughout the month of December. If you
want a sneak peek of some of the fun we are planning, check out our <STRONG><A
href="https://aka.ms/DevDecember20Home" target="_self">#DevDecember
homepage</A></STRONG> (plus, we've already posted some of the digital swag
🤫).</P></description>
<pubDate>Mon, 23 Nov 2020 18:35:21 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/the-developer-wish-list-devdecember/ba-p/1796670</guid>
<dc:creator>livelovegeek</dc:creator>
<dc:date>2020-11-23T18:35:21Z</dc:date>
...
</item>
<item>
<title>Azure Advocates Weekly Round Up - Web Developers Beginner
Curriculum!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-web-developers-beginner/ba-p/1891137</link>
<description><H1><A href="https://github.com/microsoft/Web-Dev-For-Beginners"
target="_self">Web Development for Beginners now available!</A></H1>
<P><SPAN>Azure Cloud Advocates at Microsoft are pleased to offer a 12-week,
24-lesson curriculum all about JavaScript, CSS, and HTML basics. Each lesson
includes pre- and post-lesson quizzes, written instructions to complete the
lesson, a solution, an assignment and more. Our project-based pedagogy allows
you to learn while building, a proven way for new skills to 'stick'.</SPAN></P>
<P>&nbsp;</P> <P><SPAN>See more at:&nbsp;<A
href="https://github.com/microsoft/Web-Dev-For-Beginners"
target="_self">https://github.com/microsoft/Web-Dev-For-Beginners</A></SPAN></P>
<P>&nbsp;</P> <P><FONT size="5"><SPAN>Content Round Up</SPAN></FONT></P>
<P>&nbsp;</P> <P><A href="https://youtu.be/pAyG6UYuz-Y" target="_blank"
rel="noopener">Datacenter Migration &amp; Azure Migrate - Sarah Lean</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank"
rel="noopener">Sarah Lean</A></I></STRONG></P> <P>In this Skylines Summer
Session, Sarah Lean, #Microsoft #Cloud Advocate, is interviewed by Richard
Hooper and Gregor Suttie and discusses</P> <P><LI-VIDEO
vid="https://youtu.be/pAyG6UYuz-Y" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-setup-and-run-azure-shell-locally/ba-p/1840528?WT.mc_id=modinfra-8133-pierrer"
target="_blank" rel="noopener">How to setup and run Azure Cloud Shell
locally</A><BR /><STRONG><I><A href="https://twitter.com/WiredCanuck"
target="_blank" rel="noopener">Pierre Roman</A></I></STRONG></P> <P>Scripts
running in Azure Cloud Shell can exceed the 20 minute timeout. Learn how to run
it locally to avoid this restriction.</P> <P>&nbsp;</P> <P><A
href="https://www.codemag.com/Article/2010052/Project-Tye-Creating-Microservices-in-a-.NET-Way"
target="_blank" rel="noopener">CODE Magazine - Project Tye: Creating
Microservices in a .NET Way</A><BR /><STRONG><I><A
href="https://twitter.com/spboyer" target="_blank" rel="noopener">Shayne
Boyer</A></I></STRONG></P> <P>Project Tye: Creating Microservices in a .NET
Way</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-rfc/ba-p/1866550?WT.mc_id=modinfra-8956-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
RFC</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>This week
in our Azure Stack Hub Partner solution video series, I am going to introduce
you to Azure Stack Hub Partner RFC.</P> <P>&nbsp;</P> <P><A
href="https://github.com/microsoft/Web-Dev-For-Beginners" target="_blank"
rel="noopener">microsoft/Web-Dev-For-Beginners</A><BR /><STRONG><I><A
href="https://twitter.com/sinedied" target="_blank" rel="noopener">Yohan
Lasorsa</A></I></STRONG></P> <P>24 Lessons, 12 Weeks, Get Started as a Web
Developer - microsoft/Web-Dev-For-Beginners</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/Q-s6eFPv4QM" target="_blank" rel="noopener">Introduction
to #WebXR with Ayşegül Yönet</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank" rel="noopener">Aysegul
Yonet</A></I></STRONG></P> <P>🥽 WebXR is the latest evolution in the
exploration of virtual and augmented realities. Sounds interesting, right? Dive
into the Basics of WebXR with Ayşegül...</P> <P><LI-VIDEO
vid="https://youtu.be/Q-s6eFPv4QM" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/connect-react-app-microsoft-365/"
target="_blank" rel="noopener">Connect your React app to Microsoft 365</A><BR
/><STRONG><I><A href="https://twitter.com/waldekm" target="_blank"
rel="noopener">Waldek Mastykarz</A></I></STRONG></P> <P>With the Microsoft Graph
Toolkit, you'll be able to connect your app to Microsoft 365 in a matter of
minutes. Here is how you'd do it.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/debug-node-js-app-with-built-in-or-vs-code-debugger-41n4"
target="_blank" rel="noopener">Debug Node.js app with built-in or VS Code
debugger</A><BR /><STRONG><I><A href="https://twitter.com/sinedied"
target="_blank" rel="noopener">Yohan Lasorsa</A></I></STRONG></P> <P>Learn how
to use built-in or VS Code debugger to fix bugs in your Node.js apps more
efficiently with this series of bite-sized videos for beginners.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/microsoft-365/blogs/microsoft-365-pnp-weekly-episode-104/?WT.mc_id=m365-10519-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 104 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I><A
href="https://twitter.com/waldekm" target="_blank" rel="noopener">Waldek
Mastykarz</A></I></STRONG></P> <P>Connect to the latest conferences, trainings,
and blog posts for Microsoft 365, Office client, and SharePoint developers. Join
the Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-build-an-audit-azure-policy-with-multiple-parameters/ba-p/1866062?WT.mc_id=modinfra-10601-socuff"
target="_blank" rel="noopener">How to build an audit Azure Policy with multiple
parameters</A><BR /><STRONG><I><A href="https://twitter.com/SoniaCuff"
target="_blank" rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>Learn how to
build an audit mode Azure Policy, to show resources that don't have all of your
required tags.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/apps-on-azure/azure-functions-via-github-actions-with-no-publish-profile/ba-p/1859300?WT.mc_id=devops-10697-juyoo"
target="_blank" rel="noopener">Azure Functions via GitHub Actions with No
Publish Profile</A><BR /><STRONG><I><A
href="https://twitter.com/justinchronicle" target="_blank" rel="noopener">Justin
Yoo</A></I></STRONG></P> <P>Throughout this series, I'm going to show how an
Azure Functions instance can map APEX domains, add an SSL certificate and update
its public inbound IP</P> <P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-11-06-deploy-to-github-packages-with-github-actions/"
target="_blank" rel="noopener">Deploy to GitHub Packages With GitHub Actions |
LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank" rel="noopener">Aaron Powell</A></I></STRONG></P> <P>Let's look
at how to automate releases to GitHub Packages using GitHub Actions</P>
<P>&nbsp;</P> <P><A href="https://www.youtube.com/watch?v=NNDdk9Y_nPw"
target="_blank" rel="noopener">DevOps and Machine Learning, with Henk
Boelman</A><BR /><STRONG><I><A href="https://twitter.com/hboelman"
target="_blank" rel="noopener">Henk Boelman</A></I></STRONG></P> <P>DevOps and
Machine Learning, with Henk Boelman – Codecamp_The One with DevOps 2020 With
machine learning becoming more and more an engineering problem the ne...</P>
<P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/c-corner-azure-learning-and-microsoft-certification-ama-ft-thomas-maurer/"
target="_blank" rel="noopener">C# Corner Azure Learning and Microsoft
Certification – AMA ft. Thomas Maurer</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank" rel="noopener">Thomas
Maurer</A></I></STRONG></P> <P>Last week I had the honor to be a guest in the C#
Corner Live AMA (Ask Me Anything) about Azure Learning and Microsoft
Certification.</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=0hKU9yB9Ixk" target="_blank"
rel="noopener">Azure Functions - Tartine &amp; Tech</A><BR /><STRONG><I><A
href="https://twitter.com/sinedied" target="_blank" rel="noopener">Yohan
Lasorsa</A></I></STRONG></P> <P>Les Azure functions font partie de la stack
Server less d'Azure. Dans cet épisode, Yohan vous explique en quoi ça consiste
et comment créer votre premier pro...</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/11/11/openapi-extension-to-support-azure-functions-v1/"
target="_blank" rel="noopener">OpenAPI Extension to Support Azure Functions
V1</A><BR /><STRONG><I><A href="https://twitter.com/justinchronicle"
target="_blank" rel="noopener">Justin Yoo</A></I></STRONG></P> <P>This post
shows how Azure Functions v3 runtime works as a proxy to Azure Functions v1
runtime, to enable the Open API extension.</P> <P>&nbsp;</P> <P><A
href="https://aka.ms/AAab79w" target="_blank" rel="noopener">Wayve | Disrupting
Autonomous Driving</A><BR /><STRONG><I><A href="https://twitter.com/adipolak"
target="_blank" rel="noopener">Adi Polak</A></I></STRONG></P> <P>Join us for an
exceptional conversation with Alex Kendall, co-founder, and CEO of Wayve, who
raised more than 40M$ to kickstart the biggest vehicle academy.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://codetraveler.io/2020/11/11/using-immutable-objects-with-sqlite-net/"
target="_blank" rel="noopener">Using Immutable Objects with SQLite-Net</A><BR
/><STRONG><I><A href="https://twitter.com/TheCodeTraveler" target="_blank"
rel="noopener">Brandon Minnick</A></I></STRONG></P> <P>SQLite-NET has become the
most popular database, especially amongst Xamarin developers, but it hasn't
supported Immutable Objects, until now! Thanks to Init-Only Properties in C#9.0,
we can now use Immutable Objects with our SQLite database!</P>
<P>&nbsp;</P></description>
<pubDate>Mon, 16 Nov 2020 15:34:07 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-web-developers-beginner/ba-p/1891137</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-11-16T15:34:07Z</dc:date>
...
</item>
<item>
<title>DevTest Labs - Shutdown Notifications in Teams Chat Messages</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-shutdown-notifications-in-teams-chat-messages/ba-p/1874092</link>
<description><P>Azure DevTest Labs automatic shutdown policies can save money by
ensuring that VMs are shut down every night and do not sit idle
indefinitely.&nbsp; On those occasions when a lab user works late, the shutdown
notification settings allow lab users to be warned when the machine is about to
be shutdown.&nbsp; In this blog post, we will cover how to use the Webhook URL
setting for auto-shutdown notification settings to send a direct chat message to
someone working late and warn them that their machine is about to be turned
off.&nbsp; We will also cover how to create the chat message so the user can
delay the shutdown by an hour or two by clicking a button in the chat
message.</P> <H1>Create Logic App to receive shutdown notifications</H1> <OL>
<LI><A
href="https://docs.microsoft.com/en-us/azure/logic-apps/quickstart-create-first-logic-app-workflow#create-your-logic-app"
target="_blank" rel="noopener">Create a Logic App</A>.</LI> <LI>Add <A
href="https://docs.microsoft.com/en-us/azure/connectors/connectors-native-reqres#add-request-trigger"
target="_blank" rel="noopener"><STRONG>When an HTTP request is received
trigger</STRONG></A> to the Logic App.</LI> </OL> <P
class="lia-align-center"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Sagar_Lankala_0-1605041267623.png"
style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232756iF13DD1F4D397F4BE/image-size/medium?v=v2&amp;px=400"
role="button" title="Sagar_Lankala_0-1605041267623.png"
alt="Sagar_Lankala_0-1605041267623.png" /></span></P> <P>&nbsp;</P> <P>As seen
in the picture above, this action needs a JSON schema so information in the
request body can be used by actions in the Logic App.&nbsp; Schema for the
request is below for convenience.&nbsp; The <A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-auto-shutdown#notifications"
target="_blank" rel="noopener">Configure autoshutdown for lab and compute
virtual machines in Azure DevTest Labs</A> article contains the latest JSON
schema for shutdown notifications.</P> <P>&nbsp;&nbsp;</P> <P>&nbsp; <FONT
color="#000000"><STRONG>{</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "$schema":
"<A href="http://json-schema.org/draft-04/schema#" target="_blank"
rel="noopener">http://json-schema.org/draft-04/schema#</A>",</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"properties": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl120": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":
"string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl60": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"eventType": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"guid": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"labName": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"owner": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"resourceGroupName": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"skipUrl": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"subscriptionId": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"text": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmName": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmUrl": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"minutesUntilShutdown": {</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"type": "string"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
},</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "required":
[</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"skipUrl",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl60",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"delayUrl120",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmName",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"guid",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"owner",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"eventType",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"text",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"subscriptionId",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"resourceGroupName",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;"labName",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"vmUrl",</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"minutesUntilShutdown"</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
],</STRONG></FONT></P> <P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "type":
"object"</STRONG></FONT></P> <P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;
}</STRONG></FONT></P> <P>&nbsp;</P> <OL start="3"> <LI>Add a <A
href="https://docs.microsoft.com/en-us/connectors/teams/#post-your-own-adaptive-card-as-the-flow-bot-to-a-user"
target="_blank" rel="noopener"><STRONG>Post your own adaptive card as the Flow
bot to a user (preview)</STRONG></A> action to the Logic App.&nbsp; This action
will send a chat message from the Flow bot to a specific user.&nbsp; This action
also allows &nbsp;an <A href="https://adaptivecards.io/" target="_blank"
rel="noopener">adaptive card</A> to be sent to a user, which means we can add
buttons to the message.&nbsp; This action does require a connection of a
Microsoft Account.</LI> </OL> <P>&nbsp;</P> <P>The <STRONG>recipient</STRONG> of
the message should be the owner of the VM.&nbsp; Get the owner’s email by
searching for the ‘owner’ dynamic content from the HTTP request trigger.</P>
<P>&nbsp;</P> <P>The message in this action will be JSON that uses the Adaptive
Card JSON schema.&nbsp; For our example, we have a simple message to the user
telling them that their VM will be shutdown soon and buttons to allow the user
to skip the shutdown, delay the shutdown 1 hour or delay the shutdown 2
hours.</P> <P>&nbsp;</P> <P><FONT color="#000000"><STRONG>{</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"$schema":&nbsp;"<A
href="http://adaptivecards.io/schemas/adaptive-card.json" target="_blank"
rel="noopener">http://adaptivecards.io/schemas/adaptive-card.json</A>",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"AdaptiveCard",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"version":&nbsp;"1.0",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"speak":&nbsp;"Your&nbsp;virtual&nbsp;machine&nbsp;is&nbsp;shutting&nbsp;down&nbsp;soon.&nbsp;&nbsp;Do&nbsp;you&nbsp;want&nbsp;to&nbsp;delay&nbsp;the&nbsp;shutdown?",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"body":&nbsp;[</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"TextBlock",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"text":&nbsp;"Virtual&nbsp;Machine&nbsp;Auto-Shutdown",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;"large",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"weight":&nbsp;"bolder"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"TextBlock",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"text":&nbsp;"The&nbsp;virtual&nbsp;machine&nbsp;@{triggerBody()['vmName']}&nbsp;is&nbsp;scheduled&nbsp;for&nbsp;shutdown&nbsp;in&nbsp;@{triggerBody()?['minutesUntilShutdown']}&nbsp;minutes.",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"wrap":&nbsp;"true"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;],</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;"actions":&nbsp;[</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"Action.OpenUrl",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"title":&nbsp;"Delay&nbsp;1&nbsp;hour",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url":&nbsp;"@{triggerBody()['delayUrl60']}"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"Action.OpenUrl",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"title":&nbsp;"Delay&nbsp;2&nbsp;hours",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url":&nbsp;"@{triggerBody()['delayUrl120']}"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"Action.OpenUrl",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"title":&nbsp;"Skip&nbsp;shutdown",</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"url":&nbsp;"@{triggerBody()['skipUrl']}"</STRONG></FONT></P>
<P><FONT
color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;]</STRONG></FONT></P>
<P><FONT color="#000000"><STRONG>}</STRONG></FONT></P> <P>&nbsp;</P> <P>The
‘@triggerBody()’ statements tell the LogicApp to get the value from the HTTP
request trigger we created in the previous step.</P> <P>&nbsp;</P> <P>Lastly,
set the <STRONG>IsAlert</STRONG> setting in the action to ‘Yes’.&nbsp; This will
cause the user to be notified in their Activity stream when the message is
sent.</P> <P>&nbsp;</P> <P>Action should look like the following picture.</P> <P
class="lia-align-center"><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Sagar_Lankala_4-1605041410636.png"
style="width: 476px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232759iF4769805A7DF2FB9/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_4-1605041410636.png"
alt="Sagar_Lankala_4-1605041410636.png" /></span></P> <P>&nbsp;</P> <OL
start="4"> <LI>Add a HTTP <STRONG>Response</STRONG> action.&nbsp; Set the status
code to 200 to indicate everything was successful.</LI> </OL> <P>Now that we
have our Logic App that can handle sending a message to a user, it’s time to
setup the DevTest Lab to send notifications to our Logic App.&nbsp; We will need
the url to call the Logic App.&nbsp; To get the url, expand the <STRONG>When an
HTTP request is received</STRONG> trigger step and copy the <STRONG>HTTP POST
URL</STRONG> property.</P> <H1>Configure lab auto-shutdown settings</H1>
<P>&nbsp;</P> <P>Auto-shutdown settings are configured at either the lab level
or individual lab VM level.&nbsp; Individual settings for auto-shutdown
notifications are only allowed if the lab owner sets the auto-shutdown policy to
allow individual users to override the lab auto-shutdown settings.&nbsp; See <A
href="https://docs.microsoft.com/azure/devtest-labs/devtest-lab-auto-shutdown"
target="_blank" rel="noopener">Configure auto-shutdown for lab in Azure DevTest
Labs</A> for further details.</P> <P>Let’s cover how to use the Logic App we
created above by configuring auto-shutdown settings at a lab level.</P> <OL>
<LI>On the home page for your lab, select Configuration and policies.</LI>
<LI>Select <STRONG>Auto-shutdown</STRONG> in the <STRONG>Schedules</STRONG>
section of the left menu.</LI> <LI>Select&nbsp;<STRONG>On</STRONG>&nbsp;to
enable auto-shutdown policy.</LI> <LI>For <STRONG>Webhook URL</STRONG>, paste
the url for the Logic App we created earlier.</LI> <LI>Select&nbsp;Save.</LI>
</OL> <P><span class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="Sagar_Lankala_2-1605041267648.png" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232757i75C24C3EAC58D968/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_2-1605041267648.png"
alt="Sagar_Lankala_2-1605041267648.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P> <H1>Conclusion</H1> <P>That’s all we need to do!&nbsp; Next time a
lab VM in our lab is about to be shutdown, the lab VM owner will be sent a chat
message in Teams.&nbsp; The message will allow the lab VM owner to quickly delay
shutdown using the action buttons on the bottom of the message.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-center" image-alt="Sagar_Lankala_3-1605041267653.png"
style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232758i79803ECA42DCC3B6/image-size/large?v=v2&amp;px=999"
role="button" title="Sagar_Lankala_3-1605041267653.png"
alt="Sagar_Lankala_3-1605041267653.png" /></span></P> <P>&nbsp;</P>
<P>&nbsp;</P></description>
<pubDate>Fri, 13 Nov 2020 18:06:05 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/devtest-labs-shutdown-notifications-in-teams-chat-messages/ba-p/1874092</guid>
<dc:creator>Sagar_Lankala</dc:creator>
<dc:date>2020-11-13T18:06:05Z</dc:date>
...
</item>
<item>
<title>Azure Advocates Weekly Round Up - .NET Learn Challenge, MS Exam Prep help
and more!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-net-learn-challenge-ms-exam-prep/ba-p/1867304</link>
<description><P>It's November, .NET November that is. Check out the .NET Learn
Challenge get over 35 hours of FREE Learning. More Exam help posts from the team
this week amongst many other great code samples, blog posts and videos!</P>
<P>&nbsp;</P> <P><A href="https://youtu.be/pAyG6UYuz-Y" target="_blank"
rel="noopener">Datacenter Migration &amp; Azure Migrate - Sarah Lean</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>In this Skylines Summer Session, Sarah Lean,
#Microsoft #Cloud Advocate, is interviewed by Richard Hooper and Gregor Suttie
and discusses</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/pAyG6UYuz-Y"
align="center" size="custom" width="661" height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://www.twitch.tv/videos/793735988" target="_blank"
rel="noopener">Shayne sits down with LayalCodesIt on Twitch</A><BR
/><STRONG><I><A href="https://twitter.com/spboyer" target="_blank">Shayne
Boyer</A></I></STRONG></P> <P>Hang out with Shayne on Layla's channel this week
to hear more about the .NET Learn Challenge and working within Developer
Relations at Microsoft.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/apps-on-azure/how-to-create-a-no-code-ai-app-with-azure-cognitive-services-and/ba-p/1847264?WT.mc_id=aiml-8438-ayyonet"
target="_blank" rel="noopener">How to Create a No Code AI App with Azure
Cognitive Services and Power Apps</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank">Aysegul
Yonet</A></I></STRONG></P> <P>You might have an idea for an application using AI
and not have anyone to build it. You might be a programmer and want to try out
your ideas and Azure</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-telkomtelstra/ba-p/1837289?WT.mc_id=modinfra-8960-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
telkomtelstra</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank">Thomas Maurer</A></I></STRONG></P> <P>telkomtelstra is a Service
Provider working with Enterprise customers across Indonesia. Check out their
journey with Azure Stack Hub!</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/sustainable-software/vlc-energy-optimization-with-gpu/?WT.mc_id=green-8990-ashussai"
target="_blank" rel="noopener">VLC Energy Optimization With GPU | Sustainable
Software</A><BR /><STRONG><I><A href="https://twitter.com/jawache"
target="_blank">Asim Hussain</A></I></STRONG></P> <P>For the past few years,
sustainable software engineering has arisen as one of the major topics in the
daily discussions I have with software developers. Due to the advancements in
technology, as well as the increasing awareness we share on climate change and
the overall impact of tech on the environment,</P> <P>&nbsp;</P> <P><A
href="https://github.com/microsoft/iot-curriculum/tree/main/labs/iot/environment-monitor"
target="_blank" rel="noopener">microsoft/iot-curriculum</A><BR /><STRONG><I><A
href="https://twitter.com/jimbobbennett" target="_blank">Jim
Bennett</A></I></STRONG></P> <P>Hands on labs and content for students and
educators to learn and teach the Internet of Things at schools, universities,
coding clubs, community colleges and bootcamps - microsoft/iot-curriculum</P>
<P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/what-is-azure-defender/ba-p/1843528?WT.mc_id=modinfra-9866-socuff"
target="_blank" rel="noopener">What is Azure Defender?</A><BR /><STRONG><I><A
href="https://twitter.com/SoniaCuff" target="_blank">Sonia
Cuff</A></I></STRONG></P> <P>Learn about the improved experience for managing
security across hybrid and multi-cloud environments with the Azure Defender XDR
product.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/all-you-need-to-know-about-microsoft-exams/ba-p/1794460?WT.mc_id=modinfra-10046-salean"
target="_blank" rel="noopener">All you need to know about Microsoft Exams</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Taking any exam can be a stressful experience which
requires a lot of preparation and planning.&nbsp; Let's look at the process for
studying, booking and sitting a Microsoft exam.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/Q-s6eFPv4QM" target="_blank" rel="noopener">Introduction
to #WebXR with Ayşegül Yönet</A><BR /><STRONG><I><A
href="https://twitter.com/AysSomething" target="_blank">Aysegul
Yonet</A></I></STRONG></P> <P>🥽 WebXR is the latest evolution in the
exploration of virtual and augmented realities. Sounds interesting, right? Dive
into the Basics of WebXR with Ayşegül.</P> <P><LI-VIDEO
vid="https://youtu.be/Q-s6eFPv4QM" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/build-a-web-api-with-node-js-and-express-16fk"
target="_blank" rel="noopener">Build a web API with Node.js and Express</A><BR
/><STRONG><I><A href="https://twitter.com/sinedied" target="_blank">Yohan
Lasorsa</A></I></STRONG></P> <P>Learn how to use Node.js and Express to create a
RESTful web API with this series of bite-sized videos for beginners.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://developer.microsoft.com/sharepoint/blogs/microsoft-365-pnp-weekly-episode-103/?WT.mc_id=m365-10520-wmastyka"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 103 -
Microsoft 365 Developer Blog</A><BR /><STRONG><I>Waldek
Mastykarz</I></STRONG></P> <P>Connect to the latest conferences, trainings, and
blog posts for Microsoft 365, Office client, and SharePoint developers. Join the
Microsoft 365 Developer Program.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/dotnet/net-learning-challenge-4008" target="_blank"
rel="noopener">.NET Learning Challenge!</A><BR /><STRONG><I><A
href="https://twitter.com/spboyer" target="_blank">Shayne
Boyer</A></I></STRONG></P> <P>Compete, Learn, and Develop Skills <A
href="https://aka.ms/dotnetskills"
target="_self">https://aka.ms/dotnetskills</A> November 1, 2020 - November
30th.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/how-to-get-started-learning-microsoft-azure-and-cloud-computing/"
target="_blank" rel="noopener">How to get started learning Microsoft Azure and
Cloud Computing</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank">Thomas Maurer</A></I></STRONG></P> <P>Here is how to get started
with learning Microsoft Azure and Cloud Computing. Check out this blog and learn
how to get started with Azure!</P> <P>&nbsp;</P> <P><STRONG><I><A
href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Interview with Sarah Lean, Senior Cloud Advocate at
Microsoft</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/experts-live-switzerland-2020-azure-hybrid-learn-about-hybrid-cloud-management/"
target="_blank" rel="noopener">Experts Live Switzerland 2020: Azure Hybrid –
Learn about Hybrid Cloud Management</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank">Thomas
Maurer</A></I></STRONG></P> <P>Now the recording of my session: "Azure Hybrid -
Learn about Hybrid Cloud Management" is available! With an overview on Microsoft
Azure Arc!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/internet-of-things/az-220-iot-developer-certification-study-guide/ba-p/1854393?WT.mc_id=iot-10684-pdecarlo"
target="_blank" rel="noopener">AZ-220 IoT Developer Certification Study
Guide</A><BR /><STRONG><I><A href="https://twitter.com/pjdecarlo"
target="_blank">Paul DeCarlo</A></I></STRONG></P> <P>Microsoft offers an
official IoT Developer Specialty Certification which requires passing the AZ-220
Certification Exam .&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/playlist?list=PLGi0uFHAUvEGIXv0dm93Dca84FT3EXGY0"
target="_blank" rel="noopener">Environment Monitor Lab - Using a Raspberry
Pi</A><BR /><STRONG><I><A href="https://twitter.com/jimbobbennett"
target="_blank">Jim Bennett</A></I></STRONG></P> <P>A walkthrough of the
Environment Monitor IoT lab available at <A
href="https://aka.ms/iot-curriculum/env-monitor"
target="_blank">https://aka.ms/iot-curriculum/env-monitor</A> using a Raspberry
Pi and a Grove Pi+ kit.</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/11/05/deploying-azure-functions-via-github-actions-without-publish-profile/"
target="_blank" rel="noopener">Deploying Azure Functions via GitHub Actions
without Publish Profile</A><BR /><STRONG><I><A
href="https://twitter.com/justinchronicle" target="_blank">Justin
Yoo</A></I></STRONG></P> <P>This post shows how to deploy Azure Functions app
via GitHub Actions, without having to know the publish profile.</P>
<P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-11-05-building-a-video-chat-app-part-3-displaying-video/"
target="_blank" rel="noopener">Building a Video Chat App, Part 3 - Displaying
Video | LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank">Aaron Powell</A></I></STRONG></P> <P>We've got access to the
camera, now to display the feed</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=FHsMf_S7Tds" target="_blank"
rel="noopener">Azure Thursday - 5 November 2020</A><BR /><STRONG><I><A
href="https://twitter.com/hboelman" target="_blank">Henk
Boelman</A></I></STRONG></P> <P>View the schedule on: <A
href="https://www.azurethursday.com"
target="_self">https://www.azurethursday.com</A></P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/download-user-group-profile-picture-microsoft-graph-js-sdk/"
target="_blank" rel="noopener">Quick tip: download user or group profile picture
using Microsoft Graph JS SDK</A><BR /><STRONG><I>Waldek
Mastykarz</I></STRONG></P> <P>When building your application on Microsoft 365
you might need to download the profile picture of a user or group. Here is how
to do it using the Microsoft Graph SDK.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/maudlv/evenements-en-ligne-intelligence-artificielle-machine-learning-et-azure-4jb6"
target="_blank" rel="noopener">Evénements en ligne : Intelligence Artificielle,
Machine Learning et Azure</A><BR /><STRONG><I>Maud Levy</I></STRONG></P> <P>Pour
le mois de novembre, Microsoft propose plusieurs conférences en ligne en
français autour du Mach...</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/McXNicDXWkM" target="_blank" rel="noopener">Dataminds
Connect - Taking Models To The Next Level With Azure Machine Learning</A><BR
/><STRONG><I><A href="https://twitter.com/hboelman" target="_blank">Henk
Boelman</A></I></STRONG></P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://youtu.be/McXNicDXWkM" align="center" size="custom" width="661"
height="661" uploading="false"
thumbnail="https://i.ytimg.com/vi/Q-s6eFPv4QM/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <!-- Add a placeholder for the
Twitch embed --><!-- Load the Twitch embed script --><!-- Create a Twitch.Player
object. This will render within the placeholder div --> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/11/c-corner-azure-learning-and-microsoft-certification-ama-ft-thomas-maurer/"
target="_blank" rel="noopener">C# Corner Azure Learning and Microsoft
Certification – AMA ft. Thomas Maurer</A><BR /><STRONG><I><A
href="https://twitter.com/ThomasMaurer" target="_blank">Thomas
Maurer</A></I></STRONG></P> <P>Last week I had the honor to be a guest in the C#
Corner Live AMA (Ask Me Anything) about Azure Learning and Microsoft
Certification.</P> <P>&nbsp;</P></description>
<pubDate>Mon, 09 Nov 2020 15:23:03 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-net-learn-challenge-ms-exam-prep/ba-p/1867304</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-11-09T15:23:03Z</dc:date>
...
</item>
<item>
<title>Using IoT and Azure to Help with Family Chores</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-iot-and-azure-to-help-with-family-chores/ba-p/1809444</link>
<description><H3>Intro&nbsp;</H3> <P>&nbsp;</P> <P>At Microsoft Ignite 2020,
Scott Hanselman showcased how he is using Azure, IoT (Internet of Things), and
Developer Tools to help his family manage household chores.&nbsp;</P>
<P>&nbsp;</P> <H3>The Problem</H3> <P>&nbsp;</P> <P>Scott, like more and more
people who are working from home, realized that there had to be a better way to
stay in front of the need to do additional chores around his home. With everyone
at home, things like dishes, garbage, and general chores add up fast. He wanted
to be able to see at a glance the current list of chores that needed to be
completed, real-time status of chores that can change quickly over time, and to
be notified when certain chores were needed to be complete, for instance
garbage.</P> <P>&nbsp;</P> <H3>The Solution</H3> <P>&nbsp;</P> <P>Scott already
leverages a&nbsp;<A href="https://dakboard.com/site" target="_blank"
rel="noopener">DAKboard</A>, which allows customization of a display via a
website. On <A
href="https://www.hanselman.com/blog/how-to-build-a-wall-mounted-family-calendar-and-dashboard-with-a-raspberry-pi-and-cheap-monitor"
target="_blank" rel="noopener">his DAKboard</A>, Scott can put his work/personal
calendar, family photos and the weather all on a monitor that sits in his
kitchen. He wanted to be able to add a "heatmap" of sorts to his DAKboard that
would show parts of the house that notable chores are (garbage cans for
instance) and what the "status" of them are in real-time. This way, if he sees
that a chore needs to be done, the family can respond.&nbsp;</P> <P>&nbsp;</P>
<P>There are a few things at play here.&nbsp;</P> <P>&nbsp;</P> <UL>
<LI><STRONG>Sensors: </STRONG>Most of the chores rely on items that are not
"smart", so external sensors and an IoT solution will be needed.</LI>
<LI><STRONG>Web:</STRONG>&nbsp;The heatmap requires real-time updates, so a web
solution that offers such will be needed.</LI>
<LI><STRONG>Notifications:</STRONG>&nbsp;Finally, he wants to be notified when
the threshold is met of a certain chore instantly, so a communication mechanism
is needed.</LI> </UL> <P>&nbsp;</P> <P>With the above requirements, we can start
to build a solution. The solution will require an IoT device that will poll the
status of a particular chore. The device will update a datastore via a service
and the heatmap will be a web application that will sync with the value of the
datastore in real time. With that, we landed on the below solution
architecture.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Picture1.png" style="width: 936px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/231521iF77D129E628EDA49/image-size/large?v=v2&amp;px=999"
role="button" title="Picture1.png" alt="Picture1.png" /></span></P>
<P>&nbsp;</P> <P>To build the solution, we knew that an IoT device would be
needed to monitor the status of the chore. We decided on a&nbsp;<A
href="https://www.raspberrypi.org/" target="_blank" rel="noopener">Raspberry
Pi</A>&nbsp;with a connected . In the case of garbage status, the sensor was
attached to the inside of the lid of the garbage can. The sensor could then
check the level of the garbage in the can and update the chore datastore via an
Azure Function written in Node.js. When the datastore is updated, another Azure
Function, written in C#, is triggered that compares the current level to the
threshold, and if it is met, a notification is sent.</P> <P>&nbsp;</P> <P>For
the notification, we relied on recently announced&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/communication-services/overview"
target="_blank" rel="noopener">Azure Communication Services</A><U><SPAN> to send
an SMS</SPAN></U>. When the notification function determines a message needs to
be sent, it will leverage a <A
href="https://docs.microsoft.com/en-us/azure/communication-services/quickstarts/telephony-sms/get-phone-number"
target="_blank" rel="noopener">phone number</A> obtained via Azure Communication
Services and the chore assignee will get a message from that number. Azure
Communication Services is configured via the Azure Portal, more information can
be seen at the&nbsp;<A
href="https://github.com/microsoft/ChoresIoT#deployment-scenarios"
target="_blank" rel="noopener">GitHub repository for the ChoresIOT solution</A>.
Working against Azure Communication Services is seamless, as it is included in
the already existing&nbsp;<A href="https://azure.github.io/azure-sdk/"
target="_blank" rel="noopener">Azure SDK</A>&nbsp;(software development kit).
There is also an <A
href="https://docs.microsoft.com/en-us/azure/communication-services/quickstarts/telephony-sms/logic-app"
target="_blank" rel="noopener">Azure Logic App&nbsp;connector for Azure
Communication Services</A> that you can leverage.</P> <P>&nbsp;</P> <P>For the
heatmap UI, we need to leverage a web technology that allows real-time
communication with the function that manages the datastore. The technology that
was decided on was&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-overview"
target="_blank" rel="noopener">Azure SignalR Service</A>. The complete
application leverages&nbsp;<A
href="https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.1#blazor-webassembly"
target="_blank" rel="noopener">ASP.NET Core Blazor WebAssembly</A>&nbsp;in .NET
5 configured to integrate with Azure SignalR Service. Because we are leveraging
<A href="https://webassembly.org/" target="_self">WebAssembly</A>, we are able
to deploy the application to any host since a backend server is not required. We
deployed the web application to&nbsp;<A
href="https://docs.microsoft.com/en-us/azure/static-web-apps/overview"
target="_blank" rel="noopener">Azure Static Web Apps</A>, a new service in Azure
where you can host applications that do not require a connected backend server.
Finally, since the solution is using Azure SignalR Service, when the chore
datastore is updated, the heatmap will update automatically whenever the
threshold for a particular chore is met.</P> <P>&nbsp;</P> <P>Now that the
solution is complete, whenever a chore status is updated via the Raspberry Pi,
the datastore will be updated via the Azure Function. Once the datastore is
updated, the other Azure Function will check the status the chore threshold and
send an SMS if needed. Finally, the heatmap will be updated in real-time. This
end to end experience can be seen below during the Microsoft Ignite 2020
session.</P> <P>&nbsp;</P> <P><LI-VIDEO
vid="https://youtu.be/0oLZPgbKvmc?t=1158" align="center" size="small"
width="200" height="113" uploading="false"
thumbnail="https://i.ytimg.com/vi/0oLZPgbKvmc/hqdefault.jpg"
external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>As you can see in the video,
when Scott puts trash into the garbage, the heatmap automatically updates and he
receives an SMS message, powered by Azure Communication Services.&nbsp;</P>
<P>&nbsp;</P> <H3>What's Next?</H3> <P>&nbsp;</P> <P>The <A
href="https://github.com/microsoft/ChoresIoT" target="_self">ChoresIoT GitHub
Repository</A> lists out all the parts needed to setup a similar solution at
home. Take a look at the source code and contribute or ask questions if
interested. For more information on <A
href="https://azure.microsoft.com/en-us/services/communication-services/"
target="_self">Azure Communication Services</A> and how to
enable&nbsp;telephony-over-IP communications features to your applications, be
sure to check out the&nbsp;<A
href="https://docs.microsoft.com/azure/communication-services/overview"
target="_blank" rel="noopener">documentation</A>.</P> <P>&nbsp;</P> <P>Also be
sure to check out the <A
href="https://docs.microsoft.com/en-us/azure/cost-management-billing/manage/create-free-services"
target="_blank" rel="noopener">free services</A>&nbsp;that you can create in
Azure today.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
<P>&nbsp;</P></description>
<pubDate>Wed, 04 Nov 2020 20:33:33 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/using-iot-and-azure-to-help-with-family-chores/ba-p/1809444</guid>
<dc:creator>Isaac Levin</dc:creator>
<dc:date>2020-11-04T20:33:33Z</dc:date>
...
</item>
<item>
<title>Azure Advocate Weekly Round Up - DNS + SSL & GitHub Actions? HealthChecks
for VMs? Sounds Scary!!!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-dns-ssl-amp-github-actions/ba-p/1837854</link>
<description><P><A href="https://www.xamarinpodcast.com/80" target="_blank"
rel="noopener">The Xamarin Podcast Episode 80: Seeing AI</A><BR /><STRONG><I><A
href="https://twitter.com/codemillmatt" target="_blank">Matt
Soucoup</A></I></STRONG></P> <P>Seeing AI is an app for iOS that narrates the
world around you. And it's built with Xamarin and Azure. In this episode of the
Xamarin Podcast, Matt talks to the folks behind Seeing AI.</P> <P>&nbsp;</P>
<P><A
href="https://devblogs.microsoft.com/sustainable-software/the-carbon-footprint-of-ai/?WT.mc_id=green-8966-ashussai"
target="_blank" rel="noopener">The Carbon Footprint Of AI | Sustainable
Software</A><BR /><STRONG><I><A href="https://twitter.com/jawache"
target="_blank">Asim Hussain</A></I></STRONG></P> <P>The carbon footprint of AI
is increasing exponentially. Bigger models requiring ever more data contribute
toward 'RedAI' - we need a new approach</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/OIKV_jc3yec" target="_blank" rel="noopener">Collect data
from a Windows computer in a hybrid environment with Azure Monitor</A><BR
/><STRONG><I><A href="https://twitter.com/ThomasMaurer" target="_blank">Thomas
Maurer</A></I></STRONG></P> <P>Azure Monitor can collect data directly from your
physical or virtual Windows computers in your environment into a Log Analytics
workspace for detailed analy...</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=EMceqFUDh4M" target="_blank"
rel="noopener">Microsoft 365 &amp; SharePoint PnP Weekly – Episode 102</A><BR
/><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>In this weekly discussion of
latest news and topics around Microsoft 365, hosts – Vesa Juvonen (Microsoft) |
@vesajuvonen, Waldek Mastykarz (Microsoft)&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/first-look-at-azure-automanage/ba-p/1787819?WT.mc_id=modinfra-9950-salean"
target="_blank" rel="noopener">First Look at Azure Automanage</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Let's take a first look at the new service, Azure
Automanage that was launched at Microsoft Ignite 2020.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/step-by-step-azure-resource-health-alert-into-microsoft-teams/ba-p/1817484?WT.mc_id=modinfra-10077-socuff"
target="_blank" rel="noopener">Step-by-Step: Azure Resource Health alert into
Microsoft Teams</A><BR /><STRONG><I><A href="https://twitter.com/SoniaCuff"
target="_blank">Sonia Cuff</A></I></STRONG></P> <P>Step-by-step create an Azure
resource health alert for an unavailable virtual machine and post a message into
Microsoft Teams.</P> <P>&nbsp;</P> <P><A
href="https://24x7itconnection.com/2020/10/29/microsoft-endpoint-manager-for-modern-management-in-2020/"
target="_blank" rel="noopener">Microsoft Endpoint Manager for Modern Management
in 2020</A><BR /><STRONG><I><A href="https://twitter.com/ExchangeGoddess"
target="_blank">Phoummala Schmitt</A></I></STRONG></P> <P>This year more than
ever it’s important to be able to secure and manage devices. Microsoft Endpoint
Manager is a great option.</P> <P>&nbsp;</P> <P><A
href="https://www.techielass.com/teams-meeting-recordings" target="_blank"
rel="noopener">Microsoft Teams Meeting Recordings</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>Techie Lass Blog - Technical…Practical…From A
Scottish Lass</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/manage-sharepoint-and-microsoft-teams-with-powershell-core/ba-p/1792229?WT.mc_id=modinfra-10259-abartolo"
target="_blank" rel="noopener">How to Manage SharePoint and Microsoft Teams with
PowerShell Core</A><BR /><STRONG><I><A href="https://twitter.com/wirelesslife"
target="_blank">Anthony Bartolo</A></I></STRONG></P> <P>If you're addicted with
SharePoint, you might be glad to know that managing SharePoint is now possible
with PowerShell Core.</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/6fhpyi1oJMk" target="_blank" rel="noopener">Azure
Security Centre - Asset Inventory</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank">Sarah
Lean</A></I></STRONG></P> <P>In this "Azure at a Glance" video let's take a look
at what the Asset Inventory feature with Azure Security Centre can offer you.
For more information check ...</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/10/28/updating-azure-dns-and-ssl-certificate-on-azure-functions-via-github-actions/"
target="_blank" rel="noopener">Updating Azure DNS and SSL Certificate on Azure
Functions via GitHub Actions</A><BR /><STRONG><I><A
href="https://twitter.com/justinchronicle" target="_blank">Justin
Yoo</A></I></STRONG></P> <P>This post shows how to automatically update A record
on Azure DNS when the inbound IP address of Azure Functions instance is updated,
and reflect the change to the SSL certificate through GitHub Actions.</P>
<P>&nbsp;</P> <P><A
href="https://www.jimbobbennett.io/run-visual-studio-code-on-a-raspberry-pi/"
target="_blank" rel="noopener">Run Visual Studio Code on a Raspberry Pi</A><BR
/><STRONG><I><A href="https://twitter.com/jimbobbennett" target="_blank">Jim
Bennett</A></I></STRONG></P> <P>It's finally here! An official supported version
of VS Code that runs on a Raspberry Pi! ICYMI: VS Code now officially supports
@Raspberry_Pi too!&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=3DgpVwnQ3V4" target="_blank"
rel="noopener">Demo JBoss EAP VMSS Quickstart</A><BR /><STRONG><I><A
href="https://twitter.com/skriemhild" target="_blank">Sandra
Ahlgrimm</A></I></STRONG></P> <P>Theresa Nguyen, Senior Product Manager at
Microsoft showcases JBoss EAP on Azure VMSS&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Stack-Hub-Partner-Solutions-Series-MyCloudDoor?WT.mc_id=modinfra-10338-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
MyCloudDoor</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank">Thomas Maurer</A></I></STRONG></P> <P>MyCloudDoor is an Azure
Stack Hub partner and Preferred SI that focused on managed services and creating
value for their customers throughout the world.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://youtu.be/5CZT8-7eFkg" target="_blank" rel="noopener">Az Update
Show S01E26</A><BR /><STRONG><I><A href="https://twitter.com/WiredCanuck"
target="_blank">Pierre Roman</A></I></STRONG></P> <P>Episode 26 of the Az Update
Show. Another plethora of news stories to share on this week's AzUpdate show.
News includes: What’s new for IT Pros in Windows 10...</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/get-your-to-do-tasks-every-morning-on-microsoft-teams-using-azure-logic-apps-3ci1/?WT.mc_M365-10421-aycabas"
target="_blank" rel="noopener">Get your To-Do tasks every morning on Microsoft
Teams using Azure Logic Apps</A><BR /><STRONG><I><A
href="https://twitter.com/aycabs" target="_blank">Ayca Bas</A></I></STRONG></P>
<P>I am super excited since Microsoft Graph To Do APIs are introduced at
Microsoft Build 2020.&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://dev.to/sinedied/work-with-files-and-directories-in-a-node-js-app-4kh8"
target="_blank" rel="noopener">Work with files and directories in a Node.js
app</A><BR /><STRONG><I><A href="https://twitter.com/sinedied"
target="_blank">Yohan Lasorsa</A></I></STRONG></P> <P>Learn how to use built-in
modules to work with files and directories in a Node.js app with this series of
bite-sized videos for beginners. Tagged with webdev, beginners, javascript,
node.</P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/move-microsoft-teams-without-losing-content/"
target="_blank" rel="noopener">Move to Microsoft Teams without losing your
content</A><BR /><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>With this new
Microsoft Graph API you can move to Microsoft Teams and take your data with
you!</P> <P>&nbsp;</P></description>
<pubDate>Fri, 30 Oct 2020 15:43:41 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocate-weekly-round-up-dns-ssl-amp-github-actions/ba-p/1837854</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-10-30T15:43:41Z</dc:date>
...
</item>
<item>
<title>Developers + Nurses = NurseHack4Health</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-nurses-nursehack4health/ba-p/1820356</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="NurseHack4Health.png" style="width:
444px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232950iF82DEF17B3243D04/image-size/large?v=v2&amp;px=999"
role="button" title="NurseHack4Health.png" alt="NurseHack4Health.png"
/></span></P> <P>Microsoft is a proud sponsor of
<STRONG>NurseHack4Health</STRONG> - a 3 day virtual hackathon from <STRONG>Nov.
13-15, 2020</STRONG> to leverage technology and help improve access to reliable,
trusted information. This hackathon is made possible by the collaboration
between Microsoft, Johnson &amp; Johnson, SONSIEL, and devup. Read below for
more details, and <STRONG>register at</STRONG> <A
href="https://www.nursehack4health.org/" target="_blank"
rel="noopener">https://www.nursehack4health.org/</A> <STRONG>by Nov. 9 to
reserve a spot</STRONG>.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>The
challenge:</STRONG> Information about the COVID-19 pandemic is rapidly changing,
and gaining access to reliable public health information has been challenging,
highlighting a need for improved communication and trustworthy
resources.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>The hackathon:</STRONG> This event
presents a rare opportunity to bring together individuals with a diverse set of
ideas and skills - nurses, other healthcare professionals, engineers, IT experts
and innovators - to problem-solve in a supporting, inspiring and innovative
environment. This is an open source hackathon being hosted on Microsoft Teams,
and using GitHub for solution repositories.</P> <P>&nbsp;</P> <P><STRONG>The
participant's experience:</STRONG> Participants will focus on how technology can
be leveraged to create better outcomes for all in the most pressing areas of
education and communication. Central ideas of focus may include:</P> <UL>
<LI>Ensuring the health and safety of students and teachers in the
classroom</LI> <LI>Relaying to the public the importance of vaccines</LI>
<LI>Breaking down racial disparities and social inequities</LI> <LI>Sharing best
practices across healthcare providers and facilities</LI> <LI>And more</LI>
</UL> <P>Participants will also:</P> <UL> <LI>Work alongside Microsoft and
architects from the dev community</LI> <LI>Bring existing skills around
HTML/JavaScript, ASP.NET, Java, SQL or NoSQL</LI> <LI>Have access to free Azure
services, Power BI, and Power Apps during the duration of the hackathon</LI>
</UL> <P>&nbsp;</P> <P><STRONG>Pre-hackathon training:</STRONG>&nbsp;The
hackathon is supported by Microsoft mentors to help answer technical questions.
To get a jump start on GitHub, Teams, Power Apps, and Power Virtual Agents bots,
join the <A href="https://aka.ms/nursehack4health/cscreg" target="_self">Cloud
Skills Challenge</A> for curated self-learning modules covering these topics.
Track your progress against others on the <A
href="https://aka.ms/nursehack4health/cscleader"
target="_self">leaderboard</A>.</P> <P>&nbsp;</P> <P>During the hackathon, the
following technologies are expected to surface:</P> <UL> <LI>AI-Driven Software
Development</LI> <LI>Progressive Web Apps</LI> <LI>Internet of Things for
Healthcare - Connecting Devices, Enhancing Accessibility</LI>
<LI>Blockchain</LI> <LI>AR/VR/MR - The Use of Immersive Technologies</LI>
<LI>Low/No-Code Development - Development Using GUIs (Power Platform)</LI> </UL>
<P>&nbsp;</P> <P><STRONG>All participants are welcomed</STRONG>: Despite the
event being called a hackathon, this is not just about coding, it's about
community. Whether you are new to hackathons or a veteran, there are plenty of
ways to get involved, and it's a great opportunity to learn. All participants
are welcomed!</P> <P>&nbsp;</P> <P>Register or learn more about the hackathon
at&nbsp;<A href="https://www.nursehack4health.org/" target="_blank"
rel="noopener">https://www.nursehack4health.org/</A></P> <P>&nbsp;</P>
<P>&nbsp;</P></description>
<pubDate>Wed, 11 Nov 2020 18:16:54 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/developers-nurses-nursehack4health/ba-p/1820356</guid>
<dc:creator>NinaSui</dc:creator>
<dc:date>2020-11-11T18:16:54Z</dc:date>
...
</item>
<item>
<title>Azure Advocates Weekly Round Up - Saving Halloween with Azure Maps and
more!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-saving-halloween-with-azure-maps/ba-p/1819428</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="CatShark.jpg" style="width: 880px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/232982i8B23E1BEA8B332CE/image-size/large?v=v2&amp;px=999"
role="button" title="CatShark.jpg" alt="CatShark.jpg" /></span></P>
<P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-salt/ba-p/1795522?WT.mc_id=modinfra-8959-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
Salt</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Salt
business focuses on bringing a multi-tenanted Azure Stack Hub environment in the
Caribbean Islands. Check it out!</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=wl80Bk5T7b4" target="_blank"
rel="noopener">Microsoft 365 PnP Weekly – Episode 101</A><BR /><STRONG><I>Waldek
Mastykarz</I></STRONG></P> <P>In this 1st installment after the 100th
installment of the weekly discussion revolving around the latest news and topics
on Microsoft 365.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/windows-subsystem-for-linux-2-traffic-routing-issues/ba-p/1764074?WT.mc_id=modinfra-9875-abartolo"
target="_blank" rel="noopener">Windows Subsystem for Linux 2 - Addressing
Traffic Routing Issues</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>WSL2 traffic not routing to local Hyper-V
vSwitches? Check this out!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-migrate-and-powerbi/ba-p/1778654?WT.mc_id=modinfra-9876-salean"
target="_blank" rel="noopener">Azure Migrate and PowerBI</A><BR /><STRONG><I><A
href="https://twitter.com/techielass" target="_blank" rel="noopener">Sarah
Lean</A></I></STRONG></P> <P>Use new PowerBI templates to visualise your Azure
Migrate data!</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=lMl2r_Wi_C8&amp;feature=youtu.be"
target="_blank" rel="noopener">October 22, 2020 | Leveraging Turnkey AI Live
Tutorial</A><BR /><STRONG><I><A href="https://twitter.com/ruthieyakubu"
target="_blank" rel="noopener">Ruth Yakubu</A></I></STRONG></P> <P>Enjoy the
videos and music you love, upload original content, and share it all with
friends, family, and the world on YouTube.</P> <P>&nbsp;</P> <P><A
href="https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=aiml-9969-ayyonet"
target="_blank" rel="noopener">Cognitive Services—APIs for AI Developers |
Microsoft Azure</A><BR /><STRONG><I><A href="https://twitter.com/AysSomething"
target="_blank" rel="noopener">Aysegul Yonet</A></I></STRONG></P> <P>Azure
Cognitive Services brings AI within reach of every developer through a family of
APIs that don’t require machine-learning expertise.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-portal-announcements-and-videos/ba-p/1794165?WT.mc_id=modinfra-10078-socuff"
target="_blank" rel="noopener">Azure portal - Announcements and videos</A><BR
/><STRONG><I><A href="https://twitter.com/SoniaCuff" target="_blank"
rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>Like any cloud service, the
Azure portal also gets updates - here's how to stay up to date with the
announcements.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/rabwill/hosting-my-first-ever-developer-bootcamp-in-microsoft-teams-a-retrospect-1ghi"
target="_blank" rel="noopener">Hosting my first ever Developer Bootcamp in
Microsoft Teams : A retrospect</A><BR /><STRONG><I>Rabia
Williams</I></STRONG></P> <P>IMAGINE… You have a few weeks, to collaborate with
a select groups of awesome fellow techies...</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=iiLbhj4hPJM&amp;feature=youtu.be"
target="_blank" rel="noopener">Build “One Productivity Hub” using Microsoft
Teams and Microsoft Graph Toolkit</A><BR /><STRONG><I><A
href="https://twitter.com/aycabs" target="_blank" rel="noopener">Ayca
Bas</A></I></STRONG></P> <P>In this workshop you will learn to use Microsoft
Graph Toolkit to build a solution for Microsoft Teams. The user will be able to
track daily calendar, tasks ...</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/10/video-recording-azure-architecture-best-practices/"
target="_blank" rel="noopener">Video Recording: Azure Architecture Best
Practices</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Here is the
Azure Architecture Best Practices Virtual Event Video Recording with Microsoft
Cloud Solution Architect, Dominik Zemp!</P> <P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/10/how-to-create-azure-hybrid-cloud-architectures"
target="_blank" rel="noopener">How to create Azure Hybrid Cloud
Architectures</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Looking for
Azure hybrid cloud architectures in the Azure Architecture Center? You can find
diagrams, reference architectures, and much more!</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-windows-10-version-20h2-azure-ad-provisioning-updates/ba-p/1810670?WT.mc_id=modinfra-10100-abartolo"
target="_blank" rel="noopener">AzUpdate: Windows 10 version 20H2, Azure AD
provisioning updates, Modular Datacenters and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>Another plethora of news stories to share on
this week's AzUpdate show.&nbsp; News includes:&nbsp;What’s new for IT Pros in
Windows 10 version 20H2, Designing Azure Modular Datacenters, Azure AD
provisioning updates that include attribute mapping and improved performance,
newly announced plans for Microsoft to establish its first cloud region in
Austria and as always, the Microsoft Learn module of the week.</P> <P>&nbsp;</P>
<P><A href="https://dev.to/azure/azurefunbytes-short-ai-on-azure-2d8j"
target="_blank" rel="noopener">AzureFunBytes Short - AI on @Azure</A><BR
/><STRONG><I><A href="https://twitter.com/jaydestro" target="_blank"
rel="noopener">Jay Gordon</A></I></STRONG></P> <P>With AI, we can build
solutions that seemed like science fiction a short time ago; enabling
incredibl... Tagged with azure, cloud, beginners, ai.</P> <P>&nbsp;</P> <P><A
href="https://bit.ly/ato-ml-docker" target="_blank" rel="noopener">Docker and
Python: making them play nicely and securely for Ml and DS</A><BR
/><STRONG><I><A href="https://twitter.com/ixek" target="_blank"
rel="noopener">Tania Allard</A></I></STRONG></P> <P>Docker has become a standard
tool for developers around the world to deploy applications in a reproducible
and robust manner. The existence of Docker and Docker compose have reduced the
time needed to set up new software and implementing complex technology stacks
for our applications. Now, six years after the initial release of` Docker, we
can say with confidence that containers and containers orchestration have become
some of the defaults in the current technology stacks. There are thousands of
tutorials and getting started documents for those wanting to adopt Docker for
apps deployment. However, if you are a Data Scientist, a researcher or someone
working on scientific computing wanting to adopt Docker, the story is quite
different. There are very few tutorials (in comparison to app/web) and documents
focused on Docker best practices for DS and scientific computing. If you are
working on DS, ML or scientific computing, this talk is for you. We’ll cover
best practices when building Docker containers for data-intensive applications,
from optimising your image build, to ensuring your containers are secure and
efficient deployment workflows. We will talk about the most common problems
faced while using Docker with data-intensive applications and how you can
overcome most of them. Finally, I’ll give some practical and useful tips for you
to improve your Docker workflows and practises. Attendees will leave the talk
feeling confident about adopting Docker across a range of DS, ML and research
projects.</P> <P>&nbsp;</P> <P><A href="https://youtu.be/MPGUcfzSVNs"
target="_blank" rel="noopener">Deploy your Java Application to Azure App Service
with Maven</A><BR /><STRONG><I><A href="https://twitter.com/skriemhild"
target="_blank" rel="noopener">Sandra Ahlgrimm</A></I></STRONG></P> <P>In this 4
minutes tutorial Sandra shows how you can deploy a Spring Boot web application
to Azure App Service.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/azure/saving-halloween-2020-with-azure-maps-and-candy-caches-22f"
target="_blank" rel="noopener">Saving Halloween 2020 with Azure Maps and Candy
Caches</A><BR /><STRONG><I><A href="https://twitter.com/JenLooper"
target="_blank" rel="noopener">Jen Looper</A></I></STRONG></P> <P>Let me show
you how I rallied my town and created a map showing kids where to find
contactless, pandemic-friendly candy caches that saved Halloween!. Tagged with
javascript, vue, webdev, tutorial.</P> <P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-10-22-building-a-video-chat-app-part-2-accessing-cameras/"
target="_blank" rel="noopener">Building a Video Chat App, Part 2 - Accessing
Cameras | LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank" rel="noopener">Aaron Powell</A></I></STRONG></P> <P>Lights,
camera, action! It's time to get devices for our app.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/lazerwalker/using-game-design-to-make-virtual-events-more-social-24o"
target="_blank" rel="noopener">Using Game Design to Make Virtual Events More
Social</A><BR /><STRONG><I><A href="https://twitter.com/lazerwalker"
target="_blank" rel="noopener">Em Lazer-Walker</A></I></STRONG></P> <P>A few
months ago, I had a conundrum: I couldn't stand virtual conferences. I
personally go to in-per... Tagged with games, conferences, mud, events.</P>
<P>&nbsp;</P> <P><A
href="https://www.jimbobbennett.io/run-visual-studio-code-on-a-raspberry-pi/"
target="_blank" rel="noopener">Run Visual Studio Code on a Raspberry Pi</A><BR
/><STRONG><I><A href="https://twitter.com/jimbobbennett" target="_blank"
rel="noopener">Jim Bennett</A></I></STRONG></P> <P>It's finally here! An
official supported version of VS Code that runs on a Raspberry Pi! ICYMI: VS
Code now officially supports @Raspberry_Pi too!&nbsp;</P> <P>&nbsp;</P> <P><A
href="https://www.youtube.com/watch?v=3DgpVwnQ3V4" target="_blank"
rel="noopener">Demo JBoss EAP VMSS Quickstart</A><BR /><STRONG><I><A
href="https://twitter.com/skriemhild" target="_blank" rel="noopener">Sandra
Ahlgrimm</A></I></STRONG></P> <P>Theresa Nguyen, Senior Product Manager at
Microsoft showcases JBoss EAP on Azure VMSS Find more at <A
href="https://aka.ms/jbossEAP" target="_blank"
rel="noopener">https://aka.ms/jbossEAP</A> and <A
href="https://aka.ms/jboss-eap" target="_blank"
rel="noopener">https://aka.ms/jboss-eap</A> Get y...</P>
<P>&nbsp;</P></description>
<pubDate>Wed, 11 Nov 2020 20:01:42 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-saving-halloween-with-azure-maps/ba-p/1819428</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-11-11T20:01:42Z</dc:date>
...
</item>
<item>
<title>Check out new data science Learn modules inspired by the Netflix Original
Over the Moon</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/check-out-new-data-science-learn-modules-inspired-by-the-netflix/ba-p/1806363</link>
<description><P class="lia-align-left"><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="OTM_Final.JPG" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/228398i13F661BB9489BCFC/image-size/large?v=v2&amp;px=999"
role="button" title="OTM_Final.JPG" alt="OTM_Final.JPG" /></span></P>
<P>&nbsp;</P> <P>The need for more data scientists, machine learning experts,
and AI engineers in every industry is rapidly growing. These roles required a
broad set of skills from data analysis with no-code and low-code solutions to
designing and writing intricate machine learning models that solve some of our
planets most difficult problems. Microsoft is dedicated to providing high
quality, free content to help you develop your skills depending on your
professional goals and personal interests.</P> <P>&nbsp;</P> <P>One such
endeavor in creating an opportunity for you to learn and upskill is through
unique partnerships. In the summer of 2020 we launched a set of Microsoft Learn
modules inspired by real NASA scientists and engineers at <A
href="https://aka.ms/LearnInSpace" target="_blank"
rel="noopener">https://aka.ms/LearnInSpace</A>. And this Fall we are excited to
bring you three more Microsoft Learn modules inspired by the new <A
href="https://www.youtube.com/watch?v=26DIABx44Tw" target="_blank"
rel="noopener">Netflix Original Over the Moon</A>.</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="sguthals_0-1603321787474.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/228379iBEFCDB95D74DE4AD/image-size/medium?v=v2&amp;px=400"
role="button" title="sguthals_0-1603321787474.jpeg"
alt="sguthals_0-1603321787474.jpeg" /></span></P> <P>&nbsp;</P> <P>Fei Fei is a
young girl who builds a rocket to the Moon on a mission to prove the existence
of a legendary Moon Goddess. Fei Fei is fueled by the memories and love of her
mother to use her creativity, resourcefulness, determination, and imagination to
accomplish something beyond this world: reach the Moon. While the story takes
place in a beautifully drawn universe, it is directly related to the types of
problems real-life engineers face as they prepare and execute missions to the
Moon and beyond. These lessons are also on our<A
href="http://microsoft.com/inculture/over-the-moon/?ocid=AID3024378_QSG_485828#STEM"
target="_blank" rel="noopener"> Over the Moon InCulture site,</A> where you can
also find videos from the voice actors of the film and even a drawing tutorial
from director Glen Keane!</P> <P>&nbsp;</P> <P>And with these new resources you
can start your journey of using fiction to inspire solutions to real-world
problems. I’m not a NASA scientist or engineer, and I’ve never personally been
to the Moon, but I have skilled up in coding and data wrangling, allowing me to
take what I *do* know about space exploration and make predictions and new
discoveries through basic data science practices.</P> <P>So if you’re like me,
and you are interested in:</P> <UL> <LI>Space travel</LI> <LI>Moon missions</LI>
<LI>Rockets</LI> <LI>Moon rocks</LI> <LI>Animated films</LI> <LI>Fiction</LI>
<LI>Coding</LI> <LI>Python</LI> <LI>Data Science</LI> <LI>AI</LI> <LI>Problem
solving</LI> <LI>All of the above</LI> </UL> <P>Then, I invite you to not only
check out these <A href="https://aka.ms/LearnWithDrG/OverTheMoon"
target="_blank" rel="noopener">new Learn modules</A>, but also join me on my new
show,<A href="https://aka.ms/LearnWithDrG" target="_blank" rel="noopener"> Learn
with Dr G</A>, where I will dive into these modules and do some live coding! You
can find all the details below on all of the new learning resources and
opportunities related to space!</P> <P>&nbsp;</P> <P><span
class="lia-inline-image-display-wrapper lia-image-align-center"
image-alt="sguthals_1-1603321787516.jpeg" style="width: 400px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/228380i00866566231D2CE2/image-size/medium?v=v2&amp;px=400"
role="button" title="sguthals_1-1603321787516.jpeg"
alt="sguthals_1-1603321787516.jpeg" /></span></P> <P>&nbsp;</P> <H4>Watch <A
href="https://www.netflix.com/title/80214236" target="_blank"
rel="noopener">Over The Moon - now streaming on Netflix</A>!</H4> <P>&nbsp;</P>
<H2>Microsoft Learn Modules</H2> <H4><A
href="https://docs.microsoft.com/learn/modules/plan-moon-mission-using-python-pandas?WT.mc_id=OverTheMoon_InCulture_-web-cxa%20"
target="_blank" rel="noopener">Preparing for Moon Missions</A></H4> <P>Like Fei
Fei, use data to plan your own mission to the Moon. Ensure your rocket can not
only get you there, but also bring you and all your Moon rocks safely back to
Earth.&nbsp;Analyze and visualize datasets with common data cleansing practices
with <A
href="https://code.visualstudio.com/learntocode/?utm_source=MSLearn&amp;utm_medium=direct&amp;utm_campaign=PartnerLessons"
target="_blank" rel="noopener">Python in Visual Studio Code</A>.</P>
<P>&nbsp;</P> <H4><A
href="https://docs.microsoft.com/learn/modules/predict-meteor-showers-using-python/?WT.mc_id=OverTheMoon_InCulture_-web-cxa%20"
target="_blank" rel="noopener">Predict meteor showers</A></H4> <P><SPAN
class="TextRun SCXW199629723 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">B</SPAN></SPAN><SPAN class="TextRun
SCXW199629723 BCX8" data-contrast="auto"><SPAN class="NormalTextRun
SCXW199629723 BCX8" data-ccp-charstyle="normaltextrun">uild
a<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW199629723 BCX8"
data-contrast="auto"><SPAN class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">Machine
Learning<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW199629723
BCX8" data-contrast="auto"><SPAN class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">prediction model</SPAN></SPAN><SPAN
class="TextRun SCXW199629723 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun"><SPAN>&nbsp;</SPAN>after
cleansing<SPAN>&nbsp;</SPAN></SPAN></SPAN><SPAN class="TextRun SCXW199629723
BCX8" data-contrast="auto"><SPAN class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">a space-themed data set</SPAN></SPAN><SPAN
class="TrackChangeTextInsertion TrackedChange SCXW199629723 BCX8"><SPAN
class="TextRun SCXW199629723 BCX8" data-contrast="auto"><SPAN
class="NormalTextRun SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun"><SPAN>&nbsp;</SPAN>on meteor showers.
Incorporate Chang’e’s potential<SPAN>&nbsp;</SPAN></SPAN><SPAN
class="NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">affects</SPAN><SPAN class="NormalTextRun
SCXW199629723 BCX8" data-ccp-charstyle="normaltextrun"><SPAN>&nbsp;</SPAN>on
meteor showers for an added complexity</SPAN><SPAN class="NormalTextRun
ContextualSpellingAndGrammarErrorV2 SCXW199629723 BCX8"
data-ccp-charstyle="normaltextrun">.<SPAN>&nbsp;</SPAN></SPAN></SPAN></SPAN></P>
<P>&nbsp;</P> <H4><A
href="https://docs.microsoft.com/learn/modules/train-custom-vision-ai?WT.mc_id=OverTheMoon_InCulture_-web-cxa%20"
target="_blank" rel="noopener">Find Bungee on the Moon</A></H4> <P>Repurposing
the camera on the Lunar Rover, search through the Moon’s surface for Fei Fei’s
buddy Bungee before it’s time to head back to Earth. Use <A
href="https://azure.microsoft.com/services/cognitive-services/" target="_blank"
rel="noopener">Azure Custom Vision</A> to Classify pictures of animals (like
Bungee, main character Fei Fei’s pet) without ever writing code.</P>
<P>&nbsp;</P> <H2>Learn with Dr G Live Streams and Episodes</H2> <H4><A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/Over-the-Moon-Learn-Lessons-Overview/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener"><STRONG>Intro to the Over the Moon
Modules</STRONG></A></H4> <P>Completing a successful Moon Mission doesn't only
involve getting to the moon, but also returning safely to Earth – ideally with
some rocks to learn from! Join Dr. G as she draws inspiration from the
new&nbsp;<A href="https://www.netflix.com/title/80214236" target="_blank"
rel="noopener">Netflix Original Over the Moon</A>&nbsp;and the ingenuity of the
NASA Apollo missions to analyze and clean data to predict how much moon rock
astronauts might be able to bring back as part of the Artemis Program in 2024.
No coding experience required, and you can follow along with the free Microsoft
Learn lessons at&nbsp;<A href="https://aka.ms/LearnWithDrG/OverTheMoon"
target="_blank" rel="noopener">https://aka.ms/LearnWithDrG/OverTheMoon</A>.</P>
<P>&nbsp;</P> <H4><A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/Datas-Role-in-Moon-Missions-Fictional-and-Real/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener"><STRONG>Data’s Role in Moon Missions: Fictional
and Real </STRONG></A></H4> <P>Completing a successful Moon Mission doesn’t only
involve getting to the moon, but also returning safely to Earth – ideally with
some rocks to learn from! Join Dr. G as she draws inspiration from the film and
the ingenuity of the NASA Apollo missions to analyze and clean data to predict
how much moon rock astronauts might be able to bring back as part of the Artemis
Program in 2024.</P> <P>&nbsp;</P> <H4><STRONG>Predicting Meteor Showers Using
Python and Visual Studio Code</STRONG></H4> <P>(<A
href="https://www.meetup.com/Microsoft-Reactor-Redmond/events/273465419/"
target="_blank" rel="noopener">Sign up for Live Stream on October 27th here</A>,
<A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener">Available on-demand on October 30th here</A>)</P>
<P>In the film, Fei Fei builds a rocket to fly to the Moon to meet the Moon
Goddess Chang’e. It is said that when Chang’e cries, her tears are the shooting
starts we see in our night sky. This inspired Dr G to deep dive into what meteor
showers actually are and how they are predicted. Join this live stream as Dr G
explores how data science plays a role in predicting celestial events, and even
brings in a little magic from the film to predict when we could have seen the
meteor shower caused by Chang’e from Fei Fei’s visit.</P> <P>&nbsp;</P>
<H4><STRONG>Use Azure Custom Vision to Repurpose the Lunar Rover</STRONG></H4>
<P>(<A
href="https://channel9.msdn.com/Shows/Learn-with-Dr-G/?WT.mc_id=LearnDrG-c9-niner"
target="_blank" rel="noopener">Available on-demand on October 30th here</A>)</P>
<P>The Lunar rover has been instrumental in helping us advance our understanding
of the Moon and our Universe, and in the new film it even makes an appearance
when Fei Fei lands on the moon with her buddy Bungee and brother Chin! This
inspired Dr G. to think about a scenario where Fei Fei brought her own Lunar
rover to the Moon to take pictures and send them back to her once she returned
to Earth. In this video, Dr. G will build an image classifier using Azure Custom
Vision to identify Bungee so that if Bungee is ever on the Moon without Fei Fei,
her Lunar Rover can send down pics of Bungee exploring the surface, and avoid
sending pictures of rocks.</P></description>
<pubDate>Fri, 23 Oct 2020 17:58:53 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/check-out-new-data-science-learn-modules-inspired-by-the-netflix/ba-p/1806363</guid>
<dc:creator>sguthals</dc:creator>
<dc:date>2020-10-23T17:58:53Z</dc:date>
...
</item>
<item>
<title>[Mitigated] DevTest Labs Outage: Certain lab operations may fail due to
an ARM outage</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-certain-lab-operations-may-fail/ba-p/1797510</link>
<description><P>Update: We would like to inform you that the issue is mitigated
as of 12:00 AM UTC on 19th Oct 2020.&nbsp;</P> <P>&nbsp;</P> <P>Please add a
comment if you are still experiencing any issues within DevTest Labs.</P>
<P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="AzureStatus.png" style="width: 452px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233468i2050CA62FA333C71/image-dimensions/452x226?v=v2"
width="452" height="226" role="button" title="AzureStatus.png"
alt="AzureStatus.png" /></span></P> <P>&nbsp;</P>
<P>----------------------------------------------------------------------------------------------------------------</P>
<P>We would like to inform you that starting&nbsp;<SPAN>18:35 UTC on 19 Oct
2020,</SPAN> we are currently investigating an issue where certain lab
operations may fail. Based on our current investigation, this is happening due
to an outage within the Azure Resource Manager. More details on the outage
here:&nbsp;<A
href="https://status.azure.com/en-us/status?service=cognitive-services"
target="_blank"
rel="noopener">https://status.azure.com/en-us/status?service=cognitive-services</A></P>
<P>&nbsp;</P> <P>Following lab operations may not work as expected during this
time:&nbsp;</P> <UL> <LI>Creating/ updating/ deleting lab virtual machines</LI>
<LI>Creating custom images, formulas</LI> <LI>Setting lab schedules&nbsp;</LI>
</UL> <P>&nbsp;</P> <P>Our team continues to work on a fix and we will update
this post to share regular updates.&nbsp;</P> <P>&nbsp;</P> <P>We apologize for
the inconvenience and thank you for your patience.&nbsp;</P> <P>&nbsp;</P>
<P>-DevTest Labs Team<BR />&nbsp;</P> <P>&nbsp;</P></description>
<pubDate>Fri, 13 Nov 2020 17:31:07 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/mitigated-devtest-labs-outage-certain-lab-operations-may-fail/ba-p/1797510</guid>
<dc:creator>TanmayeeKamath</dc:creator>
<dc:date>2020-11-13T17:31:07Z</dc:date>
...
</item>
<item>
<title>Azure Advocates Weekly Round Up - Security, JavaScript, and more M365
this week!</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-security-javascript-and-more/ba-p/1795800</link>
<description><P><span class="lia-inline-image-display-wrapper
lia-image-align-inline" image-alt="Attackers.png" style="width: 514px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/233474i74491F50DC7F25DD/image-size/large?v=v2&amp;px=999"
role="button" title="Attackers.png" alt="Attackers.png" /></span></P>
<P>&nbsp;</P> <P><A href="https://aka.ms/createa11y" target="_blank"
rel="noopener">How does accessibility fit into an MVP? | Creating
Startups</A><BR /><STRONG><I><A href="https://twitter.com/simona_cotin"
target="_blank" rel="noopener">Simona Cotin</A></I></STRONG></P> <P>This is a
guest post by Obinna Ekwuno, software engineer at Gatsby and Marcy Sutton,
freelance web developer and accessibility specialist. Read more about Obinna and
Marcy at the end of this article. Accessibility has become a buzz word for
making sure that disabled users get a fair experience when interfacing with
platforms on the web or on mobile.</P> <P>&nbsp;</P> <P><A
href="https://github.com/OfficeDev/M365Bootcamp-TeamsOneProductivityHub"
target="_blank"
rel="noopener">OfficeDev/M365Bootcamp-TeamsOneProductivityHub</A><BR
/><STRONG><I><A href="https://twitter.com/aycabs" target="_blank"
rel="noopener">Ayca Bas</A></I></STRONG></P> <P>Use Microsoft Graph Toolkit to
build a solution for Microsoft Teams that will track daily calendar, tasks and
e-mails in a Teams Tab as one productivity hub. -
OfficeDev/M365Bootcamp-TeamsOneProductivityHub</P> <P>&nbsp;</P> <P><A
href="https://acloudguru.com/blog/engineering/how-to-develop-serverless-apps-with-github-codespaces"
target="_blank" rel="noopener">How to Develop Serverless Apps with GitHub
Codespaces | A Cloud Guru</A><BR /><STRONG><I>Alvaro Videla
Godoy</I></STRONG></P> <P>Want to develop a serverless app with Codespaces? This
tutorial will show you how to get an Azure Functions &amp; Static Web App
project ready.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azure-stack-hub-partner-solutions-series-ivedha/ba-p/1778793?WT.mc_id=modinfra-8957-thmaure"
target="_blank" rel="noopener">Azure Stack Hub Partner Solutions Series -
iVedha</A><BR /><STRONG><I><A href="https://twitter.com/ThomasMaurer"
target="_blank" rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Aytra was
borne as an ISV solution aimed at enabling partners in their Azure Stack Hub
journey. Check it out!</P> <P>&nbsp;</P> <P><A
href="https://speakerdeck.com/nitya/intro-to-mobile-development" target="_blank"
rel="noopener">Intro to Mobile Development</A><BR /><STRONG><I><A
href="https://twitter.com/nitya" target="_blank" rel="noopener">Nitya
Narasimhan</A></I></STRONG></P> <P>Mobile app development is both a huge
opportunity and a constant challenge. In this talk we’ll look at the mobile
development landscape – from native apps to multi-platform development and
mobile web. We’ll talk about design challenges and personalizing user
experiences to match diverse contexts. And we’ll look at emerging paradigms in
dual-screen and multi-posture devices (e.g., Surface Duo) and talk about how we
can leverage these technological advances to rethink the modern mobile app.</P>
<P>&nbsp;</P> <P><A href="https://www.youtube.com/watch?v=Vs_8bh4jOIA"
target="_blank" rel="noopener">Microsoft 365 PnP Weekly – Episode 100</A><BR
/><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>A weekly discussion of the
latest news and topics around Microsoft 365</P> <P>&nbsp;</P> <P><A
href="https://devblogs.microsoft.com/devops/what-is-infrastructure-as-code/?WT.mc_id=devops-9609-jagord"
target="_blank" rel="noopener">What is infrastructure as code? | Azure DevOps
Blog</A><BR /><STRONG><I><A href="https://twitter.com/jaydestro" target="_blank"
rel="noopener">Jay Gordon</A></I></STRONG></P> <P>What is infrastructure as
code? Microsoft Azure provides you with a number of options to deploy your
infrastructure. In the One Dev Question series, Cloud Developer Advocate Abel
Wang explains how Azure DevOps provides developer services to support teams to
plan work...</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/top-10-best-practices-for-azure-security/ba-p/1770087?WT.mc_id=modinfra-9720-socuff"
target="_blank" rel="noopener">Top 10 Best Practices for Azure Security</A><BR
/><STRONG><I><A href="https://twitter.com/SoniaCuff" target="_blank"
rel="noopener">Sonia Cuff</A></I></STRONG></P> <P>Mark Simos, lead Cyber
security architect for Microsoft, explored the lessons learned from protecting
both Microsoft's own technology environments and the responsibility we have to
our customers, and shares the top 10 (+1!) recommendations for Azure security
best practices.</P> <P>&nbsp;</P> <P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/what-is-azure-hybrid-benefit/ba-p/1764400?WT.mc_id=modinfra-9767-salean"
target="_blank" rel="noopener">What is Azure Hybrid Benefit?</A><BR
/><STRONG><I><A href="https://twitter.com/techielass" target="_blank"
rel="noopener">Sarah Lean</A></I></STRONG></P> <P>The Azure Hybrid Benefit can
help you save move when you are running your workloads within Azure by
leveraging your on prem licenses, find out more in this blog post.&nbsp;</P>
<P>&nbsp;</P> <P><A
href="https://www.thomasmaurer.ch/2020/10/automanage-for-azure-virtual-machines/"
target="_blank" rel="noopener">Automanage for Azure virtual machines</A><BR
/><STRONG><I><A href="https://twitter.com/ThomasMaurer" target="_blank"
rel="noopener">Thomas Maurer</A></I></STRONG></P> <P>Azure Automanage for
virtual machines is a service that helps to discover, onboard, and configure
Azure Management services for Azure VMs.</P> <P>&nbsp;</P> <P><A
href="https://dev.to/lazerwalker/running-a-virtual-conference-roguelike-celebration-s-av-setup-44hk"
target="_blank" rel="noopener">Running A Virtual Conference: Roguelike
Celebration’s AV Setup </A><BR /><STRONG><I><A
href="https://twitter.com/lazerwalker" target="_blank" rel="noopener">Em
Lazer-Walker</A></I></STRONG></P> <P>The Roguelike Celebration conference has
been running for five years, but two weeks ago marks our fir... Tagged with
streaming, events, conferences, twitch.</P> <P>&nbsp;</P> <P><A
href="https://github.com/DanWahlin/Fluidvue" target="_blank"
rel="noopener">DanWahlin/FluidVue</A><BR /><STRONG><I><A
href="https://twitter.com/danwahlin" target="_blank" rel="noopener">Dan
Wahlin</A></I></STRONG></P> <P>Contribute to DanWahlin/FluidVue development by
creating an account on GitHub.</P> <P>&nbsp;</P> <P><A
href="https://devkimchi.com/2020/10/14/lets-encrypt-ssl-certificate-on-azure-functions/"
target="_blank" rel="noopener">Adding Let's Encrypt SSL Certificate to Azure
Functions</A><BR /><STRONG><I><A href="https://twitter.com/justinchronicle"
target="_blank" rel="noopener">Justin Yoo</A></I></STRONG></P> <P>This post
shows how to generate an SSL certificate through Let's Encrypt API and bind the
certificate to the custom APEX domain on Azure Functions app.</P> <P>&nbsp;</P>
<P><A
href="https://techcommunity.microsoft.com/t5/itops-talk-blog/azupdate-microsoft-365-apps-admin-center-azure-site-recovery-tls/ba-p/1785491?WT.mc_id=modinfra-9985-abartolo"
target="_blank" rel="noopener">AzUpdate: Microsoft 365 Apps Admin Center, Azure
Site Recovery TLS Certificate Changes and more</A><BR /><STRONG><I><A
href="https://twitter.com/wirelesslife" target="_blank" rel="noopener">Anthony
Bartolo</A></I></STRONG></P> <P>Lots to share in the world of Microsoft services
this week. News includes Microsoft 365 Apps Admin Center's new inventory &amp;
monthly servicing feature currently in preview, Azure Cognitive Services has
achieved human parity in image captioning, Azure Site Recovery TLS Certificate
Changes, Static Web App PR Workflow for Azure App Service using Azure DevOps,
and of course the Microsoft Learn Module of the week.</P> <P>&nbsp;</P> <P><A
href="https://blog.mastykarz.nl/250-million-reasons-build-applications-microsoft-365/"
target="_blank" rel="noopener">250 million reasons to build applications on
Microsoft 365</A><BR /><STRONG><I>Waldek Mastykarz</I></STRONG></P> <P>You might
have heard of Microsoft Teams, Outlook, or SharePoint. But did you know that
next to being some of the most popular applications from Microsoft, they are a
part of a highly extensible development platform with a rich partner
ecosystem?</P> <P>&nbsp;</P> <P><A
href="https://www.aaron-powell.com/posts/2020-10-13-want-to-learn-javascript-weve-got-a-series-for-you/"
target="_blank" rel="noopener">Want to Learn JavaScript? We've Got a Series for
You! | LINQ to Fail</A><BR /><STRONG><I><A href="https://twitter.com/slace"
target="_blank" rel="noopener">Aaron Powell</A></I></STRONG></P> <P>Get ready to
dive into all things JavaScript.</P> <P>&nbsp;</P></description>
<pubDate>Fri, 13 Nov 2020 18:10:17 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-advocates-weekly-round-up-security-javascript-and-more/ba-p/1795800</guid>
<dc:creator>spboyer</dc:creator>
<dc:date>2020-11-13T18:10:17Z</dc:date>
...
</item>
<item>
<title>Azure DevTest Labs available in UAE North, Germany West Central and
Norway East regions</title>
<link>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-devtest-labs-available-in-uae-north-germany-west-central/ba-p/1769281</link>
<description><P><A href="https://aka.ms/dtl" target="_blank" rel="noopener
noopener noreferrer" data-event="page-clicked-link"
data-bi-id="page-clicked-link" data-bi-an="undefined"
data-bi-tn="undefined">Azure DevTest Labs</A><SPAN>&nbsp;</SPAN><SPAN>is now
available in the UAE North, Germany West Central and Norway East regions. The
support includes full Azure DevTest Labs capabilities. To see&nbsp;the other
supported regions for DevTest Labs,&nbsp;see Azure&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fazure.microsoft.com%2Fen-us%2Fregions%2Fservices%2F&amp;data=02%7C01%7CTanmayee.Kamath%40microsoft.com%7C4e6764f82fcf4305170408d7f2b18ece%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637244716734847958&amp;sdata=t1%2B48uITWBLD3DFn4qHzoUdOjtjWFgaNaTh0MP1iNEo%3D&amp;reserved=0"
target="_blank" rel="noopener nofollow noopener noreferrer"
data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">products available by
region</A><SPAN>.&nbsp;</SPAN></P> <P>&nbsp;</P> <P><SPAN><span
class="lia-inline-image-display-wrapper lia-image-align-inline"
image-alt="Capture (1).PNG" style="width: 999px;"><img
src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/225843iEED8802282F5872E/image-size/large?v=v2&amp;px=999"
role="button" title="Capture (1).PNG" alt="Capture (1).PNG" /></span></SPAN></P>
<P>&nbsp;</P> <P>Get started by visiting the<SPAN>&nbsp;</SPAN><A
href="https://docs.microsoft.com/en-us/azure/devtest-labs/" target="_blank"
rel="noopener noopener noreferrer" data-event="page-clicked-link"
data-bi-id="page-clicked-link" data-bi-an="undefined"
data-bi-tn="undefined">DevTest Labs documentation</A>.&nbsp;</P> <P>&nbsp;</P>
<P><SPAN>Try it today and let us know what you think. If you have an idea or
feedback, go to the&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ffeedback.azure.com%2Fforums%2F320373-azure-devtest-labs&amp;data=02%7C01%7CTanmayee.Kamath%40microsoft.com%7C4e6764f82fcf4305170408d7f2b18ece%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637244716734857914&amp;sdata=eDdD1dzKcQMrJsCnm5KJv2NySnPD%2BP08QsqzsuHn5SY%3D&amp;reserved=0"
target="_blank" rel="noopener nofollow noopener noreferrer"
data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">Azure DevTest Labs feedback
forum</A><SPAN>.</SPAN></P> <P>&nbsp;</P> <P><SPAN>If you or your customers have
questions, post them on the&nbsp;</SPAN><A
href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fanswers%2Ftopics%2Fazure-devtestlabs.html&amp;data=02%7C01%7CTanmayee.Kamath%40microsoft.com%7C4e6764f82fcf4305170408d7f2b18ece%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637244716734867870&amp;sdata=fow%2B33ifa%2FgvxFc8OUeYO1HTioMVlyeT%2FHUEqXMypUM%3D&amp;reserved=0"
target="_blank" rel="noopener nofollow noopener noreferrer"
data-event="page-clicked-link" data-bi-id="page-clicked-link"
data-bi-an="undefined" data-bi-tn="undefined">Azure DevTest Labs
forum</A><SPAN>.</SPAN></P> <P>&nbsp;</P></description>
<pubDate>Mon, 12 Oct 2020 15:00:00 GMT</pubDate>
<guid>https://techcommunity.microsoft.com/t5/azure-developer-community-blog/azure-devtest-labs-available-in-uae-north-germany-west-central/ba-p/1769281</guid>
<dc:creator>TanmayeeKamath</dc:creator>
<dc:date>2020-10-12T15:00:00Z</dc:date>
...
</item>
...
</channel>
...
</rss>