<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>José Mota - Blog</title>
    <link>http://blog.josemota.net/</link>
    <atom:link href="http://blog.josemota.net/rss.xml" rel="self" type="application/rss+xml" />
    <description>Thoughts on Ruby, Javascript and acceptance.</description>
    <language>en-us</language>
    <pubDate>Thu, 13 Dec 2012 20:08:22 +0000</pubDate>
    <lastBuildDate>Thu, 13 Dec 2012 20:08:22 +0000</lastBuildDate>

    
    <item>
      <title>Your Ember app is a click away from home</title>
      <link>http://coyled.com/2012/12/13/your-ember-app-is-a-click-away-from-home.html</link>
      <pubDate>Thu, 13 Dec 2012 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/12/13/your-ember-app-is-a-click-away-from-home</guid>
      <description>&lt;p&gt;I've been having some time to explore Ember.js lately and I wanted to learn by
doing instead of just reading about it. So bear with me as this might probably
require some updating in the future. This is a result of trial and error and I
thought of making the Ember learning curve a little easier and share this tip.&lt;/p&gt;

&lt;p&gt;So I've been trying to build a simple application that manages pictures. I
started the good ol' fashioned way of manually calling all the scripts and
declaring all the templates from the index page, for argument's sake. I would
much rather have something like
&lt;a href=&quot;http://github.com/radiumsoftware/iridium&quot;&gt;Iridium&lt;/a&gt; to help with my development
process but I had faced some trouble with it before.&lt;/p&gt;

&lt;h2&gt;My first step: list of pictures&lt;/h2&gt;

&lt;p&gt;The first thing that came to my mind was to have a list of pictures and allow
the user to add a new one by clicking on a link that would transition to
something like &lt;code&gt;/pictures/new&lt;/code&gt;. In the pictures list template I would have
something like:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Images&lt;span class=&quot;nt&quot;&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
{{#each image in controller}}
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;li&amp;gt;&lt;/span&gt;{{image.title}}&lt;span class=&quot;nt&quot;&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
{{/each}}
&lt;span class=&quot;nt&quot;&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;a&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;action&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;newImage&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;}}&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;New image&lt;span class=&quot;nt&quot;&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;The link in the paragraph goes to the route transition in &quot;root&quot;. Let me give
you the router so you can better understand what I'm saying:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;Exhibit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Router&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Router&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;route&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;connectOutlets&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;router&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;router&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;applicationController&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;connectOutlet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;images&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Exhibit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;newImage&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;transitionTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;newImage&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;newImage&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;// ...&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Inside the &lt;code&gt;index&lt;/code&gt; route, the &lt;code&gt;newImage&lt;/code&gt; path points to the &lt;code&gt;newImage&lt;/code&gt; route
which will print a form.&lt;/p&gt;

&lt;h2&gt;The challenge: Going back home&lt;/h2&gt;

&lt;p&gt;At this point in time, I was curious as to the possibility of aborting the
process of creating a new image and simply going back home and start over. As I
was learning, I realized that actions in the templates point to routes in the
router as a way to acknowledge an application state change. I faced the
challenge of wanting to leave the form and go back and not being able to
do it.&lt;/p&gt;

&lt;p&gt;I recalled that actions should be defined in the state (the route) the
application is in. Clicking on the &lt;code&gt;newImage&lt;/code&gt; link transitions my app to the
&lt;code&gt;root.newImage&lt;/code&gt; state. So I thought of doing something like this in the router:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;Exhibit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Router&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Router&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;// ...&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;newImage&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;route&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;/new&amp;quot;&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;connectOutlets&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;router&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;c1&quot;&gt;// connect the outlet&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;===&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;goHome&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;transitionTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;root.index&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This looks rather trivial and probably won't make the point alone. What I
thought at the time when I wrote this was &lt;em&gt;should I really need to write this
transition in every single route?&lt;/em&gt; After all, going back home should be
possible for every action, every state in the app.&lt;/p&gt;

&lt;h2&gt;The solution: Use the state machine&lt;/h2&gt;

&lt;p&gt;After some trial and error, I ended up with this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;Exhibit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Router&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Router&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt;  &lt;span class=&quot;nx&quot;&gt;goHome&lt;/span&gt;   &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;transitionTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;root.index&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;index&lt;/span&gt;    &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* ... */&lt;/span&gt;  &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;newImage&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Route&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* ... */&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Since the router is a state machine, when defining the &lt;code&gt;root&lt;/code&gt; route, I'm able
to add state changes there that will be inherited for every sibling state in
that tree. Both &lt;code&gt;index&lt;/code&gt; and &lt;code&gt;newImage&lt;/code&gt; and all the routes that are defined in
&lt;code&gt;root&lt;/code&gt; will have this state change available.&lt;/p&gt;

&lt;p&gt;This was a finding for me as I have never grasped the concept of state machines
like this.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Announcing a code retreat in Lisbon</title>
      <link>http://coyled.com/2012/10/25/code-retreat-lisbon.html</link>
      <pubDate>Thu, 25 Oct 2012 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/10/25/code-retreat-lisbon</guid>
      <description>&lt;p&gt;I'm announcing the second portuguese code retreat! It's going to be awesome.
The first edition was back in FEUP @ Oporto and the participants absolutely
loved it, it was awesome to see everyone excited around the &lt;a href=&quot;http://en.wikipedia.org/wiki/Conway's_Game_of_Life&quot;&gt;Conway's Game of
Life&lt;/a&gt;. I was amazed at the
feedback they gave the facilitation commitee.&lt;/p&gt;

&lt;p&gt;So this second edition of the event will be help in &lt;a href=&quot;http://goo.gl/maps/VehEi&quot;&gt;ISCTE-IUL,
Lisbon&lt;/a&gt;, in November 17th 2012, at 10am. You might
want to take a look at &lt;a href=&quot;http://agilept.org/meetups/coderetreatlisbon&quot;&gt;the details
page&lt;/a&gt; to know what it will be all
about. To sign up, you have two choices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit the &lt;a href=&quot;https://plus.google.com/events/cmdlnn2a48arb43cbp1ut4epc1s&quot;&gt;event's Google+
page&lt;/a&gt; and sign
up;&lt;/li&gt;
&lt;li&gt;Send me &lt;a href=&quot;mailto:jose@josemota.net?subject=Sign%20up%20for%20Code%20Retreat&quot;&gt;an
email&lt;/a&gt; or
&lt;a href=&quot;http://twitter.com/josemotanet&quot;&gt;tweet me&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;I want to thank the guys over at &lt;a href=&quot;http://www.facebook.com/getbusii&quot;&gt;BUSII&lt;/a&gt; and
&lt;a href=&quot;http://ieee.iscte-iul.pt/&quot;&gt;IEEE-IUL&lt;/a&gt; for supporting the event. Please get back
in touch with me if you need more information on the event or any help I might
be able to provide. I hope to see you there!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Game on: Backbone and Ember</title>
      <link>http://coyled.com/2012/09/01/game-on-backbone-and-ember.html</link>
      <pubDate>Sat, 01 Sep 2012 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/09/01/game-on-backbone-and-ember</guid>
      <description>&lt;p&gt;I was invited by the Tuts+ network to write a blog post on the differences
between Backbone and Ember and how you should approach your learning of
Javascript tools. I hope you enjoy the read, would love some feedback on your
part.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://net.tutsplus.com/tutorials/javascript-ajax/game-on-backbone-and-ember/&quot;&gt;Game on: Backbone and
Ember&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The quest on Ember.js</title>
      <link>http://coyled.com/2012/08/16/the-quest-on-emberjs.html</link>
      <pubDate>Thu, 16 Aug 2012 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/08/16/the-quest-on-emberjs</guid>
      <description>&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;TL;DR&lt;/code&gt; — I'm considering starting a series of screencasts on how to use
  Ember. Will you help me? Check the latest section at the bottom.&lt;/p&gt;

&lt;p&gt;Disclaimer — I have only begun looking into Ember a couple of days and
  shamefully haven't typed any code yet. This writing invites feedback and
  enlightenment.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I've been suggested &lt;a href=&quot;http://emberjs.com&quot;&gt;Ember&lt;/a&gt; as a strong alternative to
&lt;a href=&quot;http://backbonejs.org&quot;&gt;Backbone&lt;/a&gt; in order to build heavy client-side apps. I
tried Backbone in my spare time and it's awesome. However, I never had the
chance to use it in a real-life situation so I never really put it to a
stretch.&lt;/p&gt;

&lt;p&gt;Lately I've been watching some videos on Ember and reading the guides over in
the tool's website and I must say I'm intrigued. Unlike Backbone – which is
more of a library –, Ember stands as a full MVC Javascript framework, and when
I say &lt;em&gt;full&lt;/em&gt;, I mean it covers all the letters in the acronym and it does the
job in a slightly different way than we're used to. I'm writing down the sum of
my learning experience thus far so bear with me. : )&lt;/p&gt;

&lt;h2&gt;Controller: Stateless vs. Stateful&lt;/h2&gt;

&lt;p&gt;All the hype on MVC is scoped to server-side, stateless frameworks like Rails,
Spring, Laravel, Play!, Django and &lt;a href=&quot;http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Comparison_of_Features&quot;&gt;many
more&lt;/a&gt;.
The &lt;code&gt;HTTP&lt;/code&gt; protocol's nature constrains the very controller's lifecycle and
purpose. A controller mediates the client and the server, providing a
representation of data that's stored in the latter and controlling the entire
logic of the application for a particular request.&lt;/p&gt;

&lt;p&gt;If you're to use Ember.js, you need to purge that idea off your head because an
Ember controller is not sovereign in a request scope. In fact there is no
single request anymore, there's a bunch of tiny little controllers in a whole
ecosystem that is your app which happens to be enclosed in a single page. These
controllers live as long as you have the app running so they kind of become
stateful and are used more than once during their lifecycle.&lt;/p&gt;

&lt;h2&gt;Model: Persistence&lt;/h2&gt;

&lt;p&gt;As of a regular webapp, requests are made to the server and content is sent
back to the browser. We send forms to change the state of the app.&lt;/p&gt;

&lt;p&gt;In Ember, all the communication to the server is done through &lt;code&gt;AJAX&lt;/code&gt;,
preferably using something like &lt;a href=&quot;http://github.com/emberjs/data&quot;&gt;Ember.Data&lt;/a&gt;, a
plugin that allows you to create persistable objects in your app. It's based
around &lt;code&gt;REST&lt;/code&gt; so it should be easy to integrate with a Rails app or any other
framework that supports &lt;code&gt;REST&lt;/code&gt;ful &lt;code&gt;URL&lt;/code&gt;s and &lt;code&gt;JSON&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can still use regular &lt;code&gt;Ember.Object&lt;/code&gt; classes to materialize domain objects
in your app. That was the whole point from the beginning of Ember's
development.&lt;/p&gt;

&lt;p&gt;Persistence in Ember is actually a thing I find a bit more complicated than in
Backbone as the former requires a plugin, whereas the latter comes with
&lt;code&gt;REST&lt;/code&gt;-based persistence built in. But again, I need to look into it a bit
more.&lt;/p&gt;

&lt;h2&gt;View: DOM integration&lt;/h2&gt;

&lt;p&gt;The nature of a view is to provide a representation. It has the necessary power
to capture the representation's events and do something about them.&lt;/p&gt;

&lt;p&gt;In stateless server-side apps, the view has no power: it's just an &lt;code&gt;HTML&lt;/code&gt;
result. It might have a little Javascript to manipulate the DOM to an extent
but it will end up performing stateless requests to the server in order to
retrieve/send data.&lt;/p&gt;

&lt;h3&gt;Backbone's Views&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;View&lt;/code&gt; class in Backbone was built to have power over the DOM's events with
the &lt;code&gt;events&lt;/code&gt; option:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;TodoView&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Backbone&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;View&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;render&lt;/span&gt;        &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* generate markup */&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;events&lt;/span&gt;        &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;click .mark-complete&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;mark-complete&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;change .body&amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;update-todo&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  
&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;mark&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;complete&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* your code */&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;todo&lt;/span&gt;   &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* your code */&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;TodoView&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;myTodo&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// instance of Backbone.Model&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This example has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A &lt;code&gt;render&lt;/code&gt; method which ideally generates the markup. You can use something
like &lt;a href=&quot;http://mustache.github.com&quot;&gt;Mustache&lt;/a&gt; or
&lt;a href=&quot;http://olado.github.com/doT/&quot;&gt;DoT&lt;/a&gt; to generate the markup and jQuery to
manipulate the &lt;code&gt;DOM&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The actual content to be put on the page is not this view's responsability
but another parent view or collection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An &lt;code&gt;events&lt;/code&gt; option that specifies the events and the DOM element they affect,
followed by the method to be called.&lt;/p&gt;

&lt;p&gt;Typically you update your data through these methods which, by turn, might
trigger other events in the whole app. You register those bindings yourself
as you build the app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All the methods defined in the &lt;code&gt;events&lt;/code&gt; option.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Notice that you pass a &lt;code&gt;Backbone.Model&lt;/code&gt; instance when creating a new view.&lt;/p&gt;

&lt;h3&gt;Ember's Views&lt;/h3&gt;

&lt;p&gt;One of Ember's base features is &lt;em&gt;data binding&lt;/em&gt;. Not only do objects bind
themselves but also the DOM stays updated by the same principle. If you make a
change in an object, the &lt;a href=&quot;http://handlebarsjs.com&quot;&gt;Handlebars&lt;/a&gt;-powered views
are instantly updated. Unlike Backbone, all the object to DOM binding is
seamless and it just works. That might be the coolest feature they have, in my
opinion.&lt;/p&gt;

