<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0">
			<channel>
			<title>Erik Vold&apos;s Blog - Daily UserScript</title>
			<link>http://erikvold.com/blog/index.cfm</link>
			<description>The Robots Are Coming</description>
			<language>en-us</language>
			<pubDate>Fri, 09 Aug 2013 07:19:29 -0400</pubDate>
			<lastBuildDate>Sun, 24 Jan 2010 01:18:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>admin@erikvold.com</managingEditor>
			<webMaster>admin@erikvold.com</webMaster>
			
					<item>
						<title>Greasemonkey Optimization: Convert2RegExp</title>
						<link>http://erikvold.com/blog/index.cfm/2010/1/24/greasemonkey-optimization-convert2regexp</link>
						<description>
							
							&lt;p&gt;
Over the last week I&apos;ve been spending a great deal of time looking over the 
&lt;a title=&quot;Greasemonkey - GitHub&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://github.com/greasemonkey/greasemonkey&quot;&gt;Greasemonkey&lt;/a&gt; 
and 
&lt;a title=&quot;Webmonkey - GitHub&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://github.com/ocornu/webmonkey&quot;&gt;Webmonkey&lt;/a&gt; 
source code,
both because I want to understand both code bases more, but also because I&apos;m interested in Firefox extension 
internals in general. While looking through these two code bases I saw a common file which could be optimized. 
This file was the &lt;a title=&quot;convert2RegExp - Greasemonkey - GitHub&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://github.com/greasemonkey/greasemonkey/blob/master/content/convert2RegExp.js&quot;&gt;&lt;em&gt;convert2RegExp.js&lt;/em&gt;&lt;/a&gt; file, which looks like it came from Adblock at some point, at least in part. 
In fact I saw a number of changes that I could try in order to speed up the function, so I decided to time them all.
&lt;/p&gt;

&lt;h2&gt;Test Factors&lt;/h2&gt;
&lt;h3&gt;Factor I: Check for /\.[^\.ld]*t[^\.td]*l[^\.lt]*d/ in pattern string character loop&lt;/h3&gt;
&lt;p&gt;
&lt;strong&gt;The first thing I noticed was that the regular expression that checks the pattern string for a &amp;quot;.tld&amp;quot; string 
was being run on every pattern input, this seemed obviously bad to me since there was a loop prior 
to the regular expression which runs through the pattern string&apos;s characters, so why didn&apos;t that loop at least check 
for the &amp;quot;.tld&amp;quot; substring first?&lt;/strong&gt; the check could be as simple as making sure all of the required letters 
exist in the string first, or make sure that the &amp;quot;.tld&amp;quot; substring, exactly, is in the pattern string, or 
what I found to be the best way was to make sure the regular expression /\.[^\.ld]*t[^\.td]*l[^\.lt]*d/ matched the 
pattern string via the character loop through the pattern string. &lt;strong&gt;The average cases and best cases 
will go much faster&lt;/strong&gt; despite the fact that the latter case would be 
matching some pattern strings that following tld regular expression (that is already in convert2regexp) would not match, 
thus just adding work in this case, and making the worst possible case even slower.
&lt;/p&gt;


&lt;h3&gt;Factor II: Cache tldStr and tldRegExp&lt;/h3&gt;
&lt;p&gt;
The convert2RegExp( pattern ) function creates the tldRegExp and tldStr from literals on every execution! 
that might be a faster operation I thought, but I expected it to be slower than simply looking up the value of a variable when I timed it, and even though I 
haven&apos;t figured out how to test the memory consumption yet, I expect creating a large string from a string literal over and over again would increase 
the peak memory usage, and thus the garbage collector pause time as well. So, caching the tldStr and tldRegExp seemed like it would be a small win.
&lt;/p&gt;


&lt;h3&gt;Factor III: Use array.push()/array.unshift() and array.join() instead of +=&lt;/h3&gt;
&lt;p&gt;
From what I&apos;ve read about Firefox 3.6 the += operator in loops is optimized to use a single StringBuffer, but there were a few += outside of the loop, 
and I figured some people will probably use versions of Firefox &lt; 3.5 for some time to come still, and using an array there would certainly improve/decrease 
the peak memory usage. I didn&apos;t know what the affect on performance would be, but this change is commonly said to be the better approach for JavaScript in the 
past to present, mainly because of the memory issue. Furthermore, the more memory that is used, the more work there is for the garbage collector to deal with, 
which means your computer is even slower, and that time is hard to measure. I do know that a new feature to Firefox 3.6 is that the garbage collector frees the memory in a new thread, 
which means that older versions of Firefox did not, and that means that the chances of pauses were even greater. For more reading on these changes I am mentioning 
in Firefox 3.6 please &lt;a title=&quot;Firefox 3.6 Speedups&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://hacks.mozilla.org/2010/01/javascript-speedups-in-firefox-3-6/&quot;&gt;read this article&lt;/a&gt;.
&lt;/p&gt;


&lt;h2&gt;The Tests&lt;/h2&gt;

&lt;h3&gt;Description&lt;/h3&gt;

&lt;p&gt;In order to test the factors listed above I knew I needed a number of different versions of the convert2RegExp function, but the other piece I needed 
was a collection of pattern strings to test. I made the different versions of convert2RegExp easily, but when it came to making the pattern set(s) to test 
I had to do some more thinking.&lt;/p&gt;

