<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0">
			<channel>
			<title>Erik Vold&apos;s Blog</title>
			<link>http://erikvold.com/blog/index.cfm</link>
			<description>The Robots Are Coming</description>
			<language>en-us</language>
			<pubDate>Fri, 09 Aug 2013 09:30:54 -0400</pubDate>
			<lastBuildDate>Tue, 28 Aug 2012 09:56: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>New Work Blog Online</title>
						<link>http://erikvold.com/blog/index.cfm/2012/8/28/new-work-blog-online</link>
						<description>
							
							&lt;p&gt;
I&apos;ve been wanting to start a new blog to separate my work from this website, which I&apos;m not sure what I will do with anymore.. then I started working at Mozilla about a month ago, and now I need the new blog!  So I have started it over at &lt;a title=&quot;Voldzilla&quot; href=&quot;http://work.erikvold.com&quot;&gt;work.erikvold.com&lt;/a&gt;, I call it &lt;a title=&quot;Voldzilla&quot; href=&quot;http://work.erikvold.com&quot;&gt;Voldzilla&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Right now the site is ugly, really ugly, because it is very plain, and it hasn&apos;t got any content at the moment.  The content is something that I have time for, the design is going to take time.. but if you would like to help with the look and feel, or if anything at all bothers you about the site, then you can &lt;a href=&quot;https://github.com/erikvold/erikvold.github.com&quot;&gt;contribute here!!&lt;/a&gt;
&lt;/p&gt; 
						</description>

						
							<category>Mozilla</category>
						
							<category>Jetpack</category>
						
						<pubDate>Tue, 28 Aug 2012 09:56:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2012/8/28/new-work-blog-online</guid>
						
					</item>
					
					<item>
						<title>70,000 More Extensions for Fennec!</title>
						<link>http://erikvold.com/blog/index.cfm/2011/9/6/70000-more-extensions-for-fennec</link>
						<description>
							
							&lt;p&gt;
Ever since I got my Android and installed Fennec I&apos;ve wanted to add support for user scripts to Fennec.  &lt;a title=&quot;Scriptish Supports Fennec!&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;http://scriptish.org/news/2011/09/05/scriptish-supports-fennec.html&quot;&gt;I&apos;m happy to report that as of the last Scriptish release, you can install any user script on Fennec now!&lt;/a&gt;.  So, now you can user script the mobile web to your heart&apos;s content. In fact, there&apos;s over 70,000 user scripts on &lt;a title=&quot;Userscripts.org&quot; target=&quot;_blank&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;userscripts.org&quot;&gt;userscripts.org&lt;/a&gt; alone.
&lt;/p&gt; 
						</description>

						
							<category>UserScripts</category>
						
							<category>Fennec</category>
						
							<category>Firefox Add-ons</category>
						
							<category>Scriptish</category>
						
						<pubDate>Tue, 06 Sep 2011 01:40:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/9/6/70000-more-extensions-for-fennec</guid>
						
					</item>
					
					<item>
						<title>Get Scriptish News @ Scriptish.org</title>
						<link>http://erikvold.com/blog/index.cfm/2011/8/22/get-scriptish-news--scriptishorg</link>
						<description>
							
							&lt;p&gt;
For those of you that follow my blog for Scriptish news, you should know that there is a new website, &lt;a title=&quot;Scriptish.org&quot; taget=&quot;_blank&quot; rel=&quot;external&quot; href=&quot;http://scriptish.org&quot;&gt;scriptish.org&lt;/a&gt;, with a &lt;a title=&quot;Scriptish Blog&quot; taget=&quot;_blank&quot; rel=&quot;external&quot; href=&quot;http://scriptish.org/blog&quot;&gt;Scriptish blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So go to &lt;a title=&quot;Scriptish.org&quot; taget=&quot;_blank&quot; rel=&quot;external&quot; href=&quot;http://scriptish.org&quot;&gt;scriptish.org&lt;/a&gt; for your Scriptish news!  though I&apos;ll probably still write about Scriptish and user scripts on this blog as well.
&lt;/p&gt; 
						</description>

						
							<category>UserScripts</category>
						
							<category>Scriptish</category>
						
						<pubDate>Mon, 22 Aug 2011 15:00:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/8/22/get-scriptish-news--scriptishorg</guid>
						
					</item>
					
					<item>
						<title>Using Jetpack SDK, part 2: Building Add-ons</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/29/using-jetpack-sdk-part-2-building-addons</link>
						<description>
							
							&lt;p&gt;
Well after &lt;a title=&quot;Using Jetpack SDK, part 1: WTF is CFX?&quot; rev=&quot;vote-for&quot; href=&quot;http://erikvold.com/blog/index.cfm/2011/6/28/using-jetpack-sdk-part-1-wtf-is-cfx&quot;&gt;part 1 on cfx&lt;/a&gt;, you should know what the cfx command line tool is, so let&apos;s see if you can build a add-on with it now.  FYI, I&apos;m going to assume you know how to use git, because if you don&apos;t then you should learn asap.
&lt;/p&gt;