&lt;h4&gt;Create a view&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Create a Handlebars template in the page (don't worry, it won't be visible
in the browser):&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;text&quot;&gt;&amp;lt;script type=&amp;quot;text/x-handlebars&amp;quot;&amp;gt;
  {{#view App.TodoView}}
    &amp;lt;input type=&amp;quot;text&amp;quot;  /&amp;gt;
  {{/view}}
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Create a View object in your app:&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;App&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;TodoView&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ember&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;View&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;change&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* update object */&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Ember views come packed with a series of custom handlers that represent the
various DOM events. In this case, &lt;code&gt;change&lt;/code&gt; refers to when the input changed its
value.&lt;/p&gt;

&lt;p&gt;Even though this approach looks more complicated, there are features in Ember
that make up for it. I still haven't delved deep enough but I noticed the
particularity.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;There are a lot of other reasons for me to stick with Ember for a while. I'm
interested in knowing how statecharts and routing work. Also, the tightness and
opinionated nature of the framework made me curious as to how much of the
boilerplate is removed.&lt;/p&gt;

&lt;h2&gt;So I have a question for you.&lt;/h2&gt;

&lt;p&gt;The title of this writing has a point.&lt;/p&gt;

&lt;p&gt;I screencast often even though I don't bring that out too much. Anyway, I would
love to record a series of videos (preferably with someone else) in the near
future on this topic, one
&lt;a href=&quot;http://en.wikipedia.org/wiki/Pomodoro_Technique&quot;&gt;pomodoro&lt;/a&gt; at a time. All the
process on &lt;em&gt;design thinking&lt;/em&gt;, &lt;em&gt;implementation&lt;/em&gt; and &lt;em&gt;trial &amp;amp; error&lt;/em&gt; would be
part of the videos. &lt;em&gt;Would you be interested in joining me?&lt;/em&gt; Remember, the
whole point of this is to develop a solution in the aspect of a rookie.&lt;/p&gt;

&lt;p&gt;Screencasting is a hard job and it takes (a lot of) time. I'm facing a
challenge in doing this as I consider Ember to be steep to learn, but enticing
at the same time. Also, it seems there aren't many examples on how to implement
an end-to-end application if ever so lightly. A sponsor would be a great
incentive for me to rush things up and start sooner than I expect. &lt;em&gt;Would you
be interested in sponsoring the series?&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Cultural prints impact behavior and judgement</title>
      <link>http://coyled.com/2012/07/04/cultural-prints-impact-behavior-and-judgement.html</link>
      <pubDate>Wed, 04 Jul 2012 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/07/04/cultural-prints-impact-behavior-and-judgement</guid>
      <description>&lt;p&gt;The greatest thing about attending conferences is that they expand your mind in
more than one direction. Particularly in my case, &lt;a href=&quot;http://agilept.org&quot;&gt;Agile
Portugal&lt;/a&gt; has definitely caused an impact on my assertion
of knowledge, judgment correctness and acceptance of life. More than anytime I
have come to realize that being a developer takes more than just knowing how to
type some kind of jargon, soft skills are just as demanding.&lt;/p&gt;

&lt;p&gt;I've come across American developers lately, not so young but still as
passionate. I felt their passion when they were talking about ways to improve
software development through Agile practices, and these are people with more
than thirty years of experience. There must be something they value greatly
that drives them forward and makes them argue about stuff in a reasonable yet
remarkable manner; it's called &lt;em&gt;culture&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;A picture of culture&lt;/h2&gt;

&lt;p&gt;Culture is a topic studied by experts and it's not surprising to see why.
Cultural prints affect people's ability to make decisions and judge behavior
and/or people. Political portraits of countries like Germany, United States or
Portugal are very different.&lt;/p&gt;

&lt;p&gt;In Germany people are better paid to do their job. This is a sign that they
trust people to do their job well; &lt;em&gt;and they do!&lt;/em&gt; It's considered to be a great
country to live in because german people are naturally good professionals; it's
in their blood, sort of speak.&lt;/p&gt;

&lt;p&gt;On the the other hand, Portugal has the exact opposite behavior. People are
badly paid because of we have this cultural cancer called «pull-it-off-ness».
It's in our blood to support corruption and get paid for it, we avoid paying
taxes whenever possible because we'd rather do it than start a revolution and
actually make things better. We talk more than we act because we're hipnotized
daily by this false sense of democracy and socialist government.&lt;/p&gt;

&lt;p&gt;The United States have this &lt;em&gt;American Dream&lt;/em&gt; thing. You gotta work for it but
you can achieve it. American people value action and knowledge over cheap words
and desperate bashing. They'd rather choose to be pragmatic over yelling at
dogma. Better yet, they actually believe they're capable of doing things and
they refuse to believe otherwise. There's this culture of enticement and
supportiveness towards one's will to chase something better.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;So does this means I'm portuguese and I'm cursed for life...? well not exactly.
These confrontations I have every now and then mess with my core values and
that's a good thing, it keeps me focused on what really matters for me. I still
have a long way to go regarding my way of making the world a better place.&lt;/p&gt;

&lt;p&gt;Considering the impact of culture in software development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A team is supposed to work together. I grow tired of cronic entropy.&lt;/li&gt;
&lt;li&gt;A team that's heavily influenced by such a bad culture such as my country's
won't succeed in the medium to long term.&lt;/li&gt;
&lt;li&gt;Individuals ought to constantly seek a better way to improve their work and
stop bitching about how lousy they are. And if you think about it, one does
not critique their laziness, rather they blame the system. Sometimes it
happens to me and I should be more careful.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Teams should embrace the right side of their culture and dramatically reject
its bad parts. I finished my last talk with my personal goal in life: “be
happy”. It should have been &lt;em&gt;be happy always&lt;/em&gt; because my country wants to be
happy one way or another, and I like that goal but not its cultural approach.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Extract your business</title>
      <link>http://coyled.com/2012/06/26/extract-your-business.html</link>
      <pubDate>Tue, 26 Jun 2012 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/06/26/extract-your-business</guid>
      <description>&lt;p&gt;I've come to realize one big factor to consider when building Ruby apps.&lt;/p&gt;

&lt;p&gt;I've given a &lt;a href=&quot;http://2012.agilept.org/program/invited-talks#toc-anchor-4034-10&quot;&gt;talk at
AgilePT&lt;/a&gt; on
how agile is Ruby on Rails. I should know better than just encouraging
businesses to adopt Ruby and Rails into their development. There's one thing
that so many people face and most of the time evangelists discard:
&lt;em&gt;regression&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I love working with Rails, it's a living organism. It's in its nature to
survive, it won't stale like most software tends to at some point. However,
because of that it's important to consider its volatility. &lt;em&gt;How is a product
supposed to follow the ever so changing nature of the framework&lt;/em&gt;?&lt;/p&gt;

&lt;h2&gt;Why isn't your business a gem of its own?&lt;/h2&gt;

&lt;p&gt;The business of a product is as important as the tools you use, perhaps even
more important. As product owners we ought to care more on how our business
logic is managed. The good thing about Rails is that it's so well organized and
its conventions are so straightforward that it's not really that hard to set
your logic apart from the framework.&lt;/p&gt;

&lt;p&gt;If you care enough about your product and also you constantly strive for
innovation and early adoption, then it's best to protect your software from the
framework, not just because Rails is often patched and upgraded with new
features over time but also because it allows you to change more easily.&lt;/p&gt;

&lt;p&gt;It's totally acceptable to acknowledge you might not be into Rails anymore, or
perhaps there's a feature in the framework you're not so fond of and you wish
to defy standards by adopting a different solution for a certain problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You might not be into SQL anymore and you want to switch to Couch, Mongo or
any other database;&lt;/li&gt;
&lt;li&gt;Perhaps you have a different way of persisting data like Hibernate (if you're
using JRuby);&lt;/li&gt;
&lt;li&gt;You want to improve performance by tweaking the frameworks' defaults;&lt;/li&gt;
&lt;li&gt;How about extracting your app into a JSON API and go heavy on Javascript?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Change is always imminent. I learned that the hard way and Ruby now gives me
confidence upon change. TDD is an awesome leader that &lt;em&gt;accepts change as a
reality and no longer a challenge&lt;/em&gt;. Also, it provides guidelines to better app
design which increases maintainability.&lt;/p&gt;

&lt;p&gt;The framework should only support common tasks, that's why it's called a
framework. All the MVC paradigm, boilerplate, persistence, helpers, templating
and email can be handled by Rails, &lt;em&gt;it can be safely upgraded without
compromising your business logic&lt;/em&gt;. It will be my personal goal to improve on
this as I have a lot to go through yet.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>About Agile</title>
      <link>http://coyled.com/2012/06/11/about-agile.html</link>
      <pubDate>Mon, 11 Jun 2012 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/06/11/about-agile</guid>
      <description>&lt;p&gt;I've been invited to give a speedtalk at &lt;a href=&quot;http://2012.agilept.org&quot;&gt;AgilePT&lt;/a&gt;
this year. I'll be covering the adoption of the Agile principles in Rails in
June 23rd. I'll be around for those days so if you wanna talk to me there,
&lt;a href=&quot;mailto:jose@josemota.net?subject=AgilePT&quot;&gt;shoot me an email&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;The thing for trying to smite someone on wasted opinion just for the kicks can
be fragile sometimes, especially when it can be so controversial. Arguing about
wether Agile is a good philosophy or not can't be benefitial. I embrace Agile
for its manifesto and one's professionalism shouldn't be intimately associated
with Agile practices.&lt;/p&gt;

&lt;p&gt;Trying to smite Agile down by showcasing bad practitioners is poor lack of
judgement. People have been successful with the «waterfall» model for a long
time. But its time is over based on the sole holistic fact that people in
general are allowed to change their minds so easily and frivolously. The human
brain processes information every square root of the time. What could have been
learned in 150 years takes only 12 years the next time; and that was more than
150 years ago. We are allowed to acknowledge and provoke change, That's called
&lt;em&gt;human nature&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Agile follows nature&lt;/h2&gt;

&lt;p&gt;As of 2012, people want to be engaged, fast. Software deployment and
maintenance is of the essence. As a software developer I can't afford to write
a one year contract without realizing I'll be filled with requirement changes.
There's no point in designing an app in a certain way for an entire year.
There's just too much uncertainty to handle, both for me and the client. That's
not being unprofessional, rather it's being cautious and respectful.&lt;/p&gt;

&lt;p&gt;I believe in the present, it's filled with people willing to collaborate and be
engaged with the developers. I can't grab the uncertain future and I will
certainly regret the day I set my client up with a predictability that won't
exist. I have the responsability of being honest and professional. Clients
ought to be considered partners rather than money throwing trolls; you will
gain their trust and respect.&lt;/p&gt;

&lt;h2&gt;What's with Agile?&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;«Individuals and interactions» — I read &lt;em&gt;understanding, respect and honesty&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;«Customer collaboration» — Stay with your client. Let him follow the process.&lt;/li&gt;
&lt;li&gt;«Working software» — I read &lt;em&gt;keep it easy, don't build what you don't have&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;«Response to change» — Be professional and predict change keypoints.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I realize it's rather difficult to keep it easy and predict change keypoints at
the same time. But there are two different things such as &lt;em&gt;simple&lt;/em&gt; and &lt;em&gt;easy&lt;/em&gt;.
Learning your craft as a software developer is crucial to being able to judge
your design decisions for a certain project. It's my turn to learn how to
develop software well.&lt;/p&gt;

&lt;p&gt;I believe in the manifesto and the way it empowers people to reach partners and
work together. I'd rather be told I'm not doing a good job than telling me that
the Agile methodology is evil; it does not apply more than development than it
applies to management. &lt;strong&gt;Upright responsability alone is key to success, Agile
itself supports today's reality of constant change.&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sacrilege: a rather lousy rant on Java for the web</title>
      <link>http://coyled.com/2012/02/10/sacrilege-a-rather-lousy-rant-on-java-for-the-web.html</link>
      <pubDate>Fri, 10 Feb 2012 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2012/02/10/sacrilege-a-rather-lousy-rant-on-java-for-the-web</guid>
      <description>&lt;p&gt;Let me start out saying I'm glad I never had to make web apps in Java.
Boostrapping the crap out of a Maven + Struts archetype is insane. I honestly
don't know what to feel for Java programmers.&lt;/p&gt;

&lt;p&gt;It's been an hour and a half since I've started reading the &lt;a href=&quot;http://www.amazon.com/Apache-Struts-Web-Application-Development/dp/1847193390/ref=sr_1_1?ie=UTF8&amp;amp;amp;qid=1328904973&amp;amp;amp;sr=8-1&quot;&gt; Apache Struts 2
Web Application Development book
&lt;/a&gt;
and I'm going nuts. &lt;em&gt;I've dealt with more XML in this hour and a half than most
of the time in my degree.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Story told short:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I've installed Netbeans and an Apache Tomcat 7 server.&lt;/li&gt;
&lt;li&gt;I've created a new Maven Web application.&lt;/li&gt;
&lt;li&gt;I've copied a struts routing example, along with the respective action POJO.&lt;/li&gt;
&lt;li&gt;Tried to reach the URL; no luck.&lt;/li&gt;
&lt;li&gt;Looked up for a web.xml example, in order to correctly load Struts.&lt;/li&gt;
&lt;li&gt;Project won't deploy. FML.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;At an hour and a half, reading and typing, I could have done so much more in
Rails or Sinatra. Sorry.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't care what people think about me comparing Java to Ruby at such an early
stage in &lt;em&gt;trying to learn&lt;/em&gt;. But hey, it's 2012, software ought to be easier to
accomplish. Why does it have to be so difficult to understand how a simple
controller is executed? Why is the Java way so convoluted?&lt;/p&gt;

&lt;p&gt;I'll update this post when I can create a Struts action properly, perhaps with
an interceptor. If I can make it to apply some TDD along the way, I pat myself
in the back. Until then, I stay with the attitude.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>A perspective on the state of education (of the Web)</title>
      <link>http://coyled.com/2011/12/26/a-perspective-on-education.html</link>
      <pubDate>Mon, 26 Dec 2011 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/12/26/a-perspective-on-education</guid>
      <description>&lt;p&gt;This is a &lt;a href=&quot;https://twitter.com/mollydotcom/status/147234090603651072&quot;&gt; challenge
&lt;/a&gt; by &lt;a href=&quot;http://molly.com&quot;&gt; Molly
Holzschlag &lt;/a&gt; concerning how the Web is taught around here.
Even though I tend to be opinionated, things have been happening that I
consider important to a better future.&lt;/p&gt;

&lt;p&gt;Learning the craft of the Web has always been hard. It has taken a lot of
blog posts, trial and error, inspiration, books, &lt;em&gt;etc.&lt;/em&gt; to slowly
progress; all of this... after hours.&lt;/p&gt;

&lt;p&gt;You must get things done at daytime. Innovation costs time that doesn't exist.
At least that's what most companies believe around here in the last 5 years.
Money is all leaders see, there's not the time nor the money to delve into a
better process or a better performance. Why bother if the pay is low and things
are steady? This is a cultural issue and that might just be the hardest
impediment that our people has to clear.&lt;/p&gt;

&lt;h2&gt;Academics is overrated&lt;/h2&gt;

&lt;p&gt;Our culture has been dictating over the years that the path to success must
include a college degree. It even includes &lt;em&gt;two&lt;/em&gt; now, a bachelor and a
masters degree. If you achieve none of them, people will think you're an idiot.
That immediately lowers any expectations for anyone that decides to hire a web
designer or an open source developer (&lt;em&gt;i.e.&lt;/em&gt; not Java / .NET). That's
probably one of the many reasons why websites like &lt;a
  href=&quot;http://clientsfromhell.com&quot;&gt;Clients from Hell&lt;/a&gt; show up. We don't
have &lt;a
  href=&quot;http://en.wikipedia.org/wiki/European_Credit_Transfer_and_Accumulation_System&quot;&gt;ECTS&lt;/a&gt;
to prove our clients we can do our job as much as those that do have them.&lt;/p&gt;

&lt;p&gt;The nature of the open web allows anyone to learn it and that is wonderful.
Resources are available everywhere, updated perhaps monthly. The community
gives their time, tutorials, references and screencasts. How will teachers
reassess innovative technologies such as HTML5, CSS3 and Javascript? What will
universities do with such a plethora of information?&lt;/p&gt;

&lt;p&gt;It's pretty hard to embrace all this change, so volatile. Trying to enclose an
everchanging engineering is hurtful for both the enclosed and the enclosing.
That's my #1 reason to believe that teaching &lt;em&gt;the web isn't meant to be dominated by universities but by the community&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Education is underrated&lt;/h2&gt;

&lt;p&gt;I took a Computer Science Engineering degree from 2004 to 2009. Everything I
know on how to be a web standards designer did not come from that degree. I
have learned every semantic element, every CSS best practice, every bit of
jQuery from home, after school. Professors lethargicly give students the
W3Schools' URL and that's it, they are not required to know more. However, they
are responsible for the future of website and web application development,
would they choose to. They ought to know more than simple &lt;code&gt;div&lt;/code&gt;s and
some background colors. They are taught how to give birth to a full fledged,
top-to-bottom application, from database modeling and systems architecture to
basic MVC. It seems to me that the V is left a little alone.&lt;/p&gt;

&lt;p&gt;True education in its most pure and holistic meaning surpasses any established
rules. What matters is content and the apprentice's will to absorb it in the
way he feels it's best for him. Factory oriented learning &amp;mdash; the one
that's implemented today from kindergarten to college &amp;mdash; violates the
principle of individuality and it hurts growth. Sadly, achieving individuality
in the process of learning is utopic at this point in time and thus a
compromise must be reached.&lt;/p&gt;

&lt;p&gt;All we have now is the free Internet. People still keep learning and sharing
after hours (like I am right now). Twitter allows us to keep up with the
brightest mentors such as Molly herself, &lt;a
  href=&quot;http://stuffandnonsense.co.uk&quot;&gt;Andy Clarke&lt;/a&gt;, &lt;a
  href=&quot;http://zeldman.com&quot;&gt;Jeffrey Zeldman&lt;/a&gt;, &lt;a
  href=&quot;http://adactio.com&quot;&gt;Jeremy Keith&lt;/a&gt;, &lt;a
  href=&quot;http://simplebits.com&quot;&gt;Dan Cederholm&lt;/a&gt;, &lt;a
  href=&quot;http://css-tricks.com&quot;&gt;Chris Coyier&lt;/a&gt;, amongst so many inspired
people that blog and speak about design, standards and application development.
I owe them my career, certainly not my college degree. I'm pretty sure most
good portuguese designers feel the same way, even if ever so slightly.&lt;/p&gt;

&lt;h2&gt;Solutions&lt;/h2&gt;

&lt;p&gt;I have stated before that universities shouldn't raise the flag and shape the
whole web standards industry. However, there is the room and the need to
solidify the basic assets of web development. In fact, I totally support the
creation (if not an update; perhaps a branch on W3C?) of a unique place where
all these resources can be served with quality documentation and possibility of
debate, allowing universities to have some sort of reference of what can be
introduced in their courses and promote the best content to their students.
This not only:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gives future designers and developers' the right skills and techniques so
they can do their job like they never did before; but also,&lt;/li&gt;
&lt;li&gt;Increases the universities' reputation for their investment in practical,
meaningful content that helps students get things done fast and done well.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;A great example of a standardized way of centering resources in one accessible
and friendly place is the &lt;a href=&quot;http://rubygems.org&quot;&gt;Rubygems&lt;/a&gt; platform.
Unlike other programming languages, Ruby has managed to flagpole an idea so
great and no other language has ever made it this well. Sure, &lt;a
  href=&quot;http://pear.php.net&quot;&gt;PEAR for PHP&lt;/a&gt; is nice and &lt;a
  href=&quot;http://ctan.tex.org&quot;&gt;CTAN for LaTeX&lt;/a&gt; is huge but not has rewarding
and simple as the gem system. Everyone uses Rubygems, all the tools for
publishing Ruby knowledge are published through it; it builds trust amongst the
developer community and it's just amazing.&lt;/p&gt;

&lt;p&gt;The effort of standardizing education of the web is being debuted in Portugal
with the birth of a post-graduation in &lt;em&gt;Web design&lt;/em&gt; at &lt;a
  href=&quot;http://esad.pt/en/cursos/pos-graduacao/web-design&quot;&gt;ESAD&lt;/a&gt;. &lt;a
  href=&quot;http://tpwd.net&quot;&gt;Tiago Pedras&lt;/a&gt; &lt;em&gt;et al&lt;/em&gt; have been working hard
so as to build a course that grants you ECTS points and also means something. I
look forward to hear from him and acknowledge that finally the bar is being
raised for everyone.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;After several years, our nation is finally taking its first steps to adulthood
regarding the craft of the web. Up until now, every designer was a nomad
messing around with what they thought they knew and stuck with it. Now there's
a chance for constantly embracing change and be happy about it. Let's look at
what has been done well in the last few years and consider the chance of making
the world a better place through creativity and care, one step at a time.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Same class associations in Rails 3</title>
      <link>http://coyled.com/2011/12/09/same-class-associations-in-rails-3.html</link>
      <pubDate>Fri, 09 Dec 2011 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/12/09/same-class-associations-in-rails-3</guid>
      <description>&lt;p&gt;&lt;strong&gt;[TL;DR]&lt;/strong&gt; Even though the selected events conceptually belong to a record,
the latter has the foreign keys to former. So technically, &lt;code&gt;has_one&lt;/code&gt;
is to be changed to &lt;code&gt;belongs_to&lt;/code&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This is the first time I've ran into something like this and it was interesting
to realize what it actually means when developing a business logic in Rails.&lt;/p&gt;

&lt;h3&gt;Context&lt;/h3&gt;

&lt;p&gt;In this app I'm building, I have &lt;em&gt;Students&lt;/em&gt; that have a &lt;em&gt;Record&lt;/em&gt;
per year. Each record has several &lt;em&gt;Events&lt;/em&gt;. These records also have two
specific events: a &lt;em&gt;test&lt;/em&gt; and an &lt;em&gt;audition&lt;/em&gt;, registered in the
schema as &lt;code&gt;id&lt;/code&gt;'s in the record's table.&lt;/p&gt;

&lt;h3&gt;So what did technically happen?&lt;/h3&gt;

&lt;p&gt;I wasn't able to access those specific events through the associations
specified in the model. Given &lt;code&gt;r = Record.first&lt;/code&gt;, when I tried to
access the audition, by using &lt;code&gt;r.test&lt;/code&gt;, Rails would use a SQL query
that would correspond to &lt;code&gt;r.events.first&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;After acknowledging that, I turned to &lt;a
href=&quot;http://twitter.com/varandas&quot;&gt;@varandas&lt;/a&gt; and we both thought it might
be a bug in the Rails framework. Turns out it wasn't; all I had to do was
switch from &lt;code&gt;has_one&lt;/code&gt; to &lt;code&gt;belongs_to&lt;/code&gt; (thanks &lt;a
  href=&quot;http://github.com/drogus&quot;&gt;@drogus&lt;/a&gt;!). The reason for that is the
  foreign key is on the &lt;code&gt;records&lt;/code&gt; table. From the framework's
  perspective, it looks like the record actually &lt;em&gt;belongs to&lt;/em&gt; the event,
  when in practice it's not.&lt;/p&gt;

&lt;h3&gt;Code sample&lt;/h3&gt;

&lt;script src=&quot;http://gist.github.com/1449428.js&quot;&gt;&lt;/script&gt;

</description>
    </item>
    
    <item>
      <title>Piscean programming</title>
      <link>http://coyled.com/2011/11/12/piscean-programming.html</link>
      <pubDate>Sat, 12 Nov 2011 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/11/12/piscean-programming</guid>
      <description>&lt;p&gt;For those who don't care about astrology, try to follow along; the principle is
pretty practical.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; – Being bossed around compromises inovation, creativity and it
destroys one's true sense of purpose. Don't let that destroy you.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The Piscean Era has begun around 0-400 A.D and, according to the math, will
last until very soon. The Pisces sign has several connotations: &lt;em&gt;sacrifice&lt;/em&gt;,
&lt;em&gt;martyrization&lt;/em&gt;, &lt;em&gt;faith&lt;/em&gt;, &lt;em&gt;dogma&lt;/em&gt; and &lt;em&gt;spiritual dictatorship&lt;/em&gt;. This is still a
challenge for many creative and passionate developers who wish to spread wings
and bring a better world through technology. Only the bravest survive the food
chain and those won't don't become slaves.&lt;/p&gt;

&lt;p&gt;The Aquarian Era follows the Piscean. It stands for &lt;em&gt;freedom&lt;/em&gt;, &lt;em&gt;love&lt;/em&gt; and
&lt;em&gt;consciousness&lt;/em&gt;. These are the values I fight for. My goal is to build great
stuff on the web, the way I feel it should be done. A lot of what's built today
looks great, but there are still major issues to tackle when it comes to
fulfilling needs. Those needs are overrated and they don't help the smallest,
the poorest and the less bright; they only serve the allegedly powerful and
certainly wealthy.&lt;/p&gt;

&lt;p&gt;Open source is an awesome Aquarian movement. It's not just the code, it's a
whole mindset. It lets people make their move and be rewarded for it. That
reward is not just money, it's also the joy of the contribution and hope for
evolution.&lt;/p&gt;

&lt;p&gt;This is not about companies anymore, each team member is too important to be
masked with a company logo. People move a lot these days, there's actually no
point in fixating all the credit in one company in a point in time. Letting
developers choose what they want to do is crucial to creativity. They will do
what it takes if they feel it's the right thing to do.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Going for JRuby</title>
      <link>http://coyled.com/2011/10/20/going-for-jruby.html</link>
      <pubDate>Thu, 20 Oct 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/10/20/going-for-jruby</guid>
      <description>&lt;p&gt;The company I work for uses Java for all of its projects. Based on that, I have
been considering looking into JRuby and giving it a try. Every piece of advice
is greatly appreciated.&lt;/p&gt;

&lt;h2&gt;Context&lt;/h2&gt;

&lt;p&gt;I play the Interaction Designer role and digging deeper to Struts and Java
servlets, more than just HTML/CSS/jQuery, is becoming quite the challenge. I
happen to love Rails and would love to try it out. My main goals are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take advantage of Rails' controllers, routes and views;&lt;/li&gt;
&lt;li&gt;Use Haml with Markdown and Sass with Compass;&lt;/li&gt;
&lt;li&gt;Take advantage of REST.&lt;/li&gt;
&lt;li&gt;Finally use Rspec and inject some proper testing and specification practices.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;All of this while the rest of the team can still code the models (aka the
business logic) the way they prefer. I think it's a good cause and it's a great
opportunity to improve development happiness and systems integration.&lt;/p&gt;

&lt;h2&gt;The challenge&lt;/h2&gt;

&lt;p&gt;Here is a list of the things I know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I can use &lt;a href=&quot;http://rvm.beginrescueend.com&quot;&gt;RVM&lt;/a&gt; to quickly install
and use JRuby.&lt;/li&gt;
&lt;li&gt;Gems with C extensions are a bit difficult to use inside the JVM.&lt;/li&gt;
&lt;li&gt;There are alternative gems to the ones above.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I also need to get in touch with these concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web application development in Java: .jar's, war's, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tomcat.apache.org&quot;&gt;Tomcat&lt;/a&gt; or &lt;a href=&quot;http://glassfish.java.net&quot;&gt;Glassfish&lt;/a&gt;
as servers.&lt;/li&gt;
&lt;li&gt;Importing Java code into a Rails or Sinatra app.&lt;/li&gt;
&lt;li&gt;(optional) Using Ruby code from Java.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I guess the main question would be: &lt;em&gt;Where do I start?&lt;/em&gt; What am I
supposed to know to begin developing some sort of Rails app, using it under
Tomcat or Glassfish and reusing Java code from the rest of the team? Thanks for
helping me, guys!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Does Datatables need better integration?</title>
      <link>http://coyled.com/2011/09/01/does-datatables-need-better-integration.html</link>
      <pubDate>Thu, 01 Sep 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/09/01/does-datatables-need-better-integration</guid>
      <description>Over these last two months, I've been working with &lt;a href=&quot;http://datatables.net&quot; target=&quot;_blank&quot;&gt;Datatables&lt;/a&gt;, an amazing easy-to-setup steroid machine for HTML tables. For the kind of work I'm doing right now, it suits my needs just perfectly.

A couple of weeks ago I needed to build a plugin for DT: &lt;em&gt;MultipleFilters&lt;/em&gt;, something that would allow me to filter data by a range. Each column would have a pair of fields and I would have to mix them into the bowl of parameters to send to the server . It looked fun, so I started doing it, hoping to achieve a beautiful Javascript prototype object that would &lt;a title=&quot;Enable features by adding a letter in the sequence of features.&quot; href=&quot;http://datatables.net/development/features&quot; target=&quot;_blank&quot;&gt;do magic when plugged in by a single letter&lt;/a&gt;. As I was finishing building it, I realized some issues had to be fixed.

&lt;!--more--&gt;

&lt;strong&gt;Disclaimer&lt;/strong&gt;: The plugin does not approach local processing, only server-side.
&lt;h3&gt;Push data to the server without using fnServerData&lt;/h3&gt;
With minimum coupling in mind, I wanted to find a way that allowed to push data to the server without using the &lt;code&gt;fnServerData&lt;/code&gt; option in the initializer. That's not what the end user wants, he wants to just download the plugin, place it in and there, it does range filtering.

My suggestion here would be an array of functions (perhaps called &lt;code&gt;afnbeforeSend&lt;/code&gt;) that allowed any plugin builder to be able to inject parameters to be sent. That way, when my plugin is initialized, I can push my function that injects such parameters and I don't pollute the initializers.
&lt;h3&gt;Integrate with other plugins, such as ColVis or ColReorder&lt;/h3&gt;
Datatables' features that have controls, such as MF, require a DOM object to be returned in the fnInit function. As of now, I am generating the feature with just a button. The actual controls are being appended to the table's footer, with no regard to the column order or state of visualization.

At some point in time, I faced a lot of trouble as I watched multiple controls get spawned across the table, as well as the controls not being switched along with the column being reordered nor being hidden / shown when you check a column with &lt;code&gt;ColVis&lt;/code&gt;. Wouldn't it be great if both &lt;code&gt;ColVis&lt;/code&gt; and &lt;code&gt;ColReorder&lt;/code&gt; had some sort of array of callbacks we could populate? When &lt;code&gt;ColVis&lt;/code&gt; toggled a column, I could access it and toggle my filter controls accordingly. When &lt;code&gt;ColReorder&lt;/code&gt; dragged a column around, I could know which one and to where it moved. All of this without requiring additional initialization and granting cohesion, based on a functional approaching.

For what it's worth, I actually had to hack inside ColReorder and add some code in there so I had to accomplish some integration between MF and CR.
&lt;h3&gt;So, is there a need for better integration?&lt;/h3&gt;
Before I jump into the conclusion, I should say that &lt;a href=&quot;http://www.sprymedia.co.uk/about&quot; target=&quot;_blank&quot;&gt;Allan&lt;/a&gt; did a great job on building Datatables, it's a remarkable piece of software.

I told him that I would risk being stupid to the point of being told to RTFM, but I stand for ease of read as well as ease of use. There should clearly be some plugin development guidelines and I personally volunteer to help build those guidelines. Based on what I know, &lt;em&gt;I would say there is a need to improve integration. If it's not for how it's built, it would by the way it's told.&lt;/em&gt;
</description>
    </item>
    
    <item>
      <title>Cucumber / Rspec and documentation as one</title>
      <link>http://coyled.com/2011/08/02/cucumber-rspec-and-documentation-as-one.html</link>
      <pubDate>Tue, 02 Aug 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/08/02/cucumber-rspec-and-documentation-as-one</guid>
      <description>&lt;p&gt;A Ruby developer I met recently told me that the majority of us Rubyists skip
documentation in favor of &lt;a
  href=&quot;http://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test Driven
  Development&lt;/a&gt; tools. Some business are still pretty &lt;a title=&quot;Waterfall
  design process&quot; href=&quot;http://en.wikipedia.org/wiki/Waterfall_model&quot;&gt;waterfall
  oriented&lt;/a&gt; and demand all the requirements gathering, business analysis and
design beforehand, as well as hard documentation with lots of funny terms and
fancy diagrams.&lt;/p&gt;

&lt;p&gt;I told her I was looking forward to studying &lt;a
  href=&quot;http://cukes.info&quot;&gt;Cucumber&lt;/a&gt; and &lt;a
  href=&quot;http://rspec.info&quot;&gt;Rspec&lt;/a&gt; in order to improve my skills. She asked
me how I did documentation using those tools and I answered: “Cucumber and
Rspec are the documentation”. As she twisted her nose I could tell I had to
research more on the topic; so I did.&lt;/p&gt;

&lt;p&gt;I have been reading the Rspec book. Definitely read it if you want to know how
to code better.&lt;/p&gt;

&lt;h3&gt;Why does “documentation” feel so hard?&lt;/h3&gt;

&lt;p&gt;Dumb answer: &lt;em&gt;It sucks&lt;/em&gt;. Smart answer would be something like: &lt;em&gt;You
might be doing it wrong&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Documentation specifies a software's collection of procedures it performs. Why
should we even try and build software that does not resemble people's
expectations? (If it weren't Ruby, I'd guess the software to be built required
another form of understanding, which is fine and yet irrelevant in this case.)&lt;/p&gt;

&lt;h3&gt;Who is the documentation for?&lt;/h3&gt;

&lt;p&gt;Not just people, but stakeholders who want straightforward answers. 150 pages
of paper is not the way to accomplish that, IMO. They know what they asked for
and we should build the answers accordingly.&lt;/p&gt;

&lt;h3&gt;Cucumber and Rspec&lt;/h3&gt;

&lt;p&gt;What's wrong with automated documentation? How beautiful is it to have a
stakeholder look to a set of Cucumber features and Rspec examples that assert
precisely what he asked for — damn, he might have written those features…! —
and find the answer?&lt;/p&gt;

&lt;p&gt;Cucumber defines vocabulary for the system, states what it does and who. And it
helps developers and stakeholders connect and collaborate.&lt;/p&gt;

&lt;p&gt;PS: being a designer, I know I must present my documentation as pleasant as
possible. Well, I guess Cucumber and Rspec just support this statement of mine,
don't they...?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Blogrite — on indexes</title>
      <link>http://coyled.com/2011/07/05/blogrite-on-indexes.html</link>
      <pubDate>Tue, 05 Jul 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/07/05/blogrite-on-indexes</guid>
      <description>Blogrite has been having a steady grow since I announced it; slow but growing still. Single pages finally work and I'm pretty happy with the results. Thanks to &lt;a title=&quot;@rubenfonseca&quot; href=&quot;http://twitter.com/rubenfonseca&quot;&gt;Ruben Fonseca&lt;/a&gt; for helping me out with &lt;a title=&quot;The HTTP status would be a 404 after the first bad one.&quot; href=&quot;https://github.com/josemota/blogrite/commit/632ff222c9f2abca8f66015f067543638806e009&quot;&gt;this issue&lt;/a&gt; I had bugging me for quite some time.

I have reached a milestone. The next thing I need to build is an index page that inevitably fetches all the posts I have. &lt;em&gt;But how am I supposed to do that with files&lt;/em&gt;? If I didn't build Blogrite to allow multiple content providers, I would fix the posts' location into the filesystem and perform system calls like &lt;code&gt;find&lt;/code&gt; or &lt;code&gt;tail&lt;/code&gt; or something else. I wouldn't have to think about an index file that would be built everytime I write something new, in order to increase performance. But since this is not the case, I need to come up with a solution.

What I do know is the responsability of getting the index content is the provider's.
&lt;ul&gt;
	&lt;li&gt;If I hosted content live along with the system – like I mentioned above –, &lt;code&gt;find&lt;/code&gt; or &lt;code&gt;tail&lt;/code&gt; system calls would be fine.&lt;/li&gt;
	&lt;li&gt;If I used Git, I could use a post-commit hook and have it change that post info in an index file.&lt;/li&gt;
	&lt;li&gt;Dropbox would be a totally different story. Are there any hooks in the service for automated scripts? (honestly I don't think there are, feel free to prove me wrong!)&lt;/li&gt;
&lt;/ul&gt;

All of this considering an automated index page. There might be another ways of accomplishing this. I'm open to suggestions, throw 'em away.
</description>
    </item>
    
    <item>
      <title>Blogrite 007 - Classes over modules, 404 is not OK</title>
      <link>http://coyled.com/2011/06/08/blogrite-007-classes-over-modules-404-is-not-ok.html</link>
      <pubDate>Wed, 08 Jun 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/06/08/blogrite-007-classes-over-modules-404-is-not-ok</guid>
      <description>&lt;iframe src=&quot;http://player.vimeo.com/video/24788937?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;color=ff9933&quot; width=&quot;466&quot; height=&quot;291&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;TDD is so much fun. The tests I made allowed me to redo the whole plugin system and understand what I should do instead. I am pleased with with how the direction is being set and I can't wait to put this up for you guys.&lt;/p&gt;

&lt;p&gt;In the video you'll see I'm having trouble with requesting a good post after a request done wrong. Everytime a request is a bad one, all the following ones are bad as well, I'm not being able to control it. I appreciate the help you can give, thanks a bunch!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Blogrite 006 - It works! Well, sort of.</title>
      <link>http://coyled.com/2011/05/24/blogrite-006-it-works-well-sort-of.html</link>
      <pubDate>Tue, 24 May 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/05/24/blogrite-006-it-works-well-sort-of</guid>
      <description>&lt;iframe src=&quot;http://player.vimeo.com/video/24182015?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;color=ff9933&quot; width=&quot;466&quot; height=&quot;291&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

I told you before I would post a video on the development of Blogrite after Rubynorte. So here it is.
&lt;h3&gt;Topics included&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;It works!&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt; &lt;/em&gt;Well, sort of. The first request is a 200, all the other ones throw me a 404 CSS file!&lt;/li&gt;
	&lt;li&gt;ERB for rendering the templates.&lt;/li&gt;
	&lt;li&gt;Classes over modules for extension?&lt;/li&gt;
&lt;/ul&gt;
I appreciate your feedback, you can clone the project at &lt;a href=&quot;http://github.com/josemota/blogrite&quot;&gt;Github&lt;/a&gt;.

After fixing the bugs I still have, I intend on fetching the list of posts at the root. Or I can let the final user create an index.txt for a landing page.
</description>
    </item>
    
    <item>
      <title>Blogrite — see you at Rubynorte!</title>
      <link>http://coyled.com/2011/05/10/blogrite-see-you-at-rubynorte.html</link>
      <pubDate>Tue, 10 May 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/05/10/blogrite-see-you-at-rubynorte</guid>
      <description>Since I'm doing a presentation on Blogrite at &lt;a title=&quot;Portuguese Ruby conference&quot; href=&quot;http://rubynorte.heroku.com&quot; target=&quot;_blank&quot;&gt;Rubynorte&lt;/a&gt; in little more than a week, I won't put any videos until then. It will build expectation on wether it's actually working or not. I certainly hope it is by then!

Wish me luck, or even better: help me build something that I hope you might use too.
</description>
    </item>
    
    <item>
      <title>Blogrite 005 - Tests pass, server runs</title>
      <link>http://coyled.com/2011/05/09/blogrite-005-tests-pass-server-runs.html</link>
      <pubDate>Mon, 09 May 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/05/09/blogrite-005-tests-pass-server-runs</guid>
      <description>&lt;iframe src=&quot;http://player.vimeo.com/video/23494236?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;color=ff9933&quot; width=&quot;466&quot; height=&quot;291&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

I have talked a little faster today but still a bit longer than I had wished for. I'm excited to bring good news about Blogrite, I'm steadly growing my knowledge on Ruby. Rack is really interesting, I'm loving how simple and easy to learn it is so far.

Testing is fun when you start to think of features you want to implement and quickly draw a quick test that will fail and you try to make it pass. I can't wait to start the refactoring phase, when everything is working the &lt;em&gt;not-so-right&lt;/em&gt; way.
</description>
    </item>
    
    <item>
      <title>Blogrite 004 - Lots of news</title>
      <link>http://coyled.com/2011/04/18/blogrite-004-lots-of-news.html</link>
      <pubDate>Mon, 18 Apr 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/04/18/blogrite-004-lots-of-news</guid>
      <description>Hi everyone, I apologize for not saying anything sooner. I've got lots of different stuff going on. Watch it and submit your comments, I appreciate it.

&lt;iframe src=&quot;http://player.vimeo.com/video/22561180?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;color=ff9933&quot; width=&quot;466&quot; height=&quot;291&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

&lt;h3&gt;Shameless self-promotion: Rubynorte&lt;/h3&gt;
&lt;a href=&quot;http://rubynorte.heroku.com&quot;&gt;Rubynorte&lt;/a&gt; is the Portuguese Ruby conference a &lt;a title=&quot;Filipe Pina&quot; href=&quot;http://twitter.com/filipepina&quot;&gt;couple&lt;/a&gt; &lt;a title=&quot;Ricardo Mendes&quot; href=&quot;http://twitter.com/locks&quot;&gt;of&lt;/a&gt; &lt;a title=&quot;Pedro Borges&quot; href=&quot;http://twitter.com/pedroborges&quot;&gt;friends&lt;/a&gt; and I are putting up. If you're portuguese, come and join us. Submit a talk if you wish to speak to the community.
</description>
    </item>
    
    <item>
      <title>Blogrite - Git or Dropbox?</title>
      <link>http://coyled.com/2011/04/11/blogrite-git-or-dropbox.html</link>
      <pubDate>Mon, 11 Apr 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/04/11/blogrite-git-or-dropbox</guid>
      <description>The absence of communication has been resounding for a while. I have been thinking about Blogrite, nonetheless. I want to show something in the local Ruby meetup next month.
&lt;h3&gt;The million dollar question&lt;/h3&gt;
Today I went to #git in Freenode, asking for how should I learn git in order to use it as a filesystem and access it remotely via some server using Grit. The somehow arrogant yet most likely right answer I got was: &lt;em&gt;don't&lt;/em&gt;. Well, what should I use then? The same guy didn't answer me (well, he did: &quot;&lt;em&gt;I don't know&quot;.&lt;/em&gt;) but another guy did.
&lt;blockquote&gt;Why not use Dropbox or Amazon S3?&lt;/blockquote&gt;
Actually that is a great idea. Again, my principle is: keep it minimal and lightweight and still easy for geeks to use. Dropbox is definitely easy to use and maintain. You can also version the content with Git; it just won't be part of my engine.
&lt;h3&gt;The million dollar answer&lt;/h3&gt;
I will use Dropbox as the content database. Git will have to wait. It shall come, but not just yet. This gives me opportunity to create modular adapters later on so I feel confortable with it.
</description>
    </item>
    
    <item>
      <title>Blogrite 003 – Requires done wrong</title>
      <link>http://coyled.com/2011/03/31/blogrite-003-requires-done-wrong.html</link>
      <pubDate>Thu, 31 Mar 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/03/31/blogrite-003-requires-done-wrong</guid>
      <description>Still not much to show you, sadly. I'm having trouble setting my tests up so the rest flows well. If you guys help me out on this, I will be sure to mention you in the following video, you deserve it.

Thanks for all the help guys.

&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;466&quot; height=&quot;291&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=21772926&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;466&quot; height=&quot;291&quot; src=&quot;http://vimeo.com/moogaloop.swf?clip_id=21772926&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
</description>
    </item>
    
    <item>
      <title>Blogrite 002 – Where to even start</title>
      <link>http://coyled.com/2011/03/30/blogrite-002-where-to-even-start.html</link>
      <pubDate>Wed, 30 Mar 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/03/30/blogrite-002-where-to-even-start</guid>
      <description>It's the first time I am writing any tests at all, I'm dead serious. Please bear with me, I'd appreciate your help in guiding towards the magic of TDD. Thanks guys.
&lt;h3&gt;What I noticed already&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;I chose Minitest after Rspec because it's leaner, which is what I want for now.&lt;/li&gt;
	&lt;li&gt;Requiring 'minitest/autorun' will run my tests automatically.&lt;/li&gt;
	&lt;li&gt;The class to inherit from is Minitest::Unit::TestCase, not from the Test module.&lt;/li&gt;
&lt;/ul&gt;
I'm still missing stuff like how to require and autoload right. I'm pretty sure is wrong with that.

&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;466&quot; height=&quot;291&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=21714980&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;466&quot; height=&quot;291&quot; src=&quot;http://vimeo.com/moogaloop.swf?clip_id=21714980&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
</description>
    </item>
    
    <item>
      <title>New journey: Ruby + git = Blogrite</title>
      <link>http://coyled.com/2011/03/29/new-journey-ruby-git-blogrite.html</link>
      <pubDate>Tue, 29 Mar 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/03/29/new-journey-ruby-git-blogrite</guid>
      <description>Truth: my blog and I have been apart for a while. Another truth: I've been reading more about Ruby. In fact, the more I read, the more I want to. Also, I've been growing tired of certain things:
&lt;ul&gt;
	&lt;li&gt;PHP is not it anymore.&lt;/li&gt;
	&lt;li&gt;Wordpress or Drupal are top notch. I don't &lt;em&gt;need&lt;/em&gt; top notch; I want to publish content easier and faster.&lt;/li&gt;
	&lt;li&gt;I want to learn Ruby the hard way. I want to learn how to &lt;em&gt;test&lt;/em&gt;, I want to learn how to &lt;em&gt;build a gem&lt;/em&gt;, how to use &lt;em&gt;Rack&lt;/em&gt;, all of it. Only then I'll be more confident enjoying the full power of Ruby.&lt;/li&gt;
	&lt;li&gt;I &lt;em&gt;don't &lt;/em&gt;want to &lt;em&gt;depend on a database&lt;/em&gt; to publish my content. I never saw that much sense in storing articles inside a relational database column. I love &lt;em&gt;Git&lt;/em&gt; and it seems it is capable of storing the content I want.&lt;/li&gt;
	&lt;li&gt;I'm sick of 10+ spam comments a day.&lt;/li&gt;
&lt;/ul&gt;
My next dare: a git + ruby based blog. So, I'll be posting several articles on how I'm doing. If possible, I'll post videos too. I'll make sure to use Vimeo since it accepts OGG (it seems lighter).

Thanks to the people at the &lt;a href=&quot;http://locks.github.com/rubynorte&quot;&gt;Ruby meetup in March 19th&lt;/a&gt; who have motivated me (even without knowing).
</description>
    </item>
    
    <item>
      <title>Blogrite 001 – Prelude</title>
      <link>http://coyled.com/2011/03/29/blogrite-001-prelude.html</link>
      <pubDate>Tue, 29 Mar 2011 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/03/29/blogrite-001-prelude</guid>
      <description>&lt;p&gt;I've posted my first video about Blogrite. It mainly states initial thoughts and motivation on the project.&lt;/p&gt;

&lt;p&gt;@dhh started a &lt;a title=&quot;I respect the guys behind it and I'm all for experimentation, but the proliferation of rSpec and Cucumber makes me sad. / RSpec offends me aesthetically with no discernible benefit for its added complexity over test/unit.&quot; href=&quot;https://twitter.com/dhh/status/52806992150007808&quot;&gt;heated discussion on Rspec vs Test::Unit&lt;/a&gt;, right after I finished the recording. I must admit he's a genius and he actually made me reconsider Test::Unit again, since it is considerably lighter than Rspec. I'll have to think about it.&lt;/p&gt;

&lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;466&quot; height=&quot;291&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=21663789&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;466&quot; height=&quot;291&quot; src=&quot;http://vimeo.com/moogaloop.swf?clip_id=21663789&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Prototypes in Rails?</title>
      <link>http://coyled.com/2011/02/21/prototypes-in-rails.html</link>
      <pubDate>Mon, 21 Feb 2011 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2011/02/21/prototypes-in-rails</guid>
      <description>Prototyping is good tool; if your regular development is slow, not agile and
you need to draft something up real quick for your client.

If you're a Rails developer / designer, why even bother? Why not just start
pumping the business up? You don't have that much attrition to get an app up
and running. All the time you spend in prototyping should be invested in
building the actual app.

Web application design walks with its development, they are too close to be set
apart.
</description>
    </item>
    
    <item>
      <title>Rails 3 has_many :through checkboxes</title>
      <link>http://coyled.com/2010/11/05/rails-3-has_many-through-checkboxes.html</link>
      <pubDate>Fri, 05 Nov 2010 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/11/05/rails-3-has_many-through-checkboxes</guid>
      <description>&lt;p&gt;On Twitter I wrote:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Rails does it for you, just add sheet_ids[] to the form with the checkboxes and
it's done! will blog.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Being a music teacher, my fiance needed to keep record of tests her students
perform. Also, each test has several sheets that need mentoring and
monitorization through several parameters. I decided to help and reentered the
Rails world, and since I have found no answer on this topic, I decided to write
it myself.&lt;/p&gt;

&lt;p&gt;This situation is a perfect model for using the so well known &lt;a
href=&quot;http://railscasts.com/episodes/17-habtm-checkboxes&quot;&gt;HABTM checkboxes&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;A closer look at the problem&lt;/h3&gt;

&lt;h4&gt;Models&lt;/h4&gt;

&lt;script src=&quot;http://gist.github.com/663287.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;A pretty basic setup. The &lt;em&gt;venues&lt;/em&gt; (the students' tests) include several
&lt;em&gt;sheets&lt;/em&gt; for them to study and for the teacher to evaluate,
through &lt;em&gt;exhibitions&lt;/em&gt; that have several criteria.&lt;/p&gt;

&lt;h4&gt;View&lt;/h4&gt;

&lt;script src=&quot;http://gist.github.com/663417.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;I simplified the form just so you see what's at stake. The same principle of
the HABTM checkboxes applies to a has_many :through association. Instead of new
entries in a venues_sheets table, new &lt;em&gt;Exhibitions&lt;/em&gt; are created with the
respective foreign ids in them.&lt;/p&gt;

&lt;p&gt;The controller needs no mention because it stays the same. It just saves /
updates the model. This is why I love Rails: the hard work is done: you just
need to focus on what matters.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>On honesty</title>
      <link>http://coyled.com/2010/09/23/on-honesty.html</link>
      <pubDate>Thu, 23 Sep 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/09/23/on-honesty</guid>
      <description>I tweeted:
&lt;blockquote&gt;Third draft for a blog post. Not coming soon. I'm just too honest.&lt;/blockquote&gt;
I can't speak much because I don't have money. But I subscribe &lt;a href=&quot;http://loudthinking.com&quot;&gt;David Heinemeier Hansson&lt;/a&gt;'s &lt;a href=&quot;http://37signals.com/svn/posts/2585-facebook-is-not-worth-33000000000&quot;&gt;brilliant post&lt;/a&gt; about Facebook. Right off the bat he says:
&lt;blockquote&gt;Anyone who can get 500 million people to connect, share photos, and click on little cows in Farmville deserves major kudos.&lt;/blockquote&gt;
Along his speech he doesn't give a crap about what he says will affect others. He just says it. Period.

I like his honesty. I like his guts. I like that he can say this kind of stuff. The fact is, he can say whatever he wants; he's successful and no one can say anything about it.

David, you sir, are an example. I wish you and your company the best of luck. I wish that for myself. I will get there, I promise.
</description>
    </item>
    
    <item>
      <title>Singular resourcing on Rails 3 beta</title>
      <link>http://coyled.com/2010/07/06/singular-resourcing-on-rails-3-beta.html</link>
      <pubDate>Tue, 06 Jul 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/07/06/singular-resourcing-on-rails-3-beta</guid>
      <description>Today I've been struggling on my project to be. I want to build it just right so I can learn Rails 3 the best way and enjoy the Ruby and Rails experience a little more. I love their ways, but sometimes it gets tough to go around the normal skeleton of an application.
&lt;h3&gt;Singular resourcing was harder to grasp than I thought&lt;/h3&gt;
The idea is actually pretty simple to understand: for example, &lt;em&gt;you say you want a user to access only one resume&lt;/em&gt; because that's the only one he would have. The scaffold generator adjusts the routing accordingly; well, at least it should.

&lt;!--more--&gt;

[gist id='464781']

It should actually be &lt;code&gt;resume_path&lt;/code&gt; in the singular but for the URL's to work you must have an &lt;code&gt;:as&lt;/code&gt; parameter in the routes:

[gist id='464784']

I got frustrated for realizing I had to do extra effort to understand something that should have been linear. I need to work around on this. I was thinking of normal resourcing the posts so it could be searchable later on and everything. But it doesn't feel right, that's not the business model. A user has its own resume, period. If he is to look at another one, then a custom route will be made up.

I'm asking for help now. If you have something to share regarding this matter, it would be absolutely great and I thank you very much.

PS: Yes, the application started from this point. I have no users yet, no static content, no nothing. Perhaps starting an application with a singleton scaffold was a bad idea. Perhaps start with the users first? After all, they are the system and the resume should belong to them.
</description>
    </item>
    
    <item>
      <title>Age still a prejudice?</title>
      <link>http://coyled.com/2010/07/02/age-still-a-prejudice.html</link>
      <pubDate>Fri, 02 Jul 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/07/02/age-still-a-prejudice</guid>
      <description>When at Barcamp, I had good and bad reviews about my presentation. One of them touched me in a particular way:
&lt;blockquote&gt;I found the fact that you're particularly young pretty unusual for someone to share your thoughts, experience and expertise. It just confused me.&lt;/blockquote&gt;
My apologies to the kind and sensible person that said this to me if this is wrong. He mentioned prejudice along the comment and sought to put it apart while I was speaking. I understood and accepted what he meant. You don't face a young rebel like me who happens to feel his life intensely that often.

&lt;!--more--&gt;

I am 23 years old. I experience as much as you (I guess): mad boss, bad salary, trouble every now and then, I get sick, scared, happy, angry, sad; just like you. I want to move in together and get married; like you might dream or already accomplished. &lt;strong&gt;The difference between me and most people is that they don't care&lt;/strong&gt;. If you do care, then you are a friend.
&lt;h3&gt;It's a matter of energy and emotion.&lt;/h3&gt;
I went to see a wedding a time ago. It was supposed to be the happiest moment of the couple's lives. Except it wasn't. The beautiful couple wasn't connected. There was no magic in their eyes when they looked at each other, that sparkling glow.

What does this have to do with anything? Well, they didn't care about their marriage, why should they care about the rest of their lives?

You don't need to be 30 or 40 to start caring. Start caring right now. Start feeling. Write about it. A couple of months after you start writing, you'll notice how much you've learned. I know I did. &lt;a href=&quot;http://www.oportoemconversa.com/2010/06/23/barcamp-jose-mota-paixao-psicologia-e-rails/&quot;&gt;My Barcamp presentation&lt;/a&gt; is the result of 2 months of writing and caring about my growth and my happiness.

Age is not a prejudice anymore. Information is spreading fast and people's awareness and conscience levels are rising. It's a biological process.

&lt;a href=&quot;http://dmitrizone.com/&quot;&gt;Dmitri Gaskin&lt;/a&gt; started caring at the age of 11. He is one that &lt;a href=&quot;http://www.youtube.com/watch?v=8mwKq7_JlS8&quot;&gt;taught me jQuery&lt;/a&gt; and he was only 12 back then. I can't find a better example.
</description>
    </item>
    
    <item>
      <title>Resultados do questionário: CV</title>
      <link>http://coyled.com/2010/06/30/resultados-do-questionario-cv.html</link>
      <pubDate>Wed, 30 Jun 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/06/30/resultados-do-questionario-cv</guid>
      <description>Não tenho tido tempo nenhum para colocar os resultados do questionário que criei sobre currículos. Mas aproveito o pouco da manhã que tenho para publicar o &lt;a href=&quot;http://josemota.wufoo.com/reports/resultados-do-questionario-cv/&quot;&gt;relatório&lt;/a&gt;. Alguns dos comentários que mais gostei foram:
&lt;blockquote&gt;Um repositório central onde pudesse ter o CV actualizado em permanência (e que esta tarefa fosse simple - via wizard, exemplos, etc) e com um url único para poder divulgá-lo em sites de emprego, no meu blog professional, etc.

Permitir ser exportada para diversos formatos, quer Europass (pdf), quer resume em Latex. Onde o Europass seria utilizada na europa e o resume para quando queremos enviar para a America ou assim. Uma coisa muito importante é que o input possa ser feito através do xml do Europass.&lt;/blockquote&gt;
Houve mais comentários, podem ir &lt;a href=&quot;http://josemota.wufoo.com/reports/resultados-do-questionario-cv/&quot;&gt;vê-los&lt;/a&gt;. Estes foram os que me chamaram a atenção pelo URL único, exportação PDF e importação XML do Europass.
&lt;h3&gt;Ainda não há nome?!&lt;/h3&gt;
Há, sim; mas só vou dizer depois ;) Preciso de registar o domínio primeiro. Vou tratar também de começar a disparar o desenvolvimento para se poder testar. Em princípio a fase alpha da aplicação será só por convite, para garantir que é bem testado.

Obrigado pela vossa ajuda!
</description>
    </item>
    
    <item>
      <title>Wanted: Micromanagement. Dead.</title>
      <link>http://coyled.com/2010/06/13/wanted-micromanagement-dead.html</link>
      <pubDate>Sun, 13 Jun 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/06/13/wanted-micromanagement-dead</guid>
      <description>Besides passion, &lt;em&gt;trust&lt;/em&gt; is one basic pillar of success in the web industry. &lt;em&gt;Micromanagement&lt;/em&gt; is its Megatron.
&lt;h3&gt;What is Micromanagement?&lt;/h3&gt;
No, it’s not about Starcraft; but it can be related though. Quoting Wikipedia:
&lt;blockquote&gt;In business management, micromanagement is a management style where a manager closely observes or controls the work of his or her subordinates or employees. Micromanagement is generally used as a negative term.&lt;/blockquote&gt;
So yea, micromanagement is a bad thing. In an industry where motivation and passion are the ultimate requirements, anti-trust behaviour is the killer. If you don’t trust your colleagues / subordinates, then something is wrong. It’s either you or them. Which one is it going to be?

&lt;!--more--&gt;

&lt;h3&gt;What makes you not trust your peers?&lt;/h3&gt;
Take your last bad project and analyze your actions, your behaviours and also their actions and their behaviours. Write them down. What did you find?
&lt;ul&gt;
	&lt;li&gt;Did your peers change their way of talking to you?&lt;/li&gt;
	&lt;li&gt;Did they approach you less often?&lt;/li&gt;
	&lt;li&gt;Have they tried to cut the conversation short? Like, hurrying things up so they won’t have to talk to you?&lt;/li&gt;
	&lt;li&gt;Have they stopped doing stuff the way you wanted?&lt;/li&gt;
	&lt;li&gt;Did you start resenting their presence, the moment you even see them at the office?&lt;/li&gt;
	&lt;li&gt;Did you start feeling they are not following your “orders” ?&lt;/li&gt;
	&lt;li&gt;Have you been shouting and cursing more often?&lt;/li&gt;
	&lt;li&gt;More headaches? More stress? Nausea?&lt;/li&gt;
&lt;/ul&gt;
I could spill a dozen more. I experienced these behaviours in some way a while ago. They are real and you can experience them as well, should you choose to.
&lt;h3&gt;How can I turn Micromanagement around?&lt;/h3&gt;
&lt;strong&gt;You can choose not to micromanage your peers&lt;/strong&gt;. Instead, you can lower your bar and let &lt;em&gt;them&lt;/em&gt; manage the project &lt;em&gt;they&lt;/em&gt; are working on. You just manage outer communication. They might even call quits. If that happens, you don’t need to panic; you’re not supposed to. You’re supposed to ask them what should change and share the learning experience with everyone in your company. I’m sure they’ll come up with an answer and I’m even more sure that the learning experience will be welcome and rewarding.
&lt;h3&gt;“Let’s talk.” Never do that!&lt;/h3&gt;
If someone said that to me, I’d talk, sure; but not as comfortable as he wanted. This phrase is a threat. It doesn’t look one but it is, especially if you turn your back like &lt;a href=&quot;http://www.youtube.com/watch?v=glvGfQnx3DI&quot;&gt;David Caruso&lt;/a&gt; does. It gets even worse if he wants to talk to you in the meeting room.

If the subject is important, then you probably want to engage me:
&lt;ul&gt;
	&lt;li&gt;Reach out a smile and a chance for the both of you to figure the solution out.&lt;/li&gt;
	&lt;li&gt;Listen to who you’re talking.&lt;/li&gt;
	&lt;li&gt;Be honest with the both of you.&lt;/li&gt;
	&lt;li&gt;Don’t explode. If you are, then probably you’ve reached the path of no return. Say you’re sorry, return to the basics and learn from the experience.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Rescaldo do Barcamp PT 2010</title>
      <link>http://coyled.com/2010/06/07/rescaldo-do-barcamp-pt-2010.html</link>
      <pubDate>Mon, 07 Jun 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/06/07/rescaldo-do-barcamp-pt-2010</guid>
      <description>&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;465&quot; height=&quot;360&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=12373138&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;465&quot; height=&quot;360&quot; src=&quot;http://vimeo.com/moogaloop.swf?clip_id=12373138&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ff9933&amp;amp;fullscreen=1&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

Estou muito feliz por me poder envolver com pessoas felizes como as que encontrei no Barcamp que houve no Porto, este fim-de-semana. Obrigado à organização do &lt;a href=&quot;http://barcamppt.org&quot;&gt;Barcamp&lt;/a&gt;, correu muitíssimo bem e é suposto repetir-se.

&lt;!--more--&gt;

Uma sugestão que me esqueci de dar: pensem maior! Sejamos ambiciosos e pensemos em engrandecer em quantidade de pessoas, energia e qualidade. Aquilo que faz destes eventos especiais é &lt;em&gt;a energia que se acumula e os sorrisos que se criam e se partilham&lt;/em&gt;. Mais vezes!
&lt;h3&gt;Convite — Proposta de projeto comunitário&lt;/h3&gt;
&lt;strong&gt;Estou a planear construir uma aplicação web comunitária&lt;/strong&gt;. O objeto principal? O teu &lt;em&gt;Curriculum Vitae&lt;/em&gt;. Quero criar um mecanismo que te permita gostar de manter um CV e usá-lo de maneiras mais criativas e funcionais. O teu contributo é importante para mim e dessa forma, convido-te a &lt;a href=&quot;http://josemota.wufoo.com/forms/questionario-cv&quot;&gt;preencheres este formulário&lt;/a&gt;. A informação que eu conseguir juntar será preciosa para eu conseguir tomar decisões mais acertadas no início do projeto e torná-lo desejável logo no arranque!

Eu vou fazer um resumo da informação que conseguir juntar, brevemente. Quero conseguir ter 100 questionários preenchidos. Portanto, junta-te à festa e espalha a notícia! Fala com quem não tem CV, com quem tem dificuldades em fazer/manter o seu. Convida-os a participarem, vai ser genial!
</description>
    </item>
    
    <item>
      <title>O lamento de um designer</title>
      <link>http://coyled.com/2010/05/26/o-lamento-de-um-designer.html</link>
      <pubDate>Wed, 26 May 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/05/26/o-lamento-de-um-designer</guid>
      <description>Há cerca de dois anos eu concorri para o &lt;a href=&quot;http://zizuzi.pt&quot;&gt;projeto Zizuzi&lt;/a&gt;, um conceito de rede de emprego, com contratandos e contratantes. Quando vi o documento de aproximadamente 17 páginas de conteúdo relativamente preciso e bem organizado, eu pensei que iria participar num projeto inteligente.

Ontem tive curiosidade de ver como estaria o projeto. &lt;em&gt;Morri&lt;/em&gt;. Vejam por vocês.

&lt;a href=&quot;http://jose-mota.net/wp-content/uploads/2010/05/zizuzi.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-148&quot; title=&quot;Projeto Zizuzi - o resultado hediondo&quot; src=&quot;http://jose-mota.net/wp-content/uploads/2010/05/zizuzi-465x335.png&quot; alt=&quot;&quot; width=&quot;465&quot; height=&quot;335&quot; /&gt;&lt;/a&gt;

Sem informação para quem entra, sem forma de registo, nada. E isto é só a página de entrada. Eu até tremo de pensar o que estará lá por dentro. Expresso as minhas condolências pela pobre alma que inventou o nome Zizuzi; em nada sugere &quot;rede de procura e oferta de emprego&quot;.
</description>
    </item>
    
    <item>
      <title>Apresentação no Barcamp PT</title>
      <link>http://coyled.com/2010/05/19/apresentacao-no-barcamp-pt.html</link>
      <pubDate>Wed, 19 May 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/05/19/apresentacao-no-barcamp-pt</guid>
      <description>Vou estar no &lt;a href=&quot;http://barcamppt.org/wiki/index.php/Primavera10&quot;&gt;Barcamp PT Primavera10&lt;/a&gt;. O encontro vai ser realizado no &lt;a href=&quot;http://porto.the-hub.net/&quot;&gt;Hub do Porto&lt;/a&gt;, nos dias 5 e 6 de Junho e eu vou apresentar o tópico: &lt;strong&gt;Psicologia, Paixão e Rails (PPR) - Uma perspectiva mais humana do desenvolvimento Web&lt;/strong&gt;.
&lt;h3&gt;Psicologia não exige curso superior&lt;/h3&gt;
Se achas que não consegues ser psicólogo, então precisas mesmo de vir!

Um bom amigo é um psicólogo; um bom homem da web também é (leia-se &quot;deve ser&quot;) um psicólogo. As variáveis aqui são o prisma e a aplicação da ciência. Vou falar de como psicologia afecta as nossas decisões, bem como as dos nossos clientes e de como podemos contornar os tão afamados entraves e desatinos.
&lt;h3&gt;Paixão é a força motriz&lt;/h3&gt;
&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;480&quot; height=&quot;280&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://www.youtube.com/v/u6XAPnuFjJc&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;280&quot; src=&quot;http://www.youtube.com/v/u6XAPnuFjJc&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

Não é o dinheiro que nos motiva (pelo menos não só). A verdadeira força que nos orienta a atingir resultados e ter motivação é &lt;em&gt;paixão&lt;/em&gt;. Os teus pais sempre te disseram: &lt;cite&gt;Faz aquilo que gostas.&lt;/cite&gt; ou &lt;cite&gt;Quem corre por gosto, não cansa.&lt;/cite&gt;
&lt;h3&gt;Ruby on Rails para concretizar&lt;/h3&gt;
Até hoje ainda não encontrei ferramenta mais completa e linguagem mais simples do que Rails e Ruby, respectivamente. O padrão MVC aproxima o negócio do cliente ao software que quer implementar. O REST permite que os objetos de negócio sejam manipulados de forma simples e uniforme. Existem tantas outras coisas que fazem do Rails a ferramenta de elite.

Se quiserem saber mais, venham! Estou a pensar em apresentar algo mais interativo; algo como envolver a audiência de um certo modo, portanto acho que vai ser bastante engraçado!
</description>
    </item>
    
    <item>
      <title>Não dou mais abraços a estranhos.</title>
      <link>http://coyled.com/2010/04/30/nao-dou-mais-abracos-a-estranhos.html</link>
      <pubDate>Fri, 30 Apr 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/04/30/nao-dou-mais-abracos-a-estranhos</guid>
      <description>Duas pessoas falam ao telefone. Muito provavelmente nunca se viram, nem mesmo se conheceram. Ao fim da conversa, despedem-se com um abraço... eu disse que eles estavam &lt;strong&gt;ao telefone&lt;/strong&gt;, não disse? &lt;em&gt;O QUÊ?!&lt;/em&gt;
&lt;!--more--&gt;
Isto só para dizer que eu não torno a dar abraços a quem não conheço. Seja em encontros técnicos, conferências, palestras, entrevistas de emprego, etc. É no mínimo estranho e, no pior dos casos, uma hipocrisia de todo o tamanho. Muito provavelmente não são capazes de dar o tão afamado abraço.

Uma vez estive numa entrevista de emprego e o empregador gostou de mim. Na despedida, apertamos a mão e ele diz-me: &lt;q&gt;Um abraço!&lt;/q&gt;.
</description>
    </item>
    
    <item>
      <title>HTML Semantics: br's &amp; control labels</title>
      <link>http://coyled.com/2010/04/29/html-semantics-brs-control-labels.html</link>
      <pubDate>Thu, 29 Apr 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/04/29/html-semantics-brs-control-labels</guid>
      <description>&lt;blockquote&gt;&lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt; elements break content. They don't space it.&lt;/blockquote&gt;
This gave birth to a nice debate. I threw that tweet because I was facing a terrible blunder from a fellow designer. He was using &lt;code&gt;&amp;lt;br /&amp;gt;'s&lt;/code&gt; to wrap an &lt;code&gt;&amp;lt;hr /&amp;gt;&lt;/code&gt; just to give the ruler some space — instead of adding margins to it —. &lt;a href=&quot;http://paulozoom.com&quot;&gt;Paulo Zoom&lt;/a&gt; and &lt;a href=&quot;http://levifig.com&quot;&gt;Levi Figueira&lt;/a&gt; propelled the whole thing and I kinda moderated it. The end result was quite satisfying.

&lt;!--more--&gt;
&lt;h3&gt;Our conclusions&lt;/h3&gt;
The only way I'd use &lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt; would be for:
&lt;ul&gt;
	&lt;li&gt;Addresses;&lt;/li&gt;
	&lt;li&gt;Poems;&lt;/li&gt;
	&lt;li&gt;Multiple radio buttons / checkboxes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;There was one more thing.&lt;/h3&gt;
Then the conversation shifted towards how to include labels, inputs and paragraphs inside each other. Levi found &lt;a href=&quot;http://www.w3.org/TR/2010/WD-html5-20100304/forms.html#the-label-element&quot;&gt;this about labels and inputs&lt;/a&gt; on the &lt;a href=&quot;http://www.w3.org/TR/2010/WD-html5-20100304/&quot;&gt;HTML5 specification&lt;/a&gt;:
&lt;blockquote&gt;The &lt;code&gt;label&lt;/code&gt; represents a caption in a user interface. &lt;strong&gt;The caption can be associated with a specific form control, known as the &lt;/strong&gt;&lt;code&gt;&lt;strong&gt;label&lt;/strong&gt;&lt;/code&gt;&lt;strong&gt; element's labeled control&lt;/strong&gt;, either using &lt;code&gt;for&lt;/code&gt; attribute, or by putting the form control inside the &lt;code&gt;label&lt;/code&gt; element itself.&lt;/blockquote&gt;
The idea of including an input inside a label — &lt;code&gt;&amp;lt;label&amp;gt;Label: &amp;lt;input /&amp;gt;&amp;lt;/label&amp;gt;&lt;/code&gt; — didn't convince Paulo as he thought it felt wrong. It's not that bad if you think of this particular example, for instance. Consider a series of checkboxes for a certain field. It would be handy if people knew they can click the text and select the checkbox too, right? Like this:

&lt;label&gt;&lt;input type=&quot;checkbox&quot; /&gt; Checkbox 1&lt;/label&gt;&lt;label&gt;&lt;input type=&quot;checkbox&quot; /&gt; Checkbox 3&lt;/label&gt;&lt;label&gt;&lt;input type=&quot;checkbox&quot; /&gt; Checkbox 3&lt;/label&gt;

If you click the labels, the checkboxes are activated. And it's perfectly semantic as the labels work as controls alike.

Thank you, Paulo and Levi!
</description>
    </item>
    
    <item>
      <title>Tear up your client's proposal in half!</title>
      <link>http://coyled.com/2010/04/26/tear-up-your-clients-proposal-in-half.html</link>
      <pubDate>Mon, 26 Apr 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/04/26/tear-up-your-clients-proposal-in-half</guid>
      <description>&lt;img class=&quot;alignleft&quot; title=&quot;Picture of a teared up contract&quot; src=&quot;http://farm4.static.flickr.com/3626/3357161527_fabbb28d52.jpg&quot; alt=&quot;&quot; width=&quot;121&quot; height=&quot;151&quot; /&gt;Just picture it: you are about to welcome your client into your office for a first meeting. You are excited to know what he wants. He brings his suitcase. Both of you happily sit down and he takes the project briefing out of the suitcase and hands it to you. &lt;q&gt;This is what I want. Please take a look.&lt;/q&gt;, the client happily states, confident in his effort to provide a solid brief for you to work on.
&lt;h3&gt;Take the briefing and &lt;em&gt;tear it up in half!&lt;/em&gt;&lt;/h3&gt;
&lt;!--more--&gt;You heard me! Excuse yourself to him and just rip it apart. Let the client watch (you might wanna tell him that the experience of working with you would be quite different).
&lt;h3&gt;What the hell! Are you serious?&lt;/h3&gt;
Yes! Ask yourself: what would you feel if you started reading a pile of rubbish? What would you feel about reading dozens of pages that might not even be what the client really wants in the end? Well, you can start on the right foot and reset the entire system.

Tearing the briefing up in front of the client will force a chemical reaction inside his body. &lt;em&gt;It is the perfect time for you to teach him your method: the method of emotion&lt;/em&gt;.
&lt;h3&gt;The method of emotion&lt;/h3&gt;
Building experiences is what I want to do because it envolves passion and emotion from other people. Good emotions, that is. Bad emotions are supposed to be secondary and/or should help realize which emotions are the good ones. In the end, you should be glad for having fulfilled a client's need.

Businesses are run by people; they are the materialization of the emotion that drives their creators to actually do it. Nothing more satisfying for a client than knowing he is being &lt;em&gt;heard&lt;/em&gt;, not read. So why not start listening to his heart instead of both looking to a computer screen and/or a briefing? Let them explain to you the emotion they want to feel when they use what you're about to create.

Briefings, paper, a screen, all of these limit our creativity. If you can reduce the load, do it from the very beginning.
&lt;h3&gt;Obviously you don't need to tear &lt;em&gt;his &lt;/em&gt;papers&lt;/h3&gt;
If you're scared of what his reaction might be, you can always pretend it. Get some bad paper the size of the brief, tear it up in front of the client, experience the feeling and then explain it was an exercise to test both yours and your client's creativity.
</description>
    </item>
    
    <item>
      <title>To show or not to show [registered user only actions]</title>
      <link>http://coyled.com/2010/04/20/to-show-or-not-to-show-registered-user-only-actions.html</link>
      <pubDate>Tue, 20 Apr 2010 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/04/20/to-show-or-not-to-show-registered-user-only-actions</guid>
      <description>Last week I struggled with a design decision that really caught my attention. Consider this:
&lt;ul&gt;
	&lt;li&gt;You have a &lt;em&gt;user driven app&lt;/em&gt; on the web.&lt;/li&gt;
	&lt;li&gt;You also provide some actions for &lt;em&gt;guests&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
What you would do? Either:
&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Don't show the user only actions?&lt;/strong&gt; (my opinion: this one reduces clutter on your interface).&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Or do show them and when the user clicks&lt;/strong&gt; the links/buttons, the user gets a login redirected page for every new click?&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;My pick would be number &lt;em&gt;1&lt;/em&gt;. Why?&lt;/h3&gt;
I'd rather have a welcome page that showed you what to use in case you signed up. Actions such as creating a new item on a product list and message sending that apparently require a sign up are confusing for a guest. Besides, clicking on such an action and redirecting you to a login page &lt;em&gt;several times&lt;/em&gt; is not that much of an engaging experience.

Feel free to add up on this thought.
</description>
    </item>
    
    <item>
      <title>I read “REWORK”. I loved it.</title>
      <link>http://coyled.com/2010/03/26/i-read-rework-i-loved-it.html</link>
      <pubDate>Fri, 26 Mar 2010 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/03/26/i-read-rework-i-loved-it</guid>
      <description>&lt;a href=&quot;http://jose-mota.net/wp-content/uploads/2010/03/Photo-on-2010-03-25-at-19.191.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-133&quot; title=&quot;Me holding REWORK, in love.&quot; src=&quot;http://jose-mota.net/wp-content/uploads/2010/03/Photo-on-2010-03-25-at-19.191-465x348.jpg&quot; alt=&quot;&quot; width=&quot;465&quot; height=&quot;348&quot; /&gt;&lt;/a&gt;

&lt;em&gt;REWORK is by far the best book I've read in my whole life&lt;/em&gt;. Even though I read very few books, this one shattered my doubts about wanting to make my own business away. After reading this book — if you must know, I read it in &lt;em&gt;under 24 hours&lt;/em&gt; —, I feel happier about myself, i feel more confident and I also feel more relaxed. My potential as a business owner is as big as everyone else's, including &lt;a href=&quot;http://twitter.com/jasonfried&quot;&gt;Jason's&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/dhh&quot;&gt;David's&lt;/a&gt;, the very authors of the book. Thanks to them, my maturity towards achieving the future I dream of grows bigger by the day.&lt;!--more--&gt;
&lt;h3&gt;What's inside the book anyway?&lt;/h3&gt;
In a nutshell, Jason and David share the top experiences of their life as part of &lt;a href=&quot;http://37signals.com&quot;&gt;37signals&lt;/a&gt;. The book's slogan is &quot;Change the way you work forever&quot;. No wonder.  They write in a straightforward, conversational style so you can feel comfortable while reading. It's divided into two to four page chapters so you won't get lost in the material. The content they share is that simple: no fancy crap, no jargon — as they mention —, just pure juice. &lt;strong&gt;The book will change your fucking mind.&lt;/strong&gt;
&lt;h3&gt;What next? Are you just stopping there, José?&lt;/h3&gt;
No way I'm stopping now! I am considering reading it one more time, except this time I will write my own notes and publish them in a PDF for free.

&lt;a href=&quot;http://www.jumpthecurve.net/images/uploads/linchpin.JPG.jpeg&quot;&gt;&lt;img class=&quot;alignleft&quot; title=&quot;Linchpin: Are you indispensable?, by Seth Godin&quot; src=&quot;http://www.jumpthecurve.net/images/uploads/linchpin.JPG.jpeg&quot; alt=&quot;&quot; width=&quot;68&quot; height=&quot;104&quot; /&gt;&lt;/a&gt; After that, I'm considering reading:
&lt;ul&gt;
	&lt;li&gt; &lt;a href=&quot;http://sethgodin.com&quot;&gt;Seth Godin&lt;/a&gt;'s &lt;cite&gt;Linchpin: Are you indispensable?&lt;/cite&gt;, it's said to be a great book.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://tonyrobbins.com&quot;&gt;Tony Robbins&lt;/a&gt;' &lt;cite&gt;Awaken the Giant Within&lt;/cite&gt;. I've attended one of his conferences and he's totally awesome!&lt;/li&gt;
&lt;/ul&gt;
Is there any other book you'd recommend? There's this one called &lt;a title=&quot;by Luke Wroblewski&quot; href=&quot;http://rosenfeldmedia.com/books/webforms/&quot;&gt;Web Form Design&lt;/a&gt; on Rosenfeld Media that's drawing my attention because of my skillset in UI/UX. Other than that, I'm open to suggestions!
</description>
    </item>
    
    <item>
      <title>Vendo domínio amodadoporto.com</title>
      <link>http://coyled.com/2010/03/17/vendo-dominio-amodadoporto-com.html</link>
      <pubDate>Wed, 17 Mar 2010 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/03/17/vendo-dominio-amodadoporto-com</guid>
      <description>&lt;strong&gt;Valor mínimo: 50€.&lt;/strong&gt;

Se conhecerem alguém interessado, &lt;a href=&quot;http://jose-mota.net/contact&quot;&gt;contactem-me&lt;/a&gt;. Obrigado.
</description>
    </item>
    
    <item>
      <title>Zend Framework: friend or foe?</title>
      <link>http://coyled.com/2010/01/27/zend-framework-friend-or-foe.html</link>
      <pubDate>Wed, 27 Jan 2010 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2010/01/27/zend-framework-friend-or-foe</guid>
      <description>&lt;img class=&quot;alignleft&quot; title=&quot;Zend Framework logo&quot; src=&quot;http://dev.juokaz.com/wp-content/uploads/2009/04/logo-zend-framework.jpg&quot; alt=&quot;&quot; width=&quot;169&quot; height=&quot;114&quot; /&gt;Yesterday I started working for &lt;a href=&quot;http://www.goweb.pt&quot;&gt;Goweb&lt;/a&gt;, a portuguese web development agency. I'm working as a &lt;a href=&quot;http://framework.zend.com&quot;&gt;Zend Framework&lt;/a&gt; developer and I must say I'm very surprised for what I'm learning from the experience so far. It has its unique philosophy – if I can call it like that – and way of coding.

It's not just another MVC framework. It's a set of PHP classes (one of them actually enables MVC and makes it work stand-alone) that allows you to focus a little more on your application logic rather than spending time on fixing technical bugs.

&lt;!--more--&gt;
&lt;h3&gt;Is it any good compared to other frameworks?&lt;/h3&gt;
Considering I have Ruby on Rails and CodeIgniter background, I should point out that all three are different, although Rails and CI have similar approaches to what they try to reach. Zend FW aims to be more generic and reach as much as it can pursue. Since it doesn't have an exact folder structure and conventions take very little into consideration, it's kinda farfecthed to say it's better or worse than the other two.
&lt;h3&gt;What I DO know is…&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Rails' conventions and ease of implementation are gold to me. You can just think of an application architecture and just start building it!&lt;/li&gt;
	&lt;li&gt;Its ActiveRecord is &lt;strong&gt;major&lt;/strong&gt;.&lt;/li&gt;
	&lt;li&gt;CodeIgniter's naming convention and learning curve is simpler than Zend's.&lt;/li&gt;
	&lt;li&gt;Zend's flexibility lets you do whatever you want (as long as you don't see any advantage on ORM).&lt;/li&gt;
	&lt;li&gt;Zend's form design pattern is concise and pretty solid.&lt;/li&gt;
	&lt;li&gt;Zend lets you use any template systems you want (Rails and CI are not that flexible I believe).&lt;/li&gt;
	&lt;li&gt;Zend has direct Web services, PDF, email and authentication/ACL support, amongst others.&lt;/li&gt;
&lt;/ul&gt;
As you are probably guessing, &lt;em&gt;I'm definitely biased towards Rails&lt;/em&gt;. It's just easier for me to get things done. Simple, clean and fast. However, my job is to embrace Zend FW and to explore its potential. I would love to hear from you guys. &lt;strong&gt;What do you think about the framework?&lt;/strong&gt;
</description>
    </item>
    
    <item>
      <title>Approaching people through your website copy</title>
      <link>http://coyled.com/2009/11/07/approaching-people-through-your-website-copy.html</link>
      <pubDate>Sat, 07 Nov 2009 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/11/07/approaching-people-through-your-website-copy</guid>
      <description>Ever since I joined &lt;a href=&quot;http://www.weebiz.com/members/weemaginecom&quot;&gt;Weemagine&lt;/a&gt; and started to help building &lt;a href=&quot;http://weebiz.com&quot;&gt;Weebiz&lt;/a&gt;, I have been learning a lot of stuff other than technology. The marketing team has really good knowledge I can use. This week I concluded that the way we approach people through our content can sometimes – if not always – be key to success.

&lt;!--more--&gt;Whether your website sells products / services or is just a blog with content that’s supposed to be read and not just scanned, what you write should provoke certain feelings that makes the reader want to stick around or maybe be compelled to buy something from it, if that’s the case.
&lt;h3&gt;How &lt;em&gt;should&lt;/em&gt; you write then?&lt;/h3&gt;
The gold rule applies here like a glove. Ask yourself as a regular consumer (not as the seller):
&lt;ul&gt;
	&lt;li&gt;What and how would you like to see the content in your website?&lt;/li&gt;
	&lt;li&gt;What would you like to read to be compelled to move forward?&lt;/li&gt;
	&lt;li&gt;What kind of speech would trigger you to act?&lt;/li&gt;
&lt;/ul&gt;
These are only three of the many questions you can ask yourself. If the text you’re considering doesn’t &lt;em&gt;really&lt;/em&gt; convince you then you ought to try again.
&lt;h3&gt;Golden answer: Stick to real content&lt;/h3&gt;
If your product is good, you won’t need to wrap it with shiny and colorful paper. You just need to point out the facts. Show it how good it really is and nothing else.

Sadly, that’s not a common practice in Portugal. Its people mistakenly think that juggling with adverbs and adjectives makes content better and more compelling. Well, they couldn’t be more wrong. Those times are over. Now that the .com explosion is gone, filling our content with sand isn’t just unnecessary but also has the reverse effect; &lt;strong&gt;instead of attracting people, cheap copy repel them.&lt;/strong&gt;

Today we don’t waste time around the web. It’s all about the juice, why waste money and time if you can just convince your audience with naked truth and facts?
</description>
    </item>
    
    <item>
      <title>Do what you do AND don't like</title>
      <link>http://coyled.com/2009/10/12/do-what-you-do-and-dont-like.html</link>
      <pubDate>Mon, 12 Oct 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/10/12/do-what-you-do-and-dont-like</guid>
      <description>I'm sitting in front of my laptop, working on a tiny side project for a friend. This friend is trying to sell comestic surgery equipment, so he says. I have never tried designing for such an area and it's about time I did because I only spent around 15 minutes searching for design trends and inspiration and I must say it feels good.

Doing what you like is one thing we take for granted most of the time. At least for us designers. We get to be creative most of the time, we enjoy throwing that creativity into a sheet of paper or a Photoshop file, we let our wizardry blossom through our fingers into a screen. It's just that good.

&lt;!--more--&gt;

&lt;h3&gt;Well, it might just not be enough…&lt;/h3&gt;
Even though we enjoy doing what we like (aledgely), we project that happiness for the short term. Take me, for example. Every now and then, I tend to dislike having to work on the same thing everyday, having to fix bugs and take free bullshit from some guy that won't read what's in their face. But hey… &lt;em&gt;I absolutely love my job&lt;/em&gt;.
&lt;blockquote&gt;Love your job = Do the good stuff + Do the nasty stuff × Love you have for good stuff&lt;/blockquote&gt;
Sounds like crap, huh? Well, that's the way it should be. I love my job because I do the good stuff and the bad stuff, and in the end of doing the bad stuff I say: &lt;em&gt;I got things done, hurray! Now I can do good stuff again!&lt;/em&gt;. In a nutshell, &lt;strong&gt;live everything with passion&lt;/strong&gt;. You will be able to say &lt;em&gt;I've accomplished a lot lately&lt;/em&gt; after a while. Why? Not just because you did the good stuff, but mostly because you felt you evolved from the bad stuff you've been through.

Bad experiences are good. They make you bigger on the inside. That's one of the best feelings in the world. I used to curse everyone that brought me bad experiences but now? Thank you guys for where I am now.
&lt;h3&gt;You know what's even better?&lt;/h3&gt;
Along with time, you will master the art of letting the same old crap go away and face new and enticing crap.

You can't just wish a load of crap forever :P
</description>
    </item>
    
    <item>
      <title>Rails à moda do Porto — Episódio 5</title>
      <link>http://coyled.com/2009/09/28/rails-a-moda-do-porto-episodio-5.html</link>
      <pubDate>Mon, 28 Sep 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/09/28/rails-a-moda-do-porto-episodio-5</guid>
      <description>&lt;p&gt;&lt;video width='465' controls='controls' src='/wp-content/uploads/rails-a-moda-do-porto/005.mov'&gt;&lt;/video&gt;&lt;/p&gt;

&lt;p&gt;Hoje vem um tópico muito rápido mas igualmente importante: &lt;strong&gt;&lt;a href=&quot;http://jose-mota.net/wp-content/uploads/rails-a-moda-do-porto/005.mov&quot;&gt;layouts&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Layouts são nada mais e nada menos do que templates de HTML. A sua função é criar um esqueleto básico de como a aplicação pode ficar de modo geral.&lt;/p&gt;

&lt;p&gt;De forma muito simples mostro como:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Indicar o layout a usar nos controladores e nas suas várias acções.&lt;/li&gt;
    &lt;li&gt;Modificar o layout de forma a permitirmos alocação de conteúdo mais eficiente.&lt;/li&gt;
    &lt;li&gt;Criarmos o conteúdo a alocar através da função &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#M001763&quot;&gt;content_for&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;O screencast comprou restaurante!&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://jose-mota.net/wp-content/uploads/2009/09/ramdp.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-123&quot; title=&quot;Novo site do screencast&quot; src=&quot;http://jose-mota.net/wp-content/uploads/2009/09/ramdp-465x366.png&quot; alt=&quot;Novo site do screencast&quot; width=&quot;465&quot; height=&quot;366&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O screencast vai ter casa própria, com ementa e tudo! Visitem &lt;a href=&quot;http://rails.amodadoporto.com&quot;&gt;http://rails.amodadoporto.com&lt;/a&gt;. O próximo episódio já estará lá, bem como a feed para subscreverem, tanto por RSS como por email.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Fail à moda do Porto</title>
      <link>http://coyled.com/2009/09/21/fail-a-moda-do-porto.html</link>
      <pubDate>Mon, 21 Sep 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/09/21/fail-a-moda-do-porto</guid>
      <description>Caros amigos que seguem o meu blog ou o meu screencast, segue um pedido de desculpas por não ter dado notícias durante duas semanas. Quem pensou que o Rails à moda do Porto morreu, engana-se; está apenas em coma workólico.

Têm sido duas semanas duras, cheias de trabalho por aqui no Weebiz. Estamos a trabalhar muito para trazer à comunidade empresarial a melhor plataforma social de negócios. Espero este fim-de-semana próximo ter oportunidade para vos presentear com mais magia do Rails.

Até lá, rogo-vos paciência. Até porque também preciso de construir as plataformas do screencast e dos workshops. Vou publicitá-los convenientemente quando estiverem prontos.

Abraço para vós todos!
</description>
    </item>
    
    <item>
      <title>Rails à moda do Porto — Episódio 4</title>
      <link>http://coyled.com/2009/09/06/rails-a-moda-do-porto-episodio-4.html</link>
      <pubDate>Sun, 06 Sep 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/09/06/rails-a-moda-do-porto-episodio-4</guid>
      <description>&lt;video width='465' src='/wp-content/uploads/rails-a-moda-do-porto/004.mov' controls='controls'&gt;&lt;/video&gt;

A nossa aplicação &lt;em&gt;Escola&lt;/em&gt; está a andar sobre &lt;em&gt;rails&lt;/em&gt; (andar sobre rodas já é muito século XIX ;)). As possibilidades de transformar conteúdo em formatos diferentes são imensas! Por defeito, temos a possibilidade de gerar XML e JSON. Através da ajuda de outras bibliotecas, podemos gerar o que quisermos, desde PDF a RSS, passando inclusivamente por gerarmos &lt;em&gt;templates&lt;/em&gt; diferentes para iPhone ou para outros dispositivos.

&lt;!--more--&gt;

No &lt;a href=&quot;/wp-content/uploads/rails-a-moda-do-porto/004.mov&quot;&gt;episódio de hoje&lt;/a&gt;, mostro como gerar XML, RSS e JSON para a nossa lista de alunos. Deixo também algumas referências sobre como gerar PDF. Se tiverem dúvidas não hesitem em apontá-las em baixo, terei o maior gosto em ajudar!
&lt;h3&gt;Para a semana não há episódio&lt;/h3&gt;
Infelizmente na próxima semana não vou conseguir gravar o próximo episódio dado que vou estar a concentrar o meu esforço em lançar o &lt;a href=&quot;http://blog.weebiz.com/2009/09/redesigning-weebiz/&quot;&gt;novo design do Weebiz&lt;/a&gt;. Até lá, sugiro que continuem a estudar o que foi feito até agora e inclusivamente mandem sugestões do que gostariam de ouvir num futuro episódio.
</description>
    </item>
    
    <item>
      <title>Rails à moda do Porto — Episódio 3</title>
      <link>http://coyled.com/2009/08/30/rails-a-moda-do-porto-episodio-3.html</link>
      <pubDate>Sun, 30 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/30/rails-a-moda-do-porto-episodio-3</guid>
      <description>&lt;video width='465' controls='controls' src='/wp-content/uploads/rails-a-moda-do-porto/003.mov'&gt;&lt;/video&gt;

A parte mais importante de uma aplicação: pô-la a trabalhar. Como? Construindo lógica para satisfazer as necessidades do negócio.

&lt;a href=&quot;/wp-content/uploads/rails-a-moda-do-porto/003.mov&quot;&gt;Neste episódio&lt;/a&gt; constrói-se uma relação entre dois modelos: Aluno com Disciplina através de um novo modelo: Nota. Foi um bocado difícil por tudo a funcionar mas espero que consigam assimilar o conceito de relações, dado o contexto. Existem outras situações com certeza e terão a sua ocasião de serem abordadas.

&lt;!--more--&gt;

Se por alguma razão não conseguirem compreender o procedimento, comentem em baixo ou mandem-me um email com a vossa dúvida, terei o maior gosto em explicar.

&lt;h3&gt;Código&lt;/h3&gt;

&lt;pre class='brush:bash'&gt;script/generate scaffold disciplina nome:string creditos:integer
script/generate model nota valor:integer aluno_id:integer disciplina_id:integer&lt;/pre&gt;

&lt;pre class='brush:rails'&gt;class Nota &lt; ActiveRecord::Base
	belongs_to :aluno
	belongs_to :disciplina
end

class Disciplina &lt; ActiveRecord::Base
	has_many :alunos, :through =&gt; :notas
	has_many :notas
end

class Aluno &lt; ActiveRecord::Base
	has_many :disciplinas, :through =&gt; :notas
	has_many :notas
end&lt;/pre&gt;

&lt;pre class='brush:rails'&gt;
# atribuir_disciplinas.html.erb

&amp;lt;% form_for @aluno do |f| %&amp;gt;
	&amp;lt;% for disciplina in Disciplina.all do %&amp;gt;
	&amp;lt;p&amp;gt;
		&amp;lt;%= label_tag &amp;quot;&amp;quot;, disciplina.nome %&amp;gt;
		&amp;lt;%= check_box_tag &amp;quot;aluno[disciplina_ids][]&amp;quot;, disciplina.id, @aluno.disciplinas.include?(disciplina) %&amp;gt;
	&amp;lt;/p&amp;gt;
	&amp;lt;% end %&amp;gt;
	&amp;lt;%= f.submit &amp;quot;Atribuir&amp;quot; %&amp;gt;
&amp;lt;% end %&amp;gt;

# alunos/show.html.erb

&amp;lt;ul&amp;gt;
	&amp;lt;% for aluno in @disciplina.alunos do%&amp;gt;
		&amp;lt;li&amp;gt;&amp;lt;%= aluno.primeironome %&amp;gt; &amp;lt;%= aluno.ultimonome %&amp;gt;&amp;lt;/li&amp;gt;
	&amp;lt;% end %&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/pre&gt;
</description>
    </item>
    
    <item>
      <title>Designing for the invisible</title>
      <link>http://coyled.com/2009/08/29/designing-for-the-invisible.html</link>
      <pubDate>Sat, 29 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/29/designing-for-the-invisible</guid>
      <description>There is a new technique on user interface / experience cunningly mentioned by &lt;a href=&quot;http://superfluousbanter.com&quot;&gt;Dan Rubin&lt;/a&gt;, &lt;a title=&quot;Dan Rubin at the Boagworld podcast&quot; href=&quot;http://boagworld.com/podcast/179&quot;&gt;a while ago&lt;/a&gt;. It is also used brilliantly in great applications, such as &lt;a href=&quot;http://facebook.com&quot;&gt;Facebook&lt;/a&gt; or Wordpress itself. I took interest over the subject because I believe it is an important aspect of the modern web experience.

&lt;!--more--&gt;

Dan mentioned the principle of &lt;em&gt;designing for the invisible&lt;/em&gt;. What this means is a designer prepares a design — generally for a web application — in order to create a clean layout and provoke the user to explore certain data, providing confort and thus a better experience.
&lt;h3&gt;Where to design for the invisible?&lt;/h3&gt;
There are lots of situations where you can apply this principle. Even though it can be freshening to use, designing for the invisible has the risk of hiding data from your user, and that can be dangerous sometimes. It really depends on the kind of experience you're trying to reach for. Situations to consider can be:
&lt;ul&gt;
	&lt;li&gt;Areas in which a user is likely to hover.&lt;/li&gt;
	&lt;li&gt;Places with too much information that can represent a threat of not being paid due attention.&lt;/li&gt;
	&lt;li&gt;Resources that have a main purpose (such as reading it) and also can have other secondary actions (such as admin actions).&lt;/li&gt;
	&lt;li&gt;Certain content that can have tiny AJAX calls, like removing an item from a cart which only requires a little call to remove it.&lt;/li&gt;
&lt;/ul&gt;
Let's consider the example of Wordpress, for example:

&lt;a href=&quot;http://jose-mota.net/wp-content/uploads/2009/08/Picture-1.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-115&quot; title=&quot;Wordpress post management&quot; src=&quot;http://jose-mota.net/wp-content/uploads/2009/08/Picture-1.png&quot; alt=&quot;Wordpress post management&quot; width=&quot;451&quot; height=&quot;331&quot; /&gt;&lt;/a&gt;

This is a very basic post management page. Supposedly, such a list should have a list of repetitive actions which clutter the interface. The solution for this problem: &lt;em&gt;Wordpress hid those actions&lt;/em&gt;. As it knew a user had to hover the respective item to do anything with it, the actions only appear when the user does hover the item.

&lt;a href=&quot;http://jose-mota.net/wp-content/uploads/2009/08/Picture-2.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-116&quot; title=&quot;Wordpress page administration with admin options&quot; src=&quot;http://jose-mota.net/wp-content/uploads/2009/08/Picture-2.png&quot; alt=&quot;Wordpress page administration with admin options&quot; width=&quot;444&quot; height=&quot;326&quot; /&gt;&lt;/a&gt;

This is one of many examples that can take advantage of this principle. According to your requirements, you can be as creative as you can. Just be careful not to overuse it, remember: the experience depends on both your product and your user. Study them well and you succeed.
</description>
    </item>
    
    <item>
      <title>Rails à Moda do Porto — Episódio 2</title>
      <link>http://coyled.com/2009/08/24/rails-a-moda-do-porto-episodio-2.html</link>
      <pubDate>Mon, 24 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/24/rails-a-moda-do-porto-episodio-2</guid>
      <description>&lt;video width='465' controls='controls' src='/wp-content/uploads/rails-a-moda-do-porto/002.mov'&gt;&lt;/video&gt;
Quantas vezes pensamos no trabalho que dá validarmos formulários? Misturar lógica com apresentação apenas para validar uma coisa pequena consegue ser uma verdadeira dor de cabeça.

&lt;!--more--&gt;

No seguimento da aplicação educacional que iniciámos no primeiro episódio, &lt;a href=&quot;/wp-content/uploads/rails-a-moda-do-porto/002.mov&quot;&gt;este segundo&lt;/a&gt; aborda &lt;strong&gt;validações&lt;/strong&gt;. Com apenas duas instruções, conseguimos dizer ao sistema que queremos que o sistema verifique a presença de vários campos, bem como a numericalidade de outro campo. Existem muitas mais validações que podem ser consultadas na &lt;a href=&quot;http://api.rubyonrails.org/&quot;&gt;API do Rails&lt;/a&gt;.
&lt;pre class=&quot;brush:rails&quot;&gt;class Aluno &amp;lt; ActiveRecord::Base
	validates_presence_of :primeironome, :ultimonome, :email, :sexo
	validates_numericality_of :telefone
end&lt;/pre&gt;
Já sabem, podem contribuir com os vossos comentários e dúvidas.

&lt;strong&gt;Edit:&lt;/strong&gt; A pedido de alguns assíduos colegas, segue abaixo a lista de todas as validações possíveis:
&lt;ol&gt;
	&lt;li&gt;validates_acceptance_of&lt;/li&gt;
	&lt;li&gt;validates_associated&lt;/li&gt;
	&lt;li&gt;validates_confirmation_of&lt;/li&gt;
	&lt;li&gt;validates_each&lt;/li&gt;
	&lt;li&gt;validates_exclusion_of&lt;/li&gt;
	&lt;li&gt;validates_format_of&lt;/li&gt;
	&lt;li&gt;validates_inclusion_of&lt;/li&gt;
	&lt;li&gt;validates_length_of&lt;/li&gt;
	&lt;li&gt;validates_numericality_of&lt;/li&gt;
	&lt;li&gt;validates_presence_of&lt;/li&gt;
	&lt;li&gt;validates_size_of&lt;/li&gt;
	&lt;li&gt;validates_uniqueness_of&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>Should you still support IE 6?</title>
      <link>http://coyled.com/2009/08/19/should-you-still-support-ie-6.html</link>
      <pubDate>Wed, 19 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/19/should-you-still-support-ie-6</guid>
      <description>Yea, that's right: I'm talking about &lt;em&gt;you-know-which browser&lt;/em&gt;.
&lt;h3&gt;What is this IE 6 phenomenon anyway??&lt;/h3&gt;
Internet Explorer 6 is the 8-year old Microsoft browser, it comes by default in Windows XP. There are already versions 7 and 8 for this browser. Version 6 is now extremely outdated as it doesn't offer the best experience and quality when visiting a website. Web standards have evolved since the time and so upgrade is extremely recommended for all users.

&lt;!--more--&gt;
&lt;h3&gt;Are you a designer? An aware one?&lt;/h3&gt;
If you are, then you know that IE 6 is a PITA when it comes to designing a website or application. Its support for CSS 2 is not perfect and thus it causes a lot of frustration. In my case, it takes double the work (and money) to support websites in IE 6.
&lt;h3&gt;What about “those” clients? They only use IE 6!&lt;/h3&gt;
If you have clients that still use IE 6, it really depends on what you wrote a contract for. If you promised to support it, well... there is nothing you can do. What you &lt;em&gt;can&lt;/em&gt; do is prepare for the future.

Paul Boag said brilliantly:
&lt;blockquote&gt;The energy we are spending in dropping IE 6 should be used to make our clients realize the truth about IE 6, providing a &lt;strong&gt;lesser experience&lt;/strong&gt;.&lt;/blockquote&gt;
I agree 100% with Paul. We are being plain old silly by even considering tweaking what's good. Old browsers should have an experience of their own. In the end of it all, &lt;strong&gt;what matters most is the content&lt;/strong&gt;.
&lt;h3&gt;So this means the problem is not the browser?&lt;/h3&gt;
YES, the problem is NOT the browser. The problem is what people make of it, both designers and users. Designers have the responsibility to warn the user about the lesser experience and say how they can enjoy the full show. Splitting CSS apart and delivering them according to each browser's capabilities is key. If the full means upgrading, fine. Users will be able to choose now.

If they choose to upgrade, don't be a fool, go help the guy! You will score good points.
</description>
    </item>
    
    <item>
      <title>Rails à moda do Porto - Episódio 1</title>
      <link>http://coyled.com/2009/08/16/rails-a-moda-do-porto-episodio-1.html</link>
      <pubDate>Sun, 16 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/16/rails-a-moda-do-porto-episodio-1</guid>
      <description>&lt;video width='465' controls='controls' src='/wp-content/uploads/rails-a-moda-do-porto/001.mov'&gt;&lt;a href=&quot;/wp-content/uploads/rails-a-moda-do-porto/001.mov&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-108&quot; title=&quot;rails-a-moda-do-porto&quot; src=&quot;http://jose-mota.net/wp-content/uploads/2009/08/rails-a-moda-do-porto-465x348.jpg&quot; alt=&quot;rails-a-moda-do-porto&quot; width=&quot;465&quot; height=&quot;348&quot; /&gt;&lt;/a&gt;&lt;/video&gt;

Depois de muitos dias à espera, finalmente vos apresento: &lt;strong&gt;&lt;a href=&quot;/wp-content/uploads/rails-a-moda-do-porto/001.mov&quot;&gt;Rails à moda do Porto&lt;/a&gt;&lt;/strong&gt;, o novo screencast de Ruby on Rails, &lt;em&gt;em Português&lt;/em&gt;! O episódio de hoje é mesmo um cheirinho muito introdutório ao Rails, na tentativa de deixar um gostinho aos meninos mais curiosos.

Este é o primeiro episódio, é natural que tenha MUITA coisa a apontar. Os comentários incentivam-se, contribuam para um melhor screencast!
</description>
    </item>
    
    <item>
      <title>Screencast de Ruby on Rails em português?</title>
      <link>http://coyled.com/2009/08/03/screencast-de-ruby-on-rails-em-portugues.html</link>
      <pubDate>Mon, 03 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/03/screencast-de-ruby-on-rails-em-portugues</guid>
      <description>&lt;img class=&quot;alignleft&quot; title=&quot;Ruby on Rails logo&quot; src=&quot;http://freelanceswitch.com/images/rails-podcast.png&quot; alt=&quot;&quot; height=&quot;120&quot; /&gt;Visto que tenho vindo a conhecer colegas na indústria do desenvolvimento web e que gostariam de começar a aprender Ruby on Rails, eu começo a considerar a hipótese de realizar uma &lt;strong&gt;série de screencasts de Rails em português&lt;/strong&gt;. Por mais entusiasmante que seja o desafio, preciso de saber se vou ter seguidores suficientes e interessados no que tenho para manter uma boa motivação. Começar a série para depois a deixar a meio não é propriamente algo bom.

&lt;!--more--&gt;

O propósito de iniciar um screencast, além do sentido de contribuição do meu conhecimento é dar a conhecer a beleza de programar Ruby e o imenso poder do Rails para construir aplicações web bem pensadas, bem desenhadas e sólidas.

Tu gostavas de conhecer Ruby e Rails? Gostavas de ter um conjunto de vídeos em Português que te mostrassem como fazer aplicações web em Rails? Gostavas inclusivamente de sugerir um workshop de 8 ou 16 horas sobre o assunto? Fico à espera de feedback.
</description>
    </item>
    
    <item>
      <title>Announcing: José Mota — New breakthrough.</title>
      <link>http://coyled.com/2009/08/03/announcing-jose-mota-%25e2%2580%2594-new-breakthrough.html</link>
      <pubDate>Mon, 03 Aug 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/08/03/announcing-jose-mota-%e2%80%94-new-breakthrough</guid>
      <description>Today I officially launch my blog revamp, after a series of hosting and domain issues. I decided to buy a new yet similar domain and host it in a trustful company.

&lt;!--more--&gt;
&lt;h3&gt;So what's new anyway?&lt;/h3&gt;
&lt;h4&gt;New theme series&lt;/h4&gt;
As you may recall, the previous series of theming were named after the purple gem, &lt;em&gt;Amethyst&lt;/em&gt;. This time I baptize this series with a different gem color, namely &lt;strong&gt;Amber&lt;/strong&gt;. I chose browns and yellows to resemble a different level of distinction and so I traded the mysterious nature of the purple for a more determined and sleeker brown &amp;amp; yellow mix. Personally I enjoyed the soft grunge touch to it, it really pushes it up a notch.

I also tried to emphasize the content in a way that's readable, simple and efficient. At least when I read a post, it makes me feel comfortable.
&lt;h4&gt;Back to Wordpress&lt;/h4&gt;
Yes, you heard me: I ditched Drupal in favor of Wordpress. But then you ask:
&lt;blockquote&gt;Are you of your freaking mind? First you use Wordpress, then Drupal and now Wordpress back again??&lt;/blockquote&gt;
&lt;ol&gt;
	&lt;li&gt;Drupal was giving me a lotta headaches just for building a blog and a portfolio. If it were something bigger, then perhaps I'd consider Drupal instead.&lt;/li&gt;
	&lt;li&gt;I must admit: Wordpress' editor is the best one I've ever seen. The media section is built right in and the whole admin area is just so much more inviting.&lt;/li&gt;
	&lt;li&gt;Wordpress also includes import/export features, which Drupal doesn't yet. Well, at least not this good, all I did was import the XML file, plain paste of the wp-content folder, configure the plugins and that's it.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Well, anything else?&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;I'm considering the hypothesis of inviting people to guest post along.&lt;/li&gt;
	&lt;li&gt;A screencast series would be an interesting idea, most likely on Rails or application engineering, and in Portuguese — there are plenty of them in English already.&lt;/li&gt;
&lt;/ul&gt;
That's it for today. I hope that this installation stays put for a long long time. Give your feedback if you are so kind.
</description>
    </item>
    
    <item>
      <title>Learning to be alone</title>
      <link>http://coyled.com/2009/06/29/learning-to-be-alone.html</link>
      <pubDate>Mon, 29 Jun 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/06/29/learning-to-be-alone</guid>
      <description>It's almost been a week since I've got my new job at &lt;a href=&quot;http://tinyurl.com/nltxmn&quot;&gt;Weemagine — Leiria&lt;/a&gt; and living here has been quite an adventure. For those who know me well, you know that it wouldn't be easy. Honestly I thought it would be harder but I have been widely helped by my work team, it has been a tremendous relief to know I can count on them.

&lt;em&gt;[more content is missing due to my previous blog crash. I will try and get the rest of it when I find it possible.]&lt;/em&gt;
</description>
    </item>
    
    <item>
      <title>Como utilizar o MS Word / OpenOffice correctamente</title>
      <link>http://coyled.com/2009/05/24/como-utilizar-o-ms-word-openoffice-correctamente.html</link>
      <pubDate>Sun, 24 May 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/05/24/como-utilizar-o-ms-word-openoffice-correctamente</guid>
      <description>O povo português não sabe utilizar o Microsoft Word — já para não falar de que nem conhecem o &lt;a href=&quot;http://openoffice.org&quot;&gt;OpenOffice&lt;/a&gt;, uma versão gratuita que faz o mesmo ou melhor — e, pior que isso, &lt;strong&gt;gosta de não o saber utilizar&lt;/strong&gt;! Hoje saí duma discussão com o meu pai sobre isso mesmo e não sei bem em que posição cada um fica. Eu já &lt;a href=&quot;/2008/01/a-new-approach-to-word-processing&quot;&gt;escrevi sobre o tema&lt;/a&gt;, desta vez vou abordar o assunto em português para não deixar ninguém de fora. Obrigado ao meu pai por me motivar a escrever sobre o assunto.

&lt;!--more--&gt;
&lt;h3&gt;Estrutura&lt;/h3&gt;
[caption id=&quot;attachment_81&quot; align=&quot;alignnone&quot; width=&quot;260&quot; caption=&quot;MS Word styles&quot;]&lt;a href=&quot;/wp-content/uploads/2009/07/word-styles.png&quot;&gt;&lt;img class=&quot;size-full wp-image-81&quot; title=&quot;MS Word styles&quot; src=&quot;/wp-content/uploads/2009/07/word-styles.png&quot; alt=&quot;MS Word styles&quot; width=&quot;260&quot; height=&quot;335&quot; /&gt;&lt;/a&gt;[/caption]

&lt;em&gt;O Word suporta estilo&lt;/em&gt;s. Já existem alguns predefinidos para se usarem logo. Se quiser, pode mudar a formatação ao seu gosto, mas &lt;strong&gt;mude o estilo, não o texto em si.&lt;/strong&gt; Assim assegura que todo o texto é uniforme e a semântica do seu documento. Quando tiver de utilizar o documento entre plataformas diferentes (entre Word e Openoffice, por exemplo), a frustração é muito mais pequena.
&lt;h3&gt;Conteúdo gerado&lt;/h3&gt;
[caption id=&quot;attachment_80&quot; align=&quot;alignnone&quot; width=&quot;465&quot; caption=&quot;Generated content&quot;]&lt;a href=&quot;/wp-content/uploads/2009/07/Picture-1.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-80&quot; title=&quot;Generated content&quot; src=&quot;/wp-content/uploads/2009/07/Picture-1-465x353.png&quot; alt=&quot;Generated content&quot; width=&quot;465&quot; height=&quot;353&quot; /&gt;&lt;/a&gt;[/caption]

Uma das vantagens de usar os estilos de que falei é o conteúdo gerado ser feito de forma automática e simples. Apenas indique os parâmetros necessários e a aplicação gera automaticamente o conteúdo. Melhor que gerá-lo é actualizá-lo com apenas um clique — botão direito do rato em cima do conteúdo e pedir para o actualizar. &lt;em&gt;Mai nada!&lt;/em&gt;
&lt;h3&gt;Alguns conselhos&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;em&gt;Não separe os parágrafos com &amp;lt;Enter&amp;gt;'s a mais&lt;/em&gt;. Defina no seu estilo que quer uma margem diferente e dê-lhe um valor mais generoso.&lt;/li&gt;
	&lt;li&gt;Simplifique as suas listas. Não arraste os manípulos para trás e para a frente, vai acabar por alterar a sua estrutura e depois é mais difícil tornar a endireitar.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Tabelas super simples&lt;/em&gt;. Pode escolher as formatações automáticas sem qualquer problema. Se quiser criar um estilo único, use um estilo para tabelas e use-o sempre. Dêem também espaço suficiente nas células das tabelas.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;&lt;em&gt;Não usem WordArt&lt;/em&gt;&lt;/strong&gt; nem molduras de página. Por favor.&lt;/li&gt;
	&lt;li&gt;Mantenham &lt;em&gt;margens de página acima dos 2,5cm&lt;/em&gt; para ser mais fácil de ler.&lt;/li&gt;
	&lt;li&gt;Se tiverem um uso consistente e relativamente uniforme do Word, &lt;em&gt;considerem criar templates&lt;/em&gt;, com os estilos já todos definidos. Assim não precisam mais de se preocupar com a formatação de cada vez que criam um documento novo.&lt;/li&gt;
&lt;/ol&gt;
Percam algum tempo a conhecer as ferramentas que usam, elas são simples, apenas precisam de procurar. Para aqueles mais ávidos e dispostos a levar o conceito de preparação de documentos mais ao extremo, dêem-se ao trabalho de usar &lt;a href=&quot;http://www.latex-project.org/&quot;&gt;LaTeX&lt;/a&gt;. Eu uso-o e vale mesmo a pena.

Mantenham este conjunto de guias e orientações mais rico, comentem. Contribuam para a melhor produtividade do nosso Portugal.
</description>
    </item>
    
    <item>
      <title>Relationships in Rails 2.3</title>
      <link>http://coyled.com/2009/04/30/relationships-in-rails-2-3.html</link>
      <pubDate>Thu, 30 Apr 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/04/30/relationships-in-rails-2-3</guid>
      <description>&lt;p&gt;Ruby on Rails is becoming quite a piece of software. I've been learning how to
work with its latest version to date, 2.3, for a series of workshops on web
development. It has surprised me how easy it is now to accomplish a simple task
such as multi-model form processing. Let me show what I've been doing lately.&lt;/p&gt;

&lt;h2&gt;Case study: a school&lt;/h2&gt;

&lt;p&gt;The example I am going to show my attendees resembles a typical school
situation. In a nutsheel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students have Subjects.&lt;/li&gt;
&lt;li&gt;Subjects have Students.&lt;/li&gt;
&lt;li&gt;Students have Grades to Subjects.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2009/07/rails-relationships-student.png&quot; alt=&quot;Rails relationships — student&quot; /&gt;&lt;/p&gt;

&lt;h2&gt;The Models&lt;/h2&gt;

&lt;h3&gt;Student&lt;/h3&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Student&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Base&lt;/span&gt;
 &lt;span class=&quot;err&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;has_many&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:grades&lt;/span&gt;
 &lt;span class=&quot;err&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;has_many&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:subjects&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:through&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:grades&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:uniq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
   &lt;span class=&quot;n&quot;&gt;accepts_nested_attributes_for&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:grades&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:allow_destroy&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Subject&lt;/h3&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Subject&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Base&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;validates_uniqueness_of&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:shortname&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;has_many&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:grades&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;has_many&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:students&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:through&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:grades&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:uniq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Grade&lt;/h3&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Grade&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Base&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;belongs_to&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:subject&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;belongs_to&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:student&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;validates_presence_of&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:value&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h2&gt;And the magic trick!&lt;/h2&gt;

&lt;p&gt;Through &lt;code&gt;accepts_nested_attributes_for&lt;/code&gt;, the student's &lt;code&gt;form_for&lt;/code&gt; can now
accept nested fields through &lt;code&gt;fields_for&lt;/code&gt; for setting Grades' data.&lt;/p&gt;

&lt;p&gt;Everytime a student is created, subjects are not directly associated to him.
You need to create a form in which you allow to assign a student the subjects
you want.&lt;/p&gt;

&lt;p&gt;[image missing]&lt;/p&gt;

&lt;p&gt;This tells you that a student can have an array of subject id's. You even get
to see what subjects are already assigned and dissociate them just like that!
When the associations are done, a new Grade record is created to associate the
first two modules. Unfortunately, when the associations are dismantled, the
Grade association is gone too.&lt;/p&gt;

&lt;p&gt;If you know Railscasts, the &lt;a href=&quot;http://railscasts.com/episodes?search=complex+forms&quot;&gt;Complex
Forms&lt;/a&gt; series explain this
task for Rails &amp;lt; 2.3. But now it has become easier and easier to associate
models and worrying less about your structure.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>How to backup your Drupal site using Backup &amp; Migrate</title>
      <link>http://coyled.com/2009/04/17/how-to-backup-your-drupal-site-using-backup-migrate.html</link>
      <pubDate>Fri, 17 Apr 2009 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/04/17/how-to-backup-your-drupal-site-using-backup-migrate</guid>
      <description>&lt;p&gt;Back from the dead; I mean, my hosting has been dead for more than a week.
That's why I finally decided to back my Drupal website up just in case I get
screwed again. The magic tool: &lt;a href=&quot;http://drupal.org/project/backup_migrate&quot; title=&quot;&quot;&gt;Backup &amp;amp;
Migrate&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Backup &amp;amp; Migrate is a Drupal module that, once installed, allows you to
easily backup your entire database into one single file. It also has the
ability to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restore that backup in any Drupal installation.&lt;/li&gt;
&lt;li&gt;Schedule backup generation.&lt;/li&gt;
&lt;li&gt;Generate backups under gzip, bzip or zip format.&lt;/li&gt;
&lt;li&gt;Select only the tables you want to backup and even the table structure (no content).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The only thing I found missing is file backup, such as images, themes and other
modules. I honestly hope it knows what modules were installed so the only thing
I need to do is paste the entire &lt;code&gt;sites&lt;/code&gt; folder, install this
module, import the database and &lt;em&gt;wham!&lt;/em&gt;, the site is up and running. Oh and by
the way, Drupal core version is something to consider, since it depends heavily
on the database configurations. Just make sure the version you currently use is
the same to the one you're importing the database to.&lt;/p&gt;

&lt;p&gt;If you know Drupal, you know portability is a serious issue of his. Well, at
least you know how to back it up and even set boundaries between your
development and production environments!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Rescaldo do Africadançar 2009</title>
      <link>http://coyled.com/2009/03/24/rescaldo-do-africadancar-2009.html</link>
      <pubDate>Tue, 24 Mar 2009 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/03/24/rescaldo-do-africadancar-2009</guid>
      <description>&lt;p&gt;Para quem não sabe, este Domingo participei na gala final do
&lt;a href=&quot;http://africadancar.com&quot;&gt;Africadançar&lt;/a&gt;, no Cinema de São Jorge, Lisboa. Em
poucas palavras, não valeu tanto a pena: a atribuição dos prémios foi forjada,
os concorrentes foram tratados a um nível animalesco e o clima gerado durante o
concurso foi caótico; ou seja, parabéns &lt;a href=&quot;http://pmpeventos.com&quot;&gt;PMPeventos&lt;/a&gt;:
vocês falharam redondamente.&lt;/p&gt;

&lt;p&gt;Isto é só um pequeno leque do todo que aconteceu durante e depois da gala. Já
lá vão 24 horas e metade já se me olvidou :D&lt;/p&gt;

&lt;h2&gt;A &lt;em&gt;forja&lt;/em&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;O primeiro lugar foi atribuído aos representantes de Angola. Este par
profissional com alegadamente 4 anos de experiência internacional, dançou 4
minutos em vez dos 2 como todos os outros. E não, ninguém acredita na falta
de profissionalismo dos produtores quando dizem que o DJ se enganou a pôr a
música deles.&lt;/li&gt;
&lt;li&gt;O segundo lugar já tinha estado na televisão, parece que no programa da
Fátima Lopes. Não há nada como um tachinho.&lt;/li&gt;
&lt;li&gt;O terceiro lugar, que segundo muitos não fez nada de especial (além do strip
dela), além de também ter aparecido na televisão, parece que são afilhados
dos Irmãos Verdades. Cunhas não faltam por aqui, pois não...?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Só os que estavam a olhar para o júri é que conseguiram ver a cara de pau deles
quando os vencedores foram anunciados.&lt;/p&gt;

&lt;h3&gt;Tratamento VIP aos concorrentes&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Tinham-nos dito que deveríamos estar no local da gala às 12h para ensaiarmos.
Começámos apenas às 14h30. Ah esperem! Sabem quanto tempo demorou o ensaio? 2
minutos. Alguns nem sequer ensaiaram! Super profissional.&lt;/li&gt;
&lt;li&gt;Eu e muitos outros viemos do Norte e do Sul do país. Nós por exemplo, só em
viagens, gastámos mais de 100, só num dia. Juntem a semi final, o preço
escandaloso dos bilhetes para a família que nos veio apoiar e somem tudo...
Quanto nos foi ajudado? Zero.O mais escandaloso: os concorrentes
internacionais tiveram a viagem de ida paga. Qual é a palavra parecida com
xenofobia mas para os conterrâneos? Hmm...&lt;/li&gt;
&lt;li&gt;A única coisa que nos deram (de bom) para além da medalha no fim foi água.
Foi-nos prometido um par de sapatos nada. Foi-nos prometido o conjunto de
workshops de Domingo nada. Podia ter-nos sido oferecida uma refeição que
fosse para conhecermos todos os concorrentes, sei lá ...nada.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Moral da história&lt;/h3&gt;

&lt;p&gt;Em especial para a PMPeventos, &lt;strong&gt;o falhanço é histórico&lt;/strong&gt;. Não se vê na
história (por acaso até sim, na edição do ano passado) tamanha corrupção na
atribuição dos vencedores, tamanha falta de consideração pelos concorrentes e
perigosa vontade de ganhar dinheiro à custa dos não-lisboetas. Fica a sugestão:
experimentem começar por baixo e fidelizar as pessoas em vez de deitarem tudo a
perder logo à primeira oportunidade que encontram para roubarem a carteira do
povo. De mim, não vão ter mais clientes.&lt;/p&gt;

&lt;p&gt;Tenho pena também de ver o júri tão mal comprado. Tenho um carinho muito grande
por eles, mas é triste ver que integridade falha por todos os cantos. O que se
viu nestas duas edições não instiga à confiança de ninguém e muito menos
inspira os futuros participantes a o fazer.&lt;/p&gt;

&lt;p&gt;Tu queres participar? &lt;em&gt;Eh pá, esquece...&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Semi final do concurso internacional de kizomba</title>
      <link>http://coyled.com/2009/03/11/semi-final-do-concurso-internacional-de-kizomba.html</link>
      <pubDate>Wed, 11 Mar 2009 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/03/11/semi-final-do-concurso-internacional-de-kizomba</guid>
      <description>&lt;p&gt;&lt;a href=&quot;/wp-content/uploads/2009/07/kizomba.jpg&quot;&gt;&lt;img class=&quot;size-medium
wp-image-74 alignnone&quot; title=&quot;Os finalistas do concurso internacional de
kizomba&quot; src=&quot;/wp-content/uploads/2009/07/kizomba-465x348.jpg&quot; alt=&quot;Os
finalistas do concurso internacional de kizomba&quot; width=&quot;465&quot; height=&quot;348&quot;
/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sou finalista no &lt;a href=&quot;http://africadancar.com&quot;&gt;Concurso Internacional de Kizomba!&lt;/a&gt;
Dos 23 pares que actuaram na &lt;a href=&quot;http://edsae.com&quot;&gt;EDSAE&lt;/a&gt;, em Lisboa, eu fui um
dos premiados para participar na gala final do dia 22 de Março.&lt;/p&gt;

&lt;p&gt;Entre viagens de carro cansativas, filmes verídicos com 80 rufias armados à
porta da esquadra, dançar na rua e a festa na noite, foi um dos dias mais
divertidos para os 8 amigos que lá estivemos.&lt;/p&gt;

&lt;p&gt;Vou colocando fotografias à medida que as tiver. Estejam atentos!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Building a system on your own when you're a rookie</title>
      <link>http://coyled.com/2009/03/01/building-a-system-on-your-own-when-youre-a-rookie.html</link>
      <pubDate>Sun, 01 Mar 2009 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/03/01/building-a-system-on-your-own-when-youre-a-rookie</guid>
      <description>&lt;p&gt;If you're like me, you'll want to build your website the hard way, just so you
can get to know a little more on programming &lt;abbr title=&quot;PHP: Hypertext
Preprocessor&quot;&gt;PHP&lt;/abbr&gt; and understanding certain aspects regarding its
planning and structure.&lt;/p&gt;

&lt;p&gt;This post is taking place after a conversation I had with a friend of mine in
college about building a website from scratch, in order to learn PHP. Guess
what I told her ;)&lt;/p&gt;

