<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/alex-2012.css" ?>
<rss version="2.0"
    xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://web.resource.org/cc/"
    xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<title>Alex Schroeder: Blogs</title>
<link>http://alexschroeder.ch/wiki/Diary</link>
<atom:link href="http://www.google.com/profiles/kensanata" rel="me" type="text/html" />
<atom:link href="http://alexschroeder.ch/wiki?action=rss;full=1" rel="self" type="application/rss+xml" />
<description>The Homepage of Alex Schroeder.</description>
<pubDate>Tue, 21 May 2013 20:52:33 GMT</pubDate>
<lastBuildDate>Tue, 21 May 2013 20:52:33 GMT</lastBuildDate>
<generator>Oddmuse</generator>
<copyright>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation.</copyright>
<cc:license>http://www.gnu.org/copyleft/fdl.html</cc:license>
<image>
<url>http://alexschroeder.ch/pics/alex.png</url>
<title>Alex Schroeder: Blogs</title>
<link>http://alexschroeder.ch/wiki</link>
</image>

<item>
<title>On RPG Blogging</title>
<link>http://alexschroeder.ch/wiki/2012-08-24_On_RPG_Blogging</link>
<guid>http://alexschroeder.ch/wiki/2012-08-24_On_RPG_Blogging</guid>
<description>&lt;p&gt;Recently &lt;a class="url http outside" href="https://plus.google.com/108952000794667779763/posts/i2ork14dBVa"&gt;Michael Gibbons asked on Google+&lt;/a&gt; regarding gaming blogs:&lt;/p&gt;&lt;p&gt;&lt;b&gt;What do you prefer: content or opinion?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I prefer &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;opinion&lt;/em&gt; and &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;insight&lt;/em&gt; with examples from actual play or things that I will immediately adopt for my own games.&lt;/p&gt;&lt;p&gt;My favorite example for this is the &lt;a class="local" href="http://alexschroeder.ch/wiki/2012-02-18_Ode_to_Ode_to_Black_Dougal"&gt;Ode to Black Dougal&lt;/a&gt; blog.&lt;/p&gt;&lt;p&gt;A blog in the same category I recently stumbled upon is &lt;a class="url http outside" href="http://untimately.blogspot.com/"&gt;Untimately&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I will download a lot of content, but it doesn&amp;#x2019;t get read carefully unless it gets used at the table and that happens rarely. I have huge folders on my hard disk full of PDFs: bears, hats, treasure maps, Vancian spell names and short spell descriptions, alternate classes, one page dungeons, character generation shortcuts… At the gaming table, I can barely remember to use one or two of these.&lt;/p&gt;&lt;p&gt;&lt;b&gt;What kind of stuff cheeses you off enough to stop reading someone’s blog?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I think my reasons for unsubscribing from blogs usually involve one of the following:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;misanthropic ranting&lt;/b&gt; &amp;#x2013; there is enough negativity out there already; I&amp;#x2019;m also easily peeved by unpolite hosts&lt;/li&gt;&lt;li&gt;&lt;b&gt;excuses for not posting&lt;/b&gt; &amp;#x2013; not posting is ok, unwritten posts don&amp;#x2019;t show up in my feed reader, but excuses will show up in my feed reader; I&amp;#x2019;m interested in the authors&amp;#x2019; lives, and thus posting about health or family issues every now and then is not a problem&lt;/li&gt;&lt;li&gt;&lt;b&gt;long posts&lt;/b&gt; &amp;#x2013; &amp;#x201c;TL;DR&amp;#x201d; aka. &amp;#x201c;too long; didn&amp;#x2019;t read&amp;#x201d; is a problem: I might skim long articles but often I don&amp;#x2019;t read them; as the unread articles accumulate, I start wondering whether I&amp;#x2019;d be happier unsubscribing since I would no longer feel bad for not reading the posts&lt;/li&gt;&lt;li&gt;&lt;b&gt;not my topic&lt;/b&gt; &amp;#x2013; if the author keeps writing about the design of a game that I won&amp;#x2019;t be playing, I feel that I&amp;#x2019;m better of reading somebody else&amp;#x2019;s posts: there are so many out there!&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Blogs"&gt;Blogs&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Blogs"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Keep%20It%20Short"&gt;Keep It Short&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Keep%20It%20Short"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Fri, 24 Aug 2012 16:09:01 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2012-08-24_On_RPG_Blogging</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2012-08-24_On_RPG_Blogging</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2012-08-24_On_RPG_Blogging</wiki:diff>
<category>RPG</category>
<category>Blogs</category>
<category>Keep It Short</category>
</item>

