<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel><generator>http://textpattern.com/?v=4.2.0</generator>
<title>Schussman.com</title>
<link>http://www.schussman.com/</link>

<description>All Rocktober, all the time</description>
<pubDate>Sun, 07 Feb 2010 22:31:24 GMT</pubDate>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/schussman" /><feedburner:info uri="schussman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Tasks + Journal in TextMate</title>
<description>&lt;p&gt;A couple of years ago (whoa now, three and a half years ago?!) I commented on using the &lt;a href="http://www.rousette.org.uk/blog/archives/2006/02/17/journal-textmate-plugin/"&gt;TextMate Journal Bundle&lt;/a&gt; to keep a &lt;a href="http://www.schussman.com/article/textmate-modified-find-in-journal-command"&gt;snippets log&lt;/a&gt;. I still use that same snippets file for some references and a handful of things that don&amp;#8217;t quite fit in &lt;a href="http://agilewebsolutions.com/products/1Password"&gt;1password&lt;/a&gt;.&lt;/p&gt;

	&lt;p&gt;When 2010 rolled around, I started up a new journal file to use for a little bit more writing, and quickly found that I wanted to mix content within that file &amp;#8212; specifically, I wanted to put some lists into the journal file. Henrik Nyh&amp;#8217;s &lt;a href="http://henrik.nyh.se/2007/08/tasks-bundle"&gt;TextMate Tasks bundle&lt;/a&gt; handles to-do lists quite well, and it was easy to integrate its functionality with the journal bundle. A screenshot of some of these integrated journal+tasks lists is below:&lt;/p&gt;

	&lt;p class="articleImage"&gt;&lt;img src="http://www.schussman.com/images/134.png" title="TextMate Journal bundle + Tasks bundle" alt="TextMate Journal bundle + Tasks bundle" /&gt;&lt;/p&gt;

	&lt;p&gt;Combined, I get the nice markdown-compatible writing of the journal bundle, plus its keywords, search, and folding capability, along with the nested list feature of Tasks.&lt;/p&gt;

	&lt;p&gt;To assemble this, you&amp;#8217;ll of course need the &lt;a href="http://www.rousette.org.uk/blog/archives/2006/02/17/journal-textmate-plugin/"&gt;journal bundle&lt;/a&gt; (my &lt;a href="http://www.schussman.com/article/textmate-modified-find-in-journal-command"&gt;find command&lt;/a&gt; is optional) and &lt;a href="http://henrik.nyh.se/2007/08/tasks-bundle"&gt;tasks bundle&lt;/a&gt;. Then append this bit of Tasks grammar right into the Journal grammar:&lt;/p&gt;

	&lt;p&gt;&lt;style type="text/css"&gt;
   #source_20100206204604 {
      font-family: monospace;
      font-size: 12px;
      width: 400px;
      overflow: auto;
      margins: auto;
      padding: 4px;
      background-color: #ffffff;
      border: 1px solid #777788;&lt;/p&gt;

   }
   #source_20100206204604 .comment {
      font-style: italic;
      color: #AAA;
   }
   #source_20100206204604 .keyword {
      font-weight: bold;
   }
   #source_20100206204604 .string {
      color: #00F;
   }
      #source_20100206204604 .entity {
      text-decoration: underline;
   }
      #source_20100206204604 .storage {
      color: #888;
   }
      #source_20100206204604 .support {
      color: #0F0;
   }
      #source_20100206204604 .constant,    #source_20100206204604 .variable {
      color: #F0F;
   }
