<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Frederik Van Lierde</title>
    <description>The latest articles on DEV Community by Frederik Van Lierde (@frederik_vl).</description>
    <link>https://dev.to/frederik_vl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F923021%2Fae8e085a-2abe-4da4-bbb9-0ad3809a9ef6.jpg</url>
      <title>DEV Community: Frederik Van Lierde</title>
      <link>https://dev.to/frederik_vl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frederik_vl"/>
    <language>en</language>
    <item>
      <title>Error Handling in Power Automate Loops</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Fri, 12 Apr 2024 12:41:14 +0000</pubDate>
      <link>https://dev.to/frederik_vl/error-handling-in-power-automate-loops-1h6l</link>
      <guid>https://dev.to/frederik_vl/error-handling-in-power-automate-loops-1h6l</guid>
      <description>&lt;p&gt;When working with automated workflows in Power Automate, we often encounter tasks that need to run repeatedly through loops. A common challenge arises when some of these tasks might fail, for instance, due to external dependencies or unexpected input values. In such cases, allowing the entire flow to fail isn't ideal. Instead, we want to handle these errors gracefully.&lt;/p&gt;

&lt;p&gt;Take, for example, a scenario where we're setting permissions for a list of users on SharePoint items. Not all users might be recognized by SharePoint due to various reasons like misspellings or account issues. &lt;/p&gt;

&lt;p&gt;If a user isn't found, the action to set permissions fails. However, rather than stopping the whole process, it’s beneficial to capture these errors, continue setting permissions for other users, and send a notification detailing the issues encountered.&lt;/p&gt;

&lt;p&gt;This approach ensures that one error doesn't halt the progress of the entire workflow, and we remain informed about which users need our attention. In the upcoming sections, we'll explore how to effectively use Power Automate to manage such errors, ensuring our workflows are both robust and informative.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Flow
&lt;/h2&gt;

&lt;p&gt;I made a simple flow, as I want to show the basics&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The Steps
&lt;/h2&gt;

&lt;p&gt;The main part of the solution is to set the scope (or the action) to execute only when their is a failure&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;settings&lt;/strong&gt; of the &lt;strong&gt;Scope (or action)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Run After&lt;/strong&gt;, click the arrow &lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Has Failed&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;De-Select &lt;strong&gt;Is successful&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;p&gt;When the previous access failed, execute and continue, when the previous action  is successful, do nothing and continue with the loop&lt;/p&gt;

</description>
      <category>powerautomate</category>
    </item>
    <item>
      <title>For Next Loop in PowerAutomate (Easy)</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Wed, 20 Mar 2024 09:03:21 +0000</pubDate>
      <link>https://dev.to/frederik_vl/for-next-loop-in-powerautomate-easy-9oc</link>
      <guid>https://dev.to/frederik_vl/for-next-loop-in-powerautomate-easy-9oc</guid>
      <description>&lt;p&gt;We all know the 2 types of loops in PowerAutomate&lt;br&gt;
&lt;strong&gt;1. Apply to Each:&lt;/strong&gt;&lt;br&gt;
This is the primary loop mechanism used in Power Automate for iterating over a collection of items, such as arrays. &lt;/p&gt;

&lt;p&gt;When you have a list of items and you want to perform certain actions for each item individually, this is the loop you use. Power Automate takes care of the iteration, applying the actions you've defined to each item in the collection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Do Until:&lt;/strong&gt;&lt;br&gt;
This loop performs actions repeatedly until a specified condition is met. &lt;/p&gt;

&lt;p&gt;It's useful when you're not sure how many iterations you'll need, but you have a clear condition that determines when the loop should stop. &lt;/p&gt;

&lt;p&gt;This allows for repeating actions based on dynamic conditions that might change with each iteration of the loop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7buuw0rhiyzk30axmwf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7buuw0rhiyzk30axmwf.png" alt="Available Loop Action in Power Automate" width="770" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What about For Next Loops?
&lt;/h2&gt;

