<?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: Prajal Sharma</title>
    <description>The latest articles on DEV Community by Prajal Sharma (@prajalsharma).</description>
    <link>https://dev.to/prajalsharma</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%2F637911%2Fa71ef557-3057-4082-9434-ba94e49feb28.png</url>
      <title>DEV Community: Prajal Sharma</title>
      <link>https://dev.to/prajalsharma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prajalsharma"/>
    <language>en</language>
    <item>
      <title>Taiko Protocol</title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Wed, 27 Dec 2023 15:54:59 +0000</pubDate>
      <link>https://dev.to/prajalsharma/taiko-protocol-4h95</link>
      <guid>https://dev.to/prajalsharma/taiko-protocol-4h95</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Taiko protocol overview:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://taiko.mirror.xyz/y_47kIOL5kavvBmG0zVujD2TRztMZt-xgM5d4oqp4_Y?ref=bankless.ghost.io"&gt;https://taiko.mirror.xyz/y_47kIOL5kavvBmG0zVujD2TRztMZt-xgM5d4oqp4_Y?ref=bankless.ghost.io&lt;/a&gt;&lt;/p&gt;

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

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Proposing Taiko blocks&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;On Taiko, the next L2 state is known immediately and deterministically at the time a block is proposed to the TaikoL1 contract. After a block is proposed, a series of checks are done to compute this post-L2 state:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Block is proposed by any proposer&lt;/li&gt;
&lt;li&gt;Block level properties' validity is checked by the TaikoL1 contract&lt;/li&gt;
&lt;li&gt;Proposed block is downloaded by a Taiko node, and the transaction list is parsed over and checked for validity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;• IF every transaction in the list is valid, an ordered subset of the list is created and used along with the &lt;a href="https://taiko.xyz/docs/concepts/proposing#anchor-transaction"&gt;anchor transaction&lt;/a&gt; to create a Taiko L2 block.&lt;/p&gt;

&lt;p&gt;• IF any transaction in the list is invalid, an empty block (with only the anchor tx) is created on L2.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Building the blocks&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once a proposer has collected enough transactions, presumably including and ordering them with the intent to generate a (maximum) profit, they create a new L2 block with an anchor transaction. Profit means that for the proposer, the sum of transaction fees (L2 tx fees) from the block is larger than L1 tx fee + prover fee + EIP-1559 base fee.&lt;br&gt;
Then there are validity checks performed at the node (or sometimes protocol) level as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asserts that the length of the transaction list does not exceed a predefined maximum (MAX_TX_LIST_BYTES)&lt;/li&gt;
&lt;li&gt;The transaction list is decoded into a list of transactions (txList)&lt;/li&gt;
&lt;li&gt;The amount of gas required to include transactions is available&lt;/li&gt;
&lt;li&gt;The transaction signature and the transaction nonce are valid.&lt;/li&gt;
&lt;li&gt;The sender account has no contract code deployed (EIP-3607)&lt;/li&gt;
&lt;li&gt;The transaction's gas limit is no smaller than the intrinsic gas&lt;/li&gt;
&lt;li&gt;The sender has enough balance to cover the transaction (gasLimit * gasPrice + tx.value)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The block execution is deterministic. When the block is proposed, the block data is published on Ethereum, and the block is appended to the proposed block list stored in the TaikoL1 contract. After that, all block properties are immutable. &lt;/p&gt;

&lt;p&gt;All Taiko nodes connect to Ethereum nodes and subscribe to Ethereum's block events.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proving Taiko blocks
&lt;/h2&gt;

&lt;p&gt;The purpose of proving blocks is to give certainty and proof to bridges about the execution that happened in the rollup.&lt;/p&gt;

&lt;p&gt;Currently, any prover can create proofs for proposed blocks. Only first prover with a valid proof of the correct state transition will receive the reward.&lt;/p&gt;