&lt;p&gt;
First of all you&apos;ll need to have the &lt;a href=&quot;https://addons.mozilla.org/en-US/developers/builder&quot; title=&quot;Jetpack SDK&quot;&gt;Jetpack SDK (aka Add-on SDK) source downloaded&lt;/a&gt;, I recommend getting the source from &lt;a title=&quot;Mozilla Jetpack SDK -  Github&quot; href=&quot;https://github.com/mozilla/addon-sdk&quot;&gt;github here&lt;/a&gt;.  I typically keep all git clones from github in a folder called &amp;quot;github&amp;quot; someplace on my HD.  After you&apos;ve got the Jetpack SDK downloaded, you will want to clone my simple &lt;a href=&quot;https://github.com/erikvold/copy-html-jetpack&quot; title=&quot;Copy HTML Firefox Add-on - Github&quot;&gt;Copy HTML&lt;/a&gt; add-on for Firefox.
&lt;/p&gt;

&lt;p&gt;
Once you have the Jetpack source, and the Copy HTML source downloaded, navigate to the Jetpack SDK clone in a shell program and &lt;a title=&quot;Jetpack SDK Readme.txt - Github&quot; href=&quot;https://github.com/mozilla/addon-sdk/blob/master/README.txt&quot; rel=&quot;external nofollow&quot;&gt;follow these instructions&lt;/a&gt;.  You should have gotten a message that says something like &amp;quot;Welcome to the Add-on SDK. Run &apos;cfx docs&apos; for assistance.&amp;quot;. Running cfx docs here would allow you to access the Jetpack SDK documentation, which is very valuable, and you should get familiar with it.  You can disregard the message for now though, and navigate to the Copy HTML clone in your same shell window, once you are there you can use two important commands which build your addon; the first is &amp;quot;cfx xpi&amp;quot; which will build a xpi, and the second is &amp;quot;cfx run&amp;quot; which will build the add-on temporarily and open it in Firefox instance for you to test it out. Typically you will use &amp;quot;cfx run&amp;quot; and few times, testing changes out, before finally running &amp;quot;cfx xpi&amp;quot; and distributing your add-on.
&lt;/p&gt;

&lt;p&gt;
The &lt;a title=&quot;Copy HTML&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/copy-html/&quot;&gt;Copy HTML add-on&lt;/a&gt; is a simple add-on which adds a context menu called &amp;quot;Copy HTML&amp;quot; that allows one to copy the HTML source code for the area selected.  So if you highlight a blog post, and copy the html, then you will have the html source of the blog post in your clipboard, img tags, anchor links, and all.
&lt;/p&gt;

&lt;p&gt;
Well give this a try, and see if you can get it to work, so that you will be ready for part 3 on using packages.
&lt;/p&gt; 
						</description>

						
							<category>Add-on SDK</category>
						
							<category>Jetpack</category>
						
						<pubDate>Wed, 29 Jun 2011 01:42:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/29/using-jetpack-sdk-part-2-building-addons</guid>
						
					</item>
					
					<item>
						<title>Using Jetpack SDK, part 1: WTF is CFX?</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/28/using-jetpack-sdk-part-1-wtf-is-cfx</link>
						<description>
							
							&lt;p&gt;
I&apos;m starting a new series on using the &lt;a title=&quot;Jetpack SDK&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;https://github.com/mozilla/addon-sdk/&quot;&gt;Jetpack SDK&lt;/a&gt;, as I like to call it; you may know it as the Add-on SDK, and I wold not hold that against you ;).  I won&apos;t be talking about the &lt;a title=&quot;Add-on Builder&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;https://builder.addons.mozilla.org/&quot;&gt;Add-on Builder&lt;/a&gt;, that&apos;s another topic that I will save for later.  If you are new to the Jetpack SDK, and think you are capable of running it via command line, then I hope that this will be a good starting point for you.
&lt;/p&gt;

&lt;p&gt;
So you may be asking yourself &quot;just wtf is cfx?&quot; at this point.  Well, cfx is short for &lt;strong&gt;C&lt;/strong&gt;uddle&lt;strong&gt;f&lt;/strong&gt;ish e&lt;strong&gt;x&lt;/strong&gt;ecuter iirc, but the point I want to make is that the name doesn&apos;t really matter, it was just a arbitrary name for the tool afaik.  However, cfx is the command-line tool provided by the Jetpack SDK that will allow you to build, run, and test add-ons that you develop with it, as well as allow you to access the documentation for the Jetpack SDK, and other packages that you may be using; so the name may not be important, but the tool is.  &lt;a href=&quot;https://addons.mozilla.org/en-US/developers/docs/sdk/latest&quot; title=&quot;Jetpack SDK documentation&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot;&gt;The latest version of the documentation can be accessed here&lt;/a&gt;, but you will be able to access the documentation of third party packages (more on what these are to come!) with the cfx command-line tool, so it&apos;s usually easier to read the documentation with the cfx tool imo.
&lt;/p&gt;

