<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Dev Power</title>
    <description>The latest articles on Forem by Dev Power (@devpower).</description>
    <link>https://forem.com/devpower</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%2F866434%2Fcfa17bbd-6106-4d4f-bb97-c0372dc54efe.png</url>
      <title>Forem: Dev Power</title>
      <link>https://forem.com/devpower</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devpower"/>
    <language>en</language>
    <item>
      <title>How to use MFA with AWS CLI using Yubikey</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Thu, 09 Feb 2023 10:06:27 +0000</pubDate>
      <link>https://forem.com/devpower/how-to-use-mfa-with-aws-cli-using-yubikey-be4</link>
      <guid>https://forem.com/devpower/how-to-use-mfa-with-aws-cli-using-yubikey-be4</guid>
      <description>&lt;p&gt;How to use MFA with AWS CLI using Yubikey&lt;/p&gt;

&lt;p&gt;While resetting my IAM keys, I realized I had all those powerful keys lying in plaintext in the credentials file.&lt;/p&gt;

&lt;p&gt;Even though it requires access to my laptop, I wanted to have some extra security. As a big fan of MFA, I decided to enforce MFA with Yubikey while using CLI.&lt;/p&gt;

&lt;p&gt;Here's the full article and step-by-step guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloudinternals.net/aws/how-to-use-mfa-with-aws-cli-using-yubikey/"&gt;https://cloudinternals.net/aws/how-to-use-mfa-with-aws-cli-using-yubikey/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will need to have a Yubikey to be able to follow the article, though. &lt;/p&gt;

&lt;p&gt;I hope it helps others as well.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>iam</category>
      <category>yubikey</category>
    </item>
    <item>
      <title>How to rotate AWS Access Keys with PowerShell</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Thu, 09 Feb 2023 10:05:22 +0000</pubDate>
      <link>https://forem.com/devpower/how-to-rotate-aws-access-keys-with-powershell-5chi</link>
      <guid>https://forem.com/devpower/how-to-rotate-aws-access-keys-with-powershell-5chi</guid>
      <description>&lt;p&gt;I'm still recovering from the LastPass breach. Because my IAM keys were in LP, I had to go through all of them and replace them. &lt;/p&gt;

&lt;p&gt;As I had multiple keys to be replaced, I created a Powershell script to replace all the keys in my AWS credentials file.&lt;/p&gt;

&lt;p&gt;The article explaining the script is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloudinternals.net/aws/how-to-rotate-aws-access-keys-with-powershell/"&gt;https://cloudinternals.net/aws/how-to-rotate-aws-access-keys-with-powershell/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope it comes in handy to other people too.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>powershell</category>
      <category>iam</category>
      <category>security</category>
    </item>
    <item>
      <title>Migrate YouTube Subscriptions into Another Account with C#</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Sat, 10 Sep 2022 10:41:09 +0000</pubDate>
      <link>https://forem.com/devpower/migrate-youtube-subscriptions-into-another-account-with-c-4ln4</link>
      <guid>https://forem.com/devpower/migrate-youtube-subscriptions-into-another-account-with-c-4ln4</guid>
      <description>&lt;p&gt;If you have multiple YouTube accounts and looking for a way to import your subscriptions into another account, you can implement it yourself by following this tutorial:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devpower.co.uk/dotnet/migrate-youtube-subscriptions-into-another-account-with-csharp/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O88r4GwT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkkdahrs1yxruc4mwws1.png" alt="" width="675" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't forget to revoke your token before switching to the destination account&lt;/li&gt;
&lt;li&gt;I'd rather use service accounts to avoid all the manual approvals but they don't seem to work with YouTube&lt;/li&gt;
&lt;li&gt;Nothing beats solving a problem with your own code 💪&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>youtube</category>
    </item>
    <item>
      <title>How to Develop an Interactive CLI with C# to Manage SendGrid Dynamic Email Templates</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Tue, 05 Jul 2022 09:26:40 +0000</pubDate>
      <link>https://forem.com/devpower/how-to-develop-an-interactive-cli-with-c-to-manage-sendgrid-dynamic-email-templates-3o57</link>
      <guid>https://forem.com/devpower/how-to-develop-an-interactive-cli-with-c-to-manage-sendgrid-dynamic-email-templates-3o57</guid>
      <description>&lt;p&gt;I like developing my own CLIs and installing them using the dotnet tool command. I can then use them to make some manual tasks easier for myself. Recently I started playing with SendGrid Dynamic Email Templates. They have a great user interface but I wanted to do things programmatically.&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://github.com/Tyrrrz/CliFx"&gt;CliFx&lt;/a&gt; before and was already familiar with how fast you can develop a CLI. The fun part of this project was to make the CLI interactive by using the &lt;a href="https://github.com/shibayan/Sharprompt"&gt;Sharprompt&lt;/a&gt; library.&lt;/p&gt;