&lt;p&gt;There are three states that a block can be in on Taiko:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proposed&lt;/li&gt;
&lt;li&gt;Proved&lt;/li&gt;
&lt;li&gt;Verified&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A block is proved if it has a valid proof which proves a state transition from one state (parent block) to another (current block). However, blocks are proven in parallel by the decentralized provers. So while a block can prove a parent block transitions to the current block, we don't know if the parent block itself has been proven. As you can see, for a block to be "verified", it needs to prove the valid state transition to the current block, but the parent also needs to be verified.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>All about Komodor :- A Kubernetes Troubleshooting Platform and more</title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Wed, 06 Apr 2022 12:35:50 +0000</pubDate>
      <link>https://dev.to/prajalsharma/all-about-komodor-a-kubernetes-troubleshooting-platform-and-more-1jgm</link>
      <guid>https://dev.to/prajalsharma/all-about-komodor-a-kubernetes-troubleshooting-platform-and-more-1jgm</guid>
      <description>&lt;h2&gt;
  
  
  About Kubernetes
&lt;/h2&gt;

&lt;p&gt;Kubernetes (also known as k8s or “kube”) is an open source container orchestration platform that automates many of the manual processes involved in deploying, managing, and scaling containerized applications.&lt;/p&gt;

&lt;p&gt;You can cluster together groups of hosts running containers, and Kubernetes helps you easily and efficiently manage those clusters.&lt;/p&gt;

&lt;p&gt;Kubernetes clusters can span hosts across on-premise, public, private, or hybrid clouds. For this reason, Kubernetes is an ideal platform for hosting cloud-native applications that require rapid scaling.&lt;/p&gt;

&lt;p&gt;In Short , Kubernetes is a tool which helps you to manage, scale and deploy your application to multiple machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues with Kubernetes
&lt;/h2&gt;

&lt;p&gt;As most of us know, deployment failure messages on Kubernetes are complex and not intuitive for debugging. Users need to identify the errors from pod logs, pod events(describe pod), pod status, etc. Developers spend a lot of time and effort demystifying the cryptic messages K8s throws up, perfectly valuable time that could have otherwise gone in building core functionalities of the application. &lt;/p&gt;

&lt;h2&gt;
  
  
  Komodor Enters
&lt;/h2&gt;

&lt;p&gt;Here Komodor makes things interesting by handling the k8s-Native Troubleshooting , so that developers can save a lot of time actually developing instead of wasting hours of their valuable time troubleshooting and focus on building interesting stuff.&lt;/p&gt;

&lt;p&gt;Komodor tracks changes across your entire K8s stack analyzes their ripple effect and provides you with the context you need to troubleshoot efficiently and independently. At Komodor's main dashboard you can :-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Monitor the health status of your microservices live and which resources aren't running . All at one dashboard which has a beautiful UI. &lt;/li&gt;
&lt;li&gt;Event Logs track the changes made over time and what deployments that have happened over time. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pre Requisites before getting started with Komodor&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://helm.sh/"&gt;&lt;strong&gt;Helm&lt;/strong&gt;&lt;/a&gt; helps you manage your Kubernetes applications , make sure that helm is installed in your system before proceeding forward.&lt;br&gt;
here is the link to installation documentation of Helm :- &lt;a href="https://helm.sh/docs/"&gt;https://helm.sh/docs/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started With Komodor .
&lt;/h2&gt;

&lt;p&gt;When you log into komodor initially you'll observe a blank screen which says "no service" .&lt;/p&gt;

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

&lt;p&gt;There is no need to worry as you haven't connected Komodor with your kubernetes cluster as of now .&lt;/p&gt;