&lt;p&gt;
&lt;a title=&quot;Installing Jetpack SDK&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/addon-development/installation.html&quot;&gt;The instructions on how to install cfx&lt;/a&gt; are here, and &lt;a title=&quot;Using cfx - Jetpack SDK&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/addon-development/cfx-tool.html&quot;&gt;the instructions on how to use cfx are here&lt;/a&gt;.   So I won&apos;t bore you with those details, but I suggest you read them over, so that you are ahead of the game for part 2 &quot;how to build a addon&quot;.
&lt;/p&gt; 
						</description>

						
							<category>Add-on SDK</category>
						
							<category>Mozilla</category>
						
							<category>Jetpack</category>
						
						<pubDate>Tue, 28 Jun 2011 02:57:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/28/using-jetpack-sdk-part-1-wtf-is-cfx</guid>
						
					</item>
					
					<item>
						<title>Restartless Firefox Add-ons, Part 8: Require, CommonJS, and Jetpack</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/19/restartless-firefox-addons-part-8-require-commonjs-and-jetpack</link>
						<description>
							
							&lt;p&gt;
Jetpack is the future.  Give the old school add-ons up, it&apos;s over.  Because sooner or later everything will be possible with some &lt;a title=&quot;CommonJS&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;http://www.commonjs.org/&quot;&gt;CommonJS&lt;/a&gt; style module, which would mean you&apos;d be a fool to ignore these modules.
&lt;/p&gt;

&lt;p&gt;
At the moment, I see normal restartless add-ons as those that write their own bootstrap.js file, which is a method I&apos;ve been trying to help people learn to do with this series, because I felt it would be a stepping stone to converting existing old school add-ons to Jetpacks which I needed, and that other developers might need as well.  Now, I can&apos;t explain why very well, but I feel that there is a freedom writing the bootstrap yourself which is very nice, and although it requires me to think about how to cleanup my code &lt;strong&gt;a lot more&lt;/strong&gt;, that&apos;s something I needed.
&lt;/p&gt;

&lt;p&gt;
There are serious drawbacks to building Jetpacks I think as well. Such as the file size of Jetpacks, a simple add-on which only uses a couple of the built-in modules is actually shipped with every module built-in to the add-on sdk, which means that anything you build will be at least ~250kb no matter what it does.  Now that just sucks for desktop users, but for mobile users it &lt;strong&gt;really&lt;/strong&gt; sucks.
&lt;/p&gt;

&lt;p&gt;
Now though, I&apos;m starting to write some common includes for my restartless add-ons, and those which I contribute to, which I&apos;d like to share, and I&apos;m starting to see Jetpack modules/packages being written that I want to use in my restartless add-ons.  So I thought &quot;it&apos;d be nice to have a require() method for bootstrap.js&quot;, so I wrote a simple one:
&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/1034614.js?file=require.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;If you copy &amp; paste &lt;a rel=&quot;external nofollow&quot; href=&quot;https://gist.github.com/1034614&quot;&gt;this code&lt;/a&gt; into your bootstrap.js file somewhere near the top of the file then you will have a require() method which will look in your add-on&apos;s &amp;quot;packages&amp;quot; folder for a &amp;quot;.js&amp;quot; file with the name you provide, if a module is not found there then the name is assumed to be a relative url.&lt;/p&gt;

&lt;p&gt;
With that you can start writing &lt;a title=&quot;CommonJS Modules&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;http://www.commonjs.org/specs/modules/1.0/&quot;&gt;CommonJS modules&lt;/a&gt; which can be used by Jetpacks and even NodeJS and the like, as well as for your lean mean restartless add-ons.  You can even start using Jetpack modules and other CommonJS style modules in your restartless add-on as well!
&lt;/p&gt;

&lt;p&gt;
As always you can checkout &lt;a title=&quot;Restartless Restart - A Firefox extension&quot; rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;https://github.com/erikvold/restartless-restart-ffext&quot;&gt;Restartless Restart&lt;/a&gt; as a example.
&lt;/p&gt; 
						</description>

						
							<category>Firefox Add-ons</category>
						
							<category>CommonJS</category>
						
							<category>Jetpack</category>
						
						<pubDate>Sun, 19 Jun 2011 17:27:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/19/restartless-firefox-addons-part-8-require-commonjs-and-jetpack</guid>
						
					</item>
					
					<item>
						<title>Restartless Firefox Add-ons, Part 7: CSS</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/19/restartless-firefox-addons-part-7-css</link>
						<description>
							
							&lt;p&gt;
If you want to use css in your restartless addon, then you have wondered what the best way to do so is. There are many options, you could create xul/html elements to inject css, or you could simply alter the style attribute of elements you care about, but the other option (and the best one imo) is to use the &lt;a title=&quot;nsIStyleSheetService - MDN&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/En/NsIStyleSheetService&quot;&gt;nsIStyleSheetService&lt;/a&gt; to load css.
&lt;/p&gt;

&lt;h3&gt;Loading and unloading&lt;/h3&gt;
&lt;p&gt;
Use the &lt;a title=&quot;loadAndRegisterSheet() - MDN&quot; rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/En/NsIStyleSheetService#loadAndRegisterSheet()&quot;&gt;loadAndRegisterSheet()&lt;/a&gt; method to load css at startup, and then use &lt;a title=&quot;unregisterSheet() - MDN&quot; rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/En/NsIStyleSheetService#unregisterSheet()&quot;&gt;unregisterSheet()&lt;/a&gt; to unload the file during shutdown.
&lt;/p&gt;