&lt;p&gt;So what if you just wanted to build a website to start a business right away
and never worry about if it works? Is &lt;em&gt;building a website / web application the
best solution&lt;/em&gt; if you wanna start off successful and harmlessly?&lt;/p&gt;

&lt;h2&gt;Know what you want&lt;/h2&gt;

&lt;p&gt;First of all, you need to focus on pointing out what you want. What is it?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A static information website, with a couple forms?&lt;/li&gt;
&lt;li&gt;A blog?&lt;/li&gt;
&lt;li&gt;If you are a photographer, a photo gallery to use as a portfolio?&lt;/li&gt;
&lt;li&gt;A CRM application?&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;&lt;p&gt;With great power comes great responsability.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Whatever you are trying to do, it's important you know if you can do it or go
for already existing applications for your needs. If it's a blog or a photo
gallery, I'd suggest using a CMS like &lt;a href=&quot;http://drupal.org&quot;&gt;Drupal&lt;/a&gt; or
&lt;a href=&quot;http://wordpress.org&quot;&gt;Wordpress&lt;/a&gt;. As for CRM platforms, there are lots of
them, like &lt;a href=&quot;http://xlsuite.org&quot;&gt;XLSuite&lt;/a&gt; or &lt;a href=&quot;http://sugarcrm.com&quot;&gt;SugarCRM&lt;/a&gt; are
in the list.&lt;/p&gt;

