<?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: Andrew Malkov</title>
    <description>The latest articles on DEV Community by Andrew Malkov (@anmalkov).</description>
    <link>https://dev.to/anmalkov</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%2F557012%2Fc9960ce1-f778-4ab0-8eb1-6a4e2741ec5b.jpg</url>
      <title>DEV Community: Andrew Malkov</title>
      <link>https://dev.to/anmalkov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anmalkov"/>
    <language>en</language>
    <item>
      <title>How I Use "imcopy" to Backup My Creator Files to My NAS: A Practical Guide</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Tue, 16 Jan 2024 19:04:06 +0000</pubDate>
      <link>https://dev.to/anmalkov/how-i-use-imcopy-to-backup-my-creator-files-to-my-nas-a-practical-guide-1pm1</link>
      <guid>https://dev.to/anmalkov/how-i-use-imcopy-to-backup-my-creator-files-to-my-nas-a-practical-guide-1pm1</guid>
      <description>&lt;p&gt;As a creator, my digital assets like code, videos, photos, and graphics are the lifeblood of my work. Ensuring their safety and accessibility is paramount. This is where "imcopy", a helpful command-line tool, comes into play. It has simplified my backup process, allowing me to efficiently synchronize files between my work directories and my Synology Network Attached Storage (NAS). Let me walk you through how I use "imcopy" with practical YAML configuration examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding "imcopy"
&lt;/h2&gt;

&lt;p&gt;"imcopy" is a CLI tool designed for copying and synchronizing files between directories. It stands out with its blazing-fast file transfers, customizable ignore patterns, and options for parallelism and file overwrite behaviors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "imcopy" for Backups?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed:&lt;/strong&gt; It offers fast file transfers, crucial for large media files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization:&lt;/strong&gt; I can specify exactly which files to backup and which to ignore. I can define multiple destination folders and backup my files to NAS and external disk simultaneously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; It works equally well on Windows and Linux, fitting into my multi-OS workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use:&lt;/strong&gt; The tool uses gitignore-like patterns for specifying ignore rules, making it intuitive for us who is familiar with git.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Centralized Configuration:&lt;/strong&gt; All configurations for copying tasks are consolidated in one place - the YAML file - which simplifies management and tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source:&lt;/strong&gt; Being an open-source tool, it offers transparency, community support, and the opportunity for customization and improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Find the Tool
&lt;/h2&gt;

&lt;p&gt;To download and start using "imcopy", follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visit the GitHub Repository:&lt;/strong&gt; Navigate to the &lt;a href="https://github.com/anmalkov/imcopy"&gt;imcopy GitHub repository&lt;/a&gt; where the tool is hosted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clone or Download:&lt;/strong&gt; You can clone the repository to your local machine using Git, or download the source code as a ZIP file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Installation Instructions:&lt;/strong&gt; Inside the repository, you will find detailed instructions on how to install, set up and use imcopy on your system in the &lt;a href="https://github.com/anmalkov/imcopy"&gt;README file&lt;/a&gt; or in &lt;a href="https://github.com/anmalkov/imcopy/tree/main/docs"&gt;docs&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stay Updated:&lt;/strong&gt; Keep an eye on the repository for the latest updates, bug fixes, and new features. Consider starring the repository to get notifications.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My Backup Workflow with "imcopy"
&lt;/h2&gt;

&lt;p&gt;I use "imcopy's" advanced option for my backups. This requires a YAML configuration file where I can specify multiple source and destination folders, along with detailed settings for each backup task.&lt;/p&gt;

&lt;h3&gt;
  
  
  YAML Configuration: The Heart of My Backup
&lt;/h3&gt;