<item>
<title>Blog Napping</title>
<link>http://alexschroeder.ch/wiki/2012-05-16_Blog_Napping</link>
<guid>http://alexschroeder.ch/wiki/2012-05-16_Blog_Napping</guid>
<description>&lt;p&gt;Ok, so I wanted a local copy of &lt;a class="near" title="Names" href="http://themetalearth.blogspot.com/"&gt;Metal Earth&lt;/a&gt; in order to better prepare for my game. Based on &lt;a class="local" href="http://alexschroeder.ch/wiki/2010-05-31_Blognapping"&gt;previous work&lt;/a&gt; I had done, this proved to be fairly easy and I improved my scripts along the way. Yay!&lt;/p&gt;&lt;p&gt;&lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;The Metal Earth&lt;/em&gt; is a blogspot blog with full page content in the Atom feed.&lt;/p&gt;&lt;p&gt;To identify the blog, look at the source of any page. The HTML header will contain a line like the following: &lt;code&gt;&amp;lt;link rel="service.post" type="application/atom+xml" title="..." href="http://www.blogger.com/feeds/XXX/posts/default" /&amp;gt;&lt;/code&gt; &amp;#x2013; this is where you get the number from. In this case, the number is 2248254789731612355.&lt;/p&gt;&lt;p&gt;&lt;b&gt;download.sh&lt;/b&gt; &amp;#x2013; this file downloads the atom feed files:&lt;/p&gt;&lt;pre class="real"&gt;#! /bin/sh
for i in `seq 40`; do
  start=$((($i-1)*25+1))
  curl -o foo-$i.atom "http://www.blogger.com/feeds/2248254789731612355/posts/default?start-index=$start&amp;amp;amp;max-results=25"
done&lt;/pre&gt;&lt;p&gt;You&amp;#x2019;ll find that you only need to keep the first four of them.&lt;/p&gt;&lt;p&gt;&lt;b&gt;extract.sh&lt;/b&gt; &amp;#x2013; this file calls the Perl script for every Atom file. You can use the -f option to force it to overwrite existing files.&lt;/p&gt;&lt;pre class="real"&gt;#! /bin/sh
for f in *.atom; do
    perl extract.pl "$*" &amp;lt; $f