&lt;h3&gt;Test Pattern Sets&lt;/h3&gt;
&lt;p&gt;
I may not have made the best choice, but I decided to use two pattern sets:
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/patterns.js&quot;&gt;Pattern Set 0&lt;/a&gt;: 3/50 patterns use the magic tld expression, 2/50 do not use the tld expression, but match /\.[^\.ld]*t[^\.td]*l[^\.lt]*d/&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/patterns1.js&quot;&gt;Pattern Set 1&lt;/a&gt;: 2/50 patterns use the magic tld expression&lt;/li&gt;
&lt;/ol&gt;
In retrospect I think testing an even worse case might be advantages, although I don&apos;t suspect the tld expression is 
used very often. It&apos;s hard to say however, I would like to see an audit of userscripts.org, but even with that it&apos;d 
hard to know what the average case is for all Greasemonkey users, even when you take the install counts from 
userscripts.org into account, although all of that perspective would be nice to have.
&lt;/p&gt;
&lt;p&gt;
I am an avid user of Greasemonkey and I write quite a few userscripts, and I find that in practice that there are 
very few times when I would need to userscript to use the magic tld expression, so my feeling is that the ratio is probably closer to 
1 tld pattern per 100 or more.
&lt;/p&gt;

&lt;h3&gt;Test Pages/Versions&lt;/h3&gt;
&lt;p&gt;
I decided to run my tests of the different factors listed above for FF3.5/FF3.6 on WinXP, OSX, and Ubuntu (only FF3.5). The test pages worth pointing out are:
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/original.cfm&quot;&gt;Original&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate3.cfm&quot;&gt;Alternate 3&lt;/a&gt;: test of only factor I&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate5.cfm&quot;&gt;Alternate 5&lt;/a&gt;: test of only factor II&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate6.cfm&quot;&gt;Alternate 6&lt;/a&gt;: test of factor II + minor change to return a value asap.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate11.cfm&quot;&gt;Alternate 11&lt;/a&gt;: test of factor I + II, uses array.unshift() and array.join(), and returns a value asap&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate12.cfm&quot;&gt;Alternate 12&lt;/a&gt;: test of factor I + II, uses array.push() and array.join(), and returns a value asap&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate13.cfm&quot;&gt;Alternate 13&lt;/a&gt;: test of factor I + II, and returns a value asap&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tests/javascript/convert2regexp/alternate15.cfm&quot;&gt;Alternate 15&lt;/a&gt;: test using array.unshift() and array.join() as only change&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;h3&gt;Test Results&lt;/h3&gt;
&lt;p&gt;
Here are the tests I ran and the results I record (the links are to published google docs spreadsheets, all values are in seconds):
&lt;h4&gt;AMD 2.21Ghz, DDR2, WindowsXP&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;FF3.6 Test: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=ta1SodwhpEDu84DGQFha4IQ&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=ta1SodwhpEDu84DGQFha4IQ&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.6 Test I: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tRfipvzCX5k_t5C6x3kNpbw&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tRfipvzCX5k_t5C6x3kNpbw&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.5 Test: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tSLVJBH7QCS69KYKugQZJEg&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tSLVJBH7QCS69KYKugQZJEg&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.5 Test I: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tiZ5WBFo3xyINA1UrVKBG8w&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tiZ5WBFo3xyINA1UrVKBG8w&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Intel Duo 2.0Ghz, DDR3, Mac OSX&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;FF3.6 Test: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tjunrmJDRMql9lraJluyNdw&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tjunrmJDRMql9lraJluyNdw&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.6 Test I: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=t-L9k5rRF1WrEkXy0HiuJww&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=t-L9k5rRF1WrEkXy0HiuJww&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Intel Duo 2.0Ghz, DDR3, Windows XP&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;FF3.5 Test: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tGdaL4e0NKxWfYewPfKEvvA&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tGdaL4e0NKxWfYewPfKEvvA&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.5 Test I: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tSjVusVuI3B_y-77UXaWNjw&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tSjVusVuI3B_y-77UXaWNjw&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.6 Test: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tMHASlMvO9MXJeKJgmecKzQ&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tMHASlMvO9MXJeKJgmecKzQ&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.6 Test I: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tIwBb34GBojadWHiy_snxyw&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tIwBb34GBojadWHiy_snxyw&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Intel 2.0Ghz, DDR, Ubuntu&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;FF3.5 Test: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=t-zxUEHHGclQYuSYbhTroFA&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=t-zxUEHHGclQYuSYbhTroFA&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FF3.5 Test I: &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/pub?key=tRv04ytir3BkH9oGbUozUqA&amp;output=html&quot;&gt;http://spreadsheets.google.com/pub?key=tRv04ytir3BkH9oGbUozUqA&amp;output=html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Each test was using a version of convert2RegExp, on a set of 50 patterns, 2500 times.
&lt;/p&gt;


