Posts tagged "Atom"urn:www-greghendershott-com:Atom2013-05-06T13:40:35Zfeeds2gmailurn:www-greghendershott-com:-2013-05-feeds2gmail.html2013-05-06T13:40:35Z2013-05-06T13:40:35ZGreg Hendershott
<div>
<article>
<header>
<h1>feeds2gmail</h1>
<p class="date-and-tags">
<time datetime="2013-05-06" pubdate="true">2013-05-06</time> :: <span class="tags"><a href="/tags/Google.html">Google</a>, <a href="/tags/Racket.html">Racket</a>, <a href="/tags/Atom.html">Atom</a>, <a href="/tags/RSS.html">RSS</a></span></p></header>
<p>Recently I wrote about my <a href="http://www.greghendershott.com/2013/03/my-google-reader-successor.html">my Google Reader successor</a>, using rss2email to push feeds to Gmail.</p>
<p>In the month since, I was still running it on my laptop. To make it work best, it should run on a dedicated server. That way, it would push emails even if I’m away from my laptop, and I could read them on e.g. my phone. But before committing to setting this up on Amazon EC2, I wanted to be sure I liked the approach.</p><!-- more-->
<p>Although I liked it, I missed having feeds in their own folders. Sometimes, I want to catch up with a specific blog, as opposed to a timeline mix of all of them.</p>
<p>Also, I was continuing to have deliverability issues, including Gmail persisting in tagging some items as Spam.</p>
<p>I stumbled across a <a href="https://github.com/rcarmo/rss2email">fork of rss2email that uses IMAP directly</a>. Great idea!</p>
<p>I had what I thought was an even better idea: Instead of doing this in Python, use Google Apps Script. This is a JavaScript environment that Google provides as its answer to macro languages in Microsoft Office products. It’s surprising powerful. Among other things, you can schedule scripts to run. That would mean I wouldn’t need a dedicated server to <code>cron</code> the feed updates.</p>
<p>Also, I was excited for the opportunity to increase my experience with JavaScript.</p>
<p>Unfortunately, although I got pretty far with this approach, I was completely blocked because <a href="http://stackoverflow.com/questions/16149899/how-to-create-a-gmail-message-with-a-specific-label">Google Apps Script can’t access IMAP</a>. And its own email APIs don’t let you create a Gmail mail in a specific folder (i.e. with a specific Gmail label).</p>
<p>I stewed over this for awhile. I looked at the rss2email source. And I decided, well shit, if I have to code this to run on my own server, I want to use Racket.</p>
<p>So I came up with <a href="https://github.com/greghendershott/feeds2gmail">feeds2gmail</a>. It’s similar to the <a href="https://github.com/rcarmo/rss2email">fork of rss2email that uses IMAP directly</a>, but written in Racket.</p>
<p>One thing Racket doesn’t have (that I could find) is a handy library to read feeds. Sometimes I’ve wanted a magic FFI to Python and/or Ruby libs. This was one of those times.</p>
<p>I ended up coding Atom, RSS, and RDF feed parsing myself. It works for the feeds I’ve tried. I suspect this is the most fragile aspect that will need bug fixes. Partly because I may have made mistakes, and partly because the feeds have made mistakes.</p>
<p>Meanwhile, it’s working for me. I have an experience in Gmail that is <em>very</em> close to Google Reader in the respects I care about.</p>
<footer></footer></article></div>My Google Reader successorurn:www-greghendershott-com:-2013-03-my-google-reader-successor.html2013-03-29T17:01:50Z2013-03-29T17:01:50ZGreg Hendershott
<div>
<article>
<header>
<h1>My Google Reader successor</h1>
<p class="date-and-tags">
<time datetime="2013-03-29" pubdate="true">2013-03-29</time> :: <span class="tags"><a href="/tags/Google.html">Google</a>, <a href="/tags/Atom.html">Atom</a>, <a href="/tags/RSS.html">RSS</a></span></p></header>
<p>Just a brief update about what I’ve settled on as my replacement for Google Reader. I’m using Rss2Email, following the instructions in <a href="http://wcm1.web.rice.edu/turning-gmail-into-google-reader.html">Turning Gmail into Google Reader</a>.</p>
<p>I tried Feedly, NewsBlur, and Reeder. Each of them wasn’t bad, but each felt “heavy” compared to Google Reader. So W. Caleb McDaniel’s post really clicked with me.</p><!-- more-->
<p>I did end up trimming 350 feeds down to 50. What I cut:</p>
<ol>
<li>
<p>Old/dead feeds.</p></li>
<li>
<p>Big name feeds.</p></li></ol>
<p>By the latter, I mean that I don’t need feeds to help me keep up with fire hose sites like Wired, TechCrunch, and so on. I can follow them in Twitter. If I miss a specific article, no big deal. Also, I will encounter a lot of that stuff on something like Hacker News.</p>
<p>Instead, I’m using feeds for the “long tail” stuff: Sites that post infrequently, and/or that are are smaller. And sites where I may want to read every post (or at least glance at every one).</p>
<p>The experience in Gmail is pretty darn close to GReader. Same navigation keys. Can star things. Can forward in email. On the one hand, this makes me empathize with Google wanting to kill Reader. But on the other hand, it makes me feel, why didn’t they add feed reeding <em>into</em> Gmail? Why the desire to deprecate RSS and Atom feeds? Grumble, grumble.</p>
<p>So overall it’s actually quite similar. Differences in the experience?</p>
<p>One small nuisance is the lack of a <code>V</code> key to go to the original web page. I have to mouse up and click the link.</p>
<p>A broader difference is that, even though it’s Gmail and I’m far from running out of space, I don’t want a lot of feed stuff to accumulate there. It probably doesn’t matter, I could periodically just nuke all the mails labeled Feeds, but there’s some “psychic weight”. But as I explained, I’m being more selective in the feeds I follow.</p>
<p>A tip: On Mac OS X, I tried both methods of sending mail—connecting to my GMail account, or, using <code>sendmail</code>. The latter worked better, because the display name of the From email address is the name of the feed (it looks like Caleb’s screen shot).</p>
<p>For the future: I have <code>cron</code> running this hourly on my Mac Book. That works just fine at home. But on the road, it won’t be pushing emails to my phone if the laptop isn’t running. So I’ll probably move this to a server, such as a micro EC2 instance that I’m using for something else. The only gotchas there? Might need to send the email using Amazon SES since EC2 instances are usually blacklisted for email sending. Plus, adding or removing feeds will require <code>ssh</code>-ing into that server. Although not horrible, not super user friendly.</p>
<blockquote>
<p><strong>UPDATE:</strong> I ended up replacing rss2email with <a href="http://www.greghendershott.com/2013/05/feeds2gmail.html">feeds2gmail, which is similar but has a few advantages</a>.</p></blockquote>
<footer></footer></article></div>Feed stats in Frog (without FeedBurner)urn:www-greghendershott-com:-2013-03-feed-stats-in-frog-without-feedburner.html2013-03-19T13:11:43Z2013-03-19T13:11:43ZGreg Hendershott
<div>
<article>
<header>
<h1>Feed stats in Frog (without FeedBurner)</h1>
<p class="date-and-tags">
<time datetime="2013-03-19" pubdate="true">2013-03-19</time> :: <span class="tags"><a href="/tags/Frog.html">Frog</a>, <a href="/tags/Google.html">Google</a>, <a href="/tags/Atom.html">Atom</a>, <a href="/tags/RSS.html">RSS</a></span></p></header>
<p>In light of Google <a href="http://googlereader.blogspot.com/2013/03/powering-down-google-reader.html">shutting down Google Reader</a> and <a href="http://www.webmonkey.com/2013/03/its-not-just-reader-google-kills-chrome-rss-extension-too/">removing feed-following UI in Chrome</a>, it probably can’t be long until they shut down FeedBurner, too.</p>
<p>Although I’m using <a href="http://www.google.com/analytics/">Google Analytics</a> for this blog, I’m not using FeedBurner. But imagining what feed readership stats I might want, I came up with a short list, and thought about how to get them without FeedBurner.</p><!-- more-->
<ol>
<li>
<p>“Subscribers”: Tell me how many people have chosen to subscribe to the Atom or RSS feed. How often they bother to read it is another matter.</p></li>
<li>
<p>“Readers on web site”: Tell me how many people are clicking through from the feed to read the full post on the original web site.</p></li>
<li>
<p>“Readers, feed-only”: Tell me how many people opened the feed item, possibly read it, but did <em>not</em> click through to the orignal web site.</p></li></ol>
<p>So the excercise is, how to do this <em>without</em> FeedBurner.</p>
<p>I <a href="https://github.com/greghendershott/frog/commit/7c0ed36acf8061cc0ac7332aaa8747b184fcdd0f">just added</a> tentative stuff to <a href="https://github.com/greghendershott/frog/">Frog</a> for items 2 and 3.</p>
<h2 id="readers-clicking-through-to-this-site">Readers clicking through to this site</h2>
<p>Some people will start to read an item in the feed, then click through to the main web site to finish reading it. (People are more likely to do this if you’ve set your blog to show only above-the-jump summaries, with “continue reading” links.)</p>
<p>Since this is page views on our web site, this can be handled by Google Analytics (or similar, if Google shuts <em>that</em> down). The only trick is to distinguish viewers who got here from the feed, as opposed to from somewhere else.</p>
<p>Well, that’s what the GA <code>utm_xxx</code> <a href="http://support.google.com/analytics/bin/answer.py?hl=en&answer=1033867">query parameters</a> are for. In the feed, we’ll decorate the URIs that lead back to the original blog post.</p>
<pre><code>http://example.com/path/to/thing.html</code></pre>
<p>becomes</p>
<pre><code>http://example.com/path/to/thing.html?
utm_source=feed&
utm_medium=feed</code></pre>
<p>This should let us view stats for <code>path/to/thing.html</code> in Google Analytics, that came via the feed.</p>
<p>In Frog I’m also adding a <code>utm_campaign</code> parameter, and distinguishing the RSS and Atom feeds (just because I’m curious).</p>
<h2 id="readers-staying-in-their-feed-reader">Readers staying in their feed reader</h2>
<p>Some people will solely read items in your feed, and not click through to your web site. (This is especially likely if you’re showing full posts in your feed.) How to count reads?</p>
<p>The answer here seems to be the tried-and-true “image bug”.</p>
<p>Each feed item’s contents will get the following image element added automatically:</p>
<div class="brush: html">
<table class="sourcetable">
<tbody>
<tr>
<td class="linenos">
<div class="linenodiv">
<pre>1
2
3
4
5
6</pre></div></td>
<td class="code">
<div class="source">
<pre><span></span><span class="p"><</span><span class="nt">img</span> <span class="na">height</span><span class="o">=</span><span class="s">"1"</span>
<span class="na">width</span><span class="o">=</span><span class="s">"1"</span>
<span class="na">src</span><span class="o">=</span><span class="s">"http://example.com/img/1x1.gif?</span>
<span class="s"> utm_source=feed&</span>
<span class="s"> utm_medium=feed&</span>
<span class="s"> utm_campaign=<URI of blog post>"</span>
</pre></div>
</td></tr></tbody></table>
</div>
<p>We’ll share the same 1x1.gif image bug across all posts. So we’ll distinguish each post using the <code>utm_campaign</code> query-parameter. The “campaign” name will be the URI of the blog post.</p>
<h2 id="subscriber-counts">Subscriber counts</h2>
<p>I’ve glossed over this so far. It’s the least-interesting metric to me—it seems akin to caring about followers count, as opposed to real interactions, on a social network.</p>
<p>In any case, presumably the way to handle this is as a Goal in Google Analytics: People who click the feed link have reached the goal.</p>
<p>If that’s not exactly like what FeedBurner does, maybe that’s OK with me. If you have some other idea, let me know.</p>
<h2 id="summary">Summary</h2>
<p>That’s what I’ve sketched out so far. It’s taking a little time to test it out. If you see any problems or sheer stupidity, please let me know in the comments.</p>
<footer></footer></article></div>Killing Google Readerurn:www-greghendershott-com:-2013-03-killing-google-reader.html2013-03-14T13:17:48Z2013-03-14T13:17:48ZGreg Hendershott
<div>
<article>
<header>
<h1>Killing Google Reader</h1>
<p class="date-and-tags">
<time datetime="2013-03-14" pubdate="true">2013-03-14</time> :: <span class="tags"><a href="/tags/Google.html">Google</a>, <a href="/tags/RSS.html">RSS</a>, <a href="/tags/Atom.html">Atom</a></span></p></header>
<p>Last night I learned the news that <a href="http://googlereader.blogspot.com/2013/03/powering-down-google-reader.html">Google is killing Google Reader July 1</a>.</p>
<p>This morning I’m feeling <a href="https://youtu.be/A25VgNZDQ08">like this</a>.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/A25VgNZDQ08" frameborder="0" allowfullscreen="allowfullscreen"></iframe><!-- more-->
<h2 id="google-killed-feed-readers">Google killed feed readers</h2>
<p>Google Reader was so good that it sucked all the oxygen out of the market for feed readers, especially in the form of desktop apps. Since then, innovation in this area has stagnated.</p>
<p>Glass half full, this could prompt a flurry of activity and interesting new options.</p>
<h2 id="google-reader-the-service">Google Reader, the service</h2>
<p>At the same time, Google Reader became a service upon which many other apps and services depended, and with which they synchronized.</p>
<p>Suddenly they have to scramble to do something else—or decide to kill their projects, too. Like <a href="http://nick.typepad.com/blog/2013/03/the-end-of-feeddemon.html">FeedDemon</a> just announced.</p>
<p>Glass half empty, there will be more of this and it will make the concept of RSS and Atom feeds weaker, not stronger.</p>
<h2 id="reeder-for-mac-alternative">Reeder for Mac: Alternative?</h2>
<p>Last night I tried <a href="http://reederapp.com/">Reeder</a> for Mac. On the plus side, it can work quite similarly to Google Reader. Out of the box you can use shortcut keys like <code>J</code> and <code>K</code> to navigate within a feed. I changed its other defaults to make it work even closer to GReader: <code>SHIFT+J</code> and <code>SHIFT+K</code> to navigate between feeds, and <code>V</code> to open the original page in a real browser.</p>
<p>Although it will take time to adjust, it might be fine.</p>
<p>A couple caveats:</p>
<ul>
<li>
<p>It’s not free. (Although $4.99 seems pretty reasonable for what it does. Especially if you care enough to get mad about Google Reader going away.)</p></li>
<li>
<p>It’s not in the browser. It just feels weird to me to juggle two different apps. Could/should this a reader built into the browser as an extension for Chrome or Firefox?</p></li>
<li>
<p>If you’re using Chrome OS, what the hell do you do? If I had just bought an expensive <a href="http://www.google.com/intl/en/chrome/devices/chromebook-pixel/">Chromebook Pixel</a>, I’d be pretty upset today. Suddenly killing useful web apps doesn’t help Google make the case for web apps.</p></li></ul>
<p>Lifehacker has a post about <a href="http://lifehacker.com/5990456/google-reader-is-getting-shut-down-here-are-the-best-alternatives">more alternatives</a>.</p>
<h2 id="googles-relationship-with-tech-press-and-bloggers">Google’s relationship with tech press and bloggers</h2>
<p>I remember the era around 2005, when LifeHacker was writing about Gmail and Google Reader. Here were these cool new web apps, more powerful than you might have guessed. And here were all these geeks eagerly embracing them.</p>
<p>I suspect this played a big role in Google’s generally positive image and mindshare.</p>
<p>Something like Google Reader is particularly useful and appealing to precisely the kind of people who write about the tech industry. I’m curious what effect this will have—when Google takes away a key part of those folks’ daily lives, and effectively gives them the finger. Will this turn out to be penny wise and pound foolish?</p>
<h2 id="summary">Summary</h2>
<p>Anyway, those are my initial thoughts. I hope we get the glass-half-full version.</p>
<footer></footer></article></div>