&lt;p&gt;"For Next"-loops are essential when you need to execute a block of code a specific number of times, especially when you're working with indexes or counters. &lt;/p&gt;

&lt;p&gt;They provide a precise control mechanism for iterating through a sequence or range of values.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create a For Next Loop in PowerAutomate?
&lt;/h2&gt;

&lt;p&gt;The simple trick is to add as  Input for an "Apply to Each" action a Range function&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a "Apply to Each" action to your flow
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1b9t9kzqe5dd1td0aek.png" alt="PowerAutomate ForNext Loop" width="800" height="474"&gt;
&lt;/li&gt;
&lt;li&gt;As Input set "range(0,x)" where x is the number of loops you like to execute
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ofa1qalhav7c15wiib7.png" alt="PowerAutomate ForNext Loop Range Function" width="800" height="237"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The loop will execute X times.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>powerautomate</category>
    </item>
    <item>
      <title>Power Automate - How to use AutoHeight with Multiline Input Textbox Fields</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Mon, 18 Mar 2024 08:29:33 +0000</pubDate>
      <link>https://dev.to/frederik_vl/power-automate-how-to-use-autoheight-with-multiline-input-textbox-fields-4oik</link>
      <guid>https://dev.to/frederik_vl/power-automate-how-to-use-autoheight-with-multiline-input-textbox-fields-4oik</guid>
      <description>&lt;p&gt;Let's tackle a common challenge for those working with SharePoint lists, especially when dealing with columns that include multiline text. &lt;/p&gt;

&lt;p&gt;If you've ever tried to customize these lists, you've likely noticed that the Input Text control doesn't automatically adjust its height based on the content. &lt;/p&gt;

&lt;p&gt;This lack of an autoheight feature forces you to set a fixed height for the control. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The downside?&lt;/strong&gt;&lt;br&gt;
When there's only a line of text, you end up with an excessive amount of unused space. Conversely, if the text spills over multiple lines, the control introduces scroll bars, making the user experience less than ideal.&lt;/p&gt;

&lt;p&gt;This article will showcase a solution that seamlessly displays the entirety of the multiline text in both View and Edit modes, eliminating unnecessary scroll bars. &lt;/p&gt;

&lt;p&gt;Additionally, when the text box is empty or contains just a single line, it maintains a minimum height, enhancing the form's overall aesthetics and user friendliness.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The following image shows the standard multiline textbox, containing 1 line in edit mode&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81cnl137yde1u0rfoijc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81cnl137yde1u0rfoijc.png" alt="PowerApps - Standard Multiline Textbox with 1 lines" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The following image shows the standard multiline textbox, containing multiple lines in edit mode, as you can see, the user get a scrollbar, which is not user-friendly&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flundmhqrpa00qxfq06b1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flundmhqrpa00qxfq06b1.png" alt="PowerApps - Standard Multiline Textbox with multiple lines" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The following image shows the the results after the step by step guide, creating a multiline textbox, containing multiple lines in edit mode, with &lt;strong&gt;AutoHeight&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly4k09sswj363nxba3nx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly4k09sswj363nxba3nx.png" alt="PowerApps - Standard Multiline Textbox with multiple lines and AutoHeight" width="800" height="238"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by Step Guide
&lt;/h2&gt;

