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

<channel>
	<title>lucasr.org &#187; mozilla</title>
	<atom:link href="http://lucasr.org/tag/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucasr.org</link>
	<description>Lucas Rocha</description>
	<lastBuildDate>Tue, 08 May 2012 15:18:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Mozilla, Mobile and Students</title>
		<link>http://lucasr.org/2012/04/19/mozilla-mobile-and-students/</link>
		<comments>http://lucasr.org/2012/04/19/mozilla-mobile-and-students/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 11:12:55 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[b2g]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[contributors]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[mission]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[open web]]></category>
		<category><![CDATA[promote]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[students]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[university]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2801</guid>
		<description><![CDATA[I went to Évora this week to give a talk about Mozilla and our mobile projects (Firefox Mobile, B2G, Open Web Apps, Identify, etc) at an event organized by the students&#8217; union of the local university. Here&#8217;s my talk&#8217;s deck of slides (in Portuguese)—not very useful as it has very little content but it does [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.flickr.com/photos/lucasrocha/7090324267/"><img src="http://farm8.staticflickr.com/7039/7090324267_2a89befcd0.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Évora</p></div>
<p>I went to <a href="http://en.wikipedia.org/wiki/%C3%89vora">Évora</a> this week to give a talk about Mozilla and our mobile projects (Firefox Mobile, B2G, Open Web Apps, Identify, etc) at an <a href="http://sct.aaue.pt/">event</a> organized by the students&#8217; union of the <a href="http://en.wikipedia.org/wiki/University_of_%C3%89vora">local university</a>. Here&#8217;s my talk&#8217;s <a href="http://speakerdeck.com/u/lucasr/p/mozilla-mobile">deck of slides</a> (in Portuguese)—not very useful as it has very little content but it does contain a few useful links.</p>
<p>My main conclusion from this event is that we, Mozillians, should probably dedicate some more time spreading the word about our mission and projects to Uni students, especially in CS. There seems to be little awareness of why we&#8217;re different, why our mission matters, and what we&#8217;re working on right now.</p>
<p>From my experience, universities are usually a great source of potential long-term open source contributors. Getting students excited about our projects is likely to help us have a constant flow of new contributors in our community.</p>
<p>Big thanks to the event organizers for inviting me and for the hospitality! It was great to see <a href="http://www.joaquimrocha.com/">Joaquim Rocha</a> (Igalia) again and also meet interesting people like <a href="http://thp.io/">Thomas Perl</a> (gPodder) and <a href="http://goldfarb.web.cern.ch/goldfarb/">Steven Goldfarb</a> (CERN). It was a quick yet pleasant visit to Portugal.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2012/04/19/mozilla-mobile-and-students/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Performance Tips for Android&#8217;s ListView</title>
		<link>http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/</link>
		<comments>http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 11:24:21 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[adapterview]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[listview]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[scrolling]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2672</guid>
		<description><![CDATA[I&#8217;ve been messing around with Android-based code for a few months now while hacking on Native Firefox for Android. I noticed that the performance tips for ListViews are a bit scattered in different sources. This post is an attempt to summarize the ones I found most useful. I&#8217;m assuming you&#8217;re already familiar with ListViews and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been messing around with Android-based code for a few months now while hacking on <a href="http://lucasr.org/2011/11/15/native-ui-for-firefox-on-android/">Native Firefox for Android</a>. I noticed that the performance tips for <em>ListViews</em> are a bit scattered in different sources. This post is an attempt to summarize the ones I found most useful.</p>
<p>I&#8217;m assuming you&#8217;re already familiar with <em>ListViews</em> and understand the framework around <a href="http://developer.android.com/reference/android/widget/AdapterView.html"><em>AdapterViews</em></a>. I&#8217;ve added some Android source code pointers for the curious readers willing to understand things a bit deeper.</p>
<p><strong>How it works.</strong> <em>ListView</em> is designed for scalability and performance. In practice, this essentially means:</p>
<ol>
<li>It tries to do as few view inflations as possible.</li>
<li>It only paints and lays out children that are (or are about to become) visible on screen<sup><a href="https://github.com/android/platform_frameworks_base/blob/dcce1216b0066f3f9ed1b01a485684e8617e7ea4/core/java/android/widget/ListView.java#L1594">code</a></sup>.</li>
</ol>
<p>The reason for 1 is simple: layout inflations are expensive operations<sup><a href="https://github.com/android/platform_frameworks_base/blob/93dc642eaf48e3db58c4929df26283fbc5fd663f/core/java/android/view/LayoutInflater.java#L424">code</a></sup>. Although layout files are compiled into binary form for more efficient parsing<sup><a href="https://github.com/android/platform_frameworks_base/blob/613989772f7d7f7317349568a4809bf08b942bd7/core/java/android/content/res/Resources.java#L2116">code</a></sup>, inflations still involve going through a tree of special XML blocks<sup><a href="https://github.com/android/platform_frameworks_base/blob/60201f2b4ee3fcf222310b5bf91d1d150470cab7/core/java/android/content/res/XmlBlock.java">code</a></sup> and instantiating all respective views.&nbsp;<em>ListView</em> solves this problem by recycling<sup><a href="https://github.com/android/platform_frameworks_base/blob/43ee0ab8777632cf171b598153fc2c427586d332/core/java/android/widget/AbsListView.java#L5764">code</a></sup> non-visible views—called &#8220;ScrapViews&#8221; in Android&#8217;s source code—as you pan around. This means that developers can simply update the contents of recycled views<sup><a href="https://github.com/android/platform_frameworks_base/blob/43ee0ab8777632cf171b598153fc2c427586d332/core/java/android/widget/AbsListView.java#L2012">code</a></sup> instead of inflating the layout of every single row<em></em>—more on that later.</p>
<p>In order to implement 2, <em>ListView</em> uses the view recycler to keep adding recycled views below or above the current viewport and moving active views to a recyclable pool as they move off-screen<sup><a href="https://github.com/android/platform_frameworks_base/blob/dcce1216b0066f3f9ed1b01a485684e8617e7ea4/core/java/android/widget/ListView.java#L2884">code</a></sup> while scrolling. This way <em>ListView</em> only needs to keep enough views in memory to fill its allocated space in the layout and some additional recyclable views—even when your adapter has hundreds of items. It will fill the space with rows in different ways—from top, from bottom, etc—depending on how the viewport changed<sup><a href="https://github.com/android/platform_frameworks_base/blob/dcce1216b0066f3f9ed1b01a485684e8617e7ea4/core/java/android/widget/ListView.java#L1594">code</a></sup>. The image below visually summarizes what happens when you pan a <em>ListView</em> down.</p>
<p style="text-align: center;"><img class="size-full wp-image-2725 aligncenter" style="border: 0px none;" src="http://lucasr.org/wp-content/uploads/2012/04/listview1.png" alt="" width="537" height="267" /></p>
<p>With this framework in mind, let&#8217;s move on to the tips. As you&#8217;ve seen above, <em>ListView</em> dynamically inflates and recycles tons of views when scrolling so it&#8217;s key to make your adapter&#8217;s <a href="http://developer.android.com/reference/android/widget/Adapter.html#getView%28int,%20android.view.View,%20android.view.ViewGroup%29"><em>getView()</em></a> as lightweight as possible. All tips resolve around making <em>getView()</em> faster in one way or another.</p>
<p><strong>View recycling. </strong>Every time <em>ListView</em> needs to show a new row on screen, it will call the<em> getView()</em> method from its adapter. As you know, <em>getView()</em> takes three arguments arguments: the row position, a <em>convertView</em>, and the parent <em>ViewGroup</em>.</p>
<p>The <em>convertView</em> argument is essentially a &#8220;ScrapView&#8221; as described earlier. It will have a non-null value when <em>ListView</em> is asking you recycle the row layout. So, when <em>convertView</em> is not null, you should simply update its contents instead of inflating a new row layout. The <em>getView()</em> code in your adapter would look a bit like:</p>
<pre style="font-size: smaller;">public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.your_layout, null);
    }

    TextView text = (TextView) convertView.findViewById(R.id.text);
    text.setText("Position " + position);

    return convertView;
}</pre>
<p><strong>View Holder pattern.</strong> Finding an inner view inside an inflated layout is among the most common operations in Android. This is usually done through a <em>View</em> method called <a href="http://developer.android.com/reference/android/view/View.html#findViewById%28int%29"><em>findViewById()</em></a>. This method will recursively go through the view tree looking for a child with a given ID<sup><a href="https://github.com/android/platform_frameworks_base/blob/f93bb6d8fd81d8938b16cf40259f97c336e9ef3a/core/java/android/view/ViewGroup.java#L3059">code</a></sup>. Using <em>findViewById()</em> on static UI layouts is totally fine but, as you&#8217;ve seen, <em>ListView</em> calls the adapter&#8217;s <em>getView()</em> very frequently when scrolling.&nbsp;<em>findViewById()</em> might perceivably hit scrolling performance in <em>ListViews</em>—especially if your row layout is non-trivial.</p>
<p>The View Holder pattern is about reducing the number of <em>findViewById()</em> calls in the adapter&#8217;s <em>getView()</em>. In practice, the View Holder is a lightweight inner class that holds direct references to all inner views from a row. You store it as a <a href="http://developer.android.com/reference/android/view/View.html#setTag%28int,%20java.lang.Object%29">tag</a> in the row&#8217;s view after inflating it. This way you&#8217;ll only have to use <em>findViewById()</em> when you first create the layout. Here&#8217;s the previous code sample with View Holder pattern applied:</p>
<pre style="font-size: smaller;">public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.your_layout, null);

        holder = new ViewHolder();
        holder.text = (TextView) convertView.findViewById(R.id.text);

        convertView.setTag(holder);
    } else {
        holder = convertView.getTag();
    }

    holder.text.setText("Position " + position);

    return convertView;
}

