<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Zeno Rocha</title>
  <link rel="alternate" href="http://www.liferay.com/web/zeno.rocha/blog/-/blogs/rss" />
  <subtitle>Zeno Rocha</subtitle>
  <entry>
    <title>Let's build a better documentation for AlloyUI?</title>
    <link rel="alternate" href="http://www.liferay.com/web/zeno.rocha/blog/-/blogs/let-s-build-a-better-documentation-for-alloyui-" />
    <author>
      <name>Zeno Rocha</name>
    </author>
    <id>http://www.liferay.com/web/zeno.rocha/blog/-/blogs/let-s-build-a-better-documentation-for-alloyui-</id>
    <updated>2013-05-31T22:39:32Z</updated>
    <published>2013-05-22T15:19:59Z</published>
    <summary type="html">&lt;p&gt;
	When I first met the AlloyUI project was a little bit hard to understand all the functionalities it provides without looking to the source code. Then we made a &lt;a href="http://alloyui.com/"&gt;new website&lt;/a&gt; that shows how can you use each component with some code snippets.&lt;/p&gt;
&lt;script src="https://gist.github.com/zenorocha/5628393.js"&gt;&lt;/script&gt;
&lt;p&gt;
	That was great, but how can you check which are the configuration options available for each component? For instance, you know that there are options like &lt;code&gt;contentBox&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt; and &lt;code&gt;width&lt;/code&gt; on Carousel, but they are not the only one, there are plenty more configurations that you could use.&lt;/p&gt;
&lt;p&gt;
	That's why we have the &lt;a href="http://alloyui.com/api"&gt;API Docs&lt;/a&gt;, that is generated based on the source code, pretty similar to &lt;a href="http://en.wikipedia.org/wiki/Javadoc"&gt;JavaDoc&lt;/a&gt;. The only problem was: most part of the source code doesn't have documentation at all, so the &lt;a href="http://alloyui.com/api"&gt;API Docs&lt;/a&gt; became outdated :(&lt;/p&gt;
&lt;p&gt;
	We had to change that, so after a couple days of hard work we added the necessary markup for documentation on all attributes, properties and methods.&amp;nbsp;So now we are able to document, we just need to actually explain how each part of the code works.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://github.com/eduardolundgren/alloy-ui/pull/190/files"&gt;&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/merged.jpg/379e3d8e-a7dd-420e-bef9-15c3dc9af6a2?t=1369242024046" style="width: 700.0px;height: 140.0px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;
	&lt;span style="font-size: 28.0px;"&gt;Current Status&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
	At this moment, there's a total of &lt;strong&gt;109&lt;/strong&gt; JavaScript files on AlloyUI core.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;29&lt;/strong&gt; are documented;
	&lt;li&gt;
		&lt;strong&gt;64&lt;/strong&gt; needs to be documented;
	&lt;li&gt;
		&lt;strong&gt;16&lt;/strong&gt; can't be documented.
&lt;/ul&gt;
&lt;p&gt;
	To track what files are documented or not, we made public this &lt;a href="https://github.com/liferay/alloy-ui/wiki/API-Docs-Status"&gt;status list&lt;/a&gt; on Github.&amp;nbsp;If you want to join us on this quest to make AlloyUI better, make sure to check this list to find out what needs to be done.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://github.com/liferay/alloy-ui/wiki/API-Docs-Status"&gt;&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/Screen-Shot-2013-05-21-at-9.34.06-PM.jpg/d656e5bd-90ff-456b-8e77-a1c544d9b0cd?t=1369242082859" style="width: 700.0px;height: 711.0px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;
	&lt;span style="font-size: 28.0px;"&gt;Contributing&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
	Let's say you want to help and just discovered that &lt;code&gt;aui-autocomplete.js&lt;/code&gt; needs documentation. If you navigate through the code you'll see a lot of attributes, properties or methods that doesn't have description yet, for example:&lt;/p&gt;
&lt;script src="https://gist.github.com/zenorocha/5624504.js"&gt;&lt;/script&gt;
&lt;p&gt;
	All you need to do is understand what that piece of code stands for, explain it and send a pull request :)&lt;/p&gt;