&lt;p&gt;On the bottom left of the integration page , you'll observe a kubernetes icon which says 'add cluster' . Click on That .&lt;br&gt;
This step is important as you are letting Komodor know your cluster name , So that they can start working on integrating to your cluster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PZ-Rm8FQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9uj4k6pxvtsrxn3rqzba.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PZ-Rm8FQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9uj4k6pxvtsrxn3rqzba.jpg" alt="Image description" width="880" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now a small window will open where you'll have to enter your cluster . Enter your K8s cluster name , it can be old and new .&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DkCkhF4n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzsmobbrea056zhov1mi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DkCkhF4n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzsmobbrea056zhov1mi.png" alt="Image description" width="880" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you'll get a command and an icon on the right an icon "copy" . Click on the icon so that the command is copied . Now open the command line of your system and run the command . [Note:- make sure &lt;a href="https://helm.sh/"&gt;&lt;strong&gt;Helm&lt;/strong&gt;&lt;/a&gt; is installed in your system otherwise it won't work]&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zOQnvs0d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0mgd914lj20h546kbi0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zOQnvs0d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0mgd914lj20h546kbi0.png" alt="Image description" width="880" height="415"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TniYUPl6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x75ei85ihyxfdg8rtskp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TniYUPl6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x75ei85ihyxfdg8rtskp.png" alt="Image description" width="880" height="414"&gt;&lt;/a&gt;&lt;br&gt;
If you are getting a window shown in above image , then congratulations as Komodor has been added to your cluster and it has started doing it's work . Now you can monitor the health and event logs of your microservices running on your k8s .&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5Y7byXdm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/85yn3o0mjrpsuwu7jkwk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5Y7byXdm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/85yn3o0mjrpsuwu7jkwk.png" alt="Image description" width="880" height="417"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0wt49y6H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fv0n0ndya17xdytasjzw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0wt49y6H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fv0n0ndya17xdytasjzw.png" alt="Image description" width="880" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Komodor Integrations you should check&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Komodor has many integrations which make your whole k8s troubleshooting more productive . Integrating Slack is one such brilliant idea so that you can get live notification of your cluster's health and events on your device . It makes your DevOps Experience more productive . They have many integrations like Github ,Gitlab ,Datadog ,Slack ,Sentry ,MS Teams ,Okta, Grafana and more in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cherry on Top : ValidKube
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://validkube.com/"&gt;ValidKube&lt;/a&gt; is a new &lt;a href="https://github.com/komodorio/validkube"&gt;open-source&lt;/a&gt; tool by komodor that combines several tools to make it easier to validate, clean, and secure Kubernetes YAML configuration files.&lt;br&gt;
ValidKube is a browser-based tool, which means it is immediately accessible to anyone willing to try it out without needing to install the individual tools. It has 4 tools which are available on Github. Just enter the YAML and let ValidKube Handle the rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Validate&lt;/strong&gt;&lt;br&gt;
 Using ValidKube, you can Validate your YAML files. It can help you fix the indentation also add, remove and rearrange things according to the actual YAML and Kubernetes schema. It is available as a open source repository as Kubeval .&lt;br&gt;
&lt;a href="https://github.com/instrumenta/kubeval"&gt;https://github.com/instrumenta/kubeval&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By running the provided YAML file by ValidKube, you will see this output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cfUEWosH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txr0mzr7qucxdq9h8lwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cfUEWosH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txr0mzr7qucxdq9h8lwa.png" alt="Image description" width="880" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clean&lt;/strong&gt;&lt;br&gt;
Now let’s talk about how you can use the "Clean" feature of ValidKube to clean and enhance your YAML files with an instant click. It's repository kubectl-neat is &lt;a href="https://github.com/itaysk/kubectl-neat"&gt;https://github.com/itaysk/kubectl-neat&lt;/a&gt;&lt;br&gt;
It works as shown in image below :-&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fbmDtU4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mgkxr9flkm6g4xxt9fa1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fbmDtU4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mgkxr9flkm6g4xxt9fa1.png" alt="Image description" width="880" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes manifest needs to be secure and ValidKube helps us to achieve that with the help of the Aquasec team. The same YAML file mentioned above, we will run it through the "Secure" feature of ValidKube and let's see the results:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vl-bnHr8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lv7vz2uskscn3su7wbs0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vl-bnHr8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lv7vz2uskscn3su7wbs0.png" alt="Image description" width="880" height="380"&gt;&lt;/a&gt;&lt;br&gt;
It's Open source repository is named as trivy and it's repository is &lt;a href="https://github.com/aquasecurity/trivy"&gt;https://github.com/aquasecurity/trivy&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Polaris&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A recent addition to ValidKube family , Fairwind's Polaris keeps your clusters sailing smoothly. It runs a variety of checks to ensure that Kubernetes pods and controllers are configured using best practices, helping you avoid problems in the future.&lt;/p&gt;