&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;In all cases alternate 3 was faster than the original.&lt;/li&gt;
&lt;li&gt;In all cases alternate 5 and 6 were faster than the original.&lt;/li&gt;
&lt;li&gt;In all cases alternate 6 seemed to be slightly faster than 5.&lt;/li&gt;
&lt;li&gt;In all cases alternate 15 is much faster than the original for FF3.6, and slightly slower for FF3.5.&lt;/li&gt;
&lt;li&gt;For FF3.5 alternate 13 &gt; alternate 12 ~= original ~&gt; alternate 11&lt;/li&gt;
&lt;li&gt;For FF3.6 alternate 11 &gt; alternate 13 &gt; alternate 12 &gt; original.&lt;/li&gt;
&lt;/ul&gt;
Although for FF3.5 we know that alternate 13 is a bad choice because it uses the += operator which result in O(N^2) characters copied, so we can&apos;t use that in my opinion. The final choice has to be between alternate 11 and alternate 12. 
&lt;/p&gt;
&lt;p&gt;
This is where I need your help, I have no idea why using array.unshift() is so much faster in Firefox 3.6, and taken that it is, and that the majority of Greasemonkey users will be using the latest version of Firefox, should we use array.unshift() and not array.push()? 
&lt;/p&gt;
&lt;p&gt;
&lt;a title=&quot;@erikvold = Twitter&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/erikvold/&quot;&gt;Tweet Me!&lt;/a&gt;
&lt;/p&gt; 
						</description>

						
							<category>Learning</category>
						
							<category>Javascript</category>
						
							<category>Troubleshooting</category>
						
							<category>Daily UserScript</category>
						
							<category>Greasemonkey</category>
						
							<category>Programming</category>
						
							<category>Productivity</category>
						
							<category>Firefox</category>
						
						<pubDate>Sun, 24 Jan 2010 01:18:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2010/1/24/greasemonkey-optimization-convert2regexp</guid>
						
					</item>
					
					<item>
						<title>Goo.gl Now Open For General Use</title>
						<link>http://erikvold.com/blog/index.cfm/2009/12/17/on-googl-short-urls</link>
						<description>
							
							&lt;p&gt;
&lt;a title=&quot;Goo.gl Fix - UserScript&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/scripts/show/64441&quot;&gt;&lt;img style=&quot;border:1px solid #000&quot; alt=&quot;Screen shot of Goo.gl fixed up with the userscript mentioned below&quot; src=&quot;http://img.skitch.com/20091218-kcx2qdprn8qu2fd6t95ttrr1ct.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
Three days ago Google announced it&apos;s release of &lt;a title=&quot;Goo.gl&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://goo.gl/&quot;&gt;Goo.gl&lt;/a&gt; a url shortener which is more reliable and trust worthy (to a user) than other services such as &lt;a rel=&quot;external nofollow&quot; rev=&quot;vote-against&quot; target=&quot;_blank&quot; href=&quot;tinyurl.com&quot;&gt;tinyurl.com&lt;/a&gt;, &lt;a rel=&quot;external nofollow&quot; rev=&quot;vote-against&quot; target=&quot;_blank&quot; href=&quot;http://tr.im/&quot;&gt;tr.im&lt;/a&gt;, &lt;a rel=&quot;external nofollow&quot; rev=&quot;vote-against&quot; target=&quot;_blank&quot; href=&quot;http://bit.ly&quot;&gt;bit.ly&lt;/a&gt;, etc.
&lt;/p&gt;
&lt;p&gt;
Now I think all web publishers should maintain their own url shortener which only they can create urls for and control, for example I bought the domain evold.ca, and use the subdomain r.evold.ca as my url shortener. I primarily use this domain to shorten urls to my other domains, like erikvold.com, but I can and do occasionally use it to create short urls for domains that are not mine. As a user, when I see a blog post that I want to share, I first check if the publisher has published a short url for the page, which any smart web publisher does, but for the other web publishers (the majority atm) I have to create a short url, which I can now use &lt;a title=&quot;Goo.gl&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://goo.gl/&quot;&gt;Goo.gl&lt;/a&gt; to do.
&lt;/p&gt;
&lt;p&gt;
The problem is that &lt;a title=&quot;Goo.gl&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://goo.gl/&quot;&gt;Goo.gl&lt;/a&gt; does not allow users to use it to shorten links directly. &lt;strong&gt;Currently, the Google URL Shortener is only &lt;i&gt;officially&lt;/i&gt; available via the Google Toolbar and FeedBurner&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Well, I noticed that this problem was solved yesterday by a &lt;a rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://chrome.google.com/extensions/detail/iblijlcdoidgdpfknkckljiocdbnlagk&quot;&gt;Google Chrome extension called goo.gl shortener&lt;/a&gt;. &lt;a title=&quot;Amit Agarwal&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://www.labnol.org/about.html&quot;&gt;Amit Agarwal&lt;/a&gt; drew my attention to this extension in &lt;a title=&quot;Create Google Short URLs without the Toolbar&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://www.labnol.org/internet/create-google-short-url/11748/&quot;&gt;a blog post he wrote yesterday&lt;/a&gt;, where he pointed out the important javascript parts needed to create goo.gl short urls. So I took this information and opened Goo.gl up with &lt;a title=&quot;Goo.gl Fix - UserScript&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/scripts/show/64441&quot;&gt;a userscript&lt;/a&gt;, &lt;a title=&quot;Goo.gl Ubiquity Command&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://erikvold.com/tools/ubiquity/googl/index.cfm&quot;&gt;a ubiquity command&lt;/a&gt;, and &lt;a title=&quot;Goo.gl Jetpack&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/227&quot;&gt;a jetpack&lt;/a&gt; to help everyone create short urls with Goo.gl, check them out!
&lt;/p&gt; 
						</description>

						
							<category>Daily UserScript</category>
						
							<category>Internet</category>
						
							<category>UserScripts</category>
						
							<category>Jetpacks</category>
						
							<category>Twitter</category>
						
							<category>Productivity</category>
						
							<category>WebDev</category>
						
							<category>Firefox</category>
						
						<pubDate>Thu, 17 Dec 2009 18:55:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/12/17/on-googl-short-urls</guid>
						
					</item>
					
					<item>
						<title>A Jetpack: Java Settings</title>
						<link>http://erikvold.com/blog/index.cfm/2009/12/13/a-jetpack-java-settings</link>
						<description>
							
							&lt;p&gt;