&lt;h2&gt;
	&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;
	&lt;span style="font-size: 28.0px;"&gt;Bonus&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
	Additionally, if you have &lt;a href="https://github.com/liferay/yogi-alloy"&gt;Yogi Alloy&lt;/a&gt; installed and want to check how the documentation will look in the &lt;a href="http://alloyui.com/api"&gt;website&lt;/a&gt;, you can run &lt;code&gt;ya api-watch&lt;/code&gt; to generate the API Docs locally and watch for any changes.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/api-watch.jpg/ba7a1700-d4b8-49b2-9fc1-aa71ae52e8f5?t=1369242116186" style="width: 700.0px;height: 429.0px;"&gt;&lt;/p&gt;
&lt;h2&gt;
	&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;
	&lt;span style="font-size: 28.0px;line-height: 1.125;font-weight: normal;"&gt;New Theme&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
	Together with all those new things, we're also introducing today a new theme for API Docs! Forget the old one:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/old-theme.png/c374401d-7cc8-4161-a9c2-ebfc0d6b87a4?t=1370026281041"&gt;&lt;/p&gt;
&lt;p&gt;
	And start using the &lt;a href="http://alloyui.com/api/"&gt;new one&lt;/a&gt; today!&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/new-theme.png/3a8bd023-07e7-4819-b057-7bae4477b980?t=1370026117535" style="width: 700.0px;height: 375.0px;"&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;span style="font-size: 28.0px;line-height: 1.2;"&gt;Conclusion&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
	This task can't be done by a single person, there's a lot of code to document and we need your help. Here, at Liferay Brazil, we started this thing called Daily Docs, so everyday at 5pm an alarm rings and we need to stop everything to spend 10 minutes improving the documentation of a certain component. Those kind of initiatives could be very helpful, so if you care about this project, please join us :)&lt;/p&gt;</summary>
    <dc:creator>Zeno Rocha</dc:creator>
    <dc:date>2013-05-22T15:19:59Z</dc:date>
  </entry>
  <entry>
    <title>AlloyUI and the importance of CDN</title>
    <link rel="alternate" href="http://www.liferay.com/web/zeno.rocha/blog/-/blogs/alloyui-and-the-importance-of-cdn" />
    <author>
      <name>Zeno Rocha</name>
    </author>
    <id>http://www.liferay.com/web/zeno.rocha/blog/-/blogs/alloyui-and-the-importance-of-cdn</id>
    <updated>2013-03-04T18:27:21Z</updated>
    <published>2013-03-04T18:18:22Z</published>
    <summary type="html">&lt;p&gt;
	Some weeks ago we announced the preview release of &lt;a href="http://alloyui.com"&gt;AlloyUI 2.0&lt;/a&gt;. One of the cool things about it is that now we have a pretty new &lt;a href="http://en.wikipedia.org/wiki/Content_delivery_network"&gt;CDN (Content Delivery Network)&lt;/a&gt;. So instead of downloading AlloyUI to use in your local environment, you just to need copy and paste this line of code and start using it.&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;	&amp;lt;script src=&amp;quot;http://cdn.alloyui.com/2.0.0pr2/aui/aui-min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
	But it was only available for AlloyUI 2.0, which is not integrated with Liferay yet, then Liferay community wouldn't benefit from it.&lt;/p&gt;
&lt;p&gt;
	That's why today we have some news to share, all versions of AlloyUI are now available on CDN to use in production or to download as a zip file \o/&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/1.0.3/aui/aui-min.js"&gt;Version 1.0.3&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/1.0.3.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/1.5.0/aui/aui-min.js"&gt;Version 1.5.0&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/1.5.0.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/1.5.1/aui/aui-min.js"&gt;Version 1.5.1&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/1.5.1.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/1.6.0/aui/aui-min.js"&gt;Version 1.6.0&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/1.6.0.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/1.6.1/aui/aui-min.js"&gt;Version 1.6.1&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/1.6.1.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/1.7.0/aui/aui-min.js"&gt;Version 1.7.0&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/1.7.0.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/2.0.0pr1/aui/aui-min.js"&gt;Version 2.0.0pr1&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/2.0.0pr1.zip"&gt;ZIP&lt;/a&gt;
	&lt;li&gt;
		&lt;a href="http://cdn.alloyui.com/2.0.0pr2/aui/aui-min.js"&gt;Version 2.0.0pr2&lt;/a&gt; ~ &lt;a href="https://github.com/liferay/alloy-ui/archive/2.0.0pr2.zip"&gt;ZIP&lt;/a&gt;