&lt;h2&gt;Choosing a framework or not&lt;/h2&gt;

&lt;p&gt;Again, if you're going the hard way, you will most likely discard the option of
using a framework such as the Zend framework or CodeIgniter, since these spare
you the application code management such as URL aliases and filter, database
abstraction / configuration and templating, amongst other things.&lt;/p&gt;

&lt;p&gt;You have two choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not use a framework and learn everything you need from top to bottom. This is
particularly good choice if you're inexperienced but want to learn how to write
and manage an &lt;em&gt;application's architecture&lt;/em&gt; over programming logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose a framework and focus only on the &lt;em&gt;programming logic,&lt;/em&gt; leaving
architecture details to the framework. This is a good choice if you have
acquired some knowledge over time and so you feel confident you will be using
such a framework more often, dedicating more time to the application itself and
not just its skeleton.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;What resources you have&lt;/h2&gt;

&lt;p&gt;I only advise &lt;a href=&quot;http://php.net&quot;&gt;PHP's official website&lt;/a&gt;. It contains all the
reference regarding the language and packages included such as database
operations, XML, Web services, everything. There's always &lt;em&gt;Twitter, IRC and
Google&lt;/em&gt; to help you out. Hey, it did for me, why not you?&lt;/p&gt;

&lt;h2&gt;End of story&lt;/h2&gt;

