<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet Mozilla Interns</title>
	<link>http://planet.mozinterns.net</link>
	<language>en</language>
	<description>Planet Mozilla Interns - http://planet.mozinterns.net</description>

<item>
	<title>Brian Krausz: Antiantisocial Networks</title>
	<guid isPermaLink="false">http://nerdlife.net/?p=133</guid>
	<link>http://feeds.feedburner.com/~r/nerdlife/~3/384687093/</link>
	<description>&lt;p&gt;Today TechCrunch reported on a paper describing a way to &lt;a href=&quot;http://www.techcrunch.com/2008/09/05/researchers-build-malicious-facebook-app/&quot;&gt;use Facebook for malicious means&lt;/a&gt;.  The paper describes a DDoS attack that can be done, leveraging the large number of users of an application to attack a victim site.&lt;/p&gt;
&lt;p&gt;While this attack vector is legitimate, I see a number of things that make it inherently infeasibly, and don’t think it really warrants being called a “FaceBot” (implying similar power to a botnet).&lt;/p&gt;
&lt;p&gt;In order to create an application, one obviously needs to create a Facebook account, though that can be done anonymously.  The real issue is that in order to execute such an attack, one would need to make an application that is incredibly popular.  The attacker would need to devote a large number of resources to keeping such a popular app up, which would all need to be done anonymously (though would need to be paid for in one way or another).&lt;/p&gt;
&lt;p&gt;Let’s say an attacker has gone through all of this to make a popular application: why doesn’t he/she just use those resources for a direct attack?  One possibly answer is that the Facebook DDoS would be hard to shut down, or better in some other way in executing the attack.  This is false because as soon as someone realizes that their traffic is coming from Facebook (whether by referrers, or FB trying to pull images for its cache, or some other mechanism), it can in most instances be stopped immediately, especially considering how most Facebook calls to other sites include the application’s API keys.  Even barring that, IP addresses and Facebook’s logging can be used to determine what application a user was in when they requested the victim’s site.&lt;/p&gt;
&lt;p&gt;Additionally, DDoSs using this attack vector are relatively easy to mitigate.  If a hacker already has all of these resources dedicated to keeping an application up, why wouldn’t they just launch a TCP SYN flood or similar lower-level attack, much more potent DoSs, even if launched from a more limited IP range.&lt;/p&gt;
&lt;p&gt;Let’s take a different route: suppose a hacker attacks one of Slide’s applications and somehow manages to break in and add an attack iframe.  This is a completely legitimate and anonymous way of attacking a site (though it begs the question of why the hacker didn’t just break into the target site in the first place, assuming both have similar levels of security).  While this is a legitimate issue, the same holds true for all websites.  Should someone hack into Yahoo! and figure out how to deploy a new home page (somewhere between almost-impossible and no-freaking-way on the difficulty scale), almost any site on the internet could easily be taken down.  I certainly hope top app developers take security as seriously as top website owners, but this is nothing special for Facebook.&lt;/p&gt;
&lt;p&gt;On the topic of information theft, this is why Facebook requires you to explicitly permit an application to access your information.  The concept of an API implies this potential for theft…users are trusting applications to access their information and not keep it.  There is no way to prevent this for the same reason DRM doesn’t work: if people can view things they can store things.  While this is a legitimate concern, again it is nothing new, and not much can be done about it short of user education.&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/nerdlife/~4/384687093&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 06 Sep 2008 02:09:45 +0000</pubDate>
	<dc:creator>Brian</dc:creator>
</item>
<item>
	<title>Rob Arnold: Science of the Web</title>
	<guid isPermaLink="false">http://robarnold.org/?p=28</guid>
	<link>http://robarnold.org/science-of-the-web/</link>
	<description>&lt;p&gt;My friend &lt;a href=&quot;http://www.pbs.org/idealab/dan_schultz/&quot;&gt;Dan Schultz&lt;/a&gt; is currently taking a course called &lt;a href=&quot;http://sched.tcpulse.com/browse/courses/15396&quot;&gt;“Science of The Web”&lt;/a&gt;. For one of his &lt;a href=&quot;http://scienceoftheweb.org/15-396/assignments/hwk2.pdf&quot;&gt;assignments&lt;/a&gt; (see problem 2), he needs as much help as he can get. Here’s where you come in. It’s quick and easy:&lt;/p&gt;
&lt;p&gt;1) Go to &lt;a href=&quot;http://boom.aladdin.cs.cmu.edu/cgi-bin/ipaddy&quot;&gt;http://boom.aladdin.cs.cmu.edu/cgi-bin/ipaddy&lt;/a&gt; (the server might encounter an error, just refresh and it should work)&lt;br /&gt;
2) Enter ‘dschultz’&lt;br /&gt;
3) Get as many other people as possible to do the same&lt;/p&gt;</description>
	<pubDate>Wed, 03 Sep 2008 15:32:51 +0000</pubDate>
	<dc:creator>Rob Arnold</dc:creator>
</item>
<item>
	<title>Wei Zhou: Bauhous and Google products</title>
	<guid isPermaLink="false">http://weizhou.wordpress.com/?p=186</guid>
	<link>http://weizhou.wordpress.com/2008/09/02/bauhous-and-google-products/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Actually I like Google products over a lot of others. But there’s something out there makes me not a big fan of it. Eventually I cannot endure it anymore and decide to write something. I think Google, being considered as one of the leading software companies in the world, has the responsibility to make their product user experience not suck, not only in terms of usability, but of aesthetics.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://weizhou.files.wordpress.com/2008/09/picture-20.png&quot;&gt;&lt;img src=&quot;http://weizhou.files.wordpress.com/2008/09/picture-20.png?w=108&amp;amp;h=96&quot; alt=&quot;&quot; height=&quot;96&quot; class=&quot;alignnone size-thumbnail wp-image-187&quot; width=&quot;108&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://weizhou.files.wordpress.com/2008/09/picture-21.png&quot;&gt;&lt;img src=&quot;http://weizhou.files.wordpress.com/2008/09/picture-21.png?w=128&amp;amp;h=92&quot; alt=&quot;&quot; height=&quot;92&quot; class=&quot;alignnone size-thumbnail wp-image-188&quot; width=&quot;128&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If everybody is using Gmail, Google Calendar and Google Doc, we begin to lose our control over our choices of web applications, just as we have to use Windows OS. So welcome to a software modernism age. Welcome Google’s fast-food web apps. Keep Google Bauhaus design doctrine in mind: “Our Web Apps are so simple, secure and fast, that’s all you need for your Internet.”&lt;/p&gt;
&lt;p&gt;Is simple, secure and fast all we want? If design is about the value,not the truth, where can we target our values in this fast-food software culture? When can a piece of software become a form of art, bringing people altimate enjoyment?When can a web Apps functions beyond a tool, behave like a digital being or digital asistant that help us in an interesting and considerate way? Can softare have personalities, catering to their master(user)’s ever-changing needs and interests? Google basically ignores all of those possibilities and proves itself proudly: A group of engineers, make softwares, work hard to make every engineer happy, and change every Internet user to a engineer.&lt;/p&gt;
&lt;img src=&quot;http://feeds.wordpress.com/1.0/categories/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;img src=&quot;http://feeds.wordpress.com/1.0/tags/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weizhou.wordpress.com/186/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weizhou.wordpress.com/186/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weizhou.wordpress.com/186/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weizhou.wordpress.com/186/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weizhou.wordpress.com/186/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weizhou.wordpress.com/186/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=weizhou.wordpress.com&amp;amp;blog=2603969&amp;amp;post=186&amp;amp;subd=weizhou&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 02 Sep 2008 21:53:14 +0000</pubDate>
	<dc:creator>weizhou</dc:creator>
</item>
<item>
	<title>Wei Zhou: Master of Tangible Interaction Design &amp; Gold Rush</title>
	<guid isPermaLink="false">http://weizhou.wordpress.com/?p=177</guid>
	<link>http://weizhou.wordpress.com/2008/08/29/master-of-tangible-interaction-design-gold-rush/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Recently my school(CMU)announces a new program: &lt;a href=&quot;http://code.arc.cmu.edu/mTID/master_of_tangible_interaction_design.html&quot;&gt;Master of Tangible Interaction Design&lt;/a&gt;. It’s a one-year master program, no GRE requirements, no need to have any design backgrounds, no Thesis project or thesis paper, no CHI submissions, and under the school of architecture. I regrect that I chose my current program -&lt;a href=&quot;http://www.design.cmu.edu/show_program.php?s=2&amp;amp;t=3&quot;&gt;Interaction Design&lt;/a&gt;(well-known for its user-centered design theory and practice), for which I had to do everything the other program doesn’t need, for which I dropped Yale, and declined RCA and CMU HCI’s offer. It really hurts, we spent so much money and energy to define the word of “interaction design”, we worked so hard to distinguish interaction design/user experience design with other subjects, and a new name-misleading program simply ruin it all.&lt;/p&gt;
&lt;img src=&quot;http://feeds.wordpress.com/1.0/categories/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;img src=&quot;http://feeds.wordpress.com/1.0/tags/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weizhou.wordpress.com/177/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weizhou.wordpress.com/177/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weizhou.wordpress.com/177/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weizhou.wordpress.com/177/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weizhou.wordpress.com/177/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weizhou.wordpress.com/177/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=weizhou.wordpress.com&amp;amp;blog=2603969&amp;amp;post=177&amp;amp;subd=weizhou&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 29 Aug 2008 18:15:11 +0000</pubDate>
	<dc:creator>weizhou</dc:creator>
</item>
<item>
	<title>Paul O'Shannessy: Making the New Password Manager Storage Faster</title>
	<guid isPermaLink="true">http://zpao.com/articles/11-passwordmgr_storage_faster</guid>
	<link>http://zpao.com/articles/11-passwordmgr_storage_faster</link>
	<description>&lt;p&gt;When I first wrote the new storage module for the Password Manager, I took a few “shortcuts,” trying to keep my code &lt;span class=&quot;caps&quot;&gt;DRY&lt;/span&gt;. Partially this was because of the first patch by Mrinal Kant, but mostly it was because I like to reuse code. This bit us just a bit.&lt;/p&gt;


	&lt;p&gt;I mentioned in my &lt;a href=&quot;http://zpao.com/articles/10-passwordmgr_storage&quot;&gt;first post about this change&lt;/a&gt; that we were initially considerably slower in the critical &lt;code&gt;countLogins&lt;/code&gt; method. While it got improved before being checked in, it was still marginally slower (milliseconds on an abnormally large dataset).&lt;/p&gt;


	&lt;p&gt;As I said before, this was most likely since we were doing a &lt;code&gt;SELECT *&lt;/code&gt; on the &lt;code&gt;moz_logins&lt;/code&gt; table, and looping over the results and counting. This allowed me to reuse more code. Loops are a kind of slow, and since this was so important, I decided to speed it up.&lt;/p&gt;


	&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=451479&quot;&gt;I filed a bug&lt;/a&gt; just over a week ago entitled “storage-mozStorage should use &lt;span class=&quot;caps&quot;&gt;COUNT&lt;/span&gt; in countLogins” – which pretty much explains what the solution to the above problem. I created a patch which essentially just switched the mosStorage module to use &lt;code&gt;SELECT COUNT(1)&lt;/code&gt;. I reran the performance tests I created and we’re doing much better now. There’s still a miniscule loss in speed from the legacy storage module, but at this point, we’ve done all that we can, and where the difference was milliseconds, its closer to millisecond.&lt;/p&gt;


	&lt;p&gt;This was &lt;a href=&quot;http://hg.mozilla.org/mozilla-central/rev/ce557eb9ef4a&quot;&gt;checked in&lt;/a&gt; today (thanks Justin!).&lt;/p&gt;


	&lt;p&gt;And that’s it. I have another patch in the pipeline and hopefully I’ll have time to get it finished, approved, and reviewed for the freeze (whenever that is now).&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=M9cy2k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=M9cy2k&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=J8wOfK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=J8wOfK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/zpao/~4/377635358&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 29 Aug 2008 01:01:47 +0000</pubDate>
	<author>paul@zpao.com (Paul O’Shannessy)</author>
</item>
<item>
	<title>Wei Zhou: Scratching the surface</title>
	<guid isPermaLink="false">http://weizhou.wordpress.com/?p=163</guid>
	<link>http://weizhou.wordpress.com/2008/08/27/scratching-the-surface/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I have been using iPhone for three weeks now. Here’s a normal iPhone user daily schedule.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7:00 AM: iPhone &lt;strong&gt;Alarm&lt;/strong&gt; wakes me up&lt;/li&gt;
