<?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: Tod Sacerdoti</title>
    <description>The latest articles on DEV Community by Tod Sacerdoti (@tod).</description>
    <link>https://dev.to/tod</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%2F360320%2Fa97a056b-6ca6-4612-a68d-1e4ad257cd5c.jpg</url>
      <title>DEV Community: Tod Sacerdoti</title>
      <link>https://dev.to/tod</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tod"/>
    <language>en</language>
    <item>
      <title>GitHub Profile View Counter</title>
      <dc:creator>Tod Sacerdoti</dc:creator>
      <pubDate>Fri, 10 Jul 2020 18:29:26 +0000</pubDate>
      <link>https://dev.to/tod/github-profile-view-counter-igj</link>
      <guid>https://dev.to/tod/github-profile-view-counter-igj</guid>
      <description>&lt;p&gt;&lt;strong&gt;This hosted workflow allows you to track Github profile views and display them in your profile readme, for free.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project was inspired Artem Golubin's post &lt;a href="https://rushter.com/blog/github-profile-markdown/"&gt;How to track and display profile views on GitHub&lt;/a&gt;.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As part of recent design changes, GitHub has introduced READMEs for profiles. By &lt;a href="https://dev.to/web/design-github-profile-using-readme-md-8al"&gt;creating a repo&lt;/a&gt; with your name and adding README.md file with markdown to it, you can now add a rich description of yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://pipedream.com/@/p_G6CNmN/edit?copy=true"&gt;Copy this workflow&lt;/a&gt; to your Pipedream account&lt;/li&gt;