&lt;/ul&gt;
&lt;p&gt;
	&lt;em&gt;PS: &lt;a href="https://github.com/liferay/alloy-ui/wiki/Liferay-Integration"&gt;Check this table&lt;/a&gt; if you don't know which version is being used by Liferay.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;
	Why it's so important to use a file hosted on a CDN?&lt;/h2&gt;
&lt;p&gt;
	Basically for performance improvements, we'll dig into some of them.&lt;/p&gt;
&lt;h3&gt;
	&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
	Decrease latency&lt;/h3&gt;
&lt;p&gt;
	Let's say you are in China and your server is in Los Angeles. When you load a file the browsers sends a HTTP request that will go across the globe until reach your server and, as you can see, it takes time.&lt;/p&gt;
&lt;p&gt;
	However if this file is hosted on a CDN it will be distributed across many different servers in the world. So when you make a request, it will look for the nearest server, which decreases latency time a lot.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/1.jpeg/620f5115-ddad-4355-92e3-75d77cb9d5f9?t=1362421361950" style="width: 700.0px;height: 300.0px;"&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;em&gt;Wikipedia: (Left) Traditional scheme of distribution - (Right) CDN scheme of distribution&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
	&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
	More parallel downloads&lt;/h3&gt;
&lt;p&gt;
	Browsers can't handle too many parallel downloads per domain.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/1.jpg/a3b4fd89-50a4-4877-bbae-1a7b9d74ca2e?t=1362421179742" style="width: 700.0px;height: 279.0px;"&gt;&lt;/p&gt;
&lt;p&gt;
	That's why hosting files in different domains is a good performance tip.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/2.jpg/17f8f56e-12bf-4f83-a6a2-f1f224985bf1?t=1362421254877" style="width: 700.0px;height: 278.0px;"&gt;&lt;/p&gt;
&lt;h3&gt;
	&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
	Cache&lt;/h3&gt;
&lt;p&gt;
	Let's say you visited a website that uses AlloyUI hosted on CDN, as soon as you load it your browser will automatically cache it in your machine. Then if you visit another website that uses AlloyUI too, you don't need to download all those files again because you already have cached them.&lt;/p&gt;
&lt;h2&gt;
	&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;
	What's the real benefit?&lt;/h2&gt;
&lt;p&gt;
	Let's try those performance improvements in real life. My experiment will load the exact same file using a CDN and don't using it.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Didn't use CDN:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/11.jpeg/080e2016-72b9-401d-a172-e64cabb3b3c8?t=1362421368563" style="width: 700.0px;height: 55.0px;"&gt;&lt;/p&gt;
&lt;p&gt;
	When you load &lt;a href="http://js.liferay.com/aui/2.0.0pr2/aui/aui-min.js"&gt;this file&lt;/a&gt;, that is not hosted on a CDN with a 10mb internet connection, you take 1.27 seconds with 404ms of latency.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Use CDN:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.liferay.com/documents/14644916/0/12.jpeg/acfbd679-9cf3-4d87-9fac-ad1682ac2497?t=1362421375217" style="width: 700.0px;height: 55.0px;"&gt;&lt;/p&gt;
&lt;p&gt;
	But when you load &lt;a href="http://cdn.alloyui.com/2.0.0pr2/aui/aui-min.js"&gt;this file&lt;/a&gt;, that is now hosted on a CDN with the same internet connection, you take 314ms with 155ms of latency.&lt;/p&gt;
&lt;p&gt;
	That's a 75% decrease and this is only one file!&lt;/p&gt;
&lt;p&gt;
	Now imagine a lot of modules and its dependencies being loaded, it will cause a significant difference.&lt;/p&gt;
&lt;h2&gt;
	&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;
	Conclusion&lt;/h2&gt;