&lt;li&gt;7:01 AM: Check &lt;strong&gt;facebook, twitter, mySpace, Blog&lt;/strong&gt;, School email, Gmail, company email, open &lt;strong&gt;MC chats&lt;/strong&gt;, log into msn and AIM, &lt;strong&gt;Gmail&lt;/strong&gt;, skype(wifi), IRC(wifi).Quickly check &lt;strong&gt;TODO&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;7:05 AM: Fully wake up. Hold iPhone and run to the bathroom. Listen to &lt;strong&gt;Stitcher&lt;/strong&gt;’s new radios. Cook breakfast, check iPhone for nutrition info.&lt;/li&gt;
&lt;li&gt;7:30 AM: Bring my iPhone(and my iPhone charger!), walk to the bus stop, read &lt;strong&gt;Newsstand&lt;/strong&gt; RSS feeds, check &lt;strong&gt;Stanza, Jamed&lt;/strong&gt;, &lt;strong&gt;NetNewsWire&lt;/strong&gt;, and &lt;strong&gt;Shovel&lt;/strong&gt;, digg news and comment on other people’s blogs.&lt;/li&gt;
&lt;li&gt;8:00 AM: On the bus stop, search &lt;strong&gt;iWant&lt;/strong&gt; for local bus schedule.&lt;/li&gt;
&lt;li&gt;8:30 AM: Class begin. Use &lt;strong&gt;Note&amp;amp;Sketch&lt;/strong&gt; to take notes, use &lt;strong&gt;FileMagnet&lt;/strong&gt; to view course outline.&lt;/li&gt;
&lt;li&gt;8:35 AM: Bored. Check &lt;strong&gt;iGotchi&lt;/strong&gt; and feed my pet.&lt;/li&gt;
&lt;li&gt;9:00 AM: Teacher forgot my name. Use &lt;strong&gt;Shout it&lt;/strong&gt;, display “Wei Zhou” and wave to him.&lt;/li&gt;
&lt;li&gt;9:30 AM: Use &lt;strong&gt;Camera&lt;/strong&gt; to take a picture of my teacher, publish through &lt;strong&gt;ShoZu&lt;/strong&gt;, send it to facebook, flickr, MySpace, WordPress and Picasa.&lt;/li&gt;
&lt;li&gt;10:30 AM: Class ends, update my &lt;strong&gt;Diary&lt;/strong&gt;. Play &lt;strong&gt;Tris&lt;/strong&gt;, &lt;strong&gt;Tap Tap&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;11:30 AM: Run for another class, focus on teaching, &lt;strong&gt;Camera&lt;/strong&gt; bad students sleep in class.&lt;/li&gt;
&lt;li&gt;12:00 AM. Break. Use &lt;strong&gt;VoiceNotes&lt;/strong&gt; to record student’s requirements.&lt;/li&gt;
&lt;li&gt;1:30 PM: Starving. Check &lt;strong&gt;Urbanspoon&lt;/strong&gt; for food.Drive up there using &lt;strong&gt;maps&lt;/strong&gt;.Turn on &lt;strong&gt;Pathtracker&lt;/strong&gt; because I’m directionally challenged. Using &lt;strong&gt;where&lt;/strong&gt; to find Starbucks.&lt;/li&gt;
&lt;li&gt;2:30 PM: &lt;strong&gt;Graffitio&lt;/strong&gt; notify me another CMU friend in Starbucks is using iPhone as well.Exchange cellphone number with him.&lt;strong&gt;Textmessage&lt;/strong&gt; another friend to join us. Send him our location using &lt;strong&gt;Over Here&lt;/strong&gt;. Share &lt;strong&gt;Loopt&lt;/strong&gt; with them.&lt;/li&gt;
&lt;li&gt;3:00 PM:Another class. Bored. Use &lt;strong&gt;Lifecast &lt;/strong&gt;to record class discussion.&lt;/li&gt;
&lt;li&gt;5:50 PM: End class. Repeat 1:30 PM.&lt;/li&gt;
&lt;li&gt;6:30 PM: Another class. Explore new Apps on App Store.&lt;/li&gt;
&lt;li&gt;8:30 PM: School ends. Walk back home. Study english using &lt;strong&gt;Blanks&lt;/strong&gt;. Update &lt;strong&gt;TODO&lt;/strong&gt;. Repeat 7:01 AM.&lt;/li&gt;
&lt;li&gt;9:30 PM: Homework time, use &lt;strong&gt;SnatchTest&lt;/strong&gt; as a mouse for my Macpro.Use &lt;strong&gt;controller&lt;/strong&gt; for my iTV and iPod player.&lt;/li&gt;
&lt;li&gt;10:30 PM: Play &lt;strong&gt;Ambient&lt;/strong&gt; to get to sleep.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;P.S.: Repeat 7:01 AM many times during the day.&lt;/p&gt;
&lt;h4&gt;What else do I need?&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt; Support remote printing.&lt;/li&gt;
&lt;li&gt;Every time I jump from one App to another App, the previous one stops working, I have to reopen it afterwards. That really stops my work-flow. I wish it works like Tabs in a browser(Or even better). In summery, the navigation is bad.&lt;/li&gt;
&lt;li&gt;Constantly pressing the main home button is annoying. Especially when I lay on the bed, holding the iPhone with one hand, I don’t want to move another hand. Can I just do everything use one hand?&lt;/li&gt;
&lt;li&gt; I wish I could track my iPhone using history.&lt;/li&gt;
&lt;li&gt;Searching is painful. iPhone should have an universal Google search button on the device.&lt;/li&gt;
&lt;li&gt;Typing is painful. I need a auto-type App.&lt;/li&gt;
&lt;li&gt;How can I copy and paste info from one App to another???!!!&lt;/li&gt;
&lt;li&gt;I need a Firefox browser App&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How to design a Multi-touch interaction framework from ground up? &lt;a href=&quot;http://www.apple.com/iphone/&quot;&gt;IPhone&lt;/a&gt; just scratched the surface of a smart phone design - for me iPhone is a device that combines a bunch of unrelated separate gadgets together. It’s getting there, but hardly to be considered as “Smart”. &lt;a href=&quot;http://www.wipo.int/pctdb/en/wo.jsp?WO=2008085784&amp;amp;IA=US2007089161&amp;amp;DISPLAY=DESC&quot;&gt;Multi-touch gesture standards&lt;/a&gt; will be set up within next 5 years. What we need is no longer a “&lt;a href=&quot;http://en.wikipedia.org/wiki/Smartphone&quot;&gt;smart phone&lt;/a&gt;“, but a smart browser that embedded in a mobile device, In this way we would be able to use a series of small Apps in a meaningful combination, adjusting to people’s ever-changing task flow and context, without interrupting people’s thinking model over time(also see &lt;a href=&quot;http://labs.mozilla.com/2008/08/introducing-ubiquity/&quot;&gt;Ubiquity&lt;/a&gt;). &lt;strong&gt;That makes a digital device really become part of our body, like our hands and feet.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes. Building a variety of cool Apps is important, but not as important as arranging them in a useful way(&lt;a href=&quot;http://en.wikipedia.org/wiki/Human_computation&quot;&gt;Outsourcing part of human thinking to machines&lt;/a&gt;?). That applies to Small screen browser design, as well as browser for OS. Human beings are task-oriented, not tool-oriented.  Guess that’s the difference between a human and a computer.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.azarask.in/blog/post/ambient-information-in-the-browser/&quot;&gt;&lt;/a&gt;As a designer we usually need to answer three questions:”What”, “Why”, and “How”. Here I delve into what and why, not much how. I found Aza’s blog particularly interesting -  &lt;a href=&quot;http://www.azarask.in/blog/post/ambient-information-in-the-browser/&quot;&gt;Ambient information.&lt;/a&gt; Because it also talked about how. We need more “Hows”.&lt;/p&gt;
&lt;img src=&quot;http://feeds.wordpress.com/1.0/categories/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;img src=&quot;http://feeds.wordpress.com/1.0/tags/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weizhou.wordpress.com/163/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weizhou.wordpress.com/163/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weizhou.wordpress.com/163/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weizhou.wordpress.com/163/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weizhou.wordpress.com/163/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weizhou.wordpress.com/163/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=weizhou.wordpress.com&amp;amp;blog=2603969&amp;amp;post=163&amp;amp;subd=weizhou&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 27 Aug 2008 18:36:46 +0000</pubDate>
	<dc:creator>weizhou</dc:creator>
</item>
<item>
	<title>David Anderson: SpiderMonkey + Tracing = TraceMonkey</title>
	<guid isPermaLink="true">http://www.bailopan.net/blog/?p=84</guid>
	<link>http://www.bailopan.net/blog/?p=84</link>
	<description>&lt;p&gt;Firefox has a JIT for JavaScript now.  Whoa.  Before I continue on, here are links to the blogs of other Mozilla people close to the TraceMonkey team:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html&quot;&gt;Brendan Eich - TraceMonkey: JavaScript Lightspeed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://shaver.off.net/diary/2008/08/22/the-birth-of-a-faster-monkey/&quot;&gt;Mike Shaver - Building a Faster Monkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://andreasgal.com/2008/08/22/tracing-the-web/&quot;&gt;Andreas Gal - Tracing the Web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.mozilla.com/schrep/2008/08/22/what-can-you-do-when-your-browser-is-7-times-faster/&quot;&gt;Mike Schreopfer - What can you do when your browser is 7 times faster?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, I started at Mozilla by working on Tamarin-Tracing.  Tracing is &lt;a href=&quot;http://www.andreasgal.com&quot;&gt;Andreas Gal’s&lt;/a&gt; fancy new idea for run-time guided JIT optimization, a powerful new concept that poses huge benefits over whole method compilation.  I &lt;a href=&quot;http://www.bailopan.net/blog/?p=72&quot;&gt;talked about this before&lt;/a&gt;, perhaps erroneously, but the concepts are there.&lt;/p&gt;
&lt;p&gt;The old style of compilation is to perform static analysis on entire methods at a time, compiling them to assembly when necessary.  Without running the program, you decide how to compile loops and nested loops efficiently, perhaps even trying to decide if they’re expensive or not.  Methods may or may not be inlined, but they are still the fundamental building block of most compilers.&lt;/p&gt;
&lt;p&gt;The concept of methods quickly disappears in a tracing compiler.  Everything is inlined as the tracer only compiles exactly what low level operations it sees being performed (and any sort of control flow is essentially a no-op).  A tracing JIT essentially turns an expensive loop into its own isolated method call, optimized for its run-time properties, regardless of where it is or what the loop has to call into.&lt;/p&gt;
&lt;p&gt;Andreas’s original paper on tracing was targeted toward mobile performance, where whole-method compilation and static analysis are too expensive.  For dynamic languages one instruction can have many decision paths at run-time.  Whole method JITing is a real problem because the code required for each opcode becomes very large, and static analysis is either unfruitful (because of dynamic types) or just too expensive.  This is especially problematic for JavaScript where browser performance is critical, and time spent analyzing code is time wasted.&lt;/p&gt;
&lt;p&gt;Thus it’s no surprise that Adobe decided to try tracing in the next generation of their Tamarin project.  Adobe’s approach to tracing ActionScript is to create very primitive building blocks and trace those at the lowest level.  It does this by converting ActionScript bytecode to a Forth dialect, and tracing the primitive Forth operations.  &lt;/p&gt;
&lt;p&gt;Mozilla’s JavaScript engine (”SpiderMonkey”) is very different.  It has a decade worth of optimization hacks and very “fat” opcodes (instructions that have a lot of internal decisions, rather than performing one single operation).  Although there were originally plans for Mozilla to switch to Tamarin, throwing out SpiderMonkey had a lot of hurdles, and the TraceMonkey project was started instead.&lt;/p&gt;
&lt;p&gt;Luckily Adobe had very nicely separated the tracing backend from their interpreter.  Tamarin-Tracing has a “nanojit” component with a simple IR.  Interpreters are responsible for emitting the IR, and nanojit can compile straight-line IR blocks into native code.  It can also link compiled code fragments together for attaching branches and building trees of traces.&lt;/p&gt;
&lt;p&gt;Using Adobe’s nanojit, Andreas decided to take a top-down approach to tracing SpiderMonkey.  The edge of every loop is monitored.  If a loop is executed enough times, the tracer is activated.  Every opcode is hooked and critical decision points are emitted as nanojit IR where possible.  When the control flow reaches the loop edge again, the IR is compiled and the loop will run as native code thereafter.&lt;/p&gt;
&lt;p&gt;There are some fascinating aspects to Andreas’s work.  Type speculation and specialization, the native stack versus the script stack, tree specialization, his handling of global variables — are all intricate and critical to the rapid progress and success he’s made on TraceMonkey.  And he (and Mike Shaver and Brendan Eich) did it all in 60 days, which is amazing.&lt;/p&gt;
&lt;p&gt;What’s my role in all this?  My summer intern project was porting the code generator and tracer to AMD64, which has landed and seems to work in the shell.  I’ve also been debugging anything that goes wrong on the 32-bit port.  Working with nanojit was a lot of fun - Adobe did a great job making it usable by other projects, and it’s definitely something that could become a generic library for dynamic languages to use for tracing.&lt;/p&gt;
&lt;p&gt;The big news today is that TraceMonkey has landed in mozilla-central and will probably be turned on by default for Firefox 3.1 beta 1.  Although it was open source and downloadable during development, it is now being officially announced and publicized, and can be used in the official nightly builds.  The speed difference is noticeable in sites doing intense JavaScript processing.  And though the SunSpider benchmarks can be considered superficial, it’s great to see the improvements we’re getting on them versus the old SpiderMonkey.&lt;/p&gt;
&lt;p&gt;This is just the beginning.  A lot more is planned for TraceMonkey and for tracing in general.  Code that used to be considered too crazy for JavaScript, like graphics and crypto loops, is becoming plausible.  We’re already noticing smoother play quality in some 3D JavaScript games on the web (using Canvas) and in other heavy applications.  In Mike Shaver’s words, this could change the way people use JavaScript.&lt;/p&gt;
&lt;p&gt;In terms of portability, nanojit still needs a bit of work, but it’s been hammered into shape for AMD64 for the time being.  It can use the extra eight registers available with REX prefixes, and it will perform 32-bit integer math versus 64-bit pointer math correctly (given using the correct LIR instructions for safety).  I also took the liberty of prettying up the macros used for code generation.  Some of the work remaining that I’d like to do in terms of the overall x32/x64 assembly process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Taking more advantage of addressing modes — we can reduce register pressure by combining redundant store/load ALU operations.&lt;/li&gt;
&lt;li&gt;Improving SSE2 logic which currently uses LAHF/PUSHF.&lt;/li&gt;
&lt;li&gt;Improving calling conventions for SSE2 and reducing register spilling.&lt;/li&gt;
&lt;li&gt;Inheriting type information from child instructions, to remove the need for separately typed IR instructions (i.e. no need for add versus fadd versus qadd).&lt;/li&gt;
&lt;li&gt;Enabling 64-bit jitting in the browser (too unstable right now so it’s only on in the shell).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I should thank Edwin Smith at Adobe for putting up with my intense nanojit nagging; Mozilla for giving me the opportunity to work on this project as an intern; and Andreas Gal for coaching me through the tracing concepts every time I got them wrong.&lt;/p&gt;
&lt;p&gt;For people who follow this blog from the &lt;a href=&quot;http://www.sourcemod.net/&quot;&gt;SourceMod&lt;/a&gt; project, will SourcePawn get tracing?  It’s something I’m experimenting with and will talk more about later.  There are some hurdles to JITing Pawn in that very careful escape analysis is needed to make any of the nice optimizations.&lt;/p&gt;</description>
	<pubDate>Fri, 22 Aug 2008 20:00:32 +0000</pubDate>
	<dc:creator>dvander</dc:creator>
