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

<channel>
	<title>mitcho.com &#187; Jetpack</title>
	<atom:link href="http://mitcho.com/blog/tag/jetpack/feed/" rel="self" type="application/rss+xml" />
	<link>http://mitcho.com</link>
	<description></description>
	<lastBuildDate>Fri, 10 Feb 2012 23:24:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19719</generator>
		<item>
		<title>Beginning development with Jetpack SDK 0.2</title>
		<link>http://mitcho.com/blog/how-to/develop-with-jetpack-sdk-0-2/</link>
		<comments>http://mitcho.com/blog/how-to/develop-with-jetpack-sdk-0-2/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:20:47 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[how to]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[Jetpack SDK]]></category>
		<category><![CDATA[Mozilla Labs]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=3504</guid>
		<description><![CDATA[This article is a translation of a recent article in Japanese by fellow Jetpack Ambassador Gomita which was published on the Mozilla Labs Jetpack blog. I&#8217;m cross-posting it here for posterity. Mozilla Labs recently released version 0.2 of the Jetpack SDK, which fixes some issues of the 0.1 release such as a glitch regarding development [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/jetpack-ambassadors-in-mv/' rel='bookmark' title='Jetpack Ambassadors in MV'>Jetpack Ambassadors in MV</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-localization-update/' rel='bookmark' title='Ubiquity Localization Update'>Ubiquity Localization Update</a></li>
<li><a href='http://mitcho.com/blog/projects/spring-is-for-speaking/' rel='bookmark' title='Spring is for Speaking: JSConf, WordCamp SF, IACL'>Spring is for Speaking: JSConf, WordCamp SF, IACL</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><em>This article is a translation of a <a href="http://www.xuldev.org/blog/?p=513">recent article in Japanese</a> by fellow Jetpack Ambassador <a href="http://www.xuldev.org/blog/">Gomita</a> which was published <a href="http://mozillalabs.com/jetpack/2010/04/13/develop-with-jetpack-sdk-0-2/">on the Mozilla Labs Jetpack blog</a>. I&#8217;m cross-posting it here for posterity.
</em></p>

<p>Mozilla Labs recently released <a href="http://mozillalabs.com/jetpack/2010/03/26/announcing-jetpack-sdk-0-2/">version 0.2</a> of the Jetpack SDK, which fixes some issues of the 0.1 release such as a glitch regarding development with Windows. SDK 0.2 doesn&#8217;t include the planned APIs for rapid development of new browser functionality, but you can still play with SDK 0.2 to get a flavor for development with the Jetpack SDK.</p>

<p>In this article we begin by setting up an SDK 0.2 development environment and explain the steps required to develop a simple, practical add-on using SDK 0.2. The instructions here are for Windows, but the basic steps are the same in every platform.</p>

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

<h3>Installing Python</h3>

<p>The first step to using the Jetpack SDK is to install Python. How to install Python depends on your OS, but in Windows you can choose the &#8220;Python 2.6.5 Windows installer&#8221; from the <a href="http://www.python.org/download/">Python</a> site and follow the installation wizard. Here, I&#8217;ll use <code>C:\Python26\</code> as the installation path.</p>

<p>After the install, you can activate the <code>python</code> command in your command line by adding <code>C:\Python26</code> to the Windows <code>Path</code> preference. (If there is already another value, delimit with a semicolon: &#8220;;&#8221;.) Run the command &#8220;cmd&#8221; from the Start menu to start the command prompt and run <code>python -V</code> to confirm the Python version, <code>Python 2.6.2</code>:
<pre>C:\&gt;python -V
Python 2.6.2
</pre>
Note, the <a href="https://jetpack.mozillalabs.com/sdk/0.2/docs/#guide/getting-started">Jetpack SDK Docs</a> state that Python 2.5+ is required, but there seem to be some incompatibilities with Python 3.0.1 at this time. In addition, in my experience the SDK worked fine without the &#8220;Python for Windows extensions.&#8221;</p>

<h3>Setting up the Jetpack SDK</h3>

<p>Next, we set up the Jetpack SDK. Download the Jetpack SDK 0.2 package from the <a href="https://jetpack.mozillalabs.com/">Jetpack site</a>, unzip it, and place it somewhere convenient. Here, I used <code>C:\jetpack-sdk-0.2</code>.</p>

<p>To use the Jetpack SDK, it must be &#8220;activated.&#8221; From the command prompt, go to the Jetpack SDK folder and run <code>bin\activate</code>:
<pre>C:\jetpack-sdk-0.2&gt;bin\activate
Welcome to the Jetpack SDK. Run 'cfx docs' for assistance.
(C:\jetpack-sdk-0.2) C:\jetpack-sdk-0.2&gt;
</pre>
Next, run <code>cfx docs</code> to open the SDK documentation in the browser. The SDK documentation starts a local server on port 8888.
<pre>(C:\jetpack-sdk-0.2) C:\jetpack-sdk-0.2&gt;cfx docs
One moment.
Opening web browser to http://127.0.0.1:8888.
</pre></p>

<h3>The package directory structure</h3>

<p>Addons built with the Jetpack SDK are called &#8220;packages.&#8221; Let&#8217;s try building a simple &#8220;hello world&#8221;-style package, but first let&#8217;s see what the final directory structure of this package will look like:</p>

<table style="height: 279px; margin: 0pt 0pt 10px 80px;" width="450">
<tbody>
<tr>
<th><span style="float: left;">directory/file</span></th>
<th><span style="float: left;">Note</span></th>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px;" src="http://www.xuldev.org/common/folder.png" alt="フォルダ" width="16" height="16" />jetpack-sdk-0.2</td>
<td>the Jetpack SDK folder</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:21px;" src="http://www.xuldev.org/common/folder.png" alt="フォルダ" width="16" height="16" />packages</td>
<td>the main packages folder</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:37px;" src="http://www.xuldev.org/common/folder.png" alt="フォルダ" width="16" height="16" />hello-world</td>
<td>package root</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:53px;" src="http://www.xuldev.org/common/file.png" alt="ファイル" width="16" height="16" />package.json</td>
<td>package manifest file</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:53px;" src="http://www.xuldev.org/common/file.png" alt="ファイル" width="16" height="16" />README.md</td>
<td>package documentation</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:53px;" src="http://www.xuldev.org/common/folder.png" alt="フォルダ" width="16" height="16" />lib</td>
<td>the package code directory</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:69px;" src="http://www.xuldev.org/common/file.png" alt="ファイル" width="16" height="16" />main.js</td>
<td>main program code</td>
</tr>
<tr>
<td><img style="float: left; margin: 4px 5px; margin-left:69px;" src="http://www.xuldev.org/common/file.png" alt="ファイル" width="16" height="16" />simple-dialog.js</td>
<td>a custom code library</td>
</tr>
</tbody>
</table>

<p>The package&#8217;s root directory is placed in the &#8220;packages&#8221; directory in the Jetpack SDK folder, and includes the <code>package.json</code> manifest file and the <code>README.md</code> documentation file. The <code>lib</code> folder includes the package&#8217;s main program code and any custom libraries used by our addon.</p>

<h3>Creating the package</h3>

<p>We begin by creating the <code>hello-world</code> directory in <code>C:\jetpack-sdk-0.2\packages</code> . Next the manifest file <code>package.json</code> is created. The manifest file includes metadata about our package in JSON format. If you&#8217;ve ever created a XUL-style addon before, you can think of this as similar to the <code>install.rdf</code> file. Here, I used the following as the manifest:
<pre>{
    "id": "helloworld@xuldev.org",
    "version": "0.1",
    "description": "This is my first package.",
    "author": "Gomita &lt;gomita@xuldev.org&gt;"
}
</pre>
The <code>id</code> property is used as a unique ID for all addons including Jetpack packages and is often formatted as an email address. This corresponds to XUL-based addons&#8217; <code>&amp;lt;em:id&amp;gt;</code> tag.</p>

<p>Next, reload the SDK documentation in the browser and confirm that &#8220;hello-world&#8221; shows up under &#8220;Package Reference.&#8221;</p>

<h3>Writing the main code</h3>

<p>The next step is to add some working code to the hello-world package. Create a <code>lib</code> folder under the package root and create a <code>main.js</code> under <code>lib</code> with the following code:
<pre>exports.main = function(options, callbacks) {
    console.log("Hello, World!");
};
</pre>
The main program code is always loaded as a module called <code>main</code>. This <code>main</code> property is made accessible from outside code using the <a href="http://commonjs.org/">CommonJS</a>-style code <code>exports.main = ...</code>. <code>console.log</code> is a global function made available by Jetpack and the SDK prints the string to the command prompt.</p>

<p>It&#8217;s worth noting that, in the current Jetpack SDK, calling &#8220;<code>console.log("こんにちは");</code>&#8221; doesn&#8217;t yield the expected Japanese output. In the future such output will be handled through the planned <a href="https://wiki.mozilla.org/Labs/Jetpack/Reboot/JEP/113">localization API</a>.</p>

<h3>Testing our package</h3>

<p>With some simple code in our <code>main</code> function, it&#8217;s time to try this code out. To test this code, we run <code>cfx run -a firefox</code> in the command prompt. By running <code>cfx run</code> with the <code>-a firefox</code> option, we load our package into a brand new Firefox profile and launch Firefox.
<pre>(C:\jetpack-sdk-0.2) C:\jetpack-sdk-0.2&gt;cd packages\hello-world</p>

<p>(C:\jetpack-sdk-0.2) C:\jetpack-sdk-0.2\packages\hello-world&gt;cfx run -a firefox
info: Hello, World!
OK
Total time: 1.531000 seconds
Program terminated unsuccessfully.
</pre>
After Firefox loads, confirm that the command prompt reads <code>info: Hello, World!</code> When you quit Firefox, the testing will end.</p>

<h3>Using a standard library</h3>

<p>Now we&#8217;ll edit our code to invoke the timer library which is one of the Jetpack SDK&#8217;s standard libraries. The timer library is a module which abstracts various timer-related functionality, similar to the DOM&#8217;s <code>window.setTimeout</code>, <code>window.clearTimeout</code>. Details on this library are available in the <a href="https://jetpack.mozillalabs.com/sdk/0.2/docs/#module/jetpack-core/timer">SDK documentation</a>. Moreover, although not in the documentation, <code>timer.setInterval</code> and <code>timer.clearInterval</code> also work in this version.</p>

<p>To use this library in our main program code, we first must invoke this library with the CommonJS require function. We modify the <code>main.js</code> file as follows:
<pre>var timer = require("timer");
exports.main = function(options, callbacks) {
    timer.setInterval(function() {
        console.log(new Date().toLocaleTimeString());
    }, 1000);
};
</pre>
After this change, run <code>cfx run -a firefox</code> in the command prompt to test it. Check to make sure that the current time is being printed to the command prompt once a second:
<pre>(C:\jetpack-sdk-0.2) C:\jetpack-sdk-0.2\packages\hello-world&gt;cfx run -a firefox
info: 10:37:21
info: 10:37:22
info: 10:37:23
info: 10:37:24
info: 10:37:25
</pre></p>

<h3>Creating a custom library</h3>

<p>Next we&#8217;ll create a custom library to add some functionality not currently included in the Jetpack standard library. Implementing advanced functionality in add-ons, like filesystem access, involves using <a href="https://developer.mozilla.org/en/XPCOM">XPCOM</a> components. Jetpack encourages seprarating the use of XPCOM components into separate modules which are then used by the main program code. The Jetpack SDK doesn&#8217;t currently disallow direct XPCOM access within Jetpack add-on code, but such a restriction is forthcoming. Modularizing XPCOM code into separate libraries now allow you to easily migrate to equivalent standard libraries in the future.</p>

<p>Let&#8217;s create a <code>simple-dialog</code> library to display a modal dialog much like <code>window.alert</code> does. The Jetpack code&#8217;s runtime environment doesn&#8217;t include access to the regular <code>window</code> or <code>document</code> objects, so just calling <code>window.alert</code> doesn&#8217;t work. To create an alert from this context, we use the <code>&lt;a href="https://developer.mozilla.org/en/nsIPromptService"&gt;nsIPromptService&lt;/a&gt;</code> XPCOM component. In our package&#8217;s <code>lib</code> folder, create a <code>simple-dialog.js</code> file. Just like our main program code, we implement this library as a CommonJS module using <code>exports.&lt;em&gt;methodname&lt;/em&gt; = function(...){...}</code>.</p>

<p>The simple-dialog library will have these two methods:</p>

<table style="margin: 0 0 10px 80px;">
<tbody>
<tr>
<th><span style="float: left;">Method</span></th>
<th><span style="float: left;">Note</span></th>
</tr>
<tr>
<td><code>alert(<em>text</em>)</code></td>
<td>Displays an alert dialog with the string in <em>text</em> and an OK button. Equivalent to the DOM&#8217;s <code>window.alert</code>.</td>
</tr>
<tr>
<td><code>confirmYesNo(<em>text</em>)</code></td>
<td>Displays a confirmation dialog with the string in <em>text</em> and Yes and No buttons. The method returns <code>true</code> if the user presses &#8220;yes&#8221; and <code>false</code> if &#8220;no.&#8221;</td>
</tr>
</tbody>
</table>

<p>Here is the code for <code>simple-dialog.js</code>:
<pre>var promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].
                getService(Ci.nsIPromptService);</p>

<p>exports.alert = function(text) {
    promptSvc.alert(null, "[Jetpack]", text);
};</p>

<p>exports.confirmYesNo = function(text) {
    var pos = promptSvc.confirmEx(
        null, "[Jetpack]", text, promptSvc.STD_YES_NO_BUTTONS,
        null, null, null, null, {}
    );
    return pos == 0;
};
</pre>
Lines 1-2 are for calling <code>nsIPromptService</code>. Note that <code>Cc</code>, <code>Ci</code> are aliases for <code>Components.classes</code> and <code>Components.interfaces</code>, respectively, and are made available by Jetpack as global variables. Lines 4-6 implement the alert method for showing alert dialogs using <code>nsIPromptService</code>&#8217;s <code>alert</code> method. Lines 8-14 implement <code>simple-dialog</code>&#8217;s <code>confirmYesNo</code> method using <code>nsIPromptService</code>&#8217;s <code>confirmEx</code> method to display the dialog with yes and no buttons. <code>nsIPromptservice</code>&#8217;s <code>confirmEx</code> method returns 0 if the user presses &#8220;yes&#8221; and 1 if &#8220;no&#8221;, so we modify this value and return it.</p>

<h3>Using our custom library</h3>

<p>Let&#8217;s call this new custom library from our main program code and verify that it works. Here&#8217;s our updated <code>main.js</code> file:
<pre>var simpleDialog = require("simple-dialog");</p>

<p>exports.main = function(options, callbacks) {
    var adult = simpleDialog.confirmYesNo("Are you over 18 years old?");
    if (adult) {
        simpleDialog.alert("Welcome!");
    }
    else {
        simpleDialog.alert("Good bye!");
    }
};
</pre>
Run <code>cfx run -a firefox</code> and confirm that a confirmation dialog, as seen below, is displayed. Pressing &#8220;yes&#8221; and &#8220;no&#8221; should give you the appropriate alert dialogs as well.</p>

<p><img src="///var/folders/Xr/XrC2E9n7FcWD7pxxv8puwE+++TI/-Tmp-/com.apple.mail.drag-T0x10051fce0.tmp.Ppt6Wu/confirmyesno-en.png" alt="" /></p>

<h3><img src="///Users/mitcho/Desktop/confirmyesno-en.png" alt="" /></h3>

<h3><a href="http://mozillalabs.com/jetpack/files/2010/04/confirmyesno-en.png"><img class="alignnone size-medium wp-image-269" title="confirmyesno-en" src="http://mozillalabs.com/jetpack/files/2010/04/confirmyesno-en-300x111.png" alt="" width="300" height="111" /></a></h3>

<h3>Implementing a network status observer</h3>

<p>Now let&#8217;s use this hello-world package as a foundation for a more practical add-on. Using the <code>&lt;a href="https://jetpack.mozillalabs.com/sdk/0.2/docs/#module/jetpack-core/observer-service"&gt;observer-service&lt;/a&gt;</code> module included with the Jetpack SDK, we can monitor Firefox&#8217;s online/offline network status changes.</p>

<p>Firefox internally broadcasts various application events to observers via the <code>&lt;a href="https://developer.mozilla.org/ja/NsIObserverService"&gt;nsIObserverService&lt;/a&gt;</code> XPCOM component. When Firefox goes offline, a <code>network:offline-status-changed</code> notification is broadcast. To subscribe this notification and act on it, we use the <code>observer-service</code> library&#8217;s <code>add</code> method. <code>add</code>&#8217;s first argument is the name of the notification we want to subscribe to and the second argument is a callback function. The callback function is given two arguments, of which the second is a string equal to either &#8220;online&#8221; or &#8220;offline.&#8221; In our add-on, we&#8217;ll check this value and display an appropriate alert using <code>simple-dialog</code>.
<pre>var simpleDialog = require("simple-dialog");
var observer = require("observer-service");</p>

<p>exports.main = function(options, callbacks) {
    observer.add("network:offline-status-changed", function(sbj, data) {
        if (data == "online") {
            simpleDialog.alert("Firefox is now online.");
        }
        else if (data == "offline") {
            simpleDialog.alert("Firefox is now offline.");
        }
    });
};
</pre>
Launch Firefox by running <code>cfx run -a firefox</code> and then choose &#8220;File&#8221; &gt; &#8220;Work Offline&#8221; and you should get a notification:</p>

<p><a href="http://mozillalabs.com/jetpack/files/2010/04/offline-en.png"><img class="alignnone size-medium wp-image-270" title="offline-en" src="http://mozillalabs.com/jetpack/files/2010/04/offline-en-300x225.png" alt="" width="300" height="225" /></a></p>

<h3>Adding documentation</h3>

<p>If you add documentation to a package, you can view it by clicking that package in the SDK Documentation. To add documentation, create a <code>README.md</code> file in the package root directory. <code>README.md</code> is written in Markdown format which looks like this:</p>

<p><pre>This is my *first* package.
* foo
* bar
* baz
</pre></p>

<p>Now if you load the SDK documentation using <code>cfx docs</code> and click on the &#8220;hello-world&#8221; link, you&#8217;ll see this documentation together with the package metadata.</p>

<h3>Exporting an install package</h3>

<p>Jetpack add-ons which are created in this way can then be exported into Firefox-standard XPI files. To export an XPI, go to the package&#8217;s root directory in the command prompt and run <code>cfx xpi</code>.
<pre>(C:\jetpack-sdk-0.2) C:\jetpack-sdk-0.2\packages\hello-world&gt;cfx xpi
Exporting extension to hello-world.xpi.
</pre>
This creates an XPI file called <code>hello-world.xpi</code>. Opening this file in any Firefox profile will let you install it using the regular add-on install mechanism.</p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/jetpack-ambassadors-in-mv/' rel='bookmark' title='Jetpack Ambassadors in MV'>Jetpack Ambassadors in MV</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-localization-update/' rel='bookmark' title='Ubiquity Localization Update'>Ubiquity Localization Update</a></li>
<li><a href='http://mitcho.com/blog/projects/spring-is-for-speaking/' rel='bookmark' title='Spring is for Speaking: JSConf, WordCamp SF, IACL'>Spring is for Speaking: JSConf, WordCamp SF, IACL</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/how-to/develop-with-jetpack-sdk-0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring is for Speaking: JSConf, WordCamp SF, IACL</title>
		<link>http://mitcho.com/blog/projects/spring-is-for-speaking/</link>
		<comments>http://mitcho.com/blog/projects/spring-is-for-speaking/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 04:37:04 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Boston]]></category>
		<category><![CDATA[Chinese language]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[harvard]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[Mandarin]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[San Francisco]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[Washington D.C.]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Planet]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=3448</guid>
		<description><![CDATA[I recently confirmed three different very exciting speaking gigs which I&#8217;ll be doing this spring: JSConf.us: I&#8217;ll be putting my Mozilla Jetpack Ambassador hat on to represent Mozilla Labs&#8217; Jetpack project at the premier Javascript conference in North America, JSConf.us, which this year will be April 17-18 in Washington D.C. and has a pirate theme.1 [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/life/wordcamp-boston-2010/' rel='bookmark' title='WordCamp Boston 2010'>WordCamp Boston 2010</a></li>
<li><a href='http://mitcho.com/blog/projects/jetpacking-in-boston/' rel='bookmark' title='Jetpacking in Boston'>Jetpacking in Boston</a></li>
<li><a href='http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/' rel='bookmark' title='Mashing up the browser in Maine'>Mashing up the browser in Maine</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I recently confirmed three different very exciting speaking gigs which I&#8217;ll be doing this spring:</p>

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

<p><strong>JSConf.us</strong>:</p>

<p>I&#8217;ll be putting my Mozilla Jetpack Ambassador hat on to represent Mozilla Labs&#8217; <a href="https://jetpack.mozillalabs.com/">Jetpack project</a> at the premier Javascript conference in North America, <a href="http://jsconf.us/2010/">JSConf.us</a>, which this year will be April 17-18 in Washington D.C. and has a pirate theme.<sup id="fnref:2"><a href="#fn:2" rel="footnote">1</a></sup> I&#8217;ll be giving a short talk in the main session and will also lead a hands-on Jetpack workshop in the hacker lounge. I&#8217;ve heard that JSConf is a lot of fun and I&#8217;m really looking forward to it! <img src='http://mitcho.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><strong>WordCamp San Francisco</strong>:</p>

<p>I&#8217;m honored to have been invited to give a talk at <a href="http://2010.sf.wordcamp.org/">WordCamp San Francisco 2010</a>. WordCamps are community-organized events for the <a href="http://wordpress.org">WordPress</a> community, and the San Francisco WordCamp is the original and biggest. WordCamp SF will be at the Mission Bay Conference Center on May 1st. <a href="https://2010.sf.wordcamp.org/tickets/">Tickets available</a>.</p>

<p>My talk is tentatively titled &#8220;Abstract Your Code.&#8221;<sup id="fnref:1"><a href="#fn:1" rel="footnote">2</a></sup> WordPress is a great platform to build amazing content-rich applications on, and many of us have written new functionality in the form of plugins. I hope to encourage developers to make their code more portable and reusable after the project is done—or, ideally, to even start with abstraction in mind—to add to the &#8220;life&#8221; of the code and to consider then open-sourcing that functionality.</p>

<p>Hope to see you there!</p>

<p><strong>International Association of Chinese Linguistics (IACL) 18</strong>:</p>

<p>Finally, I&#8217;m thrilled to say that I got a paper accepted to the <a href="http://www.fas.harvard.edu/~iacl18/Site/index.html">annual meeting of the International Association of Chinese Linguistics</a> which this year is at Harvard on May 20-22. IACL is <em>the</em> big conference for Chinese linguistics, with about <a href="http://www.fas.harvard.edu/~IACL18/AcceptList.pdf">180 papers presenting</a>. I&#8217;ll be presenting <em>Two</em> Only<em>s in Mandarin Chinese</em>, my recent work on the formal syntax/semantics of two <em>only</em> words in Chinese: <em>zhǐ</em> (只) and <em>éryǐ</em> (而已). I&#8217;ve put up <a href="http://mitcho.com/academic/handout-20100226.pdf">a handout</a> of some of this material in work-in-progress form which I recently presented at <a href="http://people.fas.harvard.edu/~nicolae/SNEWS_2010/Welcome.html">SNEWS</a>.</p>

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

<li id="fn:2">
<p>I&#8217;ll <a href="http://beijinghuar.com">fit right in</a>.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:1">
<p>Sexier title suggestions welcome.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/life/wordcamp-boston-2010/' rel='bookmark' title='WordCamp Boston 2010'>WordCamp Boston 2010</a></li>
<li><a href='http://mitcho.com/blog/projects/jetpacking-in-boston/' rel='bookmark' title='Jetpacking in Boston'>Jetpacking in Boston</a></li>
<li><a href='http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/' rel='bookmark' title='Mashing up the browser in Maine'>Mashing up the browser in Maine</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/spring-is-for-speaking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jetpacking in Boston</title>
		<link>http://mitcho.com/blog/projects/jetpacking-in-boston/</link>
		<comments>http://mitcho.com/blog/projects/jetpacking-in-boston/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 21:19:06 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Boston]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=3424</guid>
		<description><![CDATA[A couple weeks ago I gave a talk at the Boston Javascript meetup introducing Jetpack and filling people in in the latest developments in the project, including the Reboot. Between 20 to 30 people came to the talk which was at Microsoft Cambridge. Here are the slides from the talk:1 Extend the Browser with Jetpack [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/' rel='bookmark' title='Mashing up the browser in Maine'>Mashing up the browser in Maine</a></li>
<li><a href='http://mitcho.com/blog/projects/extending-wordpress-talk-at-the-boston-wordpress-meetup/' rel='bookmark' title='Extending WordPress talk at the Boston WordPress Meetup'>Extending WordPress talk at the Boston WordPress Meetup</a></li>
<li><a href='http://mitcho.com/blog/life/wordcamp-boston-2010/' rel='bookmark' title='WordCamp Boston 2010'>WordCamp Boston 2010</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago I gave a talk at the <a href="http://javascript.meetup.com/2/">Boston Javascript meetup</a> introducing Jetpack and filling people in in the latest developments in the project, including the <a href="http://javascript.meetup.com/2/">Reboot</a>. Between 20 to 30 people came to the talk which was at Microsoft Cambridge. Here are the slides from the talk:<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<p><a href="http://www.slideshare.net/mitcho/extend-the-browser-with-jetpack" title="Extend the Browser with Jetpack">Extend the Browser with Jetpack</a></p>

<p><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bostonjs-100224202650-phpapp02&#038;rel=0&#038;stripped_title=extend-the-browser-with-jetpack" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bostonjs-100224202650-phpapp02&#038;rel=0&#038;stripped_title=extend-the-browser-with-jetpack" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>

<p><span id="more-3424"></span>I felt the audience was very engaged and we had almost a dozen questions in the question period and throughout. Most of the examples centered around the use of capabilities and the new security model. For example:</p>

<ul>
<li>What level of granularity will the manifests have? Do you have to just say &#8220;I use xhr&#8221; or &#8220;I talk to twitter but not facebook&#8221;?</li>
<li>What will be the review process for capabilities?</li>
<li>What license will capabilities use?</li>
</ul>

<p>Perhaps I simply did not present this material in the clearest manner (it didn&#8217;t help that I didn&#8217;t have any particular slides covering the <a href="http://vimeo.com/10011379">capability and manifest model</a>) but it also reflects the reality that these particulars of the manifests&#8217; security sections are still being fleshed out. I&#8217;m looking forward to <a href="http://jsconf.us/2010/">the next time I speak on Jetpack</a> when hopefully the discussion of the Reboot will be more concrete and I&#8217;ll be able to give a clearer overview and demo of these aspects of the Reboot.</p>

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

<li id="fn:1">
<p>If anyone would like the Keynote deck, just let me know.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/' rel='bookmark' title='Mashing up the browser in Maine'>Mashing up the browser in Maine</a></li>
<li><a href='http://mitcho.com/blog/projects/extending-wordpress-talk-at-the-boston-wordpress-meetup/' rel='bookmark' title='Extending WordPress talk at the Boston WordPress Meetup'>Extending WordPress talk at the Boston WordPress Meetup</a></li>
<li><a href='http://mitcho.com/blog/life/wordcamp-boston-2010/' rel='bookmark' title='WordCamp Boston 2010'>WordCamp Boston 2010</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/jetpacking-in-boston/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jetpack Ambassadors in MV</title>
		<link>http://mitcho.com/blog/projects/jetpack-ambassadors-in-mv/</link>
		<comments>http://mitcho.com/blog/projects/jetpack-ambassadors-in-mv/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 20:55:23 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[travelogue]]></category>
		<category><![CDATA[California]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[ubiquity]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=3371</guid>
		<description><![CDATA[A couple weeks ago I went out to Mozilla HQ in Mountain View for a Jetpack Ambassador meetup. Jetpack is a project at Mozilla labs intended to make writing Firefox add-ons easier, and shares some ancestry with the Ubiquity project dear to my heart. The Jetpack Ambassadors are a team of Mozilla community members who [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/link/contribute-to-ubiquity-no-coding-required/' rel='bookmark' title='Contribute to Ubiquity! No Coding Required!'>Contribute to Ubiquity! No Coding Required!</a></li>
<li><a href='http://mitcho.com/blog/projects/localizing-ubiquity-an-open-letter-to-linguists/' rel='bookmark' title='Localizing Ubiquity: an open letter to linguists'>Localizing Ubiquity: an open letter to linguists</a></li>
<li><a href='http://mitcho.com/blog/projects/mozilla-by-the-numbers/' rel='bookmark' title='Mozilla By The Numbers'>Mozilla By The Numbers</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago I went out to Mozilla HQ in Mountain View for a Jetpack Ambassador meetup. <a href="http://mozillalabs.com/jetpack">Jetpack</a> is a project at <a href="http://mozillalabs.com">Mozilla labs</a> intended to make writing Firefox add-ons easier, and shares some ancestry with the Ubiquity project dear to my heart. The <a href="http://upload.wikimedia.org/wikipedia/en/c/c0/Super_Friends.jpg">Jetpack Ambassadors</a> are a team of Mozilla community members who will be involved with Jetpack marketing, evangelizing Jetpack and writing about our own experiences working with the exciting new Jetpack architecture.</p>

<p>We spent a good chunk of time with a team from <a href="http://www.ielephant.com/">Invisible Elephant</a> who came in to give us some training on making technical presentations, and then dug into the code on Day 2. It was great to have the geniuses at Mozilla Labs like Atul and Myk show us the latest Jetpack code as well as get the latest project direction from Daniel, Aza, and Nick, from which we could see the amount of careful consideration and effort that&#8217;s gone into <a href="https://wiki.mozilla.org/Labs/Jetpack/Reboot">the Jetpack reboot</a>.</p>

<p><zp:travel/jetpack2010/jetpack45.jpg><zp:travel/jetpack2010/jetpack47.jpg><zp:travel/jetpack2010/jetpack59.jpg><zp:travel/jetpack2010/jetpack67.jpg><zp:travel/jetpack2010/jetpack64.jpg></p>

<p>The best part of the whole experience, though, has to be the fellowship with the other Jetpack Ambassadors. The Ambassadors came from all over the world, encompassing Europe, Asia, S. America, and of course N. America. Each are involved with some really exciting projects and have each made a name for themselves in their respective communities. I&#8217;ve put together <a href="http://twitter.com/mitchoyoshitaka/jetpack">a twitter list</a> of all the Jetpack Ambassadors and the core team members and invite you to follow them.</p>

<p><zp:travel/jetpack2010/jetpack05.jpg><zp:travel/jetpack2010/jetpack08.jpg><zp:travel/jetpack2010/jetpack17.jpg><zp:travel/jetpack2010/jetpack20.jpg><zp:travel/jetpack2010/jetpack24.jpg><zp:travel/jetpack2010/jetpack36.jpg><zp:travel/jetpack2010/jetpack38.jpg><zp:travel/jetpack2010/jetpack40.jpg></p>

<p>We also had the greatest number of <a href="http://mozillalabs.com/ubiquity/">Ubiquity</a> core developers to have ever been in the same place at the same time, which of course had to be documented. <img src='http://mitcho.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><zp:travel/jetpack2010/jetpack63.jpg></p>

<p>(More photos can be seen in <a href="http://mitcho.com/photos/travel/jetpack2010/">my gallery</a>.)</p>

<p>I had a fantastic time in MV and it was a shame I could only be there for such a short time. I feel honored to be a part of this group and am looking forward to speaking on Jetpack soon <a href="http://javascript.meetup.com/2/calendar/11536445/">at an event near you</a>!</p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/link/contribute-to-ubiquity-no-coding-required/' rel='bookmark' title='Contribute to Ubiquity! No Coding Required!'>Contribute to Ubiquity! No Coding Required!</a></li>
<li><a href='http://mitcho.com/blog/projects/localizing-ubiquity-an-open-letter-to-linguists/' rel='bookmark' title='Localizing Ubiquity: an open letter to linguists'>Localizing Ubiquity: an open letter to linguists</a></li>
<li><a href='http://mitcho.com/blog/projects/mozilla-by-the-numbers/' rel='bookmark' title='Mozilla By The Numbers'>Mozilla By The Numbers</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/jetpack-ambassadors-in-mv/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mashing up the browser in Maine</title>
		<link>http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/</link>
		<comments>http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 19:00:32 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[travelogue]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[Maine]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[ubiquity]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=3233</guid>
		<description><![CDATA[Last week I was invited to give a talk at the TechMaine annual conference in Portland, Maine. Being a longer time slot than I previously have used to talk about Ubiquity, I decided to dedicate a good portion of the talk to Jetpack. Being outside of Mozilla for the past few months, this gave me [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/extending-wordpress-talk-at-the-boston-wordpress-meetup/' rel='bookmark' title='Extending WordPress talk at the Boston WordPress Meetup'>Extending WordPress talk at the Boston WordPress Meetup</a></li>
<li><a href='http://mitcho.com/blog/projects/talking-ubiquity-in-japan-%e6%8b%a1%e5%bc%b5%e6%a9%9f%e8%83%bd%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e3%81%a6%e7%99%ba%e8%a1%a8/' rel='bookmark' title='Talking Ubiquity in Japan: 拡張機能勉強会にて発表'>Talking Ubiquity in Japan: 拡張機能勉強会にて発表</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-presentation-at-tokyo-20/' rel='bookmark' title='Ubiquity presentation at Tokyo 2.0'>Ubiquity presentation at Tokyo 2.0</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Last week I was invited to give a talk at the <a href="http://www.techmaine.com/ac2009">TechMaine annual conference</a> in Portland, Maine.</p>

<p>Being a longer time slot than I previously have used to talk about Ubiquity, I decided to dedicate a good portion of the talk to <a href="http://jetpack.mozillalabs.com">Jetpack</a>. Being outside of Mozilla for the past few months, this gave me an opportunity to get reacquainted with the Jetpack APIs. I myself was impressed by how easy it was to develop a quick Jetpack. I ended up preparing two to live-code during the talk: one called <a href="http://jetpackgallery.mozillalabs.com/jetpacks/207">Helvetica</a> which, with one click, replaces all fonts on the current page with Helvetica; and <a href="http://jetpackgallery.mozillalabs.com/jetpacks/208">You Are Here</a> which uses an open API from <a href="http://ipinfodb.com/">IPinfoDB</a> to display the physical location of the domain you are currently visiting in the status bar. Both are now on the <a href="http://jetpackgallery.mozillalabs.com/">Jetpack Gallery</a>.</p>

<p><a rel='lightbox' href="http://mitcho.com/blog/wp-content/uploads/2009/12/youarehere.png"><img src="http://mitcho.com/blog/wp-content/uploads/2009/12/youarehere-inset.png" alt="" title="You Are Here" width="464" height="112" class="alignnone size-full wp-image-3237" /></a></p>

<p>Unfortunately there was a bit of a snowstorm leading up to the event, but there was still a nice turnout and I got to meet some fantastic people there. Ken Shoemake of <a href="http://en.wikipedia.org/wiki/slerp">slerp</a> and <a href="http://en.wikipedia.org/wiki/quaternion">quaternion</a> fame came up to me after my talk and said &#8220;the Ubiquity parser reminded me of the dancing bear&#8230; it&#8217;s less surprising that it works well as that it works at all.&#8221; <img src='http://mitcho.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I also enjoyed the other great presentations in the technology track, covering the <a href="http://www.nofluffjuststuff.com/conference/speaker/brian_sletten">virtues of REST</a> and basic iPhone development.</p>

<p><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/mitcho/mashup-the-browser-with-ubiquity-and-jetpack" title="Mashup the Browser with Ubiquity and Jetpack">Mashup the Browser with Ubiquity and Jetpack</a><object style="margin:0px" width="600" height="501"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=techmaine-091210174736-phpapp01&#038;stripped_title=mashup-the-browser-with-ubiquity-and-jetpack" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=techmaine-091210174736-phpapp01&#038;stripped_title=mashup-the-browser-with-ubiquity-and-jetpack" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="501"></embed></object></p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/extending-wordpress-talk-at-the-boston-wordpress-meetup/' rel='bookmark' title='Extending WordPress talk at the Boston WordPress Meetup'>Extending WordPress talk at the Boston WordPress Meetup</a></li>
<li><a href='http://mitcho.com/blog/projects/talking-ubiquity-in-japan-%e6%8b%a1%e5%bc%b5%e6%a9%9f%e8%83%bd%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e3%81%a6%e7%99%ba%e8%a1%a8/' rel='bookmark' title='Talking Ubiquity in Japan: 拡張機能勉強会にて発表'>Talking Ubiquity in Japan: 拡張機能勉強会にて発表</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-presentation-at-tokyo-20/' rel='bookmark' title='Ubiquity presentation at Tokyo 2.0'>Ubiquity presentation at Tokyo 2.0</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/mashing-up-the-browser-in-maine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

