<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Less Talk, More Do</title>
	<atom:link href="http://www.chrisfinke.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chrisfinke.com</link>
	<description>Christopher Finke writes about things he has done.</description>
	<lastBuildDate>Wed, 15 May 2013 21:02:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6-beta2</generator>
		<item>
		<title>Major RSS Ticker Update Coming: What You Need to Know</title>
		<link>http://www.chrisfinke.com/2013/05/06/rss-ticker-13-update/</link>
		<comments>http://www.chrisfinke.com/2013/05/06/rss-ticker-13-update/#comments</comments>
		<pubDate>Mon, 06 May 2013 14:00:50 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Browser Add-ons]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Mozilla Firefox]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[RSS Ticker]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=11907</guid>
		<description><![CDATA[RSS Ticker has been an alternative to Web-based feed readers since 2006, displaying feed updates directly in users' browsers. It hasn't seen significant change in a while, but some of the internal Firefox code used by RSS Ticker has changed enough that in order for it to remain functional in Firefox 22, its entire architecture [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvRW4tdXMvZmlyZWZveC9hZGRvbi9yc3MtdGlja2VyLw==">RSS Ticker</a> has been an alternative to Web-based feed readers since 2006, displaying feed updates directly in users' browsers. It hasn't seen significant change in a while, but some of the internal Firefox code used by RSS Ticker has changed enough that in order for it to remain functional in Firefox 22, its entire architecture would have to change. That's a lot of work.</p>
<p><img scale="2" src="http://i2.wp.com/www.chrisfinke.com/files/2013/05/rss-ticker1.png?resize=600%2C88" alt="RSS Ticker" class="alignnone wp-image-11923" data-recalc-dims="1" /></p>
<p>I didn't want to abandon RSS Ticker's users (especially with the <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5lbmdhZGdldC5jb20vMjAxMy8wMy8xMy9nb29nbGUtcmVhZGVyLXNodXQtZG93bi1zcHJpbmctY2xlYW5pbmcv">shutdown of Google Reader</a> imminent, already leaving one less feed reading option), but I also couldn't dedicate the time to completely rewrite the add-on and keep all of its features. So here's what I've done:</p>
<p><b>RSS Ticker has been completely rewritten.</b> This has given me the opportunity to use the knowledge I've gained in the last seven years of programming to improve the overall design of the ticker and to restructure the code to play nicely with the new Firefox APIs.</p>
<p><b>What hasn't changed?</b> RSS Ticker will still scroll your feeds in your browser. You can still choose to put it at the top or bottom of your Firefox window. You can still exclude specific feeds. You can mark as read, mark feeds as read, open in tabs, open all in tabs, etc. You can temporarily disable the ticker. You can change the ticker speed, smoothness, and direction. You can hide the ticker automatically when it's empty.</p>
<p><b>What has changed?</b> In order to continue supporting RSS Ticker, I've had to drop a number of features. Here are some things you can no longer do with RSS Ticker:</p>
<ul>
<li>Manually refresh the feeds.</li>
<li>Specify how often the feeds should refresh.</li>
<li>Randomize the order of the ticker items</li>
<li>Limit the number of items per feed</li>
<li>Display items that have already been read</li>
<li>Show unread items in bold</li>
<li>Manually limit the width of ticker items</li>
<li>Customize the context menu</li>
</ul>
<p>I know some of you liked and used these features. I'm sorry I had to remove them, but it was the choice between removing them or abandoning the add-on altogether.</p>
<p>A few features haven't been removed, but they have been changed (a.k.a. "improved"):</p>
<p>1. All of the remaining options (six of them, down from a total of 37) are displayed inline in RSS Ticker's section of the Add-ons Manager.</p>
<p><img scale="2" class="alignnone wp-image-11909" alt="RSS Ticker Options" src="http://i1.wp.com/www.chrisfinke.com/files/2013/05/Screen-Shot-2013-05-03-at-10.54.39-PM.png?resize=582%2C280" data-recalc-dims="1" /></p>
<p>2. If you want to temporarily disable the ticker, just uncheck it in the <em>View &gt; Toolbars</em> menu.</p>
<p><img scale="2" src="http://i2.wp.com/www.chrisfinke.com/files/2013/05/rss-ticker-disable.png?resize=440%2C233" alt="Disable RSS Ticker" class="alignnone wp-image-11913" data-recalc-dims="1" /></p>
<p>3. To remove a feed from the ticker (but not from your bookmarks), right-click on it in the Bookmarks Manager and uncheck "Show in RSS Ticker."</p>
<p><img scale="2" src="http://i1.wp.com/www.chrisfinke.com/files/2013/05/show-in-rss-ticker.png?resize=600%2C340" alt="Show a feed in RSS Ticker" class="alignnone wp-image-11931" data-recalc-dims="1" /></p>
<p>This new version will be available in a couple of weeks after some more testing, but if you'd like to test it early, leave your e-mail address in a comment or ping me at <a href="mailto:cfinke@gmail.com">cfinke@gmail.com</a> and I'll send you a copy.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=11907" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/05/06/rss-ticker-13-update/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>OPML Support updated for Firefox 20</title>
		<link>http://www.chrisfinke.com/2013/04/25/opml-support-updated-for-firefox-20/</link>
		<comments>http://www.chrisfinke.com/2013/04/25/opml-support-updated-for-firefox-20/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 14:00:34 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Browser Add-ons]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Mozilla Firefox]]></category>
		<category><![CDATA[OPML Support]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=11896</guid>
		<description><![CDATA[I've just published an update to my OPML Support Firefox extension for the first time in three years. The extension previously added an OPML button to the toolbar in the Bookmarks Manager, but as of Firefox 20, the button disappears because of a change to the way that the Bookmarks Manager's toolbar is assembled. Version [...]]]></description>
				<content:encoded><![CDATA[<p>I've just published an update to my <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi9vcG1sLXN1cHBvcnQv">OPML Support Firefox extension</a> for the first time in three years. The extension previously added an OPML button to the toolbar in the Bookmarks Manager, but as of Firefox 20, the button disappears because of a change to the way that the Bookmarks Manager's toolbar is assembled.  Version 3 of OPML Support moves the <em>Import OPML</em> and <em>Export OPML</em> options into the existing Backup/Import button's menu.</p>
<p><img src="http://i2.wp.com/www.chrisfinke.com/files/2007/01/opml-menu-mac.png?resize=500%2C220" alt="opml-menu-mac" class="alignnone" data-recalc-dims="1" /></p>
<p>Thanks to the OPML Support users who alerted me to the problem via email and <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9hZGRvbnMvb3BtbC1zdXBwb3J0Lw==">in the comments here</a>, since I don't often have occasion to check whether my buttons are disappearing.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=11896" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/04/25/opml-support-updated-for-firefox-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Plight of the Self-Taught Programmer</title>
		<link>http://www.chrisfinke.com/2013/04/18/the-plight-of-the-self-taught-programmer/</link>
		<comments>http://www.chrisfinke.com/2013/04/18/the-plight-of-the-self-taught-programmer/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 17:09:00 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Automattic]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=11821</guid>
		<description><![CDATA[At each company-wide Automattic meetup, every employee is required to give a flash talk on a topic of his or her choosing. At our meetup last September, I gave a short overview of some of the programming terms I don't pronounce correctly in my head, since I initially learned them on my own and took [...]]]></description>
				<content:encoded><![CDATA[<p>At each company-wide <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5hdXRvbWF0dGljLmNvbS8=">Automattic</a> meetup, every employee is required to give a flash talk on a topic of his or her choosing.  At our meetup last September, I gave a short overview of some of the programming terms I don't pronounce correctly in my head, since I initially learned them on my own and took a guess at their pronunciation. Here are the slides from that fateful day.</p>
<p><img class="alignnone size-full wp-image-11823" alt="The Plight of the Self-Taught Programmer: Chris Finke" src="http://i1.wp.com/www.chrisfinke.com/files/2013/04/img0.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p><img class="alignnone size-full wp-image-11824" alt="a.k.a. Is it pronounced GIF or GIF?" src="http://i2.wp.com/www.chrisfinke.com/files/2013/04/img1.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p><img class="alignnone size-full wp-image-11825" alt="GIF: A picture of a JIF peanut butter jar." src="http://i2.wp.com/www.chrisfinke.com/files/2013/04/img2.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>I say "GIF", but apparently lots of other people pronounce it "GIF".</p>
<p><img alt="animated-jif" src="http://i1.wp.com/www.chrisfinke.com/files/2013/04/animated-jif.gif?resize=500%2C500" alt="A jar of JIF peanut butter dancing from side to side: an animated JIF." data-recalc-dims="1" /></p>
<p>Get it?</p>
<p><img class="alignnone size-full wp-image-11826" alt="SQL: My Sequel 2. This time, it's personal." src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img3.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>I learned it as Ess-Cue-Ell and was very confused the first time someone asked me if I had worked with my sequel.  "My sequel to what?"</p>
<p><img class="alignnone size-full wp-image-11827" alt="/etc or Etsy?" src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img4.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>Still not sure about this one.  Thankfully, I never have to say it out loud.</p>
<p><img class="alignnone size-full wp-image-11828" alt="C#: C Sharp or C Pound?" src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img5.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>I remember reading a newsgroup post where someone was ridiculed for calling it "C Pound." That someone was not me, but it could have been.</p>
<p><img class="alignnone size-full wp-image-11829" alt="GUI: A hand covered in something gooey." src="http://i2.wp.com/www.chrisfinke.com/files/2013/04/img6.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>Gee-You-Eye is not as fun as the correct gooey pronunciation.</p>
<p><img class="alignnone size-full wp-image-11830" alt="Apple's Operating System: Mackossex." src="http://i1.wp.com/www.chrisfinke.com/files/2013/04/img7.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>My college roommate was a diehard Apple fan and especially loved their operating system, "Mackossex" (Mac OS X).</p>
<p><img class="alignnone size-full wp-image-11831" alt="XPI: Zippy." src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img8.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>Firefox extensions use a file format called XPI, pronounced "zippy", not "ex-pee-eye."</p>
<p><img class="alignnone size-full wp-image-11832" alt="LaTeX is not the same as latex." src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img9.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>For years, I thought that LaTeX was spoken the same as latex until I heard a professor mention that he had used "layteck" to typeset his papers. In my senior year of college. Dodged a bullet there.</p>
<p><img class="alignnone size-full wp-image-11833" alt="Egill: Not a chance." src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img10.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>I have a coworker from Iceland named <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly90d2l0dGVyLmNvbS9lMThu">Egill</a>.  It's not "Ee-gill", "egg-ill", or "Ay-gill". It doesn't even have an L-sound if you <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5mb3J2by5jb20vd29yZC9lZ2lsbC8=">say it properly</a>, and I've been informed that because I'm not from Iceland, I probably can't physically pronounce it.</p>
<p><img class="alignnone size-full wp-image-11834" alt="Finke = Fing-key. Rhymes with inky. And slinky." src="http://i0.wp.com/www.chrisfinke.com/files/2013/04/img11.png?resize=512%2C384" data-recalc-dims="1" /></p>
<p>As a public service, here's a pronunciation guide to my name.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=11821" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/04/18/the-plight-of-the-self-taught-programmer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>In which I forge a simile</title>
		<link>http://www.chrisfinke.com/2013/03/19/2993/</link>
		<comments>http://www.chrisfinke.com/2013/03/19/2993/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 04:33:57 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=2993</guid>
		<description><![CDATA[I was talking with my wife tonight about the shutdown of Google Reader; she uses it heavily and relies on a number of features that aren't all found in the alternatives. She was worried that on July 1st, she'll be forced to settle for something that doesn't meet all of her needs. My reply? "The [...]]]></description>
				<content:encoded><![CDATA[<p>I was talking with my wife tonight about <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy50aGV2ZXJnZS5jb20vMjAxMy8zLzEzLzQxMDExNDQvZ29vZ2xlLXNodXRzLWRvd24tcmVhZGVyLXJzcy1hZ2dyZWdhdGlvbi1zZXJ2aWNl">the shutdown of Google Reader</a>; she uses it heavily and relies on a number of features that aren't all found in the alternatives.  She was worried that on July 1st, she'll be forced to settle for something that doesn't meet all of her needs. My reply?  "The worst case scenario is that you'll have to tell me what you want, and I'll build it for you."</p>
<p>Being a programmer in the early twenty-first century is like being a blacksmith in the early twentieth century.  No matter what is available to the public at large, you have the advantage of being able to build your own tools.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=2993" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/03/19/2993/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A practical application of Typo.js</title>
		<link>http://www.chrisfinke.com/2013/03/05/a-practical-application-of-typo-js/</link>
		<comments>http://www.chrisfinke.com/2013/03/05/a-practical-application-of-typo-js/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 17:27:55 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Typo.js]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=2979</guid>
		<description><![CDATA[I released Typo.js about two years ago as a pure JavaScript implementation of the Hunspell spellchecker. I've been using it in Comment Snob for Chrome, but I haven't seen many other projects using it. (JavaScript spellchecking is a very narrow niche, to be fair.) A few days ago, however, I was made aware of a [...]]]></description>
				<content:encoded><![CDATA[<p>I released <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS8yMDExLzAzLzMxL2Fubm91bmNpbmctdHlwby1qcy1jbGllbnQtc2lkZS1qYXZhc2NyaXB0LXNwZWxsY2hlY2tpbmcv">Typo.js</a> about two years ago as a pure JavaScript implementation of the Hunspell spellchecker. I've been using it in <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvY29tbWVudC1zbm9iL2dmYm5tZWJjY21pcGVqbm5sY2FlbmtoZmhuaWFpZWxnP2hsPWVu">Comment Snob for Chrome</a>, but I haven't seen many other projects using it. (JavaScript spellchecking is a very narrow niche, to be fair.)</p>
<p>A few days ago, however, I was made aware of a new project using Typo.js: <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2hzazgxLmdpdGh1Yi5jb20vbm90ZXgv">NoTex</a>. It's a browser-based <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZVN0cnVjdHVyZWRUZXh0">reStructuredText</a> editor.</p>
<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9maWxlcy8yMDEzLzAzL25vdGV4MS5wbmc="><img src="http://i2.wp.com/www.chrisfinke.com/files/2013/03/notex1.png?resize=600%2C155" alt="NoTex screenshot" class="alignnone size-full wp-image-2984" data-recalc-dims="1" /></a></p>
<p>The author, <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3NpdGUuYmxhY2toYW4uY2gvaG9tZS8=">Hasan Karahan</a>, has used Typo.js to support 87 (!) different dictionaries. I'm happy to report that spellchecking in the app is smooth and indistinguishable from the native browser spellchecker.</p>
<p>You can follow NoTex's development on <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2dpdGh1Yi5jb20vaHNrODEvd2ViZWQ=">GitHub</a>.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=2979" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/03/05/a-practical-application-of-typo-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to Twenty Thirteen</title>
		<link>http://www.chrisfinke.com/2013/02/25/welcome-to-twenty-thirteen/</link>
		<comments>http://www.chrisfinke.com/2013/02/25/welcome-to-twenty-thirteen/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 16:19:16 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=2965</guid>
		<description><![CDATA[No, not the year, the theme! Twenty Thirteen will be the default theme in WordPress 3.6, but in order to help test it ahead of time, I've already enabled the trunk version of it here on my blog. I also took a few minutes to customize one of the default headers so as to give [...]]]></description>
				<content:encoded><![CDATA[<p>No, not the year, the theme! <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlLzIwMTMvMDIvMTgvaW50cm9kdWNpbmctdHdlbnR5LXRoaXJ0ZWVuLw==">Twenty Thirteen</a> will be the default theme in <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlLzIwMTIvMTIvMTkvd29yZHByZXNzLTMtNi1jeWNsZS8=">WordPress 3.6</a>, but in order to help test it ahead of time, I've already enabled the trunk version of it here on my blog. I also took a few minutes to customize one of the default headers so as to give it a little personal flair; see if you can spot the super-subtle changes I made!</p>
<p>For posterity, and for anyone reading this via a feed reader, here's how my site looks right now:</p>
<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9maWxlcy8yMDEzLzAyL3R3ZW50eS10aGlydGVlbi1zY3JlZW5zaG90LnBuZw=="><img src="http://i2.wp.com/www.chrisfinke.com/files/2013/02/twenty-thirteen-screenshot.png?resize=604%2C271" alt="My blog with Twenty Thirteen enabled and a customized version of the default header." class="size-large wp-image-2966" data-recalc-dims="1" /></a></p>
<p>It's a beautiful (and more importantly, <em>readable</em>) theme designed by <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL25vc2NvcGUuY29t">Joen Asmussen</a>. </p>
<p>If you want to follow Twenty Thirteen's development, subscribe to the <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL21ha2Uud29yZHByZXNzLm9yZy9jb3JlL3RhZy90d2VudHktdGhpcnRlZW4v">Twenty Thirteen tag on the <em>Make WordPress Core</em> blog</a>.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=2965" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/02/25/welcome-to-twenty-thirteen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to stream your ripped DVDs to TiVo with metadata and commentaries</title>
		<link>http://www.chrisfinke.com/2013/01/22/how-to-stream-your-ripped-dvds-to-tivo-with-metadata-and-commentaries/</link>
		<comments>http://www.chrisfinke.com/2013/01/22/how-to-stream-your-ripped-dvds-to-tivo-with-metadata-and-commentaries/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 16:00:01 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=2890</guid>
		<description><![CDATA[pyTivo is a tool that allows you to stream video files from your computer to your TiVo. It has served me well for watching home movies, but when I decided to rip my DVD collection and watch movies via TiVo instead of using the physical discs, I found two problems: No metadata. All I see [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3B5dGl2by5zb3VyY2Vmb3JnZS5uZXQv">pyTivo</a> is a tool that allows you to stream video files from your computer to your TiVo. It has served me well for watching home movies, but when I decided to rip my DVD collection and watch movies via TiVo instead of using the physical discs, I found two problems:</p>
<ol>
<li>No metadata. All I see on TiVo is the title (which is just the filename of the video). I'd like to see the year the movie came out, the MPAA rating, the description, etc. just like I do for movies I recorded off of TV.</li>
<li>No commentary tracks. The best part of owning a physical DVD is access to the commentary track(s); unfortunately, <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3B5dGl2by5zb3VyY2Vmb3JnZS5uZXQvZm9ydW0vcG9zc2libGUtdG8tc3dpdGNoLWF1ZGlvLXRyYWNrcy1mb3ItY29tbWVudGFyeS10MzEyLmh0bWw=">pyTivo isn't able</a> to stream the video in such a way that alternate audio can be selected via TiVo's built-in audio selection, so the default leaves you with just the first audio track.</li>
</ol>
<p>I've written two scripts to fix these problems, and <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9naXRodWIuY29tL2NmaW5rZS9weVRpVm8tVXRpbGl0aWVz">they're available at GitHub</a>.</p>
<h2>pytivo_metadata.py</h2>
<p>pyTivo uses metadata files to supply information to the TiVo about each video file, like the description or the year the movie came out. <code>pytivo_metadata.py</code> generates metadata files for all videos in a given directory (and subdirectories) so you don't have to write them yourself.</p>
<p>Here's an example of a filename from a ripped DVD:</p>
<p><code>/path/to/movies/The Family Man.m4v</code></p>
<p>This is the movie "The Family Man," starring Nicolas Cage. Without any metadata, this is what the movie looks like on TiVo:</p>
<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9maWxlcy8yMDEzLzAxL0lNR182NzE3LmpwZw=="><img class="alignnone size-large wp-image-2915" alt="IMG_6717" src="http://i0.wp.com/www.chrisfinke.com/files/2013/01/IMG_6717.jpg?resize=604%2C335" data-recalc-dims="1" /></a></p>
<p>Running <code>pytivo_metadata.py /path/to/movies/</code> will query <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5vbWRiYXBpLmNvbS8=">The Open Movie Database API</a> for information on all videos in that directory that don't have metadata files; here's the metadata that <code>pytivo_metadata.py</code> will save to <code>The Family Man.m4v.txt</code>:</p>
<p><code>title : The Family Man<br />
vProgramGenre : Comedy<br />
vProgramGenre : Drama<br />
vProgramGenre : Romance<br />
isEpisode : false<br />
year : 2000<br />
movieYear : 2000<br />
description : A fast-lane investment broker, offered the opportunity to see how the other half lives, wakes up to find that his sports car and girlfriend have become a mini-van and wife.<br />
mpaaRating : P3<br />
vActor : Nicolas Cage<br />
vActor : Téa Leoni<br />
vActor : Don Cheadle<br />
vActor : Jeremy Piven<br />
vDirector : Brett Ratner<br />
vWriter : David Diamond<br />
vWriter : David Weissman</code></p>
<p>pyTivo will automatically use this file to supply the metadata for <code>The Family Man.m4v</code> to TiVo.</p>
<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9maWxlcy8yMDEzLzAxL0lNR182NzE4LmpwZw=="><img class="alignnone size-large wp-image-2916" alt="IMG_6718" src="http://i1.wp.com/www.chrisfinke.com/files/2013/01/IMG_6718.jpg?resize=604%2C338" data-recalc-dims="1" /></a></p>
<p>(See <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3B5dGl2by5zb3VyY2Vmb3JnZS5uZXQvd2lraS9pbmRleC5waHAvTWV0YWRhdGE=">the pyTivo wiki</a> for more info on the metadata file format.)</p>
<p>No guarantees are made regarding the correct movie being returned from the API, so maybe do a cursory check of that after running the script. Or don't. Whatever.</p>
<h2>pytivo_commentary.py</h2>
<p>If you rip a DVD and include multiple audio tracks in the file, you can stream each of those tracks via pyTivo by using <code>pytivo_commentary.py</code>.</p>
<p>If you're using <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2hhbmRicmFrZS5mci8=">Handbrake</a>, go to the <em>Audio</em> tab and add each commentary track as an additional entry:</p>
<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9maWxlcy8yMDEzLzAxL1NjcmVlbi1TaG90LTIwMTMtMDEtMjEtYXQtOC4yOS41NC1QTS5wbmc="><img class="alignnone size-full wp-image-2912" alt="Screen Shot 2013-01-21 at 8.29.54 PM" src="http://i2.wp.com/www.chrisfinke.com/files/2013/01/Screen-Shot-2013-01-21-at-8.29.54-PM.png?resize=604%2C513" data-recalc-dims="1" /></a></p>
<p>Then, add a note to the filename to let <code>pytivo_commentary.py</code> know that there's a commentary track available:</p>
<p><code>The Family Man (Commentary).m4v</code></p>
<p>If the movie has more than one commentary, name it like this:</p>
<p><code>The Family Man (Commentary x 3).m4v</code></p>
<p>(Yes, The Family Man, starring Nicolas Cage, does have three commentary tracks; one of them is completely dedicated to the music score. What a country!)</p>
<p><code>pytivo_commentary.py</code> will then generate multiple copies of the video and metadata file (one for each commentary) and add "Commentary #1" (or #2 or #3) to each title. The additional video files are only hardlinks to the original, so no additional disk space is needed.</p>
<p><a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5jaHJpc2ZpbmtlLmNvbS9maWxlcy8yMDEzLzAxL1NjcmVlbi1TaG90LTIwMTMtMDEtMjEtYXQtOC41OC41OS1QTS5wbmc="><img class="alignnone size-full wp-image-2917" alt="Screen Shot 2013-01-21 at 8.58.59 PM" src="http://i2.wp.com/www.chrisfinke.com/files/2013/01/Screen-Shot-2013-01-21-at-8.58.59-PM.png?resize=490%2C174" data-recalc-dims="1" /></a></p>
<p>Then, add this line to the <code>[Server]</code> section of your <code>pyTivo.conf</code> (and restart the pyTivo service):</p>
<p><code>audio_lang=commentary</code></p>
<p>This causes pyTivo to choose the first audio track it can find that includes the label <em>commentary</em>. In the metadata file for each commentary track, you'll see a line like this:</p>
<p><code>Override_mapAudio 0.2 : commentary</code></p>
<p>This tells pyTivo to explicitly use the label <em>commentary</em> for the second audio track instead of whatever the label was which means that when you stream this video, pyTivo will send the commentary audio track instead of the original audio. Because the metadata file for the non-commentary version doesn't have this override, pyTivo will send the first audio track.</p>
<h2>Conclusion</h2>
<p>There you have it; now you can rip your DVDs to a hard drive, stream them to your TiVo, listen to the commentaries, and never have to worry about scratches, extra remotes, or mandatory previews before your movie.</p>
<p>These scripts were tested with the <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9naXRodWIuY29tL3dtY2JyaW5lL3B5dGl2by8=">wmcbrine version of pyTivo</a> (specifically, the version pulled as of <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9naXRodWIuY29tL3dtY2JyaW5lL3B5dGl2by9jb21taXQvOTdjODU4ZDY0NzI2ZjljNmMxYjExNzQyOWMwM2E5Zjk2NDQxMWRmMQ==">this commit</a>).</p>
<p>The scripts and their required module (<code>pytivo_utilities.py</code>) are available on GitHub in the <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cHM6Ly9naXRodWIuY29tL2NmaW5rZS9weVRpVm8tVXRpbGl0aWVz">pyTivo Utilities</a> repository.</p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=2890" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/01/22/how-to-stream-your-ripped-dvds-to-tivo-with-metadata-and-commentaries/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Work with me here.</title>
		<link>http://www.chrisfinke.com/2013/01/16/work-with-me-here/</link>
		<comments>http://www.chrisfinke.com/2013/01/16/work-with-me-here/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 15:00:11 +0000</pubDate>
		<dc:creator>Christopher Finke</dc:creator>
				<category><![CDATA[Automattic]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.chrisfinke.com/?p=2869</guid>
		<description><![CDATA[No really, work with me.]]></description>
				<content:encoded><![CDATA[<p>In 2012, <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy5hdXRvbWF0dGljLmNvbS9hYm91dC8=">we</a> committed and deployed changes to <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL3d3dy53b3JkcHJlc3MuY29tLw==">WordPress.com</a>, on average, every 26 minutes.  Why so long between deploys? Because we don't have enough people working here!  Help change that by coming to <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy8=">work with us</a>.  We're looking to hire around 60 people this year; if my math is correct, that's a lot!</p>
<p>Do you like the Internet? Working from home (or coffee shops or co-working spaces or libraries or your friend's house or a grassy area with Wi-Fi access)? Making a difference for millions of users? Being part of a profitable company? Retina displays? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy8=">Work with us.</a></p>
<p>Do any of these places sound like interesting locations for week-long team meetups?  Hawaii, New Zealand, Mexico, Spain, New York City, Miami, San Francisco, Iceland, Boston, Las Vegas, San Diego, Italy, Berlin, Amsterdam, Montreal, Portugal, New Orleans, Chicago, Winnipeg, or Montevideo, Uruguay? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy8=">Work with us.</a>  (And that's just a selection of 2012 meetup locations.)</p>
<p>Are you a backend developer? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy8=">Work with us.</a> Mobile developer? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy9tb2JpbGUtZGV2ZWxvcGVyLw==">Work with us.</a> Customer service and support? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy9oYXBwaW5lc3MtZW5naW5lZXIv">Work with us.</a> Designer? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL2pvYnMvZGVzaWduZXIv">Work with us.</a> Front-end developer? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy90aGVtZS13cmFuZ2xlci8=">Work with us.</a> Wordsmith? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy9zdG9yeS13cmFuZ2xlci8=">Work with us.</a> Sysadmin? <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy9zeXN0ZW1zLXdyYW5nbGVyLw==">Work with us.</a></p>
<p>Do you dislike cubicles? Dress codes? Commuting? Working 9-5?  <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy8=">Work with us.</a></p>
<p>Working at Automattic is the best job I've ever had, and I've even worked at AOL, so you know that it must be good.  Won't you come <a href="http://www.chrisfinke.com/?feed-stats-url=aHR0cDovL2F1dG9tYXR0aWMuY29tL3dvcmstd2l0aC11cy8=">work with me</a> and treat yourself to the best job you've ever had?  </p>
 <img src="http://www.chrisfinke.com/?feed-stats-post-id=2869" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.chrisfinke.com/2013/01/16/work-with-me-here/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