&lt;p&gt;Polaris can be run in three different modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As a dashboard, so you can audit what's running inside your cluster.&lt;/li&gt;
&lt;li&gt;As an admission controller, so you can automatically reject workloads that don't adhere to your organization's policies.&lt;/li&gt;
&lt;li&gt;As a command-line tool, so you can test local YAML files, e.g. as part of a CI/CD process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nJtfOIS5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fqkc45hfgrmqegd5gvhy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nJtfOIS5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fqkc45hfgrmqegd5gvhy.png" alt="Image description" width="880" height="356"&gt;&lt;/a&gt;&lt;br&gt;
It's open source repository is &lt;a href="https://github.com/FairwindsOps/polaris"&gt;https://github.com/FairwindsOps/polaris&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All of the features of ValidKube are Open Source , So feel free to add more tools and capabilities to ValidKube . Star all the repositories as it motivates the devs to do more .&lt;/p&gt;

&lt;h2&gt;
  
  
  This this a blog written and inspired by a &lt;a href="https://www.youtube.com/watch?v=GNPS0sAajQ0"&gt;video&lt;/a&gt; by Viktor Farcic who has a channel Devops &lt;a href="https://www.youtube.com/channel/UCfz8x0lVzJpb_dgWm9kPVrw"&gt;Toolkit&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>cloud</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>startup</category>
    </item>
    <item>
      <title>CoScreen : A remote pair programming and collaboration tool which makes working together 40% faster</title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Wed, 23 Feb 2022 14:20:34 +0000</pubDate>
      <link>https://dev.to/prajalsharma/coscreen-a-remote-pair-programming-and-collaboration-tool-which-makes-working-together-40-faster-4fd7</link>
      <guid>https://dev.to/prajalsharma/coscreen-a-remote-pair-programming-and-collaboration-tool-which-makes-working-together-40-faster-4fd7</guid>
      <description>&lt;p&gt;&lt;a href="https://www.coscreen.co/"&gt;CoScreen&lt;/a&gt; enables a multi-user collaboration experience for remote teams on a shared desktop that's unlike every other tool out there .It is a Multi User Screen Sharing, Single User Remote Control, Multi User Remote Control, Cross-User: Copy &amp;amp; Pasting, Mob Collaboration: With More Than 2 Users tool .It has been acquired by Datadog recently . Below I'll be sharing how cool is &lt;a href="https://www.coscreen.co/"&gt;CoScreen&lt;/a&gt; to work with your teams with some use cases.&lt;br&gt;
&lt;a href="https://www.coscreen.co/"&gt;https://www.coscreen.co/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Pair Programming and Debugging
&lt;/h2&gt;

&lt;p&gt;CoScreen enables developers to pair program effectively from the comfort of their own environment, with their own tools. Pair programming can be done as effectively for remote teams as if they were sharing the same workstation. Seamlessly rotate duties between driver and navigator in a fraction of a second.&lt;/p&gt;
&lt;h2&gt;
  
  
  Collaboration
&lt;/h2&gt;

&lt;p&gt;Collaborative IDEs are helpful tools for programmers. But you often need to collaborate on much more than code, e.g. on emulators, command line tools and issue management systems. CoScreen enables you to collaborate across all of them and also any other desktop applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  Teaching to code
&lt;/h2&gt;

&lt;p&gt;Learning a new programming language? Stuck on anything? Often a second set of eyes and hands would help. Get on a CoScreen, share your problem with your peers and mentors, review solutions side-by-side, then fix it together on the fly.&lt;/p&gt;
&lt;h2&gt;
  
  
  Coding Interviews
&lt;/h2&gt;

