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

<channel>
	<title>Brett Terpstrasafari - Brett Terpstra</title>
	<atom:link href="http://brettterpstra.com/tag/safari/feed/" rel="self" type="application/rss+xml" />
	<link>http://brettterpstra.com</link>
	<description>Elegant solutions to complex problems.</description>
	<lastBuildDate>Thu, 09 Feb 2012 15:01:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Antique is back, baby</title>
		<link>http://brettterpstra.com/antique-is-back-baby/</link>
		<comments>http://brettterpstra.com/antique-is-back-baby/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 17:56:48 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[antique]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2569</guid>
		<description><![CDATA[<p>Thanks to a pointer from Jeremy Lu, I’ve got the Antique Safari Reader hack running in Safari 5.1. I can’t begin to tell you how much I’d missed it since updating to Lion. I’ve updated the instructions page to include the Lion location of Reader.html. The file is now located at /System/Library/PrivateFrameworks/Safari.framework/Versions/A/Resources/Reader.html. A quick locate command would have told me&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/antique-is-back-baby/">Antique is back, baby</a></p>]]></description>
			<content:encoded><![CDATA[<p>Thanks to a pointer from Jeremy Lu, I’ve got the Antique Safari Reader hack running in Safari 5.1. I can’t begin to tell you how much I’d missed it since updating to Lion. I’ve updated the <a href="http://brettterpstra.com/howtos/install-a-safari-reader-hack/">instructions page</a> to include the Lion location of Reader.html.</p>

<p>The file is now located at <code>/System/Library/PrivateFrameworks/Safari.framework/Versions/A/Resources/Reader.html</code>. A quick <code>locate</code> command would have told me that, but I didn’t think to look outside of the application bundle for it. Thanks, Jeremy.</p>

<p>Antique is still at version 1.6, but I may do some updating now that it’s back in action. Download below.</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/Antique1.6.zip?9d7bd4" title="Download Antique 1.6 for Safari Reader (4517)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/11/safariiconantiqued.png?9d7bd4" alt="download image for Antique 1.6 for Safari Reader" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/Antique1.6.zip?9d7bd4" title="Download Antique 1.6 for Safari Reader (4517)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/Antique1.6.zip?9d7bd4" title="Download Antique 1.6 for Safari Reader (4517)">Antique 1.6 for Safari Reader</a> — Version 1.6 of the Antique hack for Safari 5. Adds pleasant styling to Reader, with many additional features. <a href="http://brettterpstra.com/2010/06/17/antique-1-6-final-release/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/antique-on-pimpmysafari-com/' rel='bookmark' title='Antique on PimpMySafari.com'>Antique on PimpMySafari.com</a></li>
<li><a href='http://brettterpstra.com/antique-safari-reader-hack-update-with-evernote-goodness/' rel='bookmark' title='Antique Safari Reader hack update with Evernote goodness'>Antique Safari Reader hack update with Evernote goodness</a></li>
<li><a href='http://brettterpstra.com/antique-1-6-final-release/' rel='bookmark' title='Antique 1.6, final release'>Antique 1.6, final release</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/antique-is-back-baby/">Antique is back, baby</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/antique-is-back-baby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Duplicating Safari browsing sessions between Macs</title>
		<link>http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/</link>
		<comments>http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/#comments</comments>
		<pubDate>Tue, 03 May 2011 22:30:09 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2302</guid>
		<description><![CDATA[<p>Hey, you’re just in time for another “stupid trick of the day” script. I have good reason for this one, and it only took me about 8 minutes to set up. It will take me longer to write about it than it’s probably worth, but it might be of use to anyone in a similar situation. Here’s the scenario: I&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/">Duplicating Safari browsing sessions between Macs</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hey, you’re just in time for another “stupid trick of the day” script. I have good reason for this one, and it only took me about 8 minutes to set up. It will take me longer to write about it than it’s probably worth, but it might be of use to anyone in a similar situation. Here’s the scenario:</p>

<p>I bought a MacBook Air recently. I have never been this happy with an Apple hardware purchase before. Not to gush, but I’ve bought and loved a lot of Macs and this one takes the cake. I’m doing more and more of my everyday work and writing on it, but I still like to sit down at the dual-monitor setup of my Mac Pro fairly regularly. When I do that, the Air becomes an auxiliary machine and I offload most of my chat and social apps to it. The annoying side of this setup is that I end up with Safari tabs piling up on both Macs, and half of them really make more sense on the other machine.</p>

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

<p>I wrote a pair of scripts that execute over SSH to pull in all of the browser tabs from the front window of Safari on the other Mac into new tabs on the one calling the script. They’re designed to run on Macs on the same network, though they’d work remotely if you could think of a reason to do it. I run it in both directions, and call it with a simple <code>do shell script</code> AppleScript in <code>~/Library/Scripts/Applications/Safari</code> so it’s in my menubar when I’m browsing.</p>

<p>Just a few prerequisites:</p>

<ol>
<li>You need keyless ssh set up between the two (or more) Macs. If you want a two-way sync, you need keys in both directions. <a href="http://www.rootsilver.com/2007/10/keyless-ssh-sshkeygen-setup-an">This article has everything you need</a>.</li>
<li>To keep things simple, set up a <code>~/.ssh/config</code> file on each machine you want to pull tabs to. Create the file if you don’t have one, or add this at the bottom of an existing one, modifying it for your setup:</li>
</ol>

<pre><code>
host air
  HostName computername.local
  User remoteusername
</code></pre>

<p>Now you can just install the scripts, edit one line on each and start pulling tabs back and forth between computers.</p>

<h3>remotetabs.rb</h3>

<p>This goes on the machine you want to pull <em>from</em>. If you’re going both directions, you’ll want both scripts on both machines. Easy enough, right? Save this one as <code>remotetabs.rb</code> in <code>~/scripts/</code> and run <code>chmod a+x ~/scripts/remotetabs.rb</code>. Note that it doesn’t attempt to do any error reporting, it just fails silently or times out if there’s a problem. You’ll know something went wrong, you just won’t know what. It’s mysterious, enjoy it.</p>

<p>Because I often run <a href="http://www.webkit.org/">Webkit</a>, and because Webkit demands that it be addressed separately from Safari, there’s a quick check in here to see which one is running at the time.</p>

<pre><code>
#!/usr/bin/ruby

def app_running?(app)
  not `ps ax|grep -i "#{app}.app"|grep -v grep`.empty?
end

def webkit_running?
  return false if `ps ax|grep -i "Safari.app"|grep -v grep`.empty?
  not `ps ax|grep -i "/Applications/Webkit.app"|grep -v grep`.empty?
end

if app_running?("Safari")
  browser = webkit_running? ? "Webkit" : "Safari"
  urllist = %x{osascript <<-APPLESCRIPT
               tell application "#{browser}"
               set _tabs to every tab of window 1
               set _urls to {}
               repeat with _tab in _tabs
               set end of _urls to URL of _tab
               end repeat
               set {astid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, " "}
               set output to _urls as text
               set AppleScript's text item delimiters to astid
               return output
               end tell
               APPLESCRIPT }.chomp
  puts urllist
end
</code></pre>

<h3>getremotetabs.rb</h3>

<p>This goes on the machine that's doing the "pulling." Save it as <code>getremotetabs.rb</code> in <code>~/scripts/</code> and run <code>chmod a+x ~/scripts/getremotetabs.rb</code>. You need to edit the <code>remote_host</code> variable in this script on each machine to match the hostname you set up in your <code>~/.ssh/config</code> file for the 'other' Mac.</p>

<pre><code>
#!/usr/bin/ruby
# retrieves a list of urls from the front Safari window running on a remote machine

remote_host = 'air' # as set up in ~/.ssh/config with nick and keyless login

%x{ssh #{remote_host} ~/scripts/remotetabs.rb}.chomp.split(' ').each { |url|
  %x{osascript -e 'tell application "Safari" to open location "#{url}"'}
}
</code></pre>

<p>That's it. You can save an AppleScript with <code>do shell script "/Users/username/scripts/getremotetabs.rb"</code> anywhere you want to, or just call the script from the command line. Also, stop making fun of my <abbr title="Obsessive Scripting Disorder">OSD</abbr>. I mean it.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/saving-safari-browsing-sessions-to-evernote/' rel='bookmark' title='Saving Safari browsing sessions to Evernote'>Saving Safari browsing sessions to Evernote</a></li>
<li><a href='http://brettterpstra.com/save-safari-tabs-to-instapaper/' rel='bookmark' title='Save Safari tabs to Instapaper'>Save Safari tabs to Instapaper</a></li>
<li><a href='http://brettterpstra.com/geeklet-1-minute-average-cpu-load/' rel='bookmark' title='Geeklet: 1-minute average CPU load'>Geeklet: 1-minute average CPU load</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/duplicating-safari-browsing-sessions-between-macs/">Duplicating Safari browsing sessions between Macs</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>TabLinks 2.0 is live</title>
		<link>http://brettterpstra.com/tablinks-2-0-is-live/</link>
		<comments>http://brettterpstra.com/tablinks-2-0-is-live/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 17:45:00 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>
		<category><![CDATA[tablinks]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=1151</guid>
		<description><![CDATA[<p>Apparently I missed the memo: TabLinks 2.0 was actually approved by Apple in September. I’ve been sitting on my hands and just recently bothered to write them and ask what was up. Miscommunication, I guess, but it’s live in the updater now, so if you have 1.3 installed, it should update to 2.0. If you have automatic updates turned off,&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/tablinks-2-0-is-live/">TabLinks 2.0 is live</a></p>]]></description>
			<content:encoded><![CDATA[<p>Apparently I missed the memo: TabLinks 2.0 was actually approved by Apple in September. I’ve been sitting on my hands and just recently bothered to write them and ask what was up. Miscommunication, I guess, but it’s live in the updater now, so if you have 1.3 installed, it should update to 2.0. If you have automatic updates turned off, just check the updates section at the bottom of your extensions preferences.</p>

<p>There’s a one-click install available at the <a href="http://extensions.apple.com">Safari Extensions Gallery</a>, or feel free to download it directly below.</p>

<p>For an overview of features in the new version, see the original <a href="http://brettterpstra.com/tablinks-2-0/">2.0 announcement post</a>.</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/TabLinks.2.0.zip?9d7bd4" title="Download TabLinks Safari Extension (2786)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/06/Icon.png?9d7bd4" alt="download image for TabLinks Safari Extension" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/TabLinks.2.0.zip?9d7bd4" title="Download TabLinks Safari Extension (2786)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/TabLinks.2.0.zip?9d7bd4" title="Download TabLinks Safari Extension (2786)">TabLinks Safari Extension</a> — TabLinks gathers all of the link information from every open tab and presents them for copying based on a user-defined template. <a href="http://brettterpstra.com/2010/06/18/tablinks-safari-extension/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/' rel='bookmark' title='Single-keystroke Instapaper in Google Reader'>Single-keystroke Instapaper in Google Reader</a></li>
<li><a href='http://brettterpstra.com/minor-tablinks-update/' rel='bookmark' title='Minor TabLinks update'>Minor TabLinks update</a></li>
<li><a href='http://brettterpstra.com/tablinks-2-0/' rel='bookmark' title='TabLinks 2.0'>TabLinks 2.0</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/tablinks-2-0-is-live/">TabLinks 2.0 is live</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/tablinks-2-0-is-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick notes on cross-browser HTML5 video</title>
		<link>http://brettterpstra.com/quick-notes-on-cross-browser-html5-video/</link>
		<comments>http://brettterpstra.com/quick-notes-on-cross-browser-html5-video/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 14:49:29 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=993</guid>
		<description><![CDATA[<p>I’ve been doing some screencasts lately, and have wanted to post them as HTML5 videos in many cases. I also wanted to serve them from my Cloudfront CDN. This is not a how-to post, just some things I learned that I couldn’t find existing answers to. For an excellent primer, see Video On the Web from Dive Into HTML5. I&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/quick-notes-on-cross-browser-html5-video/">Quick notes on cross-browser HTML5 video</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' display:none'  class="headerimg" src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/09/html5videodromeheader.jpg?9d7bd4" alt="Header image" /></p>

<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/09/catholictv.jpg?9d7bd4" alt="Catholic TV Screenshot" border="0" width="300" height="180" class="alignright" />I’ve been doing some screencasts lately, and have wanted to post them as HTML5 videos in many cases. I also wanted to serve them from my <a href="http://aws.amazon.com/cloudfront/">Cloudfront</a> <abbr title="Content Distribution Network">CDN</abbr>. This is not a how-to post, just some things I learned that I couldn’t find existing answers to. For an excellent primer, see <a href="http://diveintohtml5.org/video.html">Video On the Web</a> from <a href="http://diveintohtml5.org/">Dive Into HTML5</a>.</p>

<p>I kept running into hurdles, whether it was the content-type of the file being served, or the OGV encoding not working in Firefox, weird sizing, slight variations in syntax, etc. So here are my notes on how I got from <a href="http://www.telestream.net/screen-flow/overview.htm">ScreenFlow</a> to a cross-browser HTML5 video embed. They may not be of much use outside of that situation, but they might help somebody.</p>

<p><span id="more-993"></span>
1. The only way I could get an OGV file that actually played in Firefox was to export from ScreenFlow in a DV format, and use <a href="http://thelittleappfactory.com/evom/">Evom</a> or <a href="http://v2v.cc/~j/ffmpeg2theora/">ffmpeg2theora</a> to convert. Note that Evom requires the file extension to be <code>mov</code>, as it doesn’t recognize (and won’t accept) <code>dv</code> files. Evom has a setting called HTML5 that will create both MP4 and OGV files.
2. Aside from writing my own Ruby scripts to handle the upload to my <a href="http://aws.amazon.com/s3/">Amazon S3</a> account, <a href="http://www.panic.com/transmit/">Transmit</a> is the only app I could find that would let me automatically set appropriate MIME headers on uploaded video files, and allow me to automatically make them public. I now have a Transmit droplet in <a href="http://aptonic.com/">Dropzone</a> that will upload my files directly to the S3 bucket that my Cloudfront account uses, set their Content-Type to video/ogg and video/mp4, respectively, and make them public-readable.
3. The embed code is a little bit flexible, with parameters like “preload” and “autobuffer” seemingly being interchangeable. My current, working embed code looks like:</p>

<div markdown=0>
<pre><code>
&lt;video width=&quot;476&quot; height=&quot;324&quot; controls=&quot;&quot; autobuffer=&quot;autobuffer&quot;&gt;
  &lt;source src=&quot;http://cdn.brettterpstra.com/media/TablinksDemo2.mp4&quot; type=&#x27;video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;&#x27;&gt;
  &lt;source src=&quot;http://cdn.brettterpstra.com/media/TablinksDemo2.ogv&quot;  type=&#x27;video/ogg; codecs=&quot;theora, vorbis&quot;&#x27;&gt;
&lt;/video&gt;
</code></pre>
</div>

<p>With those steps in place, I’ve got video that plays (and looks decent) in Safari 5, Firefox 4 and Chrome. Obviously, I’d normally want a Flash fallback, but given that the videos I’m currently working on are about Safari 5, I’m not overly concerned whether Internet Explorer can see them or not. There’s always good-looking plugins like <a href="http://flarevideo.com/">FlareVideo</a> if that’s a requirement.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/automating-html5-video-encodes/' rel='bookmark' title='Automating HTML5 video encodes'>Automating HTML5 video encodes</a></li>
<li><a href='http://brettterpstra.com/seriously-easy-html5-video-encoding/' rel='bookmark' title='Seriously easy HTML5 video encoding'>Seriously easy HTML5 video encoding</a></li>
<li><a href='http://brettterpstra.com/automated-html5-video-encoding-revisited/' rel='bookmark' title='Automated HTML5 video encoding revisited'>Automated HTML5 video encoding revisited</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/quick-notes-on-cross-browser-html5-video/">Quick notes on cross-browser HTML5 video</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/quick-notes-on-cross-browser-html5-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TabLinks 2.0</title>
		<link>http://brettterpstra.com/tablinks-2-0/</link>
		<comments>http://brettterpstra.com/tablinks-2-0/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 07:07:58 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>
		<category><![CDATA[tablinks]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=950</guid>
		<description><![CDATA[<p>TabLinks 2.0 is finished, and it's a total rewrite. The changes have been submitted to Apple, and if all goes well, TabLinks will be updated in the Extensions Gallery shortly.</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/tablinks-2-0/">TabLinks 2.0</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://flattr.com/thing/86523/TabLinks" target="_blank" style="float:right;display:block"><img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>TabLinks 2.0 is finished, and it’s a total rewrite. The changes have been submitted to Apple, and if all goes well, TabLinks will be updated in the Extensions Gallery shortly. Here’s an overview of the changes:</p>

<p><a href="http://cdn2.brettterpstra.com/wp-content/uploads/2010/09/TabLinksPreviewScreen.jpg?9d7bd4"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="noshadow alignright size-medium wp-image-951" title="TabLinksPreviewScreen" src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/09/TabLinksPreviewScreen-300x226.jpg?9d7bd4" alt="Tab Links Preview" width="300" height="226" /></a></p>

<ul>
<li>Opens a new tab instead of an overlay.</li>
<li>Adds %b (line break) to the template options. Use as many as you like, one will be inserted at the end of each line by default.</li>
<li>In preferences, you can choose to operate on all open windows, or just the current foreground window.</li>
<li>The template can be edited live from the TabLinks window. Save/Apply will update the links in the list with the new template.</li>
<li>Default template presets are included, accessible through the “Presets” button.</li>
<li>Clicking the links once will select the whole block, as will the “Select All” button.</li>
<li>Double-clicking the links will make them editable, changes are saved when you click or tab out of the box.</li>
</ul>

<p><video width="476" height="324" controls="" autobuffer="autobuffer">
      <source src="http://cdn.brettterpstra.com/media/TablinksDemo2.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
      <source src="http://cdn.brettterpstra.com/media/TablinksDemo2.ogv"  type='video/ogg; codecs="theora, vorbis"'>
  </video></p>

<p>You can download the 2.0 release below, or wait for it to update in the Extensions Gallery.</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/TabLinks.2.0.zip?9d7bd4" title="Download TabLinks Safari Extension (2786)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/06/Icon.png?9d7bd4" alt="download image for TabLinks Safari Extension" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/TabLinks.2.0.zip?9d7bd4" title="Download TabLinks Safari Extension (2786)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/TabLinks.2.0.zip?9d7bd4" title="Download TabLinks Safari Extension (2786)">TabLinks Safari Extension</a> — TabLinks gathers all of the link information from every open tab and presents them for copying based on a user-defined template. <a href="http://brettterpstra.com/2010/06/18/tablinks-safari-extension/">More Info</a></p></div>


<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/minor-tablinks-update/' rel='bookmark' title='Minor TabLinks update'>Minor TabLinks update</a></li>
<li><a href='http://brettterpstra.com/tablinks-2-0-is-live/' rel='bookmark' title='TabLinks 2.0 is live'>TabLinks 2.0 is live</a></li>
<li><a href='http://brettterpstra.com/tablinks-safari-extension/' rel='bookmark' title='TabLinks Safari Extension'>TabLinks Safari Extension</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/tablinks-2-0/">TabLinks 2.0</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/tablinks-2-0/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
<enclosure url="http://cdn.brettterpstra.com/media/TablinksDemo2.mp4" length="7523438" type="video/mp4" />
<enclosure url="http://cdn.brettterpstra.com/media/TablinksDemo2.ogv" length="1935744" type="video/ogg" />
		</item>
		<item>
		<title>gleeBox gets prettier highlights</title>
		<link>http://brettterpstra.com/gleebox-gets-prettier-highlights/</link>
		<comments>http://brettterpstra.com/gleebox-gets-prettier-highlights/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 15:46:38 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[gleebox]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=928</guid>
		<description><![CDATA[<p>Primer: gleeBox is an amazing extension for Safari (and Chrome and Firefox) that gives you keyboard navigation of links, bookmarks, bookmarklets and more. If you haven’t tried it out, you should. A while back I wrote about fixing the highlights in gleeBox. I found them just ugly enough to require measures to soften the colors and handle padding a little&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/gleebox-gets-prettier-highlights/">gleeBox gets prettier highlights</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://cdn2.brettterpstra.com/wp-content/uploads/2010/09/newgleeboxhighlights.jpg?9d7bd4"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/09/newgleeboxhighlights-300x56.jpg?9d7bd4" alt="New gleeBox highlights screenshot" title="New gleeBox highlights" width="300" height="56" class="alignright size-medium wp-image-929" /></a></p>

<p><em>Primer:</em> <a href="http://thegleebox.com/">gleeBox</a> is an amazing extension for Safari (and Chrome and Firefox) that gives you keyboard navigation of links, bookmarks, bookmarklets and more. If you haven’t tried it out, you should.</p>

<p>A while back I wrote about <a href="http://brettterpstra.com/fixing-gleebox/">fixing the highlights in gleeBox</a>. I found them just ugly enough to require measures to soften the colors and handle padding a little differently. Well, color me tickled, the latest update that just showed up in my extensions panel brings, <a href="http://thegleebox.com/releases.html">among other things</a>, prettier highlights. Prettier than my makeshift ones, too. Just thought I’d share…</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/fixing-gleebox/' rel='bookmark' title='Fixing Gleebox'>Fixing Gleebox</a></li>
<li><a href='http://brettterpstra.com/why-i-will-never-be-a-wildlife-photographer/' rel='bookmark' title='Why I will never be a wildlife photographer'>Why I will never be a wildlife photographer</a></li>
<li><a href='http://brettterpstra.com/a-little-hootsuite-userstyling/' rel='bookmark' title='A little HootSuite userstyling'>A little HootSuite userstyling</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/gleebox-gets-prettier-highlights/">gleeBox gets prettier highlights</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/gleebox-gets-prettier-highlights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instapaper Beyond microsite</title>
		<link>http://brettterpstra.com/instapaper-beyond-microsite/</link>
		<comments>http://brettterpstra.com/instapaper-beyond-microsite/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 17:12:28 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[instapaper]]></category>
		<category><![CDATA[instapaper beyond]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=923</guid>
		<description><![CDATA[<p>Due in part to the inclusion of Instapaper Beyond in Apple’s Safari Extensions Gallery, I’ve put together a dedicated “microsite” for Instapaper Beyond. You can check it out at http://brettterpstra.com/instapaperbeyond. It uses the same navigation as Instapaper Beyond (mmm, clever), so pressing “h” will bring down a menu of the main commands available in the extension, and pressing the letter&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/instapaper-beyond-microsite/">Instapaper Beyond microsite</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://cdn2.brettterpstra.com/wp-content/uploads/2010/08/InstapaperBeyondMicrosite.jpg?9d7bd4"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/08/InstapaperBeyondMicrosite-300x226.jpg?9d7bd4" alt="Screenshot of the Instapaper Beyond microsite" title="Instapaper Beyond Microsite Screenshot" width="300" height="226" class="alignright size-medium wp-image-925" /></a>Due in part to the inclusion of Instapaper Beyond in Apple’s <a href="http://extensions.apple.com/">Safari Extensions Gallery</a>, I’ve put together a dedicated “microsite” for Instapaper Beyond. You can check it out at <a href="http://brettterpstra.com/instapaperbeyond">http://brettterpstra.com/instapaperbeyond</a>.</p>

<p>It uses the same navigation as Instapaper Beyond (mmm, clever), so pressing “h” will bring down a menu of the main commands available in the extension, and pressing the letter for a command (or clicking it in the menu) will provide more information about that command. In some cases, a short screencast is available, and I’ll put more up when I have a chance.</p>

<p>The page takes advantage of the fact that it’s pretty much exclusive to Safari 5, using HTML5 video tags and webkit transitions for much of the interface. That, and a little jQuery. The video player is a custom-styled <code>&lt;video&gt;</code> tag, which was something I’ve been meaning to figure out how to pull off.</p>

<p>I hope IB users <a href="http://brettterpstra.com/instapaperbeyond">enjoy the page</a>, and I welcome comments and criticisms!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/' rel='bookmark' title='Instapaper Beyond: fix for text style controls'>Instapaper Beyond: fix for text style controls</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-bugs/' rel='bookmark' title='Instapaper Beyond Bugs (fixed)'>Instapaper Beyond Bugs (fixed)</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-for-safari/' rel='bookmark' title='Instapaper Beyond for Safari'>Instapaper Beyond for Safari</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/instapaper-beyond-microsite/">Instapaper Beyond microsite</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/instapaper-beyond-microsite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instapaper Beyond in the Safari Extensions Gallery</title>
		<link>http://brettterpstra.com/instapaper-beyond-in-the-safari-extensions-gallery/</link>
		<comments>http://brettterpstra.com/instapaper-beyond-in-the-safari-extensions-gallery/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 01:07:24 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[instapaper]]></category>
		<category><![CDATA[instapaper beyond]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=919</guid>
		<description><![CDATA[<p>: http://extensions.apple.com/ I just got word from Apple that Instapaper Beyond is being added to the [Safari Extensions Gallery]! That’s great news, for the most part… it means that I’ll have to run all future updates through Apple before releasing them, but I assume that will just be a minor formality in the grand scheme of things. I have a&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/instapaper-beyond-in-the-safari-extensions-gallery/">Instapaper Beyond in the Safari Extensions Gallery</a></p>]]></description>
			<content:encoded><![CDATA[<p>I just got word from Apple that <a href="http://brettterpstra.com/instapaper-beyond-for-safari/">Instapaper Beyond</a> is being added to the <a href="http://extensions.apple.com/">Safari Extensions Gallery</a>! That’s great news, for the most part… it means that I’ll have to run all future updates through Apple before releasing them, but I assume that will just be a minor formality in the grand scheme of things.</p>

<p>I have a few new features completed and ready to launch, actually, but I’ll save them up for a bigger update. I’m also going to try to find time to build out a dedicated project page, and maybe even add a screencast. I do love making screencasts.</p>

<p>I’ll be keeping an eye on the gallery to see when it shows up. Follow <a href="http://twitter.com/ttscoff">@ttscoff</a> on Twitter if you’re curious, I’m sure I’ll have an excited tweet or two when it does.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/instapaper-beyond-microsite/' rel='bookmark' title='Instapaper Beyond microsite'>Instapaper Beyond microsite</a></li>
<li><a href='http://brettterpstra.com/tablinks-2-0-is-live/' rel='bookmark' title='TabLinks 2.0 is live'>TabLinks 2.0 is live</a></li>
<li><a href='http://brettterpstra.com/new-safari-extensions-give-good-source/' rel='bookmark' title='New Safari Extensions give good source'>New Safari Extensions give good source</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/instapaper-beyond-in-the-safari-extensions-gallery/">Instapaper Beyond in the Safari Extensions Gallery</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/instapaper-beyond-in-the-safari-extensions-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GReader Instapaper 0.2</title>
		<link>http://brettterpstra.com/greader-instapaper-0-2/</link>
		<comments>http://brettterpstra.com/greader-instapaper-0-2/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 02:05:06 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[google reader]]></category>
		<category><![CDATA[instapaper]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=883</guid>
		<description><![CDATA[<p>I just pushed a tiny little update to the GReader Instapaper extension. It shortens the default speed at which the notifications disappear, and adds a settings item in preferences so you can adjust it if you want to. I think the 1300ms delay is a pretty good one, it was 5000 before (and everyone complained). All better. I cleaned up&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/greader-instapaper-0-2/">GReader Instapaper 0.2</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/2010/07/greaderinstapapericon.jpg?9d7bd4" alt="GReader Instapaper Icon" title="GReader Instapaper Icon" width="200" height="200" class="alignright size-full wp-image-838 noshadow" />I just pushed a tiny little update to the <a href="http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/">GReader Instapaper</a> extension. It shortens the default speed at which the notifications disappear, and adds a settings item in preferences so you can adjust it if you want to. I think the 1300ms delay is a pretty good one, it was 5000 before (and everyone complained). All better.</p>

<p>I cleaned up a few loose ends, fixed some error messages, general housekeeping. However, I’m still stuck as to how to tell when a post to Instapaper fails. I’m unable to get a response code from the async post, so all I can really tell is that there <em>was</em> a response. I can’t tell if it was good or bad. So… the notification will pretty much always tell you it was a success. If your articles aren’t showing up in Instapaper, check your username and password in the settings and try again.</p>

<p>I doubt I’ll push much further on this, given that the Instapaper bookmarklet does a fine job with Google Reader, and you can trigger it with a ⌘-# if it’s in your bookmarks bar, # being the position of the bookmarklet in the bar, from 1–9.</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/GReaderInstapaper.0.2.zip?9d7bd4" title="Download GReader Instapaper (1690)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/07/icon.png?9d7bd4" alt="download image for GReader Instapaper" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/GReaderInstapaper.0.2.zip?9d7bd4" title="Download GReader Instapaper (1690)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/GReaderInstapaper.0.2.zip?9d7bd4" title="Download GReader Instapaper (1690)">GReader Instapaper</a> — Adds single-keystroke sending of the current article in Google Reader to your Instapaper account. <a href="http://brettterpstra.com/2010/07/28/single-keystroke-instapaper-in-google-reader/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/pinboard-links-with-instapaper-text/' rel='bookmark' title='Bookmarklet: Read Pinboard links with Instapaper Text'>Bookmarklet: Read Pinboard links with Instapaper Text</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/' rel='bookmark' title='Instapaper Beyond: fix for text style controls'>Instapaper Beyond: fix for text style controls</a></li>
<li><a href='http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/' rel='bookmark' title='Single-keystroke Instapaper in Google Reader'>Single-keystroke Instapaper in Google Reader</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/greader-instapaper-0-2/">GReader Instapaper 0.2</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/greader-instapaper-0-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Single-keystroke Instapaper in Google Reader</title>
		<link>http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/</link>
		<comments>http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:02:05 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=836</guid>
		<description><![CDATA[<p>This was a quick plugin I put together last night when I got too frustrated to work on my actual jobs. It lets you define a single shortcut key which, after you input your Instapaper username and password, will let you send the currently-selected article in Google Reader straight to Instapaper. It works fine with themes like Helvetireader (Safari extension),&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/">Single-keystroke Instapaper in Google Reader</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/2010/07/greaderinstapapericon.jpg?9d7bd4" alt="GReader Instapaper Icon" title="GReader Instapaper Icon" width="200" height="200" class="alignright size-full wp-image-838 noshadow" />This was a quick plugin I put together last night when I got too frustrated to work on my actual jobs. It lets you define a single shortcut key which, after you input your <a href="http://www.instapaper.com/">Instapaper</a> username and password, will let you send the currently-selected article in <a href="http://www.google.com/reader/">Google Reader</a> straight to Instapaper. It works fine with themes like <a href="http://helvetireader.com/">Helvetireader</a> (<a href="http://kirindave.tumblr.com/post/675464589/safari-5-port-of-helvetireader">Safari extension</a>), and functions in both list view and expanded view.</p>

<p>Click below to download, unzip the extension and double click it to install. Head for <strong>Preferences-&gt;Extensions</strong> and set up your Instapaper username and password, and pick a hotkey. The default hotkey is “i”, which doesn’t interfere with existing Google shortcuts. Tailor to taste.</p>

<p>The only issue I’m having right now is that it doesn’t fail properly if you have an incorrect user/pass combination. It tells you it succeeded, but doesn’t post to your account. I’ll have to add a verification step at some point in the process. For now, if things aren’t showing up in Instapaper for you, check your username and password in the Extensions preferences. Be sure to check out <a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">Instapaper Beyond</a>, too!</p>

<h4>Download:</h4>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/GReaderInstapaper.0.2.zip?9d7bd4" title="Download GReader Instapaper (1690)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/07/icon.png?9d7bd4" alt="download image for GReader Instapaper" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/GReaderInstapaper.0.2.zip?9d7bd4" title="Download GReader Instapaper (1690)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/GReaderInstapaper.0.2.zip?9d7bd4" title="Download GReader Instapaper (1690)">GReader Instapaper</a> — Adds single-keystroke sending of the current article in Google Reader to your Instapaper account. <a href="http://brettterpstra.com/2010/07/28/single-keystroke-instapaper-in-google-reader/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/greader-instapaper-0-2/' rel='bookmark' title='GReader Instapaper 0.2'>GReader Instapaper 0.2</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-for-safari/' rel='bookmark' title='Instapaper Beyond for Safari'>Instapaper Beyond for Safari</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/' rel='bookmark' title='Instapaper Beyond: fix for text style controls'>Instapaper Beyond: fix for text style controls</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/single-keystroke-instapaper-in-google-reader/">Single-keystroke Instapaper in Google Reader</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Instapaper Beyond 1.8.9</title>
		<link>http://brettterpstra.com/instapaper-beyond-1-8-9/</link>
		<comments>http://brettterpstra.com/instapaper-beyond-1-8-9/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 13:31:29 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[instapaper]]></category>
		<category><![CDATA[instapaper beyond]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=832</guid>
		<description><![CDATA[<p>Instapaper Beyond version 1.8.9 is another small release with a couple of usability enhancements. Thanks to everyone who’s been submitting ideas and bugs, I’ll do my best to keep up! This release includes: Alphabetical sorting of the help HUD (A-Z,a-z) Edit a bookmark with “E” (Shift-E) you can tab through the fields and submit with Enter, returning you to your&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/instapaper-beyond-1-8-9/">Instapaper Beyond 1.8.9</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">Instapaper Beyond</a> version 1.8.9 is another small release with a couple of usability enhancements. Thanks to everyone who’s been submitting ideas and bugs, I’ll do my best to keep up!</p>

<p>This release includes:</p>

<ul>
<li>Alphabetical sorting of the help HUD (A-Z,a-z)</li>
<li>Edit a bookmark with “E” (Shift-E)

<ul>
<li>you can tab through the fields and submit with Enter, returning you to your listing</li>
</ul></li>
<li>Scroll animation when navigating bookmark lists

<ul>
<li>makes it more obvious which direction the page just scrolled you in when selecting a bookmark partially or entirely offscreen.</li>
</ul></li>
</ul>

<p><strong>Download:</strong></p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/06/instapaperbeyond95.png?9d7bd4" alt="download image for Instapaper Beyond for Safari 5" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)">Instapaper Beyond for Safari 5</a> — Instapaper Beyond for Safari adds full keyboard navigation and Ajax loading of text views to Instapaper (http://www.instapaper.com). This extension is for Safari 5 with extensions enabled. <a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/' rel='bookmark' title='Instapaper Beyond: fix for text style controls'>Instapaper Beyond: fix for text style controls</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-1-3/' rel='bookmark' title='Instapaper Beyond 1.3'>Instapaper Beyond 1.3</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-1-8-7/' rel='bookmark' title='Instapaper Beyond 1.8.7'>Instapaper Beyond 1.8.7</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/instapaper-beyond-1-8-9/">Instapaper Beyond 1.8.9</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/instapaper-beyond-1-8-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instapaper Beyond 1.8.7</title>
		<link>http://brettterpstra.com/instapaper-beyond-1-8-7/</link>
		<comments>http://brettterpstra.com/instapaper-beyond-1-8-7/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:40:07 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[instapaper]]></category>
		<category><![CDATA[instapaper beyond]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=825</guid>
		<description><![CDATA[<p>Update: I just pushed out version 1.8.8 with a minor fix for some spacebar-in-forms issues. The download link and auto-update file have already been updated. Thanks to John P for the bug report! This is relatively minor update for Instapaper Beyond, the Safari extension which gives you full Ajax loading and keyboard control over Instapaper. It does, however, have one&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/instapaper-beyond-1-8-7/">Instapaper Beyond 1.8.7</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> I just pushed out version 1.8.8 with a minor fix for some spacebar-in-forms issues. The download link and auto-update file have already been updated. Thanks to John P for the bug report!</p>

<p>This is relatively minor update for <a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">Instapaper Beyond</a>, the Safari extension which gives you full Ajax loading and keyboard control over <a href="http://www.instapaper.com">Instapaper</a>. It does, however, have one very cool new feature, and one often-requested fix.</p>

<p>The new feature is type-ahead folder selection in the popup HUDs for Move To and Go To Folder. When the HUD pops up, you can just start typing and it will find the first folder that matches the letters you’ve typed and select it. The arrow keys function as usual, and enter or right arrow will open the selected folder. If you type a few letters and then hit backspace or escape, it will clear the filter field. If you pause for a second, then start typing again, it will start a new filter, QuickSilver/Launchbar style.</p>

<p>The other noticeable change is that it works better with Greystyled now. It’s not perfect, as Greystyled wants to do its own thing with the Ajax-loaded text versions and there’s a major conflict. I check for Greystyled now, though, and give it a little leeway. The text view will not look like it does in Greystyled without IB loaded, but it will work for you.</p>

<p>If you have Instapaper Beyond loaded, it will either update automatically, or show up in your available updates if you have auto-updates turned off. If you haven’t loaded it, download it below and give it a try!</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/06/instapaperbeyond95.png?9d7bd4" alt="download image for Instapaper Beyond for Safari 5" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)">Instapaper Beyond for Safari 5</a> — Instapaper Beyond for Safari adds full keyboard navigation and Ajax loading of text views to Instapaper (http://www.instapaper.com). This extension is for Safari 5 with extensions enabled. <a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/instapaper-beyond-bugs/' rel='bookmark' title='Instapaper Beyond Bugs (fixed)'>Instapaper Beyond Bugs (fixed)</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/' rel='bookmark' title='Instapaper Beyond: fix for text style controls'>Instapaper Beyond: fix for text style controls</a></li>
<li><a href='http://brettterpstra.com/greader-instapaper-0-2/' rel='bookmark' title='GReader Instapaper 0.2'>GReader Instapaper 0.2</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/instapaper-beyond-1-8-7/">Instapaper Beyond 1.8.7</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/instapaper-beyond-1-8-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instapaper Beyond: fix for text style controls</title>
		<link>http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/</link>
		<comments>http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 09:00:08 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[instapaper]]></category>
		<category><![CDATA[instapaper beyond]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=761</guid>
		<description><![CDATA[<p>This is a bugfix release of Instapaper Beyond for Safari which brings the version up to 1.8.6. It fixes a few visual glitches, but most importantly it restores the functionality of the text style menu at the top of a read page, allowing you to set and remember the font, size, width and line spacing of your text view. I&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/">Instapaper Beyond: fix for text style controls</a></p>]]></description>
			<content:encoded><![CDATA[<p>This is a bugfix release of Instapaper Beyond for Safari which brings the version up to 1.8.6. It fixes a few visual glitches, but most importantly it restores the functionality of the text style menu at the top of a read page, allowing you to set and remember the font, size, width and line spacing of your text view.</p>

<p>I actually ended up rewriting the existing javascript as a module in Instapaper Beyond, so there’s the possibility of easily extending it to handle more options. Background color, more fonts, etc. We’ll see how far I get with that. My next order of business is to get it to work with some of the existing userstyles out there, but time has been tight for me when it comes to these side projects. I’ll keep you posted.</p>

<p>If you have Instapaper Beyond installed, it should show up in your updates (or be updated automatically, depending on your settings). If you want to download the extension, please use the link below. For more information on Instapaper Beyond, see the <a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">original post for the Safari Release</a>.</p>

<div class="download_desc"><p class="download-icon"><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/downloads/thumbnails/2010/06/instapaperbeyond95.png?9d7bd4" alt="download image for Instapaper Beyond for Safari 5" width="64" /></a><br /><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)" class="download-button">Download</a></p><p class="desc"><a href="http://brettterpstra.com/downloads/InstapaperBeyond.1.8.10.zip?9d7bd4" title="Download Instapaper Beyond for Safari 5 (665)">Instapaper Beyond for Safari 5</a> — Instapaper Beyond for Safari adds full keyboard navigation and Ajax loading of text views to Instapaper (http://www.instapaper.com). This extension is for Safari 5 with extensions enabled. <a href="http://brettterpstra.com/2010/06/09/instapaper-beyond-for-safari/">More Info</a></p></div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/instapaper-beyond-1-8-7/' rel='bookmark' title='Instapaper Beyond 1.8.7'>Instapaper Beyond 1.8.7</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-1-8-9/' rel='bookmark' title='Instapaper Beyond 1.8.9'>Instapaper Beyond 1.8.9</a></li>
<li><a href='http://brettterpstra.com/greader-instapaper-0-2/' rel='bookmark' title='GReader Instapaper 0.2'>GReader Instapaper 0.2</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/instapaper-beyond-fix-for-text-style-controls/">Instapaper Beyond: fix for text style controls</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/instapaper-beyond-fix-for-text-style-controls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EverSave revisited, now with session restore!</title>
		<link>http://brettterpstra.com/eversave-revisited-now-with-session-restore/</link>
		<comments>http://brettterpstra.com/eversave-revisited-now-with-session-restore/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 01:50:46 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[evernote]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[snow leopard]]></category>
		<category><![CDATA[System Service]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=744</guid>
		<description><![CDATA[<p>Safari 5 has brought several solutions for managing lists of open tabs, from the simple (like my TabLinks extension) to full session-management capabilities (see the beautiful Sessions extension). However, I’ve found I still like using my EverSave script in many situations, primarily because it allows me to annotate, tag and sync my important sessions for later retrieval. One thing’s been&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/eversave-revisited-now-with-session-restore/">EverSave revisited, now with session restore!</a></p>]]></description>
			<content:encoded><![CDATA[<p>Safari 5 has brought several solutions for managing lists of open tabs, from the simple (like my <a href="http://brettterpstra.com/2010/06/18/tablinks-safari-extension/">TabLinks extension</a>) to full session-management capabilities (see the beautiful <a href="http://dl.dropbox.com/u/8247646/sessions/index.html">Sessions extension</a>). However, I’ve found I still like using my <a href="http://brettterpstra.com/2010/03/06/saving-safari-browsing-sessions-to-evernote/">EverSave script</a> in many situations, primarily because it allows me to annotate, tag and sync my important sessions for later retrieval. One thing’s been bugging me, though, and that’s the inability to do a mass restore on a tab list (i.e. open them all at once).</p>

<p>When I decided to fix this, the first issue was that when EverSave creates the Evernote note, it lets Evernote convert the list from HTML to Rich Text. Once it’s stored in Rich Text Format (RTF), manipulating it via any shell language, including AppleScript, becomes quite difficult. It’s not impossible, but I quickly decided it wasn’t a route I wanted to wander down. Here’s what I <strong>did</strong> do…
<span id="more-744"></span></p>

<h3>Saving tabs to Evernote</h3>

<p>What I ended up doing was modifying what EverSave stored, and including the actual URL in the visible text of the note. It’s not the prettiest solution, but it’s the only way that this particular system will work. I did my best to minimize the visual presence of the URL using the rudimentary markup that Evernote actually pays attention to. The final product looks like this:</p>

<p><img src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/07/EverSaveRevisedBookmarks1.jpg?9d7bd4" alt="EverSaveRevisedBookmarks.jpg" border="0" width="650" height="93" /></p>

<p>The actual layout is still fully controlled by the _template property in the first line, which is the only line that’s changed from the original script. I’m posting the whole thing again, with this minor revision, for convenience. With a little bit of HTML (remember to escape your double quotes), you can modify the template to look however you like. Just keep in mind that Evernote strips 90% of markup out when it creates the note from your HTML, so stick with basic tags. See the <a href="http://brettterpstra.com/2010/03/06/saving-safari-browsing-sessions-to-evernote/">original EverSave post</a> for a breakdown of the script.</p>

<p>Be sure to continue reading after the script to see how we handle the “restore” functionality.</p>


<div class="wp_syntax"><div class="code"><pre class="applescript"><span class="kw3">property</span> _template : <span class="st0">&quot;&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;</span><span class="re0">%url</span><span class="st0">&quot;&gt;&amp;uArr;&lt;/a&gt; %name&lt;/strong&gt; &lt; &lt;small&gt;%url&lt;/small&gt; &gt;&quot;</span>
&nbsp;
<span class="co1">--search and replace function for template</span>
<span class="kw3">on</span> snr<span class="br0">&#40;</span>tofind, toreplace, TheString<span class="br0">&#41;</span>
	<span class="kw3">set</span> ditd <span class="kw3">to</span> <span class="kw1">text</span> <span class="kw1">item</span> <span class="kw1">delimiters</span>
	<span class="kw3">set</span> <span class="kw1">text</span> <span class="kw1">item</span> <span class="kw1">delimiters</span> <span class="kw3">to</span> tofind
	<span class="kw3">set</span> textItems <span class="kw3">to</span> <span class="kw1">text</span> <span class="kw1">items</span> <span class="kw3">of</span> TheString
	<span class="kw3">set</span> <span class="kw1">text</span> <span class="kw1">item</span> <span class="kw1">delimiters</span> <span class="kw3">to</span> toreplace
	<span class="kw3">if</span> <span class="br0">&#40;</span>class <span class="kw3">of</span> TheString <span class="kw3">is</span> <span class="kw1">string</span><span class="br0">&#41;</span> <span class="kw3">then</span>
		<span class="kw3">set</span> res <span class="kw3">to</span> textItems <span class="kw2">as</span> <span class="kw1">string</span>
	<span class="kw3">else</span> <span class="co1">-- if (class of TheString is Unicode text) then</span>
		<span class="kw3">set</span> res <span class="kw3">to</span> textItems <span class="kw2">as</span> Unicode <span class="kw1">text</span>
	<span class="kw3">end</span> <span class="kw3">if</span>
	<span class="kw3">set</span> <span class="kw1">text</span> <span class="kw1">item</span> <span class="kw1">delimiters</span> <span class="kw3">to</span> ditd
	<span class="kw3">return</span> res
<span class="kw3">end</span> snr
&nbsp;
<span class="kw3">set</span> prettyDate <span class="kw3">to</span> <span class="kw1">do shell script</span> <span class="st0">&quot;date '+%A, %B %d, %Y at %l:%M %p'&quot;</span>
<span class="kw3">set</span> theTitle <span class="kw3">to</span> <span class="st0">&quot;Bookmarks &quot;</span> <span class="sy0">&amp;</span> prettyDate
<span class="kw3">set</span> urlList <span class="kw3">to</span> <span class="st0">&quot;&lt;ul&gt;&quot;</span>
&nbsp;
<span class="kw3">tell</span> <span class="kw1">application</span> <span class="st0">&quot;Safari&quot;</span>
	<span class="kw3">set</span> tabList <span class="kw3">to</span> <span class="kw2">every</span> <span class="kw1">tab</span> <span class="kw3">of</span> <span class="kw2">front</span> <span class="kw1">window</span>
	<span class="kw3">repeat</span> <span class="kw3">with</span> aTab <span class="kw3">in</span> tabList
		<span class="kw3">set</span> aLink <span class="kw3">to</span> _template
		<span class="kw3">set</span> aLink <span class="kw3">to</span> <span class="kw3">my</span> snr<span class="br0">&#40;</span><span class="st0">&quot;%name&quot;</span>, <span class="kw1">name</span> <span class="kw3">of</span> aTab, aLink<span class="br0">&#41;</span>
		<span class="kw3">set</span> aLink <span class="kw3">to</span> <span class="kw3">my</span> snr<span class="br0">&#40;</span><span class="st0">&quot;%url&quot;</span>, URL <span class="kw3">of</span> aTab, aLink<span class="br0">&#41;</span>
		<span class="kw3">set</span> urlList <span class="kw3">to</span> urlList <span class="sy0">&amp;</span> aLink <span class="sy0">&amp;</span> <span class="kw3">return</span>
	<span class="kw3">end</span> <span class="kw3">repeat</span>
<span class="kw3">end</span> <span class="kw3">tell</span>
<span class="kw3">set</span> urlList <span class="kw3">to</span> urlList <span class="sy0">&amp;</span> <span class="st0">&quot;&lt;/ul&gt;&quot;</span>
&nbsp;
<span class="kw3">tell</span> <span class="kw1">application</span> <span class="st0">&quot;Evernote&quot;</span>
	<span class="kw3">set</span> theNote <span class="kw3">to</span> create note <span class="kw3">with</span> html urlList title theTitle notebook <span class="st0">&quot;Bookmarks&quot;</span>
<span class="kw3">end</span> <span class="kw3">tell</span></pre></div></div>


<p>I have this script saved as “EverSave.scpt” in my <code>~/Library/Scripts/Applications/Safari</code> folder (create it if you don’t have it), and launch it using <a href="http://www.red-sweater.com/fastscripts/">FastScripts</a> with a Command-Shift-S shortcut. Safari doesn’t have anything bound to that key-combo, and it’s easy to remember (Save As in most programs).</p>

<h3>Restoring tabs</h3>

<p>This solution makes a few assumptions, but the script is easily customized to handle any differences in your setup. I went with a System Service (Snow Leopard) for the restore function, primarily because it allows me to act directly on selected text in Evernote. It’s a very simple Ruby script that parses the selected text for urls, and then opens any that it finds in sequential order using your default browser. There’s a commented out line if you want to always target Safari directly when opening them, which may be useful in some situations. I use <a href="http://www.choosyosx.com/">Choosy</a>, and have a rule that just directs all of these to Safari. If you have Safari set as your default browser, and that’s where you want to open your links, this will just work as is.</p>

<p>To set up the service:</p>

<ol>
<li>Open Automator and select “Service” as the new file type.</li>
<li>On the right hand side, tell it that “Service receives selected” <strong><em>text</em></strong> in <strong><em>Evernote.app</em></strong> (choose Other… and select Evernote).</li>
<li>Find “Run Shell Script” in the list on the left and drag it into the area on the right.</li>
<li>Set the Shell dropdown to /usr/bin/ruby</li>
<li>Insert the following code, and feel free to modify</li>
<li>Save the result as “EverRestore”</li>
<li>Assign a shortcut key, if desired, in System Preferences &gt; Keyboard &gt; Keyboard Shortcuts &gt; Services</li>
</ol>

<p>Here’s the code for the service:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby">ARGF.<span class="me1">each</span> <span class="kw1">do</span> <span class="sy0">|</span>f<span class="sy0">|</span>
    links = f.<span class="me1">scan</span> <span class="sy0">/&lt;</span> <span class="br0">&#40;</span>https?:<span class="sy0">//</span>.<span class="sy0">*</span>?<span class="br0">&#41;</span> <span class="sy0">&gt;/</span>mi
    <span class="co1"># The above scans specifically for the angle brackets in my template. </span>
    <span class="co1"># If you remove those from the output of EverSave, be sure to update</span>
    <span class="co1"># the regular expression accordingly.</span>
    <span class="kw1">if</span> links.<span class="me1">empty</span>? <span class="kw1">then</span>
        <span class="kw3">exit</span>
    <span class="kw1">else</span>
        links.<span class="me1">each</span> <span class="br0">&#123;</span><span class="sy0">|</span>link<span class="sy0">|</span> <span class="sy0">%</span>x<span class="br0">&#123;</span>osascript <span class="sy0">-</span>e <span class="sy0">&amp;</span><span class="co1">#x27;open location &quot;#{link[0]}&quot;&amp;#x27;}}</span>
        <span class="co1"># links.each {|link| %x{osascript -e &amp;#x27;tell application &quot;Safari&quot; to open location &quot;#{link[0]}&quot;&amp;#x27;} }</span>
    <span class="kw1">end</span>
<span class="kw1">end</span></pre></div></div>


<p>The simple regular expression in line 2 does scan specifically for the angle brackets I used in the new EverSave template. That just relieves some complexity. If you want a regular expression that doesn’t require the angle brackets, try replacing line 2 with this:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby">links = f.<span class="me1">scan</span> <span class="sy0">/</span><span class="br0">&#40;</span>https?:<span class="sy0">//</span><span class="br0">&#40;</span><span class="br0">&#91;</span>^s<span class="st0">&quot;,;]+)..{2,4}(/[^s&quot;</span>,;!<span class="br0">&#93;</span><span class="sy0">+</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">/</span>mi</pre></div></div>


<p>Once it’s saved in Automator, it should be available when you select text in Evernote. If there are visible URLs in the selected text, running this Service will open them in tabs in Safari (or your default browser). You can selectively open certain urls by only selecting the lines that contain the ones you want to open. Non-contiguous selections will require a little text editing, of course.</p>

<h3>Not as hard as it looks… really.</h3>

<p>The explanation got a little long, and probably seems unnecessarily complex. The fact is, I can save a Safari browsing session with one key combo, edit, annotate and tag it (if I want to), then restore it later by highlighting and typing a new command combination. It’s actually quite convenient, and fairly bulletproof. I’d love to hear how you use it, or what you’re doing instead!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/antique-safari-reader-hack-update-with-evernote-goodness/' rel='bookmark' title='Antique Safari Reader hack update with Evernote goodness'>Antique Safari Reader hack update with Evernote goodness</a></li>
<li><a href='http://brettterpstra.com/clippable-to-evernote-snow-leopard-service/' rel='bookmark' title='Clippable to Evernote Snow Leopard Service'>Clippable to Evernote Snow Leopard Service</a></li>
<li><a href='http://brettterpstra.com/save-safari-tabs-to-instapaper/' rel='bookmark' title='Save Safari tabs to Instapaper'>Save Safari tabs to Instapaper</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/eversave-revisited-now-with-session-restore/">EverSave revisited, now with session restore!</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/eversave-revisited-now-with-session-restore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Safari Extensions give good source</title>
		<link>http://brettterpstra.com/new-safari-extensions-give-good-source/</link>
		<comments>http://brettterpstra.com/new-safari-extensions-give-good-source/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 20:37:01 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[safari 5]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=740</guid>
		<description><![CDATA[<p>A couple of very cool Safari Extensions came down the pipe today, both geared toward web developers and code monkeys. The two of them combined make viewing source in Safari a whole lot better. I love doing web development in Safari, and the Web Inspector pretty well covers the Firebug front for me, but these two extensions are going to&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/new-safari-extensions-give-good-source/">New Safari Extensions give good source</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/2010/07/sourceviewextension.jpg?9d7bd4" alt="sourceviewextension.jpg" border="0" width="234" height="184" class="alignright" />A couple of very cool Safari Extensions came down the pipe today, both geared toward web developers and code monkeys. The two of them combined make viewing source in Safari a whole lot better. I love doing web development in Safari, and the Web Inspector pretty well covers the Firebug front for me, but these two extensions are going to make life much easier.</p>

<p><a href="http://www.awarepixel.com/safari/bettersource/">BetterSource</a> adds two buttons to your toolbar. The first is for viewing the source code of the current page in a new tab, and with line numbers and syntax highlighting. That in itself is a huge improvement over the native source viewer. The second does the same, but with the rendered source (after DOM changes and other javascript fun), which is basically what you get in the Inspector, but with less fuss and easier copying.</p>

<p>Entropy provides the second <del datetime="2010-07-10T15:29:20+00:00">extension</del> <ins datetime="2010-07-10T15:29:20+00:00">(actually, a plugin to be placed in ~/Library/Internet Plugins)</ins>, called the <a href="http://www.entropy.ch/software/macosx/xmlviewplugin/">XML View Plugin</a>. It provides a more Firefox-like view of XML data (which Safari fails to display), and also formats JSON data for easy viewing. For anyone who works with API’s and consumes web services, this is a great tool and a welcome addition to Safari.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/clippable-updated-to-remove-source-code-line-numbers/' rel='bookmark' title='Clippable updated to remove source code line numbers'>Clippable updated to remove source code line numbers</a></li>
<li><a href='http://brettterpstra.com/instapaper-beyond-in-the-safari-extensions-gallery/' rel='bookmark' title='Instapaper Beyond in the Safari Extensions Gallery'>Instapaper Beyond in the Safari Extensions Gallery</a></li>
<li><a href='http://brettterpstra.com/single-keystroke-instapaper-in-google-reader/' rel='bookmark' title='Single-keystroke Instapaper in Google Reader'>Single-keystroke Instapaper in Google Reader</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/new-safari-extensions-give-good-source/">New Safari Extensions give good source</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/new-safari-extensions-give-good-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</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 35/190 queries in 0.469 seconds using xcache
Object Caching 4407/4623 objects using xcache
Content Delivery Network via cdn2.brettterpstra.com

Served from: brettterpstra.com @ 2012-02-09 17:24:35 -->
