<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- OPML generated by OPML Editor v11.0.6 on Wed, 22 Feb 2012 15:11:21 GMT -->
<opml version="2.0">
	<head>
		<title>New twist, FreshAir podcast</title>
		<dateCreated>Wed, 22 Feb 2012 15:03:38 GMT</dateCreated>
		<dateModified>Wed, 22 Feb 2012 15:11:21 GMT</dateModified>
		<ownerName>Dave Winer</ownerName>
		<ownerEmail>dave.winer@gmail.com</ownerEmail>
		<expansionState>1, 7, 11</expansionState>
		<vertScrollState>1</vertScrollState>
		<windowTop>127</windowTop>
		<windowLeft>874</windowLeft>
		<windowBottom>1118</windowBottom>
		<windowRight>1817</windowRight>
		</head>
	<body>
		<outline created="Wed, 22 Feb 2012 15:03:38 GMT" ctSaves="11" flPreview="false" id="2012.02.22.1678" server="xmlrpc://cms.scripting2.com:5337/RPC2" storySerialNum="1678" text="New twist, FreshAir podcast" type="scripting2Post" url="http://scripting.com/stories/2012/02/22/newTwistFreshairPodcast.html" username="davewiner" versionClient="0.44" versionServer="0.44" whenLastSave="Wed, 22 Feb 2012 15:11:22 GMT">
			<outline created="Wed, 22 Feb 2012 14:56:18 GMT" pgfnum="12879" text="A few weeks ago I noticed that my &lt;a href=&quot;http://daveriver.scripting.com/&quot;&gt;river&lt;/a&gt; was filled with &lt;a href=&quot;http://www.npr.org/rss/podcast.php?id=13&quot;&gt;FreshAir&lt;/a&gt; podcasts. Hundreds of them, dating back to 2007. One for every weekday for five years. "></outline>
			<outline created="Wed, 22 Feb 2012 14:57:00 GMT" pgfnum="12880" text="I figured something glitchy happened, and shrugged it off. Sometimes people adjust their content management system, and the feed guids all change, so the aggregator thinks they're all new. It's a bit more expensive in the case of podcasts because it downloads them all, and it wipes out all the other MP3s in my Podcatcher folder, because it's managed by the software to only use a fixed amount of storage. So every time a new podcast is downloaded, the oldest one is removed."></outline>
			<outline created="Wed, 22 Feb 2012 14:58:27 GMT" pgfnum="12881" text="But then it happened again. And again. So I had to do something about it."></outline>
			<outline created="Wed, 22 Feb 2012 14:58:40 GMT" pgfnum="12882" text="I was busy with another project so I did the simplest quickest thing, I unsubbed. But this meant I had to go to the FreshAir site to &lt;a href=&quot;http://www.npr.org/programs/fresh-air/&quot;&gt;manually see&lt;/a&gt; what's new, because I like to listen to FreshAir on my daily walk. Not always, but often."></outline>
			<outline created="Wed, 22 Feb 2012 14:59:23 GMT" pgfnum="12883" text="This morning I didn't feel like tackling my next big project, so I did something &quot;lite&quot; -- I made a change to the way &lt;a href=&quot;http://quick.newsriver.org/&quot;&gt;River2&lt;/a&gt; works to allow for this quirk in the FreshAir podcast."></outline>
			<outline created="Wed, 22 Feb 2012 15:00:07 GMT" pgfnum="12884" text="Here's how it works. ">
				<outline created="Wed, 22 Feb 2012 15:00:14 GMT" pgfnum="12885" text="1. Every feed has a new stat, mostRecentPubDate, initialized to 1/1/2011."></outline>
				<outline created="Wed, 22 Feb 2012 15:00:35 GMT" pgfnum="12886" text="2. When a new item appears in the feed, and it has a pubDate, if it's less than one day before mostRecentPubDate, I call it new, and it appears in the river, and if it has an enclosure it's added to the download queue. Otherwise it's treated as if it's already been seen. "></outline>
				</outline>
			<outline created="Wed, 22 Feb 2012 15:02:34 GMT" pgfnum="12887" text="This keeps the flow marching forward in time, not backward -- but allows items to appear out of order in the feed, and for items to be published a bit after the feed's pubDate for that item."></outline>
			<outline created="Wed, 22 Feb 2012 15:02:41 GMT" pgfnum="12888" text="Now I'm going to see if:">
				<outline created="Wed, 22 Feb 2012 15:02:48 GMT" pgfnum="12889" text="1. My river is broken. (Appears not, so far so good.)"></outline>
				<outline created="Wed, 22 Feb 2012 15:02:57 GMT" pgfnum="12890" text="2. I get new FreshAir podcasts, without having them repeat."></outline>
				</outline>
			<outline created="Wed, 22 Feb 2012 15:03:22 GMT" pgfnum="12892" text="Here's the &lt;a href=&quot;http://worknotes.scripting.com/february2012/22212ByDw/problemsWithFreshairPodcast&quot;&gt;worknote&lt;/a&gt; for this item."></outline>
			<htmlCache>&lt;script>	function ec (id, showClassName, urlExpand, urlCollapse) {		var imgId = 'img_'+ id;		if (document.getElementById (id).className == 'hide') {			document.getElementById (id).className = showClassName;			document.getElementById (imgId).src = urlCollapse;					}		else {			document.getElementById (id).className = 'hide';			document.getElementById(imgId).src = urlExpand;			}		}	&lt;/script> 