&lt;p&gt;PHP is just so freaking easy. The hard part is organizing your thought. If you
need any help, drop by this website and reach me, I'd be glad to help. If you
have any resources or suggestions you'd like to mention, please do!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>2009 - my fresh start</title>
      <link>http://coyled.com/2009/02/12/2009-my-fresh-start.html</link>
      <pubDate>Thu, 12 Feb 2009 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/02/12/2009-my-fresh-start</guid>
      <description>Finally, after a long long time, I decide to say something to my readers. It's been crazy in here!

Today starts my 2009 and with it certain acknowledgments and decisions I've made. Today I want to share some these with you.

&lt;!--more--&gt;
&lt;h3&gt;New website theme&lt;/h3&gt;
I've been struggling over the very presentation of my website. After some months I guess I can settle with the &lt;em&gt;6th iteration of the Amethyst series&lt;/em&gt;.

[caption id=&quot;attachment_71&quot; align=&quot;alignnone&quot; width=&quot;465&quot; caption=&quot;Amethyst — 6th iteration&quot;]&lt;a href=&quot;http://localhost:8888/wp-content/uploads/2009/07/amethyst6.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-71&quot; title=&quot;Amethyst — 6th iteration&quot; src=&quot;http://localhost:8888/wp-content/uploads/2009/07/amethyst6-465x313.png&quot; alt=&quot;Amethyst — 6th iteration&quot; width=&quot;465&quot; height=&quot;313&quot; /&gt;&lt;/a&gt;[/caption]
&lt;h3&gt;Posts in Portuguese&lt;/h3&gt;
For the first time I am going to &lt;em&gt;add some posts in portuguese&lt;/em&gt; to allow other audiences to visit my website. Each portuguese post will be categorized and identified as such properly.
&lt;h3&gt;No &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt; direct support&lt;/h3&gt;
Realizing &lt;a href=&quot;http://stopdesign.com&quot;&gt;Stop Design&lt;/a&gt;'s wonderful approach to approach IE users, I am going to &lt;em&gt;drop support for IE6 and maybe even IE7&lt;/em&gt;, providing a proper stylesheet complies with them. Now that IE8 is almost coming, we can and should already do this a long time ago and start discouraging users from using low level browsers. Besides, last time I checked, my IE audience is between 1 and 5%. Not worth the investment.
&lt;h3&gt;Personal bookmarking system&lt;/h3&gt;
I don't use &lt;a href=&quot;http://delicious.com&quot;&gt;delicious&lt;/a&gt; that much and yet I should because I have some pretty good links I wanted me and others to reach more often. That's why I am also going to &lt;em&gt;manage them bookmarks from my Drupal website&lt;/em&gt;. This will be implemented soon enough.
&lt;h3&gt;Conclusion&lt;/h3&gt;
2009 will be a serious and decisive year in my life because it will be the year I will learn a lot on my skills and also get a lot of work to apply them skills and earn what I need to boost my life up a notch or two.