done&lt;/pre&gt;&lt;p&gt;&lt;b&gt;extract.pl&lt;/b&gt; &amp;#x2013; this file has several CPAN dependencies. It will parse the Atom file, look at each entry, and write it into a separate file. If the entry doesn&amp;#x2019;t have a title, it will parse the HTML content and try to guess a title (looking at the first H1 or the first SPAN element). It will warn you about duplicate names. It will also try to set the last modification time of the file to the update timestamp in the Atom file.&lt;/p&gt;&lt;pre class="real"&gt;#!/usr/bin/perl
use strict;
use XML::LibXML;
use HTML::HTML5::Parser;
use Getopt::Std;
use DateTime::Format::W3CDTF;
use DateTime;
our $opt_f;
getopts('f');
undef $/;
my $data = &amp;lt;STDIN&amp;gt;;
my $parser = XML::LibXML-&amp;gt;new();
my $doc = $parser-&amp;gt;parse_string($data);
die $@ if $@;
my $encoding = $doc-&amp;gt;actualEncoding();
my $context = XML::LibXML::XPathContext-&amp;gt;new($doc);
$context-&amp;gt;registerNs('atom', 'http://www.w3.org/2005/Atom');
my $html_parser;
foreach my $entry ($context-&amp;gt;findnodes('//atom:entry')) {
  my $content = $entry-&amp;gt;getChildrenByTagName('content')-&amp;gt;[0]-&amp;gt;to_literal;
  my $title = $entry-&amp;gt;getChildrenByTagName('title')-&amp;gt;[0]-&amp;gt;to_literal;
  $title =~ s!/!_!gi;
  $title =~ s!&amp;amp;amp;!&amp;amp;!gi;
  $title =~ s!&amp;amp;#(\d+);!chr($1)!ge;
  if (not $title) {
    if (not $html_parser) {
      $html_parser = HTML::HTML5::Parser-&amp;gt;new;
    }
    my $html_doc = $html_parser-&amp;gt;parse_string($content);
    # we don't know the HTML namespace for certain
    my $html_ns = $html_doc-&amp;gt;documentElement-&amp;gt;namespaceURI();
    my $html_context = XML::LibXML::XPathContext-&amp;gt;new($html_doc);
    $html_context-&amp;gt;registerNs('html', $html_ns);
    $title = $html_context-&amp;gt;findnodes('//html:h1')-&amp;gt;[0];
    $title = $html_context-&amp;gt;findnodes('//html:span')-&amp;gt;[0] unless $title;
    $title = $title-&amp;gt;to_literal if $title;
    warn "Guessed missing title: $title\n";
  }
  my $f = DateTime::Format::W3CDTF-&amp;gt;new;
  my $dt = $f-&amp;gt;parse_datetime($entry-&amp;gt;getChildrenByTagName('updated')-&amp;gt;[0]-&amp;gt;to_literal)-&amp;gt;epoch;
  my $file = $title . ".html";
  if (-f $file and ! $opt_f) {
    warn "$file exists\n";
  } else {
    open(F, "&amp;gt;:encoding($encoding)", $file) or die $! . ' ' . $file;
    print F &amp;lt;&amp;lt;EOT;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta content='text/html; charset=$encoding' http-equiv='Content-Type'/&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
$content
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOT
    close F;
    utime $dt, $dt, $file;
  }
}&lt;/pre&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Blogs"&gt;Blogs&lt;/a&gt; &lt;a class="feed tag" title="Feed für diesen Tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/Blogs"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 16 May 2012 12:58:54 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2012-05-16_Blog_Napping</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2012-05-16_Blog_Napping</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2012-05-16_Blog_Napping</wiki:diff>
<category>Blogs</category>
</item>