&lt;h3&gt;Getting CSS URL&lt;/h3&gt;
&lt;p&gt;
You can use the bootstrap.js&apos;s &amp;quot;__SCRIPT_URI_SPEC__&amp;quot; constant to find the url of your css. For example, if you named your css file main.css and it was in a &apos;skin&apos; folder in the root of your addon, then the url of the css file will be:
&lt;br&gt;<![CDATA[
var cssURL = __SCRIPT_URI_SPEC__ + "../skin/main.css";
]]>&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;@-moz-document&lt;/h3&gt;
&lt;p&gt;
You must use &lt;a title=&quot;@-moz-document - MDN&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/CSS/@-moz-document&quot;&gt;@-moz-document&lt;/a&gt; however to define which content or chrome page(s) the css rules that you are defining should run on.  &lt;a title=&quot;UserStyles Coding&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;http://userstyles.org/help/coding&quot;&gt;Userstyles have the same requirements&lt;/a&gt;.
&lt;/p&gt;

&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;
&lt;a rel=&quot;external nofollow&quot; href=&quot;https://github.com/Mardak/searchTabs/commit/b1e021d154bd2013caaa8e3453ad0053afb6de02&quot;&gt;Here is a example&lt;/a&gt; where I separated the css from the bootstrap.js file for a addon called &lt;a title=&quot;Search Tabs for Firefox - Github&quot; rel=&quot;external nofollow&quot; href=&quot;https://github.com/Mardak/searchTabs&quot;&gt;Search Tabs&lt;/a&gt;.
&lt;/p&gt; 
						</description>

						
							<category>UserStyles</category>
						
							<category>Firefox Add-ons</category>
						
							<category>CSS</category>
						
						<pubDate>Sun, 19 Jun 2011 04:25:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/19/restartless-firefox-addons-part-7-css</guid>
						
					</item>
					
					<item>
						<title>Using UserStyles with Jetpack</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/19/using-userstyles-with-jetpack</link>
						<description>
							
							&lt;p&gt;
This morning I created a Jetpack module which makes it dead simple to include userstyles in a addon.
&lt;/p&gt;
&lt;h2&gt;How to use&lt;/h2&gt;
&lt;p&gt;
Here&apos;s a example:
&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/1033799.js?file=black-google.jetpack.example.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
&lt;a href=&quot;https://gist.github.com/1033799&quot;&gt;In this example&lt;/a&gt;, the addon is loading a userstyle/css file located within it&apos;s &quot;data&quot; folder.
&lt;/p&gt;

&lt;p&gt;
If you&apos;d like to use this module, then &lt;a href=&quot;https://github.com/erikvold/userstyles-jplib&quot;&gt;it is available on github here&lt;/a&gt; for those of you that know how to use the addon-sdk. Otherwise, the module is also &lt;a href=&quot;https://builder.addons.mozilla.org/library/1004754/latest/&quot;&gt;available on the Addon Builder here&lt;/a&gt;, and I have &lt;a href=&quot;https://builder.addons.mozilla.org/addon/1004755/latest/&quot;&gt;a example of how to use the module in the Addon Builder here&lt;/a&gt;. So give it a try!
&lt;/p&gt;

&lt;h2&gt;UserStyles&lt;/h2&gt;
&lt;p&gt;For those of you that don&apos;t already know, a userstyle can be used to modify the css of any webpage (aka content) or Firefox window (aka chrome), and has been made popular by &lt;a title=&quot;Stylish&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish add-on for Firefox&lt;/a&gt; for which there is a site, &lt;a title=&quot;UserStyles.org&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;userstyles.org&quot;&gt;userstyles.org&lt;/a&gt;, where thousands of userstyles can be found.
&lt;/p&gt; 
						</description>

						
							<category>UserStyles</category>
						
							<category>Firefox Add-ons</category>
						
							<category>CSS</category>
						
							<category>Jetpack</category>
						
						<pubDate>Sun, 19 Jun 2011 03:17:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/19/using-userstyles-with-jetpack</guid>
						
					</item>
					
					<item>
						<title>Github Address Bar Search Firefox Add-on</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/14/github-address-bar-search</link>
						<description>
							
							&lt;p&gt;
A couple of weeks ago &lt;a title=&quot;Exploring social search with Twitter Address Bar Search&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://mozillalabs.com/prospector/2011/06/01/exploring-social-search-with-twitter-address-bar-search/&quot;&gt;Mozilla Labs &amp; Twitter released a restartless Firefox add-on called &amp;quot;Twitter Address Bar Search&amp;quot;&lt;/a&gt;, which actually did 3 main things:
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Added a app tab for http://twitter.com/ if you did not already have one.&lt;/li&gt;
  &lt;li&gt;Added a Twitter search engine.&lt;/li&gt;
  &lt;li&gt;Added results to the address bar&apos;s suggestion list for you when you typed @username of #hash, which would allow you to save time whilst searching for @mentions or #hashes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Then &lt;a title=&quot;Extensibly Awesome: A Jetpack API for the Firefox Location Bar&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;http://autonome.wordpress.com/2011/06/08/extensibly-awesome/&quot;&gt;Dietrich partly ported the address bar mods to a add-on sdk module&lt;/a&gt;. So I took his module, made some improvements, fixed some bugs, and whipped up a extension that does basically the same thing as the &amp;quot;Twitter Address Bar Search&amp;quot; add-on, but for Github, and made with the add-on sdk.