&lt;p&gt;It basically works like this:&lt;br&gt;
&lt;a href="https://asciinema.org/a/506289"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dXl9IuZT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://asciinema.org/a/506289.svg" alt="asciicast" width="880" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in expanding on it, you can find the source code &lt;a href="https://github.com/Dev-Power/sendgrid-dynamic-template-email-manager-cli"&gt;here&lt;/a&gt;. It's open-source so feel free to clone and play around.&lt;/p&gt;

&lt;p&gt;I also wrote a step-by-step article (quite long though) to explain how all the tools work together &lt;a href="https://devpower.co.uk/dotnet/how-to-develop-an-interactive-cli-with-csharp/"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cli</category>
      <category>dotnet</category>
      <category>csharp</category>
      <category>sendgrid</category>
    </item>
    <item>
      <title>Discovered a NuGet package called ClosedXML. Takes away the pain of dealing with OpenXML</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Wed, 01 Jun 2022 13:03:55 +0000</pubDate>
      <link>https://forem.com/devpower/discovered-a-nuget-package-called-closedxml-takes-away-the-pain-of-dealing-with-openxml-kn2</link>
      <guid>https://forem.com/devpower/discovered-a-nuget-package-called-closedxml-takes-away-the-pain-of-dealing-with-openxml-kn2</guid>
      <description>&lt;p&gt;As title says, it's a great package that simplifies dealing with Excel files.&lt;/p&gt;

&lt;p&gt;It's open-source: &lt;a href="https://github.com/ClosedXML/ClosedXML"&gt;https://github.com/ClosedXML/ClosedXML&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a sample CLI to create a spreadsheet to track daily electricity costs for demo purposes: &lt;a href="https://github.com/Dev-Power/programmatically-manage-excel-spreadsheets-with-dotnet/tree/main"&gt;https://github.com/Dev-Power/programmatically-manage-excel-spreadsheets-with-dotnet/tree/main&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also find the accompanying blog post for more details: &lt;a href="https://devpower.co.uk/dotnet/csharp/programmatically-manage-excel-spreadsheets-with-dotnet/"&gt;https://devpower.co.uk/dotnet/csharp/programmatically-manage-excel-spreadsheets-with-dotnet/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>excel</category>
      <category>csharp</category>
      <category>openxml</category>
      <category>closedxml</category>
    </item>
    <item>
      <title>Exploring Chart.js with Star Wars data</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Mon, 30 May 2022 04:38:02 +0000</pubDate>
      <link>https://forem.com/devpower/exploring-chartjs-with-star-wars-data-2607</link>
      <guid>https://forem.com/devpower/exploring-chartjs-with-star-wars-data-2607</guid>
      <description>&lt;p&gt;While exploring Chart.js, I created a simple project and wrote a blog post to accompany it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devpower.co.uk/javascript/exploring-chartjs-with-star-wars-data/"&gt;https://devpower.co.uk/javascript/exploring-chartjs-with-star-wars-data/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fun part was to use Star Wars API and dynamic data coming from an API with the charts. In most examples, I saw hard-coded data was used so I thought it might be useful to explore how to use some data coming from an API.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR: 
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chart.js is a very easy to use, well-documented and open-source charting library.: &lt;a href="https://www.chartjs.org/"&gt;https://www.chartjs.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Star Wars API is quite fun to play around with to get some SW trivia. Too bad it's not open source though: &lt;a href="https://swapi.dev"&gt;https://swapi.dev&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>chartjs</category>
      <category>swapi</category>
    </item>
    <item>
      <title>Developing and installing your own CLI with dotnet tool and CliFx NuGet package</title>
      <dc:creator>Dev Power</dc:creator>
      <pubDate>Mon, 30 May 2022 04:37:02 +0000</pubDate>
      <link>https://forem.com/devpower/developing-and-installing-your-own-cli-with-dotnet-tool-and-clifx-nuget-package-532p</link>
      <guid>https://forem.com/devpower/developing-and-installing-your-own-cli-with-dotnet-tool-and-clifx-nuget-package-532p</guid>
      <description>&lt;p&gt;I wrote a blog post on developing and installing your own CLI with dotnet tool and CliFx NuGet package. You can find it here: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://devpower.co.uk/dotnet/csharp/develop-a-cli-with-csharp/"&gt;https://devpower.co.uk/dotnet/csharp/develop-a-cli-with-csharp/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're not interested in the whole thing, here is the TL;DR version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dotnet tool is a mechanism to install/update/distribute console applications via NuGet packages&lt;/li&gt;
&lt;li&gt;CliFx is an awesome NuGet package that allows you to convert a console application into a full-blown CLI with commands, subcommands, arguments and auto-generated usage message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check out the references to find more about these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-tool-install"&gt;dotnet tool documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Tyrrrz/CliFx"&gt;CliFx GitHub repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>cli</category>
      <category>clifx</category>
    </item>
  </channel>
</rss>