<item>
<title>The Wiki Nature of This Blog</title>
<link>http://alexschroeder.ch/wiki/2010-11-05_The_Wiki_Nature_of_This_Blog</link>
<guid>http://alexschroeder.ch/wiki/2010-11-05_The_Wiki_Nature_of_This_Blog</guid>
<description>&lt;p&gt;I recently saw an essay by &lt;a class="near" title="Names" href="http://socialsynergyweb.net/cgi-bin/wiki/FrontPage"&gt;SamRose&lt;/a&gt;, linked to from &lt;a class="inter Community" href="http://www.communitywiki.org/cw/InformationOverload"&gt;&lt;span class="site"&gt;Community&lt;/span&gt;&lt;span class="separator"&gt;:&lt;/span&gt;&lt;span class="page"&gt;InformationOverload&lt;/span&gt;&lt;/a&gt;: &lt;a class="url http outside" href="http://blog.p2pfoundation.net/7000/2010/01/23"&gt;Why you never see people complaining about “knowledge overload”…&lt;/a&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&amp;#x201c;Your ability to track, read, digest and understand blog posts cannot match the exponential volume of blogs emerging on the internet every day (even just in the subject areas that you are interested in).&amp;#x201d;&lt;/li&gt;&lt;li&gt;&amp;#x201c;[I]f your intent is to be a source of re-usable knowledge, then focusing on frequency of posting, and statistics of people looking at your web or blogsite could become difficult to sustain.&amp;#x201d;&lt;/li&gt;&lt;li&gt;&amp;#x201c;A more sustainable approach for digesting, understanding, and sharing for the 80% of people who will not be one of the widely-followed blogs, is to do it in a form that others can digest, understand, and share.&amp;#x201d;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;It makes me want return to writing &lt;b&gt;wiki pages&lt;/b&gt; on this site instead of blog pages (like this one). Start with a copy of a good blog page on a topic, copy it to a page without date prefix, and &lt;em style="text-decoration: underline; font-style: normal;"&gt;integrate&lt;/em&gt; other good pages instead of just appending to them (like the tag or category pages will).&lt;/p&gt;&lt;p&gt;On the topic of my &lt;a class="local" href="http://alexschroeder.ch/wiki/RPG"&gt;RPG&lt;/a&gt;-related blogging, I have a few things that I keep returning to:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;My current set of house-rules, somewhat collected on &lt;a class="local" href="http://alexschroeder.ch/wiki/House_Rules"&gt;House Rules&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The underpinnings of my play style, somewhat collected on &lt;a class="local" href="http://alexschroeder.ch/wiki/How_I_Roll"&gt;How I Roll&lt;/a&gt;&lt;/li&gt;&lt;li&gt;There&amp;#x2019;s also a much longer German page describing what I like as a player, &lt;a class="local" href="http://alexschroeder.ch/wiki/2010-03-01_Spielervorlieben"&gt;2010-03-01 Spielervorlieben&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The underpinnings of my referee style, somewhat collected on &lt;a class="local" href="http://alexschroeder.ch/wiki/Know_Your_DM"&gt;Know Your DM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A wide variety of pages on the abstract idea of writing &lt;em style="text-decoration: underline; font-style: normal;"&gt;short&lt;/em&gt; texts, currently collected on &lt;a class="local" href="http://alexschroeder.ch/wiki/Keep_It_Short"&gt;Keep It Short&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Wiki"&gt;Wiki&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/Wiki"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Blogs"&gt;Blogs&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/Blogs"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Fri, 05 Nov 2010 16:06:11 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2010-11-05_The_Wiki_Nature_of_This_Blog</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2010-11-05_The_Wiki_Nature_of_This_Blog</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2010-11-05_The_Wiki_Nature_of_This_Blog</wiki:diff>
<category>Wiki</category>
<category>Blogs</category>
</item>

<item>
<title>To My RPG Followers</title>
<link>http://alexschroeder.ch/wiki/2010-07-13_To_My_RPG_Followers</link>
<guid>http://alexschroeder.ch/wiki/2010-07-13_To_My_RPG_Followers</guid>
<description>&lt;p&gt;I&amp;#x2019;ve noticed that some people have added my blog to their blogroll. &lt;b&gt;Thank you&lt;/b&gt;!&lt;/p&gt;&lt;p&gt;Some of you have subscribed to a feed listing all changes &amp;#x2013; including non RPG pages, German pages, Comments, etc. I&amp;#x2019;m assuming that those topics are annoying you. If not, you can stop reading now. &lt;img class="smiley" src="http://www.emacswiki.org/pics/smile.png" alt=":)" /&gt;&lt;/p&gt;&lt;p&gt;I figured that maybe the reason is because Blogspot and similar services are having difficulties subscribing to a feed URL containing a query string (question marks and semicolons). I don&amp;#x2019;t really know what the problem is, but I have seen that one before. Anyway, I fiddled with the site setup again. &lt;img class="smiley" src="http://www.emacswiki.org/pics/vee.png" alt="vee" /&gt;&lt;/p&gt;&lt;p&gt;Subscribe to this URL in your feed reader &amp;#x2013; Google Reader, Bloglines, etc:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="url http" href="http://www.emacswiki.org/alex/feed/full/RPG"&gt;http://www.emacswiki.org/alex/feed/full/RPG&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you don&amp;#x2019;t need the full page content because you are adding it to your sidebar, you can use the following URL:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="url http" href="http://www.emacswiki.org/alex/feed/RPG"&gt;http://www.emacswiki.org/alex/feed/RPG&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I hope that helps?&lt;/p&gt;&lt;p&gt;The feed icon for the RPG tag below should now link to the correct URL as well.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Blogs"&gt;Blogs&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Blogs"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Tue, 13 Jul 2010 19:41:14 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2010-07-13_To_My_RPG_Followers</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2010-07-13_To_My_RPG_Followers</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2010-07-13_To_My_RPG_Followers</wiki:diff>
<category>RPG</category>
<category>Blogs</category>
</item>