&lt;p&gt;Make coding interviews more engaging through simultaneous editing on any IDE or desktop application, multi-user screen sharing, and built-in audio and video chat.&lt;/p&gt;
&lt;h2&gt;
  
  
  Onboarding &amp;amp; Coaching
&lt;/h2&gt;

&lt;p&gt;Effectively coach new team members through best practices, deploys, infrastructure upgrades, triaging, etc. from anywhere. There's nothing quite so effective for onboarding as solving a problem under pressure. CoScreen makes it easy for senior engineers to walk new team members through the solution of a problem, but with out doing the driving. Instead of just being presented with a solution, work on challenges collaboratively, get instant help whenever necessary and learn faster than ever.&lt;/p&gt;
&lt;h2&gt;
  
  
  Ops &amp;amp; Incident Response
&lt;/h2&gt;

&lt;p&gt;Late night incidents aren't fun, but they happen. Copying &amp;amp; pasting logs and text over your favorite messaging app works, but not as well as sharing your terminals while debugging the issues live. With CoScreen, simply drag your terminal application to your shared display and work with your team to make production happy again. And everyone can still keep an eye on the issue tracker.&lt;/p&gt;
&lt;h2&gt;
  
  
  Interactive Team Meetings, Standups &amp;amp; Sprint Demos
&lt;/h2&gt;

&lt;p&gt;Regular check-ins are essential, especially for remote agile teams. Add CoScreen and suddenly everyone can see immediately what everyone has been up to and align faster on what really matters.&lt;/p&gt;

&lt;p&gt;‍&lt;strong&gt;Pricing&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;CoScreen is free for everybody on Windows and Mac OS . CoScreen Pro  is free for students and Non Profits , which is why I am writing about it because I am a student as well as a volunteer for a non profit org and It is a big thing that they thought about us .So I love their pricing which is justified even for working professionals . You can Check the pricing at &lt;a href="https://www.coscreen.co/pricing"&gt;https://www.coscreen.co/pricing&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/c5s7XI2dssI"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/r0vjD6n5KLo"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe src="https://player.vimeo.com/video/481001206" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;miscellaneous&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can check CoScreen out for yourselves and your teammates in upcoming as it's free . Can comment what you liked about CoScreen and if you encountered or discovered some additional use cases of CoScreen while working with your mates then comment to let the devs know .&lt;/p&gt;

</description>
      <category>pairprogramming</category>
      <category>productivity</category>
      <category>tools</category>
      <category>startup</category>
    </item>
    <item>
      <title>How I did DigitalOcean's Kubernetes Challenge</title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Tue, 22 Feb 2022 13:55:37 +0000</pubDate>
      <link>https://dev.to/prajalsharma/how-i-did-digitaloceans-kubernetes-challenge-4g1b</link>
      <guid>https://dev.to/prajalsharma/how-i-did-digitaloceans-kubernetes-challenge-4g1b</guid>
      <description>&lt;h2&gt;
  
  
  About Kubernetes and Clusters
&lt;/h2&gt;

&lt;p&gt;Kubernetes (also known as k8s or “kube”) is an open source container orchestration platform that automates many of the manual processes involved in deploying, managing, and scaling containerized applications.&lt;/p&gt;

&lt;p&gt;You can cluster together groups of hosts running containers, and Kubernetes helps you easily and efficiently manage those clusters.&lt;/p&gt;

&lt;p&gt;Kubernetes clusters can span hosts across on-premise, public, private, or hybrid clouds. For this reason, Kubernetes is an ideal platform for hosting cloud-native applications that require rapid scaling.&lt;/p&gt;

&lt;h2&gt;
  
  
  About &lt;a href="https://www.digitalocean.com/"&gt;DigitalOcean&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/"&gt;DigitalOcean&lt;/a&gt; simplifies cloud computing so developers and businesses can spend more time building software that changes the world. With its mission-critical infrastructure and fully managed offerings, DigitalOcean helps developers, startups and small and medium-sized businesses (SMBs) rapidly build, deploy and scale applications to accelerate innovation and increase productivity and agility. DigitalOcean combines the power of simplicity, community, open source, and customer support, so customers can spend less time managing their infrastructure and more time building innovative applications that drive business growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.digitalocean.com/community/pages/kubernetes-challenge"&gt;About this Challenge&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Whether you’re new to Kubernetes, or you have been running production clusters for years, this challenge will give you an opportunity to level-up your Kubernetes skill set before the end of 2021. This challenge is for everyone from beginner to export on K8s. There are four different challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose your Challenge