Let's hope for the best!
</description>
    </item>
    
    <item>
      <title>The 960px grid on top of full-range background</title>
      <link>http://coyled.com/2009/01/07/the-960px-grid-on-top-of-full-range-background.html</link>
      <pubDate>Wed, 07 Jan 2009 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2009/01/07/the-960px-grid-on-top-of-full-range-background</guid>
      <description>&lt;p&gt;I have been putting myself to test on a client project, regarding aesthetics. I
have used &quot;The Grid&quot; in other situations but not in this way. I have learned
how to accomplish grid balance on top of full-range background... again, the
hard way. I use this approach in this very blog so you should realize its
result already.&lt;/p&gt;

&lt;p&gt;This accomplishment has been unveiled to me through three of my favorite
websites out there: &lt;a href=&quot;http://simplebits.com&quot;&gt;SimpleBits&lt;/a&gt;,
&lt;a href=&quot;http://viget.com&quot;&gt;Viget&lt;/a&gt; and &lt;a href=&quot;http://onwired.com&quot;&gt;OnWired&lt;/a&gt;. I know a lot of
other websites that use this but these really caught my special attention. If
you see three homepages, all of them use full-range backgrounds and yet they
use the the 960px grid. I wanted that richness in my projects and so I gave it
a try. Before I deepen into the procedure, i must say it's always good to have
a container/bucket div instead of acting directly over the body element for
cross-browser compatibility. I have tried it and IE 6 didn't like it very much.&lt;/p&gt;