&lt;p&gt;The YAML configuration file for "imcopy" is structured into three sections: directories, ignorePatterns, and global settings.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Directories&lt;br&gt;
Here, I define the source and destination paths. For instance, I backup my code from &lt;code&gt;D:\Apps&lt;/code&gt; to &lt;code&gt;\\NasStorage\AppsBackup&lt;/code&gt; and &lt;code&gt;F:\Backups\Apps&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ignore Patterns&lt;br&gt;
I use this to skip temporary files like &lt;code&gt;bin&lt;/code&gt; and &lt;code&gt;obj&lt;/code&gt; directories or &lt;code&gt;node_modules&lt;/code&gt;, which don't need to be backed up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Global Settings&lt;br&gt;
I generally set parallelism to 16 for efficient use of my system's resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  YAML File Example
&lt;/h3&gt;

&lt;p&gt;Here's a snippet from my actual YAML file (I made it short for a demo):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;directories&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;D:\Apps&lt;/span&gt;
    &lt;span class="na"&gt;destinations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;\\NasStorage\AppsBackup&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;F:\Backups\Apps&lt;/span&gt;
    &lt;span class="na"&gt;ignorePattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dev_files&lt;/span&gt;
    &lt;span class="na"&gt;overwriteBehavior&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ifNewer&lt;/span&gt;
    &lt;span class="na"&gt;removeBehavior&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;remove&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;D:\youtube&lt;/span&gt;
    &lt;span class="na"&gt;destinations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;\\NasStorage\YoutubeBackup&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;F:\Backups\Youtube&lt;/span&gt;
    &lt;span class="na"&gt;ignorePattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;youtube_files&lt;/span&gt;
    &lt;span class="na"&gt;overwriteBehavior&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ifNewer&lt;/span&gt;
    &lt;span class="na"&gt;removeBehavior&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;remove&lt;/span&gt;