&lt;/p&gt;

&lt;h2&gt;&lt;a title=&quot;Github Address Bar Search&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/github-address-bar-search/&quot;&gt;Github Address Bar Search&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://static-cdn.addons.mozilla.net/img/uploads/previews/full/59/59224.png&quot;/&gt;
&lt;img src=&quot;https://static-cdn.addons.mozilla.net/img/uploads/previews/full/59/59225.png&quot;/&gt;
&lt;p&gt;
The &amp;quot;&lt;a title=&quot;Github Address Bar Search&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/github-address-bar-search/&quot;&gt;Github Address Bar Search&lt;/a&gt;&amp;quot; add-on is the same as the &amp;quot;&lt;a title=&quot;Twitter Address Bar Search&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/twitter-address-bar-search&quot;&gt;Twitter Address Bar Search&lt;/a&gt;&amp;quot; add-on, except it doesn&apos;t add a Github search engine, I leave that to you.
&lt;/p&gt; 
						</description>

						
							<category>Firefox Add-ons</category>
						
							<category>Jetpacks</category>
						
							<category>Firefox</category>
						
						<pubDate>Tue, 14 Jun 2011 01:48:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/14/github-address-bar-search</guid>
						
					</item>
					
					<item>
						<title>Restartless Firefox Add-ons, Part 6: Better Includes</title>
						<link>http://erikvold.com/blog/index.cfm/2011/6/14/restartless-firefox-addons-part-6-better-includes</link>
						<description>
							
							&lt;p&gt;
I just wanted to make a quick update on &lt;a title=&quot;Restartless Firefox Add-ons Part 2: Includes&quot; href=&quot;http://r.evold.ca/rrffap2&quot;&gt;part 2: includes&lt;/a&gt;, because I&apos;ve written a better include() function. This one will allow you to include files at any point in your bootstrap.js file; so you no longer need to wait for the startup function to run, and you no longer need to use the AddonManager.jsm file. This is just much more simple.
&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/1024242.js?file=include.js&quot;&gt;&lt;/script&gt;
&lt;noscript&gt;
&lt;br&gt;<![CDATA[
/* Includes a javascript file with loadSubScript
*
* @param src (String)
* The url of a javascript file to include.
*/
(function(global) global.include = function include(src) {
  var o = {};
  Components.utils.import("resource://gre/modules/Services.jsm", o);
  var uri = o.Services.io.newURI(
      src, null, o.Services.io.newURI(__SCRIPT_URI_SPEC__, null, null));
  o.Services.scriptloader.loadSubScript(uri.spec, global);
})(this);
]]>&lt;br&gt;
&lt;/noscript&gt;

&lt;p&gt;
Just copy &amp; paste the script above into your bootstrap.js file and then any code executed after it can use it immediately, &lt;strong&gt;and with relative urls&lt;/strong&gt;. This is why you no longer need to use the AddonManager.jsm file, and that is why you no longer need to wait to use the startup method before including helper files.
&lt;/p&gt; 
						</description>

						
							<category>Firefox Add-ons</category>
						
							<category>Firefox</category>
						
						<pubDate>Tue, 14 Jun 2011 01:37:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/6/14/restartless-firefox-addons-part-6-better-includes</guid>
						
					</item>
					
					<item>
						<title>Scriptish 0.1 Released!</title>
						<link>http://erikvold.com/blog/index.cfm/2011/5/25/scriptish-01-released</link>
						<description>
							
							&lt;p&gt;
Well, I&apos;m very proud to announce that &lt;a title=&quot;Scriptish&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_target&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/scriptish/&quot;&gt;Scriptish 0.1&lt;/a&gt; has finally been released!
&lt;/p&gt;

&lt;h2&gt;Thank you&lt;/h2&gt;

&lt;p&gt;
This is an event that has taken a long time to achieve, and I have had so much help from so many wonderful people that it has been a great pleasure to work on this project.
&lt;/p&gt;

&lt;h3&gt;Greg Parris&lt;/h3&gt;
&lt;p&gt;
&lt;a title=&quot;supahgreg - Github&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/supahgreg&quot;&gt;Greg&lt;/a&gt; forked Scriptish and started contributing back in Oct &apos;10 and he&apos;s been a constant help ever since. Greg has written &lt;a title=&quot;Supahgreg - Scriptish commits&quot; rel=&quot;external nofollow&quot; target=&quot;_target&quot; href=&quot;https://github.com/erikvold/scriptish/commits/master?author=supahgreg&quot;&gt;plenty of code&lt;/a&gt;, made the wiki readable, improved the usability and user experience, and no doubt has spent countless hours testing. Thank you Greg!
&lt;/p&gt;