&lt;p&gt;We are admitting a simple &lt;em&gt;skeleton&lt;/em&gt; here: a simple header, a navigation
bar, a main body and a footer should do the trick. So here's my procedure:&lt;/p&gt;

&lt;h2&gt;Step 1&lt;/h2&gt;

&lt;p&gt;Create the container div around.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;container&amp;#39;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
→ Skeleton goes here.
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This is helpful as I mentioned in order to set its width to 960px right there.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nf&quot;&gt;#container&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;960px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;X&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;auto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;This is a very basic approach and it's a good one if you want to implement a
30px padded box like &lt;a href=&quot;http://boagworld.com&quot;&gt;Paul Boag&lt;/a&gt; for example. That way
you save further implementation and get a clean shot at the grid. However, if
you plan to use full-range backgrounds like I did then you'll have a little
more work.&lt;/p&gt;

&lt;h2&gt;Step 2&lt;/h2&gt;

&lt;p&gt;Don't set any width for the skeleton div's so they default to 100%. Now you're
ready to set each one a background (perhaps you'll have a repeat-x option or an
attached one merging to the background color). Now each div gets it's own
background, which is what we want. For the header, it would be something like:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;css&quot;&gt;&lt;span class=&quot;nf&quot;&gt;#header&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;#xyz&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;url(&amp;#39;path/to/background.png&amp;#39;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;repeat-x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h2&gt;Step 3&lt;/h2&gt;

&lt;p&gt;Place a single div child inside each skeleton div. All of the content should go
inside these child div's. Then, you can set each div child the 960px width like
this: &lt;code&gt;#container &amp;gt; div &amp;gt; div { width: 960px; margin: 0 auto; }&lt;/code&gt; This tells us
the div's inside the skeleton div's get affected. That's why I'm saying every
piece of content should go inside the child div's, while the background goes
outside. And you ask why not setting the default width to the skeleton div's
itself? Well, you can do that but let me show me the differences.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://josemota.net/sites/default/files/images/1.jpg&quot;&gt;&lt;img
class=&quot;frame frame-unfloated&quot;
src=&quot;http://josemota.net/sites/default/files/images/1_.png&quot; alt=&quot;Without the
child div's it would look like this...&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again, this is a very simple example. You can try lots of other stuff like
positioning only some of the div's, background different settings, anything. I
hope you learned something from this example.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Apache 2 on Mac OS X Leopard 10.5 issue on upgrade</title>
      <link>http://coyled.com/2008/12/25/apache-2-on-mac-os-x-leopard-10-5-issue-on-upgrade.html</link>
      <pubDate>Thu, 25 Dec 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/12/25/apache-2-on-mac-os-x-leopard-10-5-issue-on-upgrade</guid>
      <description>&lt;p&gt;This weekend I decided to arrange my hard drive in a way that I could have a
5GB partition with sinful Windows XP to play some games with the family. To do
that, I bought a 1TB external hard drive to use as a Time Machine backup for
the process. At the time, my disk was already partitioned for Ubuntu but since
I didn't find it useful anymore, I replaced it for Windows.&lt;/p&gt;

&lt;p&gt;Well, the good thing is I can actually play some old games like Empire Earth
and Counter-Strike with the cousins to have some fun. The bad news is my Apache
server settings screwed up. Two things happened.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Number one:&lt;/em&gt; &lt;code&gt;http://localhost/~user&lt;/code&gt; was thrown a &lt;code&gt;403 Forbidden&lt;/code&gt; access.
This problem is the result of the user configurations for the server whilst the
reinstallation / upgrade of the system, they don't exist now. What you have to
do is very simple. Go to /private/etc/apache2/users and create a file
&lt;code&gt;yourshortusername.conf&lt;/code&gt; and type this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;apache&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;/Users/shortusername/Sites/&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;Options&lt;/span&gt; Indexes MultiViews
&lt;span class=&quot;nb&quot;&gt;AllowOverride&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;None&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;Order&lt;/span&gt; allow,deny
&lt;span class=&quot;nb&quot;&gt;Allow&lt;/span&gt; from &lt;span class=&quot;k&quot;&gt;all&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Restart your server and you're ready to go!&lt;/p&gt;

&lt;p&gt;Number two: My virtual hosts blew away. I should have kept a record on how to
do this in case I had to a reinstallation, I guess I can kick myself now. (I'm
solving this as I write this post :P) Three steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;code&gt;/private/etc/hosts&lt;/code&gt; and say you want to assign 127.0.0.1 to your alias,
like this: &lt;code&gt;127.0.0.1 youralias&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;/private/etc/apache2&lt;/code&gt; and uncomment the line that includes the virtual
hosts configuration file. If you want to use PHP, you might want to uncomment
the line that includes it as well.&lt;/li&gt;
&lt;li&gt;Finally, go to &lt;code&gt;/private/etc/apache2/extra&lt;/code&gt; and edit the &lt;code&gt;httpd-vhosts.conf&lt;/code&gt;
mentioned on 2. and add this chunk of code:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;apache&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;127.0.0.1&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;/path/to/your/site/&amp;quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;ServerAlias&lt;/span&gt; yoursitename
&lt;span class=&quot;nb&quot;&gt;ServerName&lt;/span&gt; yoursitename
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Restart your server and virtual hosts are up and running.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Blogging for real people</title>
      <link>http://coyled.com/2008/12/15/blogging-for-real-people.html</link>
      <pubDate>Mon, 15 Dec 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/12/15/blogging-for-real-people</guid>
      <description>&lt;p&gt;Writing blog posts is already a hard task, imagine if you want to write for
other people...! Let me try and share my thoughts on this, it's even a way for
me to keep up with my writing habit.&lt;/p&gt;

&lt;p&gt;What better way to know what to do than taking a look at good blogs out there!
I'll take some of the best that I know, if you know others please spill 'em
out!.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;catchy title&lt;/strong&gt; should already make your brain spark inside,
pretty much like this one I guess. If you have your own blog it should be a
subject of your interest, or if you don't but would like to start one blog,
now it's a good chance to start off pretty well!&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;simple shorthand&lt;/strong&gt; like &lt;a href=&quot;http://avalonstar.com&quot;&gt;Bryan
Veloso&lt;/a&gt;'s is a killer, I just love to know what the
post is all about with a simple touch of uniqueness. Like a newspaper, every
article always has a shorthand to let the reader know if the article is of
his interest or not without reading it all.&lt;/li&gt;
&lt;li&gt;I don't need to say that grammar should be checked before publishing a post,
but more important than that is actually &lt;strong&gt;providing a story line&lt;/strong&gt; that
enhances its reading in the way that readers enjoy a story more than loose
thoughts. This way you even create more reasonable means to actually
understand the post's content and it sticks in people's mind.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Images / videos&lt;/strong&gt; support an idea like nothing else does. I
guess I don't need to say anything else.&lt;/li&gt;
&lt;li&gt;There's also another thing that I found lately and I find of the upmost
importance: &lt;strong&gt;the text to read should be visually appealing.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;I used to have a dark purple &lt;em&gt;background&lt;/em&gt; under white text and it
was not the best idea I came up with because it was freaking hard to read.&lt;/li&gt;
&lt;li&gt;Not just the colors, &lt;em&gt;whitespace &lt;/em&gt;should be taken into
consideration.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;These really play a big role for me. &lt;a href=&quot;http://mezzoblue.com&quot;&gt;Dave Shea&lt;/a&gt;'s blog
is a great example on this matter.&lt;/p&gt;

&lt;p&gt;How about yourself? Do you have any other details you take into consideration?
Should you have a certain blog you find readable, leave your contribution!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Facing freelancers: a skill for clients to master</title>
      <link>http://coyled.com/2008/11/27/facing-freelancers-a-skill-for-clients-to-master.html</link>
      <pubDate>Thu, 27 Nov 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/11/27/facing-freelancers-a-skill-for-clients-to-master</guid>
      <description>&lt;p&gt;Ever had a bad client? You know how the deal: he thinks you can read his mind
and do everything he wants at the first try. Guess again.&lt;/p&gt;

&lt;p&gt;Today a client said to me:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;You've been eating too much cheese, eh José?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;He actually thought he was my only project - even if he was, I am not supposed
to know everything, since he didn't know how to approach me in the first place
and didn't write the specs of what he wanted well enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clients, this is the truth.&lt;/strong&gt; We as freelancers are providing a service for
you. Say specifically what service it is you want us to do, don't just fire an
idea away. If you only have an idea, get it written down. Here's a couple
guidelines for you when approaching us.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you can, personally reach us to discuss the idea open and friendly.&lt;/li&gt;
&lt;li&gt;Be nice to us. We deserve good work experience too.&lt;/li&gt;
&lt;li&gt;Always accomplish what we ask and let us do our job well.&lt;/li&gt;
&lt;li&gt;Be ready to do whatever it takes. Remember, you're paying for the job.&lt;/li&gt;
&lt;li&gt;Let us reach you as nicely as we would like you to reach us. The
worst thing it can happen in such a relationship is to get chills
whenever your name shows up on the screen. Word of experience.&lt;/li&gt;
&lt;li&gt;Pay us. If you feel paying it all in a bunch is too much in your mind, set
reasonable milestones.&lt;/li&gt;
&lt;li&gt;Golden rule: if you want to hire us again, make sure we want to be hired by
you again as well; we can always say no.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It sure sounds like I'm pushing too much on you but I'm not. It's all a matter
of love and motivation. After all, if you want us to do a good job, we need to
feel we're doing a good job for a good person, so &lt;strong&gt;spoil us!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yea, spoil us. Make us feel good and enjoying the work we're doing, we'll feel
like &lt;em&gt;&quot;Hey, this client deserves a treat!&quot;&lt;/em&gt;, rather than &lt;em&gt;&quot;This guy
is getting on my nerves, let me just take care of the business so I don't see
his face anymore...&quot;.&lt;/em&gt; Smile when you're talking to us, praise us when you
see progress.&lt;/p&gt;

&lt;p&gt;I had a client, &lt;a href=&quot;http://tonyrobbins-seminars.com&quot;&gt;Paul Kay&lt;/a&gt;, who deserved a special award because he praised and kept motivating me so much he made me want to do his site smooth and silky, and fast too! &lt;em&gt;I did his website in a week&lt;/em&gt;, for the very first time in my life. We ended up friends and he told he would love to refer me to other people because of the way he made me feel, not actually the other way around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: Freelancers, we should do the same thing, of course! We should praise our client for what he does and motivate him to be on track with our requests the whole time. &lt;strong&gt;Love is reciprocal.&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Effective web design - so many attributes for what?</title>
      <link>http://coyled.com/2008/11/10/effective-web-design-so-many-attributes-for-what.html</link>
      <pubDate>Mon, 10 Nov 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/11/10/effective-web-design-so-many-attributes-for-what</guid>
      <description>Despite the money issues, freelancing is great! It allowed me to learn so much on my proficiency as a designer and as a developer. One of the most important skills I've mastered is &lt;em&gt;web standards&lt;/em&gt;. Designing on top of standards is the ultimate technique for everything else, from presentation with CSS to user experience with Javascript and AJAX.

Even though &lt;a href=&quot;http://drupal.org&quot;&gt;Drupal&lt;/a&gt; is the best &lt;acronym title=&quot;Content Management System&quot;&gt;CMS&lt;/acronym&gt; in the world - which I subscribe with pride -, there's one thing I've been noticing: it has a load of attributes within elements, particularly classes and id's (not to mention sometimes it seems there are loads of div's that look rather unnecessary until certain point). This is good and bad for some reasons, and I'll explain why the Drupal team proceeds that way.

&lt;!--more--&gt;
&lt;h3&gt;Good stuff&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;It allows better comprehension of both structure and semantics of the platform's output. Structure stands for the content you have in it (the What question), semantics stands for its meaning (the Why question).&lt;/li&gt;
	&lt;li&gt;As you know, Drupal has a steep learning curve and as I started stumbling over it I realized certain concepts that Drupal has inherent like delta attribution for blocks, their proper identification and helper class attributes built in, etc. And through this identification system the theming process became much easier because I already knew what and where things were.&lt;/li&gt;
	&lt;li&gt;If you need to style/change behaviour to a certain block or node for any reason (i.e. accessibility, Javascript enhancement...), you can easily select groups individual chunks of markup or even groups of them with Drupal class/id patterned attribution.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Bad stuff&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;Too much of a mess with all the nested div's. I put this one on the top because it's complicated for a rookie to make himself confortable with the output he wants to generate and also because I just hate unnecessary markup. I only need extra div's if I'm going to turn the CSS up &lt;em&gt;one and only one&lt;/em&gt; notch. If I fall with more than one notch, then it's time for a design check.&lt;/li&gt;
	&lt;li&gt;On top of extra div's, extra id's and classes in them. I have a really hard time finding the right rules in CSS to actually hit the element I want. It's a real &lt;acronym title=&quot;Pain In The A$$&quot;&gt;PITA&lt;/acronym&gt;. And most of the times it's actually not necessary to have some of the classes because the parent div already has an id and thus a meaning is already set to its children.&lt;/li&gt;
&lt;/ol&gt;
Drupal is designed in this way so you can choose between theming from scratch and have full control of whatever you might like or not bother and just let Drupal do its job. It's up to your will and your needs to decide wether you choose one or another or even both — like I do —.
&lt;h3&gt;End of story&lt;/h3&gt;
I picked on Drupal for this entry for the reasons I just showed. Speaking more generally, make sure your markup is valid and accurate. If you accomplish this, your design will better and easier, not to mention your javascripting will be smoother and less painful.
</description>
    </item>
    
    <item>
      <title>Accessibility in real life</title>
      <link>http://coyled.com/2008/11/01/accessibility-in-real-life.html</link>
      <pubDate>Sat, 01 Nov 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/11/01/accessibility-in-real-life</guid>
      <description>&lt;p&gt;Yesterday I was at the mall trying to have lunch and I stood before two
restaurants, both 30 feet away from me. I wanted to see the price tags for each
restaurant and the result was the following. The shots were taken with a lousy
Nokia XpressMusic but they totally say my point:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Image043-465x620.jpg&quot; title=&quot;Accessibility 1&quot; alt=&quot;Accessibility 1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Image044-465x620.jpg&quot; title=&quot;Accessibility 2&quot; alt=&quot;Accessibility 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The first shot says where the price is and you can actually can read something
with little effor while in the last you can't even tell where the price is...!&lt;/p&gt;

&lt;p&gt;What better example than this one to show that important content must be well
represented through appropriate style and positioning. &lt;strong&gt;Show your &quot;price
tags&quot; big!&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Collaboration in development</title>
      <link>http://coyled.com/2008/10/29/collaboration-in-development.html</link>
      <pubDate>Wed, 29 Oct 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/10/29/collaboration-in-development</guid>
      <description>&lt;p&gt;I usually write after something big approaches me. This could be no bigger:
&lt;em&gt;collaboration is not considered when developing&lt;/em&gt;. Well, at least not lately.
Here's what happened:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://styl.eti.me&quot;&gt;Roger Byrne&lt;/a&gt; asked me to check a plugin and help him in a
submission form. Roger said to me that the Javascript inside the wordpress
instalation he already had was obtrusive and he needed to render the form with
&lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; only. So I did it; I delivered.
He asked me why the form wasn't submitting. I didn't know because I didn't make
the plugin. In either way, the plugin was kind of a mess. Between lack of
standards and lack of a plugin workflow, me and Roger didn't figure out what
was happening.&lt;/p&gt;

&lt;p&gt;So what do I mean with all of this? Again, collaboration is not considered when
developing. Developers assume their code is flawless and it will work. However,
they don't take a look at crucial guidelines of development: (Note: I'm
thinking of plugins as I write this, but any situation is perfectly suitable.)&lt;/p&gt;

&lt;h2&gt;Logical separation&lt;/h2&gt;

&lt;p&gt;Logic, content, generated content (different than just content), presentation
and behaviour all set apart. Logic goes to one &lt;acronym title=&quot;PHP: Hypertext
Preprocessing&quot;&gt;PHP&lt;/acronym&gt; file, content goes to one markup file,
presentation in a &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; file,
special behaviour in a &lt;acronym title=&quot;Javascript&quot;&gt;JS&lt;/acronym&gt; file. Generated
content can be either part of the CSS or the JS, depends on what's its purpose.&lt;/p&gt;

&lt;h2&gt;Concerning classes…&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Concerning markup, please don't drown it in classes!&lt;/em&gt; Keep it with an
all-around div with an id, most likely you won't need more, you'll most likely
style the children elements from that single id. Also, don't flood it with
unnecessary div's, it hardens its understanding and ... it really might be just
clutter. Are they for IE? Use a &lt;a href=&quot;http://code.google.com/p/ie7-js/&quot;&gt;script&lt;/a&gt;
instead. The client doesn't have Javascript? Get &lt;a href=&quot;http://firefox.com&quot;&gt;Firefox&lt;/a&gt;.
If neither, then you don't need any div's at all.&lt;/p&gt;

&lt;p&gt;Meta-information for each feature and a short glance at the top; easy to read
and above all, summarize every major feature, so a thrown in developer knows
what a certain code does.&lt;/p&gt;

&lt;h2&gt;Comments,&lt;/h2&gt;

&lt;p&gt;In the right place. Don't just write a comment line before every single line.
Only some guidelines. One practice I really like is split the logic of a
function into blocks like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?php&lt;/span&gt; 
&lt;span class=&quot;c1&quot;&gt;# Semantic block 1 {&lt;/span&gt;
  &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;do_something&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# }&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# Semantic block 2 {&lt;/span&gt;
  &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;do_something&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# }&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&quot;x&quot;&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Some text editors like &lt;a href=&quot;http://macromates.com&quot;&gt;Textmate&lt;/a&gt; have the
ability to fold these kinds of blocks, which is a great visual aid in
developing and first-hand comprehension.&lt;/p&gt;

&lt;h2&gt;End of story&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Use web standards, separate each component, take advantage of semantics
in comments and talk it easy.&lt;/em&gt; Better than a developer is one that
knows how to explain what he's done. I'm sure Roger will appreciate it as well
as me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Corrupt kings: an approach to greedy people of the web</title>
      <link>http://coyled.com/2008/10/20/corrupt-kings-an-approach-to-greedy-people-of-the-web.html</link>
      <pubDate>Mon, 20 Oct 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/10/20/corrupt-kings-an-approach-to-greedy-people-of-the-web</guid>
      <description>&lt;p&gt;This is something that intrigues me pretty much: design companies / people who
claim themselves the trophy for great products and yet they suck. I tag these
guys as &lt;em&gt;corrupt kings &lt;/em&gt;or &lt;em&gt;napoleons&lt;/em&gt; of the web because they think they are
the best at what they do and yet they don't and no one tells them so!&lt;/p&gt;

&lt;p&gt;I met a client a couple days ago. He asked me to retake on a project that used
a very strange platform. &quot;Please take a look at the current launch, José&quot;. What
do I do? I browse CSS, accessibility, usability and source code. The apparently
awarded CMS was built on a table based layout and it didn't show the same
results over different browsers. And you say: &quot;OK, so what's the problem with
designing on top of a table layout ?&quot; If it works on many browsers and you
can't afford web standards, well... keep it! But if it comes out as a complete
junk like this, I would be ashamed of myself. The website looks like this in
&lt;a href=&quot;http://localhost:8888/wp-content/uploads/2009/07/ie6.png&quot;&gt;Internet Explorer&lt;/a&gt;,
&lt;a href=&quot;http://localhost:8888/wp-content/uploads/2009/07/firefox.png&quot;&gt;Firefox&lt;/a&gt; and
&lt;a href=&quot;http://localhost:8888/wp-content/uploads/2009/07/safari.png&quot;&gt;Safari&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Any &lt;em&gt;napoleon&lt;/em&gt; with this level of costumer fidelity - yea, the costumers
say they have &lt;em&gt;really great&lt;/em&gt; products! my gosh... — ought to be better
prepared to face the real challenge, when users start to realize there are many
browsers to choose from, new technologies improve user experience and designers
and developers create the web differently with more care for performance,
beauty and usability. Are you a designer reading this? Take a look at web
standards and cross-browser experience. I'm sure you'll like it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mastering content</title>
      <link>http://coyled.com/2008/10/10/mastering-content.html</link>
      <pubDate>Fri, 10 Oct 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/10/10/mastering-content</guid>
      <description>&lt;p&gt;Many times I wonder why there are such brilliant websites and the people behind
them are such great masterminds. I'm already assuming there needs to have a bit
of genius, not just creativity. I'm talking about the core of &lt;em&gt;every&lt;/em&gt; website:
&lt;strong&gt;content.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine you care about content already, but in what way? Do you design for the
content or the other way around? Do you create a layout based on the
information/content you have or do you try and generate content based on the
lovely yet empty work of art you've created with Photoshop?&lt;/p&gt;

&lt;p&gt;Every piece of content has its weight inside a website, acknowledging that is a
major step towards balance and success. I took this into consideration when
building my last project with a local client, in which he asked for many many
chunks of information all organized across pages. Measuring each chunk of
information takes credit in the definition of a proper layout in which each
portion can be more relevant or not through width, height, color, typography,
everything.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Content, not data!&lt;/em&gt; It is our job as designers/engineers to make content out
of data that a client gives us. No matter how much a client sees &lt;em&gt;their
content,&lt;/em&gt; it's still &lt;strong&gt;data&lt;/strong&gt; for us and it's also our job to
help the client understand what data should be like in a website and what
importance it should have to achieve better results. I'm not saying we should
override their needs, we actually need to listen to what they want, we're not
wizards :P We can even pretend we're a regular user of theirs and play the
game, a lot of results come from such an approach concerning usability and
accesibility.&lt;/p&gt;

&lt;h2&gt;End of story&lt;/h2&gt;

&lt;p&gt;Content is what grabs people's attention on a website and the way it's
explicit. You can even have a beautiful background and today's grungy trends
and everything, but if your content is not meaningful and well marked up then
something's definitely wrong.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Pixelmator: a smaller Photoshop.</title>
      <link>http://coyled.com/2008/10/09/pixelmator-a-smaller-photoshop.html</link>
      <pubDate>Thu, 09 Oct 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/10/09/pixelmator-a-smaller-photoshop</guid>
      <description>&lt;p&gt;&lt;img class=&quot;alignleft&quot;