&lt;p&gt;When the multiline field contains 1 or more lines, the following solution will adapt the Input Text Box accordingly&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your SharePoint click &lt;strong&gt;Customize Forms&lt;/strong&gt; to open Power Apps&lt;/li&gt;
&lt;li&gt;Select DataCard for the multiline field&lt;/li&gt;
&lt;li&gt;Add Label Input to that DataCard&lt;/li&gt;
&lt;li&gt;Set the width the same as the Text Input, as well as the X and Y&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;AutoHeight&lt;/strong&gt; of the Label Input to &lt;strong&gt;true&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Wrap&lt;/strong&gt; of the Label Input to &lt;strong&gt;true&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Text&lt;/strong&gt; of the Label Input to &lt;strong&gt;Parent.Default&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Visible&lt;/strong&gt; of the Label Input to &lt;strong&gt;Parent.DisplayMode = Displaymode.View&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Visible&lt;/strong&gt; of the Text Input to &lt;strong&gt;Parent.DisplayMode &amp;lt;&amp;gt; Displaymode.View&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Height&lt;/strong&gt; of the Text Input to &lt;strong&gt;Max(lbl.Height + 16, 100)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>powerapps</category>
      <category>sharepoint</category>
    </item>
    <item>
      <title>Power Automate: How to trigger a flow only when specific field(s) have certain values</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Wed, 06 Mar 2024 12:50:23 +0000</pubDate>
      <link>https://dev.to/frederik_vl/power-automate-how-to-trigger-a-flow-only-when-specific-fields-have-certain-values-11k9</link>
      <guid>https://dev.to/frederik_vl/power-automate-how-to-trigger-a-flow-only-when-specific-fields-have-certain-values-11k9</guid>
      <description>&lt;h2&gt;
  
  
  What is Power Automate
&lt;/h2&gt;

&lt;p&gt;Power Automate is a tool that helps you automate tasks and workflows across your favorite apps and services, without needing any coding skills. &lt;/p&gt;

&lt;p&gt;With Power Automate, you can streamline processes, integrate different apps, and automate routine tasks, so you can focus on more important things. &lt;/p&gt;

&lt;p&gt;Whether it's sending emails, updating spreadsheets, or triggering notifications, Power Automate makes it easy to automate everyday tasks and boost productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Power Automate Triggers?
&lt;/h2&gt;

&lt;p&gt;Power Automate Triggers are like the starting points for your automated workflows. They're the events or actions that kick off a series of tasks or actions within Power Automate. Think of them as the "if this happens, then do that" moments in your workflow.&lt;/p&gt;

&lt;p&gt;For example, a trigger could be receiving an email in your inbox, a new file being added to a folder in OneDrive, or a new tweet being posted. These triggers are what signal Power Automate to start running your automated process.&lt;/p&gt;

&lt;p&gt;Once a trigger is activated, Power Automate can then perform a sequence of actions, like sending an email, creating a new record in a database, or updating a spreadsheet. Triggers are essential because they determine when your automation begins and what actions it should take based on certain conditions or events.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to trigger a Power Automate flow ONLY when a specific field has a certain value?
&lt;/h2&gt;

&lt;p&gt;Let's say you're managing a project using a SharePoint list to keep track of tasks, deadlines, and team members. &lt;/p&gt;

&lt;p&gt;You want to be instantly notified whenever a task status changes to "Ready To Test" in that list. You don't want the flow to be triggered when a new item is created, or other fields are updated&lt;/p&gt;

&lt;p&gt;With Power Automate, you can set up a trigger that activates a workflow whenever a specific column, like "Task Status," is modified in your SharePoint list.&lt;/p&gt;

&lt;h3&gt;
  
  
  The SharePoint List
&lt;/h3&gt;

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

&lt;h3&gt;
  
  
  The Power Automate Flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a new Flow&lt;/li&gt;