private static class ViewHolder {
    public TextView text;
}</pre>
<p><strong>Async loading. </strong>Very often Android apps show richer content in each <em>ListView</em> row such as images. Using <a href="http://developer.android.com/guide/topics/resources/drawable-resource.html">drawable resources</a> in your adapter&#8217;s <em>getView()</em> is usually fine as Android caches those internally<sup><a href="https://github.com/android/platform_frameworks_base/blob/613989772f7d7f7317349568a4809bf08b942bd7/core/java/android/content/res/Resources.java#L1880">code</a></sup>. But you might want to show more dynamic content—coming from local disk or internet—such as thumbnails, profile pictures, etc. In that case, you probably don&#8217;t want to load them directly in your adapter&#8217;s <em>getView()</em> because, well, you should <a href="http://blog.ometer.com/2008/09/07/synchronous-io-never-ok/">never ever block UI thread with IO</a>. Doing so means that scrolling your <em>ListView</em> would look anything but smooth.</p>
<p>What you want to do is running all per-row IO or any heavy CPU-bound routine asynchronously in a separate thread. The trick here is to do that and still comply with <em>ListView</em>&#8216;s recycling behaviour. For instance, if you run an <em><a href="http://developer.android.com/reference/android/os/AsyncTask.html">AsyncTask</a></em> to load a profile picture in the adapter&#8217;s <em>getView()</em>, the view you&#8217;re loading the image for might be recycled for another position before the<em> AsyncTask</em> finishes. So, you need a mechanism to know if the view hasn&#8217;t been recycled once you&#8217;re done with the async operation.</p>
<p>One simple way to achieve this is to attach some piece of information to the view that identifies which row is associated with it. Then you can check if the target row for the view is still the same when the async operation finishes. There are many ways of achieving this. Here is just a simplistic sketch of one way you could do it:</p>
<pre style="font-size: smaller;">public View getView(int position, View convertView,
        ViewGroup parent) {
    ViewHolder holder;

    ...

    holder.position = position;

    new ThumbnailTask(position, holder)
            .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);

    return convertView;
}