</item>
<item>
	<title>Paul O'Shannessy: Password Manager now uses mozStorage</title>
	<guid isPermaLink="true">http://zpao.com/articles/10-passwordmgr_storage</guid>
	<link>http://zpao.com/articles/10-passwordmgr_storage</link>
	<description>&lt;p&gt;The other day &lt;a href=&quot;http://hg.mozilla.org//mozilla-central/index.cgi/rev/c2f416981fa3&quot;&gt;my patch landed&lt;/a&gt; switching the Password Manager to use &lt;a href=&quot;http://developer.mozilla.org/en/docs/Storage&quot;&gt;mozStorage&lt;/a&gt; (our wrapper around SQLite).  &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=288040&quot;&gt;The bug&lt;/a&gt; had been up on Bugzilla for a long time, over 3 years, when I came across it at the end of June. I had been doing some Password Manager related work already by that point, so I decided I would do it. This is the story of that bug: the process, the hardships, the code (at least a bit). Keep in mind I was also doing work on my &lt;a href=&quot;http://zpao.com/articles/8-dtrace_treemaps_part_1&quot;&gt;DTrace Treemaps&lt;/a&gt; at the time, went to Summit, and encountered more edge cases than I wanted, so this took longer than expected.&lt;/p&gt;


	&lt;h2&gt;Quick Features &amp;amp; Change Summary&lt;/h2&gt;


	&lt;p&gt;Some of this is discussed further down, so bear with me. One of the primary differences in the switch to using mozStorage is that we now store data in a database. Previously we were storing data in a text file, using lines and periods to separate data fields. Open &lt;code&gt;signons3.txt&lt;/code&gt; in your &lt;a href=&quot;http://support.mozilla.com/en-US/kb/Profiles&quot;&gt;profile directory&lt;/a&gt; and take a look at it (assuming you’ve saved a password before). All information was kept in memory, and when a new password was saved, the whole file would need to be rewritten. The same thing happened if you ever removed a saved password. Using a database means that we don’t have to keep any (potentially) sensitive information in memory. It also means faster reading and writing since we don’t have to read the whole file every time. These speed boosts are apparent especially in the speed tests, attached to the bug and summarized below.&lt;/p&gt;


	&lt;p&gt;Since this is really just a drop in change that must implement an &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;, to the outside world nothing has changed. Although the inner workings are different, it’s the same to anybody who happens to use it (extensions or other parts of Firefox).&lt;/p&gt;


	&lt;h2&gt;v0.1 – The beginning&lt;/h2&gt;


	&lt;p&gt;I began work by really taking a look at the &lt;a href=&quot;http://mxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/src/storage-Legacy.js&quot;&gt;legacy storage module&lt;/a&gt; to make sure I knew what was supposed to be happening. Then I looked at the initial attempts by other developers. The first attempts were made before Password Manager got rewritten, so those weren’t relevant. Mrinal Kant came in (over 2 years after the first patches) and wrote what I used as the basis for my code. I don’t think I ran it as it was, but it looked functional, at least at the core.&lt;/p&gt;


	&lt;p&gt;I actually started by just copying the legacy storage file, removing all of the code from methods that would need to be changed, and started fresh. I copied in some code from Mrinal’s work and used some of the conventions, but the bulk of it was rewritten. I opted to use the wrapper we have for Storage, which makes it easy to do parameter replacement. This also automatically binds the parameters to a type – so when you give it a string, it will ensure it’s treated as a string. It’s very handy.&lt;/p&gt;


	&lt;p&gt;This first version “worked” (at least as far as I remember), though it definitely had problems. I brought it up at our &lt;a href=&quot;http://wiki.mozilla.org/Firefox3.1/StatusMeetings/&quot;&gt;weekly status meeting&lt;/a&gt; and it became one of the “nice to have” features for 3.1. That gave it some attention it needed and I got some quick feedback from &lt;a href=&quot;http://shawnwilsher.com&quot;&gt;Shawn&lt;/a&gt; and &lt;a href=&quot;http://blog.mozilla.com/dolske/&quot;&gt;Justin&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;v0.2 – Database details&lt;/h2&gt;


	&lt;p&gt;One of the primary changes here was some of the database stuff. Shawn had pointed out that I needed a way to version the database. All I had was a method to create the tables. In order to future-proof this, I needed to make sure the schema was stored somewhere and there was a procedure for migrating the database.&lt;/p&gt;


	&lt;p&gt;I took a look at &lt;a href=&quot;http://mxr.mozilla.org/mozilla-central/source/toolkit/components/contentprefs/src/nsContentPrefService.js&quot;&gt;nsContentPrefService&lt;/a&gt; (which stores your preferences for specific sites, like remembering zoom settings) since that was another component using storage and written in JavaScript. I “hijacked” the code related to the database stuff, and modified it a bit to fit my needs.&lt;/p&gt;


	&lt;p&gt;The other major change here was to replace &lt;code&gt;var&lt;/code&gt; with &lt;code&gt;let&lt;/code&gt; – “&lt;code&gt;let is the new var&lt;/code&gt;” as my shirt says. A number of other changes were also made – cleaning up queries, hard-coding the table names, and making sure I was using statements correctly.&lt;/p&gt;


	&lt;h2&gt;v0.3, v0.4 – Cleanup &amp;amp; Optimization&lt;/h2&gt;


	&lt;p&gt;These versions were pretty light – mostly involving cleanup. &lt;code&gt;modifyLogin&lt;/code&gt; and the process involved got improved. I also reduced the number of queries we were making by hand and so all &lt;code&gt;SELECT&lt;/code&gt;s were done from just 2 places (one for each table).&lt;/p&gt;


	&lt;h2&gt;v0.5 – Importing&lt;/h2&gt;


	&lt;p&gt;v0.5 focused on importing from the legacy module. The basics were in the original code Mrinal wrote, but all of the edge cases were difficult to handle. The one case that caused a lot of problems were the “user has a master password, but presses cancel when we import”. We needed to handle that gracefully, and Justin and I decided the best way was to introduce a &lt;code&gt;_deferredInit&lt;/code&gt; method, which did the bulk of the initialization work. At the beginning of each public method, we then check the initialization state and try to import again. It can get annoying, but everything about the master password is annoying.&lt;/p&gt;


	&lt;p&gt;This also resulted in a couple bugs being spun off to help us with importing: &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=449810&quot;&gt;one bug&lt;/a&gt; was just a few lines added to the legacy module and the password manager UI to handle an additional error, and &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=449095&quot;&gt;the other&lt;/a&gt; was just to ensure the legacy module didn’t create an empty file if it was never used.&lt;/p&gt;


	&lt;h2&gt;v0.6 – Tests&lt;/h2&gt;


	&lt;p&gt;I finally got to writing the tests, which involved a lot of copy &amp;amp; paste from the legacy tests, then making small modifications. It’s not the most efficient way, but it works ok. Since the mozStorage module works slightly differently, the code duplication is a necessity for now. In theory they can be cleaned up, but that’ll be a task for the next intern :)&lt;/p&gt;


	&lt;p&gt;At this point I thought I was pretty much done, and I was. There were still a few problems though, and also not quite enough test coverage.&lt;/p&gt;


	&lt;h2&gt;v0.7, v0.8 – Cleanup, Tests, Corrupt Databases&lt;/h2&gt;


	&lt;p&gt;v0.7 involved a lot of cleanup and adding tests. v0.8 was an important milestone in that I finally added the handling of a corrupt database. Before this point, if we encountered a corrupt database, we would fail and then as with a failed import, just try again and again. This was bad, really bad. So a “thank you” to Shawn for catching that. Now we backup the corrupt database and just create a new one. It should be difficult to get a corrupt database, but just in case (and to cover the case when people think they know what they’re doing, but don’t).&lt;/p&gt;


	&lt;h2&gt;v0.9, v1.0 – Performance&lt;/h2&gt;


	&lt;p&gt;In one of the recent status meetings, &lt;a href=&quot;http://shaver.off.net/diary/&quot;&gt;Mike Shaver&lt;/a&gt; asked me about performance. At that point I hadn’t really done much except throw it up on the try server. The try server gives decent ball park figures, but it’s not perfect. So Justin worked on getting &lt;a href=&quot;http://wiki.mozilla.org/StandaloneTalos&quot;&gt;Standalone Talos&lt;/a&gt; working while I wrote some &lt;span class=&quot;caps&quot;&gt;XPC&lt;/span&gt; shell “tests”. I discovered that while we were generally faster – faster init, faster add, faster remove – we were considerably slower for &lt;code&gt;countLogin&lt;/code&gt;, which is a critical path, since it gets called on every page. Over 90% of the that time was actually spent initializing &lt;code&gt;nsLoginInfo&lt;/code&gt; objects (since I tried to reuse code). This got improved, though we are still a couple milliseconds slower. This could likely be improved a little bit since we are still doing a &lt;code&gt;SELECT&lt;/code&gt; and looping over the results. A little bit more work needs to be done that way, so making the query use &lt;code&gt;COUNT&lt;/code&gt; would cut that out. Maybe I’ll write another patch to do that before Beta 1. For now though, we’ll keep doing it how we’re doing it.&lt;/p&gt;


	&lt;h2&gt;And that’s all… almost&lt;/h2&gt;


	&lt;p&gt;After this got checked in, the Windows boxes turned orange on Tinderbox. This was because of the tests (trying to delete files). Justin and I thought we had a quick fix, committed that. As I was packing to come home, I got pinged on &lt;span class=&quot;caps&quot;&gt;IRC&lt;/span&gt; since the boxes were still orange and it was my fault. So the tests for my changeset got backed out and we switched back to the legacy module, but the code was still in there.&lt;/p&gt;


	&lt;p&gt;On Sunday, my module &lt;a href=&quot;http://hg.mozilla.org/mozilla-central/index.cgi/rev/063c145b2a09&quot;&gt;was re-enabled&lt;/a&gt; (thanks Justin!). There was &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=451040&quot;&gt;another hiccup&lt;/a&gt; related to packages-static, but that was fixed as well. If you have any problems &lt;a href=&quot;https://bugzilla.mozilla.org/enter_bug.cgi?component=Password%20Manager&amp;amp;product=Toolkit&quot;&gt;please report them on Bugzilla&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=msGkpk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=msGkpk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=laWcYK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=laWcYK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/zpao/~4/368627763&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 19 Aug 2008 03:55:43 +0000</pubDate>
	<author>paul@zpao.com (Paul O’Shannessy)</author>
</item>
<item>
	<title>Paul O'Shannessy: New Design &amp; Updates</title>
	<guid isPermaLink="true">http://zpao.com/articles/9-new_design_updates</guid>
	<link>http://zpao.com/articles/9-new_design_updates</link>
	<description>&lt;p&gt;The night before heading to Whistler for &lt;a href=&quot;https://wiki.mozilla.org/Summit2008&quot;&gt;Summit&lt;/a&gt; (it was awesome!), I started messing around in Illustrator. I came up with a little idea that I liked and decided to take it a step further, so I opened Photoshop and got to work. It progressed fairly well, so I started working on the &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; the next day. By the end of the plane ride to Vancouver I had a single page mostly done, with all the images and everything.&lt;/p&gt;


	&lt;p&gt;I was busy the next few weeks, so put it aside. When I flew home yesterday, I decided to actually make it work. So here it is. There are probably a few things I’ll tweak when I see them, but I hope to keep this for a while.&lt;/p&gt;


	&lt;p&gt;I also decided to actually write my own comment system. I was pretty unhappy with &lt;a href=&quot;http://disqus.com&quot;&gt;Disqus&lt;/a&gt;. Disqus has potential, but it required more work than it took for me to write my own. I have a basic “human test” to prevent against spam. We’ll see how well it works. If you commented here previously, I’ve taken the liberty to copy your comment into the new system, adding a link to your website if I knew it.&lt;/p&gt;


	&lt;p&gt;I’ve wrapped up my summer with Mozilla, so I’ll have more content about what I did coming shortly.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=K3LJPk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=K3LJPk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=673IMK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=673IMK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/zpao/~4/367688544&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 18 Aug 2008 02:46:54 +0000</pubDate>
	<author>paul@zpao.com (Paul O’Shannessy)</author>