<item>
<title>Blognapping</title>
<link>http://alexschroeder.ch/wiki/2010-05-31_Blognapping</link>
<guid>http://alexschroeder.ch/wiki/2010-05-31_Blognapping</guid>
<description>&lt;p&gt;For &lt;b&gt;Blogger&lt;/b&gt;, using &lt;b&gt;bash&lt;/b&gt;, &lt;b&gt;perl&lt;/b&gt;, and &lt;b&gt;curl&lt;/b&gt;. You need to replace XXX with the magic number you get when you look at the blog&amp;#x2019;s source. The HTML header will contain a line like the following: &lt;code&gt;&amp;lt;link rel="service.post" type="application/atom+xml" title="..." href="http://www.blogger.com/feeds/XXX/posts/default" /&amp;gt;&lt;/code&gt; &amp;#x2013; this is where you get the number from.&lt;/p&gt;&lt;p&gt;Once you have it:&lt;/p&gt;&lt;pre class="real"&gt;for i in `seq 40`; do
  start=$((($i-1)*25+1))
  curl -o foo-$i.atom "http://www.blogger.com/feeds/XXX/posts/default?start-index=$start&amp;amp;amp;max-results=25"
done&lt;/pre&gt;&lt;p&gt;This should get you 40 files called &lt;code&gt;foo-1.atom&lt;/code&gt; to &lt;code&gt;foo.40.atom&lt;/code&gt; with 25 articles each in your current directory. Delete the ones that don&amp;#x2019;t contain any results or increase the number if you&amp;#x2019;re looking at a blog with more than 1000 posts that you&amp;#x2019;re interested in.&lt;/p&gt;&lt;p&gt;Next, how to extract the HTML links from these Atom feeds: save the following in a Perl script called &lt;code&gt;url.pl&lt;/code&gt;.&lt;/p&gt;&lt;pre class="real"&gt;#!/usr/bin/perl
use XML::LibXML;
undef $/;
$data = &amp;lt;STDIN&amp;gt;;
my $parser = XML::LibXML-&amp;gt;new();
my $doc = $parser-&amp;gt;parse_string($data);
die $@ if $@;
my $context = XML::LibXML::XPathContext-&amp;gt;new($doc);
$context-&amp;gt;registerNs('atom', 'http://www.w3.org/2005/Atom');
foreach ($context-&amp;gt;findnodes('//atom:entry'
			     . '/atom:link[@rel="alternate"][@type="text/html"]'
			     . '/attribute::href')) {
  print $_-&amp;gt;to_literal() . "\n";
}&lt;/pre&gt;&lt;p&gt;Now you can extract all the URLs and fetch them:&lt;/p&gt;&lt;pre class="real"&gt;for f in *.atom; do
    for url in `perl url.pl &amp;lt; $f`; do
        curl -O "$url";
    done;
done&lt;/pre&gt;&lt;p&gt;The use of the &lt;code&gt;-O&lt;/code&gt; option assumes that the file names given by the URL will be unique &amp;#x2013; this is not necessarily true as  &lt;code&gt;http://localhost/2010/05/test.html&lt;/code&gt; and &lt;code&gt;http://localhost/2010/06/test.html&lt;/code&gt; will result in one overwriting the other.&lt;/p&gt;&lt;p&gt;You should end up with a ton of HTML files in your current directory.&lt;/p&gt;&lt;p&gt;This doesn&amp;#x2019;t get any required extra files like CSS or images, but it might be good enough for a &lt;b&gt;blog backup&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;For a &lt;b&gt;Wordpress&lt;/b&gt; blog, we try to do the same thing. First, get the atom pages:&lt;/p&gt;&lt;pre class="real"&gt;for i in `seq 100`; do
  curl -o foo-$i.atom "http://foo.wordpress.com/feed/atom/?paged=$i"