This Jetpack is meant to help Firefox users quickly enable and disable Java or JavaScript, and it is my third entry for the &lt;a title=&quot;Jetpack 50-line Code Challenge&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://mozillalabs.com/jetpack/2009/11/13/jetpack-50-line-code-challenge/&quot;&gt;Jetpack 50-line Code Challenge&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;&lt;a title=&quot;Java Settings Jetpack&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/158&quot;&gt;Java Settings Jetpack&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;About&lt;/h2&gt;
&lt;p&gt;
This Jetpack will add a &amp;quot;Enable Javascript&amp;quot; and &amp;quot;Enable Java&amp;quot; menu items to your &quot;Tools&quot; menu for quick access to these settings.
&lt;/p&gt;
&lt;h2&gt;Screen Shot&lt;/h2&gt;
&lt;div&gt;&lt;img src=&quot;http://jetpackgallery.mozillalabs.com/images/jetpacks/0/158/158-image-1-large.jpg&quot; /&gt;&lt;/div&gt;
&lt;h3&gt;How To Install&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&quot;Get Firefox!&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://getfirefox.com/&quot;&gt;Get Firefox here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Jetpack - AMO&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/12025&quot;&gt;Get Jetpack here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Java Settings - Jetpack Gallery&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/158&quot;&gt;Get the &amp;quot;Java Settings&amp;quot; Jetpack here&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
 [&lt;a title=&apos;A Jetpack: Java Settings&apos; href=&apos;http://erikvold.com/blog/index.cfm/2009/12/13/a-jetpack-java-settings&apos;&gt;More&lt;/a&gt;]
						</description>

						
							<category>Usability</category>
						
							<category>Jetpacks</category>
						
							<category>Daily UserScript</category>
						
							<category>Productivity</category>
						
							<category>Security</category>
						
							<category>Firefox</category>
						
						<pubDate>Sun, 13 Dec 2009 11:05:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/12/13/a-jetpack-java-settings</guid>
						
					</item>
					
					<item>
						<title>A Jetpack: Firefox &apos;Restart&apos; Menu Item</title>
						<link>http://erikvold.com/blog/index.cfm/2009/12/13/a-jetpack-firefox-restart-menu-item</link>
						<description>
							
							&lt;p&gt;
I wrote this Jetpack as another entry for the &lt;a title=&quot;Jetpack 50-line Code Challenge&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://mozillalabs.com/jetpack/2009/11/13/jetpack-50-line-code-challenge/&quot;&gt;Jetpack 50-line Code Challenge&lt;/a&gt;, it is simply a &apos;Restart&apos; menu item for Firefox&apos;s &apos;File&apos; menu.
&lt;/p&gt;
&lt;p&gt;
When I was trying to come up with ideas I starting thinking about replacing a number of Firefox extensions I currently use with a lightweight Jetpack. So I instantly thought about &lt;a title=&quot;Quick Restart - Firefox Addon&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-against&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3559&quot;&gt;Quick Restart&lt;/a&gt;, by Juan Carlos Avila B, which I have used a lot in the past, but it had a bunch of extra data packaged with it that I didn&apos;t want such as localization (albeit I&apos;m sure this is something others want), xul, css, and images files.
&lt;/p&gt;
&lt;p&gt;
I&apos;ve used Quick Restart for some time now, and still think it is a great addon, but I&apos;m pleased to say that there is a Jetpack option available now.
&lt;/p&gt;
&lt;h2&gt;&lt;a title=&quot;Firefox &apos;Restart&apos; Menu Item - Jetpack Gallery&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/127&quot;&gt;Firefox &apos;Restart&apos; Jetpack&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;About&lt;/h3&gt;
&lt;p&gt;
This Jetpack is using source lifted from the &lt;a title=&quot;Ubiquity - Firefox Addon&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/9527&quot;&gt;Ubiquity Firefox extension&lt;/a&gt;&apos;s built-in &apos;restart&apos; command.
&lt;/p&gt;
&lt;h3&gt;Screen Shot&lt;/h3&gt;
&lt;div&gt;&lt;img alt=&quot;Screen shot of the &apos;Restart&apos; menu item in Firefox&apos;s &apos;File&apos; menu&quot; src=&quot;http://jetpackgallery.mozillalabs.com/images/jetpacks/0/127/127-image-1-medium.jpg&quot; /&gt;&lt;/div&gt;
&lt;h3&gt;How To Install&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&quot;Get Firefox!&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://getfirefox.com/&quot;&gt;Get Firefox here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Jetpack - AMO&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/12025&quot;&gt;Get Jetpack here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Firefox &apos;Restart&apos; Menu Item - Jetpack Gallery&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/127&quot;&gt;Get the &amp;quot;Firefox &apos;Restart&apos; Menu Item&amp;quot; Jetpack here&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
 [&lt;a title=&apos;A Jetpack: Firefox &apos;Restart&apos; Menu Item&apos; href=&apos;http://erikvold.com/blog/index.cfm/2009/12/13/a-jetpack-firefox-restart-menu-item&apos;&gt;More&lt;/a&gt;]
						</description>

						
							<category>Usability</category>
						
							<category>Jetpacks</category>
						
							<category>Browsers</category>
						
							<category>Daily UserScript</category>
						
							<category>Productivity</category>
						
							<category>Firefox</category>
						
						<pubDate>Sun, 13 Dec 2009 09:03:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/12/13/a-jetpack-firefox-restart-menu-item</guid>
						
					</item>
					
					<item>
						<title>A Jetpack: Tweet This!</title>
						<link>http://erikvold.com/blog/index.cfm/2009/12/12/a-jetpack-tweet-this</link>
						<description>
							
							&lt;p&gt;
I wrote my first entry for the &lt;a title=&quot;Jetpack 50-line Code Challenge&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://mozillalabs.com/jetpack/2009/11/13/jetpack-50-line-code-challenge/&quot;&gt;Jetpack 50-line Code Challenge&lt;/a&gt; a few weeks ago and I would like to share it with you now. The Jetpack is called &lt;a title=&quot;Tweet This! - Jetpack Gallery&quot; rel=&quot;external info&quot; rev=&quot;about&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/136&quot;&gt;Tweet This!&lt;/a&gt;, and it is meant to help you quickly tweet about a page you are viewing in &lt;a title=&quot;Mozilla Firefox&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.mozilla.com/firefox/&quot;&gt;Firefox&lt;/a&gt; with the document&apos;s published short url, if it is defined (otherwise &lt;a title=&quot;Tr.im&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tr.im/&quot;&gt;tr.im&lt;/a&gt; is used).
&lt;/p&gt;
&lt;h2&gt;&lt;a title=&quot;Tweet This! - Jetpack Gallery&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/136&quot;&gt;Tweet This!&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Details&lt;/h3&gt;
&lt;p&gt;The &lt;a title=&quot;Tweet This! - Jetpack Gallery&quot; rel=&quot;external info&quot; rev=&quot;about&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/136&quot;&gt;Tweet This!&lt;/a&gt; Jetpack adds a &apos;Tweet This!&apos; menu item to Firefox&apos;s &apos;Bookmarks&apos; menu and context menu, which when used, will allow the user to Tweet about the page they are on. A user can select some text on the page, or else the page&apos;s title will be used for some text in the tweet, and then the Jetpack will first check if the text + long url is less than 140 characters long, and just use the long url if so, but otherwise it will use my &lt;a title=&quot;Get Short URL&quot; rev=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://getshorturl.appspot.com/&quot;&gt;Get Short URL&lt;/a&gt; service (hosted by Google App Engine) to find the shortest url for the page, which is published by the page, and if one has not been published which is smaller than a length you can change in settings, but is by default 35. If the shortest url found is not shorter than the setting length specified then the &lt;a title=&quot;Tr.im&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tr.im/&quot;&gt;tr.im&lt;/a&gt; service is used to create a short url for the page.
&lt;/p&gt;
&lt;p&gt;
After the Jetpack has a short url for the page, and some text to tweet about it, it will finally trim the text so that the tweet is equal to 140 chars if necessary, then send the tweet, and notify you with the tweet if it has been sent (also the username that it was sent from is displayed).
&lt;/p&gt;
&lt;h3&gt;Notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
If you do not see a notification, then an error occurred, and no tweet was sent, so it will be safe to try again, just make sure you wait about a minute before trying again (don&apos;t be too hasty). An error would only occur if the &lt;a title=&quot;Tr.im&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tr.im/&quot;&gt;Tr.im&lt;/a&gt; or &lt;a title=&quot;Twitter&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt; servers return an error.
&lt;/li&gt;
&lt;li&gt;The jetpack settings are pretty basic, and while they provide a range type they do not show the range to the user, or the value the user has selected in the range. Hopefully this will be changed in short time, but until then I&apos;ll just let you know here the Max URL Length range is from 20 to 100.&lt;/li&gt;
&lt;/ul&gt;
 [&lt;a title=&apos;A Jetpack: Tweet This!&apos; href=&apos;http://erikvold.com/blog/index.cfm/2009/12/12/a-jetpack-tweet-this&apos;&gt;More&lt;/a&gt;]
						</description>

						
							<category>Jetpacks</category>
						
							<category>Twitter</category>
						
							<category>Daily UserScript</category>
						
							<category>Automation</category>
						
							<category>Productivity</category>
						
							<category>Firefox</category>
						
						<pubDate>Sat, 12 Dec 2009 23:18:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/12/12/a-jetpack-tweet-this</guid>
						
					</item>
					
					<item>
						<title>Would You Like To Know More?</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/28/would-you-like-to-know-more</link>
						<description>
							
							&lt;p&gt;
This is just a last moment idea inspired by the movie &lt;a title=&quot;Starship Troopers&quot; rel=&quot;external info&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Starship_Troopers_%28film%29&quot;&gt;Starship Troopers&lt;/a&gt; which flashed in to my mind a couple of days ago as I was thinking about Jetpacks for the &lt;a title=&quot;Jetpack for Learning Design Challenge&quot; rel=&quot;external info&quot; target=&quot;_blank&quot; href=&quot;http://design-challenge.mozillalabs.com/jetpack-for-learning/&quot;&gt;Jetpack for Learning Design Challenge&lt;/a&gt;. It is primarily a Microformat/Link Type proposal for rel-info with some ideas and prototypes demonstrating how it could be used.
&lt;/p&gt;
&lt;h2&gt;Abstract&lt;/h2&gt;
&lt;p&gt;
When you are reading something on the web there are usually pages which exist elsewhere on the web that would provide background information, and further reading if you desired to dig deeper into the subject(s) you are reading about. Sometimes some of those pages are linked to from the article you are on, but often the link wouldn&apos;t make sense in the context of the content, and using a link tag isn&apos;t very useful to a user, so the link is not made.
&lt;/p&gt;
&lt;p&gt;
I propose a rel-info &lt;a title=&quot;HTML 5 Link Types&quot; rel=&quot;external info&quot; target=&quot;_blank&quot; href=&quot;http://dev.w3.org/html5/spec/Overview.html#linkTypes&quot;&gt;link type&lt;/a&gt;, even if just as a Microformat, for &apos;a&apos; and &apos;link&apos; tags to provide a link to context-sensitive information.
&lt;/p&gt;
&lt;p&gt;
With rel-info a user can read more about the Movie that was discussed at Netflix or IMDB easily for example, because the publisher (or a script the user subscribes to, more on this later) provided a rel-info link which the user can easily find and follow with a Jetpack, Firefox extension, or some other browser extension.
&lt;/p&gt;
&lt;h2&gt;Proposal&lt;/h2&gt;
&lt;p&gt;
When rel-info links are provided on a page browser extensions can easily extract them from the page, which can lead to &lt;strong&gt;a large number of use cases&lt;/strong&gt;, of which I am sure I have only just scratched the surface. There is another side to this coin however which is that &lt;strong&gt;there are a large number of ways that rel-info links might be added to a page&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Let&apos;s explore the latter case, first the person who published the page could add rel-info links, but then browser extensions could add rel-info links, they could also search for and remove rel-info links. A user could subscribe to a person&apos;s or institution&apos;s suggestion feed or script which adds and/or removes rel-info links to pages, along with using a AI based browser extensions to add rel-info links.
&lt;/p&gt;
&lt;p&gt;
When the rel-info links are going to be consumed there are some other interesting possibilities, for example a browser extension could filter the links by a HTML 5 &apos;data-topic&apos; attribute by keeping a list of topics that the user dislikes or likes, the domain could also be used for filtering. A browser extension could allow the user to mark pages as read so that they are removed from pages in the future as another example.
&lt;/p&gt;
&lt;h2&gt;Prototypes&lt;/h2&gt;
&lt;p&gt;
To test this link type out with a Jetpack I first had to add it to some pages, so I decided to write a couple of UserScripts to do this demonstrating how they can be dynamically added to pages by anyone even users themselves. The first userscript was to &lt;a title=&quot;Make All IMDB Title Links Info Links&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/scripts/show/62882&quot;&gt;add the rel-info link type to IMDB links&lt;/a&gt;, and another to &lt;a title=&quot;Make All Wikipedia Links Info Links&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/scripts/show/62878&quot;&gt;add the rel-info link type to Wikipedia links&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you install the above UserScripts then you should find rel=&quot;info&quot; or rel=&quot;... info&quot; on your IMDB and Wikipedia links. Once you have done that you can check out and install the &lt;a title=&quot;Would You Like To Know More?&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/163&quot;&gt;&amp;quot;Would You Like To Know More?&amp;quot; Jetpack&lt;/a&gt;. This is a slidebar Jetpack, and when you open this slidebar the focused tab is then scanned for rel-info links, if any are found then they are displayed in a list for you to choose from, if you click one of the provided links a new tab will be opened for the new page.
&lt;/p&gt;
&lt;p&gt;
These UserScripts and the Jetpack take advantage of HTML 5 &apos;data-&apos; attributes, by adding a &apos;data-source&apos; attribute to the rel-info links added on the userscript side, which the jetpack was written to check for and display if found. This is an example of how HTML 5 &apos;data-&apos; attributes can be used with the rel-info link type which I propose to create more interesting results.
&lt;/p&gt; 
						</description>

						
							<category>Learning</category>
						
							<category>Ubiquity</category>
						
							<category>Information Architecture</category>
						
							<category>Wikipedia</category>
						
							<category>Internet</category>
						
							<category>UserScripts</category>
						
							<category>Usability</category>
						
							<category>Jetpacks</category>
						
							<category>Microformats</category>
						
							<category>HTML</category>
						
							<category>Productivity</category>
						
							<category>WebDev</category>
						
							<category>Daily UserScript</category>
						
						<pubDate>Sat, 28 Nov 2009 21:05:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/28/would-you-like-to-know-more</guid>
						
					</item>
					
					<item>
						<title>A Jetpack: Google Web History</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/18/a-jetpack-google-web-history</link>
						<description>
							
							&lt;p&gt;This Jetpack adds a &quot;Show Google Web History&quot; menu item to your Firefox &quot;History&quot; menu.
&lt;/p&gt;
&lt;h2&gt;Get it at:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jetpack Gallery:&lt;/strong&gt; &lt;a title=&quot;Google Web History - Jetpack Gallery&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/123&quot;&gt;http://jetpackgallery.mozillalabs.com/jetpacks/123&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Userscripts.org:&lt;/strong&gt; &lt;a title=&quot;Google Web History - Userscripts.org&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/jetpacks/270&quot;&gt;http://userscripts.org/jetpacks/270&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a title=&quot;Google Web History - GitHub&quot; target=&quot;_blank&quot; href=&quot;http://github.com/erikvold/google-web-history-jetpack&quot;&gt;http://github.com/erikvold/google-web-history-jetpack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; 
						</description>

						
							<category>Usability</category>
						
							<category>Daily UserScript</category>
						
							<category>Productivity</category>
						
							<category>Firefox</category>
						
						<pubDate>Wed, 18 Nov 2009 05:48:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/18/a-jetpack-google-web-history</guid>
						
					</item>
					
					<item>
						<title>A Jetpack: Greasemonkey Context Menu</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/18/a-jetpack-greasemonkey-context-menu</link>
						<description>
							
							&lt;p&gt;
This Jetpack will add the Greasemonkey menu commands to your context menu. 
&lt;/p&gt;
&lt;h2&gt;Screen Shot&lt;/h2&gt;
&lt;img src=&quot;http://jetpackgallery.mozillalabs.com/images/jetpacks/0/118/118-image-1-medium.jpg&quot;/&gt;
&lt;h2&gt;Get it at:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jetpack Gallery:&lt;/strong&gt; &lt;a title=&quot;Greasemonkey Context Menu - Jetpack Gallery&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/118&quot;&gt;http://jetpackgallery.mozillalabs.com/jetpacks/118&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Userscripts.org:&lt;/strong&gt; &lt;a title=&quot;Greasemonkey Context Menu - Userscripts.org&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/jetpacks/267&quot;&gt;http://userscripts.org/jetpacks/267&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a title=&quot;Greasemonkey Context Menu - GitHub&quot; target=&quot;_blank&quot; href=&quot;http://github.com/erikvold/greasemonkey-menu-jetpack&quot;&gt;http://github.com/erikvold/greasemonkey-menu-jetpack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; 
						</description>

						
							<category>Usability</category>
						
							<category>Jetpacks</category>
						
							<category>Daily UserScript</category>
						
							<category>Greasemonkey</category>
						
							<category>Productivity</category>
						
							<category>Firefox</category>
						
						<pubDate>Wed, 18 Nov 2009 05:32:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/18/a-jetpack-greasemonkey-context-menu</guid>
						
					</item>
					
					<item>
						<title>The Daily UserScript: UserScripts.org Linkify Tag Clouds</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/16/the-daily-userscript-userscriptsorg-linkify-tag-clouds</link>
						<description>
							
							&lt;p&gt;
This userscript will linkify some (maybe all) tags clouds on userscripts.org that are not already linkified. 
&lt;/p&gt;

&lt;h2&gt;The Unpleasantry:&lt;/h2&gt;
&lt;p&gt;
The tag cloud on user profile pages is not linkified, meaning users have to manually search for the tag..
&lt;/p&gt;

&lt;h2&gt;The Alleviation:&lt;/h2&gt;
&lt;p&gt;
Once you install the &lt;a href=&quot;http://userscripts.org/scripts/show/61976&quot; title=&quot;UserScripts.org Linkify Tag Clouds&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot;&gt;&amp;quot;UserScripts.org Linkify Tag Clouds&amp;quot; UserScript&lt;/a&gt; the tag clouds on user profile pages will be linkified.
&lt;/p&gt; 
						</description>

						
							<category>Usability</category>
						
							<category>UserScripts</category>
						
							<category>Daily UserScript</category>
						
							<category>Productivity</category>
						
						<pubDate>Mon, 16 Nov 2009 20:24:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/16/the-daily-userscript-userscriptsorg-linkify-tag-clouds</guid>
						
					</item>
					
					<item>
						<title>A Jetpack: Twitter Message Notifier</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/16/a-jetpack-twitter-message-notifier</link>
						<description>
							
							&lt;p&gt;
This is a simple Jetpack Twitter notifier, which checks for new mentions or direct messages for your account and notifies you of them.
&lt;/p&gt;
&lt;p&gt;
The Jetpack loops through tweets to notify you about every 7.5 seconds, until it has no more remaining, then waits 5mins and checks for more DMs or mentions from your Twitter account.
&lt;/p&gt;
&lt;h2&gt;Get it at:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jetpack Gallery:&lt;/strong&gt; &lt;a title=&quot;Twitter Message Notifier - Jetpack Gallery&quot; target=&quot;_blank&quot; href=&quot;http://jetpackgallery.mozillalabs.com/jetpacks/115&quot;&gt;http://jetpackgallery.mozillalabs.com/jetpacks/115&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Userscripts.org:&lt;/strong&gt; &lt;a title=&quot;Twitter Message Notifier - Userscripts.org&quot; target=&quot;_blank&quot; href=&quot;http://userscripts.org/jetpacks/266&quot;&gt;http://userscripts.org/jetpacks/266&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a title=&quot;Twitter Message Notifier - GitHub&quot; target=&quot;_blank&quot; href=&quot;http://github.com/erikvold/twitter-msg-notifier-jetpack&quot;&gt;http://github.com/erikvold/twitter-msg-notifier-jetpack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; 
						</description>

						
							<category>Twitter</category>
						
							<category>Daily UserScript</category>
						
							<category>Automation</category>
						
							<category>Jetpacks</category>
						
							<category>Firefox</category>
						
						<pubDate>Mon, 16 Nov 2009 20:11:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/16/a-jetpack-twitter-message-notifier</guid>
						
					</item>
					
					<item>
						<title>The Daily UserScript: Add The &quot;I&apos;m Feeling Lucky&quot; Button To Google Searches</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-add-the-im-feeling-lucky-button-to-google-searches</link>
						<description>
							
							&lt;p&gt;
This userscript adds the &amp;quot;I&apos;m Feeling Lucky&amp;quot; button to Google search result pages.
&lt;/p&gt;

&lt;p&gt;
Once you install the &lt;a href=&quot;http://userscripts.org/scripts/show/61886&quot; title=&quot;Add The &amp;quot;I&apos;m Feeling Lucky&amp;quot; Button To Google Searches&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot;&gt;&amp;quot;Add The &amp;quot;I&apos;m Feeling Lucky&amp;quot; Button To Google Searches&amp;quot; UserScript&lt;/a&gt; then Google search results pages will have the &amp;quot;I&apos;m Feeling Lucky&amp;quot; button.
&lt;/p&gt; 
						</description>

						
							<category>UserScripts</category>
						
							<category>Daily UserScript</category>
						
						<pubDate>Sat, 14 Nov 2009 06:57:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-add-the-im-feeling-lucky-button-to-google-searches</guid>
						
					</item>
					
					<item>
						<title>The Daily UserScript: Stumble On Blank &quot;I&apos;m Feeling Lucky&quot; Google Searches</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-stumble-on-blank-im-feeling-lucky-google-searches</link>
						<description>
							
							&lt;p&gt;
If you leave the Google search field blank and hit the &amp;quot;I&apos;m Feeling Lucky&amp;quot; then this userscript will have StumbleUpon send you to a random page.
&lt;/p&gt;

&lt;p&gt;
Get the &lt;a href=&quot;http://userscripts.org/scripts/show/61883&quot; title=&quot;Stumble On Blank &amp;quot;I&apos;m Feeling Lucky&amp;quot; Google Searches&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot;&gt;Stumble On Blank &amp;quot;I&apos;m Feeling Lucky&amp;quot; Google Searches UserScript here&lt;/a&gt;.
&lt;/p&gt; 
						</description>

						
							<category>UserScripts</category>
						
							<category>Daily UserScript</category>
						
						<pubDate>Sat, 14 Nov 2009 06:45:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-stumble-on-blank-im-feeling-lucky-google-searches</guid>
						
					</item>
					
					<item>
						<title>The Daily UserScript: GitHub Auto Expand Watched Repository List</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-github-auto-expand-watched-repository-list</link>
						<description>
							
							&lt;p&gt;
This userscript will automatically expand your watched repository list on your dashboard at &lt;a title=&quot;GitHub&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;.
&lt;/p&gt;

&lt;h2&gt;The Unpleasantry:&lt;/h2&gt;
&lt;p&gt;
Having to click the link that expands my watched repository list every time I want to see the whole list.
&lt;/p&gt;

&lt;h2&gt;The Alleviation:&lt;/h2&gt;
&lt;p&gt;
Once you install the &lt;a href=&quot;http://userscripts.org/scripts/show/61468&quot; title=&quot;GitHub Auto Expand Watched Repository List&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot;&gt;&amp;quot;GitHub Auto Expand Watched Repository List&amp;quot; UserScript&lt;/a&gt; the watched repository list will expand automatically.
&lt;/p&gt; 
						</description>

						
							<category>Usability</category>
						
							<category>UserScripts</category>
						
							<category>Daily UserScript</category>
						
						<pubDate>Sat, 14 Nov 2009 06:25:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-github-auto-expand-watched-repository-list</guid>
						
					</item>
					
					<item>
						<title>The Daily UserScript: w3schools Ads Remover</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-w3schools-ads-remover</link>
						<description>
							
							&lt;p&gt;
This userscripts removes most of the ads from &lt;a title=&quot;W3Schools&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://w3schools.com&quot;&gt;w3schools.com&lt;/a&gt;.
&lt;/p&gt;

&lt;h2&gt;The Unpleasantry:&lt;/h2&gt;
&lt;p&gt;
Seeing ads.
&lt;/p&gt;

&lt;h2&gt;The Alleviation:&lt;/h2&gt;
&lt;p&gt;
Once you install the &lt;a href=&quot;http://userscripts.org/scripts/show/61070&quot; title=&quot;w3schools Ads Remover&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot;&gt;&amp;quot;w3schools Ads Remover&amp;quot; UserScript&lt;/a&gt; most, if not all, ads will be removed from &lt;a title=&quot;W3Schools&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://w3schools.com&quot;&gt;w3schools.com&lt;/a&gt;.
&lt;/p&gt; 
						</description>

						
							<category>Usability</category>
						
							<category>Readability</category>
						
							<category>Daily UserScript</category>
						
							<category>UserScripts</category>
						
						<pubDate>Sat, 14 Nov 2009 06:11:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/14/the-daily-userscript-w3schools-ads-remover</guid>
						
					</item>
					
					<item>
						<title>The Daily UserScript: Remove Ads From Mixx</title>
						<link>http://erikvold.com/blog/index.cfm/2009/11/10/the-daily-userscript-remove-ads-from-mixx</link>
						<description>
							
							&lt;p&gt;
Today&apos;s userscript is another simple one to remove ads, this time from &lt;a title=&quot;Mixx&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://mixx.com/&quot;&gt;Mixx.com&lt;/a&gt;. Even if you are using Adblock Plus or something similar to block ads from being displayed at Mixx, the space where they would be still remains, this userscript will remove those spaces that that the pages at Mixx are easier to read.
&lt;/p&gt;

&lt;h2&gt;The Unpleasantry:&lt;/h2&gt;
&lt;p&gt;
Seeing Ads at Mixx.
&lt;/p&gt;

&lt;h2&gt;The Alleviation:&lt;/h2&gt;
&lt;p&gt;
Once you install the &lt;a href=&quot;http://userscripts.org/scripts/show/60976&quot; title=&quot;Mixx Ads Remover&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot;&gt;&amp;quot;Mixx Ads Remover&amp;quot; UserScript&lt;/a&gt; most if not all of the ads will be removed from Mixx.
&lt;/p&gt; 
						</description>

						
							<category>Mixx</category>
						
							<category>Readability</category>
						
							<category>Daily UserScript</category>
						
							<category>UserScripts</category>
						
							<category>Productivity</category>
						
						<pubDate>Tue, 10 Nov 2009 20:30:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2009/11/10/the-daily-userscript-remove-ads-from-mixx</guid>
						
					</item>
					</channel></rss>