&lt;span class="na"&gt;ignorePatterns&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dev_files&lt;/span&gt;
    &lt;span class="na"&gt;patterns&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.git/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.vs/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[Bb]in/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[Oo]bj/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;node_modules/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;local.settings.json"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.env"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.env.local"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dist/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;build/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;_storage_emulator/**"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.localConfigs"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;youtube_files&lt;/span&gt;
    &lt;span class="na"&gt;patterns&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Adobe&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Premiere&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Pro&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Auto-Save/**"&lt;/span&gt;

&lt;span class="na"&gt;parallelism&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt;
&lt;span class="na"&gt;verbose&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Executing the Backup
&lt;/h2&gt;

&lt;p&gt;With my YAML file ready, running the backup is a simple command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;imcopy &lt;span class="nt"&gt;--file&lt;/span&gt; D:&lt;span class="se"&gt;\i&lt;/span&gt;mcopy&lt;span class="se"&gt;\b&lt;/span&gt;ackup.yaml

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Backup Scenarios
&lt;/h3&gt;

&lt;p&gt;I run a nightly backup of my creator files. Sometimes, I backup only specific projects manually using a modified YAML files.&lt;/p&gt;

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

&lt;p&gt;"imcopy" has simplified my backup process. It's efficient, customizable, and reliable—everything a creator needs to safeguard their digital assets. Whether it's code, multimedia files, or documents, "imcopy" ensures that all my valuable work is mirrored safely to my NAS and external drive with minimal effort and maximum efficiency and speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips for Setting Up Your "imcopy" Backup
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Analyze Your Files: Understand which files are crucial and need regular backup. This helps in setting up effective ignore patterns.&lt;/li&gt;
&lt;li&gt;Test with &lt;code&gt;--dry-run&lt;/code&gt;: Before running your first backup, use the &lt;code&gt;--dry-run&lt;/code&gt; option to simulate the backup process. This helps ensure that your settings are correct and no important file is left out.&lt;/li&gt;
&lt;li&gt;Regularly Update Your YAML Configuration: As your project directories evolve, make sure to update your YAML file to reflect these changes.&lt;/li&gt;
&lt;li&gt;Automate Your Backups: Consider automating the "imcopy" command to run at regular intervals using cron jobs (Linux) or Task Scheduler (Windows).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  My Experience: Peace of Mind
&lt;/h3&gt;

&lt;p&gt;Since integrating "imcopy" into my workflow, I've experienced a significant reduction in the stress related to data loss. Knowing that all my creative work is securely backed up, I can focus more on the creative aspects of my projects without worrying about data integrity. The ability to customize and automate the entire process means my backups are always up-to-date and reflective of my current work status.&lt;/p&gt;

&lt;p&gt;Whether you are a developer, a photographer, a videographer, or a graphic designer, I highly recommend giving "imcopy" a try for your backup needs. It’s not just about backing up data; it’s about ensuring the continuity and safety of your creative journey.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>coding</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to use Google OSV Scanner</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Fri, 16 Dec 2022 19:16:25 +0000</pubDate>
      <link>https://dev.to/anmalkov/how-to-use-google-osv-scanner-3l0f</link>
      <guid>https://dev.to/anmalkov/how-to-use-google-osv-scanner-3l0f</guid>
      <description>&lt;p&gt;3 days ago (December 13th 2022) Google launched the Open Source Vulnerability (OSV) Scanner, a free tool that gives open source developers easy access to vulnerability information relevant to their project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Software projects are commonly built on top of a mountain of dependencies—external software libraries you incorporate into a project to add functionalities without developing them from scratch. Each dependency potentially contains existing known vulnerabilities or new vulnerabilities that could be discovered at any time. There are simply too many dependencies and versions to keep track of them manually, so automation is required.&lt;/p&gt;

&lt;p&gt;Scanners provide this automated capability by matching your code and dependencies against lists of known vulnerabilities and notifying you if patches or updates are needed. Scanners bring incredible benefits to project security, which is why the 2021 U.S. Executive Order for Cybersecurity included this type of automation as a requirement for national standards on secure software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  OSV Scanner
&lt;/h2&gt;

&lt;p&gt;The OSV-Scanner generates reliable, high-quality vulnerability information that closes the gap between a developer’s list of packages and the information in vulnerability databases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hub.docker.com/r/anmalkov/osv-scanner"&gt;Running OSV-Scanner&lt;/a&gt; on your project will first find all the transitive dependencies that are being used by analyzing manifests, SBOMs, and commit hashes. The scanner then connects this information with the OSV database and displays the vulnerabilities relevant to your project.&lt;/p&gt;

&lt;p&gt;Please continue reading here: &lt;a href="https://www.anmalkov.com/blog/how-to-use-google-osv-scanner"&gt;https://www.anmalkov.com/blog/how-to-use-google-osv-scanner&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>opensource</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Kubernetes tutorial | Install Kubernetes on Raspberry Pi FAST in 2022</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Fri, 11 Feb 2022 16:41:33 +0000</pubDate>
      <link>https://dev.to/anmalkov/kubernetes-tutorial-install-kubernetes-on-raspberry-pi-fast-in-2022-4d6j</link>
      <guid>https://dev.to/anmalkov/kubernetes-tutorial-install-kubernetes-on-raspberry-pi-fast-in-2022-4d6j</guid>
      <description>&lt;p&gt;I've just uploaded a new video where I show how to install your own Kubernetes cluster on your own Raspberry Pi. In this video I'm using Raspberry Pi OS x64 that was recently released.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/rOXkutK8ANc"&gt;https://youtu.be/rOXkutK8ANc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://www.youtube.com/playlist?list=PLDoQ6gLAki7fbKfOVeY-WgqRgsF3Q5OMa"&gt;Kubernetes tutorial - Learn Kubernetes FAST by doing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>kubernetes</category>
      <category>k3s</category>
      <category>k8s</category>
    </item>
    <item>
      <title>Use Serilog with Minimal API in .NET 6</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Fri, 19 Nov 2021 16:47:30 +0000</pubDate>
      <link>https://dev.to/anmalkov/use-serilog-with-minimal-api-in-net-6-fn7</link>
      <guid>https://dev.to/anmalkov/use-serilog-with-minimal-api-in-net-6-fn7</guid>
      <description>&lt;p&gt;If you want to replace the standard logging with Serilog in Minimal API you have to do just a couple of steps.&lt;/p&gt;

&lt;p&gt;At first, you have to add a reference to a NuGet package Serilog.AspNetCore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight postscript"&gt;&lt;code&gt;&lt;span class="nf"&gt;dotnet&lt;/span&gt; &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nf"&gt;package&lt;/span&gt; &lt;span class="nf"&gt;Serilog.AspNetCore&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At second, you need to register Serilog as your logger in Program.cs:&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="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="c1"&gt;// remove default logging providers&lt;/span&gt;
&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ClearProviders&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// Serilog configuration        &lt;/span&gt;
&lt;span class="kt"&gt;var&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;new&lt;/span&gt; &lt;span class="nf"&gt;LoggerConfiguration&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteTo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateLogger&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// Register Serilog&lt;/span&gt;
&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddSerilog&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;span class="p"&gt;.&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;That's it. &lt;/p&gt;

&lt;p&gt;You can find more information and full code example here: &lt;a href="https://www.anmalkov.com/blog/use-serilog-with-minimal-api-or-aspnet-6"&gt;Use Serilog with Minimal API in .NET 6&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Timer in GitHub CLI</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Fri, 17 Sep 2021 13:43:56 +0000</pubDate>
      <link>https://dev.to/anmalkov/timer-in-github-cli-4n14</link>
      <guid>https://dev.to/anmalkov/timer-in-github-cli-4n14</guid>
      <description>&lt;p&gt;The new GitHub CLI 2.0 includes extensions now.&lt;/p&gt;

&lt;p&gt;I always wanted to have a timer or stopwatch in my terminal. This will allow me to use it to timebox my tasks and increase my productivity by minimizing switching from a terminal to a different timer application, like browser, and back to terminal.&lt;br&gt;
It will be also cool if this timer can be big enough on the screen, so I can use it as a timer for my demo sessions to let attendees know how much time left for a break.&lt;/p&gt;

&lt;p&gt;So, I decided to build it as a GitHub CLI extension. This will allow me to use it easily in all of my machines.&lt;/p&gt;

&lt;p&gt;You can find it on GitHub: &lt;br&gt;
&lt;a href="https://github.com/anmalkov/gh-timer"&gt;https://github.com/anmalkov/gh-timer&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to install
&lt;/h2&gt;

&lt;p&gt;First of all you have to install GitHub CLI 2.0, if you don't have it yet. Install &lt;a href="https://cli.github.com"&gt;GitHub CLI&lt;/a&gt; now.&lt;/p&gt;

&lt;p&gt;After that you can install gh-timer extension:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gh extension install anmalkov/gh-timer&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  options
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gh timer [units] [number] [mode] [clock]&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  [units]
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;-s, --sec&lt;/code&gt; - seconds&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-m, --min&lt;/code&gt; - minutes&lt;/p&gt;

&lt;h4&gt;
  
  
  [mode]
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;-w, --stopwatch&lt;/code&gt; - use a stopwatch mode, otherwise use a timer mode&lt;/p&gt;

&lt;h4&gt;
  
  
  [clock]
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;-b, --big&lt;/code&gt; - show a big clock, otherwise show a small clock&lt;/p&gt;

&lt;h2&gt;
  
  
  usage examples
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gh timer -s 10&lt;/code&gt;&lt;br&gt;
run a timer for 10 seconds&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gh timer -m 5&lt;/code&gt;&lt;br&gt;
run a timer for 5 minutes&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gh timer -m 5 -b&lt;/code&gt;&lt;br&gt;
run a timer for 5 minutes and show big clock&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gh timer -m 60 -w&lt;/code&gt;&lt;br&gt;
run a stopwatch for 1 hour&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gh timer -h&lt;/code&gt;&lt;br&gt;
show help&lt;/p&gt;

&lt;p&gt;If you like it, please don't forget to give it a star on GitHub!&lt;/p&gt;

&lt;p&gt;If you have any questions or would like to contribute - you are welcome to contact me!&lt;/p&gt;

&lt;p&gt;See you soon. &lt;/p&gt;

</description>
      <category>github</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>C# tutorial for beginners | 2 | Write your first C# program</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Sat, 06 Mar 2021 11:43:58 +0000</pubDate>
      <link>https://dev.to/anmalkov/c-tutorial-for-beginners-2-write-your-first-c-program-13ik</link>
      <guid>https://dev.to/anmalkov/c-tutorial-for-beginners-2-write-your-first-c-program-13ik</guid>
      <description>&lt;p&gt;In this C# tutorial series you will learn how to get started programming with C#. You will write your own programs as well as make your own web site.&lt;br&gt;
I can make you successful so you can be a programmer as well.&lt;/p&gt;

&lt;p&gt;I've just uploaded the second episode. In this episode you will learn fundamentals of programming as well as basics of how to work with Visual Studio. If you will follow the steps from this video, at the end you will write your first program and you will know how to find, copy and run it.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/KTfilr_pnk0"&gt;https://youtu.be/KTfilr_pnk0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://www.youtube.com/playlist?list=PLDoQ6gLAki7chhisGpuyaVzxOj5Hut3Vb"&gt;C# tutorial - Learn C# FAST&lt;/a&gt;&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Docker tutorial | What is Docker | What is container | How Docker works</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Thu, 25 Feb 2021 08:54:16 +0000</pubDate>
      <link>https://dev.to/anmalkov/docker-tutorial-what-is-docker-what-is-container-how-docker-works-3la8</link>
      <guid>https://dev.to/anmalkov/docker-tutorial-what-is-docker-what-is-container-how-docker-works-3la8</guid>
      <description>&lt;p&gt;In this Docker tutorial series you will learn how to work with Docker. You will learn basic as well as advanced topics about containers and Docker. You will know how to containerize your apps, deploy them to production and troubleshoot your containers.&lt;/p&gt;

&lt;p&gt;I've just uploaded the third episode where you can learn basic and advanced aspects of containers and Docker.&lt;br&gt;
I show you what are the benefits of containers. Then, I talk about the main container's components and terms. After that, I dig inside a container image and a container itself. And at the end, I describe how Docker is architected and how it works.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/GSw9OHOloOY"&gt;https://youtu.be/GSw9OHOloOY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://www.youtube.com/playlist?list=PLDoQ6gLAki7ddD9XY1quViqfD45X8AUIF"&gt;Docker tutorial - Learn Docker FAST by doing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
    </item>
    <item>
      <title>C# tutorial for beginners | 1 | Setup development environment</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Wed, 17 Feb 2021 18:22:28 +0000</pubDate>
      <link>https://dev.to/anmalkov/c-tutorial-for-beginners-1-setup-development-environment-4983</link>
      <guid>https://dev.to/anmalkov/c-tutorial-for-beginners-1-setup-development-environment-4983</guid>
      <description>&lt;p&gt;In this C# tutorial series you will learn how to get started programming with C#. You will write your own programs as well as make your own web site.&lt;br&gt;
I can make you successful so you can be a programmer as well.&lt;/p&gt;

&lt;p&gt;I've just uploaded the first episode where I show how to setup the development environment.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/vhG2-lIS3EE"&gt;https://youtu.be/vhG2-lIS3EE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://www.youtube.com/playlist?list=PLDoQ6gLAki7chhisGpuyaVzxOj5Hut3Vb"&gt;C# tutorial - Learn C# FAST&lt;/a&gt;&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Docker tutorial - Install Docker on Ubuntu fast</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Mon, 15 Feb 2021 06:53:21 +0000</pubDate>
      <link>https://dev.to/anmalkov/docker-tutorial-install-docker-on-ubuntu-fast-4jfl</link>
      <guid>https://dev.to/anmalkov/docker-tutorial-install-docker-on-ubuntu-fast-4jfl</guid>
      <description>&lt;p&gt;I've just uploaded a new video where I show how to install Docker on Ubuntu Linux.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/5Dhx_ssK8oY"&gt;https://youtu.be/5Dhx_ssK8oY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://youtube.com/playlist?list=PLDoQ6gLAki7eu_ugunWVPX10fFOcok1iG"&gt;Learn containers fast by doing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>programming</category>
      <category>devops</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Install Docker on Windows 10 FAST</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Sat, 13 Feb 2021 07:23:21 +0000</pubDate>
      <link>https://dev.to/anmalkov/install-docker-on-windows-10-fast-1abn</link>
      <guid>https://dev.to/anmalkov/install-docker-on-windows-10-fast-1abn</guid>
      <description>&lt;p&gt;I've just uploaded a new video where I show how to  install Docker on Windows 10 and configure Docker to use WSL2.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/ERbcZ_V6dn4"&gt;https://youtu.be/ERbcZ_V6dn4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://youtube.com/playlist?list=PLDoQ6gLAki7eu_ugunWVPX10fFOcok1iG"&gt;Learn containers fast by doing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>windows</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Install Podman and Buildah on Windows 10 FAST using WSL2</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Tue, 09 Feb 2021 12:59:01 +0000</pubDate>
      <link>https://dev.to/anmalkov/install-podman-and-buildah-on-windows-10-fast-using-wsl2-41hm</link>
      <guid>https://dev.to/anmalkov/install-podman-and-buildah-on-windows-10-fast-using-wsl2-41hm</guid>
      <description>&lt;p&gt;I've just uploaded a new video where I show how to install and configure Podman and Buildah on Windows 10 using WSL2 and Ubuntu 20.04.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/iOxILJIYsuY"&gt;https://youtu.be/iOxILJIYsuY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://youtube.com/playlist?list=PLDoQ6gLAki7eu_ugunWVPX10fFOcok1iG"&gt;Learn containers fast by doing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>podman</category>
      <category>buildah</category>
      <category>docker</category>
      <category>wsl2</category>
    </item>
    <item>
      <title>wsl2 - Install Ubuntu on Windows 10 FAST with Windows Terminal</title>
      <dc:creator>Andrew Malkov</dc:creator>
      <pubDate>Sat, 06 Feb 2021 20:52:33 +0000</pubDate>
      <link>https://dev.to/anmalkov/wsl2-install-ubuntu-on-windows-10-fast-with-windows-terminal-3jk3</link>
      <guid>https://dev.to/anmalkov/wsl2-install-ubuntu-on-windows-10-fast-with-windows-terminal-3jk3</guid>
      <description>&lt;p&gt;I've just uploaded a new video where I show how to install Ubuntu 20.04 on Windows 10 or your favorite Linux distribution using Windows Subsystem for Linux 2, or just shortly WSL2.&lt;br&gt;
This will allow you later to install and configure your favorite containers management tools like buildah, podman or Docker.&lt;/p&gt;

&lt;p&gt;Please check it out and subscribe to my channel to be notified when my new videos will be released.&lt;/p&gt;

&lt;p&gt;Thank you in advance.&lt;/p&gt;

&lt;p&gt;Link to video: &lt;a href="https://youtu.be/tqE9zcA8L3U"&gt;https://youtu.be/tqE9zcA8L3U&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my personal blog: &lt;a href="https://www.anmalkov.com"&gt;https://www.anmalkov.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to my playlist: &lt;a href="https://youtube.com/playlist?list=PLDoQ6gLAki7eu_ugunWVPX10fFOcok1iG"&gt;Learn containers fast by doing&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