</item>
<item>
	<title>Rob Arnold: hg qimport my-bugzilla-patch</title>
	<guid isPermaLink="false">http://robarnold.org/?p=22</guid>
	<link>http://robarnold.org/hg-qimport-my-bugzilla-patch/</link>
	<description>&lt;p&gt;Since I’m only a few days away from the end of my internship, I can’t really start any large projects so I went looking for little projects I can get done. This one originated from my dislike of pushing patches from bugzilla. My steps so far have been to go to the bug, find the attachment, download it, import it into my mozilla-central patch queue and then qpush, qrm and push. Well that’s a small hassle. So today I decided to write a small python script to help me out (I would have made it an hg extension but I can’t build hg on my system due to compiler issues with python’s extension API). So &lt;a href=&quot;http://hg.mozilla.org/users/robarnold_cmu.edu/qimportbz/index.cgi/file/tip/qimportbz.py&quot;&gt;here’s&lt;/a&gt; my script.&lt;/p&gt;
&lt;p&gt;Usage is pretty simple:&lt;br /&gt;
&lt;code&gt;qimportbz.py 418454&lt;/code&gt;&lt;br /&gt;
This will fetch bugzilla’s xml output for bug 418454, look for patches that are not obsolete, and let you pick which ones to import. It conveniently displays the patch description and any review flags. If there’s only one, it’ll pick it automatically. It then takes the patch and feeds it into hg qimport, automatically generating a patch name from the bug and attachment name.&lt;/p&gt;
&lt;p&gt;I plan to extend this further to automatically generate a commit message and user (preserving any already in the patch), display more flags (like approval) and automatically upgrade to newer versions of the patch posted in the bug.&lt;/p&gt;</description>
	<pubDate>Sat, 16 Aug 2008 00:24:29 +0000</pubDate>
	<dc:creator>Rob Arnold</dc:creator>
</item>
<item>
	<title>Lukas Blakk: Continuing saga of the 1.9 Unittest Move</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6439561539898172827.post-6288418948076886252</guid>
	<link>http://crashopensource.blogspot.com/2008/08/continuing-saga-of-19-unittest-move.html</link>
	<description>When we left off, there was a check error happening across all Linux slaves and a reftest failure on the Win32 ones. &lt;br /&gt;&lt;br /&gt;Update #1:  A &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=450637&quot;&gt;bug (450637)&lt;/a&gt; has been filed on that win32 failure, and also I brought the physical boxes back from sleep to be up on the new 1.9 master alongside their VM counterparts.  We should know in the next hour or so if the reftest failure is consistent on all of them.&lt;br /&gt;&lt;br /&gt;Update #2:  The check error on Linux was due to the placement of a simple .sqlite file bug-365166.sqlite to be specific.  This file was in /tmp and not in the slave build dir and thus, escaped during chown.  Being owned by buildbot instead of cltbld was the cause of the access denied errors.  Huge thanks to &lt;a href=&quot;http://cesarmoco.wordpress.com/&quot;&gt;Cesar&lt;/a&gt; and Sdwilsh for looking at that test with me and for catching this anomaly.  I've filed a &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=450665&quot;&gt;bug (450665)&lt;/a&gt;to remove the offending placement so that this doesn't happen again in the future.  Files shouldn't be getting created outside of the build dir, creates a whole mess of problems.&lt;br /&gt;&lt;br /&gt;Speaking of mess:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_kUuZHNHDPdc/SKTMnq6dTKI/AAAAAAAAAKA/xeIQ8VzhBbc/s1600-h/Picture+2.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_kUuZHNHDPdc/SKTMnq6dTKI/AAAAAAAAAKA/xeIQ8VzhBbc/s400/Picture+2.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5234533648817802402&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ew.  That's all I can say.  I've been watching this waterfall obsessively (more than usual) as it has displayed a bruised variety of colours, mostly *Not* green.&lt;br /&gt;&lt;br /&gt;In other news, something I noticed while upgrading the windows slaves:&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_kUuZHNHDPdc/SKTM-vjn6pI/AAAAAAAAAKI/K06IolhFzgw/s1600-h/Picture+1.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_kUuZHNHDPdc/SKTM-vjn6pI/AAAAAAAAAKI/K06IolhFzgw/s400/Picture+1.png&quot; alt=&quot;&quot; style=&quot;float: left; margin: 0 10px 10px 0; cursor: pointer; cursor: hand;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5234534045201197714&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Really?  I didn't know that people _chose_ IE.  I thought it just came with the OS.  I wish they would choose their words more carefully.&lt;br /&gt;&lt;br /&gt;Back to the unittest trenches.</description>
	<pubDate>Fri, 15 Aug 2008 00:29:59 +0000</pubDate>
	<author>noreply@blogger.com (Lukas Blakk)</author>
</item>
<item>
	<title>Rob Arnold: Initial Glass support</title>
	<guid isPermaLink="false">http://robarnold.org/?p=3</guid>
	<link>http://robarnold.org/initial-glass-support/</link>
	<description>&lt;p&gt;Yesterday, I &lt;a href=&quot;http://hg.mozilla.org/index.cgi/mozilla-central/rev/460fce61ebc7&quot;&gt;pushed my patch&lt;/a&gt; to add &lt;a href=&quot;http://www.danielmoth.com/Blog/2006/06/vista-glass_16.html&quot;&gt;glass&lt;/a&gt; support to chrome windows for Vista (see &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=418454&quot;&gt;bug&lt;/a&gt; for some implementation discussion). For those who don’t use Vista on a physical machine (virtual machines don’t support glass): it is a fancy blurring effect rendered using the system’s graphics card. It is part of Vista’s &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Aero&quot;&gt;Aero theme&lt;/a&gt; but requires some hardware support beyond Vista’s minimum requirements. The changes overall are mostly trivial, but they required lots of little edits over many files.&lt;/p&gt;