&lt;h3&gt;Olivier Cornu&lt;/h3&gt;
&lt;p&gt;
&lt;a title=&quot;ocornu - Github&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/ocornu&quot;&gt;Olivier&lt;/a&gt; really showed me the way, he had forked Greasemonkey long before I ever started Scriptish, making a extension called Webmonkey which used Firefox 3 as the minimum supported version and taking advantage of the benefits that Firefox 3 had to offer. I pulled some code from Webmonkey and made Olivier the author (which he told me would be alright), but he really provided me with a proof by example of a simple idea, that a far better user script engine could be made by increasing the minimum supported version and taking advantage of the new features. Thank you Olivier!
&lt;/p&gt;

&lt;h3&gt;Kirs Maglione&lt;/h3&gt;
&lt;p&gt;
&lt;a title=&quot;kmaglione - Github&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/kmaglione&quot;&gt;Kris&lt;/a&gt; has helped out with some error handling contributions early on, answering more than a few of my questions on IRC, and for doing the last few reviews on AMO which I&apos;m sure took some time. Thank you Kris!
&lt;/p&gt;

&lt;h3&gt;Nils Maier&lt;/h3&gt;
&lt;p&gt;
&lt;a title=&quot;nmaier - Github&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/nmaier&quot;&gt;Nils&lt;/a&gt; wrote some wonderful commits revamping the install window and really improving the UX of user scripts in the extension manager. I think these changes are the most visible to the average user, and are great improvements imo, so his help has been invaluable. Thank you Nils!
&lt;/p&gt;