done&lt;/pre&gt;&lt;p&gt;This should get you 100 files called &lt;code&gt;foo-1.atom&lt;/code&gt; to &lt;code&gt;foo.100.atom&lt;/code&gt; in your current directory. Delete the ones that don&amp;#x2019;t contain any results or increase the number if you&amp;#x2019;re looking at a blog with more posts.&lt;/p&gt;&lt;p&gt;Now, unless the author has disabled it somehow, the atom feeds already include the complete articles. It&amp;#x2019;s certainly possible to fetch them all again, but it&amp;#x2019;s not necessary. Save the following in a Perl script called &lt;code&gt;extract.pl&lt;/code&gt;.&lt;/p&gt;&lt;pre class="real"&gt;#!/usr/bin/perl
use strict;
use XML::LibXML;
undef $/;
my $data = &amp;lt;STDIN&amp;gt;;
my $parser = XML::LibXML-&amp;gt;new();
my $doc = $parser-&amp;gt;parse_string($data);
die $@ if $@;
my $encoding = $doc-&amp;gt;actualEncoding();
my $context = XML::LibXML::XPathContext-&amp;gt;new($doc);
$context-&amp;gt;registerNs('atom', 'http://www.w3.org/2005/Atom');
foreach my $entry ($context-&amp;gt;findnodes('//atom:entry')) {
  my $title = $entry-&amp;gt;getChildrenByTagName('title')-&amp;gt;[0]-&amp;gt;to_literal;
  $title =~ s!/!_!gi;
  $title =~ s!&amp;amp;amp;!&amp;amp;!gi;
  $title =~ s!&amp;amp;#(\d+);!chr($1)!ge;
  my $content = $entry-&amp;gt;getChildrenByTagName('content')-&amp;gt;[0]-&amp;gt;to_literal;
  open(F, "&amp;gt;" . $title . ".html") or die $! . ' ' . $title;
  print F &amp;lt;&amp;lt;EOT;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta content='text/html; charset=$encoding' http-equiv='Content-Type'/&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
$content
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOT
  close F;
}&lt;/pre&gt;&lt;p&gt;Run it on the Atom files:&lt;/p&gt;&lt;pre class="real"&gt;for f in *.atom; do
    perl extract.pl &amp;lt; $f
done&lt;/pre&gt;&lt;p&gt;You should end up with a ton of HTML files in your current directory.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Blogs"&gt;Blogs&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Blogs"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Atom"&gt;Atom&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Atom"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Tue, 01 Jun 2010 01:50:49 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2010-05-31_Blognapping</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>4</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2010-05-31_Blognapping</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2010-05-31_Blognapping</wiki:diff>
<category>Blogs</category>
<category>Atom</category>
</item>