&lt;div style=&quot;width: 410px;&quot; id=&quot;attachment_4&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://robarnold.org/wp-content/uploads/2008/08/glass.png&quot;&gt;&lt;img src=&quot;http://robarnold.org/wp-content/uploads/2008/08/glass.png&quot; title=&quot;glass&quot; height=&quot;400&quot; width=&quot;400&quot; alt=&quot;Example Glass Window&quot; class=&quot;size-medium wp-image-4&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Example Glass Window&lt;/p&gt;&lt;/div&gt;
&lt;h2&gt;How to use it&lt;/h2&gt;
&lt;p&gt;Start by adding the CSS property &lt;code&gt;-moz-appearance: -moz-win-glass;&lt;/code&gt; to your XUL &lt;code&gt;window&lt;/code&gt;. For any areas that you want to be glass, be sure to make their backgrounds transparent. This includes the &lt;code&gt;window&lt;/code&gt; itself. You can also set the opacity on elements to have them blend with the glass as transparent windows already do. Ok, you’re done.&lt;/p&gt;
&lt;p&gt;Well, almost done. The glass effect is possible only when the user has desktop composition enabled, which requires a reasonably modern graphics card. Also, they can toggle it on or off at runtime as with native themes. Oh, and it only seems to work with the Windows Aero theme; Aero Basic users are left behind.&lt;/p&gt;
&lt;p&gt;Rather than add some fallback code when glass is disabled, I left the issue to the theme designers. There’s a new system metric selector, windows-compositor, which detects if the glass effect is enabled. Now you can setup your CSS rules like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;window:-moz-system-metric(windows-compositor) {&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  -moz-appearance: -moz-win-glass;&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;to add glass to your window’s client area (and presumably other UI changes) when the user enables composition.&lt;/p&gt;
&lt;p&gt;Here are some example rules for emulating the fallback used by Media Player and Explorer:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;window[active=&quot;true&quot;]:-moz-system-metric(windows-default-theme) {&lt;br /&gt;
  background-color: #b9d1ea;&lt;br /&gt;
}&lt;br /&gt;
window:not([active=&quot;true&quot;]):-moz-system-metric(windows-default-theme) {&lt;br /&gt;
  background-color: #d7e4f2;&lt;br /&gt;
}&lt;br /&gt;
window:not(:-moz-system-metric(windows-default-theme)) {&lt;br /&gt;
  background-color: -moz-Dialog;&lt;br /&gt;
}&lt;br /&gt;
window:-moz-system-metric(windows-compositor) {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  -moz-appearance: -moz-win-glass;&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note: When &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=431666&quot;&gt;bug 431666&lt;/a&gt; lands, you’ll want to use &lt;code&gt;windows-classic&lt;/code&gt; instead of &lt;code&gt;windows-default-theme&lt;/code&gt; in your selectors.&lt;/p&gt;
&lt;h2&gt;Gotchas&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;http://blogs.msdn.com/greg_schechter/archive/2006/03/25/561167.aspx&quot;&gt;Desktop Window Manager (DWM)&lt;/a&gt; draws a border around the window’s client area, but our method of enabling glass disables that, so if you want to achieve the same look as Media Player or Explorer, you’ll have to do some fancy border work. I hope to fix this in the future so that it is automatically done in most cases.&lt;/p&gt;
&lt;p&gt;Text on glass is hard. It’s sometimes hard to read which is why Windows provides the &lt;code&gt;DrawThemeTextEx&lt;/code&gt; function which adds a glow behind the text; this is done by the DWM for the window title of unmaximized windows. &lt;code&gt;DrawThemeTextEx&lt;/code&gt; takes characters, not glyphs so we can’t really integrate it into our text rendering code. CSS text-shadow can fake the glow, but it doesn’t work on the XUL widgets you’d want to use for your UI. So for now, don’t count on using text on glass.&lt;/p&gt;
&lt;p&gt;Content (the xul browser element specifically) doesn’t render quite properly on glass. The underlying issue seems to be present in Firefox 3 (with transparent windows though) and will probably be fixed when the &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=374980&quot;&gt;internal compositor for Gecko&lt;/a&gt; is completed. This &lt;span style=&quot;text-decoration: line-through;&quot;&gt;un&lt;/span&gt;fortunately prevents Firefox from adopting IE7’s Vista UI.&lt;/p&gt;
&lt;h2&gt;Under the hood changes&lt;/h2&gt;
&lt;p&gt;Previously, windows were either transparent or not, so I added an &lt;code&gt;enum nsTransparencyMode&lt;/code&gt; for the three options: opaque, transparent, and glass. Only windows supports the glass option; the other platforms fall back to opaque. A glass &lt;code&gt;nsWindow&lt;/code&gt; calls &lt;code&gt;DwmExtendFrameIntoClientArea&lt;/code&gt; to tell the DWM to render the entire window as glass. This has a performance impact for large windows since the entire window has the (already expensive) glass shader applied to it, even though we are probably going to be painting most of the window opaquely. I’m looking into ways to detect which areas of the window are glass and tell the DWM to only render those areas. This also solves the aforementioned border problem. We also have to render each window with an alpha channel, so there is a rendering performance hit.&lt;/p&gt;
&lt;h2&gt;Demos&lt;/h2&gt;
&lt;p&gt;I have two little demos to show off. The &lt;a href=&quot;http://robarnold.org/wp-content/uploads/2008/08/glass-demo.xul&quot;&gt;first&lt;/a&gt; (and &lt;a href=&quot;http://robarnold.org/wp-content/uploads/2008/08/aero.css&quot;&gt;its style sheet&lt;/a&gt;) was my testcase which shows opaque, semi transparent and transparent XUL on a glass window. The &lt;a href=&quot;http://robarnold.org/wp-content/uploads/2008/08/aero.xul&quot;&gt;second&lt;/a&gt; uses an animating &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=435293&quot;&gt;CSS transform&lt;/a&gt; on a green box with text on plain glass window. Since CSS transforms haven’t landed yet, you’ll need do a build yourself with the &lt;a href=&quot;https://bugzilla.mozilla.org/attachment.cgi?id=332449&quot;&gt;patch&lt;/a&gt; applied.&lt;/p&gt;</description>
	<pubDate>Wed, 13 Aug 2008 21:58:26 +0000</pubDate>
	<dc:creator>Rob Arnold</dc:creator>
</item>
<item>
	<title>Lukas Blakk: Update on the Unittest 1.9 move</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6439561539898172827.post-1239007967872784827</guid>
	<link>http://crashopensource.blogspot.com/2008/08/update-on-unittest-19-move.html</link>
	<description>&lt;div&gt;In order to streamline the buildslave pool, the names of the following unittest 1.9 slaves were changed when we switched networks yesterday.  &lt;br /&gt;&lt;br /&gt;All of these machines now run Buildbot 0.7.7 and the latest Twisted &amp;amp; Python.&lt;br /&gt;&lt;br /&gt;The Linux machines had their names changed and user changed - they are the same VMs as before:&lt;br /&gt;&lt;br /&gt;qm-centos5-01  --&amp;gt;  fx-linux-1.9-slave07&lt;br /&gt;qm-centos5-02  --&amp;gt;  fx-linux-1.9-slave08&lt;br /&gt;qm-centos5-04  --&amp;gt;  fx-linux-1.9-slave09&lt;br /&gt;&lt;br /&gt;The Mac machines are the same ones as before, only a user change:&lt;br /&gt;&lt;br /&gt;qm-xserve01  --&amp;gt;  bm-xserve20&lt;br /&gt;qm-xserve06  --&amp;gt;  bm-xserve21&lt;br /&gt;&lt;br /&gt;The two non-pgo windows machines are now VMs, the pgo box is the same VM that it was before - with a user change and a new 30GB fcal drive added for building on&lt;br /&gt;&lt;br /&gt;qm-win2k3-01  --&amp;gt;  fx-win32-1.9-slave07&lt;br /&gt;qm-win2k3-02  --&amp;gt;  fx-win32-1.9-slave08&lt;br /&gt;qm-win2k3-pgo01  --&amp;gt;  fx-win32-1.9-slave09&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the moment all three Linux boxes are experiencing errors in Check :&lt;br /&gt;&lt;br /&gt;gmake[2]: Leaving directory `/builds/slave_new/trunk_centos5_8/mozilla/objdir/storage/build'&lt;br /&gt;gmake[2]: Entering directory `/builds/slave_new/trunk_centos5_8/mozilla/objdir/storage/test'&lt;br /&gt;../../_tests/xpcshell-simple/test_storage/unit/test_bug-365166.js: FAIL&lt;br /&gt;../../_tests/xpcshell-simple/test_storage/unit/test_bug-365166.js.log:&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;*** Storage Tests: Trying to close!&lt;br /&gt;*** Storage Tests: Trying to remove file!&lt;br /&gt;*** test pending&lt;br /&gt;[Exception... &quot;Component returned failure code: 0x80520015 (NS_ERROR_FILE_ACCESS_DENIED) [mozIStorageService.openDatabase]&quot;  nsresult: &quot;0x80520015 (NS_ERROR_FILE_ACCESS_DENIED)&quot;  location: &quot;JS frame :: ../../_tests/xpcshell-simple/test_storage/unit/test_bug-365166.js :: test :: line 22&quot;  data: no]&lt;br /&gt;*** FAIL ***&lt;br /&gt;&lt;br /&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;../../_tests/xpcshell-simple/test_storage/unit/test_bug-393952.js: PASS&lt;br /&gt;../../_tests/xpcshell-simple/test_storage/unit/test_bug-444233.js: PASS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And all three Win32 boxes are having the same 1 test fail in Reftest:&lt;br /&gt;&lt;br /&gt;REFTEST UNEXPECTED FAIL: file:///E:/slave/trunk_2k3_8/mozilla/layout/reftests/bugs/212563-1.html&lt;br /&gt;&lt;br /&gt;Please contact me if you have any ideas about what could be causing these.&lt;br /&gt;&lt;br /&gt;-- Lukas&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 13 Aug 2008 20:27:21 +0000</pubDate>
	<author>noreply@blogger.com (Lukas Blakk)</author>
</item>
<item>
	<title>Lukas Blakk: Welcome to Build, Ben says</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6439561539898172827.post-5173675098335102835</guid>
	<link>http://crashopensource.blogspot.com/2008/08/welcome-to-build-he-says.html</link>
	<description>&lt;div&gt;Today was a big day for the Firefox 3.0 unittest set up.  Since QA and Build have become separated, I have been working towards lining up all out unittest masters on the Build network.  What used to be 10+ master addresses will be narrowed to 2 - you're either on staging-master or production master.  &lt;br /&gt;&lt;br /&gt;Easy.&lt;br /&gt;&lt;br /&gt;No.  It's actually not that easy.  What I estimated would be 2 hours of downtime has turned into almost 8 hours (and counting) for many reasons, including the following:&lt;br /&gt;&lt;br /&gt;* All the slave VMs had to have a new user created, one that is consistent with all our other Build machines.  It makes sense to do this all at once, but it takes some time to get all the permissions and paths and ssh keys and other little details to line up properly&lt;br /&gt;&lt;br /&gt;* In switching networks and users, the linux boxes were unreachable by VNC for some time until it was discovered (thanks to &lt;a href=&quot;http://blog.mozilla.com/bhearsum/&quot;&gt;bhearsum&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://www.oduinn.com/&quot;&gt;joduinn&lt;/a&gt;) that the xstartup in  ~/.vnc was configured differently than the other linux boxes.  I think it took almost an hour to get the fix on this figured out&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All in all there were many little trips and glitches that made this process go for so long, and the fact that it can take over an hour to see if a build &amp;amp; test run is successful sucks.  Thank you very much to all the Build Team who helped during this process.  &lt;br /&gt;&lt;br /&gt;At the time of writing this, I am only waiting on the pgo box to come back up on the new network with a 30GB disk partition added, and looking into a few compiler warnings on Mac and Windows.  The PGO box didn't have an fcal disk partition for building on and I wonder if the issues in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=442819&quot;&gt;this bug&lt;/a&gt; are related to that.  It would be a pretty great bonus if this switch turned up the fix for that machine.&lt;br /&gt;&lt;br /&gt;The good news is that we are in the process of streamlining and making things more efficient for the future.  All the build machines are getting closer every day to being interchangeable.  The time it takes to get a new linux VM running is miniscule - and hopefully the same will be true of the other two platforms soon. &lt;br /&gt;&lt;br /&gt;Things still to do:&lt;br /&gt;* post about the new machine names of these VMs&lt;br /&gt;* make sure that Nagios is clear about what it should be reporting on&lt;br /&gt;* update the cron job that does the rsync of the buildmaster logs to the TB share&lt;br /&gt;* file patches for 1.9 unittest's mozconfigs, master.cfg, mozbuild.py and killAndClobber.py&lt;br /&gt;&lt;br /&gt;Back to watching the buildbot waterfall for green.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 13 Aug 2008 00:01:43 +0000</pubDate>
	<author>noreply@blogger.com (Lukas Blakk)</author>
</item>
<item>
	<title>Lukas Blakk: Scheduled Downtime Tues Aug 12 - 8:00 am PDT for Unittest network switch</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6439561539898172827.post-3902257053941535834</guid>
	<link>http://crashopensource.blogspot.com/2008/08/scheduled-downtime-tues-aug-12-800-am.html</link>
	<description>&lt;div&gt;Tomorrow there will be a ~2hr downtime starting at 8:00 am PDT as the 1.9 unittest master is moved over to the build network.&lt;br /&gt;&lt;br /&gt;At the same time there will be a short interruption on the Mozilla2 production master.  &lt;br /&gt;&lt;br /&gt;If any issues arise, please comment in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=450119&quot;&gt;bug 450119&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 11 Aug 2008 17:54:51 +0000</pubDate>
	<author>noreply@blogger.com (Lukas Blakk)</author>
</item>
<item>
	<title>Anant Narayanan: Why do all good things come to an end?</title>
	<guid isPermaLink="false">http://www.kix.in/blog/?p=240</guid>
	<link>http://www.kix.in/blog/2008/08/why-do-all-good-things-come-to-an-end/</link>
	<description>&lt;p&gt;Yesterday was my last day at Mozilla Labs, bringing my summer internship to an end. As evidenced by all my posts recently, the summer has been one heck of a ride. I had a great time, and I owe it all to the awesome folks at Mozilla, and my fellow interns.&lt;/p&gt;
&lt;p&gt;It’s funny how bonds formed in just 3 short months can be so difficult to part from. I would never have imagined that it would be so hard to say goodbye. I take comfort in the fact that I will be seeing many Mozillians again, and I know it’s never really goodbye in the Mozilla world - but there are those who I probably won’t be seeing ever again - and that makes me really sad.&lt;/p&gt;
&lt;p&gt;I guess that’s life.&lt;/p&gt;
&lt;p&gt;Anyway, I’m looking forward to better times ahead. I hope to continue working with the Labs - so I’ll still be around - just not in Mountain View &lt;img src=&quot;http://www.kix.in/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;As for my immediate plans, after a long flight to Bangalore, I’ll be spending a week with family. Sometime during that week, I also have to pick up my VISA for The Netherlands, and then I’m off to Amsterdam for my Masters on the 21st.&lt;/p&gt;</description>
	<pubDate>Sat, 09 Aug 2008 18:07:46 +0000</pubDate>
	<dc:creator>Anant</dc:creator>
</item>
<item>
	<title>Brian Krausz: How Not to Satisfy Your Customers</title>
	<guid isPermaLink="false">http://nerdlife.net/?p=131</guid>
	<link>http://feeds.feedburner.com/~r/nerdlife/~3/359828216/</link>
	<description>&lt;p&gt;So seeing as how my summer is just about over, I had a bunch of things to wrap up.  One of them was canceling my Comcast subscription.  I called them and setup the cancellation.  A few days later I got a call from a representative “confirming” that I really wanted to cancel.  I said yes, I was moving out of their service area, and they told me that they would note that on the account.&lt;/p&gt;
&lt;p&gt;Then I flew to Whistler, Canada for Firefox+ Summit 2008, where the calls are outrageous, so I didn’t answer my phone.  Here’s my call log from that trip (note that Whistler is the same timezone as Mountain View):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jul 31, 6:08 am - Comcast&lt;/li&gt;
&lt;li&gt;Jul 31, 1:23 pm - Comcast&lt;/li&gt;
&lt;li&gt;Aug 1, 10:45 am - Comcast&lt;/li&gt;
&lt;li&gt;Aug 1, 1:53 pm - Comcast&lt;/li&gt;
&lt;li&gt;Aug 2, 7:30 am - Comcast&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aug 4 I was back stateside so I could answer my phone.  Just like clockwork, at 7:21 am I got another call from Comcast.  This time I was a little more stern in my request to not be called again (though still polite, I can’t blame that particular phone rep for anything), and lo and behold, they actually stopped calling.&lt;/p&gt;
&lt;p&gt;I’m going to assume the first rep forgot to mark my cancellation confirmed and ignore that, but what the hell is with this policy?  Not only do they call at ungodly hours (can’t they do timezone conversions there?), but they kept calling back every single day.  I told them I wanted to cancel, were they really that desperate to make sure I wanted to?&lt;/p&gt;
&lt;p&gt;It’s been a pretty bad week for me and customer service…before I cancelled Comcast, I called XBox Live to cancel that.  I got a notice via email that my subscription (which I only took our for &lt;a href=&quot;http://ericbutler.net/&quot;&gt;Eric&lt;/a&gt; to use this summer) was going to be automatically renewed, and to make sure that my payment info was up to date.  I searched through that site for a good 15 minutes…there is no mechanism or instruction on how to cancel your subscription.  I’m sure this was done for retention purposes, since a cancel option is usually pretty standard for a web interface, but I suppose it’s way too easy to allow people to cancel in less than 20 minutes.&lt;/p&gt;
&lt;p&gt;So I hunted down a phone number and called them, got transfered around, and finally found someone who could cancel my account.  I had to guide the rep through the “customer retention” script, where he kept asking me if there was anybody I could transfer the account to or another XBox I could recover the account on, and I kept having to remind him that all of my friends had Live accounts, and I still owned an XBox.  They may as well have a machine play the script, they read each line regardless of context.  In fact. most big companies do that.&lt;/p&gt;
&lt;p&gt;&amp;lt;/rant&amp;gt;&lt;/p&gt;
&lt;img src=&quot;http://feeds.feedburner.com/~r/nerdlife/~4/359828216&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 08 Aug 2008 22:42:56 +0000</pubDate>
	<dc:creator>Brian</dc:creator>
</item>
<item>
	<title>Lukas Blakk: Looking for suggestions on dealing with lots of data</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6439561539898172827.post-6887935518787643563</guid>
	<link>http://crashopensource.blogspot.com/2008/08/looking-for-suggestions-on-dealing-with.html</link>
	<description>&lt;div&gt;So I'm still plugging away at figuring out how to interpret the massive amounts of error log output that our unittest builds create.&lt;br /&gt;&lt;br /&gt;As the test suites are being run, there is a steady stream of stdio being generated and logged.  From this stdio, I gather up all the lines of output that contain &quot;TEST-UNEXPECTED-FAIL&quot; (thanks to Ted for &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=443090&quot;&gt;unifying&lt;/a&gt; the output!).&lt;br /&gt;&lt;br /&gt;Now I have files that look something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;linux-2 | 67 | 07/25/2008 | 06:40 | *** 61506 ERROR TEST-UNEXPECTED-FAIL | /tests/toolkit/content/tests/widgets/test_tree.xul | Error thrown during test: uncaught exception: [Exception... &quot;Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMWindowUtils.sendMouseScrollEvent]&quot;  nsresult: &quot;0x80004005 (NS_ERROR_FAILURE)&quot;  location: &quot;JS frame :: http://localhost:8888/tests/SimpleTest/EventUtils.js :: synthesizeMouseScroll :: line 273&quot;  data: no] - got 0, expected 1&lt;br /&gt;linux-2 | 67 | 07/25/2008 | 06:40 | *** 62352 ERROR TEST-UNEXPECTED-FAIL | /tests/toolkit/content/tests/widgets/test_tree_hier.xul | Error thrown during test: uncaught exception: [Exception... &quot;Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMWindowUtils.sendMouseScrollEvent]&quot;  nsresult: &quot;0x80004005 (NS_ERROR_FAILURE)&quot;  location: &quot;JS frame :: http://localhost:8888/tests/SimpleTest/EventUtils.js :: synthesizeMouseScroll :: line 273&quot;  data: no] - got 0, expected 1&lt;br /&gt;linux-2 | 67 | 07/25/2008 | 06:40 | *** 63084 ERROR TEST-UNEXPECTED-FAIL | /tests/toolkit/content/tests/widgets/test_tree_hier_cell.xul | Error thrown during test: uncaught exception: [Exception... &quot;Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMWindowUtils.sendMouseScrollEvent]&quot;  nsresult: &quot;0x80004005 (NS_ERROR_FAILURE)&quot;  location: &quot;JS frame :: http://localhost:8888/tests/SimpleTest/EventUtils.js :: synthesizeMouseScroll :: line 273&quot;  data: no] - got 0, expected 1&amp;lt;/pre&amp;gt;&lt;br /&gt;&lt;br /&gt;Where the info is &quot;|&quot; delimited and goes like this:&lt;br /&gt;&lt;br /&gt;&amp;lt;pre&amp;gt;PLATFORM | BUILD_NO | DATE | TIME | TEST-RESULT | TEST-NAME | TEST-OUTPUT&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Approximately 7000 lines of error output for less than a month of constant testing.&lt;br /&gt;&lt;br /&gt;I want to be able to know the following (at least):&lt;br /&gt;&lt;br /&gt;* How many times has a particular test failed?&lt;br /&gt;* On which platforms?&lt;br /&gt;* How many times this week vs. last week?&lt;br /&gt;&lt;br /&gt;That would be a start anyway.&lt;br /&gt;&lt;br /&gt;I would &lt;b&gt;love&lt;/b&gt; to be able to create a graph or something visual that shows peaks of test failures.  Unfortunately I don't really know much about that area.&lt;br /&gt;&lt;br /&gt;So I am asking for help/suggestions.  &lt;b&gt;If you had about 490,000 lines of errors (representing 3 platforms) in the above format - what would you do?&lt;/b&gt;  &lt;br /&gt;&lt;br /&gt;I can pretty easily add to the python script that greps for error output so that it creates sql insert statements instead of a text file and I would welcome tips that include creating/automating a database to hold all the error info.  I've been thinking of setting something up with RoR to let people create their own views of the data depending on what they are looking for.&lt;br /&gt;&lt;br /&gt;Looking forward to your advice.&lt;/div&gt;</description>
	<pubDate>Thu, 07 Aug 2008 17:51:15 +0000</pubDate>
	<author>noreply@blogger.com (Lukas Blakk)</author>
</item>
<item>
	<title>Florian Lainez: Social media revolution: don’t miss the bus</title>
	<guid isPermaLink="false">http://frenchguyonair.wordpress.com/?p=21</guid>
	<link>http://frenchguyonair.wordpress.com/2008/08/07/social-media-revolution-dont-miss-the-bus/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Today, social media are in all conversations.&lt;/span&gt;&lt;a href=&quot;http://frenchguyonair.files.wordpress.com/2008/08/fotolia_447572_xs.jpg&quot;&gt;&lt;img src=&quot;http://frenchguyonair.files.wordpress.com/2008/08/fotolia_447572_xs.jpg?w=126&amp;amp;h=117&quot; alt=&quot;&quot; height=&quot;117&quot; class=&quot;alignright size-medium wp-image-22&quot; width=&quot;126&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Tomorrow, social media will be everywhere, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://blogs.forrester.com/charleneli/2008/03/the-future-of-s.html&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;like air&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;It’s referring to everything from Facebook, to Flickr, to Twitter and on-line business networking such as LinkedIn and Xing.&lt;/span&gt;&lt;/p&gt;
&lt;p lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;In fact, social media is a very generic term that includes different concepts all related to technology, social interaction and building/providing content such text, photos or videos.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0; text-align: center;&quot;&gt;&lt;a href=&quot;http://frenchguyonair.files.wordpress.com/2008/08/socialmedialandscape.jpg&quot;&gt;&lt;img src=&quot;http://frenchguyonair.files.wordpress.com/2008/08/socialmedialandscape.jpg?w=300&amp;amp;h=225&quot; alt=&quot;&quot; height=&quot;225&quot; class=&quot;size-medium wp-image-23 alignnone&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre style=&quot;margin-bottom: 0; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Source: &lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.fredcavazza.net/2008/06/09/social-media-landscape/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;http://www.fredcavazza.net/2008/06/09/social-media-landscape/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p lang=&quot;en-US&quot; class=&quot;western&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;As you can see on the previous chart, it can be about sharing or publishing information, but also about building a social network. It can be linked to entertainment as well.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;According to some people, social networks will replace &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.socialmediatoday.com/SMC/39440&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;email&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; (also &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://lifehacker.com/397457/can-social-tools-really-replace-email&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;), &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.fredcavazza.net/2008/06/19/facebook-va-t-il-remplacer-notre-carnet-dadresses/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;address book&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.switched.com/2007/12/03/nokia-predicts-social-networks-will-kill-tv-networks/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;TV net&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.switched.com/2007/12/03/nokia-predicts-social-networks-will-kill-tv-networks/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;work&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.digital-rant.co.uk/2008/04/22/social-networking-to-replace-search/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;search engines&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.6consulting.co.uk/blog/2008/06/social-media-networking-vs-cold-calling-%E2%80%93-can-social-networking-really-replace-cold-calling/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;cold calling&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, and soon &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.internetevolution.com/author.asp?section_id=528&amp;amp;doc_id=149504&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;our whole social lives&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p lang=&quot;en-US&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;We are not yet at this point but one thing is sure: its importance is quickly growing and is becoming not only a new way to communicate between brands/consumers and consumers/consumers. In fact it’s also setting up interactions with “older” kind of websites such as blogs, e-business websites, user-created content’s websites… How many blogs have you ever visited with links to “Digg it” or “share on Facebook” ? What about last photos of Flickr album on these blogs ? It is also about identification with the spread of openID, with the will to interconnect different systems but also simplifying it.&lt;/span&gt;&lt;/p&gt;
&lt;p lang=&quot;en-US&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;But, what is social media about? Social media is about relationships. Social media is about interactivity. Social media is about word of mouth.&lt;/span&gt;&lt;/p&gt;
&lt;p lang=&quot;en-US&quot; class=&quot;western&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Sound familiar? Does this sound like the world of open source? It seems to me that communication over social media looks quite like open-source: voluntary involvement, sharing information, working in a group with common goals… OK, I know that people involved in social networks perhaps don’t feel involved in a community as strongly as in open-source but I think that comparison is still valid.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Working on that&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; (with &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://autological.wordpress.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Jane&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;’s help&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;), I realized that no one has really focused on having &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;&lt;strong&gt;user feedback on social media&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, especially for Europe, that is to say, to have the possibility to get a huge amount of data and focus on analyzing it. So we decided to try something&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;For the moment social media is being used across the board to help raise awareness of Mozilla and Firefox. But we need now to find a way to understand what this all means.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Looking after already existing solutions, &lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;it became apparent that I cannot focus on Europe and must take a global perspective given the range and scope of tools currently available.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;After researching them, &lt;/span&gt;&lt;span lang=&quot;en-US&quot;&gt;I found a plethora. I suppose I am not the only one to look after this kind of tool.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;There are a lot of free/cheap websites. I tried to &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://spreadsheets.google.com/pub?key=plG8zL1kJafwGCxWmkXtQBg&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;identify them&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; (non-exhaustive list) &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;and think that I have most of them to date at the end of July 2008. From independent developer to multinational corporation, from open-source beginning project to Google, there is a large choice.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;But in fact, few companies really try to sort data and analyze it as I expect to.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;A lot of &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Semantics&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;semantic&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;strong&gt; research&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt; is being conducted on this topic, but so far, it has not been very effective. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;The challenge is allowing the computer to understand &lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;em&gt;the meaning of the words &lt;/em&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;when we talk naturally, for example when associating &lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;em&gt;salmon &lt;/em&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;and &lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;em&gt;fish.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Some other focus with statistics. Commercial solutions exist, like &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.nielsenbuzzmetrics.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Nielsen Buzz Metrics&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.attentio.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Attentio&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.biz360.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Biz360&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.filtrbox.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Filtrbox&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.trackur.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Trackur&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; or also &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.brandimensions.com/&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Brandimensions&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; (more exhaustive list available &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.marcomprofessional.com/posts/philip.sheldrake/social-web-analytics---my-upcoming-ebook-and-a-case-of-cobblers-shoes&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;). Some are &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;&lt;em&gt;really&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; very expensive and others are more accessible but they all provide solutions for our problem.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;I did my research on this, based on these tools. Next week I will present you the results, hoping that they will be interesting enough considering the research spanned only a few weeks. Obviously, a long term study would yield more significant results and help deepen the analysis.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;I encourage you to find out some news about social media, but be careful the topic is large and you can be lost very quickly. A good starting point is to read &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://www.forrester.com/Groundswell/index.html&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt;Groundswell&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span lang=&quot;en-US&quot;&gt; , by Charlene Li and Josh Bernoff.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p lang=&quot;en-US&quot; style=&quot;margin-bottom: 0.21cm;&quot; class=&quot;western&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;* Florian - a happy marketing intern discovering the wonderful Mozilla world.&lt;/span&gt;&lt;/p&gt;
&lt;img src=&quot;http://feeds.wordpress.com/1.0/categories/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;img src=&quot;http://feeds.wordpress.com/1.0/tags/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/frenchguyonair.wordpress.com/21/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/frenchguyonair.wordpress.com/21/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/frenchguyonair.wordpress.com/21/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/frenchguyonair.wordpress.com/21/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/frenchguyonair.wordpress.com/21/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/frenchguyonair.wordpress.com/21/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=frenchguyonair.wordpress.com&amp;amp;blog=4367152&amp;amp;post=21&amp;amp;subd=frenchguyonair&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 07 Aug 2008 16:21:21 +0000</pubDate>
	<dc:creator>Florian</dc:creator>
</item>
<item>
	<title>Wei Zhou: Debriefing and Proposal</title>
	<guid isPermaLink="false">http://weizhou.wordpress.com/?p=86</guid>
	<link>http://weizhou.wordpress.com/2008/08/05/debriefing-and-proposal/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;My internship ends at Aug 23th, meaning officially I only have 15 days to contribute to Firefox. I will continue working as a contributor for Mozilla at school, so anybody needs a UI designer, a flash AS coder, a web designer or a CG artist and dev, ping me “Wei”on IRC or email me at weizhou@andrew.cmu.edu.I’m more than glad to help.&lt;/p&gt;
&lt;p&gt;By the end of yesterday, proud as I am, tried 500 add-ons and extensions for firefox, as well as successfully developed a hobby of working for Mozilla. Work is just more fun than fun. The Summit gave me insights of how an open-source community could attract so much passionate developers - but I hope in the future, designer contributors could be largely involved to improve the user experience of future web.&lt;/p&gt;
&lt;p&gt;I’m doing two things this week.&lt;/p&gt;
&lt;p&gt;1. Design the first version of the Firefox phone. 2. Trying to write a brief overview of all Firefox add-ons and extensions, and find design implications based on it.&lt;/p&gt;
&lt;p&gt;This media player UI design costs me Friday whole day. I designed 12 versions and choose those two. It’s hard to choose between concept 1 and concept 2, because I liked them both. User testing result shows people tends to like concept 1.Which one do you like better?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://weizhou.files.wordpress.com/2008/08/player31.png&quot;&gt;&lt;img src=&quot;http://weizhou.files.wordpress.com/2008/08/player31.png?w=818&amp;amp;h=770&quot; alt=&quot;&quot; height=&quot;770&quot; class=&quot;aligncenter size-full wp-image-158&quot; width=&quot;818&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;http://feeds.wordpress.com/1.0/categories/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;img src=&quot;http://feeds.wordpress.com/1.0/tags/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weizhou.wordpress.com/86/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weizhou.wordpress.com/86/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weizhou.wordpress.com/86/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weizhou.wordpress.com/86/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weizhou.wordpress.com/86/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weizhou.wordpress.com/86/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=weizhou.wordpress.com&amp;amp;blog=2603969&amp;amp;post=86&amp;amp;subd=weizhou&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 05 Aug 2008 21:58:13 +0000</pubDate>
	<dc:creator>weizhou</dc:creator>
</item>
<item>
	<title>David Anderson: Summit Thoughts</title>
	<guid isPermaLink="true">http://www.bailopan.net/blog/?p=85</guid>
	<link>http://www.bailopan.net/blog/?p=85</link>
	<description>&lt;p&gt;The Firefox 2008 Summit was — well — an adventure.  &lt;/p&gt;
&lt;p&gt;It was great being able to put a face to all of the names that pass by in Mozilla’s IRC.  Andreas gave some great talks on trace compilation.  John Lilly and Mitchell Baker gave some good speeches.  There was a very interesting Q&amp;amp;A session where members of the community got to ask face to face questions with John, Mitchell, and Brendan Eich.  It was a diverse and global group as many of Firefox’s localizers were there.&lt;/p&gt;
&lt;p&gt;The views in Whistler are fantastic.  We took a two hour bus ride from Vancouver to the Westin Resort Hotel.  There were some complications though.  It turns out that there’s really only one fast route between Vancouver (where the airport is), and Whistler.  And that path was hit by a rockslide on the second day of the Summit.&lt;/p&gt;
&lt;p&gt;Later in the week a laundry truck hit the hotel’s transformer and we lost power for the entire morning (which was problematic because sessions were conducted on electronic whiteboards).  When it came time to leave, the rockslide still wasn’t cleared yet, so we all had to take buses along the next shortest route.  Unfortunately, that route was eight hours, so the buses had to leave at 2AM and 3AM to make our flights.&lt;/p&gt;
&lt;p&gt;But my flight wasn’t until 3PM, so I spent another five hours or so in the airport (six, counting that our flight was delayed because a mechanic &lt;i&gt;had&lt;/i&gt; to fix a seat’s reclining feature).  All in all, it was a 16-17 hour trip to get home, but the Summit was worth it.  Other people had worse trips back so I won’t complain.&lt;/p&gt;
&lt;p&gt;Short digression: Mike Schroepfer (attributed with building Mozilla’s engineering division) recently announced that he was leaving Mozilla for Facebook.  He had said he was leaving “the only job he ever truly loved.”  It’s sad to see him go — he’s extraordinarily talented and there’s no doubt he’ll be a great asset at whatever company he works at.  &lt;/p&gt;
&lt;p&gt;On the last day everyone took gondolas up a mountain to have a dinner/party at the top.  Sometime during the event, everyone started chanting “Schrep! Schrep! Schrep!” to get him to say something at the podium.  He gave a short but very emotional farewell which received a standing ovation.&lt;/p&gt;
&lt;p&gt;Mitchell Baker had given a long speech earlier in the week comparing Mozilla to a tree, so when she took the podium at the party, we were joking that we’d hear more about trees.  But instead she gave a new, shorter definition of the community.  One that I really like:&lt;/p&gt;
&lt;p&gt;“Mozilla is people — having fun — improving the Internet.”&lt;/p&gt;</description>
	<pubDate>Mon, 04 Aug 2008 17:21:40 +0000</pubDate>
	<dc:creator>dvander</dc:creator>
</item>
<item>
	<title>Anant Narayanan: Of bears, landslides, powercuts and cancelled flights</title>
	<guid isPermaLink="false">http://www.kix.in/blog/?p=232</guid>
	<link>http://www.kix.in/blog/2008/08/of-bears-landslides-powercuts-and-cancelled-flights/</link>
	<description>&lt;p&gt;Bear with me for this long post (no pun intended) describing the awesome &lt;a href=&quot;http://wiki.mozilla.org/Summit2008&quot;&gt;Mozilla Summit&lt;/a&gt; at &lt;a href=&quot;http://www.lonelyplanet.com/worldguide/canada/whistler/&quot;&gt;Whistler&lt;/a&gt;. The short version is that it was &lt;a href=&quot;http://en.wikipedia.org/wiki/Supercalifragilisticexpialidoceous&quot;&gt;supercalifragilisticexpialidoceous&lt;/a&gt;. Ok, that’s a nonsense word but there’s no way I can put the experience in just one word &lt;img src=&quot;http://www.kix.in/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monday&lt;/strong&gt;&lt;br /&gt;
All the interns got up fairly early to catch a shuttle to SFO, and we arrived in Whistler after a pleasant 3 hour flight and 2 hour bus ride from YVR. The scenery was fantastic all along the way, and the hotel was overwhelmingly comfortable. Nothing much happened except meeting some familiar as well as new people at dinner.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tuesday&lt;/strong&gt;&lt;br /&gt;
First day of the summit started off with keynotes by John Lilly and Mitchell Baker. Mitchell’s &lt;a href=&quot;http://blog.lizardwrangler.com/2008/07/29/the-mozilla-tree/&quot;&gt;analogy&lt;/a&gt; of what she thought of Mozilla was especially intriguing. A great way to kick-off the sessions that were to follow over the next few days. The &lt;a href=&quot;http://wiki.mozilla.org/Summit2008/Sessions/Proposals/History_%26_Future:_Imagining_the_Web_Browser_of_2015&quot;&gt;UX talk&lt;/a&gt; on the history and future of browsers was especially a good one. Highlight of the day was Gary &lt;a href=&quot;http://www.rumblingedge.com/2008/07/29/bear-with-me-while-you-sleep-at-whistler/&quot;&gt;spotting bears&lt;/a&gt;. Apparently, there were a few that were brave enough to jump into the room balconies too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wednesday&lt;/strong&gt;&lt;br /&gt;
I spent most of the early part of the day in the Emerald room, attending sessions on Mozilla’s Technology roadmap, Fennec and the Labs concept series. I ended the round of session-attending with Myk’s talk on &lt;a href=&quot;http://www.melez.com/mykzilla/2008/07/snowl-experiment-with-messaging-in.html&quot;&gt;Snowl&lt;/a&gt;, which is another cool labs project (well, all labs projects are cool!).&lt;/p&gt;
&lt;p&gt;The big news of the day was the &lt;a href=&quot;http://www.cbc.ca/canada/british-columbia/story/2008/07/30/bc-highway-rockslide-whistler.html&quot;&gt;rockslide&lt;/a&gt; on the road connecting Vancouver with Whistler. ~350 at the summit suddenly had to change travel plans to accomodate for this… um… natural disaster. The contingency plan involved 8-hour long bus rides on a longer, more &lt;em&gt;scenic&lt;/em&gt; route or float planes.&lt;/p&gt;
&lt;p&gt;The labs team spent wednesday night hacking at Chris’ room, in preparation for our presentations the next day. Prior experience led us to believe that relying on the WiFi network in the hotel was probably not a wise idea for our demos, so I setup a local weave sever with a few demo accounts and changed the bookmark sharing code to not depend on XMPP to notify the receving user of the share. It was 3 am by the time I got to sleep so I responsibly set an alarm because the weave talk was the first one on the next day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thursday&lt;/strong&gt;&lt;br /&gt;
Except the alarm didn’t go off, and I woke up 45 minutes &lt;em&gt;after &lt;/em&gt;the scheduled time for the session. My first reaction was along the lines of &lt;em&gt;oops, I screwed up&lt;/em&gt;. But as I became fully awake I realized there was no power in the entire hotel and breathed a sigh of relief because all the morning sessions were postponed. So the story was that a laundry truck ran into a transformer and it would take a few hours for power to be restored.&lt;/p&gt;
&lt;p&gt;The Labs sessions were moved to a conference room run by our friendly neighbors (The Hilton), and we started off shortly after lunch. The Labs sessions on &lt;a href=&quot;http://wiki.mozilla.org/Labs/Weave&quot;&gt;Weave&lt;/a&gt; and &lt;a href=&quot;http://wiki.mozilla.org/Labs/Ubiquity&quot;&gt;Ubiquity&lt;/a&gt; went off really well and I think they created a lot of buzz. Especially with ubiquity, some of the demos were mind-blowing!&lt;/p&gt;
&lt;p&gt;Though I really wanted to attend the session on HG, I decided to take a nap instead and prepare myself for the grand dinner atop &lt;a href=&quot;http://www.whistlerblackcomb.com/index.htm&quot;&gt;Whistler-Blackcomb&lt;/a&gt; (which are, incidentally, codenames for Windows editions). The dinner was a fine end to a fine summit, and I was especially excited to experience snowfall for the first time in my life &lt;img src=&quot;http://www.kix.in/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;My plan to get back home was to catch a Floatplane with the rest of Labs the next morning, in time for the YVR-SFO flight at 3 pm.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Friday&lt;/strong&gt;&lt;br /&gt;
But NO. All the floatplanes had been cancelled due to fog and low tides, so Dan &amp;amp; Chris put me up on the last bus out of Whistler at 11 am, and kindly provided a goodie bag full of food and coffee for my 8 hour bus ride.&lt;/p&gt;
&lt;p&gt;The ride itself was not bad at all, the scenery on the way was well worth it. As we approached Vancouver (around 6:30 pm), &lt;a href=&quot;http://icouldntfindanypaper.blogspot.com/&quot;&gt;Melissa Shapiro&lt;/a&gt; found me on the bus and informed me that she would try to catch the 8:15 pm flight to SFO (which was the last one out of YVR) and recommended I do the same. The bus didn’t go to the airport, but to the Sheraton at Wall centre instead, so Melissa and I took a cab and rushed to the airport.&lt;/p&gt;
&lt;p&gt;We managed to get standby tickets on the plane, and went through US immigration, customs and security check (where I was “selected for random screening”). We did make it to the gate on time, but not on the plane. Technically, I had to re-enter Canada through immigration, but I had a single-entry VISA. Thankfully, Melissa was there to vouch for me, so I was able to make it back in.&lt;/p&gt;
&lt;p&gt;Chris had rooms for us at the Sheraton and we headed back. After a great dinner with Bret, Brad, Melissa, Chris and Dan, I tucked in for the night watching Vancouver’s great skyline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Saturday&lt;/strong&gt;&lt;br /&gt;
Quite an uneventful day, considering the last week, because everything went as planned. All of us had confirmed tickets on the 11 am flight to SFO.&lt;/p&gt;
&lt;p&gt;Melissa, Chris and I stopped for a while at Stanley Park on our way to the Aiport, while Dan had to leave early because he had to pick up his bag and passport (which he left at the party on Thursday, there’s another whole story!)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phew&lt;/strong&gt;&lt;br /&gt;
Well, I’m back in Mountain View now; and only have a week more to go. I’m really going to miss everyone, and the summit just made it a whole lot harder for me to say goodbye. But as Chris Hoffman had said in a brown-bag sometime ago: “&lt;em&gt;This is Hotel Mozilla - you can check out anytime you like, but you can never leave!&lt;/em&gt;”&lt;/p&gt;
&lt;p&gt;Just want to convey a big Thank You to everyone at Mozilla; especially Dan Portillo, Tiffney Mortensen, John Lilly, Julie Deroche, Melissa Shapiro, Maria Emerson, and most of all, Chris Beard, for making&lt;em&gt;&lt;/em&gt; my experience at the summit an experience of a lifetime!&lt;/p&gt;
&lt;p&gt;(&lt;a href=&quot;http://www.flickr.com/photos/an_ant/sets/72157606429110869/&quot;&gt;Pictures up on Flickr&lt;/a&gt;)&lt;/p&gt;</description>
	<pubDate>Sun, 03 Aug 2008 08:12:59 +0000</pubDate>
	<dc:creator>Anant</dc:creator>
</item>
<item>
	<title>Florian Lainez: First post on my first blog about myself</title>
	<guid isPermaLink="true">http://frenchguyonair.wordpress.com/2008/07/30/first-post/</guid>
	<link>http://frenchguyonair.wordpress.com/2008/07/30/first-post/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Under social pressure, I feel forced to open my own blog:) talking about my experience in Mozilla and my point of view of technology and Internet evolution.&lt;/p&gt;
&lt;p&gt;But don’t worry: I take my responsibility and feel very good about that;)&lt;span id=&quot;more-1&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;Understanding better my work environment, feel free to take a look at my collegues blogs: &lt;a href=&quot;http://autological.wordpress.com/&quot;&gt;Jane&lt;/a&gt; my intership mentor, &lt;a href=&quot;http://standblog.org/blog/&quot;&gt;Tristan’s Standblog&lt;/a&gt; that I follow since some years… &lt;a href=&quot;http://www.chevrel.org/fr/carnet/&quot;&gt;Pascal&lt;/a&gt; of course, &lt;a href=&quot;http://somethin-else.org/&quot;&gt;William&lt;/a&gt; that just arrived in the Mozilla’s-wonderfull-world like me and finally &lt;a href=&quot;http://diary.braniecki.net/&quot;&gt;Gandalf&lt;/a&gt; for a more technical approach.&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;Finally, feel also free to visit other blogs I did before: Student organization about video &lt;a href=&quot;http://www.videorganisation.sk&quot;&gt;VidéOrganisation&lt;/a&gt;, student organization &lt;a href=&quot;http://bdslibertym.free.fr/dotclear/&quot;&gt;Liberty’M&lt;/a&gt; about sport, charity organization &lt;a href=&quot;http://www.virades31.org/&quot;&gt;Vaincre la mucoviscidose Midi-Pyrénées&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;http://feeds.wordpress.com/1.0/categories/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;img src=&quot;http://feeds.wordpress.com/1.0/tags/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/frenchguyonair.wordpress.com/1/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/frenchguyonair.wordpress.com/1/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/frenchguyonair.wordpress.com/1/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/frenchguyonair.wordpress.com/1/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/frenchguyonair.wordpress.com/1/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/frenchguyonair.wordpress.com/1/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=frenchguyonair.wordpress.com&amp;amp;blog=4367152&amp;amp;post=1&amp;amp;subd=frenchguyonair&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 30 Jul 2008 09:30:40 +0000</pubDate>
	<dc:creator>Florian</dc:creator>
</item>
<item>
	<title>David Anderson: Firefox Summit 2008</title>
	<guid isPermaLink="true">http://www.bailopan.net/blog/?p=83</guid>
	<link>http://www.bailopan.net/blog/?p=83</link>
	<description>&lt;p&gt;No article this week, we’re invading Canada as part of the &lt;a href=&quot;http://wiki.mozilla.org/Summit2008&quot;&gt;Firefox 2008 Summit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tomorrow the project I’m on (TraceMonkey) is doing a presentation on our technology.  Hopefully we’ll be able to blog about this soon, it’s some exciting stuff.&lt;/p&gt;
&lt;p&gt;My summer intern project is complete going into the summit, which is a nice feeling.  And now that Adobe has an &lt;a href=&quot;http://hg.mozilla.org/index.cgi/tamarin-tracing/rev/d417f70ac382&quot;&gt;AMD64 JIT backend&lt;/a&gt; to Tamarin-Tracing, I hope Flash 11 has some impetus for 64-bit builds.&lt;/p&gt;
&lt;p&gt;(TraceMonkey will definitely use it, though Firefox can’t ship 64-bit builds without 64-bit Flash.)&lt;/p&gt;</description>
	<pubDate>Mon, 28 Jul 2008 16:22:52 +0000</pubDate>
	<dc:creator>dvander</dc:creator>
</item>
<item>
	<title>Anant Narayanan: The week before the Summit</title>
	<guid isPermaLink="false">http://www.kix.in/blog/?p=230</guid>
	<link>http://www.kix.in/blog/2008/07/the-week-before-the-summit/</link>
	<description>&lt;p&gt;Time for a quick update on what I’ve been upto this week…&lt;/p&gt;
&lt;p&gt;Let’s start with the Intern BBQ - I guess the highlight of the event was &lt;a href=&quot;http://blog.mozilla.com/schrep/&quot;&gt;Schrep&lt;/a&gt; &lt;em&gt;almost&lt;/em&gt; being thrown into the pool, I think David &lt;a href=&quot;http://www.bailopan.net/blog/?p=82&quot;&gt;sums it up&lt;/a&gt; quite nicely. I left the same night for L.A. - the primary item on my agenda was to attend &lt;a href=&quot;http://www.russellpeters.com/&quot;&gt;Russell Peters&lt;/a&gt; and Friends at the &lt;a href=&quot;http://www.thegroveofanaheim.com/&quot;&gt;Grove of Anaheim&lt;/a&gt;. The show was great, he didn’t repeat any of his old jokes and we had 3 other &lt;em&gt;comics&lt;/em&gt; (as Russell called them) - all of them kept us laughing for over 2 hours.&lt;/p&gt;
&lt;p&gt;I spent all of Sunday at Universal Studios, Hollywood - which was also great fun. The studio tour, ‘Water World’ and ‘Jurassic Park’ attractions were especially worth it. I caught a Greyhound back to San Jose and headed straight to work.&lt;/p&gt;
&lt;p&gt;Week 10 was spent in finishing up the OAuth implementation for Weave - both server-side and client-side. I also wrote a PHP library to access a user’s Bookmarks and open Tabs via OAuth. We had a small demo at the third edition of &lt;a href=&quot;http://labs.mozilla.com/2008/07/monthly-labs-meetup-july-2008/&quot;&gt;Labs Night&lt;/a&gt; (which was held on Thursday, Jono gives a more &lt;a href=&quot;http://jonoscript.wordpress.com/2008/07/25/our-presentation-at-labs-night/&quot;&gt;detailed account&lt;/a&gt;). As we get closer to unrolling both the Weave web client and the OAuth API, I’m looking to forward to some great mashups from third party developers &lt;img src=&quot;http://www.kix.in/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Maria, Rob, Paul and I spent saturday touring the vineyards and hills of Santa Cruz…&lt;/p&gt;
&lt;p&gt;Now, we have a plane to catch in about 7 hours for what is poised to be a climax of gargantuan proportions for my summer. Keep track of what’s going on at Whistler at &lt;a href=&quot;http://summit.mozilla.org/&quot;&gt;Summitr&lt;/a&gt;. Needless to say, I’m super-excited!&lt;/p&gt;</description>
	<pubDate>Mon, 28 Jul 2008 10:20:07 +0000</pubDate>
	<dc:creator>Anant</dc:creator>
</item>
<item>
	<title>Anant Narayanan: Microsoft joins Apache</title>
	<guid isPermaLink="false">http://www.kix.in/blog/?p=228</guid>
	<link>http://www.kix.in/blog/2008/07/microsoft-joins-apache/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://port25.technet.com/archive/2008/07/25/oscon2008.aspx&quot;&gt;Get the story&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Should’ve known something like this was coming, given the recent spike in M$ spending on FOSS conferences.&lt;/p&gt;
&lt;p&gt;What really caught my eye is that Mike Schroepfer of Mozilla is on the list of people Sam Ramji wants to thank &lt;img src=&quot;http://www.kix.in/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 26 Jul 2008 08:00:16 +0000</pubDate>
	<dc:creator>Anant</dc:creator>
</item>
<item>
	<title>Paul O'Shannessy: DTrace and Treemaps: Part 1</title>
	<guid isPermaLink="true">http://zpao.com/articles/8-dtrace_treemaps_part_1</guid>
	<link>http://zpao.com/articles/8-dtrace_treemaps_part_1</link>
	<description>&lt;p&gt;One of my goals for this summer at Mozilla was improving performance when Firefox starts. Admittedly, I’ve done nothing of the sort. Instead I’ve tackled this from a more general angle – making a tool that uses DTrace and creates a treemap of the output. This serves as a way of analyzing performance in a very visual way. Before I go further, a little background.&lt;/p&gt;


	&lt;h2&gt;DTrace&lt;/h2&gt;


	&lt;p&gt;“DTrace is a comprehensive dynamic tracing framework created by Sun Microsystems for troubleshooting system and application problems in real time.”&lt;a href=&quot;http://feeds.feedburner.com/zpao#fn1&quot;&gt;[1]&lt;/a&gt; It was originally in Solaris and OpenSolaris, but has since been ported to &lt;span class=&quot;caps&quot;&gt;OS X&lt;/span&gt; and was &lt;a href=&quot;http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/5#dtrace&quot;&gt;included in Leopard&lt;/a&gt;. In a nutshell, it lets you take a look at the inner workings of applications and kernel activity, with a low overhead.  You can do everything from looking at file IO to time spent in functions to analyzing system call times. It’s pretty powerful and I’ve only just touched the surface of it.&lt;/p&gt;


	&lt;p&gt;Developers at Mozilla have done a lot of work getting probes into Firefox so that we can take advantage of all DTrace has to offer. One of these places where probes have gone is into JavaScript execution. This opens up the doors to using DTrace to track what’s happening in JavaScript, which is especially useful at Mozilla since a lot of our front-end code is JavaScript.&lt;/p&gt;


	&lt;h2&gt;Treemaps&lt;/h2&gt;


	&lt;p&gt;“Treemapping is a method for displaying tree-structured data using nested rectangles.”&lt;a href=&quot;http://feeds.feedburner.com/zpao#fn2&quot;&gt;[2]&lt;/a&gt; In other words, pretty damn cool. One of the coolest uses I’ve seen recently is &lt;a href=&quot;http://marumushi.com/apps/newsmap/&quot;&gt;newsmap&lt;/a&gt; – which takes the news as aggregated by Google News, and builds a beautiful representation of what’s “hot” in the news.&lt;/p&gt;


	&lt;h2&gt;What I’ve done&lt;/h2&gt;


	&lt;p&gt;The work that I’ve been doing so far is pretty simple. I’ve taken the output of a single DTrace script (js_functime, &lt;a href=&quot;http://blogs.sun.com/brendan/entry/dtrace_meets_javascript&quot;&gt;available on Brendan Gregg’s blog&lt;/a&gt;) and used that to create a treemap. This DTrace script measures the time spent in Javascript functions. It’s not the most accurate measurement since the output is the overlapping times, but it’s still a good place to start. The output contains the number of times each function was called, the average time spent in the function, and the total time spent (across calls). From there I build these treemaps.&lt;/p&gt;


	&lt;p&gt;I’ve used a modified version of the &lt;a href=&quot;http://rubytreemap.rubyforge.org/&quot;&gt;RubyTreemap&lt;/a&gt; gem to create &lt;acronym title=&quot;Scalable Vector Graphics&quot;&gt;SVG&lt;/acronym&gt;s of this output. I create 3 different high-level maps, each representing the bits of information I get (count, average time, total time). Each of these maps is made from a tree 3 levels deep (though the root node is insignificant). The topmost level is the file from which the function is in. The second level is the function name. Size is determined from the measurement type (thus 3 maps). Each of these maps can then be broken down further, stepping into each individual file. So from these 3 “index” SVGs, I’ve linked down into the second level, and a new &lt;span class=&quot;caps&quot;&gt;SVG&lt;/span&gt; is generated for each file, making it a bit easier to read the smaller nodes. Colors are consistent between runs and based on an adapted hashing algorithm.&lt;/p&gt;


	&lt;p&gt;I can’t hand out the source yet since the original RubyTreemap is &lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt;’ed and I’m not ready to redistribute. The changes aren’t huge, but are very focused for this task, so might not even be able to be merged back. Also, my code is pretty ugly right now and that would just lead to embarrassment.&lt;/p&gt;


	&lt;p&gt;So without further ado, here’s the page on playground: &lt;strong&gt;&lt;a href=&quot;http://playground.zpao.com/dtrace_treemaps/&quot;&gt;DTrace Treemaps&lt;/a&gt;&lt;/strong&gt;. Keep in mind that this is not complete and what you see may very well change soon. Here are the direct links to the SVGs if you are a bit impatient: &lt;a href=&quot;http://playground.zpao.com/dtrace_treemaps/js_functime_count/index.svg&quot;&gt;count&lt;/a&gt;, &lt;a href=&quot;http://playground.zpao.com/dtrace_treemaps/js_functime_avg/index.svg&quot;&gt;average&lt;/a&gt;, &lt;a href=&quot;http://playground.zpao.com/dtrace_treemaps/js_functime_sum/index.svg&quot;&gt;sum&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Future Directions&lt;/h2&gt;


	&lt;p&gt;From here I plan on using the output from some of the scripts in the &lt;a href=&quot;http://opensolaris.org/os/community/dtrace/dtracetoolkit/&quot;&gt;DTrace Toolkit&lt;/a&gt; to create other visuals, likely more treemaps. I also need to do a number of things to package this nicely so it’s easy to adapt and use for different DTrace outputs. Last, but certainly not least, I need to make the code much better – it’s my own personal Frankenstein right now, and needs to suck less.&lt;/p&gt;


&lt;div class=&quot;footnotes&quot;&gt;

	&lt;p id=&quot;fn1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/DTrace&quot;&gt;Wikipedia DTrace article&lt;/a&gt;&lt;/p&gt;


	&lt;p id=&quot;fn2&quot;&gt;&lt;sup&gt;2&lt;/sup&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Treemap&quot;&gt;Wikipedia Treemapping article&lt;/a&gt;&lt;/p&gt;


&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=SkJSGj&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=SkJSGj&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/zpao?a=RUp7FK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/zpao?i=RUp7FK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/zpao/~4/345255865&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 25 Jul 2008 02:58:20 +0000</pubDate>
	<author>paul@zpao.com (Paul O’Shannessy)</author>
</item>
<item>
	<title>Lukas Blakk: Grovelling isn't so bad</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6439561539898172827.post-2625113980722798086</guid>
	<link>http://crashopensource.blogspot.com/2008/07/grovelling-isn-so-bad.html</link>
	<description>&lt;div&gt;Been working on a couple of little utility scripts that I think are ready for public viewing.  I'm interested in any tips on writing better code, or other ways to do what I'm doing that are more efficient.&lt;br /&gt;&lt;br /&gt;The first one is &lt;a href=&quot;http://avnerd.tv/sharedFiles/cleanup.txt&quot;&gt;cleanup.py&lt;/a&gt; which we need to be able to quickly get rid of old log files so that when we grovel through for errors, only the files of interest are being scanned.&lt;br /&gt;&lt;br /&gt;Once you've got the old log files cleared out, you can use &lt;a href=&quot;http://avnerd.tv/sharedFiles/grovel.txt&quot;&gt;grovel.py&lt;/a&gt; to scan through for TEST-UNEXPECTED-FAIL.  This script looks through each directory passed in from the command line, and prints all the failure lines to a .errors file for that directory - so the darwin log errors end up in a darwin_timestamp.errors file.  The script also keeps a counter of TEST-PASS, TEST-KNOWN-FAIL, and TEST-PASS(EXPECTED RANDOM) and then prints the total tests run as well as these counters on the last line of the .errors file.&lt;br /&gt;&lt;br /&gt;Next steps:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Add gathering up all the .errors files into a tarball&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Set up a weekly cron job that will run these scripts and email the tarball&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a database and insert results&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Web interface for aforementioned db that will allow for searching&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Even though these are pretty simple utility scripts, I'm excited because they will make my life a little easier and also because it's the first python I've written from scratch...oh, and it's not a school assignment :)&lt;/div&gt;</description>
	<pubDate>Wed, 23 Jul 2008 23:14:59 +0000</pubDate>
	<author>noreply@blogger.com (Lukas Blakk)</author>
</item>
<item>
	<title>Eric Butler: Canvas Text Goes ‮‮ Bidirectional</title>
	<guid isPermaLink="false">http://www.ericbutler.net/blog/?p=11</guid>
	<link>http://www.ericbutler.net/blog/2008/07/canvas-text-goes-bidirectional/</link>
	<description>&lt;p&gt;
The patch for the last of the major outstanding bugs with the WHATWG Canvas text API landed in time for a nearly spec compliant implementation to make it into Firefox 3.1 Alpha 1. I am pleased to say that Canvas now supports right-to-left text and bidirectional text resolution on its text drawing functions.
&lt;/p&gt;
&lt;p&gt;
Canvas has undergone and will be undergoing some other changes, as well. I went through and cleaned up a lot of old code so that, among other things, Canvas uses Mozilla’s Thebes API instead of directly calling into Cairo. Philip Taylor has created a new set of unit tests for Canvas which are more extensive than before. Additionally, a patch has been sitting around for a while that adds shadow support to Canvas, which I hope to push to completion soon.&lt;/p&gt;</description>
	<pubDate>Wed, 23 Jul 2008 23:04:54 +0000</pubDate>
	<dc:creator>Eric</dc:creator>
</item>
<item>
	<title>Brian Krausz: f8 Keynote Goof</title>
	<guid isPermaLink="false">http://nerdlife.net/?p=127</guid>
	<link>http://feeds.feedburner.com/~r/nerdlife/~3/343996002/</link>
	<description>&lt;div class=&quot;mceTemp&quot;&gt;During Ben’s talk at the f8 keynote they came to a slide where they discussed Academics, and listed a bunch of companies who were either 