&lt;style>	.divOutlineBody {		padding: 0;		margin-left: -16px;		}	.divOutlineList {		margin-left: 0;		padding-left: 0;		text-indent: 0;		}	.divOutlineItem {		margin-left: 16px;		}	.spanOutlineText { 		cursor: pointer;		float: none;		margin-left: 0;		color: black;		}	.show {		display: block;		}	.hide {		display: none;		}	img.expandIcon {		position: relative;		left: -16px;		margin-right: -16px;		padding: 0;		border: 0;		height: 16px;		width: 16px;		}	&lt;/style>
&lt;div class="divOutlineBody">
	&lt;div class="divOutlineList" style="padding-left: 0;">
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">A few weeks ago I noticed that my &lt;a href="http://daveriver.scripting.com/">river&lt;/a> was filled with &lt;a href="http://www.npr.org/rss/podcast.php?id=13">FreshAir&lt;/a> podcasts. Hundreds of them, dating back to 2007. One for every weekday for five years. &lt;/span>&lt;a name="aFewWeeksAgoINoticedThatMyAHrefhttpdaveriverscriptingcomriveraWasFilledWithAHrefhttpwwwnprorgrsspodcastphpid13freshairaPodcastsHundredsOfThemDatingBackTo2007OneForEveryWeekdayForFiveYears">&amp;nbsp;&lt;/a>&lt;a href="#aFewWeeksAgoINoticedThatMyAHrefhttpdaveriverscriptingcomriveraWasFilledWithAHrefhttpwwwnprorgrsspodcastphpid13freshairaPodcastsHundredsOfThemDatingBackTo2007OneForEveryWeekdayForFiveYears">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">I figured something glitchy happened, and shrugged it off. Sometimes people adjust their content management system, and the feed guids all change, so the aggregator thinks they're all new. It's a bit more expensive in the case of podcasts because it downloads them all, and it wipes out all the other MP3s in my Podcatcher folder, because it's managed by the software to only use a fixed amount of storage. So every time a new podcast is downloaded, the oldest one is removed.&lt;/span>&lt;a name="iFiguredSomethingGlitchyHappenedAndShruggedItOffSometimesPeopleAdjustTheirContentManagementSystemAndTheFeedGuidsAllChangeSoTheAggregatorThinksTheyreAllNewItsABitMoreExpensiveInTheCaseOfPodcastsBecauseItDownloadsThemAllAndItWipesOutAllTheOtherMp3sInMyPodcatcherFolderBecauseItsManagedByTheSoftwareToOnlyUseAFixedAmountOfStorageSoEveryTimeANewPodcastIsDownloadedTheOldestOneIsRemoved">&amp;nbsp;&lt;/a>&lt;a href="#iFiguredSomethingGlitchyHappenedAndShruggedItOffSometimesPeopleAdjustTheirContentManagementSystemAndTheFeedGuidsAllChangeSoTheAggregatorThinksTheyreAllNewItsABitMoreExpensiveInTheCaseOfPodcastsBecauseItDownloadsThemAllAndItWipesOutAllTheOtherMp3sInMyPodcatcherFolderBecauseItsManagedByTheSoftwareToOnlyUseAFixedAmountOfStorageSoEveryTimeANewPodcastIsDownloadedTheOldestOneIsRemoved">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">But then it happened again. And again. So I had to do something about it.&lt;/span>&lt;a name="butThenItHappenedAgainAndAgainSoIHadToDoSomethingAboutIt">&amp;nbsp;&lt;/a>&lt;a href="#butThenItHappenedAgainAndAgainSoIHadToDoSomethingAboutIt">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">I was busy with another project so I did the simplest quickest thing, I unsubbed. But this meant I had to go to the FreshAir site to &lt;a href="http://www.npr.org/programs/fresh-air/">manually see&lt;/a> what's new, because I like to listen to FreshAir on my daily walk. Not always, but often.&lt;/span>&lt;a name="iWasBusyWithAnotherProjectSoIDidTheSimplestQuickestThingIUnsubbedButThisMeantIHadToGoToTheFreshairSiteToAHrefhttpwwwnprorgprogramsfreshairmanuallySeeaWhatsNewBecauseILikeToListenToFreshairOnMyDailyWalkNotAlwaysButOften">&amp;nbsp;&lt;/a>&lt;a href="#iWasBusyWithAnotherProjectSoIDidTheSimplestQuickestThingIUnsubbedButThisMeantIHadToGoToTheFreshairSiteToAHrefhttpwwwnprorgprogramsfreshairmanuallySeeaWhatsNewBecauseILikeToListenToFreshairOnMyDailyWalkNotAlwaysButOften">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">This morning I didn't feel like tackling my next big project, so I did something "lite" -- I made a change to the way &lt;a href="http://quick.newsriver.org/">River2&lt;/a> works to allow for this quirk in the FreshAir podcast.&lt;/span>&lt;a name="thisMorningIDidntFeelLikeTacklingMyNextBigProjectSoIDidSomethingLiteIMadeAChangeToTheWayAHrefhttpquicknewsriverorgriver2aWorksToAllowForThisQuirkInTheFreshairPodcast">&amp;nbsp;&lt;/a>&lt;a href="#thisMorningIDidntFeelLikeTacklingMyNextBigProjectSoIDidSomethingLiteIMadeAChangeToTheWayAHrefhttpquicknewsriverorgriver2aWorksToAllowForThisQuirkInTheFreshairPodcast">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;a href="javascript:ec('hereSHowItWorks7670','show','http://scripting.com/images/2011/11/29/blank.gif','http://scripting.com/images/2011/11/29/blank.gif');">&lt;img class="expandIcon" id="img_hereSHowItWorks7670" src="http://scripting.com/images/2011/11/29/blank.gif" border="0">&lt;/a>&lt;a onclick="javascript:ec('hereSHowItWorks7670','show','http://scripting.com/images/2011/11/29/blank.gif','http://scripting.com/images/2011/11/29/blank.gif');">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">Here's how it works. &lt;/span>&lt;/a>&lt;a name="heresHowItWorks">&amp;nbsp;&lt;/a>&lt;a href="#heresHowItWorks">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="show" id="hereSHowItWorks7670" name="hereSHowItWorks7670">
			&lt;div class="divOutlineList" style="padding-left: 30px;">
				&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">1. Every feed has a new stat, mostRecentPubDate, initialized to 1/1/2011.&lt;/span>&lt;a name="1EveryFeedHasANewStatMostrecentpubdateInitializedTo112011">&amp;nbsp;&lt;/a>&lt;a href="#1EveryFeedHasANewStatMostrecentpubdateInitializedTo112011">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
				&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">2. When a new item appears in the feed, and it has a pubDate, if it's less than one day before mostRecentPubDate, I call it new, and it appears in the river, and if it has an enclosure it's added to the download queue. Otherwise it's treated as if it's already been seen. &lt;/span>&lt;a name="2WhenANewItemAppearsInTheFeedAndItHasAPubdateIfItsLessThanOneDayBeforeMostrecentpubdateICallItNewAndItAppearsInTheRiverAndIfItHasAnEnclosureItsAddedToTheDownloadQueueOtherwiseItsTreatedAsIfItsAlreadyBeenSeen">&amp;nbsp;&lt;/a>&lt;a href="#2WhenANewItemAppearsInTheFeedAndItHasAPubdateIfItsLessThanOneDayBeforeMostrecentpubdateICallItNewAndItAppearsInTheRiverAndIfItHasAnEnclosureItsAddedToTheDownloadQueueOtherwiseItsTreatedAsIfItsAlreadyBeenSeen">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
				&lt;/div>
			&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">This keeps the flow marching forward in time, not backward -- but allows items to appear out of order in the feed, and for items to be published a bit after the feed's pubDate for that item.&lt;/span>&lt;a name="thisKeepsTheFlowMarchingForwardInTimeNotBackwardButAllowsItemsToAppearOutOfOrderInTheFeedAndForItemsToBePublishedABitAfterTheFeedsPubdateForThatItem">&amp;nbsp;&lt;/a>&lt;a href="#thisKeepsTheFlowMarchingForwardInTimeNotBackwardButAllowsItemsToAppearOutOfOrderInTheFeedAndForItemsToBePublishedABitAfterTheFeedsPubdateForThatItem">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;a href="javascript:ec('nowIMGoingToSeeIf18962','show','http://scripting.com/images/2011/11/29/blank.gif','http://scripting.com/images/2011/11/29/blank.gif');">&lt;img class="expandIcon" id="img_nowIMGoingToSeeIf18962" src="http://scripting.com/images/2011/11/29/blank.gif" border="0">&lt;/a>&lt;a onclick="javascript:ec('nowIMGoingToSeeIf18962','show','http://scripting.com/images/2011/11/29/blank.gif','http://scripting.com/images/2011/11/29/blank.gif');">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">Now I'm going to see if:&lt;/span>&lt;/a>&lt;a name="nowImGoingToSeeIf">&amp;nbsp;&lt;/a>&lt;a href="#nowImGoingToSeeIf">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;div class="show" id="nowIMGoingToSeeIf18962" name="nowIMGoingToSeeIf18962">
			&lt;div class="divOutlineList" style="padding-left: 30px;">
				&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">1. My river is broken. (Appears not, so far so good.)&lt;/span>&lt;a name="1MyRiverIsBrokenAppearsNotSoFarSoGood">&amp;nbsp;&lt;/a>&lt;a href="#1MyRiverIsBrokenAppearsNotSoFarSoGood">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
				&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">2. I get new FreshAir podcasts, without having them repeat.&lt;/span>&lt;a name="2IGetNewFreshairPodcastsWithoutHavingThemRepeat">&amp;nbsp;&lt;/a>&lt;a href="#2IGetNewFreshairPodcastsWithoutHavingThemRepeat">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
				&lt;/div>
			&lt;/div>
		&lt;div class="divOutlineItem" style="padding-bottom: 10px;">&lt;span class="spanOutlineText" style="font-family: Georgia; font-size: 18px; line-height: 140%;">Here's the &lt;a href="http://worknotes.scripting.com/february2012/22212ByDw/problemsWithFreshairPodcast">worknote&lt;/a> for this item.&lt;/span>&lt;a name="heresTheAHrefhttpworknotesscriptingcomfebruary201222212bydwproblemswithfreshairpodcastworknoteaForThisItem">&amp;nbsp;&lt;/a>&lt;a href="#heresTheAHrefhttpworknotesscriptingcomfebruary201222212bydwproblemswithfreshairpodcastworknoteaForThisItem">&lt;img src="http://scripting.com/images/2001/09/20/sharpPermaLink3.gif" class="imgBlogpostPermalink" width="6" height="9" border="0" alt="permalink">&lt;/a>&lt;/div>
		&lt;/div>
	&lt;/div>
</htmlCache>
			</outline>
		</body>
	</opml>
