<?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: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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Brett Terpstra</title>
	
	<link>http://brettterpstra.com</link>
	<description>The digital shenanigans of coder and web developer Brett Terpstra, exploring OS X, Cocoa, Ruby, Bash, PHP, WordPress and more…</description>
	<lastBuildDate>Fri, 24 Feb 2012 15:00:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BrettTerpstra" /><feedburner:info uri="brettterpstra" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><feedburner:emailServiceId>BrettTerpstra</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Web excursions: February 1, 2012 — February 24, 2012</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/FnVCFK2Aous/</link>
		<comments>http://brettterpstra.com/web-excursions-february-1-2012-february-24-2012/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 15:00:06 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[bookmarks]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3614</guid>
		<description><![CDATA[<p>Links of interest from February 1, 2012 through February 24, 2012: Plain Text to OmniFocusThis is great stuff. I&#039;ve been wanting an easy way to bridge the gap between the plain-text project management I do with Taskpaper files in my project folders, and the daily life/work task management I do in OmniFocus (switched back last week). Exciting! dotfilesOpinionated Dotfiles for&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/web-excursions-february-1-2012-february-24-2012/">Web excursions: February 1, 2012 — February 24, 2012</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Links of interest from <em>February 1, 2012 through February 24, 2012</em>:</strong></p>

<ul>
<li><strong><a href="http://www.macdrifter.com/2012/02/plain-text-to-omnifocus/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=plain-text-to-omnifocus">Plain Text to OmniFocus</a></strong><br />This is great stuff. I&#039;ve been wanting an easy way to bridge the gap between the plain-text project management I do with Taskpaper files in my project folders, and the daily life/work task management I do in OmniFocus (switched back last week). Exciting!</li>
<li><strong><a href="http://skwp.github.com/dotfiles/">dotfiles</a></strong><br />Opinionated Dotfiles for zsh and MacVim. Lots of good stuff in here.</li>
<li><strong><a href="http://www.leancrew.com/all-this/2012/02/address-book-urls/">Address Book URLs</a></strong><br />Now if I can make nvALT recognize addressbook:// urls, you could make round-trip links to connect notes to Address Book entries...</li>
<li><strong><a href="http://html5please.us/">HTML5 Please - Use the new and shiny responsibly</a></strong><br />A very handy reference for HTML5 and CSS3 with notes about browser compatibility and other pitfalls.</li>
<li><strong><a href="http://www.macsparky.com/blog/2012/2/1/dumping-google-search.html">Dumping Google Search</a></strong><br />Hooray, MacSparky is a DuckDuckGo convert! I haven&#039;t used Google search for about a year now, and have never missed it.</li>
</ul>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/connecting-nvalt-and-address-book/' rel='bookmark' title='Connecting nvALT and Address Book'>Connecting nvALT and Address Book</a></li>
<li><a href='http://brettterpstra.com/address-book-search-and-skype-from-the-command-line/' rel='bookmark' title='Address Book search and Skype from the command line'>Address Book search and Skype from the command line</a></li>
<li><a href='http://brettterpstra.com/ios-app-review-reading-list/' rel='bookmark' title='iOS App Review: Reading List'>iOS App Review: Reading List</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/web-excursions-february-1-2012-february-24-2012/">Web excursions: February 1, 2012 — February 24, 2012</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=FnVCFK2Aous:HOYOBDNB0L0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=FnVCFK2Aous:HOYOBDNB0L0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=FnVCFK2Aous:HOYOBDNB0L0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=FnVCFK2Aous:HOYOBDNB0L0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=FnVCFK2Aous:HOYOBDNB0L0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=FnVCFK2Aous:HOYOBDNB0L0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=FnVCFK2Aous:HOYOBDNB0L0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=FnVCFK2Aous:HOYOBDNB0L0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=FnVCFK2Aous:HOYOBDNB0L0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=FnVCFK2Aous:HOYOBDNB0L0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/FnVCFK2Aous" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/web-excursions-february-1-2012-february-24-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/web-excursions-february-1-2012-february-24-2012/</feedburner:origLink></item>
		<item>
		<title>Log TaskPaper archives to Day One</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/Pg8LWI9emLg/</link>
		<comments>http://brettterpstra.com/log-taskpaper-archives-to-day-one/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 01:38:34 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3701</guid>
		<description><![CDATA[<p>I wrote a while back about some Day One geekery, and shared the git wrapper I set up for bagging some of my larger commit messages to Day One entries automatically. Then Rob went and asked me if I could do something similar with TaskPaper, logging archived tasks to Day One on the fly. Had to try it. I built&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/log-taskpaper-archives-to-day-one/">Log TaskPaper archives to Day One</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' display: block; margin-right: auto; margin-left: auto;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/day_one_plus_taskpaper.jpg?9d7bd4" alt="Day One plus TaskPaper" height="220" width="640" class="aligncenter" ></p>

<p>I wrote a while back about some <a href="http://brettterpstra.com/logging-with-day-one-geek-style/">Day One geekery</a>, and shared the git wrapper I set up for bagging some of my larger commit messages to Day One entries automatically. Then <a href="https://twitter.com/#!/ruminatr">Rob</a> went and asked me if I could <a href="http://twitter.com/ruminatr/status/172192725758771200">do something similar</a> with <a href="http://www.hogbaysoftware.com/products/taskpaper">TaskPaper</a>, logging archived tasks to <a href="http://dayoneapp.com/">Day One</a> on the fly. Had to try it.</p>

<p>I built the script using the newer query syntax, and I find it a little more stable than the old project-by-project parsing method (nice work, Jesse). To use it, you just need a TaskPaper document with at least one project and an “Archive:” section, and Day One with the <a href="http://dayoneapp.com/faq/#commandlineinterface">CLI tool installed</a>.</p>

<ul>
<li>Using the frontmost document in TaskPaper, it grabs all the @done tasks<sup id="fnref:done"><a href="#fn:done" rel="footnote">1</a></sup> (with or without a date) that aren’t already in the “Archive” project for processing. </li>
<li>It goes through a few of my common “in-process” tags (@na, @priority, @waiting) and removes them if they exist on a @done task (they’re meaningless after completion). </li>
<li>Then it looks to see if there’s a @project tag, and if not, it adds one for the project the task was in when it was archived (I think this is default TaskPaper behavior…). </li>
<li>The full text content of each task (complete with Markdown-style list delimiter and all of the project/date tags you’d want in a log entry) is added to a string. </li>
<li>Each @done task is then moved to the “Archive” project. </li>
<li>The name of the parent file and the list of all the tasks you just archived are sent as a single entry to Day One using the <code>dayone</code> CLI tool.</li>
</ul>

<p><span id="more-3701"></span></p>

<p>I’m not certain that the end results of using this are superior to logging commit messages. With commit messages I’m talking about what I just did and noting any issues; just being more verbose in general. This technique is a really convenient way to log, though, if you’re already a TaskPaper (and Day One) user, and works perfectly as a supplement to other logging methods.</p>

<p>As you archive your tasks, they get dropped into a calendar view in ready-to-display Markdown format. It’s faster and prettier than to trying to maintain and sort archives of finished tasks in TaskPaper. Given that this is pretty much automatic in my current workflow, I’m just going to let both logging systems churn for a while and see if one or the other isn’t pulling its weight.</p>

<p>The script is thoroughly commented. Probably unnecessarily so for such a short task (I’m pretty sure there’s more comment than code in there). See below for brief installation instructions, and <a href="applescript://com.apple.scripteditor?action=new&amp;script=set%20archivedTasks%20to%20%22%22%0Atell%20application%20%22TaskPaper%22%0A%09tell%20front%20document%0A%09%09--%20don't%20care%20which%20file%20your%20log%20entry%20came%20from?%0A%09%09--%20comment%20the%20next%20line%20out%0A%09%09set%20archivedTasks%20to%20%22%23%23%20%22%20&amp;%20name%20&amp;%20return%0A%09%09repeat%20with%20_task%20in%20search%20with%20query%20%22project%20!=%20Archive%20and%20@done%22%0A%09%09%09if%20entry%20type%20of%20_task%20is%20not%20project%20type%20then%0A%09%09%09%09--%20remove%20common%20tags%20that%20won't%20matter%20after%20archiving%0A%09%09%09%09repeat%20with%20_tag%20in%20%7B%22na%22,%20%22next%22,%20%22priority%22,%20%22waiting%22%7D%0A%09%09%09%09%09if%20exists%20(tag%20named%20_tag%20of%20_task)%20then%20delete%20tag%20named%20_tag%20of%20_task%0A%09%09%09%09end%20repeat%0A%09%09%09%09--%20if%20there's%20no%20project%20tag%20on%20the%20task,%20%0A%09%09%09%09--%20add%20the%20task's%20current%20project%20as%20a%20tag%0A%09%09%09%09if%20not%20(exists%20(tag%20named%20%22project%22%20of%20_task))%20then%0A%09%09%09%09%09tell%20_task%20to%20make%20tag%20with%20properties%20%7Bname:%22project%22,%20value:(name%20of%20containing%20project%20of%20_task%20as%20rich%20text)%7D%0A%09%09%09%09end%20if%0A%09%09%09%09--%20append%20the%20full%20text%20of%20the%20entry,%20including%20tags,%20to%20our%20log%0A%09%09%09%09set%20archivedTasks%20to%20archivedTasks%20&amp;%20(text%20line%20of%20_task)%0A%09%09%09%09--%20archive%20it%0A%09%09%09%09move%20entry%20id%20(id%20of%20_task)%20to%20beginning%20of%20entries%20of%20project%20%22Archive%22%0A%09%09%09end%20if%0A%09%09end%20repeat%0A%09end%20tell%0Aend%20tell%0A--%20send%20the%20accumulated%20results%20to%20Day%20One%20via%20the%20command%20line%20tool%0A--%20http://dayoneapp.com/faq/%23commandlineinterface%0A--%20You'll%20need%20to%20run%20%60ln%20-s%20%22/Applications/Day%20One/Day%20One.app/Contents/MacOS/dayone%22%20/usr/local/bin/dayone%60%20to%20have%20it%20accessible%20at%20this%20path%0Ado%20shell%20script%20%22echo%20%22%20&amp;%20(quoted%20form%20of%20archivedTasks)%20&amp;%20%22%7Ctr%20-d%20%5C%22%5C%5Ct%5C%22%7C/usr/local/bin/dayone%20new%22">click here to open it directly in AppleScript Editor</a>.</p>


<div class="wp_syntax"><div class="code"><pre class="applescript"><span class="kw3">set</span> archivedTasks <span class="kw3">to</span> <span class="st0">&quot;&quot;</span>
<span class="kw3">tell</span> <span class="kw1">application</span> <span class="st0">&quot;TaskPaper&quot;</span>
	<span class="kw3">tell</span> <span class="kw2">front</span> <span class="kw1">document</span>
		<span class="co1">-- don't care which file your log entry came from?</span>
		<span class="co1">-- comment the next line out</span>
		<span class="kw3">set</span> archivedTasks <span class="kw3">to</span> <span class="st0">&quot;## &quot;</span> <span class="sy0">&amp;</span> <span class="kw1">name</span> <span class="sy0">&amp;</span> <span class="kw3">return</span>
		<span class="kw3">repeat</span> <span class="kw3">with</span> _task <span class="kw3">in</span> search <span class="kw3">with</span> query <span class="st0">&quot;project != Archive and @done&quot;</span>
			<span class="kw3">if</span> entry type <span class="kw3">of</span> _task <span class="kw3">is</span> <span class="kw2">not</span> project type <span class="kw3">then</span>
				<span class="co1">-- remove common tags that won't matter after archiving</span>
				<span class="kw3">repeat</span> <span class="kw3">with</span> _tag <span class="kw3">in</span> <span class="br0">&#123;</span><span class="st0">&quot;na&quot;</span>, <span class="st0">&quot;next&quot;</span>, <span class="st0">&quot;priority&quot;</span>, <span class="st0">&quot;waiting&quot;</span><span class="br0">&#125;</span>
					<span class="kw3">if</span> <span class="kw1">exists</span> <span class="br0">&#40;</span>tag <span class="kw2">named</span> _tag <span class="kw3">of</span> _task<span class="br0">&#41;</span> <span class="kw3">then</span> <span class="kw1">delete</span> tag <span class="kw2">named</span> _tag <span class="kw3">of</span> _task
				<span class="kw3">end</span> <span class="kw3">repeat</span>
				<span class="co1">-- if there's no project tag on the task, </span>
				<span class="co1">-- add the task's current project as a tag</span>
				<span class="kw3">if</span> <span class="kw2">not</span> <span class="br0">&#40;</span><span class="kw1">exists</span> <span class="br0">&#40;</span>tag <span class="kw2">named</span> <span class="st0">&quot;project&quot;</span> <span class="kw3">of</span> _task<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw3">then</span>
					<span class="kw3">tell</span> _task <span class="kw3">to</span> <span class="kw1">make</span> tag <span class="kw3">with</span> <span class="kw1">properties</span> <span class="br0">&#123;</span><span class="kw1">name</span>:<span class="st0">&quot;project&quot;</span>, value:<span class="br0">&#40;</span><span class="kw1">name</span> <span class="kw3">of</span> containing project <span class="kw3">of</span> _task <span class="kw2">as</span> rich <span class="kw1">text</span><span class="br0">&#41;</span><span class="br0">&#125;</span>
				<span class="kw3">end</span> <span class="kw3">if</span>
				<span class="co1">-- append the full text of the entry, including tags, to our log</span>
				<span class="kw3">set</span> archivedTasks <span class="kw3">to</span> archivedTasks <span class="sy0">&amp;</span> <span class="br0">&#40;</span><span class="kw1">text</span> line <span class="kw3">of</span> _task<span class="br0">&#41;</span>
				<span class="co1">-- archive it</span>
				<span class="kw1">move</span> entry <span class="kw1">id</span> <span class="br0">&#40;</span><span class="kw1">id</span> <span class="kw3">of</span> _task<span class="br0">&#41;</span> <span class="kw3">to</span> <span class="kw2">beginning</span> <span class="kw3">of</span> entries <span class="kw3">of</span> project <span class="st0">&quot;Archive&quot;</span>
			<span class="kw3">end</span> <span class="kw3">if</span>
		<span class="kw3">end</span> <span class="kw3">repeat</span>
	<span class="kw3">end</span> <span class="kw3">tell</span>
<span class="kw3">end</span> <span class="kw3">tell</span>
<span class="co1">-- send the accumulated results to Day One via the command line tool</span>
<span class="co1">-- http://dayoneapp.com/faq/#commandlineinterface</span>
<span class="co1">-- You'll need to run `ln -s &quot;/Applications/Day One/Day One.app/Contents/MacOS/dayone&quot; /usr/local/bin/dayone` to have it accessible at this path</span>
<span class="kw1">do shell script</span> <span class="st0">&quot;echo &quot;</span> <span class="sy0">&amp;</span> <span class="br0">&#40;</span><span class="kw1">quoted form</span> <span class="kw3">of</span> archivedTasks<span class="br0">&#41;</span> <span class="sy0">&amp;</span> <span class="st0">&quot;|tr -d <span class="es0">\&quot;</span><span class="es0">\\</span>t<span class="es0">\&quot;</span>|/usr/local/bin/dayone new&quot;</span></pre></div></div>


<p>Just copy the script into AppleScript Editor (or click the handy <a href="applescript://com.apple.scripteditor?action=new&amp;script=set%20archivedTasks%20to%20%22%22%0Atell%20application%20%22TaskPaper%22%0A%09tell%20front%20document%0A%09%09--%20don't%20care%20which%20file%20your%20log%20entry%20came%20from?%0A%09%09--%20comment%20the%20next%20line%20out%0A%09%09set%20archivedTasks%20to%20%22%23%23%20%22%20&amp;%20name%20&amp;%20return%0A%09%09repeat%20with%20_task%20in%20search%20with%20query%20%22project%20!=%20Archive%20and%20@done%22%0A%09%09%09if%20entry%20type%20of%20_task%20is%20not%20project%20type%20then%0A%09%09%09%09--%20remove%20common%20tags%20that%20won't%20matter%20after%20archiving%0A%09%09%09%09repeat%20with%20_tag%20in%20%7B%22na%22,%20%22next%22,%20%22priority%22,%20%22waiting%22%7D%0A%09%09%09%09%09if%20exists%20(tag%20named%20_tag%20of%20_task)%20then%20delete%20tag%20named%20_tag%20of%20_task%0A%09%09%09%09end%20repeat%0A%09%09%09%09--%20if%20there's%20no%20project%20tag%20on%20the%20task,%20%0A%09%09%09%09--%20add%20the%20task's%20current%20project%20as%20a%20tag%0A%09%09%09%09if%20not%20(exists%20(tag%20named%20%22project%22%20of%20_task))%20then%0A%09%09%09%09%09tell%20_task%20to%20make%20tag%20with%20properties%20%7Bname:%22project%22,%20value:(name%20of%20containing%20project%20of%20_task%20as%20rich%20text)%7D%0A%09%09%09%09end%20if%0A%09%09%09%09--%20append%20the%20full%20text%20of%20the%20entry,%20including%20tags,%20to%20our%20log%0A%09%09%09%09set%20archivedTasks%20to%20archivedTasks%20&amp;%20(text%20line%20of%20_task)%0A%09%09%09%09--%20archive%20it%0A%09%09%09%09move%20entry%20id%20(id%20of%20_task)%20to%20beginning%20of%20entries%20of%20project%20%22Archive%22%0A%09%09%09end%20if%0A%09%09end%20repeat%0A%09end%20tell%0Aend%20tell%0A--%20send%20the%20accumulated%20results%20to%20Day%20One%20via%20the%20command%20line%20tool%0A--%20http://dayoneapp.com/faq/%23commandlineinterface%0A--%20You'll%20need%20to%20run%20%60ln%20-s%20%22/Applications/Day%20One/Day%20One.app/Contents/MacOS/dayone%22%20/usr/local/bin/dayone%60%20to%20have%20it%20accessible%20at%20this%20path%0Ado%20shell%20script%20%22echo%20%22%20&amp;%20(quoted%20form%20of%20archivedTasks)%20&amp;%20%22%7Ctr%20-d%20%5C%22%5C%5Ct%5C%22%7C/usr/local/bin/dayone%20new%22">link</a>) and save it as a compiled script in <code>~/Library/Scripts/Applications/TaskPaper</code> (creating the folder if it’s not there). If you have the AppleScript menubar item enabled in AppleScript Editor preferences, you’ll be able to access the script from within TaskPaper. It’s really only convenient if you have a hotkey, though. Keyboard Maestro, FastScripts, Launchbar, System Preferences… whatever your poison, just make it easy.</p>

<p>Again, you’ll need to have the <code>dayone</code> CLI tool linked to <code>/usr/local/bin/dayone</code> (or modify the path in the script). If you have Day One installed in the standard /Applications directory, just run this in Terminal:</p>

<pre><code>ln -s "/Applications/Day One/Day One.app/Contents/MacOS/dayone" /usr/local/bin/dayone
</code></pre>

<p>Thanks for the idea, Rob!</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:done">
<p>⌘D, but you knew that. <a href="#fnref:done" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/a-few-scripts-for-taskpaper-users/' rel='bookmark' title='A few scripts for TaskPaper users'>A few scripts for TaskPaper users</a></li>
<li><a href='http://brettterpstra.com/totally-taskpaper/' rel='bookmark' title='Totally TaskPaper'>Totally TaskPaper</a></li>
<li><a href='http://brettterpstra.com/taskpaper-date-scripts/' rel='bookmark' title='Taskpaper Date Scripts'>Taskpaper Date Scripts</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/log-taskpaper-archives-to-day-one/">Log TaskPaper archives to Day One</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=Pg8LWI9emLg:V1W9bXo0TnI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=Pg8LWI9emLg:V1W9bXo0TnI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=Pg8LWI9emLg:V1W9bXo0TnI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=Pg8LWI9emLg:V1W9bXo0TnI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=Pg8LWI9emLg:V1W9bXo0TnI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=Pg8LWI9emLg:V1W9bXo0TnI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=Pg8LWI9emLg:V1W9bXo0TnI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=Pg8LWI9emLg:V1W9bXo0TnI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=Pg8LWI9emLg:V1W9bXo0TnI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=Pg8LWI9emLg:V1W9bXo0TnI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/Pg8LWI9emLg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/log-taskpaper-archives-to-day-one/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/log-taskpaper-archives-to-day-one/</feedburner:origLink></item>
		<item>
		<title>Markdown Service Tools get blockquotes, self-links and more</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/0jCidaB8Hmw/</link>
		<comments>http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 04:33:54 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[markdownservices]]></category>
		<category><![CDATA[service]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3697</guid>
		<description><![CDATA[<p>I needed some relaxing regular expression fun tonight, so I’ve updated a couple of services in the Markdown Service Tools and made some small additions. The main new feature is for handling blockquotes, and there are two versions of the Service. I’m providing some brief explanations after the jump, but feel free to skip to the Markdown Service Tools page&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/">Markdown Service Tools get blockquotes, self-links and more</a></p>]]></description>
			<content:encoded><![CDATA[<p>I needed some relaxing regular expression fun tonight, so I’ve updated a couple of services in the Markdown Service Tools and made some small additions. The main new feature is for handling blockquotes, and there are two versions of the Service. I’m providing some brief explanations after the jump, but feel free to skip to the <a href="http://brettterpstra.com/project/markdown-service-tools/">Markdown Service Tools page</a> and just check the <a href="http://brettterpstra.com/project/markdown-service-tools/#changelog">changelog</a>.</p>

<p><span id="more-3697"></span></p>

<h3>Block quoting</h3>

<p>The first of the blockquoting tools, “Blockquote Selection,” just adds a “&gt;” and a space before every line in the selection which contains text. It preserves existing indentation and is best for quoting single paragraphs quickly or for large chunks with code blocks and other indented text you want to keep that way.</p>

<p>The second version, “Convert Indents to Quote Levels,” is for turning hierarchically-indented text (using tabs, not spaces) into nested blockquotes in Markdown format. In essence, it swaps tabs for <code>&gt;</code>‘s. You can turn a conversation like this:</p>

<pre><code>Ut enim ad minima veniam, quis nostrum 

    exercitationem ullam corporis 

        suscipit laboriosam, nisi ut aliquid ex ea 

            commodi consequatur? 

        Quis autem vel eum iure reprehenderit qui in ea 

voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
</code></pre>

<p>into this:</p>

<pre><code>&gt; Ut enim ad minima veniam, quis nostrum

&gt;&gt; exercitationem ullam corporis

&gt;&gt;&gt; suscipit laboriosam, nisi ut aliquid ex ea

&gt;&gt;&gt;&gt; commodi consequatur?

&gt;&gt;&gt; Quis autem vel eum iure reprehenderit qui in ea

&gt; voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
</code></pre>

<p>Which previews/converts as something like:</p>

<p><img src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/indented_blockquotes.jpg?9d7bd4" alt="Indented blockquotes" height="215" width="450" ></p>

<h3>Self-linking URLs</h3>

<p>The other big feature, and probably the one that took me the most time this evening, is a service for converting standalone URLs into hyperlinks. If a URL isn’t part of an HTML or Markdown (reference or inline) link, it gets turned into a Markdown-style self-link, which will preview/convert as a hyperlink with the URL itself as the text. This is done by surrounding the URL with angle brackets (<code>&lt;http://yourlink.com&gt;</code>).</p>

<p>This service will ignore anything in an href attribute, anything preceded by ”](“ (assumed to be an inline link), anything on a line that starts with a reference (<code>[title]: ...</code>) and any links that are already “self-linked.” It looks for common punctuation marks at the end of a link and removes them from the conversion (comma, period, etc.). It also does its best to recognize when a paired character (parenthesis, brackets, quotes) exists at the beginning and end of the link so they can be separated from the url without brutally removing every occurence from the link (thus breaking any wikipedia link, et al)<sup id="fnref:lookbehind"><a href="#fn:lookbehind" rel="footnote">1</a></sup>.</p>

<p>The Service currently only looks for http, https and ftp links. If you have another use case I should consider, let me know.</p>

<h3>Unwrap Paragraphs updated</h3>

<p>The <a href="http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/">Unwrap Paragraphs</a> service I added the other day has had a small dose of “smart” added to it. It won’t mess with your code blocks or other specially-formatted text now, and should do a much better job of concatenating words that were hyphenated when the text was hard-wrapped to begin with. Let me know how it goes, I’m definitely looking to improve this one. All of them, really, so don’t be shy with the feedback.</p>

<h3>Download</h3>

<p>You can grab the whole pack of Services and read up on the rest of the included tools on the <a href="http://brettterpstra.com/project/markdown-service-tools/">Markdown Service Tools</a> project page. There’s a readme included in the download (and I just updated it and the documentation) with the full contents of that page, so feel free to download directly below and browse that on your own.</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/MarkdownServiceTools1.4.zip?9d7bd4" title="Download Markdown Service Tools (3459)"><img src="http://brettterpstra.com/wp-content/images/serviceicon.jpg?9d7bd4" alt="download image for Markdown Service Tools" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/MarkdownServiceTools1.4.zip?9d7bd4" title="Download Markdown Service Tools (3459)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/MarkdownServiceTools1.4.zip?9d7bd4" title="Download Markdown Service Tools (3459)">Markdown Service Tools</a> — Markdown Service Tools is a collection of OS X Services to make creating Markdown-formatted text that much easier. Services work in any Cocoa based application. <a href="http://brettterpstra.com/code/markdown-service-tools/">More Info</a></p></div>

<div class="footnotes">
<hr />
<ol>

<li id="fn:lookbehind">
<p>This took a lot of bending over backward because I need it to support Ruby 1.8 (default on your OS X machine), and Ruby 1.8 doesn’t support <a href="http://www.perlmonks.org/?node_id=518444">negative lookbehinds</a> in regular expressions. I apologize for the inelegance of the code. When 1.9+ becomes standard on Macs, I might update it to be much prettier. <a href="#fnref:lookbehind" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/markdown-service-tools-1-3/' rel='bookmark' title='Markdown Service Tools 1.3'>Markdown Service Tools 1.3</a></li>
<li><a href='http://brettterpstra.com/some-chrome-love-for-the-markdown-service-tools/' rel='bookmark' title='Some Chrome love for the Markdown Service Tools'>Some Chrome love for the Markdown Service Tools</a></li>
<li><a href='http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/' rel='bookmark' title='Unwrap Paragraphs for the Markdown Service Tools'>Unwrap Paragraphs for the Markdown Service Tools</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/">Markdown Service Tools get blockquotes, self-links and more</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0jCidaB8Hmw:ARUNV8SK7vw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0jCidaB8Hmw:ARUNV8SK7vw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0jCidaB8Hmw:ARUNV8SK7vw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0jCidaB8Hmw:ARUNV8SK7vw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0jCidaB8Hmw:ARUNV8SK7vw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0jCidaB8Hmw:ARUNV8SK7vw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0jCidaB8Hmw:ARUNV8SK7vw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0jCidaB8Hmw:ARUNV8SK7vw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0jCidaB8Hmw:ARUNV8SK7vw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0jCidaB8Hmw:ARUNV8SK7vw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/0jCidaB8Hmw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/</feedburner:origLink></item>
		<item>
		<title>A Fluid icon for ThinkUp</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/QBQgAcQusaA/</link>
		<comments>http://brettterpstra.com/a-fluid-icon-for-thinkup/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 20:00:31 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[icon]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3683</guid>
		<description><![CDATA[<p>I love ThinkUp for managing what there is of my social presence, as well as for archiving my Twitter and Facebook posts. So much so that it gets its own Fluid1 app. The favicon for the web app (which Fluid uses as the app icon by default) is really sad-looking in the Dock, though, so I whipped up an icon&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/a-fluid-icon-for-thinkup/">A Fluid icon for ThinkUp</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/ThinkUpIcon2.png?9d7bd4"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/ThinkUpIcon2-300x300.png?9d7bd4" alt="ThinkUp Dock Icon for Fluid" title="ThinkUpIcon" width="300" height="300" class="alignright size-medium wp-image-3684" /></a>I love <a href="http://thinkupapp.com/">ThinkUp</a> for managing what there is of my social presence, as well as for archiving my Twitter and Facebook posts. So much so that it gets its own <a href="http://fluidapp.com/">Fluid</a><sup id="fnref:fluid"><a href="#fn:fluid" rel="footnote">1</a></sup> app. The favicon for the web app (which Fluid uses as the app icon by default) is really sad-looking in the Dock, though, so I whipped up an icon and thought I'd share it. Nothing special, just a little more pleasing to me than the blurry mess the favicon creates.</p>

<p>Running a local copy of ThinkUp isn't terribly difficult, but I won't go into a full list of instructions here. There are great <a href="http://thinkupapp.com/docs/install/">instructions on the ThinkUp site</a> for both local installations and running it in the cloud. If you have web sharing turned on, though, and you put it in your Sites folder, you're most of the way there. I point a virtual host<sup id="fnref:vhx"><a href="#fn:vhx" rel="footnote">2</a></sup> named "think" to it, and make that the home URL for my Fluid browser.</p>

<p>Click the icon image above to get the full version (or right click and save the linked file). In the general preferences for a Fluid ThinkUp <abbr title="Single Site Browser">SSB</abbr>, just use the "Change" button under "Application Icon" and select the 'png' file you downloaded.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:fluid">
<p>You've heard of Fluid, right? If you regularly use web apps such as Facebook, GMail, Google Reader or <em>any</em> web-based site, you need this. The best part of the registered version is separate cookies, which is extremely useful if you have, say, multiple Google accounts. <a href="http://fluidapp.com/">Just get it!</a>&#160;<a href="#fnref:fluid" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:vhx">
<p>By the way, managing virtual hosts is way more fun with <a href="http://clickontyler.com/virtualhostx/">VirtualHostX</a>. If you do local development or run local websites, I highly recommend it.&#160;<a href="#fnref:vhx" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/a-cleaner-hootsuite-icon-for-fluidprism/' rel='bookmark' title='A cleaner HootSuite icon for Fluid/Prism'>A cleaner HootSuite icon for Fluid/Prism</a></li>
<li><a href='http://brettterpstra.com/minor-update-to-instapaper-beyond-1-4/' rel='bookmark' title='Minor update to Instapaper Beyond (1.4)'>Minor update to Instapaper Beyond (1.4)</a></li>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/' rel='bookmark' title='Grabbing a Mac app’s icon: building blocks'>Grabbing a Mac app’s icon: building blocks</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/a-fluid-icon-for-thinkup/">A Fluid icon for ThinkUp</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QBQgAcQusaA:-io7Uzdo5mw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QBQgAcQusaA:-io7Uzdo5mw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QBQgAcQusaA:-io7Uzdo5mw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QBQgAcQusaA:-io7Uzdo5mw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QBQgAcQusaA:-io7Uzdo5mw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QBQgAcQusaA:-io7Uzdo5mw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QBQgAcQusaA:-io7Uzdo5mw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QBQgAcQusaA:-io7Uzdo5mw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QBQgAcQusaA:-io7Uzdo5mw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QBQgAcQusaA:-io7Uzdo5mw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/QBQgAcQusaA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/a-fluid-icon-for-thinkup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/a-fluid-icon-for-thinkup/</feedburner:origLink></item>
		<item>
		<title>Auto-pairing for MarsEdit and TextEdit using TextExpander</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/6cu2M3r6dIU/</link>
		<comments>http://brettterpstra.com/auto-pairing-for-marsedit-and-textmate-using-textexpander/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:00:42 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[textexpander]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3674</guid>
		<description><![CDATA[<p>Chetan Kunte recently sent me a TextExpander experiment he was working on, and I thought I’d post it and my explorations of it. It’s designed to add auto-pairing for bracket and quote characters to MarsEdit, and it’s based on a bit of information that I hadn’t been aware of before. The basis for the script is the fact that–little to&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/auto-pairing-for-marsedit-and-textmate-using-textexpander/">Auto-pairing for MarsEdit and TextEdit using TextExpander</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/TextExpanderBracketed.jpg?9d7bd4" alt="TextExpander Auto-Pairing" title="TextExpander Bracketed" width="250" height="232" class="alignright size-full wp-image-3675" />Chetan Kunte recently sent me <a href="http://log.ckunte.net/post/17868016173/char-pair-marsedit">a TextExpander experiment</a> he was working on, and I thought I’d post it and my explorations of it. It’s designed to add auto-pairing for bracket and quote characters to MarsEdit, and it’s based on a bit of information that I hadn’t been aware of before.</p>

<p>The basis for the script is the fact that–little to my knowledge–TextExpander traps a delimiter sequence and leaves the selection in place while it expands it. This means that if your shell/AppleScript snippet wants to access the selected text after a single-character trigger, it can. It doesn’t store this information within TextExpander, so it takes some AppleScript shenanigans to get the selection from any given program. This is hugely frustrating because “selected text” is handled differently in almost every app, leading to a thousand permutations if you want a universally-capable snippet. However, it works, and the solution that Chetan came up with is a great start on this.</p>

<p><span id="more-3674"></span></p>

<p>The experiment also makes use of a trick I learned from <a href="http://joeworkman.net/">Joe Workman</a> which allows you to call a “library” shell snippet within other snippets to create a “require” statement and reuse code within other snippets. In this case, it’s calling an AppleScript to get the selection from MarsEdit and insert it between characters. If there’s no selection, you get paired characters.</p>

<p>Chetan’s first version is <a href="https://github.com/ckunte/Character-pair-autocompletion">available on github</a>. My first addition to this script was to add a “%|” cursor placement so that your cursor was between the paired characters after expansion. I also added a block to check the frontmost app and allow the script to be expanded to any AppleScript-able application. TextEdit is the only additional app I’ve worked out so far. My version is available as a <a href="https://github.com/ttscoff/Character-pair-autocompletion">fork of Chetan’s</a> on github. You can download or subscribe to it using <a href="https://raw.github.com/ttscoff/Character-pair-autocompletion/master/character-pair-autocomplete.textexpander">the raw version of the TextExpander group</a>. Set up the group so that it only expands in the applications you have scripted for; by default this is just MarsEdit and TextEdit. The application-specific settings are available when you select the group’s folder icon after installing it in TextExpander.</p>

<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/charpairscreenshot.jpg?9d7bd4" alt="Screenshot of the Auto Pair group in TextExpander" title="TextExpander screenshot" width="366" height="209" class="shadow alignright size-full wp-image-3677" />As you can see in the screenshot to the right, the group consists of one AppleScript for gathering the selection (load the TextExpander group to see the actual script), and a series of plain text snippets that call the AppleScript snippet using the <code>%snippet:triggername%</code> syntax. In mine (shown), the <code>%|</code> places the cursor before the right character of the pair after expansion. Each snippet is triggered with the left character; in the case of square brackets, you would select text and type <code>[</code>. If no text is selected, you’ll just get “[]”, otherwise your selection will be wrapped in square brackets.</p>

<p>Then I went down a rabbit hole… I really wanted more intelligent pairing so that it wouldn’t pair if there was a character to the right, and would skip a character right if the adjacent character was already a quote. TextMate style. This proved to be nearly impossible, but you can find my experiments in this area in a <a href="https://github.com/ttscoff/Character-pair-autocompletion/tree/scripted">branch off my main repo</a>. The biggest issue is that I can’t control cursor placement from an AppleScript snippet. I could probably rewrite the whole thing to include a repeat AppleScript for each set of pairing characters, then call them from another set of plain text snippets, but I pulled myself out of the hole before I got too invested in it. If anyone finds a solution before I dive back in, I’d love to see it!</p>

<p>I’m not adding these to the TextExpander Tools project at this point, but feel free to download, play with, fork and make pull requests on <a href="https://github.com/ckunte/Character-pair-autocompletion">Chetan’s</a> and <a href="https://github.com/ttscoff/Character-pair-autocompletion">my repos</a>.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/additional-characters-for-textexpander/' rel='bookmark' title='Additional Characters for TextExpander'>Additional Characters for TextExpander</a></li>
<li><a href='http://brettterpstra.com/textexpander-tools-for-applescript-editing/' rel='bookmark' title='TextExpander tools for AppleScript editing'>TextExpander tools for AppleScript editing</a></li>
<li><a href='http://brettterpstra.com/placeholder-image-textmate-snippet/' rel='bookmark' title='Placeholder image TextMate Snippet'>Placeholder image TextMate Snippet</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/auto-pairing-for-marsedit-and-textmate-using-textexpander/">Auto-pairing for MarsEdit and TextEdit using TextExpander</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=6cu2M3r6dIU:1tLix3kqo3M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=6cu2M3r6dIU:1tLix3kqo3M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=6cu2M3r6dIU:1tLix3kqo3M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=6cu2M3r6dIU:1tLix3kqo3M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=6cu2M3r6dIU:1tLix3kqo3M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=6cu2M3r6dIU:1tLix3kqo3M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=6cu2M3r6dIU:1tLix3kqo3M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=6cu2M3r6dIU:1tLix3kqo3M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=6cu2M3r6dIU:1tLix3kqo3M:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=6cu2M3r6dIU:1tLix3kqo3M:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/6cu2M3r6dIU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/auto-pairing-for-marsedit-and-textmate-using-textexpander/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/auto-pairing-for-marsedit-and-textmate-using-textexpander/</feedburner:origLink></item>
		<item>
		<title>TextExpander tools for AppleScript editing</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/-TDi9iUHfAE/</link>
		<comments>http://brettterpstra.com/textexpander-tools-for-applescript-editing/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 18:21:30 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[textexpander]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3666</guid>
		<description><![CDATA[<p>I added a new group to the TextExpander Tools collection this morning: a set of snippets for working in AppleScript editor. The group is pretty barebones right now, but handy nonetheless. Feel free to submit any additions or expansions you come up with, I’ll gladly include them in the set (and credit you publicly). I was actually working on a&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/textexpander-tools-for-applescript-editing/">TextExpander tools for AppleScript editing</a></p>]]></description>
			<content:encoded><![CDATA[<p>I added a new group to the <a href="http://brettterpstra.com/project/textexpander-tools/">TextExpander Tools</a> collection this morning: a set of snippets for working in AppleScript editor. The group is pretty barebones right now, but handy nonetheless. Feel free to submit any additions or expansions you come up with, I’ll gladly include them in the set (and credit you publicly).</p>

<p>I was actually working on a more complex set of snippets involving some AppleScripting when I decided to build a few of these. I’ll try to post the results of that later today.</p>

<p>The snippets cover basic syntax for <code>if</code>, <code>tell</code>, <code>repeat</code> and setting variables and properties. For <code>if</code> and <code>tell</code>, following the trigger (“if” or “tell”) with a space will create a one-liner and reposition your cursor, following immediately with minus symbol (<code>-</code>) will create a block with an end block and put your cursor back in position for continuing the statement. <code>s=</code> and <code>p=</code> will use the Fill dialog to create <code>set</code> statements and <code>property</code> declarations, respectively.</p>

<p>You can pick up the group using the <a href="http://brettterpstra.com/share/te-snippets/index.php?group=AppleScript%20Editor&amp;prefix=">te-snippets tool</a>, which will allow you to download directly or give you a url you can subscribe to in TextExpander to automatically get updates as the group grows.</p>

<p><strong>Addendum:</strong> If it doesn’t come through in the <code>.textexpander</code> file, I should mention that I have the group set up in TextExpander to expand “Only in…” AppleScript Editor. Just select the group in the TextExpander window and set “Expand in:” as needed.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/markdown-snippets-for-textexpander-on-ios/' rel='bookmark' title='Markdown snippets for TextExpander touch'>Markdown snippets for TextExpander touch</a></li>
<li><a href='http://brettterpstra.com/new-textexpander-downloads-with-custom-prefixes/' rel='bookmark' title='New: TextExpander downloads with custom prefixes'>New: TextExpander downloads with custom prefixes</a></li>
<li><a href='http://brettterpstra.com/additional-characters-for-textexpander/' rel='bookmark' title='Additional Characters for TextExpander'>Additional Characters for TextExpander</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/textexpander-tools-for-applescript-editing/">TextExpander tools for AppleScript editing</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=-TDi9iUHfAE:5O_tIksXyyk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=-TDi9iUHfAE:5O_tIksXyyk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=-TDi9iUHfAE:5O_tIksXyyk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=-TDi9iUHfAE:5O_tIksXyyk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=-TDi9iUHfAE:5O_tIksXyyk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=-TDi9iUHfAE:5O_tIksXyyk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=-TDi9iUHfAE:5O_tIksXyyk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=-TDi9iUHfAE:5O_tIksXyyk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=-TDi9iUHfAE:5O_tIksXyyk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=-TDi9iUHfAE:5O_tIksXyyk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/-TDi9iUHfAE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/textexpander-tools-for-applescript-editing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/textexpander-tools-for-applescript-editing/</feedburner:origLink></item>
		<item>
		<title>Unbelievable fortune</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/XDQGijHSd08/</link>
		<comments>http://brettterpstra.com/unbelievable-fortune/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 15:31:44 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Write]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3660</guid>
		<description><![CDATA[<p>The simple I understand why my scalp has never forgiven me for the things I did to it in my teens and twenties. I understand why my body has never forgiven me for the things I put in it when I was young. I understand why my future took so long to start. I understand and accept these things without&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/unbelievable-fortune/">Unbelievable fortune</a></p>]]></description>
			<content:encoded><![CDATA[<h3>The simple</h3>

<p>I understand why my scalp has never forgiven me for the things I did to it in my teens and twenties.</p>

<p>I understand why my body has never forgiven me for the things I put in it when I was young.</p>

<p>I understand why my future took so long to start.</p>

<p><em>I understand and accept these things without question.</em></p>

<h3>The unbelievable</h3>

<p>I can not comprehend why my ex-girlfriends from my twenties have forgiven me.</p>

<p>I cannot believe my wife puts up with me.</p>

<p>I don’t understand how or why I’ve survived the things I have.</p>

<p>I can’t believe my parents were supportive through the worst of it.</p>

<p><em>I do not understand or comprehend these things, but I am thankful for them every day.</em></p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/pescatarianism-and-changing-views/' rel='bookmark' title='Pescatarianism and changing views'>Pescatarianism and changing views</a></li>
<li><a href='http://brettterpstra.com/blue-bags-new-song-with-33-more%c2%a0metaphor/' rel='bookmark' title='Blue Bags: new song with 33% more metaphor'>Blue Bags: new song with 33% more metaphor</a></li>
<li><a href='http://brettterpstra.com/natural-language-dates-for-textexpander/' rel='bookmark' title='Natural language dates for TextExpander'>Natural language dates for TextExpander</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/unbelievable-fortune/">Unbelievable fortune</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=XDQGijHSd08:WEFe5bkYFu8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=XDQGijHSd08:WEFe5bkYFu8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=XDQGijHSd08:WEFe5bkYFu8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=XDQGijHSd08:WEFe5bkYFu8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=XDQGijHSd08:WEFe5bkYFu8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=XDQGijHSd08:WEFe5bkYFu8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=XDQGijHSd08:WEFe5bkYFu8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=XDQGijHSd08:WEFe5bkYFu8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=XDQGijHSd08:WEFe5bkYFu8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=XDQGijHSd08:WEFe5bkYFu8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/XDQGijHSd08" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/unbelievable-fortune/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/unbelievable-fortune/</feedburner:origLink></item>
		<item>
		<title>Unwrap Paragraphs for the Markdown Service Tools</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/a4i_V6FbXOo/</link>
		<comments>http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 15:38:43 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[markdownservices]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[System Service]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3656</guid>
		<description><![CDATA[<p>Inspired by a Twitter request this morning, I’ve updated the Markdown Service Tools to version 1.3.1 to include an experimental version of a new service: Unwrap Paragraphs. Opposite from the “Preserve line breaks” service, this one will look for consecutive lines and merge them together into one paragraph. It handles hyphenated words and won’t mess up em/en dashes in Markdown&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/">Unwrap Paragraphs for the Markdown Service Tools</a></p>]]></description>
			<content:encoded><![CDATA[<p>Inspired by a Twitter request this morning, I’ve updated the Markdown Service Tools to version 1.3.1 to include an experimental version of a new service: Unwrap Paragraphs.</p>

<p>Opposite from the “Preserve line breaks” service, this one will look for consecutive lines and merge them together into one paragraph. It handles hyphenated words and won’t mess up em/en dashes in Markdown style (<code>--</code> or <code>---</code>). If there’s a newline between two lines, it assumes it’s a new paragraph and treats it as such.</p>

<p><strong>Note:</strong> this <em>does</em> currently unwrap list items and code blocks as well. It should be used selectively on paragraph text. I’ll eventually put in the time to come up with a regular expression that will avoid this.</p>

<p>Version 1.3.1 is available on the <a href="http://brettterpstra.com/project/markdown-service-tools/">Markdown Service Tools project page</a>. Somebody <a href="https://twitter.com/lucianofuentes/status/169379718062288896">owes me a box of Aussie Tim Tams</a>.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/' rel='bookmark' title='Markdown Service Tools get blockquotes, self-links and more'>Markdown Service Tools get blockquotes, self-links and more</a></li>
<li><a href='http://brettterpstra.com/some-chrome-love-for-the-markdown-service-tools/' rel='bookmark' title='Some Chrome love for the Markdown Service Tools'>Some Chrome love for the Markdown Service Tools</a></li>
<li><a href='http://brettterpstra.com/markdown-service-tools-1-3/' rel='bookmark' title='Markdown Service Tools 1.3'>Markdown Service Tools 1.3</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/">Unwrap Paragraphs for the Markdown Service Tools</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=a4i_V6FbXOo:ZczTun945xw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=a4i_V6FbXOo:ZczTun945xw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=a4i_V6FbXOo:ZczTun945xw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=a4i_V6FbXOo:ZczTun945xw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=a4i_V6FbXOo:ZczTun945xw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=a4i_V6FbXOo:ZczTun945xw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=a4i_V6FbXOo:ZczTun945xw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=a4i_V6FbXOo:ZczTun945xw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=a4i_V6FbXOo:ZczTun945xw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=a4i_V6FbXOo:ZczTun945xw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/a4i_V6FbXOo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/</feedburner:origLink></item>
		<item>
		<title>Markdown Service Tools 1.3</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/2srqIyq8Zj0/</link>
		<comments>http://brettterpstra.com/markdown-service-tools-1-3/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 21:00:50 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[markdownservices]]></category>
		<category><![CDATA[service]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3651</guid>
		<description><![CDATA[<p>I updated the Markdown Service Tools today to include some recently-developed services and some revisions to existing services. Notably, Force Line Breaks has become Preserve Line Breaks, a slightly more elegant service for getting github-style linebreaks in your documents. If you have a block of text with hard returns in it… this is a line this is a line following&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/markdown-service-tools-1-3/">Markdown Service Tools 1.3</a></p>]]></description>
			<content:encoded><![CDATA[<p>I updated the <a href="http://brettterpstra.com/project/markdown-service-tools/">Markdown Service Tools</a> today to include some recently-developed services and some revisions to existing services.</p>

<p>Notably, <strong>Force Line Breaks</strong> has become <strong>Preserve Line Breaks</strong>, a slightly more elegant service for getting github-style linebreaks in your documents. If you have a block of text with hard returns in it…</p>

<pre><code>this is a line
this is a line following a hard return
</code></pre>

<p>(Multi)Markdown will generally concatenate those into a single paragraph. This service looks for these and adds the two spaces at the end of the line required to convert it into a <code>&lt;br&gt;</code> and preserve your formatting.</p>

<p><strong>Lucky Link</strong> is now <strong>Auto-link web search</strong>, the same idea but it functions a little better. Select some text and run it to get a Markdown link to the top result from a web search for that text.</p>

<p>There are a couple of inclusions, such as cleanup scripts for tables and lists, and minor revisions for other commands. Download it from the <a href="http://brettterpstra.com/project/markdown-service-tools/">Markdown Services project page</a>.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/markdown-service-tools-get-blockquotes-self-links-and-more/' rel='bookmark' title='Markdown Service Tools get blockquotes, self-links and more'>Markdown Service Tools get blockquotes, self-links and more</a></li>
<li><a href='http://brettterpstra.com/some-chrome-love-for-the-markdown-service-tools/' rel='bookmark' title='Some Chrome love for the Markdown Service Tools'>Some Chrome love for the Markdown Service Tools</a></li>
<li><a href='http://brettterpstra.com/unwrap-paragraphs-for-the-markdown-service-tools/' rel='bookmark' title='Unwrap Paragraphs for the Markdown Service Tools'>Unwrap Paragraphs for the Markdown Service Tools</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/markdown-service-tools-1-3/">Markdown Service Tools 1.3</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=2srqIyq8Zj0:Tbl8TX3VMqI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=2srqIyq8Zj0:Tbl8TX3VMqI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=2srqIyq8Zj0:Tbl8TX3VMqI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=2srqIyq8Zj0:Tbl8TX3VMqI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=2srqIyq8Zj0:Tbl8TX3VMqI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=2srqIyq8Zj0:Tbl8TX3VMqI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=2srqIyq8Zj0:Tbl8TX3VMqI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=2srqIyq8Zj0:Tbl8TX3VMqI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=2srqIyq8Zj0:Tbl8TX3VMqI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=2srqIyq8Zj0:Tbl8TX3VMqI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/2srqIyq8Zj0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/markdown-service-tools-1-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/markdown-service-tools-1-3/</feedburner:origLink></item>
		<item>
		<title>The Bro Show 94</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/QJbugBj326o/</link>
		<comments>http://brettterpstra.com/the-bro-show-94/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 01:47:26 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[podcast]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3634</guid>
		<description><![CDATA[<p>I had a great time today with Myke and Terry on The Bro Show. We talked about Macworld, some of my current projects, and a lot of things that I don’t know as much as I probably should about. Have a listen! Related posts: Quick Link: Bro Show #85 Notational Velocity update breaks nvALT Downtime apology and upcoming projects</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/the-bro-show-94/">The Bro Show 94</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/broshowlogo.jpg?9d7bd4" alt="" title="broshowlogo" width="159" height="159" class="alignright size-full wp-image-3636" />I had a great time today with Myke and Terry on <a href="http://www.70decibels.com/thebroshow/">The Bro Show</a>. We talked about Macworld, some of my current projects, and a lot of things that I don’t know as much as I probably should about. <a href="http://www.70decibels.com/thebroshow/2012/2/8/episode-94-phablet.html">Have a listen</a>!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/quick-link-bro-show-85/' rel='bookmark' title='Quick Link: Bro Show #85'>Quick Link: Bro Show #85</a></li>
<li><a href='http://brettterpstra.com/notational-velocity-update-breaks-nvalt/' rel='bookmark' title='Notational Velocity update breaks nvALT'>Notational Velocity update breaks nvALT</a></li>
<li><a href='http://brettterpstra.com/downtime-apology-and-upcoming-projects/' rel='bookmark' title='Downtime apology and upcoming projects'>Downtime apology and upcoming projects</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/the-bro-show-94/">The Bro Show 94</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QJbugBj326o:3H2JDHKcK5M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QJbugBj326o:3H2JDHKcK5M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QJbugBj326o:3H2JDHKcK5M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QJbugBj326o:3H2JDHKcK5M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QJbugBj326o:3H2JDHKcK5M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QJbugBj326o:3H2JDHKcK5M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QJbugBj326o:3H2JDHKcK5M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QJbugBj326o:3H2JDHKcK5M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=QJbugBj326o:3H2JDHKcK5M:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=QJbugBj326o:3H2JDHKcK5M:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/QJbugBj326o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/the-bro-show-94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/the-bro-show-94/</feedburner:origLink></item>
		<item>
		<title>Fountain is released, works with Marked!</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/yiDSXNDV3D0/</link>
		<comments>http://brettterpstra.com/fountain-is-released-works-with-marked/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 01:39:29 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[fountain]]></category>
		<category><![CDATA[marked]]></category>
		<category><![CDATA[spmd]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3629</guid>
		<description><![CDATA[<p>The next evolution of Screenplay Markdown (SPMD) is out, now part of a project called Fountain. It’s quite the collaborative effort: Fountain comes from several sources. John August and Nima Yousefi developed Scrippets, which used simple markup to embed screenplay-formatted material in websites. Stu Maschwitz drafted a more extensive spec known as Screenplay Markdown or SPMD, designed for full-length screenplays.&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/fountain-is-released-works-with-marked/">Fountain is released, works with Marked!</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/fountainicon-rounded.jpg?9d7bd4" alt="" title="fountainicon-rounded" width="211" height="303" class="alignright size-full wp-image-3631" />The next evolution of Screenplay Markdown (SPMD) is out, now part of a project called <a href="http://fountain.io/">Fountain</a>. It’s quite the collaborative effort:</p>

<blockquote>
  <p>Fountain comes from several sources. John August and Nima Yousefi developed Scrippets, which used simple markup to embed screenplay-formatted material in websites. Stu Maschwitz drafted a more extensive spec known as Screenplay Markdown or SPMD, designed for full-length screenplays.</p>
  
  <p>Stu and John discovered that they were simultaneously working on similar text-based screenplay formats, and merged them into what you see here. Other contributors to the spec include Martin Vilcans, Brett Terpstra, Jonathan Poritsky, Kent Tessman, and Clinton Torres.</p>
</blockquote>

<p>As did its predecessor, Fountain works great with <a href="http://markedapp.com">Marked</a>, thanks to hard work by <a href="http://www.librador.com/">Martin Vilcans</a> (screenplain) and <a href="http://www.candlerblog.com/">Jonathan Poritsky</a>. Check it out on the <a href="http://www.candlerblog.com/2012/02/08/fountain-for-marked/">Candler blog</a>.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/calling-screenwriter-nerds/' rel='bookmark' title='Calling screenwriter nerds'>Calling screenwriter nerds</a></li>
<li><a href='http://brettterpstra.com/taking-the-markdown-to-evernote-service-further/' rel='bookmark' title='Taking the Markdown to Evernote service further'>Taking the Markdown to Evernote service further</a></li>
<li><a href='http://brettterpstra.com/marked-1-3-released-plus-5-free-copies/' rel='bookmark' title='Marked 1.3 released, plus 5 free copies!'>Marked 1.3 released, plus 5 free copies!</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/fountain-is-released-works-with-marked/">Fountain is released, works with Marked!</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=yiDSXNDV3D0:bk43-u__f8s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=yiDSXNDV3D0:bk43-u__f8s:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=yiDSXNDV3D0:bk43-u__f8s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=yiDSXNDV3D0:bk43-u__f8s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=yiDSXNDV3D0:bk43-u__f8s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=yiDSXNDV3D0:bk43-u__f8s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=yiDSXNDV3D0:bk43-u__f8s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=yiDSXNDV3D0:bk43-u__f8s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=yiDSXNDV3D0:bk43-u__f8s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=yiDSXNDV3D0:bk43-u__f8s:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/yiDSXNDV3D0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/fountain-is-released-works-with-marked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/fountain-is-released-works-with-marked/</feedburner:origLink></item>
		<item>
		<title>Introducing Gather, a Cocoa Markdownifier</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/0_x64Whs35w/</link>
		<comments>http://brettterpstra.com/introducing-gather-a-cocoa-markdownifier/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 02:43:36 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3619</guid>
		<description><![CDATA[<p>I wrote something a couple of nights ago that I thought I’d share. I’m calling it “Gather,” and it’s basically an “appified” version of my Readability/Markdownify work. A Cocoa version of Marky the Markdownifier, if you will. You can paste in a URL and it will attempt to find the core text of the page, download it and turn it&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/introducing-gather-a-cocoa-markdownifier/">Introducing Gather, a Cocoa Markdownifier</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/GatherNew250.png?9d7bd4" alt="" title="GatherNew250" width="250" height="250" class="alignright size-full wp-image-3624" />I wrote something a couple of nights ago that I thought I’d share. I’m calling it “Gather,” and it’s basically an “appified” version of my <a href="http://brettterpstra.com/scripting-readability-markdownify-for-clipping-web-pages/">Readability/Markdownify</a> work. A Cocoa version of <a href="http://markdownrules.com/">Marky the Markdownifier</a>, if you will. You can paste in a URL and it will attempt to find the core text of the page, download it and turn it into Markdown for clean web clipping. It displays the result in a field you can copy from, and it can optionally auto-copy the result to your clipboard.</p>

<p>It’s a little shaky, especially on sites with bad markup. I’d say that right now it has about a 60% success rate. As I have time to work on it I’ll be improving this and adding a bevy of features that may eventually become an App Store submission. We’ll see. This proof-of-concept version<sup id="fnref:icon"><a href="#fn:icon" rel="footnote">1</a></sup>, however, is free to download. I’ll ask nicely that you please not steal the idea and <a href="http://www.youtube.com/watch?v=PyupJo5SRHI&amp;feature=related">beat me to the punch</a>.</p>

<p>This build is Lion-only; it won’t run at all on Snow Leopard. I’m not really taking any feature suggestions right now, as I already have an extensive roadmap for it that will turn it into something highly useful in many situations (and I’m quite aware of what it lacks in this state). I <em>would</em> enjoy hearing from you with your reactions, though.</p>

<h3>Credit due</h3>

<p>This version uses <a href="https://github.com/curthard89/COCOA-Stuff/tree/master/GGReadabilityParser">GGReadability</a> by Curtis Hard. You should definitely check out his work-in-progress app, <a href="http://www.geekygoodness.com/">Caffeinated</a>. It’s an RSS reader with Google Reader support and some serious potential. I’m also using <a href="http://www.aaronsw.com/2002/html2text/">HTML2Text</a> for “markdownifying.”</p>

<p>Enjoy.</p>

<h3>Download</h3>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/Gather0.1.zip?9d7bd4" title="Download Gather (292)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2012/02/GatherNew250.png?9d7bd4" alt="download image for Gather" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/Gather0.1.zip?9d7bd4" title="Download Gather (292)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/Gather0.1.zip?9d7bd4" title="Download Gather (292)">Gather</a> — Turn web pages into clean Markdown for clipping. <a href="http://brettterpstra.com/introducing-gather-a-cocoa-markdownifier">More Info</a></p></div>

<div class="footnotes">
<hr />
<ol>

<li id="fn:icon">
<p>I know the icon is pretty terrible. I liked my <a href="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/GatheredOriginal.png?9d7bd4">first version</a> when it was in Photoshop, but it looked horrible in the Dock. It’ll get better. <a href="#fnref:icon" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/introducing-the-marked-bonus-pack/' rel='bookmark' title='Introducing the Marked Bonus Pack'>Introducing the Marked Bonus Pack</a></li>
<li><a href='http://brettterpstra.com/meet-marky-the-markdownifier/' rel='bookmark' title='Meet Marky, the Markdownifier'>Meet Marky, the Markdownifier</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-bugs/' rel='bookmark' title='Instapaper Beyond Bugs (fixed)'>Instapaper Beyond Bugs (fixed)</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/introducing-gather-a-cocoa-markdownifier/">Introducing Gather, a Cocoa Markdownifier</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0_x64Whs35w:0eOSscNJ86A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0_x64Whs35w:0eOSscNJ86A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0_x64Whs35w:0eOSscNJ86A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0_x64Whs35w:0eOSscNJ86A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0_x64Whs35w:0eOSscNJ86A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0_x64Whs35w:0eOSscNJ86A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0_x64Whs35w:0eOSscNJ86A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0_x64Whs35w:0eOSscNJ86A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=0_x64Whs35w:0eOSscNJ86A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=0_x64Whs35w:0eOSscNJ86A:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/0_x64Whs35w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/introducing-gather-a-cocoa-markdownifier/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/introducing-gather-a-cocoa-markdownifier/</feedburner:origLink></item>
		<item>
		<title>Connecting nvALT and Address Book</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/mFCvCBxJ130/</link>
		<comments>http://brettterpstra.com/connecting-nvalt-and-address-book/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 03:11:46 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[nvalt]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3615</guid>
		<description><![CDATA[<p>Here's a quick, simple AppleScript to help you hook Notational Velocity/nvALT into Address Book. I sometimes want to attach a note or list of links to an entry in my address book, but I don't like using the notes field. I tend to keep all of my notes1 in nvALT, and I prefer not to scatter them too far. All&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/connecting-nvalt-and-address-book/">Connecting nvALT and Address Book</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/02/Johnny-Appleseed.jpg?9d7bd4" alt="" title="Johnny Appleseed" width="300" height="199" class="alignright size-full wp-image-3616" />Here's a quick, simple AppleScript to help you hook <a href="http://notational.net/">Notational Velocity</a>/<a href="http://brettterpstra.com/project/nvalt/">nvALT</a> into Address Book. I sometimes want to attach a note or list of links to an entry in my address book, but I don't like using the notes field. I tend to keep <em>all</em> of my notes<sup id="fnref:diff"><a href="#fn:diff" rel="footnote">1</a></sup> in nvALT, and I prefer not to scatter them too far. All I needed was a way to quickly create and link an nvALT note to each address...</p>

<p>As of recent versions, Notational Velocity and nvALT have a URL handler for nv:// (or nvalt://). Using the <code>/find/</code> parameter allows you to initiate a search in NV from a link, e.g. <code>nv://find/abnote%3AJohnny Appleseed</code>. If you use a unique prefix and full name, you can pinpoint a single note without having to create a file or locate the note's ID. The first time you click the link, it will open a search in NV, and pressing Return will create the note and begin editing. Once the note is there, it will locate it instantly the next time you click the link.</p>

<p>I'm using the prefix "abnote:" on my notes. This AppleScript will create the URL entry automatically from the selected entries' first and last names, and you can edit the prefix in the script to be anything you like. Just save it as "Add NV Note.scpt" in <code>~/Library/Scripts/Applications/Address Book</code> and it will show up in your script menu<sup id="fnref:menu"><a href="#fn:menu" rel="footnote">2</a></sup> when you're in Address Book. You can run it on a bunch of entries (it's not optimized to run on an entire large address book, though), or one at a time as you need it.</p>

<p>I wrote this on Lion. I honestly have no idea if it works on anything earlier. It might<sup id="fnref:might"><a href="#fn:might" rel="footnote">3</a></sup>.</p>

<h2>The script</h2>


<div class="wp_syntax"><div class="code"><pre class="applescript"><span class="kw3">tell</span> <span class="kw1">application</span> <span class="st0">&quot;Address Book&quot;</span>
	<span class="kw3">set</span> thePeople <span class="kw3">to</span> <span class="kw2">the</span> <span class="kw1">selection</span>
	<span class="kw3">repeat</span> <span class="kw3">with</span> thisPerson <span class="kw3">in</span> thePeople
		<span class="kw3">set</span> theName <span class="kw3">to</span> <span class="kw1">name</span> <span class="kw3">of</span> thisPerson <span class="kw2">as</span> <span class="kw1">string</span>
		<span class="kw1">make</span> <span class="kw1">new</span> url at <span class="kw3">end</span> <span class="kw3">of</span> urls <span class="kw3">of</span> thisPerson <span class="kw3">with</span> <span class="kw1">properties</span> <span class="br0">&#123;</span>label:<span class="st0">&quot;NV Note&quot;</span>, value:<span class="st0">&quot;nv://find/abnote%3A&quot;</span> <span class="sy0">&amp;</span> theName<span class="br0">&#125;</span>
	<span class="kw3">end</span> <span class="kw3">repeat</span>
	<span class="kw1">save</span>
<span class="kw3">end</span> <span class="kw3">tell</span></pre></div></div>


<div class="footnotes">
<hr />
<ol>

<li id="fn:diff">
<p>Notes, for me, are different from <a href="http://brettterpstra.com/logging-with-day-one-geek-style/">log entries</a>. I actually <em>like</em> keeping those separate most of the time.&#160;<a href="#fnref:diff" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:menu">
<p>Enabled in AppleScript Editor, Preferences->General->Show Script menu in menubar. Or better, use <a href="http://www.red-sweater.com/fastscripts/">FastScripts</a>.&#160;<a href="#fnref:menu" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:might">
<p>It might not.&#160;<a href="#fnref:might" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/address-book-search-and-skype-from-the-command-line/' rel='bookmark' title='Address Book search and Skype from the command line'>Address Book search and Skype from the command line</a></li>
<li><a href='http://brettterpstra.com/nvalt-2-1-in-the-wild/' rel='bookmark' title='nvALT 2.1 in the wild'>nvALT 2.1 in the wild</a></li>
<li><a href='http://brettterpstra.com/nvalt-1-0-8-progress/' rel='bookmark' title='nvALT 1.0.8 progress'>nvALT 1.0.8 progress</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/connecting-nvalt-and-address-book/">Connecting nvALT and Address Book</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=mFCvCBxJ130:Gza6M-QK5FI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=mFCvCBxJ130:Gza6M-QK5FI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=mFCvCBxJ130:Gza6M-QK5FI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=mFCvCBxJ130:Gza6M-QK5FI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=mFCvCBxJ130:Gza6M-QK5FI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=mFCvCBxJ130:Gza6M-QK5FI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=mFCvCBxJ130:Gza6M-QK5FI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=mFCvCBxJ130:Gza6M-QK5FI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=mFCvCBxJ130:Gza6M-QK5FI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=mFCvCBxJ130:Gza6M-QK5FI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/mFCvCBxJ130" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/connecting-nvalt-and-address-book/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/connecting-nvalt-and-address-book/</feedburner:origLink></item>
		<item>
		<title>ScrivWatcher, one more time</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/nHl4WlLgRvk/</link>
		<comments>http://brettterpstra.com/scrivwatcher-one-more-time/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 14:00:36 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3607</guid>
		<description><![CDATA[<p>I’ve updated ScrivWatcher (a utility for previewing compiled Scrivener documents live in Marked) to 1.5. This version has better error handling and a progress bar showing compile progress. It’s still a droplet, you just drop onto the progress bar window instead of a drop pad, or drop a ‘.scriv’ file directly onto the icon. For the command line savvy, the&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/scrivwatcher-one-more-time/">ScrivWatcher, one more time</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2012/01/ScrivWatcher-250.png?9d7bd4" alt="" title="ScrivWatcher-250" width="250" height="250" class="alignright size-full wp-image-3608" />I’ve updated ScrivWatcher (a utility for previewing compiled Scrivener documents live in Marked) to 1.5. This version has better error handling and a progress bar showing compile progress. It’s still a droplet, you just drop onto the progress bar window instead of a drop pad, or drop a ‘.scriv’ file directly onto the icon.</p>

<p>For the command line savvy, the <a href="https://gist.github.com/1676667">gist</a> has been updated as well. Run it with “-h” to see all of the options. There’s even a progress bar in the terminal (default setting).</p>

<p>The big news, though, is that I have this working within <a href="http://markedapp.com">Marked</a>. The next version will be able to accept dropped Scrivener projects and provide a compiled preview that updates with changes from Scrivener. No external application needed! That release should be ready relatively soon, I’m putting out a beta for testing this week.</p>

<p>For now, here’s the latest (and probably last) version of ScrivWatcher:</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/ScrivWatcher1.5.zip?9d7bd4" title="Download ScrivWatcher (252)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2012/01/ScrivWatcher-250.png?9d7bd4" alt="download image for ScrivWatcher" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/ScrivWatcher1.5.zip?9d7bd4" title="Download ScrivWatcher (252)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/ScrivWatcher1.5.zip?9d7bd4" title="Download ScrivWatcher (252)">ScrivWatcher</a> — Watch a Scrivener project and preview it in Marked by dragging the .scriv file to this droplet. <a href="http://brettterpstra.com/scrivwatcher-droplet-an-easier-live-scrivener-preview/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/scrivwatcher-droplet-an-easier-live-scrivener-preview/' rel='bookmark' title='ScrivWatcher droplet, an easier live Scrivener preview'>ScrivWatcher droplet, an easier live Scrivener preview</a></li>
<li><a href='http://brettterpstra.com/preview-a-full-scrivener-document-in-marked-live/' rel='bookmark' title='Preview a full Scrivener document in Marked, live'>Preview a full Scrivener document in Marked, live</a></li>
<li><a href='http://brettterpstra.com/the-second-marked-giveaway/' rel='bookmark' title='The second Marked giveaway!'>The second Marked giveaway!</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/scrivwatcher-one-more-time/">ScrivWatcher, one more time</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=nHl4WlLgRvk:_p22zvoRyKw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=nHl4WlLgRvk:_p22zvoRyKw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=nHl4WlLgRvk:_p22zvoRyKw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=nHl4WlLgRvk:_p22zvoRyKw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=nHl4WlLgRvk:_p22zvoRyKw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=nHl4WlLgRvk:_p22zvoRyKw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=nHl4WlLgRvk:_p22zvoRyKw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=nHl4WlLgRvk:_p22zvoRyKw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=nHl4WlLgRvk:_p22zvoRyKw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=nHl4WlLgRvk:_p22zvoRyKw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/nHl4WlLgRvk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/scrivwatcher-one-more-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/scrivwatcher-one-more-time/</feedburner:origLink></item>
		<item>
		<title>From my Macworld Diary</title>
		<link>http://feedproxy.google.com/~r/BrettTerpstra/~3/5ei9Dtz_Tc4/</link>
		<comments>http://brettterpstra.com/from-my-macworld-diary/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 02:12:15 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[macworld]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3598</guid>
		<description><![CDATA[<p>Dear Macworld Diary, My Tech Talk this morning, “40 Tips in 40 Minutes” with David Sparks and Merlin Mann went really well, I think. I had fun doing it, anyway. I put up some show notes at the soon-to-change 40tips.com, if you’re interested. I’m looking forward to seeing David and Merlin with Rob Corddry tomorrow. If you’re around Macworld, you&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/from-my-macworld-diary/">From my Macworld Diary</a></p>]]></description>
			<content:encoded><![CDATA[<p>Dear Macworld Diary,</p>

<p>My Tech Talk this morning, “40 Tips in 40 Minutes” with David Sparks and Merlin Mann went really well, I think. I had fun doing it, anyway. I put up some show notes at the soon-to-change <a href="http://40tips.com">40tips.com</a>, if you’re interested. I’m looking forward to seeing David and Merlin <a href="http://www.macworldiworld.com/techtalks/friday-overview/friday-agenda/#964">with Rob Corddry tomorrow</a>. If you’re around Macworld, you should probably get there early!</p>

<p>Lunch with <a href="http://shawnblanc.net/">Shawn Blanc</a>, <a href="http://512pixels.net/">Stephen Hackett</a>, <a href="http://nerdgap.com/">Brett Kelly</a>, <a href="http://brooksreview.net/">Ben Brooks</a>, and <a href="http://eggfreckles.net/">Thomas Brand</a> was awesome<sup id="fnref:nerds"><a href="#fn:nerds" rel="footnote">1</a></sup>. Great to meet so many cool people all at once.</p>

<p>I just got back from a clandestine meeting at the Samovar Tea Lounge (I love that place). I had tea. We had laughs. I was shown software. It was amazing. I will pimp the hell out of it when it comes out in the next couple of months. Until then, all I can say is just prepare to have core elements of your workflow change drastically, for the better. That’s the second game-changer I’ve been shown lately but can’t disclose yet. I will go insane if this keeps happening.</p>

<p>Also, if you <em>are</em> in San Francisco right now, swing down to Jillian’s tonight before 11pm and catch up with the TUAW crew. It’s going to be a good time. Low-key, good conversation, and probably drink tickets.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:nerds">
<p>Sorry, total nerd namedrop linkfest. Really fun bunch, though. <a href="#fnref:nerds" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/on-my-way-to-macworld-11/' rel='bookmark' title='On my way to Macworld ’11'>On my way to Macworld ’11</a></li>
<li><a href='http://brettterpstra.com/notational-velocity-alt-5-3/' rel='bookmark' title='Notational Velocity ALT 5.3'>Notational Velocity ALT 5.3</a></li>
<li><a href='http://brettterpstra.com/speaking-at-macworld/' rel='bookmark' title='Speaking at Macworld'>Speaking at Macworld</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/from-my-macworld-diary/">From my Macworld Diary</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=5ei9Dtz_Tc4:75ON6T-1IDA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=5ei9Dtz_Tc4:75ON6T-1IDA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=5ei9Dtz_Tc4:75ON6T-1IDA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=5ei9Dtz_Tc4:75ON6T-1IDA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=5ei9Dtz_Tc4:75ON6T-1IDA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=5ei9Dtz_Tc4:75ON6T-1IDA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=5ei9Dtz_Tc4:75ON6T-1IDA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=5ei9Dtz_Tc4:75ON6T-1IDA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BrettTerpstra?a=5ei9Dtz_Tc4:75ON6T-1IDA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BrettTerpstra?i=5ei9Dtz_Tc4:75ON6T-1IDA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BrettTerpstra/~4/5ei9Dtz_Tc4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/from-my-macworld-diary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brettterpstra.com/from-my-macworld-diary/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 57/223 queries in 0.919 seconds using xcache
Object Caching 4490/4667 objects using xcache
Content Delivery Network via cdn2.brettterpstra.com

Served from: brettterpstra.com @ 2012-02-24 09:00:32 -->