src=&quot;http://upload.wikimedia.org/wikipedia/en/b/bf/PixelmatorAppLogo.png&quot;
alt=&quot;Pixelmator_logo.jpg&quot; width=&quot;75&quot; height=&quot;80&quot; /&gt; I've been sniping
&lt;a href=&quot;http://pixelmator.com&quot;&gt;Pixelmator&lt;/a&gt; for a time ago. Truly simple, fast,
sleek and result-driven tool. Oh, you don't know what Pixelmator is? It's a
photography utility program that allows you to edit photos in a pinch! And
since it's based on Mac so nicely, you can access your iPhoto library
seamlessly. As &lt;a href=&quot;http://en.wikipedia.org/wiki/Steve_Jobs&quot;&gt;master
Jobs&lt;/a&gt; would say: pretty cool, huh?&lt;/p&gt;

&lt;p&gt;Oh and forgot to mention, it's open source based! This means low expense and
good results as usual in the FOSS group. Will be posting some results with my
experience on it, now that I'm almost to embrace photography more seriously. If
you don't have the money nor the mad genius to get Photoshop, this is a real
good way to start!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Last year in a nutshell</title>
      <link>http://coyled.com/2008/09/22/last-year-in-a-nutshell.html</link>
      <pubDate>Mon, 22 Sep 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/09/22/last-year-in-a-nutshell</guid>
      <description>&lt;p&gt;Today is my 22nd birthday. Yay, you say. Actually, it was a lousy day if I must
say, it rained all day, my degree ain't done yet and I have work to do.&lt;/p&gt;

&lt;p&gt;This post is more like an introspection to my progress throughout 2007/2008,
regarding web design, development and self development. It has been by far the
year that I have learned the most. It has been the year where I have put myself
to test the most. It has been the year where I've finally met the USA, their
culture, their &quot;different&quot; food. There were just so many things that happened!
I can't even remember them all.&lt;/p&gt;

&lt;p&gt;This was the last year (until further notice) on my degree.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I experienced the challenge of being a leader of a pseudo-company. It's a
wonderful experience yet tough if you don't know how to do it correctly or if
you go soft. I met wonderful people, grew on open-source and developed my
&lt;em&gt;standardismo&lt;/em&gt; during that time.&lt;/li&gt;
&lt;li&gt;In 2008, I had a two month training in one of the biggest banks in Portugal.
My first true work experience... boy, was that hard. Faced a bad boss, worked
with awful .NET Framework 1.1, coded in Visual Basic and commuted between
home, work and college.&lt;/li&gt;
&lt;li&gt;In July, I went to the USA, met lovely people and a lousy house. Won my first
true job and my first true money. Learned a lot on web design, web tools and
frameworks, productivity, self development and subsistance... everything that
turns you into an adult. It really felt like I've taken lots of hormones to
grow up faster. Try and picture it.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It's September now and I feel wonderful. I know a lot more people, a lot more
of my skills, a lot more of how my future should change from now. Well... I
know it'll change a lot!&lt;/p&gt;

&lt;p&gt;Thanks for everyone that's helped me to become a better person, a better
designer, a better developer, a better friend. I'm not going to name everybody
because I have people I learned from ... for what I should do and what I
shouldn't.&lt;/p&gt;

&lt;p&gt;I believe this year to come will bring me a lot of knowledge, experience and
income so I can fulfill my dreams. Wish me luck!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The balance of my trip to the USA</title>
      <link>http://coyled.com/2008/06/26/the-balance-of-my-trip-to-the-usa.html</link>
      <pubDate>Thu, 26 Jun 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/06/26/the-balance-of-my-trip-to-the-usa</guid>
      <description>&lt;p&gt;Tomorrow will be a week since I left Portugal on my first attempt to live alone
and begin a new life on my own at the United States. Apparently it went wrong
and for all of you guys that actually think that, &lt;em&gt;this is my final statement&lt;/em&gt;
on this week full of adventure, risk and emotions.&lt;/p&gt;

&lt;p&gt;I got in the plain Saturday, July 19th 2008, 9h30am. Everything was still an
exciting mistery. Arrived at Newark, New Jersey at 3pm. &lt;a href=&quot;http://agencyaccess.com&quot;&gt;Jim
Starace&lt;/a&gt; picked me up to show me the town of
Hauppauge, New York. He showed me my office, my home and some parts of town.
For two days we drove to various spots like some stores for me to get some
stuff to eat, sleep and fill the house. It was an interesting weekend, we could
actually chat a little and hang out so me and Jim could get along as friends
and colleagues at work.&lt;/p&gt;

&lt;p&gt;Monday came. Jim picked me from the hotel on our way to start my first day of
work. A wonderful day that was. I met the boss, Keith, a wonderful guy indeed.
Everyone at &lt;a href=&quot;http://agencyaccess.com&quot;&gt;Agency Access&lt;/a&gt; is just lovely! I started
my role as the in-house PHP developer in order to start the project I applied
to. The whole day went just great. I had the perfect work day. I wish these
days could exist where I live.&lt;/p&gt;

&lt;p&gt;Then another major event came upon: my moving in. When I first saw the house
and said to me: &quot;I won't be staying here too long, I can tell...&quot;. The house
«looked» kinda nice but it was only that. The house smelled funny and it had no
lights in the living room nor the bedroom. The floor was carpeted - I am not
used to it - and the couch was dirty. I would get a new couch cover and the
problem would be settled. I was so excited with all the adventure that I didn't
even think about that whole mess. I just wanted to experience all of it;
unfortunately it turned out the other way around.&lt;/p&gt;

&lt;p&gt;The first night at the place was ... peaceful. Until... the landlord turned the
TV out loud till after bed time. I had the whole bedroom lit up by the
moonlight so I just couldn't get no sleep because of these two incidents. I
managed to get some sleep.&lt;/p&gt;

&lt;p&gt;Next day I wake up with pain in my back from the lousy night I had. I get up, I
have breakfast and go to work. A lovely 20 minute walk in the midst of the
trees that fill New York's suburbs. The whole work day was very pleasant and
productive. I was actually enjoying working there very much, no doubt on that.&lt;/p&gt;

&lt;p&gt;When I came home, I felt this deep voidness inside. I was looking at my still
unpacked case, my dirty couch, my TV set and decided to chill out a little bit.
I laid on the couch with my laptop trying to chat with my friends in Portugal.
A nice time that was. When all of them were off I decided to get something to
eat. I had previously got those add-water meals so I could easily start off
with something rather than milk &amp;amp; cereals. So I put turn the oven on and it
didn't last 5 minutes until the fire alarm went off...! I had to turn it off so
the house wouldn't go nuts because of that. So milk &amp;amp; cereals it was for
dinner.&lt;/p&gt;

&lt;p&gt;I tried to listen to some of my music to see if I could relax but the moment I
turned the music on I felt like I wanted to dance it with some girl. Guess
what? There were no girls! Turn it off so I won't be crying. What could I
possibly do at that time (it was like 9pm) ? Nothing but go to bed. And so I
did. What happened? Landlord's TV out loud. Moonlight. I was trembling for so
much disaster. I started crying in despair. That's where I found I was having
no peace. The next morning I got the tickets and went back home.&lt;/p&gt;

&lt;p&gt;Life lesson: never face something &lt;em&gt;that&lt;/em&gt; unknown. I lost a lot of money on this
adventure and I must get them back no matter what. If you are reading this and
want to do something alike this, be careful! I learned a lot in this week
concerning risk taking, investing and inner joy, peace and happiness.&lt;/p&gt;

&lt;p&gt;I appreciate everyone's help and support. But there are three people I want to
thank with kind attention: Jim Starace, for all the incomparable support during
this week, my deepest &lt;em&gt;thank you&lt;/em&gt; goes to you; &lt;em&gt;my mother&lt;/em&gt; because she is my
mother and there is no one like her, period; &lt;a href=&quot;http://onwired.com&quot;&gt;Tony
Chester&lt;/a&gt;, leader of the OnWired team that first offered me
a job but it didn't work. However, his concern has always meant a lot to me. My
regards to you, Tony.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>A feel of deep change</title>
      <link>http://coyled.com/2008/05/25/a-feel-of-deep-change.html</link>
      <pubDate>Sun, 25 May 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/05/25/a-feel-of-deep-change</guid>
      <description>&lt;p&gt;This is a set of thoughts on how I am feeling inside and an attempt to let go /
acknowledge some of these thoughts.&lt;/p&gt;

&lt;p&gt;From the day I joined a company based on Microsoft, my technological values
grew and became rock solid. But I'm feeling sort of a whirlwind deep inside the
social, emotional and psychological values as well.&lt;/p&gt;

&lt;p&gt;I see my country falling apart because of all the speculation on oil fuel. I
see a blind society that doesn't want to evolve and reacts harshly over
technological evolution and over change. I see the government spending a lot, I
see the people rioting for everything, I see heavy taxes, I see professional
disappointment and I see myself in a reckless anxiety, fearing for my
professional success and my happiness. &lt;span style=&quot;text-decoration: line-through;&quot;&gt;
I don't want to live in Portugal because I strongly feel I wouldn't be happy
here. I want a place where I can live without such feelings of fear, no
reliability and lack of vision.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I need a place to express my joy for life, work, friends, love and most of all,
freedom. I need a place where I can grow as a designer and as a developer. I
need scones. I need my own home, my own salary.&lt;/p&gt;

&lt;p&gt;I am changing inside. I am becoming a whole different person; a person who
needs to be independent and have his own story to tell. I am feeling a
different energy. After all, I'm becoming an adult at full speed and I'm having
a different kind of needs from the ones I had when a teenager. Yet, my
strongest desire is to be free and tremendously happy and make other people
feel free and happy as well.&lt;/p&gt;

&lt;p&gt;I feel better already :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>What I think about leadership and work</title>
      <link>http://coyled.com/2008/05/14/what-i-think-about-leadership-and-work.html</link>
      <pubDate>Wed, 14 May 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/05/14/what-i-think-about-leadership-and-work</guid>
      <description>&lt;p&gt;This goes to my dear friend &lt;a href=&quot;http://www.openquest.pt&quot;&gt;FS&lt;/a&gt; who has helped me a
lot today. Thank you for your example.&lt;/p&gt;

&lt;p&gt;I have (re)discovered that not everyone is meant to be a leader. The worst
thing I have concluded is that the actual leaders shouldn't be leaders at all
because they just don't know how to lead people the right way.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bad leaders don't actually consider people as such: they call them
&lt;em&gt;resources&lt;/em&gt;. Honestly I don't feel like I'm an object. What can be more
unmotivating than being treated as &lt;em&gt;something&lt;/em&gt;, not &lt;em&gt;someone&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;Bad leaders don't care of what you think, they just want to see the job done.
I'm not against wanting the job done but I believe we deserve to feel good
while doing our work. &lt;strong&gt;Work is not supposed to be a sacrifice, it's supposed
to be a joyful way to serve people.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Bad leaders don't teach, they criticize and even when they do they do it
wrong. Try and think of God or who/whatever serves you as a perfect example
of a loving teacher. I'm sure much of the disappointments would fade away.&lt;/li&gt;
&lt;li&gt;Bad leaders think they know all and think we can do all. That's a huge
difference between realizing someone's potential is good and showing trust on
her work.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;There would be a lot more bad attitudes I could point out, you can simply
imagine one bad boss you've had (or you still do) and all the bad things they
did to you.&lt;/p&gt;

&lt;p&gt;I want to assure you my will is to release society from wrong principles of
professionalism and misconceptions of professional etiquette. If someone says
you should not be yourself at work then something is definitely wrong. Of
course you can actually be doing something wrong; in that case, I advice you to
look over yourself and get over some big faults of yours. But if you strongly
believe you are a nice person and if you realize your social life is quite
rewarding then fear not and stand up for your valiant principles of innocence
and truth.&lt;/p&gt;

&lt;p&gt;I stand up for a pleasant way of working and for better leadership.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Overuse of AJAX is not good.</title>
      <link>http://coyled.com/2008/05/01/overuse-of-ajax-is-not-good.html</link>
      <pubDate>Thu, 01 May 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/05/01/overuse-of-ajax-is-not-good</guid>
      <description>&lt;p&gt;I was having a nice chat with a &lt;a href=&quot;http://igorcarrasco.com&quot;&gt;partner of mine&lt;/a&gt;
about this new project we're to create soon. I was spreading the word on web
standards design and he actually agreed on the principles. He also asked my
opinion on using &lt;abbr title=&quot;Asynchronous Javascript And XML&quot;&gt;AJAX&lt;/abbr&gt;,
stating that it would be a great tool on server performance, although it would
affect Google indexation; all true.&lt;/p&gt;

&lt;p&gt;The thing is he wanted to use AJAX the wrong way. In other words, he wanted to
use it all the way, including content. That really is harsh towards
findability, according to what he said, thus it shouldn't be used on generating
content, unless we don't actually want it to be found, of course.&lt;/p&gt;

&lt;p&gt;If you want your content to be findable, just don't use AJAX. My whole learning
process is about optimizing content and its generation and what I know for sure
is that AJAX is for optimizing content management and not its generation (if
you still want to use &lt;abbr title=&quot;Asynchronous HTML And
HTTP&quot;&gt;AHAH&lt;/abbr&gt; that's your call, I respect).&lt;/p&gt;

&lt;p&gt;For example, you have a blog with regular posts. If want to insert a new post,
you won't actually need a brand new page just to say the post has been created.
This is the perfect example to use AJAX in which the only thing you have to
print from the server is a single phrase, after doing the insertion in the
database of course.&lt;/p&gt;

&lt;p&gt;And that is only one example, there is a ton more out there!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>LaTeX - the word processor for engineers (and smart people too)</title>
      <link>http://coyled.com/2008/04/21/latex-the-word-processor-for-engineers-and-smart-people-too.html</link>
      <pubDate>Mon, 21 Apr 2008 00:00:00 +0100</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/04/21/latex-the-word-processor-for-engineers-and-smart-people-too</guid>
      <description>&lt;p&gt;When i met &lt;a href=&quot;http://nunojob.wordpress.com&quot;&gt;Nuno Job&lt;/a&gt;, we had a great
time talking about technology and its future. He told me about
&lt;a href=&quot;http://latex-project.org&quot;&gt;LaTeX&lt;/a&gt;, a logical structure word processor.
It allows people to write documents, books, reports, articles, you name it,
through proper source code. This means a lot of things to me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code stays organized, which means the result document stays organized.&lt;/li&gt;
&lt;li&gt;No templates; or in other words, one single template.&lt;/li&gt;
&lt;li&gt;Want to pass the document through the network? Just a few KB instead of
almost 1MB...!&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Despite the LaTeX distribution being larger than a CD (at least for Mac OS, the
Windows version is slightly smaller), it's worth it, especially if you're in a
team in which everyone has to write a piece of a written delivery. I remember I
had to spend almost two hours to format every piece into one big furball.
Sounds kind of messy, huh?  Try gathering up a team, each one writes a piece of
the document at their own way and then try using LaTeX. Your conclusions should
be the same as mine. :D&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>I got my first (bitchy) job!</title>
      <link>http://coyled.com/2008/03/18/i-got-my-first-bitchy-job.html</link>
      <pubDate>Tue, 18 Mar 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/03/18/i-got-my-first-bitchy-job</guid>
      <description>&lt;p&gt;So the day has come... I'm not that excited because the whole day sucked like
hell. If you're a guy who's hoping to get a decent job on your first try,
forget it.&lt;/p&gt;

&lt;p&gt;For a start off, I arrived at 9h30 at the office so I would start being taught
the all-fancy Microsoft's SharePoint... yet the boss only came at midday! I
wasted 2,5 hours for nothing. When the guy actually came he said I should start
with SharePoint right away. The thing is he didn't actually say I was to do it
all by myself. After some dirty stuff we did lifting closets, me and a newcomer
as well were given a book (not two - one per brain - , just one) and told:
&quot;Start doin' it, you have this virtual machine to start playing around...&quot; What
the hell?! Where's our training? This slide-like 250 page book with something
we didn't put our brains into whensoever in our entire life and we just «start
doin' it»??&lt;/p&gt;

&lt;p&gt;The worst thing was the machine I was given: it didn't work! I had to format it
myself and spend 2 hours trying to make it work with the virtual machine up and
running as well..! After everything was clear, I tried to actually run the VM;
result: it didn't work again. One more hour to fix it and it finally goes up.
What's my final suprise? The VM is slow as a turtoise!&lt;/p&gt;

&lt;p&gt;I can't work like this! Somebody make time go bullet fast because I had enough
of this and it's been only my first day! I start to get a little scared of what
might happen the next weeks.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;I'm looking for a company that
wants PHP or Rails with special concern on page design. Just talk to me and
I'll be right over.&lt;/span&gt; No fancy crap like Microsoft please!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Flash navigaton bars? IE 6 only.</title>
      <link>http://coyled.com/2008/03/17/flash-navigaton-bars-ie-6-only.html</link>
      <pubDate>Mon, 17 Mar 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/03/17/flash-navigaton-bars-ie-6-only</guid>
      <description>&lt;p&gt;I recall the times I still used Microsoft's IE browser. Every fancy website had
these navigation bars with killer graphics at the time. I wanted to browse
through the still messy deprecated HTML so I could learn myself some new
techniques along my web design debut. i found this &lt;code&gt;object&lt;/code&gt; tag at the time and
was amazed like &quot;Wow, cool graphics! When do I get the chance to do something
alike?&quot; I found later that it was a Flash object that I consider nowadays to be
a pain in the ass concerning web design standards.&lt;/p&gt;

&lt;p&gt;I don't like the way Flash takes over HTML / CSS / Javascript for three reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's not Flash's job to BE a website or replace HTML content.&lt;/li&gt;
&lt;li&gt;I hate waiting several seconds to see web content.&lt;/li&gt;
&lt;li&gt;Imagine the Internet download bill...!&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Flash is a great technology, I love Youtube. It's fantastic how Flash allows
you to transpose from different video formats into it so people can view it on
the web. But I don't see it as HTML replacer, unless it's IE 6.&lt;/p&gt;

&lt;p&gt;IE 6, as you know, is simply the worst web browser ever (if you deny this I
suggest you go to bed and wait until IE shuts down). The CSS &lt;code&gt;float&lt;/code&gt; property
is not supported. This means if I tried to do this kind navigation bar with
some floated &amp;lt;li&amp;gt; tags, the list would appear top-down..! Designers
thought about this of course and they decided to go for Flash because it had
this chance to show &quot;buttons&quot; and with those killer graphics and hover / click
effects that IE doesn't have except for hyperlinks (even these are limited).&lt;/p&gt;

&lt;p&gt;Flash's arrival came just in time. It would bring much greater vision on web
design; kind of cheating but it's ok. Nowadays we can assist beautiful
accomplishments on web design and killer graphics, without Flash. This can now
be assigned to what it's meant to be: non-content interactive action.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>A new approach to word processing</title>
      <link>http://coyled.com/2008/01/11/a-new-approach-to-word-processing.html</link>
      <pubDate>Fri, 11 Jan 2008 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2008/01/11/a-new-approach-to-word-processing</guid>
      <description>&lt;p&gt;Last month I came up with a college project where we had to report our work in
a 70-90 pages technical document. I was in a five people group and we agreed
that everyone had to write a part of it and gather it all in the end. I was
talking to another group's colleague about the way they were gathering all the
jigsaws of the puzzle. He said his group took about two and a half hours to
complete the formatting and design of the whole document. After I browsed
through their document, I took my not so good conclusions... The report was
somehow inconsistent and compromised. Obviously the job wasn't successfully
accomplished.&lt;/p&gt;

&lt;p&gt;Most people don't know how to process text and that's a fact. Everyone has this
major problem and it affects any organization's productivity. I want to share
some thoughts on this subject, namely three tips:&lt;/p&gt;

&lt;h2&gt;No extra RETURN's&lt;/h2&gt;

&lt;p&gt;We are all used to grant whitespace to each paragraph by pressing RETURN, even
if a single time. Well, don't. Use the space-before/after-paragraph feature. It
may sound strange when you have your text altogether at first glance but when
you apply this feature, the results will be shiny and it will save you a lot of
time!&lt;/p&gt;

&lt;h2&gt;Default styling&lt;/h2&gt;

&lt;p&gt;You should be using this all the time for two major reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You get an instant look and feel of what your document will look like. In my
modest opinion, the default styles on any word processor look just fine.&lt;/li&gt;
&lt;li&gt;You might now know this but when you apply the default styles available, you
automatically build a semantic structure of your document. This means you can
create a table of contents or a document outline with zero effort! This is
extremely useful when exporting to PDF because it promotes accessibility and
usability.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;You can obviously change the style the way you want but you should change the
style and not the paragraph using that style. If you change the style you
ensuring that every single paragraph is affected and the document looks
consistent.&lt;/p&gt;

&lt;h2&gt;Templates&lt;/h2&gt;

&lt;p&gt;It's amazing how powerful this tool can be. Just define the styles in a blank
document - you can even put some text with the various styles to be used - and
save it as a template. Both Microsoft Word and Apple Pages have this feature.
This tool is absolutely power-saving when more than one person writes the same
document.&lt;/p&gt;

&lt;p&gt;Should you use these suggestions I presented and you will have your time saved
for sure.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>A new approach to development</title>
      <link>http://coyled.com/2007/12/21/a-new-approach-to-development.html</link>
      <pubDate>Fri, 21 Dec 2007 00:00:00 +0000</pubDate>
      <author>José Mota</author>
      <guid>http://blog.josemota.net/2007/12/21/a-new-approach-to-development</guid>
      <description>&lt;p&gt;As the Web users number increases, so does the number of Web collaborators,
should we call them this way. In fact, we keep watching the wonderful things
the Web has brought since Tim Berners Lee. Today we see a lot of applications
and a lot of content that increases everyone's attention to one thing: the
Internet is not just for richest and the most powerful. It reaches everyone.&lt;/p&gt;

&lt;p&gt;Developers should take this seriously, as we are Web users as well. We all
enjoy beautifully crafted web pages and the seamless complexity of a web
application like &lt;a title=&quot;Facebook&quot; href=&quot;http://facebook.com&quot;&gt;Facebook&lt;/a&gt;,
&lt;a title=&quot;Drupal&quot; href=&quot;http://drupal.org&quot;&gt;Drupal&lt;/a&gt;, &lt;a
href=&quot;http://digg.com&quot;&gt;Digg&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us&quot;&gt;del.icio.us&lt;/a&gt;,
amongst others. Have we even noticed what's underneath it all? Sounds
interesting... I want to share a very simple guideline that's amazingly
powerful for anyone to grab onto: &lt;em&gt;high-level interfacing.&lt;/em&gt; Imagine
anything you want. I'm picking a blog, for example; like this one. Yea, that's
right: this very blog has this guideline applied.&lt;/p&gt;

&lt;p&gt;A blog as we know it has some basic features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has several &quot;entries&quot;;&lt;/li&gt;
&lt;li&gt;can be commented by anyone (registered or not);&lt;/li&gt;
&lt;li&gt;can be categorized and it is run by it own author, like a journal.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Now imagine yourself with your journal in front of you, all you have to do as
an author is write in it. As a reader, you just want to read and comment it.
You just wished you had a button called &quot;Post!&quot; and a button called &quot;Post
comment!&quot;. It's all part of the same thing, the same object.  Wait a minute:
this reminds me of those boring C++ classes where the teacher yelled at us:
&quot;It's a single object, with its unique methods!&quot;. Well, why not try the same
thing in your tiny little webapp?&lt;/p&gt;

&lt;p&gt;Start thinking about the things our blog example can do. Each feature you think
of should be a function of our new Blog class/interface - I'd rather consider
this an interface, so it can be implemented in any way you like -.  At the end
of it all you'll come up with a neat, professional and clean set of functions
organized in a single structure, thus gaining sense for the user that actually
uses it and for the developer that immediately recognizes the whole structure
and workflow.&lt;/p&gt;

&lt;p&gt;This is high-level information processing; a new approach to web development.&lt;/p&gt;
</description>
    </item>
    

  </channel> 
</rss>