&lt;/h2&gt;

&lt;p&gt;New to Kubernetes? Try one of these challenges. You’ll get $60 in DigitalOcean credits for your project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deploy an internal container registry&lt;/strong&gt; Kubernetes does not provide an internal container registry but it is often useful to add one. There are many projects which enable you to deploy an internal container registry, such as Harbour or Trow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy a log monitoring system&lt;/strong&gt; So your applications produce logs. Lots of logs. How are you supposed to analyze them? A common solution is to aggregate and analyze them using the ELK stack, alongside fluentd or fluentbit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy a scalable SQL database cluster&lt;/strong&gt; When deploying a database on Kubernetes, you have to make it redundant and scalable. You can rely on database management operators like KubeDB or database-specific solutions like Kubegres for PostgreSQL or the MySQL Operator for MySQL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy scalable NoSQL database cluster&lt;/strong&gt; When it comes to cloud native, using No-SQL solutions has its advantages. You can deploy a cluster of MongoDB, Cassandra, or CouchDB instances to explore how to run a NoSQL database in Kubernetes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I chose Deploy a scalable NoSQL database cluster in kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Github Repo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the link of github repository in which I did the &lt;a href="https://www.digitalocean.com/community/pages/kubernetes-challenge"&gt;DigitalOcean Kubernetes Challenge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/prajalsharma/mongodb-kubernetes-cluster"&gt;https://github.com/prajalsharma/mongodb-kubernetes-cluster&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment Guide
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.digitalocean.com/registrations/new"&gt;DigitalOcean Account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/"&gt;kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.digitalocean.com/reference/doctl/how-to/install/"&gt;Doctl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1 : Creating a Kubernetes Cluster on DigitalOcean
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new kubernetes cluster in your project segment by clicking on the Kubernetes button in Create dropdown button on the top right.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--duCwjdnZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bah0dppcid1h5ndxm9ju.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--duCwjdnZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bah0dppcid1h5ndxm9ju.jpg" alt="Image description" width="880" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose and fill in the following fields (choose wisely as they will affect your money consumption etc)&lt;/li&gt;
&lt;li&gt;For my project I chose , DataCenter:Bangalore , Nodeplan:10$/month per node , Node Count : 1,etc. (You can choose the name for your cluster as well)&lt;/li&gt;
&lt;li&gt;Click on 'Create Cluster'.&lt;/li&gt;
&lt;li&gt;Wait for a few minutes for the cluster to be created .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zD5YyEtP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ht7exds9oh65awu80dvm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zD5YyEtP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ht7exds9oh65awu80dvm.jpg" alt="Image description" width="880" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 : Connecting to the cluster
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;After node Creation,scroll down and press "Overview"&lt;/li&gt;
&lt;li&gt;Press "Get started!"&lt;/li&gt;
&lt;li&gt;In "connecting to kubernetes" , copy the command and paste it in terminal. (make sure kubectl and doctl are installed as it won't work if they aren't installed)
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W2Aiff_a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezx7f2oxegjy14vxus43.jpg" alt="Image description" width="880" height="401"&gt;
&lt;/li&gt;
&lt;li&gt;Run the copied command on your terminal.&lt;/li&gt;
&lt;li&gt;After it runs it will look like this on windows , if your result is same then you've connected your device with the Kubernetes Cluster.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rSAnDHGi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jinrsuxk33u2ndapy70q.png" alt="Image description" width="880" height="117"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3 : Deploy a MongoDB Cluster
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Clone this repository by running the command below on your terminal
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/prajalsharma/mongodb-kubernetes-cluster.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Go to the repo directory on you local machine through terminal.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;kubectl apply -f&lt;/code&gt; to to deploy the MongoDB Cluster.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;kubectl get all&lt;/code&gt; to get the status of deployment.&lt;/li&gt;
&lt;li&gt;The result will look like image below , that means you've comleted this step successfully.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lscrwQK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qqc5ttj64hemmtcrksi0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lscrwQK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qqc5ttj64hemmtcrksi0.jpg" alt="Image description" width="696" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 : Verify the Deployment
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;kubectl exec deployment/mongo-client -it -- /bin/bash&lt;/code&gt; to connect to the MongoDB cluster.&lt;/li&gt;
&lt;li&gt;The Command Prompt should change to root@mongo-client-xxxx&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;mongo --host mongo-nodeport-svc --port 27017 -u &amp;lt;username&amp;gt; -p &amp;lt;password&amp;gt;&lt;/code&gt; where username and password are the decoded values for the base64 credentials you entered in mongodb-secrets.yaml file.&lt;/li&gt;
&lt;li&gt;You should see the mongoDB info and prompt for mongo commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FLi1sK4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/whcalms74uq4b5evkecm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FLi1sK4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/whcalms74uq4b5evkecm.jpg" alt="Image description" width="744" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The End
&lt;/h2&gt;