<item>
<title>How Many Authors Can A Blog Have</title>
<link>http://alexschroeder.ch/wiki/2010-04-28_How_Many_Authors_Can_A_Blog_Have</link>
<guid>http://alexschroeder.ch/wiki/2010-04-28_How_Many_Authors_Can_A_Blog_Have</guid>
<description>&lt;p&gt;No, really. This one goes out to &lt;a class="url http outside" href="http://www.stargazersworld.com/"&gt;Stargazer&lt;/a&gt; who argued this point with me on the #rpmn channel (irc.sorcery.net server).&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If one person has a website where new pages are added in a chronological context, it&amp;#x2019;s a blog.&lt;/li&gt;&lt;li&gt;If two or more do it, it&amp;#x2019;s a multi-user or group blog.&lt;/li&gt;&lt;li&gt;If a site aggregates many blogs, it looks like a multi-user blog but they no longer call it a blog. Why?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;That leads me to the question: Is &lt;a class="near" title="Names" href="http://rpgbloggers.blogspot.com/"&gt;RPG Bloggers&lt;/a&gt; or the &lt;a class="near" title="Names" href="http://campaignwiki.org/planet"&gt;Old School RPG Planet&lt;/a&gt; a blog or a blog aggregator?&lt;/p&gt;&lt;p&gt;What do you think?&lt;/p&gt;&lt;p&gt;As for myself, I think the only thing that&amp;#x2019;s obvious is that one person can write a blog. The difference between multi-user blogs and aggregators is just a question of implementation details.&lt;/p&gt;&lt;p&gt;Usually, multi-user blogs and aggregators offer subsets of their pages grouped by author. Those are, if I take my own definition, real blogs.&lt;/p&gt;&lt;p&gt;In other words, if a multi-user blog allows me to see the contributions of a single author, then that page is a blog of said author. And if there&amp;#x2019;s a contest for &amp;#x201c;best blog&amp;#x201d;, then only that subset should be allowed to enter. Or each author gets to enter on an individual basis.&lt;/p&gt;&lt;p&gt;I guess one could argue that editors make all the difference. But really, how much traditional editing happens on a group blog like &lt;a class="url http outside" href="http://www.boingboing.net/"&gt;Boing Boing&lt;/a&gt;? Author write as they please. The really important decision for this group blog was the mix of authors to feature.&lt;/p&gt;&lt;p&gt;The same is true for an aggregator. The really important decision is the mix of blogs to aggregate.&lt;/p&gt;&lt;p&gt;One could say &amp;#x201c;original content&amp;#x201d; is the difference between an aggregator and a blog. Does Boing Boing have original content? I could look at it as an aggregation of &lt;a class="url http outside" href="http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=view&amp;amp;blog_id=1&amp;amp;id=2"&gt;Xeni Jardin's posts and comments&lt;/a&gt;, &lt;a class="url http outside" href="http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=view&amp;amp;blog_id=1&amp;amp;id=1"&gt;Cory Doctorow's posts and comments&lt;/a&gt;, etc.&lt;/p&gt;&lt;p&gt;Perhaps I need to consider that a blog usually corresponds to a website. All the Boing Boing authors are writing their posts on the same Boing Boing site, right? But how do I know? Perhaps they might just as well be writing their posts in another system (private or public) that gets aggregated.&lt;/p&gt;&lt;p&gt;I guess I&amp;#x2019;m just refusing the definition of &amp;#x201c;site&amp;#x201d; based on all the relevant pages (front page, article pages, comments, user profiles, user interface for authors) residing on the same machine. What about cloud computing? I don&amp;#x2019;t think that the details of the Internet&amp;#x2019;s architecture should define the difference between a group blog and an aggregator.&lt;/p&gt;&lt;p&gt;In fact, I think there&amp;#x2019;s no property to distinguish a group blog from an aggregator that doesn use words like &amp;#x201c;hostname&amp;#x201d; or &amp;#x201c;software&amp;#x201d;. Maybe that&amp;#x2019;s the reason why my brain just locks down. I think the line between group blogs and aggregators is blurred enough to be useless.&lt;/p&gt;&lt;p&gt;Only a blog written by a single author is a well defined blog. &lt;img class="smiley" src="http://www.emacswiki.org/pics/blink.png" alt=";)" /&gt;&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Blogs"&gt;Blogs&lt;/a&gt; &lt;a class="feed tag" title="Feed für diesen Tag" rel="feed" href="http://www.emacswiki.org/alex?action=journal;full=1;search=tag:Blogs"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed für diesen Tag" rel="feed" href="http://www.emacswiki.org/alex?action=journal;full=1;search=tag:RPG"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 28 Apr 2010 14:18:02 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2010-04-28_How_Many_Authors_Can_A_Blog_Have</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2010-04-28_How_Many_Authors_Can_A_Blog_Have</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2010-04-28_How_Many_Authors_Can_A_Blog_Have</wiki:diff>
<category>Blogs</category>
<category>RPG</category>
</item>
</channel>
</rss>