&lt;li&gt;Create a readme.md file for your GitHub profile (see &lt;a href="https://dev.to/web/design-github-profile-using-readme-md-8al"&gt;instructions&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add the counter image to your Github Readme (use your Pipedream endpoint URL)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ![counter](https://[YOUR_ENDPOINT].m.pipedream.net)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Your profile views will be counted and displayed:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8isyOf_T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/KVMbB0Z/Screen-Shot-2020-07-10-at-11-11-57-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8isyOf_T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/KVMbB0Z/Screen-Shot-2020-07-10-at-11-11-57-AM.png" alt="profile"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1UZii1JA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/rvzJPYg/Screen-Shot-2020-07-10-at-11-36-11-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1UZii1JA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/rvzJPYg/Screen-Shot-2020-07-10-at-11-36-11-AM.png" alt="workflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SNRjRBGW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/Pzh7M22/Screen-Shot-2020-07-10-at-11-36-29-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SNRjRBGW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/Pzh7M22/Screen-Shot-2020-07-10-at-11-36-29-AM.png" alt="code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pipedream.com/@/p_G6CNmN/edit?copy=true"&gt;Click here&lt;/a&gt; to to copy and deploy to your Pipedream account.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>This tweet has 78k+ impressions, 200+ likes &amp; 40+ retweets</title>
      <dc:creator>Tod Sacerdoti</dc:creator>
      <pubDate>Tue, 19 May 2020 15:41:14 +0000</pubDate>
      <link>https://dev.to/tod/test-2jnn</link>
      <guid>https://dev.to/tod/test-2jnn</guid>
      <description>&lt;blockquote class="twitter-tweet"&gt;
&lt;p&gt;This tweet updates itself...&lt;a href="https://t.co/FwNRzUaxtu"&gt;&lt;/a&gt;&lt;a href="https://t.co/FwNRzUaxtu"&gt;https://t.co/FwNRzUaxtu&lt;/a&gt;&lt;/p&gt;— Tod Sacerdoti (&lt;a class="comment-mentioned-user" href="https://dev.to/tod"&gt;@tod&lt;/a&gt;
) &lt;a href="https://twitter.com/tod/status/1263131709861539841"&gt;May 20, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;In fact, the exact metrics for this tweet are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;78374 impressions&lt;/li&gt;
&lt;li&gt;246 likes&lt;/li&gt;
&lt;li&gt;42 retweets&lt;/li&gt;
&lt;li&gt;5 quotes&lt;/li&gt;
&lt;li&gt;5 replies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason the title doesn't include the exact numbers is due to limitations of the Twitter API, which I will get to later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View the live workflow code &lt;a href="https://pipedream.com/@tod/p_7NCOBo/"&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This workflow is powered by &lt;a href="https://pipedream.com"&gt;Pipedream&lt;/a&gt;'s impossibly fast serverless integration platform and was inspired by similar self-reflexive automation efforts on &lt;a href="https://news.ycombinator.com/item?id=3742902"&gt;Hacker News&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=BxV14h0kFs0"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How this workflow works (in three easy steps):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MCB3s9wn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/fxDQJjF/summary.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MCB3s9wn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/fxDQJjF/summary.png" alt="Summary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Event Source - emits new events when Tweet Metrics change&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Since the &lt;a href="https://developer.twitter.com/en/docs/labs/tweet-metrics/faq"&gt;Twitter Tweet Metrics API&lt;/a&gt; is in preview, you must have your own Twitter developer credentials and &lt;a href="https://developer.twitter.com/en/account/labs"&gt;activate&lt;/a&gt; the preview in your developer account.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Av2148x8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/ZNDtN9N/step1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Av2148x8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/ZNDtN9N/step1.png" alt="Event Source"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Code Step - Dev.to post in markdown with title and description&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HvIPYLH4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/WKbthLF/step2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HvIPYLH4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/WKbthLF/step2.png" alt="Code Step"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Action - update the article using the Dev.to &lt;a href="https://docs.dev.to/api/#operation/updateArticle"&gt;API&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i_G1sEFd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/hRMSjQY/step3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i_G1sEFd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/hRMSjQY/step3.png" alt="Action"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does the tweet not update in real time?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unfortunately, Twitter doesn't update the data of twitter cards in real time, which is why the metrics are rounded in the tweet&lt;/li&gt;
&lt;li&gt;Twitter cards can be updated via the &lt;a href="https://cards-dev.twitter.com/validator"&gt;Card Validator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;However, doing this programmatically would violate Twitter's &lt;a href="https://developer.twitter.com/en/developer-terms"&gt;Developer Terms&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter says &lt;a href="https://help.twitter.com/en/rules-and-policies/twitter-automation"&gt;DO NOT&lt;/a&gt; "use non-API-based forms of automation, such as scripting the Twitter website. The use of these techniques may result in the permanent suspension of your account."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why not build your own?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;View the live workflow code &lt;a href="https://pipedream.com/@tod/p_7NCOBo/"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy&lt;/strong&gt; the workflow into your account&lt;/li&gt;
&lt;li&gt;Add your Twitter / Dev.to credentials and make any code changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy the workflow&lt;/strong&gt; and you are live&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>automation</category>
      <category>twitter</category>
    </item>
    <item>
      <title>blah</title>
      <dc:creator>Tod Sacerdoti</dc:creator>
      <pubDate>Tue, 19 May 2020 03:16:05 +0000</pubDate>
      <link>https://dev.to/tod/this-article-updates-itself-44ao</link>
      <guid>https://dev.to/tod/this-article-updates-itself-44ao</guid>
      <description>

</description>
    </item>
    <item>
      <title>RSS for Hackers</title>
      <dc:creator>Tod Sacerdoti</dc:creator>
      <pubDate>Mon, 20 Apr 2020 20:35:05 +0000</pubDate>
      <link>https://dev.to/tod/rss-for-hackers-ln4</link>
      <guid>https://dev.to/tod/rss-for-hackers-ln4</guid>
      <description>&lt;p&gt;We &lt;a class="comment-mentioned-user" href="https://dev.to/pipedream"&gt;@pipedream&lt;/a&gt;
 launched &lt;a href="https://rss.pipedream.com"&gt;RSS for Hackers&lt;/a&gt;!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Process RSS feeds programmatically, for free&lt;/li&gt;
&lt;li&gt;Run any Node.js code on new items&lt;/li&gt;
&lt;li&gt;Pre-built functions can send data to destinations&lt;/li&gt;
&lt;li&gt;Access events in your app using SSE or REST API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it out &lt;a href="https://rss.pipedream.com"&gt;https://rss.pipedream.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>rss</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