&lt;p&gt;Congratulations you've made it till the end of this repo and now the terminal will show this after &lt;code&gt;show dbs&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_tLR2dPG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4wfpze1y26z6bqrtuidb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_tLR2dPG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4wfpze1y26z6bqrtuidb.jpg" alt="Image description" width="177" height="84"&gt;&lt;/a&gt;&lt;br&gt;
You have successfully deployed a NoSQL Database on Kubernetes. &lt;/p&gt;

&lt;h2&gt;
  
  
  Miscellaneous
&lt;/h2&gt;

&lt;p&gt;I have used Windows 10 for this , so people using other OS might get some errors. It was my first time using Kubernetes on DigitalOcean . Thanks to Organisers and everyone , got to learn a lot .&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>digitalocean</category>
      <category>cncf</category>
      <category>cloud</category>
    </item>
    <item>
      <title>ToDo List Using MongoDB Atlas</title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Fri, 14 Jan 2022 06:25:13 +0000</pubDate>
      <link>https://dev.to/prajalsharma/mongodb-submission-post-placeholder-title-4gki</link>
      <guid>https://dev.to/prajalsharma/mongodb-submission-post-placeholder-title-4gki</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/prajalsharma/todolist-mongodb"&gt;https://github.com/prajalsharma/todolist-mongodb&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Choose Your Own Adventure&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/prajalsharma/todolist-mongodb"&gt;https://github.com/prajalsharma/todolist-mongodb&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;[Note:] # (Be sure to link to any open source projects that are using your workflow!)&lt;/p&gt;

&lt;h3&gt;
  
  
  Output
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eC0s_hFq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxbkqaq36hjuoghor9rw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eC0s_hFq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxbkqaq36hjuoghor9rw.png" alt="Image description" width="880" height="384"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tFovmTdJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vzgwmvawf52vudk28x3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tFovmTdJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vzgwmvawf52vudk28x3o.png" alt="Image description" width="880" height="375"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KS_rS6qH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ewqpa0ngiif4ogayqyo7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KS_rS6qH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ewqpa0ngiif4ogayqyo7.png" alt="Image description" width="880" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

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

</description>
      <category>atlashackathon</category>
    </item>
    <item>
      <title>Making a DOGE Mailer </title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Thu, 09 Dec 2021 03:41:03 +0000</pubDate>
      <link>https://dev.to/prajalsharma/making-a-doge-mailer-3g4p</link>
      <guid>https://dev.to/prajalsharma/making-a-doge-mailer-3g4p</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/prajalsharma/doge-mailer/blob/main/.github/workflows/node.js.yml"&gt;https://github.com/prajalsharma/doge-mailer/blob/main/.github/workflows/node.js.yml&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/prajalsharma/doge-mailer"&gt;https://github.com/prajalsharma/doge-mailer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/prajalsharma/doge-mailer/blob/main/.github/workflows/node.js.yml"&gt;https://github.com/prajalsharma/doge-mailer/blob/main/.github/workflows/node.js.yml&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  About the Project
