<?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>Lucas Rocha &#187; mozilla</title>
	<atom:link href="http://lucasr.org/tag/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucasr.org</link>
	<description>Blog</description>
	<lastBuildDate>Tue, 21 May 2013 16:49:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Introducing The Layout</title>
		<link>http://lucasr.org/2013/05/17/introducing-the-layout/</link>
		<comments>http://lucasr.org/2013/05/17/introducing-the-layout/#comments</comments>
		<pubDate>Fri, 17 May 2013 05:28:00 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[The Layout]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[call for participation]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[the layout]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3791</guid>
		<description><![CDATA[As engineers, I believe the way we approach a problem is as important as the code we write. This is especially relevant in the context of UI engineering where design is such a vital element. Unfortunately, it seems quite hard to find good content about everything that happens around us and inside our heads when [...]]]></description>
				<content:encoded><![CDATA[<p dir="ltr">As engineers, I believe the way we <em>approach</em> a problem is as important as the code we write. This is especially relevant in the context of UI engineering where design is such a vital element.</p>
<p dir="ltr">Unfortunately, it seems quite hard to find good content about everything that happens <em>around</em> us and <em>inside</em> our heads when we are building user interfaces. This is what <a href="http://thelayout.cc/">The Layout</a> is about.</p>
<p dir="ltr">My <a href="http://thelayout.cc/preamble/">intent</a> is to create a space for high quality content discussing the principles, mindset, and practices that I believe shape the craft of UI engineering. It is meant to be a shared space with many voices—so, expect some awesome guest authors.</p>
<p dir="ltr">I’ve just posted the very first article, <a href="http://thelayout.cc/mind-the-gap/">Mind the Gap</a>. My plan is to publish a new article every other week-ish. For now, subscribe to the <a href="http://thelayout.cc/feed/">RSS feed</a> or simply follow The Layout on <a href="http://twitter.com/readthelayout">Twitter</a> or <a href="https://plus.google.com/u/0/109366488041901352956/posts">Google+</a> to get future updates.</p>
<p dir="ltr">I really hope you enjoy it!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/05/17/introducing-the-layout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UI polishing in Firefox for Android</title>
		<link>http://lucasr.org/2013/04/29/ui-polishing-in-firefox-for-android/</link>
		<comments>http://lucasr.org/2013/04/29/ui-polishing-in-firefox-for-android/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 14:15:05 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[awesomescreen]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[polishing]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[toolbar]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3717</guid>
		<description><![CDATA[Last week, we did our very first topic-oriented hackathon focused on UI polishing bugs. The UI changes we&#8217;ve done will make a substantial difference in the experience of using Firefox on Android. Here are some of my favourite fixes and improvements. Tabs Details in the tabs UI can make a big difference UX-wise. We changed [...]]]></description>
				<content:encoded><![CDATA[<p>Last week, we did our very first topic-oriented <a title="Firefox for Android's UI polishing Hackathon" href="http://lucasr.org/2013/04/22/firefox-for-androids-ui-polishing-hackathon/">hackathon</a> focused on UI polishing bugs. The UI changes we&#8217;ve done will make a substantial difference in the experience of using Firefox on Android. Here are some of my favourite fixes and improvements.</p>
<h2>Tabs</h2>
<p>Details in the tabs UI can make a big difference UX-wise. We changed the tabs button icon (see image) to provide better affordance. The new icon also features a much cooler animation when tabs are added or removed.</p>
<p>Last but not least, we added a subtle parallax effect when you the open/close the tabs panel giving it a more fluid feel.</p>
<h2>Address bar</h2>
<p>As Wes has already <a title="Show Urls in Fennec" href="http://digdug2k.wordpress.com/2013/04/29/show-urls-in-fennec/">reported</a>, you now have the option to show URLs instead of page titles in the address bar. The domain highlight (see image) is a nice touch and gives us feature parity with Firefox on desktop.</p>
<p>The reader and stop buttons now have properly sized hit areas to avoid tapping other parts of the toolbar by mistake—a long overdue issue.</p>
<h2>That&#8217;s not all</h2>
<p>Reader Mode will get some nice style updates for serif fonts, doorhanger notifications now have a more polished animation, text selection handles have a more consistent style, favicons in the awesomescreen will look <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839855">fancier</a>, some visual glitches in the awesomescreen and toolbar were fixed, and more.</p>
<p>Not all these changes are in <a title="Nightly" href="http://nightly.mozilla.org/">Nightly</a> just yet but they will show up in the next days. Firefox 23 has everything to be my favourite release <em>ever</em>. Download and install our <a title="Nightly" href="http://nightly.mozilla.org/">Nightly</a> build on your Android and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/04/29/ui-polishing-in-firefox-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-part items in Smoothie</title>
		<link>http://lucasr.org/2013/04/22/multi-part-items-in-smoothie/</link>
		<comments>http://lucasr.org/2013/04/22/multi-part-items-in-smoothie/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 11:51:24 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[adapterview]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[androiddev]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[async]]></category>
		<category><![CDATA[call for participation]]></category>
		<category><![CDATA[call for testing]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[listview]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[smoothie]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3628</guid>
		<description><![CDATA[Smoothie makes it really easy to load ListView/GridView items asynchronously, off the UI thread. It handles all the complexity from gestures, threads, scrolling state, preloading, and view recycling behind a simple API. Up until now, one of the biggest limitations of the Smoothie API has been the lack of proper support for multi-part items. What [...]]]></description>
				<content:encoded><![CDATA[<p><a title="Introducing Smoothie" href="http://lucasr.org/2013/01/06/introducing-smoothie/">Smoothie</a> makes it really easy to load <em>ListView</em>/<em>GridView</em> items asynchronously, off the UI thread. It handles all the complexity from gestures, threads, scrolling state, preloading, and view recycling behind a simple API.</p>
<p>Up until now, one of the biggest limitations of the Smoothie API has been the lack of proper support for multi-part items. What is a multi-part item? It&#8217;s a <em>ListView</em>/<em>GridView</em> item composed by multiple parts that have to be loaded asynchronously with different priorities as you scroll.</p>
<p>Classic example: a list of photos with items composed by the photo image and the author&#8217;s avatar—both loaded from the cloud. With the existing API,  Smoothie would force you to load the whole content of each item in one go. This means you were forced to load both the main photo image and the avatar image for each item before loading the next item in the list.</p>
<p>What if you wanted to start loading the main photo image of all visible items before loading their respective avatars? The photos are probably the content your users are actually interested in after all. That&#8217;s what the multi-part item support is about. It allows you to split the loading of each item into multiple asynchronous operations with different global priorities.</p>
<p>So, how would you implement the above example assigning higher priority to the main photo image over the avatar using Smoothie? Assuming you&#8217;re already familiar with Smoothie&#8217;s API, just follow these steps:</p>
<ol>
<li>Override the <em>getItemPartCount()</em> method from <em>ItemLoader. </em>Return the number of parts the item in the given Adapter position has.</li>
<li>Handle the new <em>itemPart </em>argument accordingly in <em>loadItemPartFromMemory()</em>,<em> loadItemPart()</em>, and <em>displayItemPart(). </em>These methods will be called once for each item part.</li>
</ol>
<p>The item parts will have indexes starting from zero. e.g. for items with 2 parts, the part indexes will be 0 and 1. The indexes also define the relative priority between parts. <em>Smoothie</em> will load the part with index 0 for all visible items before loading part with index 1.</p>
<p><strong>Important note:</strong> I had to break API backwards compatibility. If you don&#8217;t really need multi-part items, the only change you&#8217;ll have to make in your code is to subclass from <em>SimpleItemLoader</em> instead of <em>ItemLoader. SimpleItemLoader </em>is an <em>ItemLoader</em> specialized in single-part items that hides all the part-related bits from the API.</p>
<p>The <a href="https://github.com/lucasr/smoothie/blob/master/library/src/org/lucasr/smoothie/ItemLoader.java">updated documentation</a> contains code samples and a more detailed overview of the new API. Grab the <a href="https://github.com/lucasr/smoothie">latest code</a> while it&#8217;s hot. Feedback, bug reports, and patches are all very welcome as usual.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/04/22/multi-part-items-in-smoothie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox for Android&#8217;s UI polishing Hackathon</title>
		<link>http://lucasr.org/2013/04/22/firefox-for-androids-ui-polishing-hackathon/</link>
		<comments>http://lucasr.org/2013/04/22/firefox-for-androids-ui-polishing-hackathon/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 09:51:49 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[call for participation]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[good first bugs]]></category>
		<category><![CDATA[hackathon]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[polishing]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3610</guid>
		<description><![CDATA[We&#8217;ve been discussing the idea of doing periodic topic-oriented hackathons in the front-end team. The idea is simple: pick a topic—a specific part or aspect of the product—and have the whole team focused on it for a couple days. The goal is to bring substantial and fast improvements on specific areas. As an initial experiment, [...]]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve been discussing the idea of doing periodic topic-oriented hackathons in the front-end team. The idea is simple: pick a topic—a specific part or aspect of the product—and have the whole team focused on it for a couple days. The goal is to bring substantial and fast improvements on specific areas.</p>
<p>As an initial experiment, we&#8217;ll be doing the <a href="https://wiki.mozilla.org/Mobile/Hacking/UIPolishingHackathon">first hackathon</a> this week from Wednesday to Friday and we&#8217;re going to focus on UI polishing bugs—those UI papercuts that are not so prominent in isolation but, when fixed en masse, make a whole lot of difference.</p>
<p>It&#8217;s important to have a good list of bugs before we begin. So, you can start nominating Fennec bugs for the hackathon now by tagging them with &#8220;ui-hackathon&#8221;. We&#8217;ll cleanup this list and maybe prioritize them a bit during the planning session on the first day of the hackathon.</p>
<p>As usual, everyone is welcome to participate. You can help us by tagging bugs, or better yet, fixing them. Have a look at the <a href="https://wiki.mozilla.org/Mobile/Hacking/UIPolishingHackathon">wiki page</a> for more details on the agenda.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/04/22/firefox-for-androids-ui-polishing-hackathon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UI improvements in Firefox for Android</title>
		<link>http://lucasr.org/2013/02/25/ui-improvements-in-firefox-for-android/</link>
		<comments>http://lucasr.org/2013/02/25/ui-improvements-in-firefox-for-android/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 18:46:52 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<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[community]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[flat]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[holo]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[twowayview]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3509</guid>
		<description><![CDATA[Now that we&#8217;ve landed all the major changes for our next UI iteration, it&#8217;s probably a good time to spread the word about it and get some more feedback. The goals with these changes are: keeping a clear distinction between different types of tabs; making better use of the screen real estate on different form-factors [...]]]></description>
				<content:encoded><![CDATA[<p>Now that we&#8217;ve landed all the major changes for our next UI iteration, it&#8217;s probably a good time to spread the word about it and get some more feedback.</p>
<p>The goals with these changes are: keeping a clear distinction between different types of tabs; making better use of the screen real estate on different form-factors and orientations; and being more compliant with Android&#8217;s design language. So, what&#8217;s new?</p>
<h2>Tab types</h2>
<p>With the introduction of private browsing support in Firefox 21—now in Aurora—came the need for a clear distinction between regular and private tabs. We&#8217;ve done two UI changes to accomplish that.</p>
<p>First of all, the tabs tray is now divided into sections for each type of tab—regular, private, and remote—so that you always keep things separate and organized. Furthermore, once you select a private tab, the main toolbar becomes dark as a clear sign that you&#8217;re in a different browsing mode.</p>
<h2>Two-way tabs tray</h2>
<p>We now use a horizontal scrolling tabs tray whenever it improves our use of the screen space. This is achieved with a <em>TwoWayView</em>—<a title="Introducing TwoWayView" href="http://lucasr.org/2013/02/21/introducing-twowayview/">announced</a> a few days ago.</p>
<p>On phones, the tabs tray is vertical in portrait mode and horizontal in landscape mode. On tablets, the tabs tray is a vertical scrolling side bar in landscape mode and a horizontal strip in portrait mode. Small tablets (7&#8243; or so) now share the exact same tabs UI than large tablets.</p>
<h2>Holo-ish</h2>
<p>The Firefox UX team has been working on <a href="http://madhava.com/egotism/archive/005060.html">streamlining</a> the Firefox UI across all platforms—both on desktop and mobile. The idea is that Firefox should feel like the same product wherever you use it. Finding the right balance between cross-platform design consistency and native platform compliance can be tricky but I think we&#8217;re getting there.</p>
<p>We&#8217;ve recently landed a new skin for Firefox for Android that is more aligned with Android&#8217;s Holo design language. Almost all textures and gradients were replaced by flat colors giving a much lighter feel to the browser. I love it!</p>
<p>All these UI changes are now available in the <a href="http://nightly.mozilla.org/">Nightly</a> build. Give it a try and let us know what you think—ideally in form of bug reports!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/02/25/ui-improvements-in-firefox-for-android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing TwoWayView</title>
		<link>http://lucasr.org/2013/02/21/introducing-twowayview/</link>
		<comments>http://lucasr.org/2013/02/21/introducing-twowayview/#comments</comments>
		<pubDate>Thu, 21 Feb 2013 14:47:33 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[abslistview]]></category>
		<category><![CDATA[adapterview]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[listview]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[scrolling]]></category>
		<category><![CDATA[twowayview]]></category>
		<category><![CDATA[view]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3474</guid>
		<description><![CDATA[We&#8217;ve been working hard on a new iteration of the tabs UI for Firefox for Android. The new UI includes a horizontal scrolling tabs tray to make better use of the screen real estate on phones and tablets in different orientations. Unfortunately, the Android platform doesn&#8217;t provide any AdapterView with horizontal scrolling support nor could [...]]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve been working hard on a new iteration of the tabs UI for Firefox for Android. The new UI includes a horizontal scrolling tabs tray to make better use of the screen real estate on phones and tablets in different orientations.</p>
<p>Unfortunately, the Android platform doesn&#8217;t provide any <a href="http://developer.android.com/reference/android/widget/AdapterView.html"><em>AdapterView</em></a> with horizontal scrolling support nor could I find any non-naive open source implementation out there.  Enter <a href="https://github.com/lucasr/twoway-view">TwoWayView</a>.</p>
<p><em>TwoWayView</em> is an <em>AdapterView</em> that can be scrolled either vertically or horizontally. Just set the orientation of the view and it will do the right thing for you. In its current state, it supports all the usual <em>AdapterView</em> APIs (selection handling, adapter, item click and long click listener, etc), view recycling, list selector, choice mode (single and multiple), edge glow, and scrollbars. Have a look at the <a href="https://github.com/lucasr/twoway-view/tree/master/sample">sample app</a> to see it in action.</p>
<p>The code is based on various bits and pieces of Android&#8217;s <em>AdapterView</em>, <em>AbsListView,</em> and <em>ListView</em>. It uses the necessary wrappers from Android&#8217;s Support Library in order to keep backwards compatibility.</p>
<p>The big missing features right now are focus handling, keyboard navigation, and accessibility. I&#8217;ll be working on those in the next few weeks besides all the necessary bug fixes—I don&#8217;t recommend using <em>TwoWayView</em> on production code just yet.</p>
<p>For now, feedback, bug reports, and patches are very welcome! Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/02/21/introducing-twowayview/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox for Android Talk in London</title>
		<link>http://lucasr.org/2013/02/15/firefox-for-android-talk-in-london/</link>
		<comments>http://lucasr.org/2013/02/15/firefox-for-android-talk-in-london/#comments</comments>
		<pubDate>Fri, 15 Feb 2013 17:13:13 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<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 participation]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gecko]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[mozldn]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3463</guid>
		<description><![CDATA[Chris and I will be giving a talk about Firefox for Android next Friday on the 22nd of February at the London Mozilla Space. Join us to learn a bit more about the current state of Firefox for Android and our plans for 2013. We&#8217;ll talk in detail about how we run Gecko on Android, [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://chrislord.net/">Chris</a> and I will be giving a talk about <a href="http://www.mozilla.org/firefox/mobile/">Firefox for Android</a> next Friday on the 22nd of February at the London Mozilla Space. Join us to learn a bit more about the current state of Firefox for Android and our plans for 2013.</p>
<p>We&#8217;ll talk in detail about how we run <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Gecko">Gecko</a> on Android, the past and future UI iterations, our graphics/rendering platform, and more!</p>
<p>The schedule is pretty simple. The doors will be open at 18h30 and we&#8217;ll start at 19h. The talk will be followed by free drinks and pizza in our community space. Interested? Register now at the <a href="http://firefoxandroid.eventbrite.com/">event page.</a> Hope to see you next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/02/15/firefox-for-android-talk-in-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Blog Design</title>
		<link>http://lucasr.org/2013/01/25/new-design/</link>
		<comments>http://lucasr.org/2013/01/25/new-design/#comments</comments>
		<pubDate>Fri, 25 Jan 2013 12:18:18 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[37signals]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[new year]]></category>
		<category><![CDATA[opoloo]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[picturefill]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[readability]]></category>
		<category><![CDATA[signal-vs-noise]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3419</guid>
		<description><![CDATA[New year, time for a long overdue design refresh on my blog! The new WordPress theme that I&#8217;ve been slowly working on is now live. Here are some quick notes about the making of it. Design The main goal of the new design is to bring focus to the content, nothing else. My main source [...]]]></description>
				<content:encoded><![CDATA[<p>New year, time for a long overdue design refresh on my blog! The new WordPress theme that I&#8217;ve been slowly working on is now live. Here are some quick notes about the making of it.</p>
<h2>Design</h2>
<p>The main goal of the new design is to bring focus to the content, nothing else. My main source of inspiration was definitely Opoloo&#8217;s <a href="http://blog.opoloo.com/">Squirel Park</a> blog. You&#8217;ll notice quite a few similarities in terms of content structure. Other relevant sources: <a href="http://37signals.com/svn/">Signal vs. Noise</a>, <a href="http://simonfosterdesign.com/blog/">Simon Foster</a>, and <a href="http://ianstormtaylor.com/">Ian Storm Taylor</a>.</p>
<h2>Typography</h2>
<p>The new theme uses <a href="https://typekit.com/fonts/ff-tisa-web-pro">FF Tisa Web Pro</a>, <a href="https://typekit.com/fonts/ff-tisa-sans-web-pro">FF Tisa Sans Web Pro</a>, and <a href="https://typekit.com/fonts/futura-pt">Futura PT.</a> Tisa has a subtle modern character without getting on the way. I love it. The fonts are served by <a href="https://typekit.com">Typekit</a>. Their Personal plan is not that expensive and I got to choose the fonts from a fairly large library.</p>
<h2>Implementation</h2>
<p>My previous WordPress theme had some serious issues: it was full of weird hacks, looked broken on certain browsers, and wasn&#8217;t responsive at all. The new theme is based on <a href="http://twitter.github.com/bootstrap/">Bootstrap</a> and adapts the content for different screen sizes nicely. Responsive images are implemented using <a href="https://github.com/scottjehl/picturefill">picturefill</a>. Some DB caching is done on the front page using WordPress&#8217; <a href="http://codex.wordpress.org/Transients_API">Transient API</a>. I&#8217;m using the <a href="http://wordpress.org/extend/plugins/hyper-cache/">Hypercache</a> plugin for an extra performance boost.</p>
<h2>Comments</h2>
<p>I decided to disable comments as part of the switch to the new theme. I usually don&#8217;t get a lot of value from them anyway. Also, I don&#8217;t feel like spending any time moderating comments anymore. You can always find me on <a href="https://twitter.com/lucasratmundo">Twitter</a> and <a href="http://gplus.to/lucasr">Google+</a> if you got something to add or discuss.</p>
<p>The source code of the new theme is available on <a href="https://github.com/lucasr/wp-lucasr">Github</a>. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/01/25/new-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Featured bug #2 in Firefox for Android</title>
		<link>http://lucasr.org/2013/01/23/featured-bug-2-in-firefox-for-android-2/</link>
		<comments>http://lucasr.org/2013/01/23/featured-bug-2-in-firefox-for-android-2/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 21:34:34 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[call for participation]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3280</guid>
		<description><![CDATA[Before bringing up the next featured bug, it&#8217;s probably a good time for a quick update on the state of Firefox for Android&#8217;s coding community. Long story short: we have never had as many coding contributors as we have now! Here&#8217;s what some of them have been working on. Sriram Raghuraman implemented a &#8220;set wallpaper&#8221; context [...]]]></description>
				<content:encoded><![CDATA[<p>Before bringing up the next <a href="http://lucasr.org/2012/12/07/featured-bug-1-in-firefox-for-android/">featured bug</a>, it&#8217;s probably a good time for a quick update on the state of Firefox for Android&#8217;s coding community. Long story short: we have never had as many coding contributors as we have now! Here&#8217;s what some of them have been working on.</p>
<p>Sriram Raghuraman implemented a &#8220;set wallpaper&#8221; context menu option for images in web content. Greg Roodt added mouse wheel scrolling support. Mark Capella fixed a handful of bugs in different parts of our UI. Alex Nagacevschi implemented preliminary support for RTL content in Reader Mode. Ian Patterson fixed some weirdness in how downloaded images are named. Ravisankar Sivasubramaniam fixed  a bug on our input handling when switching tabs. And the <a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=FIXED%20sw%3Amentor%20prod%3Aandroid;list_id=5446532">list continues</a>!</p>
<p>Want to have your name on this list? Here you go: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807990">bug 807990</a> is our second featured bug. It&#8217;s about a small but very useful feature in Reader Mode: adding a double-tap gesture to scroll the article a &#8220;screenful&#8221; distance. You&#8217;ll be mentored by yours truly. I&#8217;ve just added some background information to the bug report to get you started. Comment on the bug to take it!</p>
<p>I strongly recommend joining us on IRC (irc.mozilla.org #mobile) to get some support on <a href="https://wiki.mozilla.org/Mobile/Fennec/Android#Building_Fennec">setting up your development environment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/01/23/featured-bug-2-in-firefox-for-android-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Smoothie</title>
		<link>http://lucasr.org/2013/01/06/introducing-smoothie/</link>
		<comments>http://lucasr.org/2013/01/06/introducing-smoothie/#comments</comments>
		<pubDate>Sun, 06 Jan 2013 23:48:43 +0000</pubDate>
		<dc:creator>Lucas Rocha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[abslistview]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[async]]></category>
		<category><![CDATA[call for feedback]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[listview]]></category>
		<category><![CDATA[loading]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[pattrn]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[scrolling]]></category>
		<category><![CDATA[smoother]]></category>
		<category><![CDATA[smoothie]]></category>

		<guid isPermaLink="false">http://lucasr.org/?p=3236</guid>
		<description><![CDATA[A big part of Pattrn&#8217;s UI is about scrolling through lists of images from the cloud. So I spent a quite some time tuning it to ensure that the scrolling experience is as smooth as possible. In the past few weeks, I&#8217;ve been working on factoring out this code into a tiny library called Smoothie. [...]]]></description>
				<content:encoded><![CDATA[<p>A big part of <a href="http://pattrnapp.com">Pattrn&#8217;</a>s UI is about scrolling through lists of images from the cloud. So I spent a quite some time tuning it to ensure that the scrolling experience is as smooth as possible. In the past few weeks, I&#8217;ve been working on factoring out this code into a tiny library called <a href="https://github.com/lucasr/smoothie">Smoothie</a>.</p>
<p>Smoothie provides a simple API to load <em>ListView</em>/<em>GridView</em> items asynchronously, off the UI thread. It does all the obvious things you&#8217;d expect—loading items as they become visible, cancelling item requests for recycled views, etc. But it does a bit more than that.</p>
<p>Smoothie is gesture-aware: it will avoid wasting item requests after a fling gesture and enable incremental item loading while you scroll the list with finger down. Furthermore, it supports offscreen item preloading to reduce the number of placeholder-type items as you scroll. Under the hood, Smoothie uses a thread pool executor backed by blocking queue with dynamic priorities. Offscreen item requests will dynamically get higher priority as they become visible on screen while scrolling.</p>
<p>So, how do you use it? It&#8217;s easy:</p>
<ol>
<li>Add an <em><a href="https://github.com/lucasr/smoothie/blob/master/library/src/org/lucasr/smoothie/AsyncListView.java">AsyncListView</a></em> or <em><a href="https://github.com/lucasr/smoothie/blob/master/library/src/org/lucasr/smoothie/AsyncGridView.java">AsyncGridView</a></em> to your layout. They only add one extra setter method to their respective parent classes.</li>
<li>Implement an <em><a href="https://github.com/lucasr/smoothie/blob/master/library/src/org/lucasr/smoothie/ItemLoader.java">ItemLoader</a></em> with your app-specific logic for loading and displaying items. You&#8217;ll have to override four methods: <em>getItemParams()</em>, <em>loadItem()</em>, <em>loadItemFromMemory()</em>, and <em>displayItem()</em>.</li>
<li>Build an <em><a href="https://github.com/lucasr/smoothie/blob/master/library/src/org/lucasr/smoothie/ItemManager.java">ItemManager</a></em> with your <em>ItemLoader</em> and set it on the target <em>AsyncListView</em> or <em>AsyncGridView</em>.</li>
</ol>
<p>Think of Smoothie as a slim backbone for your <em>ListView</em>/<em>GridView</em>&#8216;s asynchronous loading. You can easily hook up your own image loading/caching framework in it. For instance, one of the sample apps implements an <a href="https://github.com/lucasr/smoothie/blob/master/samples/bitmap-cache/src/org/lucasr/smoothie/samples/bitmapcache/PatternsListLoader.java"><em>ItemLoader</em></a> backed by <a href="https://github.com/chrisbanes/Android-BitmapCache">Android-BitmapCache</a> with a simple fade-in animation to display images.</p>
<p>Besides the API docs in the <a href="https://github.com/lucasr/smoothie/tree/master/library">code</a>, have a look at the <a href="https://github.com/lucasr/smoothie/tree/master/samples/">sample apps</a> to get a better idea of how to use the library. Keep in mind that the API is not final yet. Feedback is very welcome! Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucasr.org/2013/01/06/introducing-smoothie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