&lt;/style&gt;
&lt;div id="source_20100206204604"&gt;
&lt;div style="white-space: pre; -khtml-line-break: after-white-space;"&gt;
&lt;span class="source"&gt;&lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;include&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;#link&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="invalid"&gt;,&lt;/span&gt;
&lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;markup.list.completed.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;contentName&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;meta.paragraph.list.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;begin&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;^(&lt;span class="constant"&gt;\s&lt;/span&gt;*)(?)&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;end&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;$&lt;span class="constant"&gt;\n&lt;/span&gt;?&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;captures&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;1&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;punctuation.whitespace.list_item.leading.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;2&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;punctuation.definition.list_item.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;patterns&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;(&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;include&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;#link&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="invalid"&gt;,&lt;/span&gt;
&lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;markup.list.pending.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;contentName&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;meta.paragraph.list.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;begin&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;^(&lt;span class="constant"&gt;\s&lt;/span&gt;*)(-)&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;end&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;$&lt;span class="constant"&gt;\n&lt;/span&gt;?&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;captures&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;1&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;punctuation.whitespace.list_item.leading.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;2&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;punctuation.definition.list_item.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;patterns&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;(&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;include&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;#link&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="invalid"&gt;,&lt;/span&gt;
&lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;meta.header-line.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;match&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;^(&lt;span class="constant"&gt;\s&lt;/span&gt;&lt;strong&gt;)((.+)(:)&lt;span class="constant"&gt;\s&lt;/span&gt;&lt;/strong&gt;$&lt;span class="constant"&gt;\n&lt;/span&gt;?)&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;captures&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;1&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;punctuation.whitespace.list_item.leading.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;2&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;meta.header.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;3&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;meta.toc-list.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="meta"&gt;&lt;span class="constant"&gt;4&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="punctuation"&gt;{&lt;/span&gt; &lt;span class="meta"&gt;&lt;span class="constant"&gt;name&lt;/span&gt; &lt;span class="punctuation"&gt;=&lt;/span&gt; &lt;span class="string"&gt;&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;punctuation.definition.header.tasks&lt;span class="punctuation"&gt;&amp;#8216;&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt; &lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="punctuation"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class="punctuation"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="invalid"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/&gt;&lt;/div&gt;&lt;/div&gt;

	&lt;p&gt;Then copy each of the following three Tasks commands into the journal bundle (in the bundle editor, just click the &lt;b&gt;+&lt;/b&gt; to make a copy of each command, then drag and drop into the journal bundle). When copied, for each one, set the scope as indicated:&lt;/p&gt;

	&lt;ul&gt;
		&lt;li&gt;New Task: set scope to &lt;em&gt;text.html.journal&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;Toggle Complete: set scope to &lt;em&gt;markup.list.pending.tasks, markup.list.completed.tasks&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;Expire Completed: set scope to &lt;em&gt;markup.list.completed.tasks&lt;/em&gt;&lt;/li&gt;
	&lt;/ul&gt;

	&lt;p&gt;With those in place, set the language of a file to journal, and go to writing. Use the journal bundle&amp;#8217;s &lt;b&gt;dts&lt;/b&gt; and &lt;b&gt;dtsp&lt;/b&gt; tab snippets to start new entries complete with date stamps (and clipboard contents in the case of dtsp). You can write text into any entry, and intersperse lists at any point by starting a line with &lt;b&gt;-&lt;/b&gt; (indent with one or more spaces to create sub-lists; Tasks will love it). Toggle list items to complete with cmd-D, and cmd-E will remove expired items. &lt;/p&gt;

	&lt;p&gt;I like just being able to put lists into markdown-enabled writing, but there&amp;#8217;s a nice Getting Things Done application here, as well: Since the folding in the journal bundle is so easy, you can make @context entries, fill them with actions, and fold them to get out-of-scope contexts out of the way. Drop the name of the scope into a keyword, and the Find in Bundle command will produce a nice list of the first entry in a given context that matches a search. It&amp;#8217;s simple but workable, if you&amp;#8217;re into that sort of thing.&lt;/p&gt;

	&lt;p&gt;Note that the Tasks bundle is inspired by the very good &lt;a href="http://www.hogbaysoftware.com/products/taskpaper"&gt;TaskPaper&lt;/a&gt; app. If you&amp;#8217;re interesting in something a bit more full-on for lists (and &lt;span class="caps"&gt;GTD&lt;/span&gt;) that also has a bunch of extensions and related projects, do check it out. (Since TaskPaper works with text, you can even load files from Tasks+Journal or Tasks right into it and maintain some (but not all) functionality. I&amp;#8217;ve done a little bit of further tweaking to maintain that compatibility in my bundle, like change Henrik&amp;#8217;s check-mark back to the &amp;#8220;@done&amp;#8221; syntax that TaskPaper users (and update the bundle&amp;#8217;s commands accordingly), which lets me switch back and forth pretty smoothly.  I&amp;#8217;d be happy to publish those additional modifications if there&amp;#8217;s interest.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EwsSNekuZI0b0P9Y5gB4J4SDBEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EwsSNekuZI0b0P9Y5gB4J4SDBEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EwsSNekuZI0b0P9Y5gB4J4SDBEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EwsSNekuZI0b0P9Y5gB4J4SDBEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/schussman/~4/pUL5USMEB9c" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/schussman/~3/pUL5USMEB9c/tasks-journal-in-textmate</link>
<pubDate>Sun, 07 Feb 2010 03:54:53 GMT</pubDate>
<dc:creator>Alan Schussman</dc:creator>
<guid isPermaLink="false">tag:www.schussman.com,2010-02-07:9b63f1b114c1f4e1f9d3a4f8967ca6da/1558583923a064faea77c510d9ddb133</guid>

<category>textmate</category>
<category>bundles</category>
<category>journal</category>
<category>tasks</category>
<category>tools</category>
<category>gtd</category>
<category>getting things done</category>
<feedburner:origLink>http://www.schussman.com/article/tasks-journal-in-textmate</feedburner:origLink></item>
<item><title>Obama’s 2011 Budget Proposal, Department by Department</title>
<description>A slick drillable treemap of the 2011 budget.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QGsraPTYYUrUSQNFjIIhfkYjO60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QGsraPTYYUrUSQNFjIIhfkYjO60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QGsraPTYYUrUSQNFjIIhfkYjO60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QGsraPTYYUrUSQNFjIIhfkYjO60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/schussman/~4/cHos_GEuf6w" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/schussman/~3/cHos_GEuf6w/Obamas2011BudgetProposalDepartmentbyDepartment</link>
<pubDate>Tue, 02 Feb 2010 00:27:57 GMT</pubDate>
<dc:creator>Alan Schussman</dc:creator>
<guid isPermaLink="false">tag:www.schussman.com,0000-00-00:9b63f1b114c1f4e1f9d3a4f8967ca6da/</guid>

<category>data</category>
<category>treemaps</category>
<category>visualization</category>
<feedburner:origLink>http://www.schussman.com/linklog/Obamas2011BudgetProposalDepartmentbyDepartment</feedburner:origLink></item>
<item><title>Organizing the digital mega-library</title>
<description>&lt;p&gt;A few weeks back I wrote a bit about &lt;a href="http://www.schussman.com/article/this-changes-everything"&gt;our new supra-digital entertainment nexus station&lt;/a&gt;, also known as The Blu-Raya Playa. After some more time basking in its &lt;span class="caps"&gt;HDMI&lt;/span&gt; greatness, I have a few more reflections that seem, in natural blog law, to require public consideration.&lt;/p&gt;

	&lt;p&gt;First, a disclaimer: The audio portion of our &amp;#8220;home theater,&amp;#8221; such as it is, consists of an eight year-old Sherwood receiver that I still maintain is an extraordinarily good buy for 2002, what with its &lt;span class="caps"&gt;DTS&lt;/span&gt; and coax and optical audio inputs and 5.1 downmixing and full &lt;span class="caps"&gt;LRF&lt;/span&gt; support. It&amp;#8217;s connected to the bookshelf speakers that I bought in 1994 to take to college, so when I say that the audio from the &lt;em&gt;Serenity&lt;/em&gt; blu-ray is totally sweet, you should take my word for it, because I&amp;#8217;m not one of those nutjobs who pays $800 for neutrally-balanced balsawood volume knobs.&lt;/p&gt;

	&lt;p&gt;Right, with that out of the way, the Sony N460 remains a very satisfying little piece of equipment, but I do have a few thoughts about the whole &amp;#8220;online digital library&amp;#8221; thing.&lt;/p&gt;

	&lt;p&gt;First, a better remote would be nice. This one&amp;#8217;s a little lightweight in heft. Also, for a device that can stream internet music services, a RF remote would be slick &amp;#8212; no line-of-sight requirement to make selections. In the dare-to-dream category would be a smart remote with a display to control services like last.fm or pandora from the kitchen. Oooh, iPhone app. &lt;b&gt;Ooooh, iPad app&lt;/b&gt;, yes.&lt;/p&gt;

	&lt;p&gt;Second, every video service is walled off from the rest. Online video is organized by service, not content or category or keyword. I want to aggregate it all up into folders or buckets of some kind. I&amp;#8217;d settle for getting this for Netflix only (though being able to roll-up rentals or purchases from Amazon on Demand, too, would be way cool). The current display is just a tile of little tiny cover displays &amp;#8212; scrolling through brings up a larger display of title. How excellent it would be to be able to organize all those little pictures of &lt;span class="caps"&gt;DVD&lt;/span&gt; covers, into TV and sci-fi and &amp;#8220;serious melodrama&amp;#8221; and &amp;#8220;re-runs of The Shield.&amp;#8221;&lt;/p&gt;

	&lt;p&gt;Here&amp;#8217;s why categorization matters so much: I find I&amp;#8217;m really making a library out of the Netflix instant queue, dropping into it movies I&amp;#8217;ve been before, movies I&amp;#8217;ve heard about, movies I might watch someday, and even documentaries. Previously, the Netflix Instant queue was a list of things tagged, essentially, &amp;#8220;I want to watch this.&amp;#8221; But having all that material in a device permanently connected to the TV changes that dramatically. It&amp;#8217;s not a queue so much as a &amp;#8220;I love this or I think it&amp;#8217;s cool or I remember watching it in college or I might watch this one day&amp;#8221; list. And therefore it&amp;#8217;s not a list; it&amp;#8217;s a library, and that library needs organizing. And all that stuff? It needs organizing. &lt;/p&gt;

	&lt;p&gt;The digital mega-library needs organizing, one way or another. Netflix could send category information to these devices, for example, or could allow users to attach keywords; devices could do anything with this information: display tag clouds or let users navigate the categories of video they&amp;#8217;ve dropped into the queue, or build sparklines of keyword frequencies or &amp;#8230; well, you get it. I think Netflix must ultimately be headed for this kind of system, but its usability will depend on device-level implementation.&lt;/p&gt;

	&lt;p&gt;[ &lt;em&gt;update&lt;/em&gt;: &lt;a href="http://blog.boxee.tv/"&gt;Boxee&lt;/a&gt; may present a partial solution here, as the new version claims to be able to better organize material across services. Not having tried it out for quite a while, I downloaded the current release and gave it a go. I do have to say that it&amp;#8217;s really slick, and must faster than the prior version I had used for a while. And there is some hint of cross-service integration: Searching for &lt;i&gt;Chuck&lt;/i&gt; for example reveals streams from &lt;span class="caps"&gt;NBC&lt;/span&gt;.com and from Hulu; but searching for &lt;i&gt;Doctor Who&lt;/i&gt;, which is represented by half a dozen entries in my instant Netflix queue, turns up nothing, so the integration is at best still only partial. But Boxee does have the most complete overall set of services, so the upcoming &lt;a href="http://blog.boxee.tv/2009/12/09/step-1-make-a-boxee-box-no-need-to-cut-a-hole/"&gt;Boxee box&lt;/a&gt; is most definitely worth watching as an alternative to dedicating a PC to the TV. ]&lt;/p&gt;

	&lt;p&gt;And the day I can get to all the stuff I&amp;#8217;ve queued, rented, and/or bought &amp;#8212; via keyword, or actor, or ranking, or genre &amp;#8212; without having to back out three menus and find another service? That will be Unification Day, and it will rock. Apple TV, I&amp;#8217;m looking at you, though if Sony could do this with some sweet firmware updates to the box we already own, well I&amp;#8217;d seriously consider a Vaio. Cross my heart.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O_2BZ_4KQHOZ07fgMllbk_Fv2yc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O_2BZ_4KQHOZ07fgMllbk_Fv2yc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O_2BZ_4KQHOZ07fgMllbk_Fv2yc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O_2BZ_4KQHOZ07fgMllbk_Fv2yc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/schussman/~4/i3bgHTRlPg0" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/schussman/~3/i3bgHTRlPg0/organizing-the-digital-mega-library</link>
<pubDate>Sun, 31 Jan 2010 05:01:30 GMT</pubDate>
<dc:creator>Alan Schussman</dc:creator>
<guid isPermaLink="false">tag:www.schussman.com,2010-01-31:9b63f1b114c1f4e1f9d3a4f8967ca6da/63a5e01dc9056d0d2c1a6ecf1bc31385</guid>

<category>netflix</category>
<category>movies</category>
<category>media</category>
<category>sony</category>
<category>apple</category>
<feedburner:origLink>http://www.schussman.com/article/organizing-the-digital-mega-library</feedburner:origLink></item>
<item><title>threadsy</title>
<description>A social network aggregator with some potential
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wpuWcptzSv4HnqLWPW_QTzYLXZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wpuWcptzSv4HnqLWPW_QTzYLXZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wpuWcptzSv4HnqLWPW_QTzYLXZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wpuWcptzSv4HnqLWPW_QTzYLXZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/schussman/~4/sA5ofxjf2Ts" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/schussman/~3/sA5ofxjf2Ts/threadsy</link>
<pubDate>Fri, 22 Jan 2010 22:33:34 GMT</pubDate>
<dc:creator>Alan Schussman</dc:creator>
<guid isPermaLink="false">tag:www.schussman.com,0000-00-00:9b63f1b114c1f4e1f9d3a4f8967ca6da/</guid>

<category>networks</category>
<category>twitter</category>
<category>email</category>
<category>facebook</category>
<category>tools</category>
<feedburner:origLink>http://www.schussman.com/linklog/threadsy</feedburner:origLink></item>
<item><title>Local culture revisited</title>
<description>&lt;p&gt;Several years ago I stumbled over the Netflix &amp;#8220;local favorites&amp;#8221; list &lt;a href="http://www.schussman.com/article/local-culture"&gt;and had a good time exploring it&lt;/a&gt;. Well, the New York Times has gone and made a &lt;a href="http://www.nytimes.com/interactive/2010/01/10/nyregion/20100110-netflix-map.html?hp"&gt;really cool presentation of that data, for 2009, for a dozen U.S. cities&lt;/a&gt;. Check it out. Good stuff.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7b9XyRytVJlK0fmtNaN-gtVfcjk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7b9XyRytVJlK0fmtNaN-gtVfcjk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7b9XyRytVJlK0fmtNaN-gtVfcjk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7b9XyRytVJlK0fmtNaN-gtVfcjk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/schussman/~4/1DV6mKVCVG8" height="1" width="1"/&gt;</description>
<link>http://feedproxy.google.com/~r/schussman/~3/1DV6mKVCVG8/local-culture-revisited</link>
<pubDate>Sat, 09 Jan 2010 17:58:42 GMT</pubDate>
<dc:creator>Alan Schussman</dc:creator>
<guid isPermaLink="false">tag:www.schussman.com,2010-01-09:9b63f1b114c1f4e1f9d3a4f8967ca6da/d93736035b2cce3e4410e2ae86161e5a</guid>

<category>data</category>
<category>netflix</category>
<category>maps</category>
<category>movies</category>
<feedburner:origLink>http://www.schussman.com/article/local-culture-revisited</feedburner:origLink></item></channel>
</rss>