&lt;/h3&gt;

&lt;p&gt;This project is a part of a GithubActions21 Hackathon by Dev Community. This project uses Nodemailer and CoinMarketCap API with github actions to automatically send you a mail everyday on your gmail regarding the cryptocurrency prices everyday along with Tenor API which sends the DOGE meme GIFS to make it more fun.&lt;/p&gt;

&lt;h3&gt;
  
  
  About Github Actions and the API's Used
&lt;/h3&gt;

&lt;p&gt;GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub .&lt;/p&gt;

&lt;p&gt;In my project I used Cron to automate the sending of email everyday . It was fairly easy to use for beginners as well . Before this, I had to look somewhere else to automate things like these but now it can be done in your github which saves a lot of time .&lt;/p&gt;

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

&lt;p&gt;Then I used NodeMailer which carried out the task of sending mails whenever the program runs.&lt;/p&gt;

&lt;p&gt;I used the CoinMarketCap API to retrieve and send the Cryptocurrency data through mail.&lt;/p&gt;

&lt;p&gt;In the end , I used Tenor API to add a funny DOGE meme gif to make it more fun . It'll definitely make the reciever laugh :). Tenor is the hub of thouands of GIF's which we can use in our projects&lt;/p&gt;

&lt;h3&gt;
  
  
  Working samples
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6wDgypBy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eh0a6oss3qkvk1js7bra.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6wDgypBy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eh0a6oss3qkvk1js7bra.jpg" alt="Image description" width="880" height="1639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KyjlWkb5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8q99sywfyk3ln6n2lecf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KyjlWkb5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8q99sywfyk3ln6n2lecf.jpg" alt="Image description" width="880" height="1030"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Environment Variables Used
&lt;/h3&gt;

&lt;p&gt;USER_EMAIL = The email through which you want to send mails and give emailing access to the app.&lt;/p&gt;

&lt;p&gt;USER_PASSWORD = This is not the actual password of the email but an app password which can be made for only the access of the specific app . In my case it was gmail access app password&lt;/p&gt;

&lt;p&gt;EMAIL_FROM = This is the email through which you'll be sending the automated emails . It can only be one .&lt;/p&gt;

&lt;p&gt;EMAIL_TO= This refers to the target email on which you want to send the automated mail . It can be as many as you want.&lt;/p&gt;

&lt;p&gt;COINMARKETCAP_API_KEY = This is the API key of the CoinMarketCap API. You can use your own API key here .&lt;/p&gt;

&lt;p&gt;TENOR_API_KEY = This is the API key of the Tenor API .&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;In the future I expect to make the UI more beautiful and funky. &lt;br&gt;
Thank You if you made it till here .&lt;br&gt;
Please leave a star on github or like this post .&lt;br&gt;
Have a Great Day&lt;/p&gt;

</description>
      <category>actionshackathon21</category>
    </item>
    <item>
      <title>Can we make our own music player using an API which'll be free. </title>
      <dc:creator>Prajal Sharma</dc:creator>
      <pubDate>Sat, 28 Aug 2021 06:13:56 +0000</pubDate>
      <link>https://dev.to/prajalsharma/can-we-make-our-own-music-player-using-an-api-which-ll-be-free-5fpk</link>
      <guid>https://dev.to/prajalsharma/can-we-make-our-own-music-player-using-an-api-which-ll-be-free-5fpk</guid>
      <description>&lt;p&gt;Can we make our own music player using an API which'll be free as we will be the ones using it and no one else so there'll be no traffic in the server . We can search songs and play songs for free instead of this Spotify ad bs&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>python</category>
      <category>typescript</category>
      <category>android</category>
    </item>
  </channel>
</rss>
