<?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>Justin Dolske's blog &#187; PlanetFirefox</title>
	<atom:link href="http://blog.mozilla.com/dolske/category/planetfirefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/dolske</link>
	<description>The odd parity bit</description>
	<lastBuildDate>Fri, 23 Dec 2011 04:48:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Speaking of Community</title>
		<link>http://blog.mozilla.com/dolske/2011/09/18/speaking-of-community/</link>
		<comments>http://blog.mozilla.com/dolske/2011/09/18/speaking-of-community/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 22:02:46 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=507</guid>
		<description><![CDATA[In my last post I mentioned how super satisfying it is to be part of a community working together to make Firefox better. This morning someone new dropped into #fx-team on IRC, asking about a reproducible problem and how to &#8230; <a href="http://blog.mozilla.com/dolske/2011/09/18/speaking-of-community/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://blog.mozilla.com/dolske/2011/09/06/community-participation/">last post</a> I mentioned how super satisfying it is to be part of a community working together to make Firefox better.</p>
<p>This morning someone new dropped into <a href="irc://irc.mozilla.org/fx-team">#fx-team</a> on IRC, asking about a reproducible problem and how to submit a patch. Normally #fx-team is a fairly busy channel, but since we were all at the Mozilla All-Hands last week, people were traveling and recovering&#8230; So it was 12 hours of dead silence before anyone replied. Not great, but also pretty rare. :-(</p>
<p>Anyway, the awesome part was that in that time this person managed to grab the source code, diagnose the problem with gdb, fix the problem, and then <a href="http://cheater.posterous.com/hacking-firefox">blog about it</a> &#8212; check it out. That&#8217;s pretty awesome! (Oops, I already said awesome once. Still deserving of a 2nd &#8216;awesome&#8217;. :-)</p>
<p>The timing couldn&#8217;t have been better. At the All Hands, I went to one of the talks by Ubuntu&#8217;s <a href="http://en.wikipedia.org/wiki/Jono_Bacon">Jono Bacon</a> on Growing and Maintaining Community. It was pretty awesome (3rd time, yes I know). Obviously Ubuntu has a large community, but I was hadn&#8217;t realized just how much thoughtful effort has gone into improving it&#8230; TONS of fantastic ideas and practices that I hope Mozilla can also make use of. The one downside, though, was that I came away feeling a little bummed at how much work need to do to reach the high level of wide-ranging, effective engagement Bacon et al have developed. So it was really splendid timing to have a new community member pop out and have a good experience.</p>
<p>Today was a good day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2011/09/18/speaking-of-community/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Community participation</title>
		<link>http://blog.mozilla.com/dolske/2011/09/06/community-participation/</link>
		<comments>http://blog.mozilla.com/dolske/2011/09/06/community-participation/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 05:43:18 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=503</guid>
		<description><![CDATA[(First, let me note that there will be no flame-farting robots in this post.) Now that&#8217;s out of the way, let me refer you to this post by Notch, creator of the wildly-successful indy game Minecraft. Someone tweeted me about &#8230; <a href="http://blog.mozilla.com/dolske/2011/09/06/community-participation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>(First, let me note that there will be no flame-farting robots in this post.)</p>
<p>Now that&#8217;s out of the way, let me refer you to <a href="http://notch.tumblr.com/post/9896830082/you-know-whats-fun">this post by Notch</a>, creator of the wildly-successful indy game <a href="http://www.minecraft.net/">Minecraft</a>.</p>
<blockquote><p>Someone tweeted me about a joking campaign to add 3d modeled snouts to the pigs in Minecraft, so I did.</p></blockquote>
<p>I think this is one of my favorite parts of working on Firefox. &#8220;Hey, let&#8217;s fix that&#8221; &#8230; &#8220;*bam* Fixed&#8221;. That&#8217;s not to say every community suggestion or known bug is simple to fix, but when it is it&#8217;s super satisfying.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2011/09/06/community-participation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seven Things</title>
		<link>http://blog.mozilla.com/dolske/2011/08/09/seven-things/</link>
		<comments>http://blog.mozilla.com/dolske/2011/08/09/seven-things/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 08:40:09 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=473</guid>
		<description><![CDATA[&#8220;Seven Things&#8221; is the hip new, err, thing that all the kids are doing these days. I got pinged, so here&#8217;s my 7. Hey, let&#8217;s do this David Letterman style. *drumroll* TOP SEVEN THINGS ABOUT JUSTIN DOLSKE! 7. Has a &#8230; <a href="http://blog.mozilla.com/dolske/2011/08/09/seven-things/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#8220;Seven Things&#8221; is the hip new, err, thing that all the kids are doing these days. I got pinged, so here&#8217;s my 7. Hey, let&#8217;s do this David Letterman style.</p>
<p>*drumroll*</p>
<p>TOP SEVEN THINGS ABOUT JUSTIN DOLSKE!</p>
<p><strong>7. Has a cat!</strong></p>
<p>Hmm. Kinda off to a bland start, but then I never found Letterman to be very funny.</p>
<p>Anyway, yes. I haz a cat. I saw her hanging around as a stray, and began to leave some <a href="http://blog.mozilla.com/dolske/2006/11/24/cat-food/">cat food</a> outside for her. Then, after a couple rainy nights of her stopping by to eat (as well as look sad and lonely), I opened up my door to put out new food&#8230; She ran inside (!) and I realized I had just been adopted. :-3 She&#8217;s a fairly small cat (and was starved when she found me), so I named her &#8220;Munchkin&#8221;. We&#8217;re snuggle buddies, and she&#8217;s so sweet and well-behaved it&#8217;s ridiculous. _Ridiculous._</p>
<p>I have pictures from <a href="http://dolske.net/kitty/">when I first got her</a>, as well as some <a href="http://www.flickr.com/photos/dolske/sets/72157600278362819/detail/">more recent shots</a>. Oh, and she&#8217;s Kind Of A Big Deal, as the header on the URL-shortening side <a href="http://icanhaz.com/">icanhas.com</a>.</p>
<p><img src="http://people.mozilla.org/~dolske/blogimg/7things-cat.jpg"></p>
<p><strong>6. Built a Firefox logo from LEGO!</strong></p>
<p>I&#8217;ve previously <a href="http://blog.mozilla.com/dolske/2010/12/15/firefox-is-made-of-lego/">blogged about this</a>. It&#8217;s awesome enough to mention again, I&#8217;m quite pleased with how it turned out.</p>
<p><a href="http://www.flickr.com/photos/dolske/5262017808/in/photostream"><img src="http://people.mozilla.org/~dolske/blogimg/7things-lego.jpg"></a></p>
<p><strong>5. Is a hueg space history nerd!</strong></p>
<p>I&#8217;m keenly interested in NASA&#8217;s (and other countries&#8217;) space programs, both past and present. I first got hooked after reading an article in the newspaper on the 25th anniversary of the Apollo Program, when I read that we had landed (men) on the moon not just once, but actually 6 times. I was stunned that that I had never learned that before, and was determined to know more.</p>
<p>I particularly enjoy the nitty-gritty, engineering details of programs. It can be hard to find &#8212; mass market books don&#8217;t want to get too technical, and NASA&#8217;s own outreach is mainly for school kids &#8212; but there are gems like <a href="http://www.amazon.com/Space-Shuttle-National-Transportation-Missions/dp/0963397451">this book</a>, and NASA&#8217;s <a href="http://www.hq.nasa.gov/alsj/frame.html">Apollo Surface Journal</a>, or <a href="http://history.nasa.gov/afj/">Apollo Flight Journal</a>. NASA now has lots of very high-res photos from recent Shuttle and ISS missions, which you&#8217;ll see as wallpapers on my desktop at work. They&#8217;re fun to zoom into and examine for little details.</p>
<p><img src="http://people.mozilla.org/~dolske/blogimg/7things-nasa.jpg"></p>
<p><strong>4. Can do software _and_ hardware!</strong></p>
<p>I do software for a living, but I also love to dabble with simple electronics on the side. I can fairly claim geek points for knowing how to solder (fine-pitch SMT, at that!), doing design and etching of my own boards, reading datasheets for fun, and hoarding components that will be &#8220;useful someday&#8221;. All self-taught, but also not very good at it. :-( They say software guys shouldn&#8217;t do hardware, and vice-versa &#8212; it&#8217;s probably true. But it pleases me, and I think it&#8217;s more about the journey than the destination.</p>
<p>My first serious interest came after reading about a neat &#8220;forever flasher&#8221; project on alt.hackers, back in the day&#8230; It was just a little LED blinking circuit (solar powered, with supercap for storage), but the clever part was that it was hooked up with fine magnet wire and permanently cast in the center of a clear acrylic block. From there I graduated to building a beer-keg monitoring system with a DalSemi TINI kit. My hardware was flaky, but it did have a web interface. And I get bonus  points for writing a GIF encoder in Java, mostly from scratch.These days I&#8217;ve been tinkering with an <a href="http://www.arduino.cc/">Arduino</a> board I got from <a href="http://www.sparkfun.com/news/322">SparkFun&#8217;s first Free Day</a> promo, as well as TI&#8217;s nice little <a href="http://hackedgadgets.com/2010/06/23/ti-msp430-launchpad-development-platform-for-430/">MSP430 LaunchPad</a> kit (just $4.30!).</p>
<p><a href="http://blog.mozilla.com/dolske/2010/05/26/a-little-mouse-hack/"><img src="http://people.mozilla.org/~dolske/blogimg/7things-led.jpg"></a></p>
<p><strong>3. Loves Beer!</strong></p>
<p>Did I just mention beer? I think I did. Yes, I&#8217;m a bit of a beer snob&#8230; Ok, ok, I&#8217;m a big beer snob and huge hop-head. I&#8217;m in heaven with the amazing beer variety available on the west coast. If someone could please move Belgium over here too, I&#8217;d appreciate it.</p>
<p>Instead of a long monologue on how much I enjoy all things brewed, I&#8217;ll just plug <a href="http://beeradvocate.com/mag/">BeerAdvocate</a> here. Subscribe, it&#8217;s just $15 cheap!</p>
<p><a href="http://www.flickr.com/photos/donotlick/5551524021/in/photostream/"><img src="http://people.mozilla.org/~dolske/blogimg/7things-beer.jpg"></a></p>
<p><strong>2. He&#8217;s an international fugitive from the CIA and NSA!</strong></p>
<p>I miiiight be stretching the truth here slightly. :-) But back in 1997, I helped out with the <a href="http://en.wikipedia.org/wiki/DESCHALL_Project">DESCHALL Project</a>, a massive, distributed effort to brute-force a message encrypted with DES. (Purely white-hat, it was a contest sponsored by RSA Security.) After 3 months and tens of thousands of participating systems, a 200Mhz Pentium-90 owned by some guy in Utah stumbled across the correct key, and we won. (The secret message was &#8220;Strong cryptography makes the world a safer place.&#8221;)</p>
<p>This was the first known successful brute-force attack against DES. We got some press (page A3 of the Wall Street Journal!), I later cowrote a <a href="http://usenix.org/publications/login/1998-5/curtin.html">USENIX article</a>, and overall it felt good to play a tiny role in the crypto wars of the 1990s&#8230; Back when the government considered cryptography to be munition and still tried to tightly control its export. Coincidentally, we won just days before the US Government gave Netscape permission to export 128-bit crypto (instead of the ridiculously limited 40-bit limitation it required before).</p>
<p>I didn&#8217;t write any of the crypto code for DESCHALL, but <a href="http://web.archive.org/web/19990221182446/http://www.cis.ohio-state.edu/%7Edolske/des97/">I did help with</a> organizing the project, wrote a proxy to tunnel its UDP client/server control traffic over TCP, made a graph server for people to track their progress, and (most fun of all) made an export-control download page that did a reverse-IP lookup of the user, then a WHOIS lookup on that domain, and finally scraped out an address to see if they were likely in the US. Oh, and I ran the DESCHALL client on about 200 systems at Ohio State University&#8230; Over the 3 months, they tested an 100 trillion DES keys &#8212; or about 0.1% of the problem space. One year later, the EFF built <a href="http://en.wikipedia.org/wiki/EFF_DES_cracker">Deep Crack</a>, which could crack a DES key in just a couple of days.</p>
<p>Eventually I should file a <a href="http://en.wikipedia.org/wiki/Freedom_of_Information_Act_%28United_States%29">FOIA request</a> to see what the US Government knew about the project and us. :-)</p>
<p><img src="http://people.mozilla.org/~dolske/blogimg/7things-des.gif"></p>
<p><strong>1. Starting his 6th year at Mozilla!</strong></p>
<p>Last but not least.</p>
<p>My first day working for Mozilla was August 7th, 2006. <a href="http://blog.mozilla.com/schrep/2006/08/09/welcome-to-justin-dolske/">5 full years ago</a>, nearly to the day. Wow. Looking back, I am concurrently full of things to say and speechless. I&#8217;ll just say it&#8217;s been an amazing experience that never gets old &#8212; every day, when the office elevator doors slide open and I see <a href="http://www.flickr.com/photos/smalolepszy/4580851204/">&#8220;Mozilla&#8221; on the wall</a>, I feel awed and humbled.</p>
<p>I can&#8217;t wait for what the next 5 years will bring!</p>
<p>And that&#8217;s tonight&#8217;s Top 7 list!</p>
<p>*throws card through fake window*</p>
<p>Good night, ladies and gentlemen!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2011/08/09/seven-things/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A little mouse hack</title>
		<link>http://blog.mozilla.com/dolske/2010/05/26/a-little-mouse-hack/</link>
		<comments>http://blog.mozilla.com/dolske/2010/05/26/a-little-mouse-hack/#comments</comments>
		<pubDate>Wed, 26 May 2010 23:24:29 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=405</guid>
		<description><![CDATA[A major theme of the upcoming Firefox 4 release is improving speed and responsiveness, especially in the user interface. It&#8217;s easy to see issues where responsiveness is on the order of seconds (like waiting for an update to apply, or &#8230; <a href="http://blog.mozilla.com/dolske/2010/05/26/a-little-mouse-hack/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A major theme of the upcoming Firefox 4 release is improving speed and responsiveness, especially in the user interface. It&#8217;s easy to see issues where responsiveness is on the order of seconds (like waiting for an update to apply, or the length of time to respond to a modal dialog), but how do you examine and measure UI changes that happen over a period of just milliseconds?</p>
<p>One could instrument the code and get nanosecond-level precision &#8212; but it&#8217;s difficult to know where to insert probes, and you still may not be measuring what the user is actually seeing. A more direct &#8220;ground truth&#8221; would be to use a camera to record what&#8217;s displayed on the screen, and then examine the resulting video frame-by-frame to obtain data&#8230; I dabbled with this briefly last year when working on a Windows CE bug about slow-opening windows and menus. But more recently, <a href="http://blog.mozilla.com/faaborg/">Alex Faaborg</a> has started a investigation of the Firefox UI using a significantly refined technique.</p>
<p>A problem Alex quickly ran into, though, is that it&#8217;s hard to look at a video and know exactly when the user clicked a mouse button. If only there was some visual indication of the mouse button state&#8230; Hmm! That was enough to start the wheels turning in my head, yadda yadda, and one weekend later I had complete a nice little hack that added some LEDs to a mouse so you could see the button states.</p>
<p>Some pictures&#8230; (See Flickr for the <a href="http://www.flickr.com/photos/dolske/sets/72157624018962823/">whole set</a>.)</p>
<p><a href="http://www.flickr.com/photos/dolske/4642557235/"><img src="http://people.mozilla.com/~dolske/blogimg/mousehack1.jpg"></a></p>
<p>First, you&#8217;ve got to drill a nice hole (<a href="http://people.mozilla.com/~dolske/blogimg/twss.jpg">*</a>)&#8230; I cringe every time I see someone mention doing some hack with a Dremel, because most of the time the result looks like something a drunk monkey with a chainsaw would produce.</p>
<p><a href="http://www.flickr.com/photos/dolske/4643171126/"><img src="http://people.mozilla.com/~dolske/blogimg/mousehack2.jpg"></a></p>
<p>Next, tap into the mouse&#8217;s microswitches (which are tied to ground) and the USB&#8217;s +5V.</p>
<p><a href="http://www.flickr.com/photos/dolske/4642559933/"><img src="http://people.mozilla.com/~dolske/blogimg/mousehack3.jpg"></a></p>
<p>Finally, route things nicely. Behold, the four-as&#8230; err, two-wired mouse!</p>
<p><a href="http://www.flickr.com/photos/dolske/4642579725/"><img src="http://people.mozilla.com/~dolske/blogimg/mousehack4.jpg"></a></p>
<p>This is the business end of the extra wire now attached to the mouse. 2 LEDs (and a couple of resistors) wrapped up in some heat-shrink tubing. When a mouse button is clicked, one of them lights up &#8212; red for right, (ye)llow for left.</p>
<p>This is a pretty simple little hack, but it was especially fun it&#8217;s not often us software guys get to do hardware stuff. And, hey, it even worked on the first try!</p>
<p>Sadly, there is one little problem&#8230; While the hacked mouse worked flawlessly for me, it immediately failed to work for Alex &#8212; the OS didn&#8217;t see mouse clicks, even though the LEDs lit up. Oh no! Luckily I had made the LED tail detachable (not shown here), as it turns out that if the mouse is plugged into the computer with the LED tail attached, it doesn&#8217;t work. But if it&#8217;s plugged in without the LED tail, and then the tail is plugged in <strong>afterwards</strong>, it works fine. I&#8217;m guessing that I just need to add some decoupling capacitor where I tapped into the switches, as the mouse&#8217;s IC was ok with the short traces to the switches but not the new 4-foot wires hanging off it. Or maybe a pull-up resistor? Both? Dunno exactly what the problem is yet &#8212; this is why I&#8217;m a software guy. ;-) What say you?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/05/26/a-little-mouse-hack/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Status update</title>
		<link>http://blog.mozilla.com/dolske/2010/04/25/status-update/</link>
		<comments>http://blog.mozilla.com/dolske/2010/04/25/status-update/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 05:58:33 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=376</guid>
		<description><![CDATA[One of these things I did not actually work on: JavaScript / js-ctypes implementation of WeaveCrypto Migration and replacement of localstore.rdf with a .json backing store Rickrolling Fligtar&#8217;s new dashboard Tab-modal dialogs proof-of-concept Fix multiple master-password dialogs with session restore &#8230; <a href="http://blog.mozilla.com/dolske/2010/04/25/status-update/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of these things I did not actually work on:</p>
<ul>
<li>JavaScript / js-ctypes implementation of WeaveCrypto</li>
<li>Migration and replacement of localstore.rdf with a .json backing store</li>
<li>Rickrolling Fligtar&#8217;s new dashboard</li>
<li>Tab-modal dialogs proof-of-concept</li>
<li>Fix multiple master-password dialogs with session restore</li>
<li>Ported Firefox to ColecoVision.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/04/25/status-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Weave, crypto, and JavaScript</title>
		<link>http://blog.mozilla.com/dolske/2010/04/25/weave-crypto-javascript/</link>
		<comments>http://blog.mozilla.com/dolske/2010/04/25/weave-crypto-javascript/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 05:21:49 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=345</guid>
		<description><![CDATA[tl;dr: fa20ae35b8ac53b28dde4fc333aba21f :-) Up until now, Mozilla&#8217;s Weave add-on has been living with an awkward implementation detail: a binary component. When I wrote Weave&#8217;s current cryptographic component back in 2008, in order to use the crypto code that&#8217;s already in &#8230; <a href="http://blog.mozilla.com/dolske/2010/04/25/weave-crypto-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>tl;dr: fa20ae35b8ac53b28dde4fc333aba21f :-)</p>
<p>Up until now, Mozilla&#8217;s <a href="https://mozillalabs.com/weave/">Weave</a> add-on has been living with an awkward implementation detail: a binary component. When I wrote Weave&#8217;s current cryptographic component <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=433949">back in 2008</a>, in order to use the crypto code that&#8217;s already in Mozilla (ie, NSS) there was no choice but to write C++ code. NSS doesn&#8217;t export any scriptable interfaces at all, and its partner-in-crime (PSM) exposes only a limited set of high-level functions &#8212; none of which was useful for Weave.</p>
<p>The C++ code has been working fine, but has a number of serious drawbacks&#8230; A binary component has to be compiled for each supported platform (originally just Windows, Linux, Mac x86 and Mac PowerPC). That results in a bigger download, and makes it a pain to support new platforms (like 64-bit Windows, 64-bit Linux, 64-bit Mac, Maemo, Windows CE/Mobile, Android, etc). It&#8217;s also a barrier to new developers &#8212; compiling a binary component requires a build environment and XULRunner SDK, whereas hacking on most extensions requires nothing more than a text editor. Luckily the C++ code has been quite stable, so Weave was able to hack around this by including pre-compiled binaries in the Mercurial repository.</p>
<p>But enough is enough.</p>
<p>The next (trunk) version of Firefox includes JS-CTypes, a feature that allows JavaScript to interface with native code. Think of it as dlopen/dlsym for JS. By <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=513798">porting the WeaveCrypto component</a> over to JavaScript + JS-CTypes, Weave is now able to talk with NSS directly, without any C++ code. It basically Just Works &#8212; adding support for <a href="http://www.oxymoronical.com/blog/2010/04/Firefox-running-on-the-Palm-Pre-mostly">Mossop&#8217;s Palm Pre port</a> of Firefox was literally a 1-line change. Adding support for Android was a 4-line change (only because they&#8217;re tricky and put libnss3.so in a sub-directory).</p>
<p>I should also mention that unit tests were a HUGE help in getting the new code completed. I wrote extensive tests for the C++ version of WeaveCrypto, and once the JS-CTypes version was working with those tests I was able to make a full-up Weave sync work with the new code on the first try. Easy-peasy!</p>
<p>If you&#8217;re interested in seeing what this new code does, take a look at <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=513798">the bug</a> and the code in the <a href="http://hg.mozilla.org/labs/weave/file/tip/crypto/WeaveCrypto.js">Mercurial repository</a>. Note that the XPCOM interfaces are fairly specific to what Weave wants to do &#8212; it&#8217;s not a general-purpose JS crypto API. But it&#8217;s a huge step towards making it easier to do crypto code in JS extensions &#8212; and perhaps in the future we&#8217;ll look at making a real general-purpose crypto API for extensions; it&#8217;s certainly an interesting problem! If folks are interested in helping out with such a project, let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/04/25/weave-crypto-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Post This Hacker</title>
		<link>http://blog.mozilla.com/dolske/2010/04/20/post-this-hacker/</link>
		<comments>http://blog.mozilla.com/dolske/2010/04/20/post-this-hacker/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 02:57:39 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=339</guid>
		<description><![CDATA[I couldn&#8217;t resist a little wordplay on the Mozilla Drumbeat Hack This Poster&#8230; (cut strips at bottom so people can have their own tear-off miniblizz!)]]></description>
			<content:encoded><![CDATA[<p>I couldn&#8217;t resist a little wordplay on the Mozilla Drumbeat <a href="http://commonspace.wordpress.com/2010/04/16/drumbeat-toronto-poster/">Hack This Poster</a>&#8230;</p>
<p><a href="https://people.mozilla.com/~dolske/blogimg/posthacker.png"><img src="https://people.mozilla.com/~dolske/blogimg/posthacker-small.png"></a></p>
<p>(cut strips at bottom so people can have their own tear-off miniblizz!)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/04/20/post-this-hacker/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Status and stuff</title>
		<link>http://blog.mozilla.com/dolske/2010/04/12/status-and-stuff/</link>
		<comments>http://blog.mozilla.com/dolske/2010/04/12/status-and-stuff/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 08:04:19 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=332</guid>
		<description><![CDATA[A bit of stuff I&#8217;ve been up to lately: CSS Transitions for videocontrols. Finally got around to landing this. There&#8217;s really no visible change, but it replaces and simplifies a whole bunch of Javascript-driven animation code. CSS Transitions are really &#8230; <a href="http://blog.mozilla.com/dolske/2010/04/12/status-and-stuff/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A bit of stuff I&#8217;ve been up to lately:</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=521890">CSS Transitions for videocontrols</a>. Finally got around to landing this. There&#8217;s really no visible change, but it replaces and simplifies a whole bunch of Javascript-driven animation code. CSS Transitions are <em>really</em> nice to work with.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=551851">Use Services.jsm in Login Manager.</a> Gavin added <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/Services.jsm">Services.jsm</a> to trunk not that long ago, and it&#8217;s one of those things that&#8217;s so slick to use we should have done it years ago. There&#8217;s been a small flurry of patches to convert various code over to using Services.jsm; it&#8217;s trivial work but is really good for code hygiene.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=557661">A 3rd round of crashed-plugin UI tweaks</a>. Hopefully we&#8217;ve got it nailed this time! Also fixed the last of the significant crashed-plugin UI bugs, and started a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=558517">cleanup</a> of the trunk code in preparation for future work.</li>
<li>Reviews of 2 Form History patches for &#8220;good first bug&#8221; bugs &#8212; I need to start tagging more of these! With these fixes, we now <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=188285">avoid saving credit card numbers</a>, and there&#8217;s a new option (off by default) to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=252486">suppress saving data on SSL pages</a>. I&#8217;ve also been finishing up patches for helping Weave to sync form data.</li>
<li>Finished reviews, tests, and landing for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=521467">automatic proxy authentication</a>. BenB&#8217;s patch is now in the tree, though it&#8217;s currently preffed off. If you use a proxy with authentication, enable &#8220;signon.autologin.proxy&#8221; and give it spin.</li>
<li>Finished porting of the C++ WeaveCrypto module to JS-CTypes, and was able to successfully sync between profiles using it.</li>
<li><a href="http://blog.mozilla.com/dolske/2010/04/11/thunzilla/">Thunzilla!</a></li>
</ul>
<p>Coming up soon:</p>
<ul>
<li>Finish up last quarter&#8217;s E10S scoping, and get this quarter&#8217;s E10S goal underway.</li>
<li>Final polish on the JS-CTypes WeaveCrypto, get it out for review.</li>
<li>Doing a little 1 or 2 day sprint with zpao to port most of the remaining C++ form history code to Javascript.</li>
<li>Death to (almost) all superfluous Master Password prompts.</li>
<li>Other random awesomeness.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/04/12/status-and-stuff/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I &lt;3 XUL</title>
		<link>http://blog.mozilla.com/dolske/2010/03/04/i-3-xul/</link>
		<comments>http://blog.mozilla.com/dolske/2010/03/04/i-3-xul/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 20:18:34 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=290</guid>
		<description><![CDATA[(reference) ;-)]]></description>
			<content:encoded><![CDATA[<p><img src="http://people.mozilla.com/~dolske/blogimg/heartxul.png"></p>
<p>(<a href="http://laughingsquid.com/css-is-awesome/">reference</a>)</p>
<p>;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/03/04/i-3-xul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not quite smooth as buttah&#8230;</title>
		<link>http://blog.mozilla.com/dolske/2010/03/02/not-quite-smooth-as-buttah/</link>
		<comments>http://blog.mozilla.com/dolske/2010/03/02/not-quite-smooth-as-buttah/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 04:47:02 +0000</pubDate>
		<dc:creator>Justin Dolske</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PlanetFirefox]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/dolske/?p=282</guid>
		<description><![CDATA[So, I finally got around to watching this video which has been been making the rounds as of late (not a Rickroll, I swear to god! WHY DOES NO ONE TRUST ME?! :-). I fired it up the 1080p version &#8230; <a href="http://blog.mozilla.com/dolske/2010/03/02/not-quite-smooth-as-buttah/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So, I finally got around to watching <a href="http://www.youtube.com/watch?v=qybUFnY7Y8w">this video</a> which has been been making the rounds as of late (not a Rickroll, I swear to god! WHY DOES NO ONE TRUST ME?! :-). I fired it up the 1080p version in fullscreen mode, and was slightly disappointed to find that while the video was playing back rather well, it wasn&#8217;t <em>quite</em> perfect. As the beer commercials say, &#8220;rich, but not smooth.&#8221;</p>
<p>So I next loaded it up in Safari, to see how it compared. Previous versions of Firefox have had some jerky-video problems (due to running garbage collection at bad times or doing too much main-thread disk IO for session restore), so I was fully prepared to file a bug on the problem &#8212; smooth playback in another browser would be a strong indication that something in our code was causing the poor performance.</p>
<p>However, what I found was that playback in Safari was much much worse that on the <a href="http://nightly.mozilla.org/">trunk Firefox build</a> I was using. While Firefox yielded good playback with an occasional glitch, Safari gave a consistently poor playback of around 3 fps.</p>
<p>There&#8217;s one clear, inescapable conclusion here: Flash sucks. :-) But seriously, folks, I&#8217;m happy to see that trunk builds perform well. I should still file a bug to investigate if we&#8217;re responsible for the occasional stutter in playback (or if that&#8217;s just Flash), and if results on Windows are similar to OS X or not. But I&#8217;m still pleased to see that this arbitrary trunk nightly &#8212; not even beta quality &#8212; is doing a good job.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/dolske/2010/03/02/not-quite-smooth-as-buttah/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