&lt;li&gt;Add as Trigger "When an item is created or modified" (SharePoint Action)&lt;/li&gt;
&lt;li&gt;Select your SharePoint and List Name&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9cr0ijid7w8rd1fau1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9cr0ijid7w8rd1fau1a.png" alt="Power Automate SharePoint Trigger" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add you trigger.  In our example, we check if the column &lt;strong&gt;Task Status&lt;/strong&gt; is modified to &lt;strong&gt;Ready to Test&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtww5qm8h1t8lvhxldmt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtww5qm8h1t8lvhxldmt.png" alt="Power Automate SharePoint trigger settings" width="768" height="717"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@equals(triggerOutputs()?['body']['TaskStatus']?['Value'],'Ready to Test')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our &lt;strong&gt;Task Status&lt;/strong&gt; column is a choice column with 4 choices.&lt;br&gt;
You can also use the ID of the choice instead of the Text&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@equals(triggerOutputs()?['body']['TaskStatus']?['Id'],2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to trigger a Power Automate flow ONLY when a 2 columns have a certain value?
&lt;/h2&gt;

&lt;p&gt;In out example, let's add a column &lt;strong&gt;Signed Off&lt;/strong&gt; which is a &lt;strong&gt;Yes/No&lt;/strong&gt; column and we want the flow only executed when Task Status is 'Ready to Test' and Signed Off is true &lt;/p&gt;

&lt;p&gt;The solution is to use the &lt;strong&gt;and&lt;/strong&gt; function&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@and(equals(triggerOutputs()?['body']['TaskStatus']?['Id'],2),equals(triggerOutputs()?['body']['SignedOff'],true))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Extras
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Instead of using the &lt;strong&gt;and&lt;/strong&gt; function you can also use the &lt;strong&gt;or&lt;/strong&gt; function&lt;/li&gt;
&lt;li&gt;This solution also work for &lt;strong&gt;LookUp&lt;/strong&gt; and &lt;strong&gt;Calculated Columns&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;In case the user creates a new item, and set the specific fields to the certain values, the flow will work as well.&lt;/li&gt;
&lt;li&gt;You can add more columns and make it as complex as needed&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>powerautomate</category>
    </item>
    <item>
      <title>How to Check Power Automate Version</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Mon, 26 Feb 2024 09:29:37 +0000</pubDate>
      <link>https://dev.to/frederik_vl/how-to-check-power-automate-version-2al8</link>
      <guid>https://dev.to/frederik_vl/how-to-check-power-automate-version-2al8</guid>
      <description>&lt;h2&gt;
  
  
  What is Power Automate?
&lt;/h2&gt;

&lt;p&gt;Power Automate is a tool that helps you automate repetitive tasks and streamline business processes without needing to write code. &lt;/p&gt;

&lt;p&gt;Essentially, it's like having a virtual assistant that can handle routine tasks for you. With Power Automate, you can create automated workflows that connect different apps and services, allowing data to flow seamlessly between them. &lt;/p&gt;

&lt;p&gt;Whether it's sending notifications, updating spreadsheets, or processing forms, Power Automate empowers you to automate a wide range of tasks, saving you time and effort so you can focus on more important work. &lt;/p&gt;

&lt;p&gt;It's a game-changer for boosting productivity and efficiency in both personal and professional settings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Is It Important to Check the Version of Power Automate?
&lt;/h2&gt;

&lt;p&gt;Knowing the version helps you stay informed about any new features, updates, or bug fixes that may have been released. This ensures that you are leveraging the latest capabilities and improvements to optimize your workflows and processes. &lt;/p&gt;

&lt;p&gt;Checking the version allows you to ensure compatibility with other tools and services that you may be integrating with Power Automate. &lt;/p&gt;

&lt;p&gt;By staying up-to-date with the latest version, you can take advantage of enhanced functionality and security measures, while also ensuring that your automation efforts remain efficient and effective. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to find the Version of Power Automate?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to your Power Automate Environment &lt;a href="https://make.powerautomate.com/"&gt;https://make.powerautomate.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click the Settings (gear button) in the top-right menu
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpuv5c8fqu8h7yr04h7y.png" alt="Power Automate Settings" width="473" height="298"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;View my licenses&lt;/strong&gt;
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p6enqoge2azwiu6c66u.png" alt="Power Automate License" width="500" height="492"&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>powerautomate</category>
    </item>
    <item>
      <title>Dependency Injection in C#: A Practical Guide for Developers</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Thu, 25 Jan 2024 14:08:03 +0000</pubDate>
      <link>https://dev.to/frederik_vl/dependency-injection-in-c-a-practical-guide-for-developers-40df</link>
      <guid>https://dev.to/frederik_vl/dependency-injection-in-c-a-practical-guide-for-developers-40df</guid>
      <description>&lt;p&gt;Dependency Injection (DI) is a vital technique in modern C# development, promoting cleaner and more efficient code. &lt;/p&gt;

&lt;p&gt;At its core, DI involves supplying objects with their dependencies from outside, rather than having them create dependencies themselves. This concept, while simple, can have profound implications on how you structure and manage your C# applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Dependency Injection through an Example
&lt;/h2&gt;

&lt;p&gt;Let’s take a practical example to understand DI better. Consider a C# application with a class named &lt;code&gt;EmailService&lt;/code&gt; that depends on a &lt;code&gt;Logger&lt;/code&gt; class to log messages.&lt;/p&gt;

&lt;p&gt;Without DI, &lt;code&gt;EmailService&lt;/code&gt; might directly instantiate &lt;code&gt;Logger&lt;/code&gt;. With DI, &lt;code&gt;Logger&lt;/code&gt; is instead provided to &lt;code&gt;EmailService&lt;/code&gt;, typically through a constructor, like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EmailService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;ILogger&lt;/span&gt; &lt;span class="n"&gt;_logger&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;EmailService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ILogger&lt;/span&gt; &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;_logger&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This simple shift has powerful implications for your code's flexibility and maintainability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Benefits of Dependency Injection&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced Coupling:&lt;/strong&gt; DI makes classes less dependent on specific implementations of their dependencies, thus promoting looser coupling.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Testability:&lt;/strong&gt; It's easier to test classes by injecting mock dependencies, allowing for more effective unit testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Code Maintenance:&lt;/strong&gt; Changes to dependencies have minimal impact on classes using them, making the codebase easier to maintain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increased Flexibility and Scalability:&lt;/strong&gt; DI makes it easier to swap out implementations or scale the application without major code revisions.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Implementing Dependency Injection in C#
&lt;/h2&gt;

&lt;p&gt;C# developers typically use DI in three ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Constructor Injection:&lt;/strong&gt; The most common form of DI, where dependencies are provided via class constructors.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;OrderProcessor&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;IDatabase&lt;/span&gt; &lt;span class="n"&gt;_database&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;OrderProcessor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IDatabase&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;_database&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Property Injection:&lt;/strong&gt; Here, dependencies are set via properties. This is useful when the dependency is optional.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;ILogger&lt;/span&gt; &lt;span class="n"&gt;Logger&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Method Injection:&lt;/strong&gt; Dependencies are provided through methods. This is less common but useful in specific scenarios.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ReportBuilder&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;GenerateReport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IDataReader&lt;/span&gt; &lt;span class="n"&gt;dataReader&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Generate report using dataReader&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Using DI Frameworks in C#
&lt;/h2&gt;

&lt;p&gt;While you can implement DI manually, using a framework can simplify the process. In C#, popular DI frameworks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;.NET Core’s built-in Dependency Injection:&lt;/strong&gt; It's part of the ASP.NET Core framework, making it a natural choice for web applications.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ConfigureServices&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IServiceCollection&lt;/span&gt; &lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddTransient&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ILogger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ConsoleLogger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Autofac:&lt;/strong&gt; Known for its flexibility and ease of integration with various .NET platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ninject:&lt;/strong&gt; Favored for its syntax and ease of use, particularly in smaller projects.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Dependency Injection is an essential tool in a C# developer's toolkit. By enabling more modular, testable, and maintainable code, DI is more than just a pattern; it's a mindset that encourages thinking about how components in your software interact. &lt;/p&gt;

&lt;p&gt;Whether you're working on a large enterprise application or a small personal project, understanding and applying DI principles will undoubtedly enhance your development process and the quality of your software.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>.Net BinarySearch is fast, but can we make it faster?</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Tue, 23 Jan 2024 13:04:39 +0000</pubDate>
      <link>https://dev.to/frederik_vl/net-binarysearch-is-fast-but-can-we-make-it-faster-1mf8</link>
      <guid>https://dev.to/frederik_vl/net-binarysearch-is-fast-but-can-we-make-it-faster-1mf8</guid>
      <description>&lt;p&gt;&lt;em&gt;The short answer is yes, up to 25%&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We all know that in the .Net Framework, the BinarySearch is fast to search in List&amp;lt;&amp;gt;, but can we make it even faster?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Question
&lt;/h2&gt;

&lt;p&gt;We have a List with 1.000.000 numbers.&lt;br&gt;
We create a function to see if a number exists in the collection&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public bool ExistBinarySearch()
{
    return _numbers.BinarySearch(numberToSearch) &amp;gt;= 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Faster Binary Search is&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public bool ExistFasterBinarySearch()
{
    int low = 0;
    int high = _numbers.Count - 1;

    while (low &amp;lt;= high)
    {
        int mid = (low + high) / 2;
        if (_numbers[mid] == numberToSearch)
            return true;
        else if (_numbers[mid] &amp;lt; numberToSearch)
            low = mid + 1;
        else
            high = mid - 1;
    }
    return false;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;p&gt;The FasterBinarySearch wins.&lt;/p&gt;

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

</description>
    </item>
    <item>
      <title>When and when not to use Extension functions</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Tue, 23 Jan 2024 09:09:54 +0000</pubDate>
      <link>https://dev.to/frederik_vl/when-and-when-not-to-use-extension-functions-4ig4</link>
      <guid>https://dev.to/frederik_vl/when-and-when-not-to-use-extension-functions-4ig4</guid>
      <description>&lt;h2&gt;
  
  
  Use extension methods when:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;You want to add small, self-contained pieces of functionality to an existing type. Extension methods are ideal for adding simple utility methods that don't require deep integration with the type's structure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You don't have access to the original source code of the type. If you're using third-party libraries or working with legacy code that you can't modify, extension methods allow you to extend the functionality without having to modify the original code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need to add functionality that is specific to a certain context or layer of your application. Extension methods can be used to add layer-specific functionality to domain entities or data transfer objects without cluttering their core behaviour.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Avoid using extension methods when:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The functionality you want to add is complex or tightly coupled to the type's internal structure. Extension methods are not suitable for complex operations that require intimate knowledge of the type's implementation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The functionality you want to add needs to be overridden in derived classes. Extension methods cannot be overridden, so they are not appropriate for adding functionality that should be tailored to specific derived types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The functionality you want to add is already available in a more appropriate form, such as a static class or interface method. Extension methods should be used for genuinely new functionality, not for duplicating existing methods or adding complexity to the type's design.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Difference Between Singleton Class vs. Static Class - Recap</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Wed, 10 Jan 2024 17:00:56 +0000</pubDate>
      <link>https://dev.to/frederik_vl/difference-between-singleton-class-vs-static-class-recap-521e</link>
      <guid>https://dev.to/frederik_vl/difference-between-singleton-class-vs-static-class-recap-521e</guid>
      <description>&lt;p&gt;In C#, understanding the difference between a Singleton class and a Static class is essential for various scenarios in software development. Both have unique characteristics and uses:&lt;/p&gt;

&lt;h2&gt;
  
  
  Singleton Class
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Purpose&lt;/strong&gt;: A Singleton class ensures that a class has only one instance and provides a global point of access to it.
Instantiation: It is instantiated once, and the same instance is reused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy Loading&lt;/strong&gt;: Singleton supports lazy loading, meaning the instance is created only when it is needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inheritance&lt;/strong&gt;: A Singleton can inherit from other classes and implement interfaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt;: It can maintain state across multiple calls and instances of the application.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example Use:
&lt;/h3&gt;

&lt;p&gt;Database connections or a file manager where a single instance manages the resources throughout the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Static Class
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Purpose&lt;/strong&gt;: A static class is a class that cannot be instantiated. Its members are accessible without creating an object of the class.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instantiation&lt;/strong&gt;: Cannot be instantiated. All members are static and accessed directly with the class name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy Loading&lt;/strong&gt;: Does not support lazy loading in a conventional way. The class is loaded once by the CLR when it is accessed for the first time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inheritance&lt;/strong&gt;: Cannot inherit from other classes (except for Object) and cannot implement interfaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt;: Cannot maintain state as it doesn't support instance variables. All members are static.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example Use:
&lt;/h3&gt;

&lt;p&gt;Utility or helper functions that are generic and don't require object state, like mathematical functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Differences:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instantiation Control&lt;/strong&gt;: Singleton controls the instantiation, allowing only one instance. Static classes are never instantiated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Allocation&lt;/strong&gt;: Singleton objects are stored in the heap, while static class objects are stored in the high frequency heap area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inheritance and Interfaces&lt;/strong&gt;: Singleton can implement interfaces and inherit, while static classes cannot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Maintenance&lt;/strong&gt;: Singleton can maintain state, but static classes cannot.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Choosing Between Them:
&lt;/h2&gt;

&lt;p&gt;Use a Singleton when you need a single instance with stateful data across the application.&lt;/p&gt;

&lt;p&gt;Use a static class for stateless utility or helper functions that don't require instantiation.&lt;/p&gt;

&lt;p&gt;Both Singleton and Static classes promote specific design principles in C#, each serving different purposes based on the requirements of the application.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why you should never use an UUID as the primary key in SQL Databases</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Sat, 09 Dec 2023 11:48:14 +0000</pubDate>
      <link>https://dev.to/frederik_vl/why-you-should-never-use-an-uuid-as-the-primary-key-in-sql-databases-147b</link>
      <guid>https://dev.to/frederik_vl/why-you-should-never-use-an-uuid-as-the-primary-key-in-sql-databases-147b</guid>
      <description>&lt;p&gt;Using a UUID (Universally Unique Identifier) as a primary key in SQL databases has both advantages and disadvantages. While UUIDs offer benefits in certain scenarios, there are reasons why they might not be the best choice for a primary key:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Indexing and Performance:&lt;/strong&gt;&lt;br&gt;
UUIDs are 128 bits long, compared to 32 bits for a typical integer. This larger size can result in increased storage requirements and decreased performance, especially when dealing with large datasets.&lt;/p&gt;

&lt;p&gt;Indexes built on UUID columns may not perform as efficiently as those on smaller data types. This is because larger keys can lead to more page reads, impacting query performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Readability and Debugging:&lt;/strong&gt;&lt;br&gt;
Unlike integers, UUIDs are not human-readable, which can make debugging and manual inspection of the database more challenging. Integers or other smaller data types may be more convenient for developers and database administrators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clustering:&lt;/strong&gt;&lt;br&gt;
UUIDs are designed to be globally unique, but they are not guaranteed to be sequential. This lack of sequential ordering can result in suboptimal disk I/O patterns, affecting the performance of certain types of queries, especially those involving range-based searches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fragmentation&lt;/strong&gt;&lt;br&gt;
UUIDs are often generated using a combination of timestamp and random values. This randomness can lead to higher levels of index fragmentation, impacting database performance over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage Overhead:&lt;/strong&gt;&lt;br&gt;
Storing UUIDs can lead to increased storage requirements, both in terms of disk space and memory. This can be a concern in environments where storage costs are a critical factor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Complexity:&lt;/strong&gt;&lt;br&gt;
Managing UUIDs, especially their generation and uniqueness across distributed systems, can add complexity to the application logic. This complexity may not be necessary if simpler primary key types suffice for the application's requirements.&lt;/p&gt;

</description>
      <category>sql</category>
    </item>
    <item>
      <title>When to Use Flex or Grid (CSS)?</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Tue, 28 Nov 2023 19:00:02 +0000</pubDate>
      <link>https://dev.to/frederik_vl/when-to-use-flex-or-grid-css-12o6</link>
      <guid>https://dev.to/frederik_vl/when-to-use-flex-or-grid-css-12o6</guid>
      <description>&lt;p&gt;In web development, both CSS Flexbox and Grid are powerful tools for creating responsive layouts, but they serve different purposes and are best used in different scenarios:&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS Flexbox
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One-Dimensional Layouts&lt;/strong&gt;: Flexbox is ideal for one-dimensional layouts where you want to align items either in a row or a column. It's perfect for small-scale layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alignment and Distribution of Items&lt;/strong&gt;: Flexbox makes it easy to align items horizontally or vertically and distribute space between items, which is great for navigation bars, footers, or setting up elements in a specific direction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic or Unknown Number of Elements&lt;/strong&gt;: If you have a dynamic or unknown number of elements and want them to fit in a container nicely, Flexbox automatically adjusts the size and order of elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control over the Size of Items&lt;/strong&gt;: Flexbox offers great control over the size of items, allowing them to grow or shrink to fit the available space.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  CSS Grid
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Two-Dimensional Layouts&lt;/strong&gt;: Grid is more suitable for complex two-dimensional layouts where you need to control both rows and columns. It's best for larger-scale layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Precise Layout Control&lt;/strong&gt;: Grid provides precise control over where you can place items on both axes. You can define the exact placement and size of grid items.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex Alignment and Overlapping&lt;/strong&gt;: Grid allows for more complex alignments and even overlapping of items, which can be useful for certain design layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creating Consistent Structure&lt;/strong&gt;: It’s ideal for creating layouts with a consistent structure (like a photo gallery or a dashboard), where elements are aligned in rows and columns.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  When to Use Which
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use Flexbox when&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The layout is simple and linear.&lt;/li&gt;
&lt;li&gt;You need a quick solution for centering items or distributing space.&lt;/li&gt;
&lt;li&gt;The number of items is dynamic or unknown.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Use Grid when&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The layout is complex and involves rows and columns.&lt;/li&gt;
&lt;li&gt;You need precise control over the placement and sizing of items.&lt;/li&gt;
&lt;li&gt;You are creating a layout with a consistent matrix-like structure.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Combining Both
&lt;/h3&gt;

&lt;p&gt;Often, the best approach is to use both in combination. For example, you might use Grid for the overall page layout and Flexbox for smaller components or individual elements within a grid cell. This combination allows you to leverage the strengths of both layout models.&lt;/p&gt;

</description>
      <category>css</category>
    </item>
    <item>
      <title>Azure DevOps Notifications in Slack</title>
      <dc:creator>Frederik Van Lierde</dc:creator>
      <pubDate>Mon, 27 Nov 2023 18:25:22 +0000</pubDate>
      <link>https://dev.to/frederik_vl/azure-devops-notifications-in-slack-35n1</link>
      <guid>https://dev.to/frederik_vl/azure-devops-notifications-in-slack-35n1</guid>
      <description>&lt;p&gt;When a continuous integration system is operational, it's beneficial to ensure that all stakeholders are promptly informed about the successes and failures of deployments.&lt;/p&gt;

&lt;p&gt;We can achieve this by utilizing Azure DevOps to send real-time updates to our team members via Slack notifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slack
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a channel in Slack:  Ex. Call it &lt;strong&gt;Release Hub&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create an new Slack App: Ex Call it &lt;strong&gt;DevOps Notifications&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Once the new Slack App has been created, go to &lt;strong&gt;Incoming Webhooks&lt;/strong&gt;  , create a new one, select &lt;strong&gt;Release Hub&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Copy the new generated URL&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Azure DevOps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to your Project Settings&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;+&lt;/strong&gt; icon, and select &lt;strong&gt;Slack&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Triggers&lt;/strong&gt; and &lt;strong&gt;Filters&lt;/strong&gt;
4.Copy the Slack WebHook Url (see point 4 above)&lt;/li&gt;
&lt;li&gt;Test and Finish&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;When a build was created, Slack users got this message&lt;/p&gt;

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

</description>
      <category>devops</category>
      <category>slack</category>
    </item>
  </channel>
</rss>