private static class ThumbnailTask extends AsyncTask {
    private int mPosition;
    private ViewHolder mHolder;

    public ThumbnailTask(int position, ViewHolder holder) {
        mPosition = position;
        mHolder = holder;
    }

    @Override
    protected Cursor doInBackground(Void... arg0) {
        // Download bitmap here
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        if (mHolder.position == mPosition) {
            mHolder.thumbnail.setImageBitmap(bitmap);
        }
    }
}

private static class ViewHolder {
    public ImageView thumbnail;
    public int position;
}</pre>
<p><strong>Interaction awareness.</strong> Asynchronously loading heavier assets for each row is an important step to towards a performant <em>ListView</em>. But if you blindly start an asynchronous operation on every <em>getView()</em> call while scrolling, you&#8217;d be wasting a lot of resources as most of the results would be discarded due to rows being recycled very often.</p>
<p>We need to add interaction awareness to your <em>ListView</em> adapter so that it doesn&#8217;t trigger any asynchronous operation per row after, say, a fling gesture on the <em>ListView</em>—which means that the scrolling is so fast that it doesn&#8217;t make sense to even start any asynchronous operation. Once scrolling stops, or is about to stop, is when you want to start actually showing the heavy content for each row.</p>
<p>I won&#8217;t post a code sample for this—as it involves too much code to post here—but the classic <a href="http://code.google.com/p/shelves/">Shelves app</a> by Romain Guy has a pretty <a href="http://code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature/android/shelves/activity/ShelvesActivity.java">good example</a>. It basically triggers the async book cover loading once the <em>GridView</em> stops scrolling among other things. You can also balance interaction awareness with an in-memory cache so that you show cached content even while scrolling. You got the idea.</p>
<p><strong>That&#8217;s all!</strong> I strongly recommend watching Romain Guy and Adam Powell&#8217;s <a href="http://www.youtube.com/watch?v=wDBM6wVEO70">talk</a> about <em>ListView</em> as it covers a lot of the stuff I wrote about here. There&#8217;s nothing new about the tips in this post but I thought it would be useful to document them all in one place. Hopefully, it will be a useful reference for hackers getting started on Android development.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Remote Debugging in Firefox Mobile</title>
		<link>http://lucasr.org/2012/03/28/remote-debugging-in-firefox-mobile/</link>
		<comments>http://lucasr.org/2012/03/28/remote-debugging-in-firefox-mobile/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 15:43:27 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[devtools]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[work week]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2678</guid>
		<description><![CDATA[As you probably know by now, the DevTools team got together here in London last week. I attended their work week with the specific mission of getting remote debugging to work on Firefox Mobile (a.k.a Fennec). The result? I wrote a couple of patches that allow you to debug JavaScript code from web pages running [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_2679" class="wp-caption alignnone" style="width: 510px"><a href="http://lucasr.org/wp-content/uploads/2012/03/debugger.png"><img class="size-full wp-image-2679 " src="http://lucasr.org/wp-content/uploads/2012/03/debugger-thumbnail.png" alt="" width="500" height="333" /></a><p class="wp-caption-text">Debugging a page in Firefox Mobile</p></div>
<p>As you probably know by now, the DevTools team <a href="http://antennasoft.net/robcee/2012/03/26/firefox-devtools-team-in-london/">got together</a> here in London last week. I attended their work week with the specific mission of getting remote debugging to work on Firefox Mobile (a.k.a Fennec).</p>
<p>The result? I wrote a couple of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=739966">patches</a> that allow you to debug JavaScript code from web pages running on Firefox Mobile. You can add breakpoints, step through your JS code, track the call stack and variable values from the experimental script debugger in Firefox&#8217;s Nightly build on desktop.</p>
<p>The script debugger uses the <a href="https://wiki.mozilla.org/Remote_Debugging_Protocol">remote debugging protocol</a> to send commands to Fennec via network. You have to connect your Android device to your computer via USB and map a <em>localhost</em> port using the follow <em>adb</em> command:</p>
<p><code>adb forward tcp:6000 tcp:6000<br />
</code></p>
<p>This will map port 6000 on your computer with the same TCP port on your mobile device. There&#8217;s no UI in the script debugger to connect to a remote Firefox instance yet but the DevTools team already have a <a href="http://hg.mozilla.org/users/rcampbell_mozilla.com/remote-debug">patch series</a> adding that. My patches simply implement the necessary <a href="https://wiki.mozilla.org/Remote_Debugging_Protocol#Actors">actors</a> that expose all browser tabs to the script debugger.</p>
<p>Remote debugging is especially important for mobile web developers. They need a way to easily tweak pages on the mobile device and see the results instantly. Right now, the remote debugging protocol only allows you to debug JavaScript code but  the long-term goal is to allow web developers to do much more: injecting code, inspecting DOM nodes, tweaking CSS rules, etc.</p>
<p>As you can see, there&#8217;s a lot of exciting work in progress here and many patches about to land in our repositories very soon. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2012/03/28/remote-debugging-in-firefox-mobile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My first 238 days at Mozilla</title>
		<link>http://lucasr.org/2012/03/13/my-first-238-days-at-mozilla/</link>
		<comments>http://lucasr.org/2012/03/13/my-first-238-days-at-mozilla/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 11:59:40 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[b2g]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[mission]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[passion]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[wfh]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2657</guid>
		<description><![CDATA[There&#8217;s nothing special about today&#8217;s date but I feel it&#8217;s a good time to write a bit about my experience at Mozilla so far. First days. Joining Mozilla was, at least in the first few weeks, a rather scary experience. Mostly because it was an unknown territory—both socially and technically—and I had a lot of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://farm7.staticflickr.com/6212/6281565632_f192bb59ed.jpg" alt="" width="500" height="334" /></p>
<p>There&#8217;s nothing special about today&#8217;s date but I feel it&#8217;s a good time to write a bit about my experience at Mozilla so far.</p>
<p><strong>First days. </strong>Joining Mozilla was, at least in the first few weeks, a rather scary experience. Mostly because it was an unknown territory—both socially and technically—and I had a lot of catching up to do. The amount of information you have to assimilate in order to understand how things are done is a bit overwhelming. But here I am, I survived! And still catching up.</p>
<p><strong>Remote.</strong> One of the main concerns I had when I joined Mozilla was the working-from-home part. I&#8217;ve done it before but not for so long. It turned out to be a good experience and enjoyed it in many ways. But I still missed meeting workmates in person and having a more clearly separate environment for work. So, I&#8217;m glad that the awesome <a href="http://www.flickr.com/photos/lucasrocha/sets/72157629476270899/">London office</a> is now open!</p>
<p><strong>Challenges.</strong> I  joined Mozilla in a very interesting moment. The company is growing a lot (<a href="http://careers.mozilla.org/en-US/">we&#8217;re hiring</a>) and has gone and is still going through many changes: <a href="http://blog.mozilla.com/channels/category/rapid-release-process/">new release pace</a>, <a href="http://lucasr.org/2011/11/15/native-ui-for-firefox-on-android/">native UI</a> for Firefox on Android, <a href="http://www.mozilla.org/en-US/b2g/">Boot to Gecko</a>, <a href="http://www.mozilla.org/en-US/persona/">Identity</a>, <a href="https://www.mozilla.org/en-US/apps/">Open Web Apps</a>, and much more. New focus, projects, and products but the <a href="http://www.mozilla.org/about/mission.html">mission</a> is still the same.</p>
<p><strong>Hacker-friendliness.</strong> Mozilla<strong></strong> is a very friendly environment for hackers: meritocratic, pragmatic, and virtually bullshit-free. Feels good. You&#8217;re pretty much free to decide what to do next with very simple guidance as to what has higher priority at point in the development process.</p>
<p><strong>Passion.</strong> Mozilla&#8217;s mission is taken very seriously. You see that reflected in every small and big decision inside the organization. Being a non-profit organization with such a worthy mission is very liberating because you can express your passion with no excuses. Mozillians are <em>very</em> passionate people.</p>
<p><strong>Quick stats.</strong> I <a href="http://lucasr.org/2011/06/14/joining-mozilla/">joined</a> Mozilla 238 days ago. Since then, as part of my work at the company, I pushed 204 changesets, changed ~7,395 lines of code, fixed 106 bugs, gave 2 talks, travelled to 4 countries, and met a huge number of smart people.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2012/03/13/my-first-238-days-at-mozilla/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>FOSDEM 2012</title>
		<link>http://lucasr.org/2012/02/09/fosdem-2012/</link>
		<comments>http://lucasr.org/2012/02/09/fosdem-2012/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 16:09:09 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[belgium]]></category>
		<category><![CDATA[brussels]]></category>
		<category><![CDATA[cold]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[fosdem]]></category>
		<category><![CDATA[hackers]]></category>
		<category><![CDATA[mozcamp]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[weather]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2643</guid>
		<description><![CDATA[This year&#8217;s FOSDEM was a special one for me. It was the first time I attended it as a Mozillian! I had already met quite a few European community members at MozCamp Europe last year but this FOSDEM was a great opportunity to meet even more Mozillians face-to-face. I stayed at the Mozilla DevRoom most [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_2645" class="wp-caption alignnone" style="width: 510px"><a href="http://speakerdeck.com/u/lucasr/p/the-state-of-firefox-mobile"><img class=" wp-image-2645 " src="http://lucasr.org/wp-content/uploads/2012/02/6828883857_06808b1933.jpg" alt="" width="500" height="299" /></a><p class="wp-caption-text">Mobillians by Brian King (CC-BY-NC)</p></div>
<p>This year&#8217;s <a href="http://fosdem.org/2012/">FOSDEM</a> was a special one for me. It was the first time I attended it as a Mozillian! I had already met quite a few European community members at <a href="https://wiki.mozilla.org/EU_MozCamp_2011">MozCamp Europe</a> last year but this FOSDEM was a great opportunity to meet even more Mozillians face-to-face. I stayed at the <a href="http://fosdem.org/2012/schedule/track/mozilla_devroom">Mozilla DevRoom</a> most of the conference but also spent some time catching up with my fellow <a href="http://www.gnome.org/">GNOME</a> hackers.</p>
<p>Chris and I gave a <a href="http://fosdem.org/2012/schedule/event/the_state_of_firefox_mobile">&#8220;State of Firefox Mobile&#8221;</a> talk on Sunday. I usually don&#8217;t share my slides because they tend to be too short in content to be useful. However, we wrote some speaker notes that give enough information and context on what we talked about. So, here&#8217;s the <a href="http://speakerdeck.com/u/lucasr/p/the-state-of-firefox-mobile">deck</a> alternating between slides and speaker notes—I wish <a href="http://speakerdeck.com/">Speaker Deck</a> had proper support for speaker notes&#8230;</p>
<p>All in all, I had a great time at FOSDEM this year! PS: The weather during the conference was quite special too—in a painful way!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2012/02/09/fosdem-2012/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Native UI for Firefox on Android</title>
		<link>http://lucasr.org/2011/11/15/native-ui-for-firefox-on-android/</link>
		<comments>http://lucasr.org/2011/11/15/native-ui-for-firefox-on-android/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 14:07:54 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[call for feedback]]></category>
		<category><![CDATA[call for participation]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[contribution]]></category>
		<category><![CDATA[contributors]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[native ui]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2579</guid>
		<description><![CDATA[It&#8217;s been a month since Johnathan publicly announced the native UI for Firefox on Android. So it&#8217;s probably a good time to give everyone a quick status update. In case you haven&#8217;t heard about it yet, we are re-implementing Fennec&#8217;s UI using Android&#8217;s native platform to be able to deliver a much better performance and UX [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-2600" title="" src="http://lucasr.org/wp-content/uploads/2011/11/native.png" alt="" width="502" height="241" /></p>
<p>It&#8217;s been a month since Johnathan <a href="http://groups.google.com/group/mozilla.dev.planning/browse_thread/thread/ff8d89bfa28383bb">publicly announced</a> the native UI for Firefox on Android. So it&#8217;s probably a good time to give everyone a quick status update. In case you haven&#8217;t heard about it yet, we are re-implementing Fennec&#8217;s UI using Android&#8217;s native platform to be able to deliver a much better performance and UX to our users on Android devices.</p>
<p>In terms of architecture, one of the key points of the native UI is to move Gecko and XUL out of Firefox&#8217;s startup path on Android. This way, the UI can start up and respond to user interaction immediately while Gecko and XUL load and run on a separate thread. The communication between Gecko and the native UI then happens through a simple <a href="https://wiki.mozilla.org/Fennec/NativeUI/Messages">message system</a>. This means we&#8217;re replacing <a href="https://wiki.mozilla.org/Electrolysis">Electrolysis</a> with a lighter architecture that brings similar benefits. For the curious, <a href="http://starkravingfinkle.org/blog/">Mark Finkle</a> wrote an <a href="https://wiki.mozilla.org/Fennec/NativeUI/Architecture_Overview">architecture overview</a> with more details.</p>
<p>We&#8217;re landing the new code on a separate repository called &#8220;<a href="hg.mozilla.org/projects/birch">birch</a>&#8221; which will eventually be merged in <a href="http://hg.mozilla.org/mozilla-central/">mozilla-central</a>. Large parts of the primary browser UI have already been implemented—AwesomeBar, tabs, bookmarking, notification popups, addons manager, preferences, context menus, and more. We also have a new panning/zooming implementation that is extremely fast and smooth. The design team is bringing a new phone UI for Firefox that is both beautiful and simpler. The new design is part of a wider effort to streamline the Firefox UX on all platforms, desktop and mobile.</p>
<p>This is all very exciting but there&#8217;s still a lot to do to make it all feature-complete, stable, and ready for users. If you want to help us with feedback and testing, install the native UI&#8217;s <a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-birch-android/">nightly build</a> on your Android phone. Don&#8217;t have an Android phone? Mozilla can give you one! Have a look at our <a href="https://wiki.mozilla.org/Mobile/Testdrivers_Program">Test Drivers program page</a> for more information.</p>
<p>It&#8217;s key to Mozilla&#8217;s mission to have a strong presence on the mobile web space. We&#8217;re working hard to make Firefox the most exciting mobile browser on Android. Development is moving insanely fast and I can&#8217;t wait to see the new UI delivered to our users next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2011/11/15/native-ui-for-firefox-on-android/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Get Involved in Firefox Mobile</title>
		<link>http://lucasr.org/2011/10/10/get-involved-in-firefox-mobile/</link>
		<comments>http://lucasr.org/2011/10/10/get-involved-in-firefox-mobile/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 11:15:07 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[call for participation]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[contribution]]></category>
		<category><![CDATA[contributor]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[get involved]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[participation]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[steward]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2547</guid>
		<description><![CDATA[I&#8217;ve volunteered to be a community steward for the Mobile team as part of the Contributor Stewards program that has been recently created in Mozilla. My role as a community steward is to find ways to get more people involved in Firefox Mobile. As a first step, I thought it would be a good idea [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://wiki.mozilla.org/Mobile/Get_Involved"><img class="alignnone size-full wp-image-2568" title="" src="http://lucasr.org/wp-content/uploads/2011/10/fennec.jpg" alt="" width="458" height="283" /></a></p>
<p>I&#8217;ve volunteered to be a community steward for the Mobile team as part of the <a href="https://wiki.mozilla.org/Stewards">Contributor Stewards</a> program that has been recently created in Mozilla. My role as a community steward is to find ways to get more people involved in <a href="https://wiki.mozilla.org/Mobile">Firefox Mobile</a>.</p>
<p>As a first step, I thought it would be a good idea to create a <a href="https://wiki.mozilla.org/Mobile/Get_Involved">Get Involved</a> page for the Mobile team. This page is meant to have only the minimal steps to start contributing to different areas of the project—it shouldn&#8217;t feel overwhelming. For now, it only has content for hacking and testing but it will include other areas soon.</p>
<p>I have also compiled a <a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=prod%3AFennec+whiteboard%3Amentor">list of bugs</a> that are good for first-time contributors and assigned mentors to each of them. The mentors and other team members will assist you with any missing information and useful source code links.</p>
<p>If you&#8217;re still unsure where to start after reading the <a href="https://wiki.mozilla.org/Mobile/Get_Involved">Get Involved</a> page, we&#8217;re always on <a href="https://wiki.mozilla.org/Mobile/Get_Involved#Communication">IRC</a> to answer any questions you might have. Firefox Mobile is a key part of Mozilla&#8217;s future and is definitely an exciting project to be part of. Join us!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2011/10/10/get-involved-in-firefox-mobile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5 Form Validation in Firefox Mobile</title>
		<link>http://lucasr.org/2011/09/20/html5-form-validation-in-firefox-mobile/</link>
		<comments>http://lucasr.org/2011/09/20/html5-form-validation-in-firefox-mobile/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 14:38:18 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2501</guid>
		<description><![CDATA[My patches to add HTML5 form validation support to Firefox Mobile have landed in trunk yesterday. This feature has been available&#160;on desktop since Firefox 4 but it wasn&#8217;t implemented in Firefox Mobile until now. In case you haven&#8217;t heard about it, HTML5 supports automatic input validation. This means that your browser can take care of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-2525" title="" src="http://lucasr.org/wp-content/uploads/2011/09/form-validation.jpg" alt="" width="499" height="265" /></p>
<p>My <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=605365">patches</a> to add HTML5 form validation support to Firefox Mobile have landed in trunk yesterday. This feature has been available&nbsp;on desktop since Firefox 4 but it wasn&#8217;t implemented in Firefox Mobile until now.</p>
<p>In case you haven&#8217;t heard about it, HTML5 supports <a href="https://developer.mozilla.org/en/HTML/Forms_in_HTML#Constraint_Validation">automatic input validation</a>. This means that your browser can take care of validating form fields for you—no need to write custom JavaScript code to check for required fields or validate common types of input such as numbers, emails, URLs, etc.</p>
<p>So, how does HTML5 form validation look in Firefox Mobile? Very similar to Firefox on desktop. If you submit a form that contains any invalid data—an invalid email address, a required field that was not filled in, and so on—the form will not be submitted, all invalid fields will be marked with a subtle red border, and the first invalid element will be automatically focused showing its respective validation message (see image above).</p>
<p>As far as I know, the only mobile browsers that support HTML5 form validation right now are Firefox and Opera. You can try this feature on our mobile <a href="http://nightly.mozilla.org/">nightly build</a>. As usual, general feedback, <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Fennec">bug reports</a>, and patches are welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2011/09/20/html5-form-validation-in-firefox-mobile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox for Tablets on Nightly</title>
		<link>http://lucasr.org/2011/09/13/firefox-for-tablets-on-nightly/</link>
		<comments>http://lucasr.org/2011/09/13/firefox-for-tablets-on-nightly/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 04:57:29 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[call for feedback]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[nightly]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2475</guid>
		<description><![CDATA[We, Firefox Mobile front-enders, have been working hard for the last few weeks to get the new Firefox UI for tablets in place for general testing. It has now reached a functional state that is good enough for getting some early feedback. So, how can you help us? First of all, you can simply install [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_2489" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-2489" title="" src="http://lucasr.org/wp-content/uploads/2011/09/tablet.jpg" alt="" width="500" height="293" /><p class="wp-caption-text">Firefox for Tablets</p></div>
<p>We, Firefox Mobile front-enders, have been working hard for the last few weeks to get the new <a href="http://www.flickr.com/photos/61892693@N03/sets/72157627325688069/with/6052859709/">Firefox UI for tablets</a> in place for general testing. It has now reached a functional state that is good enough for getting some early feedback. So, how can you help us?</p>
<p>First of all, you can simply install Fennec&#8217;s <a href="http://nightly.mozilla.org/">nightly build</a> on your Android tablet and give us some thoughtful feedback on the UI. File bugs for the missing bits from the planned design, report interaction problems, let us know about broken bits, etc.</p>
<p>Secondly, if you want to contribute code, have a look at our current list of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655762">tablet-related bugs</a>—see the dependent bugs—and let us know what bugs you want to work on. Setting up a Fennec development environment is fairly simple, you can find <a href="https://wiki.mozilla.org/Mobile/Fennec/Android">instructions</a> in the wiki.  Feel free to ask for help either on IRC (#mobile at irc.mozilla.org) or on the specific bug reports. Just ping mfinkle, mbrubeck, wesj, sriram, or me.</p>
<p>Keep in mind that this is very early stage work. There are lots of rough edges and design is continuously evolving. In case you missed it, Ian Barlow, from our Mobile design team, has <a href="http://ianbarlow.wordpress.com/2011/08/30/firefox-for-tablets/">blogged</a> about the tablet UI design a couple of weeks ago—definitely worth reading. This is all looking very promising and we can&#8217;t wait to get it out to users once it&#8217;s ready!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2011/09/13/firefox-for-tablets-on-nightly/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Hello Mozilla!</title>
		<link>http://lucasr.org/2011/08/23/hello-mozilla/</link>
		<comments>http://lucasr.org/2011/08/23/hello-mozilla/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 00:11:00 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[litl]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[intro]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[webbook]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=2464</guid>
		<description><![CDATA[This is my first post aggregated on both Planet Mozilla and Planet Mozilla Mobile. I guess it&#8217;s a good time to introduce myself to the Mozilla community. I joined Mozilla about a month ago to work on Firefox  Mobile. I&#8217;ll be mostly focusing on UI-related bits and pieces of Fennec as part of the front-end [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/lucasrocha/6011690404/"><img class="alignnone" src="http://farm7.static.flickr.com/6014/6011690404_4231042b7c.jpg" alt="" width="500" height="375" /></a></p>
<p>This is my first post aggregated on both <a href="http://planet.mozilla.org">Planet Mozilla</a> and <a href="http://planet.firefox.com/mobile/">Planet Mozilla Mobile</a>. I guess it&#8217;s a good time to introduce myself to the Mozilla community. I joined Mozilla about a month ago to work on <a href="http://www.mozilla.org/mobile">Firefox  Mobile</a>. I&#8217;ll be mostly focusing on UI-related bits and pieces of <a href="https://wiki.mozilla.org/Mobile/Fennec">Fennec</a> as part of the front-end group—which is in fact what I&#8217;m most passionate about.</p>
<p>Before Mozilla, I worked for three years at <a href="http://litl.com">litl</a>—a Boston-based startup—where I hacked on the cloud-based OS that powers the <a href="http://litl.com/meet-webbook/overview.htm">webbook</a>. The litl OS is almost entirely written in JavaScript and it was while working on it that I really got hooked into the language. Before litl, I was part of Maemo&#8217;s UI framework team at Nokia where I worked throughout the entire development cycle of  the <a href="http://en.wikipedia.org/wiki/Nokia_N810">N810</a> internet tablet.</p>
<p>I&#8217;m also a long time <a href="http://www.gnome.org/">GNOME</a> contributor. I&#8217;ve done all sorts of things in the project such as being a member of GNOME Foundation&#8217;s Board of Directors, being part of GNOME&#8217;s release team, and maintaining a few official modules. I don&#8217;t hold any official positions in the project anymore but I&#8217;m still working on a cool spare-time <a href="https://live.gnome.org/TheBoardProject">project</a> based on GNOME platform.</p>
<p>My first month at Mozilla has been great overall. To be honest, I felt a bit overwhelmed in the first couple of weeks. It&#8217;s a quite humbling experience to join such a large community full of extremely talented and passionate contributors. It&#8217;s a whole new world to me and I&#8217;m learning quite a bit everyday—which is the very reason I joined Mozilla anyway. I hope to be blogging soon about the latest news on Fennec development. For instance, there&#8217;s some really exciting work being done on the tablet UI for Fennec now! Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2011/08/23/hello-mozilla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  lucasr.org/tag/mozilla/feed/ ) in 0.47208 seconds, on May 18th, 2012 at 2:52 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 3:52 am UTC -->