&lt;h3&gt;Dave Townsend&lt;/h3&gt;
&lt;p&gt;
&lt;a title=&quot;Mossop - Github&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/Mossop&quot;&gt;Dave&lt;/a&gt; is one of the developers of the new Addon Manager in Firefox, and he made a restartless extension called SlipperyMonkey (&lt;a title=&quot;SlipperyMonkey&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://www.oxymoronical.com/blog/2010/07/How-to-extend-the-new-Add-ons-Manager&quot;&gt;which he blogged about here&lt;/a&gt;) showing off a bunch of Firefox 4&apos;s new features. I&apos;ve pulled a lot of this code in to Scriptish, and had the pleasure to meet Dave at the 2010 Mozilla summit in Whistler when he was showing SlipperyMonkey off, and got a change for a quick ~5min QA which proved to be most helpful to me. Thank you Dave! (and thank you &lt;a title=&quot;daviddahl - Github&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/daviddahl&quot;&gt;David Dahl&lt;/a&gt; for telling me to speak with him, which I might not have done).
&lt;/p&gt;

&lt;h3&gt;Mozillians&lt;/h3&gt;
&lt;p&gt;
A community really makes all of the difference, and I&apos;ve met no better. Just look at the documentation, look at the support, look at the inspiration, and look at the goals. Thank you Mozillians!
&lt;/p&gt;

&lt;h3&gt;Github&lt;/h3&gt;
&lt;p&gt;
I quite honestly wouldn&apos;t have bothered spending so many unpaid hours managing a open source project without a site that helps me administrate it like Github does, because it&apos;d just be a waste of time. Thank you Github!
&lt;/p&gt; 
						</description>

						
							<category>AMO</category>
						
							<category>GitHub</category>
						
							<category>Greasemonkey</category>
						
							<category>Firefox Add-ons</category>
						
							<category>Scriptish</category>
						
							<category>Firefox</category>
						
						<pubDate>Wed, 25 May 2011 01:40:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/5/25/scriptish-01-released</guid>
						
					</item>
					
					<item>
						<title>Restartless Firefox Add-ons, Part 5: Logging</title>
						<link>http://erikvold.com/blog/index.cfm/2011/4/1/restartless-firefox-addons-part-5-logging</link>
						<description>
							
							&lt;p&gt;
This is a simple one for most of you, but &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; rev=&quot;vote-against&quot; href=&quot;http://stackoverflow.com/questions/5507123/debug-print-from-a-bootstrapped-firefox4-extension&quot;&gt;I found someone asking the question &quot;How do I dump messages from bootstrap.js&quot; on stackovercrap&lt;/a&gt; so I thought it would make a good topic to quickly blog about.
&lt;/p&gt;

&lt;p&gt;
First of all what I&apos;m about to describe is exactly how one would log messages and report errors from a &lt;a target=&quot;_blank&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/JavaScript_code_modules&quot;&gt;JavaScript code module&lt;/a&gt;, so if you already know how to do this, then stop reading and bounce.
&lt;/p&gt;

&lt;p&gt;
If you are lost without &lt;a title=&quot;window.dump&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en/window.dump&quot;&gt;window.dump&lt;/a&gt; or don&apos;t know what that is, then give this page &lt;a rel=&quot;external nofollow&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en/window.dump&quot;&gt;https://developer.mozilla.org/en/window.dump&lt;/a&gt; a quick read. There is a note that says:
&lt;/p&gt;

&lt;p&gt;
&lt;blockquote&gt;
&quot;dump is commonly used to debug JavaScript. Privileged code can also use &lt;a title=&quot;Components.utils.reportError&quot; target=&quot;_blank&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/Components.utils.reportError&quot;&gt;Components.utils.reportError&lt;/a&gt; and &lt;a title=&quot;nsIConsoleService&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIConsoleService&quot;&gt;nsIConsoleService&lt;/a&gt; to log messages to the Error Console.&quot;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;
Bingo! Give the page on &lt;a title=&quot;nsIConsoleService&quot; rel=&quot;external&quot; target=&quot;_blank&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIConsoleService&quot;&gt;nsIConsoleService&lt;/a&gt; a re-read. There is a code example on the top of that page that you can use to get a console service, then the page describes it&apos;s various methods, such as &lt;a title=&quot;logStringMessage&quot; target=&quot;_blank&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIConsoleService#logStringMessage()&quot;&gt;logStringMessage&lt;/a&gt;. You can use the logStringMessage method in window.dump&apos;s stead.
&lt;/p&gt;

&lt;p&gt;
The window.dump page also mentioned &lt;a title=&quot;Components.utils.reportError&quot; target=&quot;_blank&quot; rel=&quot;externa&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/Components.utils.reportError&quot;&gt;Components.utils.reportError&lt;/a&gt; which can be used for logging error messages to the Error Console.
&lt;/p&gt;

&lt;p&gt;
The way that I prefer to access the console service is via the &lt;a title=&quot;Services.jsm - MDN&quot; rel=&quot;external&quot;  rev=&quot;vote-for&quot; target=&quot;_blank&quot; href=&quot;https://developer.mozilla.org/en/JavaScript_code_modules/Services.jsm&quot;&gt;Services.jsm&lt;/a&gt; JavaScript code module, like so:
&lt;/p&gt;

&lt;br&gt;<![CDATA[
Components.utils.import("resource://gre/modules/Services.jsm");
Services.console.logStringMessage("this is a console message, look for it in the messages tab of the Error Console.");
]]>&lt;br&gt; 
						</description>

						
							<category>Firefox Add-ons</category>
						
							<category>Programming</category>
						
							<category>Firefox</category>
						
						<pubDate>Fri, 01 Apr 2011 23:07:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/4/1/restartless-firefox-addons-part-5-logging</guid>
						
					</item>
					
					<item>
						<title>Restartless Firefox Add-ons, Part 4: Localization (l10n)</title>
						<link>http://erikvold.com/blog/index.cfm/2011/2/18/restartless-firefox-addons-part-4-localization-l10n</link>
						<description>
							
							&lt;p&gt;
Alright, part four has been a long time coming, but I finally got around to typing out an localization include for restartless Firefox 4 addons which I&apos;m ready to talk about. If you haven&apos;t read &lt;a title=&quot;Restartless Firefox Add-ons, Part 2: Includes&quot; rev=&quot;vote-for&quot; href=&quot;http://erikvold.com/blog/index.cfm/2011/1/2/restartless-firefox-addons-part-2-includes&quot;&gt;part 2&lt;/a&gt; it&apos;s all about how to use includes, so read it first, if you don&apos;t know what a restartless addon is, then start with &lt;a title=&quot;Restartless Restart Add-on for Firefox&quot; href=&quot;http://erikvold.com/blog/index.cfm/2010/11/3/restartless-restart-addon-for-firefox&quot;&gt;part 1&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
To start off with I wrote this include for &lt;a title=&quot;Restartless Restart Firefox extension&quot; rev=&quot;vote-for&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/erikvold/restartless-restart-ffext/&quot;&gt;Restartless Restart&lt;/a&gt;, and I consider that to be my demo.
&lt;/p&gt;

&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;
Alright, so you should know how to use includes in a restartless addon now, and I shouldn&apos;t have to explain why localizing your addon is important, and you have an example; here are some notes:
&lt;/p&gt;

&lt;p&gt;
To begin with you will need to copy &lt;a title=&quot;l10n.js&quot; rel=&quot;external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/erikvold/restartless-restart-ffext/blob/master/src/includes/l10n.js&quot;&gt;this l10n.js file&lt;/a&gt; in to your addon, then include it at startup (in your addons bootstrap.js file) and create the all important underscore function (literally &amp;quot;_(aKey)&amp;quot;), like so:
&lt;/p&gt;

&lt;h3&gt;Setup&lt;/h3&gt;

&lt;br&gt;<![CDATA[
function startup(data) AddonManager.getAddonByID(data.id, function(addon) {
  include(addon.getResourceURI("includes/l10n.js").spec);
  l10n(addon, "filename.properties", "en-US");
}
]]>&lt;br&gt;

&lt;p&gt;
So the example above assumes that you copied the l10n.js into a includes/ subdirectory, and that &quot;filename.properties&quot; is the name of the files within a /locale/en-US/ subdirectory for example, so the path to the english (US) translation for the text in your addon would be &quot;/locale/en-US/filename.properties&quot; (I would recommend using something other than &quot;filename&quot;). After l10n() is called it will create (and return) a global function named &amp;quot;_&amp;quot;, which can be used to obtain the appropriate localized text. The 3rd parameter for l10n is the default locale that should be used when all other attempts fail. A failed attempted could be caused by a missing locale file (say you haven&apos;t yet translated your addon for the user&apos;s locale for instance), or the locale file could exist but not have the requested key, or the key could exist but be blank.
&lt;/p&gt;

&lt;h2&gt;Using _&lt;/h2&gt;
&lt;p&gt;
_ takes 2 arguments aKey, and aLocale which is optional.&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;aKey&lt;/strong&gt; is the key for the text in your .properties file.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;aLocale&lt;/strong&gt; allows you to attempt to grab a specific translation before trying to get a translation from the user&apos;s locale, and lastly trying the default locale specified by the addon developer in the l10n call above (if that 3rd argument of l10n isn&apos;t provided then &quot;en&quot; is used). I use this in Restartless Restart to provide the user with the ability to override their browser&apos;s locale and get another translation. So I use the ja-JP translation for Restartless Restart on my Firefox profiles these days just because.
&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
If you have a restartless addon, and you haven&apos;t localized it yet, then get to it!
&lt;/p&gt; 
						</description>

						
							<category>Localization</category>
						
							<category>Firefox Add-ons</category>
						
							<category>Programming</category>
						
							<category>Firefox</category>
						
						<pubDate>Fri, 18 Feb 2011 02:33:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/2/18/restartless-firefox-addons-part-4-localization-l10n</guid>
						
					</item>
					
					<item>
						<title>Restartless Firefox Add-ons, Part 3: Icons</title>
						<link>http://erikvold.com/blog/index.cfm/2011/2/7/restartless-firefox-addons-part-3-icons</link>
						<description>
							
							&lt;p&gt;
Well this is only part three, we are still just getting started after all =] so since I have very little time today I thought that I would write about how to include a icon for your restartless extension, since it&apos;s not exactly obvious. Although this method is documented &lt;a title=&quot;Install.rdf iconURL - MDN&quot; target=&quot;_blank&quot; rel=&quot;external nofollow&quot; rev=&quot;vote-for&quot; href=&quot;https://developer.mozilla.org/en/install_manifests#iconURL&quot;&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Basically all you need to do is include a icon.png in the root of your xpi (the same place as your bootstrap.js and install.rdf) and Firefox will automatically find it. You can also include a icon64.png in the root of your xpi and this will be used in the add-on manager&apos;s add-on detail view, so it&apos;s a good idea to include both if you have them because it&apos;ll be a better UX.
&lt;/p&gt;
&lt;p&gt;
If you want to use the icon in other places use the method that I described in &lt;a title=&quot;Restartless Firefox Add-ons, Part 2: Includes&quot; href=&quot;http://erikvold.com/blog/index.cfm/2011/1/2/restartless-firefox-addons-part-2-includes&quot;&gt;part 2&lt;/a&gt; in order to find the file: url of the image and use that.
&lt;/p&gt; 
						</description>

						
							<category>UX</category>
						
							<category>Firefox Add-ons</category>
						
							<category>Firefox</category>
						
						<pubDate>Mon, 07 Feb 2011 23:26:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/2/7/restartless-firefox-addons-part-3-icons</guid>
						
					</item>
					
					<item>
						<title>Google Reader Widget + Panel Jetpack for Firefox 4</title>
						<link>http://erikvold.com/blog/index.cfm/2011/2/5/google-reader-widget--panel-jetpack-for-firefox-4</link>
						<description>
							
							&lt;p&gt;
I was doing a little hacking on the Add-on SDK a few weeks ago and whipped up a simple add-on for Google Reader which demonstrates a typical use case for the &lt;a href=&quot;https://jetpack.mozillalabs.com/sdk/latest/docs/#module/addon-kit/widget&quot; target=&quot;_blank&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot;&gt;widget&lt;/a&gt; and &lt;a href=&quot;https://jetpack.mozillalabs.com/sdk/latest/docs/#module/addon-kit/panel&quot; target=&quot;_blank&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot;&gt;panel&lt;/a&gt; modules which are part of the &lt;a href=&quot;https://jetpack.mozillalabs.com/sdk/latest/docs/#package/addon-kit&quot; target=&quot;_blank&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot;&gt;addon-kit&lt;/a&gt; package which comes with the Mozilla Add-on SDK. I call this add-on &lt;a title=&quot;GReader Panel&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/greader-panel/&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot;&gt;GReader Panel&lt;/a&gt;, and it basically just creates a clickable widget (which is just an icon that you can put anyplace that a toolbar item can go), which when clicked will open/close a panel about the size of a iPod screen with Google Reader mobile.
&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://static.addons.mozilla.net/img/uploads/previews/full/52/52954.png?modified=1295750971&quot;/&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a title=&quot;GReader Panel add-on for Firefox 4&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/greader-panel/&quot; rel=&quot;external&quot; rev=&quot;vote-for&quot; target=&quot;_blank&quot;&gt;Check it out on AMO!&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you&apos;re interested in seeing the code, &lt;a href=&quot;https://github.com/erikvold/greader-panel-ffext&quot; rel=&quot;external&quot;  rev=&quot;vote-for&quot; target=&quot;_blank&quot;&gt;it&apos;s available on Github&lt;/a&gt; like all of my open source work.
&lt;/p&gt; 
						</description>

						
							<category>Firefox Add-ons</category>
						
							<category>Jetpack</category>
						
							<category>Jetpacks</category>
						
							<category>Firefox</category>
						
						<pubDate>Sat, 05 Feb 2011 00:05:00 -0400</pubDate>
						<guid>http://erikvold.com/blog/index.cfm/2011/2/5/google-reader-widget--panel-jetpack-for-firefox-4</guid>
						
					</item>
					</channel></rss>