&lt;p&gt;
	And that's all folks! If you have any questions please comment below :)&lt;/p&gt;</summary>
    <dc:creator>Zeno Rocha</dc:creator>
    <dc:date>2013-03-04T18:18:22Z</dc:date>
  </entry>
  <entry>
    <title>I'm the #50 most active contributor on Github, so what?</title>
    <link rel="alternate" href="http://www.liferay.com/web/zeno.rocha/blog/-/blogs/i-m-the-50-most-active-contributor-on-github-so-what-" />
    <author>
      <name>Zeno Rocha</name>
    </author>
    <id>http://www.liferay.com/web/zeno.rocha/blog/-/blogs/i-m-the-50-most-active-contributor-on-github-so-what-</id>
    <updated>2013-01-09T22:15:27Z</updated>
    <published>2013-01-09T16:48:46Z</published>
    <summary type="html">&lt;p&gt;
	&lt;img alt="OctoParty" src="http://zenorocha.com/assets/img/posts/octoparty.jpg"&gt;&lt;/p&gt;
&lt;p&gt;
	Today, Paul Miller released a nice list of the &amp;rdquo;&lt;a href="https://gist.github.com/2657075"&gt;Most active GitHub users&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;
	People started to talk about it and suddenly I received a lot of congratulations messages for being the #50 most active contributor on Github.&lt;/p&gt;
&lt;p&gt;
	I was pretty happy because this is a chance to show how Liferay employees are strong in the open source community. But I was mostly surprised, since there&amp;rsquo;s almost 2 million users on Github and even because &lt;a href="http://en.wikipedia.org/wiki/Linus_Torvalds"&gt;Linus Torvalds&lt;/a&gt;, creator of Linux, was behind me!&lt;/p&gt;
&lt;p&gt;
	That was pretty nice for my ego, but let me explain what this ranking means for me.&lt;/p&gt;
&lt;h2 id="quantity__quality"&gt;
	Quantity != Quality&lt;/h2&gt;
&lt;p&gt;
	The first thing is, I&amp;rsquo;m not better than anyone.&lt;/p&gt;
&lt;p&gt;
	Just because I made 100 commits more than Linus, it doesn&amp;rsquo;t make me a better contributor than him. Actually I could do 10,000 commits more than him and I would still not being a better contributor.&lt;/p&gt;
&lt;p&gt;
	The only thing that these numbers shows is: those people on the list put a lot of effort on open source using Github.&lt;/p&gt;
&lt;p&gt;
	And this is true, I've been working hard on the new AlloyUI&amp;nbsp;and many other projects out there.&lt;/p&gt;
&lt;h2 id="people_just_dont_get_commits"&gt;
	People just don&amp;rsquo;t get &amp;ldquo;commits&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;
	We all have a lot of tasks to do daily, so how to deal with them using Git?&lt;/p&gt;
&lt;p&gt;
	Let&amp;rsquo;s say you have a task called &amp;ldquo;Redesign my blog&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;
	Some people start coding it, making a lot of changes and when it&amp;rsquo;s finished: &lt;code&gt;git add . &amp;amp;&amp;amp; git commit -m &amp;quot;Redesigned my blog&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
	This is so wrong. What happens if you want to revert just a single improvement that was not so good there? You&amp;rsquo;ll need to revert the whole commit.&lt;/p&gt;
&lt;p&gt;
	That&amp;rsquo;s why you have to break your tasks into sub tasks. It seems like a basic thing, but people just don&amp;rsquo;t do it.&lt;/p&gt;
&lt;h2 id="1st_place"&gt;
	1st place&lt;/h2&gt;
&lt;p&gt;
	If I had to guess who&amp;rsquo;s going to be in the top of this list, that would be TJ (&lt;a href="http://github.com/visionmedia"&gt;@visionmedia&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;
	He&amp;rsquo;s doing an incredible job in the NodeJS community, so congratulations man, you deserve it :)&lt;/p&gt;</summary>
    <dc:creator>Zeno Rocha</dc:creator>
    <dc:date>2013-01-09T16:48:46Z</dc:date>
  </entry>
</feed>

