<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <id>tag:cnxs.com.br,2007:/rss</id>
  <link type="text/html" href="http://cnxs.com.br" rel="alternate"/>
  <link type="application/atom+xml" href="http://cnxs.com.br/rss" rel="self"/>
  <title>CNXS</title>
  <updated>2010-04-21T21:45:59Z</updated>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/54</id>
    <published>2010-04-21T21:45:59Z</published>
    <updated>2010-04-21T21:57:46Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/a-small-lesson-from-zen-brain-reflections" rel="alternate"/>
    <title>A small lesson from Zen Brain reflections</title>
    <content type="html">&lt;P&gt;
There are plenty of lessons to be taken from this &lt;a href=&quot;http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;tid=10764&quot;&gt;book&lt;/a&gt;. Lessons about zen,
    learning, education, brain science, and what it means to be aware of yourself.

&lt;P&gt;
It is, however, not very readable, in the sense that it is very abstract and
    terse sometimes. But it does pass the torpor test[1]. That means that it is
    a hard quest, but one with a great reward.

&lt;P&gt;
A small fragment from the book summarizes its quality:

&lt;P&gt;
&lt;BLOCKQUOTE&gt;
One of these Kyoto-trained Zen teachers taught me a basic lesson about
    myself. A simple, dramatic demonstration showed me how strong was my own
    I-Me-Mine. It happened during an informal private interview before our retreat
    began.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;We had conversed for a while. Then, he took a short, dark, wooden stick
    from his lap and placed it down on the low table in front of us. It caught my eye
    immediately. No ordinary wood was this, but a wonderfully aged, irregularly
    shaped stick, obviously an antique object. This work of art, about a foot long and
    perhaps an inch and a half in diameter, exemplified wabi-sabi. Its mellow patina
    conveyed associations with long use and advanced age. No word was spoken,
    yet the roshi's nod obviously invited me to pick it up.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;I did. Turning it over and around in both hands, I then held it horizontally
    with my right hand at one end, slowly admiring it as I had the other antique
    objects during that earlier ceremony in Kyoto.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;Surprise! In one swift act, the Roshi reached across and suddenly grabbed
    the free end, eyes twinkling as he did so. And almost as fast, without thinking, as
    my grasp reflex tightened, I found myself locked into a semi-mock tussle with the
    rightful owner of this antique treasure!
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;It was an impromptu tug of war, neither of us moving that stick very far in
    either direction. The strength of his pull just sufficed to neutralize mine. So there
    we were, like two boys at play, tugging on his beautiful stick!
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;Soon enough, it dawned on me: How could I possibly dispute his owner-
    ship!? Yielding, and relinquishing my grasp, I found we were both smiling when
    our brief mock play session ended.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;A simple unexpected demonstration: Yes, I had longed to go on admiring
    his beautiful stick. He had (playfully) thwarted Me from doing so. I had behaved
    like it was Mine, and had grasped the stick reflexly. The greedy grasp of the I-Me-
    Mine was nakedly on display.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;Words were unnecessary. I had been educated. I had done more than observe
    the full extent of my own instinctual tendency to grasp things. I had felt the
    strength of my attachment in my muscles, joints, and sinews.
&lt;/BLOCKQUOTE&gt;


[1] Basically, after exposure to the work, do people care less about the subject than they did before? Taken from &lt;a href=&quot;http://portal.acm.org/citation.cfm?id=1177322&amp;dl=GUIDE&amp;coll=GUIDE&amp;CFID=85367401&amp;CFTOKEN=98743088&quot;&gt;this&lt;/a&gt; terrific book.</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/53</id>
    <published>2010-01-20T15:36:23Z</published>
    <updated>2010-01-20T19:48:31Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/good-writing-is-equal-to-good-programming" rel="alternate"/>
    <title>Good writing is equal to good programming</title>
    <content type="html">I just read &lt;A HREF=&quot;good-writing-is-equal-to-good-programming#zinsser_writing&quot;&gt;Zinsser (2010)&lt;/A&gt;, and I though that his approach has a lot in
    common with good programming, and indeed with some good universal design
    principles.

&lt;P&gt;
Zinsser basically resumes his thoughts with these sentences:

&lt;P&gt;

&lt;P&gt;

&lt;UL&gt;
&lt;LI&gt;Short is better than long.
&lt;/LI&gt;
&lt;LI&gt;Simple is good. (Louder)
&lt;/LI&gt;
&lt;LI&gt;Long Latin nouns are the enemy.
&lt;/LI&gt;
&lt;LI&gt;Anglo-Saxon active verbs are your best friend.
&lt;/LI&gt;
&lt;LI&gt;One thought per sentence.
        
&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;

&lt;P&gt;
I think all of that are equivalent to a combination of these universal
    principles of design: &lt;A
 HREF=&quot;good-writing-is-equal-to-good-programming#universal_principles_design&quot;&gt;William&amp;nbsp;Lidwell (2003)&lt;/A&gt;:

&lt;P&gt;

&lt;OL&gt;
&lt;LI&gt;Accessibility - the principle that asserts that the design should be
        usable by people of diverse backgrounds.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;Chunking - accommodates short term memory limits by formatting
        information into small number of units.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;Interference effects - when outputs of different mental system
        are incongruent, interference occurs and additional processing is
        required.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;Ockham's razor - Oldie but goodie. As Einstein puts it
        &lt;SPAN  CLASS=&quot;textit&quot;&gt;Everything should be made as simple as possible, but not simpler.&lt;/SPAN&gt;

&lt;P&gt;
&lt;/LI&gt;
&lt;/OL&gt;

&lt;P&gt;
To close, this little exercise was a great evidence on how writing is simply
    to program in a different media for a different audience (or vice versa) but
    the same principles apply to both of them.

&lt;P&gt;

    &lt;P&gt;
&lt;H2&gt;&lt;A NAME=&quot;SECTIONREF&quot;&gt;Bibliography&lt;/A&gt;
&lt;/H2&gt;

&lt;DL COMPACT&gt;
&lt;DT&gt;&lt;A NAME=&quot;universal_principles_design&quot;&gt;
Jill&amp;nbsp;Butler William&amp;nbsp;Lidwell, Kritina&amp;nbsp;Holden.
&lt;/A&gt;
&lt;DD&gt; &lt;SPAN  CLASS=&quot;textit&quot;&gt;Universal Principles of Design&lt;/SPAN&gt;.
&lt;BR&gt; october 2003.

&lt;BR&gt;
&lt;P&gt;
&lt;DT&gt;&lt;A NAME=&quot;zinsser_writing&quot;&gt;
William Zinsser.
&lt;/A&gt;
&lt;DD&gt; Writing english as a second language.
&lt;BR&gt; 2010.
&lt;BR&gt; URL
  &lt;TT&gt;&lt;A NAME=&quot;tex2html1&quot;
  HREF=&quot;http://www.theamericanscholar.org/writing-english-as-a-second-language/&quot;&gt;http://www.theamericanscholar.org/writing-english-as-a-second-language/&lt;/A&gt;&lt;/TT&gt;.</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/52</id>
    <published>2009-09-08T16:27:17Z</published>
    <updated>2009-09-08T16:27:17Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/c-digo-com-liberdade-ou-morte-porque-hackers-geralmente-s-o-libert-rios" rel="alternate"/>
    <title>C&#243;digo com liberdade ou morte(): Porque Hackers geralmente s&#227;o libert&#225;rios</title>
    <content type="html">&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=utf-8&quot;&gt;

por &lt;A  HREF=&quot;http://dfranke.us/cfod.html&quot;&gt;Daniel Franke&lt;/A&gt;,(traduzido por Eduardo Bellani)


&lt;P&gt;
Para qualquer um que tenha habitado a internet por tempo suficiente para
diferenciar ICANN de 4chan ou um netcat de um LOLcat, n&#227;o vai ser novidade que
hackers s&#227;o com freq&#252;&#234;ncia libert&#225;rios. A raz&#227;o &#233; normalmente entendiada como
algo assim: hackers, por defini&#231;&#227;o, gostam de coisas esquisitas, como desmontar
o tocador de DVD ou pesquisar como uma bomba nuclear funciona. Legisladores, que
falham cronicamente em entender o porque algu&#233;m iria gostar dessas coisas ou
porque que elas teriam valor pra algu&#233;m, passam leis que interferem com essas
atividades. Justificadamente irados, hackers adotam vis&#245;es pol&#237;ticas que se
op&#245;em a estas intrus&#245;es.

&lt;P&gt;
A mais clara exposi&#231;&#227;o deste modelo talvez seja o artigo de 2004 do Paul Graham
chamado &quot;A palavra `hacker'&quot;. A id&#233;ia geral entretanto j&#225; est&#225; tacitamente
entendida a muito mais tempo. Ela &#233; a base para o tom  de v&#225;rias hist&#243;rias do
site Slashdot. Observa&#231;&#245;es da correla&#231;&#227;o hacker-libert&#225;rio &#233; ainda mais
antiga; n&#227;o da pra ler USENET antiga por 10 minutos sem perceber-la.

&lt;P&gt;
A rescri&#231;&#227;o de Gordon ao corol&#225;rio de Newman sobre a lei de Godwin observa
&quot;Libertarismo (pro, contra, e lutas entre as fac&#231;&#245;es) &#233; o t&#243;pico primordial
de discuss&#245;es do net.news. Qualquer hora que o debate muda para outro lugar, ele
precisa eventualmente voltar a esta fonte de combust&#237;vel&quot; (N&#227;o sei quando isto
foi escrito. N&#227;o foi entes de 1990 que a lei de Godwin foi criada, e n&#227;o depois
de 1994 que Godwin a citou).

&lt;P&gt;
Hackers tem uma longa hist&#243;ria de conflitos com governo. Uma lista incompleta:

&lt;P&gt;

&lt;UL&gt;
&lt;LI&gt;1986: O ``Computer Fraud and Abuse Act&quot; passa no congresso americano,
      tornando pela primeira vez cracking um crime. Enquanto ele &#233; direcionado
      principalmente a crimes n&#227;o controversos, abuso legal por autoridades
      ignorantes por atos perfeitamente legais como port-scanning se torna
      rotina na d&#233;cada de 90.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1993: Philip Zimmerman &#233; o alvo de uma investiga&#231;&#227;o criminal depois que o
      PGP &#233; sai dos Estados Unidos, em viola&#231;&#227;o de restri&#231;&#245;es de exporta&#231;&#227;o para
      criptografia (que era classificada como muni&#231;&#227;o na &#233;poca).

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1996: O ``Communications Decency Act&quot; restringe severamente material
      &quot;obsceno ou indecente&quot; na internet. Esta lei &#233; negada pela Suprema Corte
      dos Estados Unidos no ano seguinte

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1998: O ``Digital Millennium Copyright Act&quot; passa, tornando crime qualquer
      tentativa de passar pelas medidas de seguran&#231;a que tem como objetivo proteger
      material com copyright, independentemente da inten&#231;&#227;o do tentativa.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1999: Jon Johansen et. al. libera o DeCSS, decodificando a `encripta&#231;&#227;o'
      rid&#237;cula usado praticamente em todos os DVDs e tornando poss&#237;vel assistir
      DVDs usando software open-source. No ano seguinte, a casa de Johansen &#233;
      invadida pela pol&#237;cia Norueguesa.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1999: Amazon recebe a not&#243;ria patente do 1-click.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2000: 72 pessoas na Calif&#243;rnia recebem uma intima&#231;&#227;o proibindo-as de usar
      uma camiseta contendo o c&#243;digo de uma parte do DeCSS.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2001: Dimitry Sklyrov, um programador russo visitando os Estados Unidos, &#233;
      preso  pela lei DMCA e detido por v&#225;rios meses por ter escrito um leitor
      de e-book capaz de ler v&#225;rios formatos com DRM.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2002: Sarbanes-Oxley torna quase imposs&#237;vel para pequenas startups web
      fazerem abertura de a&#231;&#245;es

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2003: A saga legal da SCO come&#231;a. SCO exige que todos os usu&#225;rios Linux a
    paguem $700 d&#243;lares de licen&#231;a.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2003: O FBI invoca abusivamente o USA PATRIOT ACT para recuperar 
    notas de rep&#243;rteres que entrevistaram Adrian Lamo.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2004:  No que Brad Templeton descreve como `spamlitiga&#231;&#227;o', o RIAA come&#231;a a
    processar seus clientes em massa, distribuindo mais de 20000 processos
    legais, incluindo crian&#231;as, av&#243;s e falecidos entre os acusados.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2005: FEC Commissioner Bradley Smith afirma que `a exce&#231;&#227;o da imprensa' do
      McCain-Feingold Campaign Finance Reform Act n&#227;o inclui bloggers.

&lt;P&gt;
&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;
Entretanto, estes casos s&#227;o insuficientes para explicar as atitudes dos hackers.
A cultura hacker existe desde que as universidades tiveram acesso aos
computadores - desde os anos 60 - e mesmo antes era reconhecida pela sua
incarna&#231;&#227;o anterior dos operadores de r&#225;dio amador. Foi uma cultura libert&#225;ria
desde sua concep&#231;&#227;o. Mesmo assim, a lista come&#231;a em 1986. Antes do CFAA, era
dif&#237;cil apontar para qualquer intrus&#227;o que incomodasse os hackers em particular.
Uso civil dos computadores n&#227;o estava no radar do congresso e da pol&#237;cia at&#233;
ent&#227;o.

&lt;P&gt;
Para n&#227;o fazer injusti&#231;a a tese de Graham, ela &#233; muito mais abrangente que
qualquer lista de reclama&#231;&#245;es. Graham observa corretamente que hackers tem suspeita de toda a autoridade, mesmo
onde a teoria libert&#225;ria diz que esta autoridade &#233; leg&#237;tima. Hackers ficam t&#227;o
nervosos com o chefe que controla seu departamento fala para eles que &quot;Eu
acabo de ler numa revista sobre algo chamado virtualiza&#231;&#227;o. N&#243;s dever&#237;amos usar
isso.&quot; quanto v&#227;o ficar com algum agente do governo. Por isso os hackers j&#225; se
incomodavam bastante antes de 1986. O governo chegou tarde para essa festa.

&lt;P&gt;
Mas a obverva&#231;&#227;o que hackers s&#227;o um grupo de espertinhos reclama&#231;&#245;es n&#227;o explica o
porque disto. Se as reclama&#231;&#245;es n&#227;o se limitam a intersec&#231;&#227;o entre governo e
tecnologia, porque esta atitude tem rela&#231;&#227;o com escrever c&#243;digo?

&lt;P&gt;
A resposta de Graham a isto &#233; a seguinte:

&lt;P&gt;
Deixe-me colocar isto em termos que um oficial do governo iria apreciar.
      As liberdades civis n&#227;o s&#227;o apenas um ornamento, ou uma velha tradi&#231;&#227;o
      americana. Liberdades civis fazem os pa&#237;ses enriquecerem. Se voc&#234; fizer um
      gr&#225;fico de PIB per capita vs liberdades civis, voc&#234; ver&#225; uma forte
      rela&#231;&#227;o. Poderia tais liberdades serem a causa, ao inv&#233;s da conseq&#252;&#234;ncia
      da riqueza? Eu penso que sim. Eu penso que uma sociedade em que as pessoas
      podem dizer e fazer o que quiserem ir&#225; ser uma onde as solu&#231;&#245;es mais
      eficientes venceriam, ao inv&#233;s daquelas que fossem patrocinadas pelas
      pessoas mais poderosas. Pa&#237;ses autorit&#225;rios se tornam corruptos, pa&#237;ses
      corruptos se tornam pobres, e pa&#237;ses pobres se tornam fracos. Parece que
      existe uma curva Laffer para o poder do governo, assim como para impostos.
      No m&#237;nimo, &#233; prov&#225;vel o suficiente para n&#227;o se tentar um experimento para
      testar a hip&#243;tese. Ao contr&#225;rio de impostos, voc&#234; n&#227;o pode repelir o
      totalitarismo se ele n&#227;o funcionar direito.

&lt;P&gt;
&#201; por isso que os hackers se preocupam. O governo espionando as pessoas
      n&#227;o faz com que o c&#243;digo que eles escrevem se torne pior. Ele apenas leva
      a um mundo onde as id&#233;ias ruins vencem. E por causa que isto &#233; t&#227;o
      importante para os hackers, eles s&#227;o especialmente sens&#237;veis a isto. Eles
      podem sentir o autoritarismo se aproximando a dist&#226;ncia, como animais
      podem sentir uma tempestade.

&lt;P&gt;
Eu acho que isto &#233; uma fal&#225;cia &lt;A NAME=&quot;tex2html3&quot;
  HREF=&quot;http://pt.wikipedia.org/wiki/Fal&#225;cia&quot;&gt;petitio
principii&lt;/A&gt;. &#201; uma vis&#227;o libert&#225;ria
sobre o porque os hackers deveriam ser libert&#225;rios. Se algu&#233;m concorda com a
premissa que as liberdades civis fazem as pessoas enriquecerem, ent&#227;o tudo seque
tranq&#252;ilamente. Mas se o governo autorit&#225;rio &quot;n&#227;o faz com que o c&#243;digo que eles
escrevem se torne pior&quot;, ent&#227;o porque hackers tem uma chance maior de fazer esta
conex&#227;o?

&lt;P&gt;
Uma resposta tentadoramente lisonjeira para esta pergunta v&#234;m do post de 1992 de
Stuart Reges. Resumidamente, Reges afirma que existem uma certa habilidade
mental - &quot;QI libert&#225;rio&quot; - que nos faz melhores em formar modelos mentais de
como programas funcionam assim como formular como a sociedade funciona. A
primeira habilidade nos faz bons hackers. A segunda nos da um entendimento
intuitivo de como o libertarismo funciona. 

&lt;P&gt;
Apesar de cort&#234;s, eu acho que este argumento erra o ponto da discuss&#227;o. Toda a
teoria econ&#244;mica que vem junto com o libertarismo &#233; um efeito secund&#225;rio.
Libertarismo n&#227;o &#233; sobre o que nos faz ricos; &#233; sobre o que &#233; certo.&lt;SPAN  CLASS=&quot;textit&quot;&gt;
&lt;A NAME=&quot;tex2html2&quot;
  HREF=&quot;http://pt.wikipedia.org/wiki/Declara&#231;&#227;o_da_Independ&#234;ncia_dos_Estados_Unidos_da_Am&#233;rica&quot;&gt;``We hold these truths to be self-evident''&lt;/A&gt;&lt;/SPAN&gt;
e tudo mais. Libert&#225;rios  n&#227;o se op&#245;es ao governo porque &#233; atrapalhado e
ineficiente, se op&#245;e porque &#233; maligno.

&lt;P&gt;
Al&#233;m disso, acho que Reges nos d&#225; muito cr&#233;dito. O conhecimento m&#233;dio dos
hackers sobre a escola Austr&#237;aca ou a de Chicago &#233; mais med&#237;ocre do que eles se
permitiriam em qualquer assunto t&#233;cnico. Comece a falar de externalidades ou o
&lt;A NAME=&quot;tex2html4&quot;
  HREF=&quot;http://qualia-esob.blogspot.com/2008_04_01_archive.html&quot;&gt;problema do
parasita&lt;/A&gt;
e n&#243;s mudaremos de assunto. 
Claro, os mais sofisticados ir&#227;o citar o &lt;A NAME=&quot;tex2html5&quot;
  HREF=&quot;http://www.knoow.net/cienceconempr/economia/teoremadecoase.htm&quot;&gt;Teorema de
Coase&lt;/A&gt;, mas a maioria nem
ouviu falar dele.

&lt;P&gt;
Eu acho que n&#243;s estivemos olhando para o problema do &#226;ngulo errado. 
N&#227;o &#233; que hackers adotam pol&#237;ticas libert&#225;rias, nem que existe um terceiro fator
que influencia libert&#225;rios e hackers. Ao inv&#233;s disso, pessoas com uma atitude
anti autorit&#225;ria tendem a serem atra&#237;dos para programa&#231;&#227;o.

&lt;P&gt;
A frase &quot;conhecimento &#233; poder&quot; &#233; um clich&#234;, mas &#233; tamb&#233;m verdadeira num sentido
bem literal. Aquilo que voc&#234; n&#227;o entende tem poder sobre voc&#234;. As pessoas que
n&#227;o tem interesse em entender os computadores est&#227;o totalmente acostumadas a
serem mandadas por eles; &#233; mais um fato da vida. Se voc&#234; n&#227;o sabe que voc&#234; pode
mudar o bit de apenas-leitura ao clicar com o bot&#227;o direito e editar o atributo
na janela de propriedades, ent&#227;o n&#227;o ter a permiss&#227;o de editar o arquivo n&#227;o &#233;
fundamentalmente diferente de n&#227;o ser capaz de tocar um arquivo .wma cifrado
porque a Microsoft fechou seu servidor de licen&#231;a. Tentar fazer com que pessoas
leigas se importem com DRM &#233; in&#250;til. Eles s&#227;o sujeitos as tiranias de seus
computadores todo o tempo. Porque esta seria pior?

&lt;P&gt;
Mas para aqueles de temperamento libert&#225;rio, isso &#233; um estado inaceit&#225;vel. Ser
mandado pelo governo j&#225; &#233; ruim o suficiente. Mas ser mandado por um objeto
inanimado? Intoler&#225;vel. Como eu posso controlar essa coisa?

&lt;P&gt;
Este modelo da psiqu&#234; humana explica bastante nossas idiossincrasias de
personalidade. Quando voc&#234; n&#227;o tolera ser ignorante sobre uma tecnologia,
aprender sobre ela &#233; a &#250;nica sa&#237;da. A outra &#233; se tornar um
&lt;A NAME=&quot;tex2html6&quot;
  HREF=&quot;http://educaterra.terra.com.br/voltaire/artigos/ludismo.htm&quot;&gt;ludita&lt;/A&gt;. Hackers se tornam
luditas com freq&#252;&#234;ncia.

&lt;P&gt;
Para exemplificar, eu tenho o mais barato celular do mercado. Ele n&#227;o pode nem
fazer o download de tons. Mas &#233; &#243;timo para fazer chamadas. Porque &#233; isso que
eles tem que fazer. Eles n&#227;o s&#227;o feitos para mandar email. Nem para jogar
tetris. Nem para tirar fotos. S&#227;o feitos para fazer chamadas. &#201; bastante chato
ter que descobrir como tirar meu telefone do modo de c&#226;mera. Eu n&#227;o quero
descobrir como tirar meu telefone do modo de c&#226;mera, porque telefones n&#227;o s&#227;o
feitos para tirar fotos. S&#227;o feitos para fazer chamadas.

&lt;P&gt;
Algumas pessoas riem dessa atitude, mas &#233; o mesmo sentimento que hackers tem
quando reclamam de incha&#231;o de software. Todos j&#225; escutamos, se j&#225; n&#227;o tivermos
participado, de conversas como:

&lt;P&gt;
``Eu n&#227;o quero que meu editor de texto leia email! Eu quero um editor de
    texto!''

&lt;P&gt;
``Ent&#227;o use-o como um editor de texto.''

&lt;P&gt;
``Mas ai vou ficar com todo esse lixo espalhado no meu computador.''

&lt;P&gt;
``Por qu&#234; voc&#234; n&#227;o ignora isso? N&#227;o est&#225; nem exposto na interface gr&#225;fica.
    Voc&#234; tem que saber o comando correto para ativ&#225;-lo. S&#227;o menos de 80MB de
    espa&#231;o, e voc&#234; tem 1TB no seu disco, e a maior parte n&#227;o chega na RAM at&#233;
    que voc&#234; a invoca.''

&lt;P&gt;
``Mas &#233; nojento!''

&lt;P&gt;
Pode parecer for&#231;ado chamar a atitude dos odiadores do emacs de ludismo, e mais
for&#231;ado ainda cham&#225;-lo de libert&#225;ria. Mas a psicologia &#233; a mesma. Ningu&#233;m quer
tirar o tempo para entender alguma coisa que eles consideram sup&#233;rflua.
Racionalmente ou n&#227;o, hackers ir&#227;o encontrar qualquer tecnologia que eles n&#227;o
entendem com suspeita - n&#227;o de seus m&#233;rito, mas de sua seguran&#231;a. &quot;I eu quero
isso ai ferrando com meu sistema&quot;, n&#243;s iremos dizer para voc&#234;, mesmo sabendo
perfeitamente bem que ele ir&#225; apenas sentar em um canto do disco r&#237;gido. J&#225;
recompilou seu kernel apenas para desabilitar um m&#243;dulo que voc&#234; n&#227;o necessita?
A maior pare de n&#243;s j&#225; o fez, mas isso desafia qualquer base racional.

&lt;P&gt;
Mas essa irracionalidade &#233; comum. As atitudes libert&#225;rias geralmente ultrapassam
os princ&#237;pios libert&#225;rios. Essencialmente todos os libert&#225;rios defendem o
direito de portar armas, mas consideram o direito a propriedade privada mais
fundamental. Ent&#227;o, n&#243;s compreendemos o direito do de propriet&#225;rios de proibir
armas em sua propriedade. Mas isso n&#227;o impede libert&#225;rios de ficarem perturbados
cada vez que um propriet&#225;rio exerce esse direito.

&lt;P&gt;
Ficamos perturbados com os hoplof&#243;bicos (medo de armas de fogo) pela mesma raz&#227;o
que arrancamos aquele m&#243;dulo do kernel: odiamos e tememos sermos controlados.

</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/51</id>
    <published>2009-09-02T22:08:50Z</published>
    <updated>2009-09-03T13:30:49Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/my-vimrc" rel="alternate"/>
    <title>My .vimrc</title>
    <content type="html">&lt;p&gt;
For those of you who are not familiar with &lt;a href=&quot;vim.org&quot;&gt;vim&lt;/a&gt; (shame on you), it is a marvelously powerful text editor, which I use for coding and text editing in general (Latex, html, rails, ruby, etc). 
The only exception is scheme, for which I use &lt;a href=&quot;http://plt-scheme.org/&quot;&gt;DrScheme&lt;/a&gt;, but that is another story.
&lt;/p&gt;
&lt;p&gt;
Anyway, .vimrc is the file that sits on your home directory and configures the state your vim will be. Here is mine for the curious.

&lt;br /&gt;
&lt;div id=&quot;vim-code&quot; text=&quot;#ffffff&quot;&gt;&lt;font face=&quot;monospace&quot;&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; An example for a gvimrc/vimrc file.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; The commands in this are executed when the GUI or vim is started.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;Maintainer:&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Comment&quot;&gt;&amp;nbsp;&amp;nbsp; Bram Moolenaar &amp;lt;Bram@vim.org&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Last change:&amp;nbsp;&amp;nbsp;2001 Sep 02&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; To use it, copy it to&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for Unix and OS/2:&amp;nbsp;&amp;nbsp;~/.gvimrc&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for Amiga:&amp;nbsp;&amp;nbsp;s:.gvimrc&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;10 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&amp;nbsp;&amp;nbsp;for MS-DOS and Win32:&amp;nbsp;&amp;nbsp;$VIM\_gvimrc&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;11 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for OpenVMS:&amp;nbsp;&amp;nbsp;sys$login:.gvimrc&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;12 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;13 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Make external commands work through a pipe instead of a pseudo-tty&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;14 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;set noguipty&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;15 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;16 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; set the X11 font to use&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;17 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;18 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;19 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Switch on syntax highlighting if it wasn't on yet.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;20 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;!exists(&amp;quot;syntax_on&amp;quot;&lt;span class=&quot;Operator&quot;&gt;)&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;21 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;syntax&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#00ff00&quot;&gt;&lt;b&gt;on&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;22 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;endif&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;23 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;24 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;SETTINGS&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;25 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;26 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;ch&lt;/b&gt;&lt;/font&gt;=2&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Make command line two lines high&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;27 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;mousehide&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Hide the mouse when typing text&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;28 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;29 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;sets the default grepping engine to be ack-grep with the -a flag&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;30 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;change this to --ruby or some other stuff for searching only ruby &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;31 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;use it like this&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;32 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;:grep Dumper perllib&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;33 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;34 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;grepprg&lt;/b&gt;&lt;/font&gt;=ack-grep\ -a&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;35 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;36 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;37 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Switch on search pattern highlighting.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;38 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;hlsearch&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;39 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;40 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;display current info all the time&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;41 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;ruler&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;42 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;43 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;colorscheme&lt;/b&gt;&lt;/font&gt;&amp;nbsp;twilight&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;44 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;45 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;prettier font...&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;46 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;guifont&lt;/b&gt;&lt;/font&gt;=Liberation\ Mono\ 12&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;47 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;48 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; those next 2 commands are taken from a tip in &lt;a href=&quot;http://vim.sourceforge.net/tips/tip.php?tip_id=259&quot;&gt;http://vim.sourceforge.net/tips/tip.php?tip_id=259&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;49 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; They basically map to keys F1 -&amp;gt; toogle menu; F2 -&amp;gt; toggle toolbar&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;50 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;51 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; get rid of toolbar&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;52 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;guioptions&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;-&lt;/span&gt;=&lt;span class=&quot;vimSet&quot;&gt;T&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;53 &lt;/b&gt;&lt;/font&gt;:&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g&lt;span class=&quot;vimCmdSep&quot;&gt;:&lt;/span&gt;toggleTool&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;0&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;54 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;silent&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;S-F2&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:if g:toggleTool == 1&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set guioptions-=T&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set lines+=3&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:let g:toggleTool = 0&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:else&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set lines-=3&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set guioptions+=T&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:let g:toggleTool = 1&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:endif&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;55 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;56 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; get rid of menu&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;57 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;guioptions&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;-&lt;/span&gt;=&lt;span class=&quot;vimSet&quot;&gt;m&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;58 &lt;/b&gt;&lt;/font&gt;:&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g&lt;span class=&quot;vimCmdSep&quot;&gt;:&lt;/span&gt;toggleMenu&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;0&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;59 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;silent&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;S-F1&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:if g:toggleMenu == 1&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set guioptions-=m&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set lines+=1&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:let g:toggleMenu = 0&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:else&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:set guioptions+=m&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:let g:toggleMenu = 1&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;:endif&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;60 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;61 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;line numbers please...&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;62 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;number&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;63 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;64 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;set the incremental search&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;65 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;incsearch&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;66 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;67 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;remember more history&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;68 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;history&lt;/b&gt;&lt;/font&gt;=50&lt;span class=&quot;vimSet&quot;&gt;0&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;69 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;70 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;Generally the :substitute command changes only the first occurrence of the word&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;71 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;unless you use the 'g' option.To make the 'g' option the default use this:&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;72 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;gdefault&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;73 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;74 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;this is for vim omni completion of ruby code. Check out :help new-omni-completion or :help ft-ruby-omni&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;75 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:rubycomplete_buffer_loading&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;1&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;76 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:rubycomplete_classes_in_global&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;1&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;77 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:rubycomplete_rails&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;1&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;78 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;79 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;80 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;*****************************************************************************************************&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;81 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;*****************************************************************************************************&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;82 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;*****************************************************************************************************&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;83 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;84 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;MAPPINGS &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;85 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;86 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;87 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Make shift-insert work like in Xterm&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;88 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;S-Insert&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;MiddleMouse&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;89 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map!&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;S-Insert&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;MiddleMouse&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;90 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;this pastes what's copied, not what is selected&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;91 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;v&amp;nbsp;&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;ESC&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;vimMapRhs&quot;&gt;&amp;quot;+gp &lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;92 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;c&amp;nbsp;&amp;quot;+y &lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;93 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;94 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;n&amp;nbsp;:vnew&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;95 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;96 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;reload vim configuration automatically whenever I edit it&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;97 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;found here &lt;a href=&quot;http://dailyvim.blogspot.com/2008/11/reload-vimrc.html?showComment=1228044660000#c2642014041159858949&quot;&gt;http://dailyvim.blogspot.com/2008/11/reload-vimrc.html?showComment=1228044660000#c2642014041159858949&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;98 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;au&lt;/b&gt;&lt;/font&gt;! &lt;font color=&quot;#00ff00&quot;&gt;&lt;b&gt;BufWritePost&lt;/b&gt;&lt;/font&gt;&amp;nbsp;$MYVIMRC&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;%&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;&amp;nbsp;99 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;100 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;this maps to James Buick's FuzzyFinder: TextMate plugin &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;101 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;Found here &lt;a href=&quot;http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim&quot;&gt;http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;102 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;t&amp;nbsp;:FuzzyFinderTextMate&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;103 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;104 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;minibufexpl plugin &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=159&quot;&gt;http://www.vim.org/scripts/script.php?script_id=159&lt;/a&gt; &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;105 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:miniBufExplMapWindowNavVim=1&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;106 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:miniBufExplMapWindowNavArrows=1&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;107 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:miniBufExplMapCTabSwitchBufs=1&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;108 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;hid&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;Hide abandoned buffers in order to not loose undo history (taken from &lt;a href=&quot;http://heykevinle.blogspot.com/2007/06/vim-minibufexpl.html)&quot;&gt;http://heykevinle.blogspot.com/2007/06/vim-minibufexpl.html)&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;109 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;110 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; this is a shortcut to the minibufexplorer&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;111 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;Leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;b&amp;nbsp;:MiniBufExplorer&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;cr&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;112 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;113 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; SPELLING OPTIONS &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;114 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;115 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;set the spell checker for txt, html, README and tex files&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;116 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;autocmd&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#00ff00&quot;&gt;&lt;b&gt;BufNewFile&lt;/b&gt;&lt;/font&gt;,&lt;span class=&quot;Type&quot;&gt;BufRead&lt;/span&gt;&amp;nbsp;*.txt,*.html,README,*.tex,*.story&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;setlocal&lt;/span&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;spell&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;spelllang&lt;/span&gt;=en_u&lt;span class=&quot;vimSet&quot;&gt;s&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;117 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;autocmd BufNewFile,BufRead *.txt,*.html,README,*.tex setlocal spell spelllang=pt &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;118 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;119 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;F2&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:setlocal spell spelllang=en_us&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;120 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;F3&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:setlocal spell spelllang=pt&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;CR&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;121 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;122 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;popup the a menu on mispelled words with the mouse&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;123 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;mousemodel&lt;/b&gt;&lt;/font&gt;=popu&lt;span class=&quot;vimSet&quot;&gt;p&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;124 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;125 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;textwidth&lt;/b&gt;&lt;/font&gt;=8&lt;span class=&quot;vimSet&quot;&gt;0&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;126 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;127 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;found those on &lt;a href=&quot;http://wiki.rubyonrails.org/rails/pages/HowtoUseVimWithRails&quot;&gt;http://wiki.rubyonrails.org/rails/pages/HowtoUseVimWithRails&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;128 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;filetype&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#00ff00&quot;&gt;&lt;b&gt;plugin&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimFiletype&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;indent&lt;/span&gt;&lt;span class=&quot;vimFiletype&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;on&lt;/span&gt;&amp;nbsp;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot; Enable filetype-specific indenting and plugins&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;129 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;augroup&lt;/b&gt;&lt;/font&gt;&amp;nbsp;myfiletypes&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;130 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot; Clear old autocmds in group&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;131 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;autocmd&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimAugroup&quot;&gt;!&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;132 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot; autoindent with two spaces, always expand tabs. For other types of&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;133 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot; identation, add new file types.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;134 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;autocmd&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimAugroup&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#00ff00&quot;&gt;&lt;b&gt;FileType&lt;/b&gt;&lt;/font&gt;&amp;nbsp;ruby,eruby,yaml&lt;span class=&quot;vimAugroup&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;set&lt;/span&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;ai&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;sw&lt;/span&gt;=2&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;sts&lt;/span&gt;&lt;span class=&quot;vimSetEqual&quot;&gt;=2&lt;/span&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;bs&lt;/span&gt;&lt;span class=&quot;vimSetEqual&quot;&gt;=2&lt;/span&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;et&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;135 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot; if not any of those files, fall to the default&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;136 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#8080ff&quot;&gt;&lt;b&gt;ai&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;sw&lt;/span&gt;=2&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;sts&lt;/span&gt;&lt;span class=&quot;vimSetEqual&quot;&gt;=2&lt;/span&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;bs&lt;/span&gt;&lt;span class=&quot;vimSetEqual&quot;&gt;=2&lt;/span&gt;&lt;span class=&quot;vimSet&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;et&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;137 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;augroup&lt;/b&gt;&lt;/font&gt;&amp;nbsp;END&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;138 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;139 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;Autoidenting ruby code using the kode gem. Found on &lt;a href=&quot;http://antono.info/en/50&quot;&gt;http://antono.info/en/50&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;140 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;rci&amp;nbsp;:%!ruby-code-indenter&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;cr&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;141 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;142 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;map the leader c key to the buffer delete&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;143 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;d&amp;nbsp;:bd&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;cr&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;144 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;145 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;write the buffer&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;146 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;w&amp;nbsp;:w&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;cr&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;147 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;148 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#00ffff&quot;&gt;&lt;b&gt;&amp;quot;write all the&amp;nbsp;&amp;nbsp;buffers&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;149 &lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#ffff00&quot;&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color=&quot;#ff6060&quot;&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;wa&amp;nbsp;:wa&lt;span class=&quot;Delimiter&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;cr&lt;/span&gt;&lt;span class=&quot;Delimiter&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/50</id>
    <published>2009-08-27T13:40:45Z</published>
    <updated>2009-08-27T13:41:33Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/a-review-of-the-i-of-the-vortex-from-neurons-to-self" rel="alternate"/>
    <title>A review of The i of the vortex, from neurons to self</title>
    <content type="html">&lt;P&gt;
A little review of the 
&lt;A NAME=&quot;tex2html1&quot;
  HREF=&quot;http://www.amazon.com/Vortex-Neurons-Rodolfo-R-Llinas/dp/0262621630&quot;&gt;book&lt;/A&gt;,
The i of the vortex, from neurons to self.

&lt;P&gt;
This is a stimulating book, from one of the modern fathers of neuroscience,
Rodolfo Liinas (if anyone is interested in a video of him discussing the book,
there is a great one online
&lt;A NAME=&quot;tex2html2&quot;
  HREF=&quot;http://thesciencenetwork.org/programs/the-science-studio/enter-the-i-of-the-vortex&quot;&gt;here&lt;/A&gt;) 
where he attempts to build a coherent theory of consciousness as an emergent
property of neurons. He does not only stay within the confinement of describing
the current modern discoveries. He actually attempts to find a framework.

&lt;P&gt;
That framework stems from motricity, the capacity to move. Llinas argues that
moving and being conscious are profoundly linked, in such that for one to move,
one needs:

&lt;P&gt;

&lt;UL&gt;
&lt;LI&gt;The capacity to move
&lt;/LI&gt;
&lt;LI&gt;A perception of how one is moving and where
&lt;/LI&gt;
&lt;LI&gt;The desire to move
&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;
From there it follows that the brain is essentially a prediction, or dreaming,
machine, but the dream is always being modulated by the information coming from
the senses.

&lt;P&gt;
All that does not, of course, spring from nothing. There is a evolutionary
progress in the development of this three items, that according to my
interpretation of Llinas' book, is what consciousness is all about.

&lt;P&gt;
There is a lot of technical information there, so my advice is, give this book a
couple of readings, because Llinas is at the forefront of neuro research, and
his compilation of recent finding is a worth reading in itself.
</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/49</id>
    <published>2009-06-17T15:53:49Z</published>
    <updated>2009-08-12T14:41:00Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/an-emergent-participatory-design-framework-for-higher-education" rel="alternate"/>
    <title>An emergent participatory design framework for higher education</title>
    <content type="html">Here is an improved version of an &lt;a href=&quot;http://github.com/ebellani/Emergent-Design-Article/raw/d412f3aac686161c8c9fbe178e6b8c883a48c226/emergent_design.pdf&quot;&gt;article&lt;/a&gt; about education I have wrote some time ago. If anyone is curious, this is the abstract:
&lt;br /&gt;
Abstract
&lt;br /&gt;
This paper proposes a model of higher education that uses emergence and constructionism as the guiding design principles and takes the current computational technologies and networks as the technological base to distribute and generate information and knowledge.
</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/48</id>
    <published>2009-05-31T21:59:51Z</published>
    <updated>2009-05-31T21:59:51Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/thoughts-on-deschooling-society" rel="alternate"/>
    <title>Thoughts on Deschooling Society</title>
    <content type="html">&lt;P&gt;
This is a small review about Ivan Illich's
&lt;A HREF=&quot;http://ournature.org/~novembre/illich/1970_deschooling.html&quot;&gt;book&lt;/A&gt;,
Deschooling Society. One of the best books I've ever heard about the negative
effects of the current educational system.

&lt;P&gt;
The author explains exactly what the book is about:

&lt;P&gt;
&lt;BLOCKQUOTE&gt;
School groups people according to age. This grouping rests on three unquestioned
  premises. Children belong in school. Children learn in school. Children can be
  taught only in school.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;I think these unexamined premises deserve serious questioning.

&lt;/BLOCKQUOTE&gt;

&lt;P&gt;
Most of the text is dedicated to question, very skillfully in my opinion those
premises. The author anarchist/libertarian tendencies show in the book, in the
sense that most emphasis is directed to the free choice of the individual in
detriment of institutions. But I think one would be wrong to say that Illich has
an agenda other than point out the evils of a systematic enforcement of
teaching: 

&lt;P&gt;
&lt;BLOCKQUOTE&gt;
To understand what it means to deschool society, and not just to reform the
  educational establishment, we must now focus on the hidden curriculum of
  schooling. We are not concerned here, directly, with the hidden curriculum of
  the ghetto streets which brands the poor or with the hidden curriculum of the
  drawing room which benefits the rich. We are rather concerned to call attention
  to the fact that the ceremonial or ritual of schooling itself constitutes such a
  hidden curriculum.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;We cannot begin a reform of education unless we first understand that neither
  individual learning nor social equality can be enhanced by the ritual of
  schooling. We cannot go beyond the consumer society unless we first understand
  that obligatory public schools inevitably reproduce such a society, no matter
  what is taught in them.

&lt;/BLOCKQUOTE&gt;

&lt;P&gt;
Illich goes very keenly to the core of the damages that the paternalistic system
of education do to a person.

&lt;P&gt;
&lt;BLOCKQUOTE&gt;
The man addicted to being taught seeks his security in compulsive teaching. The
  woman who experiences her knowledge as the result of a process wants to
  reproduce it in others.
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;BLOCKQUOTE&gt;In fact, healthy students often redouble their resistance to teaching as they
  find themselves more comprehensively manipulated. This resistance is due not to
  the authoritarian style of a public school or the seductive style of some free
  schools, but to the fundamental approach common to all schools-the idea that one
  person's judgment should determine what and when another person must learn.

&lt;/BLOCKQUOTE&gt;

&lt;P&gt;
From every single source about pedagogy I have ever heard, this book is
&lt;SPAN  CLASS=&quot;textit&quot;&gt;the one&lt;/SPAN&gt; to learn about why the current situation is fundamentally broken,
why it is harmful to society and to the individual. 

&lt;P&gt;
&lt;BLOCKQUOTE&gt;
But school enslaves more profoundly and more systematically, since only school
  is credited with the principal function of forming critical judgment, and,
  paradoxically, tries to do so by making learning about oneself, about others,
  and about nature depend on a prepackaged process. 

&lt;/BLOCKQUOTE&gt;

&lt;P&gt;
It is a very profound responsibility of the individual, to take charge of his own
education, and you could say the same about freedom. It is hard work to be a
free person, and you cannot be a free person if others control what, how and
when you should learn something.

&lt;P&gt;
&lt;BLOCKQUOTE&gt;
Only liberating oneself from school will dispel such illusions. The discovery
  that most learning requires no teaching can be neither manipulated nor planned.
  Each of us is personally responsible for his or her own deschooling, and only we
  have the power to do it. No one can be excused if he fails to liberate himself
  from schooling. People could not free themselves from the Crown until at least
  some of them had freed themselves from the established Church. They cannot free
  themselves from progressive consumption until they free themselves from
  obligatory school.

&lt;/BLOCKQUOTE&gt;

&lt;P&gt;
This is a life changing book, and I guess Illich's works will only increase in importance
the deeper we go into the knowledge age.
</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/47</id>
    <published>2009-05-13T21:12:07Z</published>
    <updated>2009-05-15T05:17:31Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/difference-between-constructivism-and-constructionism" rel="alternate"/>
    <title>Difference between constructivism and constructionism</title>
    <content type="html">&lt;p&gt;Hello there.&lt;/p&gt;

&lt;p&gt;Just giving a heads up on a good article I've read recently called &lt;a href=&quot;http://web.media.mit.edu/~cavallo/cavallo_emergent_design.pdf&quot;&gt;Emergent Design and learning environments: Building on indigenous knowledge&lt;/a&gt; by David Cavallo.&lt;/p&gt;

&lt;p&gt;It tells the story of a constructivist project in Thailand, and it is a great read if you want to get a better grip on education as Seymour Papert dreamed it could be. One small quote from the article, about the difference between constructivism (Jean Piaget) and constructivism (Papert):&lt;/p&gt;

&lt;blockquote&gt;Constructionism builds upon principles in constructivism. While constructivism holds that the learner constructs new knowledge based on the existing knowledge he or she has, constructionism builds on this idea by maintaining that this process happens particularly well when the learner is in the process of constructing something.&lt;/blockquote&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/46</id>
    <published>2009-05-11T16:13:56Z</published>
    <updated>2009-05-15T05:23:09Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/thoughts-on-alan-kay-s-teaching-style-from-xerox" rel="alternate"/>
    <title>Thoughts on Alan Kay's teaching style from Xerox</title>
    <content type="html">&lt;p&gt;Just finished reading one more &lt;a href=&quot;http://www.mprove.de/diplom/gui/Kay74.pdf&quot;&gt;article&lt;/a&gt; in my quest for understanding Alan Kay's Xerox park advances (I should in the future write a post about the quest itself).&lt;/p&gt;

&lt;p&gt;I'll summarize here a part of the article, particularly the part regarding education, a little enticement for the whole deal. Sincerely, just go ahead and read the article if you are the least curious about the words here.&lt;/p&gt;

&lt;p&gt;So, Alan's words about the principles they used for education in the Xerox park:&lt;/p&gt;

&lt;blockquote&gt;These ideas are found in many places and many cultures. We came to them from our own experiences, the Suzuki violin method, O. K. Moore, Piaget, Furth, Bruner, Minsky, Papert, and others.&lt;/blockquote&gt;

&lt;p&gt;Here are them, enumerated:&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;Listen to the student.&lt;/li&gt;

&lt;p&gt;Since we believe that teaching involves helping a student adapt his knowledge structures to a new situation, we can guarantee ourselves (not to mention the student) an unpleasant journey if we don't try to understand these gossamer schema at the outset.&lt;/p&gt;

&lt;p&gt;Many of the current ways that things are done in Smalltalk come directly from listening to the kids. Smalltalk, as an &quot;extensible&quot; system, can easily &quot;be&quot; any kind of tool that we wish. We ourselves have remolded it several times.&lt;/p&gt;

&lt;li&gt;Never teach anything which has to be unlearned later.&lt;/li&gt;

&lt;p&gt;In our experience, humans are very poor at unlearning any kind of skill, whether it be muscular or mental. This principle is well understood by every teacher of music. &quot;Tempting analogies&quot; which later come back to haunt are especially to be avoided.&lt;/p&gt;

&lt;p&gt;We teach &quot;straight&quot; Smalltalk, the very same system which adults learn. The very first examples and methods to which the kids are exposed resemble strongly the most sophisticated adult systems.&lt;/p&gt;

&lt;li&gt;Never pace a student in a way that will require future remediation.&lt;/li&gt;

&lt;p&gt;Principle 2. basically says: don't simplify to the point of a lie; Principle 3. is a corollary of this which states: don't put the student into a situation where he will feel dumb and inept because a good enough foundation has not yet been laid. Most kids do not understand the distinctions between skill, structure, and intelligence any better than adults do and are apt to feel stupid rather than unskilled in new situations.&lt;/p&gt;

&lt;li&gt;Hook on to existing fruitful structures when possible; if unfruitful concepts exist, don't unteach them, rather supply completely fresh orthogonal concepts.&lt;/li&gt;

&lt;p&gt;Most kids know about dictionaries and looking up the meaning of a word. The meaning can be an explanation of a passive relationship or a dynamic act. In fact, every idea in mathematics and in programming can be easily explained in dictionary oriented terms alone; this is a fruitful, useful concept, and it makes sense to use it with kids.&lt;/p&gt;

&lt;p&gt;Many other &quot;natural language&quot; linguistic structures are ultimately deadly and we avoid them.&lt;/p&gt;

&lt;p&gt;Examples are: &quot;nouns&quot;, &quot;verbs&quot;, &quot;pronouns&quot;, inflections, and their counterparts in most programming languages: data structures, functions and control structures, variables, tagging type to names, etc. Instead, we immediately give children a running example which directly exhibits the more fruitful notions of states-in-process communicating-with-messages found in Smalltalk.&lt;/p&gt;

&lt;li&gt;Do not look over the student's shoulder.&lt;/li&gt;

&lt;p&gt;Aside from the obvious reason of avoiding &quot;putting the student under the gun&quot;, there is also a great difference between performing and creating. In music, this is known as the difference between improvising and composing (and a greater difference could hardly be found, as any musician will attest). We are much more interested in the design-oriented and planning processes associated with unhurried goal-directed reflection than in the more shallow though flashy effects obtained by virtuoso &quot;thinking on one's feet&quot;.&lt;/p&gt;

&lt;li&gt;Teach and Show Multiple Perspectives of Situations.&lt;/li&gt;

&lt;p&gt;A typical problem with fledgling designers of all ages is a strong tendency to commit all of their short term memory to a given perspective of a Situation. If it happens to be an unfruitful view it might be very difficult for them to &quot;bail out&quot; or even tell that it is unproductive. We feel that the Piagetian example of the tilted glass is much more the result of lack of practice in multiple viewing than the result of physiological immaturity.&lt;/p&gt;

&lt;p&gt;One of the striking things about design methodology is that &quot;simultaneous&quot; use of a perspective and its dual is remarkably more rewarding than using either separately.&lt;/p&gt;

&lt;p&gt;A very global example is the duality of wholes-as-collections-of-parts found in Western science and wholes-as-wholes found in Eastern philosophic thought.&lt;/p&gt;

&lt;p&gt;The former has an important dualistic aspect itself: analytic (or top-down) vs. synthetic (or bottom-up); both of these emphasize differences and boundaries: a corpuscular theory. The Eastern philosophy emphasizes samenesses and connection: a field theory. As more complex systems are studied, the apparent differences between the two schools of thought blur in the underlying sameness that characterizes duals&lt;/p&gt;

&lt;p&gt;The content of the computer is descriptions of processes; the ability of computers to simulate the details of any descriptive model means that the computer, viewed as cc medium itself, can be all other media if the embedding and viewing methods are sufficiently well provided.&lt;/p&gt;

&lt;/ol&gt;

&lt;p&gt;Those principles show a very pragmatic way to teach any skill, not the least programming, mathematics, epistemology and so forth. They are imbued with respect for both the student and the concepts needed for a citizen in the knowledge age to make informed decisions.&lt;/p&gt;

&lt;p&gt;You can also see the notion of the computer as a form of media (think speech, printing press, dance, etc) and how that concept is a very powerful idea, that can give rise to a new age of human perception and civilization. Again, read the article to gain a bit of insight on how a group of 25 people 30 years ago created tools and concepts that kept entire fields busy ever since.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/45</id>
    <published>2009-05-02T02:40:12Z</published>
    <updated>2009-05-13T21:23:08Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/review-of-marvin-minsky-s-society-of-mind" rel="alternate"/>
    <title>Review of Marvin Minsky's Society of Mind</title>
    <content type="html">&lt;h3&gt;
Introduction
&lt;/h3&gt;

&lt;p&gt;
This is a small review of
&lt;a href=&quot;http://www.amazon.com/Society-Mind-Marvin-Minsky/dp/0671657135&quot;&gt;Society of
  Mind(SoM)&lt;/a&gt;. I urge anyone who is looking for a more in depth analysis to check
Push Singh (R.I.P)
&lt;a href=&quot;http://web.media.mit.edu/~push/ExaminingSOM.html&quot;&gt;review&lt;/a&gt; or just to read
the book itself. It is the &lt;SPAN  CLASS=&quot;textit&quot;&gt;magnum opus&lt;/SPAN&gt; of Marvin Minsky, and it is more a
philosophical and psychological venture into the nature of the mind than a
technical AI work.
&lt;/p&gt;

&lt;p&gt;
There are very few works around like this one. It basically sets a very abstract
framework of how he thinks the mind works. The ground that is covered in the
book is staggering, and I think it is one of the reasons why this book is not as
famous and cited as it should. It is the culmination of the ideas of two genius,
Minsky and Papert, on how the mind structure itself, the world, time and beyond. 
&lt;/p&gt;

&lt;p&gt;
The structure of the book is also something very uncommon. It is organized in
several mini ideas, one per page, and those ideas are themselves organized in
larger modules or chapters. So Minsky used his society idea for the structure of
the book itself. What that results is there are technical aspects that are not
immediately clear, but run through the book, much like a though.
&lt;/p&gt;

&lt;p&gt;
So, it is a difficult book to understand, but one that is easy to read I guess. 
I'm going to try and give some insights from several quotes I have gathered in
my path in the book. It is very disconnected and floating around, but the book
is in this format, and I for sure lack the competence to formulate a coherent
string of though were Minsky himself failed to. Like he says:
&lt;/p&gt;

&lt;blockquote&gt;
My explanations rarely go in neat, straight lines from start to end. I wish I
  could have lined them up so that you could climb straight to the top, by mental
  stair-steps, one by one. Instead they're tied in tangled webs.

&lt;/blockquote&gt;

&lt;p&gt;
Well, I'll use his justification also:
&lt;/p&gt;
&lt;blockquote&gt;
I'm inclined to lay the blame upon the nature of the mind: much of its power
  seems to stem from just the messy ways its agents cross-connect. If so, that
  complication can't be helped; it's only what we must expect from evolution's
  countless tricks.

&lt;/blockquote&gt;
:)

&lt;p&gt;

&lt;h3&gt;
The book
&lt;/h3&gt;
&lt;p&gt;
The book provides several kind of falsifiable (perhaps some are too abstract)
theories and hypothesis floating around the book, but don't worry, Minsky is
well aware of how science marches
&lt;/p&gt;

&lt;blockquote&gt;
The only course left for us is to study the mind the way scientists do when
  something is too large or too small to see - by building theories based on
  evidence.

&lt;/blockquote&gt;

&lt;p&gt;
That is not what the book is about of course, like I said before, it provides a
framework, or several frameworks and hypothesis, to begin building experiments and improving
the hypothesis and frameworks(or destroying them).
&lt;/p&gt;

&lt;p&gt;
There is a lot of talk about what things &lt;SPAN  CLASS=&quot;textit&quot;&gt;mean&lt;/SPAN&gt;, and how meaning is merely
the connections that one does between scarcely existing things.
&lt;/p&gt;

&lt;blockquote&gt;
The secret of what anything means to us depends on how we've connected it to all
  the other things we know. That's why it's almost always wrong to seek the
  ''real meaning'' of anything. A thing with just one meaning has scarcely any
  meaning at all.

&lt;/blockquote&gt;

&lt;p&gt;
This connectionism is keenly related to Papert's principle and to how people
learn (the ideas that grew into this book originated from Papert and Minsky
dialogues, but they went into separated directions, Papert went into pedagogy
and the applications of these ideas into constructionism, Minsky remained
interested in the construction of an intelligent machine). 
&lt;/p&gt;

&lt;p&gt;
I disagree with what Minsky's concept of intelligence. 
&lt;/p&gt;
&lt;blockquote&gt;
Our minds contain processes that enable us to solve problems that we consider
  difficult. ''Intelligence'' is the name for whichever of those processes we
  don't yet understand.

&lt;/blockquote&gt;
&lt;p&gt;
Then he goes and adds
&lt;/p&gt;
&lt;blockquote&gt;
Like the concept of ''the unexplored regions of Africa'', it disappears as soon
  as we discover it.

&lt;/blockquote&gt;
&lt;p&gt;
I think that our concept of intelligence is flexible and mutable, but it is not
bound to disappear, it will just change with our perception of the world.
&lt;/p&gt;

&lt;p&gt;
There is also several Buddhist quotes, mostly about the nature of suffering
(attachment). Since I identify a lot with those though, I'll cite one of them:
&lt;/p&gt;
&lt;blockquote&gt;
Do not become attached to the things you like, do not maintain aversion to the
  things you dislike. Sorrow, fear and bondage come from one's likes and dislikes.

&lt;/blockquote&gt;

&lt;p&gt;
The most interesting part for in was the description of what is called Papert's
principle:
&lt;/p&gt;
&lt;blockquote&gt;
Some of the most crucial steps in mental growth are based not simply on
  acquiring new skills, but on acquiring new administrative was to use what one
  already knows.

&lt;/blockquote&gt;

&lt;p&gt;
I think the development of this principle is one of the aspects of the book who
is most valuable in a profound personal way. It is, as Papert would say,
a powerful idea
&lt;/p&gt;

&lt;p&gt;
This idea, in my opinion, is the embryo that gave birth to constructionism.
There is several ideas that resonate with those found in other works by Papert,
specially
&lt;a
  href=&quot;http://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/0465046746/ref=wl_it_dp?ie=UTF8&amp;coliid=I3S1J23V2VTONF&amp;colid=25BYFGJI3WTE5&quot;&gt;Mindstorms&lt;/a&gt;.
Like for instance
&lt;/p&gt;
&lt;blockquote&gt;
Our best ideas are often those that bridge between two different worlds!

&lt;/blockquote&gt;

&lt;p&gt;
The book goes on through a lot of ground. Sincerely there is quite a lot to
learn, even from casual reading, like this little pearl from Buddha:
&lt;/p&gt;
&lt;blockquote&gt;
If the mind were an ego-personality, it could do this and that as it would
  determine, but the mind often flies from what it knows is right and chases after
  evil reluctantly. Still, nothing seems to happen exactly as its ego desires. It
  is simply the mind clouded over by impure desires, and impervious to wisdom,
  which stubbornly persists in thinking of ''me'' and ''mine''.

&lt;/blockquote&gt;

&lt;p&gt;
Well, I'll say it one more time, Minsky is a genius, one of the greatest minds
to work on AI and psychology. This is a great work, so go ahead and fetch it!
My bet is that this book and its successor will still be studied for decades, and
will be looked back as reference for a lot of subjects.
&lt;/p&gt;

&lt;h3&gt;
The present and the future
&lt;/h3&gt;

&lt;p&gt;
There is a
&lt;a
  href=&quot;http://www.amazon.com/exec/obidos/ISBN=0743276639/marvinminskyA/&quot;&gt;successor&lt;/a&gt;
for the book, and I have it in hands, so there will be a review of it in the
future. Not that I have digested the SoM, but perhaps a little peek on the
development of the ideas will make me understand them better.
&lt;/p&gt;

&lt;p&gt;
This book is a point of view from an AI father about intelligence, and it is a
must read. But there is a lot of finer tools for analysing the brain these days.
My hope on cracking the intelligence and consciousness enigma is to look at the
brain with those tools and frameworks like those shown in this work.
&lt;/p&gt;

&lt;p&gt;
One last quote:
&lt;/p&gt;
&lt;blockquote&gt;
One can acquire certainty only by amputating inquiry.

&lt;/blockquote&gt;

&lt;p&gt;
Go ahead, read the book with a lot of inquiry, and enjoy!

&lt;/p&gt;
</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/44</id>
    <published>2009-04-20T15:12:40Z</published>
    <updated>2009-04-20T17:44:41Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/jeff-hawkins-s-on-intelligence-review" rel="alternate"/>
    <title>Jeff Hawkins's On intelligence review</title>
    <content type="html">&lt;p&gt;
This &lt;a
href=&quot;http://www.amazon.com/Intelligence-Jeff-Hawkins/dp/0805078533/ref=pd_bbs_1?ie=UTF8&amp;s=books&amp;qid=1240239967&amp;sr=8-1&quot;&gt;book&lt;/a&gt;
is a very interesting reading for everyone who wants to get a hold of a
emerging framework for understanding intelligence, specially as a it emerges
from a common algorithm in the neurocortex. 
&lt;/p&gt;

&lt;p&gt;
The neuro and cognitive sciences are, by the experts own admission, lacking a
common and powerful framework where to try out the large corpus of data that
exists and continue to be collected. This book presents a very compelling
hypothesis for one. Basically Jeff argues that
&lt;/p&gt;

&lt;blockquote&gt;
  The neocortex areas act as one single mechanism.
&lt;/blockquote&gt;

&lt;p&gt;
and that its main function is to recognize patterns and elaborate predictions
based on them. Roughly there is a upward flow of information in the neocortex
from the diverse senses and a downward flow that fills information and
elaborates predictions (this is overly simplified, you should really grab a copy
of the book and read the whole argument). Here is a small quote that tries to
clarify this point:
&lt;/p&gt;

&lt;blockquote&gt;
  Think about information flowing from your eyes, ears, and skin into the
  neocortex.  Each region of the neocortex tries to understand what this
  information means.  Each region tries to understand the input in terms of the
  sequences it knows. If it does understand the input, it says, &quot;I understand
  this, it is just part of the object I am already seeing. I won't pass on the
  details.&quot; If a region doesn't understand the current input, it passes it up the
  hierarchy until some higher region does. However, a pattern that is truly novel
  will escalate further and further up the hierarchy. Each successively higher
  region says, &quot;I don't know what this is, I didn't anticipate it, why don't you
  higher-ups look at it?&quot; The net effect is that when you get to the top of the
  cortical pyramid, what you have left is information that can't be understood by
  previous experience. You are left with the part of the input that is truly new
  and unexpected.
&lt;/blockquote&gt;

&lt;p&gt;
One thing that the reader should be aware is that the book is a new framework
proposal, so there is a lot of assumptions going on. That is not to say that
Jeff is wrong, but simply that there is not enough compelling evidence for the
framework yet. He honestly admits that on chapter 6 (where he presents the
kernel of the framework) of the book:
&lt;/p&gt;

&lt;blockquote&gt;
  To find and establish a new scientific framework, it is necessary to look for
  the simplest concepts capable of uniting and explaining what were large
  quantities of disparate facts. It is an unavoidable consequence of this process
  that the pendulum swings too far toward simplification. Important details are
  likely to be ignored, and facts will be misinterpreted. If the framework takes
  hold, refinements and fixes will inevitably be found showing where the initial
  proposal went too far, didn't go far enough, or was in error.  In this chapter,
  I have introduced many speculative ideas on how the neocortex works.
&lt;/blockquote&gt;

&lt;p&gt;
Jeff also makes a very interesting analysis of creativity and why it is so
mystified:
&lt;/p&gt;

&lt;blockquote&gt;
  Isn't creativity some extraordinary quality that requires
  high intelligence and giftedness? Not really. Creativity can be defined simply
  as making predictions by analogy, something that occurs everywhere in cortex and
  something you do continually while awake.

  Prediction by analogy&#8212; creativity&#8212; is so pervasive we normally don't notice it.
&lt;/blockquote&gt;

&lt;p&gt;
That lead to some insight on how to improve one's creativity 
&lt;/p&gt;


&lt;blockquote&gt;
  First, you need to assume up front that there is an answer to what you are
  trying to solve. 

  Second, you need to let your mind wander. You need to give
  your brain the time and space to discover the solution.
&lt;/blockquote&gt;

&lt;p&gt;
what mind is and some warnings about the failings of the brain/mind:
&lt;/p&gt;

&lt;blockquote&gt;
  I hope I have convinced you that mind is just a label of what the brain does.

  Our brains are always looking at patterns and making analogies. If correct
  correlations cannot be found, the brain is more than happy to accept false ones.
  Pseudoscience, bigotry, faith, and intolerance are often rooted in false
  analogy.
&lt;/blockquote&gt;

&lt;p&gt;
I did had a problem with his Einstein example:
&lt;/p&gt;
&lt;blockquote&gt;
  It had more support cells, called glia, per neuron than average. It showed an
  unusual pattern of grooves, or sulci, in the parietal lobes&#8212; a region thought to
  be important for mathematical abilities and spatial reasoning.  It was also 15
  percent wider than most other brains. We may never know why Einstein was as
  creative and smart as he was, but it is a safe bet that part of his talent
  derived from genetic factors.
&lt;/blockquote&gt;

&lt;p&gt;
Given the brains plasticity, we cannot be sure that Einstein's brain differences
are genetic in nature or the result of his efforts and focus on creative
process. 
&lt;/p&gt;

&lt;p&gt;
His framework is sound and very promising, and this book is probably a landmark
in neuroscience study. I did have a couple of problems with the book though. 
&lt;/p&gt;

&lt;p&gt;
He is careful to make a distiction between intelligence and intelligent
behavior. That is paramount and of course there is a difference. But his failing
in this case is to use &lt;a href=&quot;http://en.wikipedia.org/wiki/Chinese_Room&quot;&gt;The
Chinese Room&lt;/a&gt; argument to illustrate his point. I
think that argument is a fallacy, and I use Jeff's own  words to illustrate why
it is a fallacy:
&lt;/p&gt;

&lt;blockquote&gt;
There is a single powerful algorithm implemented by every
region of cortex. If you connect regions of cortex together in a suitable hierarchy
and provide a stream of input, it will learn about its environment.
&lt;/blockquote&gt;

&lt;p&gt;
Here he makes a case where intelligence is rested on a given algorithm. Well,
the same could be said about the chinese room, invalidating it's supposed
conclusion that computers cannot be intelligent.
&lt;/p&gt;

&lt;p&gt;
The second point I would critisize is his suggestion to read Hubert Dreyfus in
the end of the book. For anyone interested in a thoughful analysis on Dreyfus
ideas and why they are filled with fallacies I suggest and old &lt;a
href=&quot;http://hdl.handle.net/1721.1/6084&quot;&gt;work&lt;/a&gt; by
Seymour Papert.
&lt;/p&gt;

&lt;p&gt;
To summarize, it is a great reading, his framework sounds very promising and a new
encompassing algorithm was really needed in the field. Go ahead, it is more than
worth the money and time. And if you feel curious, fetch his &lt;a href=&quot;www.numenta.com/Numenta_HTM_Concepts.pdf&quot;&gt;article&lt;/a&gt; explaining in more
depth his theories.
&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/43</id>
    <published>2009-04-13T18:34:58Z</published>
    <updated>2009-04-13T19:16:53Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/review-of-seymour-papert-s-children-s-machine" rel="alternate"/>
    <title>Review of Seymour Papert's Children's Machine</title>
    <content type="html">&lt;p&gt;
Recently I've bought the translation of Children's Machine by Seymour Papert in Portuguese for my girlfriend. Having a justifiable belief on Papert's ideas obviously I've read it the fastest as I could also ;) 
&lt;/p&gt;
&lt;p&gt;
This is a classic from the point of view of pedagogy. But let me first give some context. Papert (&lt;a href=&quot;http://www.papert.org&quot;&gt;www.papert.org&lt;/a&gt;) is the father of constructionism, LOGO and a lot of powerful ideas. His beliefs on the power of technology, if used to enhance human capabilities as a support for creativity, to produce mega change in School (with a capital S to mean our current educational system) are developing since the 60's. In my opinion his works are paramount if one wants to understand the technology world as it is, because they influenced directly Alan Kay at his time at Xerox, and lead to the personal computing revolution. 
&lt;/p&gt;
&lt;p&gt;
The children's machine was written in 1993, before the web and when the PC revolution was in full motion. In it we encounter a very friendly and close dialog with one of the greatest genius of the computer age. We encounter several insights about epistemology, some of them dating from the time Papert spent with Piaget in the 60's, but updated to the current times. 
&lt;/p&gt;
&lt;p&gt;
Papert also makes explicit something that was more hidden in his other book Mindstorms, the concept of demanding permissiveness. Basically that means that a more libertarian and open education does not mean less work and responsibility.  Much to the opposite, even though the results are more fun and efficient. One analogy that I found useful is that even though a system can have many successful outcomes, that does not mean that it has no unsuccessful ones.
&lt;/p&gt;
&lt;p&gt;
His concept of mathetic is also La borated more profoundly. He argues that there is a word for the art and science of teaching (pedagogy) but not one for learning. He then proposes Mathetic (&lt;a href=&quot;http://en.wikipedia.org/wiki/Mathetics&quot;&gt;http://en.wikipedia.org/wiki/Mathetics&lt;/a&gt;) as a good candidate. The purpose is not to establish mathetic in itself, but to get some term to mean it, to make thinking and having a point of view about it more easy and feasible. (As Alan Kay says, a point of view is worth 80 IQ points)
&lt;/p&gt;
&lt;p&gt;
I'll follow the translator in his recommendation of the book for teachers, parents, educators and professionals of TI. I'll add that it is crucial for anyone who want to know how to better learn anything. That audience I believe includes anyone who wishes to live a better life.
&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/42</id>
    <published>2009-04-13T18:00:22Z</published>
    <updated>2009-04-13T19:20:36Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/buffer-size-on-send_data" rel="alternate"/>
    <title>Buffer size on send_data</title>
    <content type="html">&lt;p&gt;The send_data method haves just 4096 bytes of buffer used to stream the file.&lt;/p&gt;
&lt;p&gt;A trick to expand the limit is change the 'content-length' on the HTTP Headers.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;pre&gt;&lt;span class=&quot;keyword&quot;&gt;def &lt;/span&gt;&lt;span class=&quot;method&quot;&gt;index&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;all&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;ident&quot;&gt;respond_to&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# index.html.erb&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;csv&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;ident&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;csv_list&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;ident&quot;&gt;send_data&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:type&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;text/plain&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:filename&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;posts.csv&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:disposition&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;attachment&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;})&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;ident&quot;&gt;headers&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;[&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;Content-Length&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;]&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;to_s&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;length&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;punct&quot;&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;The Ruby On Rails ActionController::Request headers method provides access to the request&#8216;s HTTP headers. So you can use it to change the content length of the request.&lt;/p&gt;
&lt;p&gt;If you have the path of the file you can use &quot;File.size(path)&quot;, but if the file is generated on the fly, you need to convert to string and use the length to know the file size in bytes.&lt;/p&gt;
&lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/41</id>
    <published>2009-02-18T02:40:47Z</published>
    <updated>2009-04-13T19:23:39Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/acts-as-conference-2009" rel="alternate"/>
    <title>Acts as Conference 2009</title>
    <content type="html">&lt;p&gt;I was @Orlando last weekend for &lt;a href=&quot;http://www.actsasconference.com/&quot;&gt;Acts As Conference 2009&lt;/a&gt;. As a hole the event was good, but somehow I was expecting more from this event (not from the weather, it was freaking cold!). I will brief the talks that IMHO were the best.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Greg Pollack and Jason Seifer on Innovation in Rails: &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this talk they brought attention to what was new since the last year, and I got some plugins and stuff that I didn't know it. The resume of the things presented: &lt;a href=&quot;http://www.railsenvy.com/aac&quot;&gt;http://www.railsenvy.com/aac&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Brian Liles on TAFT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Brian in the first day asked if DHH Test all the fucking time and DHH said no! Well this talk was the funniest of the event. He talked about tools to test and tips to improve your way of testing. And also Test All The Fucking Time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yehuda Katz on Merb  Rails Merge&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yehuda Katz did a nice presentation over the new features of the merge of Rails and Merb codes, for the future version of Rails. Also at the end of the talk he did a good Q&amp;A with the attendees.&lt;/p&gt;
&lt;p&gt;Those talks was my highlights of the conference, the rest it's a little bit of the same bullshit from here, repeated things from there.&lt;/p&gt;</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/40</id>
    <published>2008-11-23T19:28:07Z</published>
    <updated>2008-11-23T19:28:46Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/sistema-de-cotas-mentiras-e-covardia" rel="alternate"/>
    <title>Sistema de cotas, mentiras e covardia</title>
    <content type="html">&lt;p&gt;
Ol&#225;, gostaria de discutir uma quest&#227;o que &#233; muito relevante para os brasileiros em geral. O sistema de cotas que acaba de ser aprovado na c&#226;mara. 
&lt;a href=&quot;http://txt.estado.com.br/editorias/2008/11/22/edi-1.93.5.20081122.1.1.xml&quot;&gt;Aqui&lt;/a&gt;
tem um bom texto para saber mais sobre o assunto.
&lt;/p&gt;
&lt;p&gt;
A quest&#227;o real &#233; de efici&#234;ncia da solu&#231;&#227;o. Cotas, ao meu ver,
serviriam mais para prejudicar o mercado alvo (&#237;ndios, negros,
exclu&#237;dos sociais, etc),
pois retiraria press&#227;o do governo em providenciar aquilo que &#233; respons&#225;vel,
um ensino m&#233;dio de qualidade, compromissado com o aprendizado 
t&#233;cnico, social e cr&#237;tico da popula&#231;&#227;o, sem distin&#231;&#245;es.
&lt;/p&gt;
&lt;p&gt;
Cotas em suma, n&#227;o contribuiriam em nada para o al&#237;vio da d&#237;vida moral
(que existe e realmente precisa ser paga),
econ&#244;mica e pol&#237;tica que a sociedade brasileira e mundial tem com suas
parcelas mais
fracas e historicamente exploradas, e sim contribuiriam para os
pol&#237;ticos terem desculpas,
ao apontar para a &quot;realiza&#231;&#227;o&quot; da &quot;justi&#231;a&quot; com as cotas, sendo que
nada realmente justo 
foi realizado, e a solu&#231;&#227;o verdadeira que s&#243; viria com sacrif&#237;cio e
mudan&#231;a real &#233; empurrada
para as pr&#243;ximas gera&#231;&#245;es realizarem.
&lt;/p&gt;
&lt;p&gt;
Ou seja, &#233; a solu&#231;&#227;o de covardes que se escondem atr&#225;s de um escudo de
mentiras politicamente
corretas.
&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/39</id>
    <published>2008-11-13T15:07:43Z</published>
    <updated>2008-11-13T23:38:49Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/how-to-get-better-error-messages-for-a-associated-model" rel="alternate"/>
    <title>How to get better error messages for an associated model. </title>
    <content type="html">Hey there. Let's assume you have some set like this

&lt;pre&gt;&lt;span class=&quot;keyword&quot;&gt;class &lt;/span&gt;&lt;span class=&quot;class&quot;&gt;User&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Base&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;has_one&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:profile&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:dependent&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:destroy&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;keyword&quot;&gt;class &lt;/span&gt;&lt;span class=&quot;class&quot;&gt;Profile&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Base&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;belongs_to&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:user&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;validates_presence_of&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:first_name&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:last_name&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

&lt;/pre&gt;

&lt;p&gt;
  And you create the profile in the same view as your user.
  How do you validate those first_name and last_name fields
  with a friendly message for your user?
  &lt;br /&gt;
  Well, you could use &lt;a href=&quot;http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M001642&quot;&gt;
  validates_associated&lt;/a&gt;, but you would end up with a message like &quot;Profile is
  invalid&quot;. Now, how friendly is that?
&lt;/p&gt;

&lt;p&gt;
To obtain a more precise message, use this on you user.rb
&lt;/p&gt;

&lt;pre&gt;&lt;span class=&quot;keyword&quot;&gt;def &lt;/span&gt;&lt;span class=&quot;method&quot;&gt;validate&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;profile&lt;/span&gt;
    &lt;span class=&quot;constant&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;errors&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;constant&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;errors&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;add_to_base&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;('&lt;/span&gt;&lt;span class=&quot;string&quot;&gt; &lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;')&lt;/span&gt;
    &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/38</id>
    <published>2008-11-12T20:34:06Z</published>
    <updated>2008-11-13T17:47:28Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/security-idea-for-banking-cards" rel="alternate"/>
    <title>Security idea for banking cards</title>
    <content type="html">&lt;p&gt;I'm a brazilian, and on our big cities we have a type of crime known as flash kidnap (&amp;quot;sequestro rel&amp;acirc;mpago&amp;quot; in portuguese), which is a crime that consists in one kidnapper taking a hostage and cruising around with him (probably on the hostage's own car) and forcing the victim to release his banking account numbers so money can be drawn from his banking account.&lt;/p&gt; &lt;p&gt;This type of crime is basically a problem that was induced by the introduction of a technology (bank credit cards). But this technology could be made safer by the introduction of an emergency number. This number would work just as the normal one, so there is plausible deniability for the victim, so money could be drawn and all, but if ever used it would raise alarms on the credit central, and the authorities could be immediately called. Since close to 100% of the ATM machines have cameras around them, and there is the location of the drawn, it would be easy to check where criminals are.&lt;/p&gt; &lt;p&gt;For example:&lt;/p&gt; &lt;p&gt;Bob uses a banking card and has 2 passwords (pass A and pass B). Bob uses pass A on his day-to-day, without a hassle. Some day Eve kidnaps Bob, and forces him do release his card and a password. Bob releases pass B. Eve uses Bob's card with pass B without a problem, but doing so warns Alice that there is an emergency happening with Bob (possibly a kidnap). Alice warns the authorities.&lt;/p&gt; &lt;p&gt;I'm not interested in making money at all with this idea, but I would like to see it implemented, so it perhaps could save some property and lifes, so I'm asking for some directions as to what the heck I should do with it, and also some criticism.&lt;/p&gt; &lt;p&gt;This idea is registered under &lt;a href=&quot;http://creativecommons.org/licenses/by-nc/2.5/br/deed.en_US&quot;&gt;CC Attribution-Noncommercial 2.5 Brazil&lt;/a&gt;&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/37</id>
    <published>2008-11-03T22:10:35Z</published>
    <updated>2008-11-03T23:40:05Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/startup-school-2008" rel="alternate"/>
    <title>Startup school 2008</title>
    <content type="html">&lt;p&gt;Quick link to some valuable resource...&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://omnisio.com/startupschool08&quot;&gt;Startup school 2008!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Ahhh, we here at cnxs are busy learning some new exciting technology, so keep you heads up for some fresh new content soon....&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/36</id>
    <published>2008-10-28T03:55:15Z</published>
    <updated>2008-11-13T19:50:56Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/difference-between-is_a-and-instance_of" rel="alternate"/>
    <title>Difference between is_a? and instance_of?</title>
    <content type="html">&lt;p&gt;Hi Sirs.&lt;/p&gt; &lt;p&gt;There is a difference between a bunch of methods that appear that they to the same job, but they won't.&lt;/p&gt; &lt;p&gt;The methods &lt;em&gt;instance_of?&lt;/em&gt;, &lt;em&gt;is_a?&lt;/em&gt; and &lt;em&gt;kind_of?&lt;/em&gt; do related jobs, but not the same job.&lt;/p&gt; &lt;p&gt;For example &lt;em&gt;is_a?&lt;/em&gt; and &lt;em&gt;kind_of?&lt;/em&gt; do the same job, they return true if the caller is an instance of the method argument, if the caller is an instance of every superclass in his inheritance tree or if the argument method is a module included in the caller.&lt;/p&gt; &lt;p&gt;The &lt;em&gt;instance_of?&lt;/em&gt; is more specific, it returns true just if the caller is an instance of the method argument.&lt;/p&gt;  &lt;p&gt;Let me show some examples:&lt;/p&gt;  

&lt;pre&gt;&lt;span class=&quot;keyword&quot;&gt;module &lt;/span&gt;&lt;span class=&quot;module&quot;&gt;Hand&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;keyword&quot;&gt;class &lt;/span&gt;&lt;span class=&quot;class&quot;&gt;Animal&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;keyword&quot;&gt;class &lt;/span&gt;&lt;span class=&quot;class&quot;&gt;Mamal&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Hand&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;keyword&quot;&gt;class &lt;/span&gt;&lt;span class=&quot;class&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Mamal&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt;

&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;instance_of?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;    &lt;span class=&quot;comment&quot;&gt;# true&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;instance_of?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Mamal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;comment&quot;&gt;# false&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;instance_of?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# false&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;instance_of?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Hand&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;comment&quot;&gt;# false&lt;/span&gt;

&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;is_a?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;    &lt;span class=&quot;comment&quot;&gt;# true&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;is_a?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Mamal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;comment&quot;&gt;# true&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;is_a?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# true&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;dog&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;is_a?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Hand&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;comment&quot;&gt;# true &lt;/span&gt;

&lt;/pre&gt;

&lt;p&gt;Remember that &lt;em&gt;is_a?&lt;/em&gt; and &lt;em&gt;kind_of?&lt;/em&gt; do the same job.&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/35</id>
    <published>2008-10-24T02:21:52Z</published>
    <updated>2008-10-24T02:42:47Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/rails-summit-latin-america-2008-review-day-2" rel="alternate"/>
    <title>Rails Summit Latin America 2008 - Review Day 2</title>
    <content type="html">&lt;p&gt;Second Day of Rails Summit, started hot. &lt;strong&gt;Phusion&lt;/strong&gt; guys talked about Scaling Applications, what are the problems, bottlenecks, solutions, how's the possibilities to face it. Was very good and entertaining, specially when Darth Vader come into it. Slides were good with funny animations.&lt;/p&gt; &lt;p&gt;After that comes &lt;strong&gt;Charles Nutter e Thomas Enebo&lt;/strong&gt; talkin on JRuby and because the technical problems during the virtual presentation, left an impression that could be better. They gave an overview of the status of JRuby, how it runs on hotspot, and also presented some (strange) numbers of memory usage in JRuby comparing to MRI.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Jay Fields&lt;/strong&gt; talking was about testing and some testing frameworks. Well in general was a good presentation but for him almost all solutions are imature, which I disagree and when he was questioned on what makes a framework mature, he said time, years...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;David Chelimsky&lt;/strong&gt; did 2 great talkings one about RSpec and the other about Cucumber, much more for newbies (with all respect to newbies it's just a stage). I liked a lot because he seem to be very confident on his arguments, this is a thing that I appreciate on speakers.&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;David Chelimsky and CNXS Team&quot; src=&quot;../../images/david-chelimsky-rails-summit-latin-america-2008.jpg&quot; title=&quot;David Chelimsky and CNXS Team&quot; /&gt;&lt;/p&gt; &lt;p&gt;The others between Chelimsky's and Obie I didn't payed too much attention so I'll skip my review on them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Obie Fernandez&lt;/strong&gt; closed the event with a great keynote, telling about how his software consultancy deals with the agile manifesto. It's great to hear that you apply the techniques that he says that's a key of success of his company. He presented a full stack of the way his company develop software, since the first contact to the client.&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Rafael Souza and Obie Fernandez&quot; src=&quot;../../images/obie-fernandez-rails-summit-latin-america-2008.jpg&quot; title=&quot;Rafael Souza and Obie Fernandez&quot; /&gt;&lt;/p&gt; &lt;p&gt;Rails Summit for me was a great event, that I've met good mates from the brazilian and latin america Rails community. I will be waiting for the next one on 2009!&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Carlos Brando, F&amp;aacute;bio Akita and CNXS Team&quot; src=&quot;../../images/carlos-brando-fabio-akita-rails-summit-latin-america-2008.jpg&quot; title=&quot;Carlos Brando, F&amp;aacute;bio Akita and CNXS Team&quot; /&gt;&lt;/p&gt;</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/34</id>
    <published>2008-10-21T13:18:30Z</published>
    <updated>2008-11-13T19:49:58Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/diff-entre-respond_to-e-respond_to" rel="alternate"/>
    <title>Diff entre respond_to? e respond_to</title>
    <content type="html">&lt;p&gt;Um pequeno tutorial em portugu&amp;ecirc;s pra diferenciar melhor &lt;em&gt;respond_to?&lt;/em&gt; e &lt;em&gt;respond_to&lt;/em&gt;. N&amp;atilde;o parece ter muita n&amp;atilde;o? Mas o tio Chuck Norris vai me ajudar a esclarecer melhor isso aqui.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://ruby-doc.org/core/classes/Object.html#M000333&quot;&gt;respond_to?&lt;/a&gt; &amp;eacute; um m&amp;eacute;todo do Ruby Core como voc&amp;ecirc; pode ver, e n&amp;atilde;o do Ruby On Rails, ele basicamente verifica se determinado objeto responde a um m&amp;eacute;todo, como o nome sugere mesmo.&lt;/p&gt; &lt;p&gt;Por exemplo:&lt;/p&gt; 
&lt;/pre&gt;&lt;pre&gt;&lt;span class=&quot;keyword&quot;&gt;class &lt;/span&gt;&lt;span class=&quot;class&quot;&gt;Chuck&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Object&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;def &lt;/span&gt;&lt;span class=&quot;method&quot;&gt;norris&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;the man&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;chuck_norris&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Chuck&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;chuck_norris&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;respond_to?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;norris&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# true&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;chuck_norris&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;respond_to?&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;mr_t&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# false&lt;/span&gt;
&lt;/pre&gt;

 &lt;p&gt;J&amp;aacute; o &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionController/MimeResponds/InstanceMethods.html#M000206&quot;&gt;respond_to&lt;/a&gt;, sem o ponto de interroga&amp;ccedil;&amp;atilde;o (eles fazem parte do nome do m&amp;eacute;todo) faz parte do ActionController do Ruby On Rails. Ele coloca suporte a Web Service na sua aplica&amp;ccedil;&amp;atilde;o, isso quer dizer que ele consegue resolver o tipo do recurso que voc&amp;ecirc; deseja.&lt;/p&gt; 

&lt;pre&gt;&lt;span class=&quot;ident&quot;&gt;respond_to&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# render por default nome_da_acao.html.erb&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;js&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# render o nome_da_acao.rjs&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;xml&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;render&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:xml&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;@chuck&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;to_xml&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# coloca o chuck pra xml e envia&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Com esse c&amp;oacute;digo na action voc&amp;ecirc; poderia usar, por exemplo:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;http://localhost:3000/nome_da_acao.html&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;http://localhost:3000/nome_da_acao.xml&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Ou realizar uma chamada JS unobstrusive usando AJAX.&lt;/p&gt; &lt;p&gt;Isso ai, espero ter ajudado.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/33</id>
    <published>2008-10-21T03:10:18Z</published>
    <updated>2008-10-21T03:59:01Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/rails-summit-latin-america-2008-review-day-1" rel="alternate"/>
    <title>Rails Summit Latin America 2008 - Review Day 1</title>
    <content type="html">&lt;p&gt;Rails Summit Latin America 2008 was a great event at all. Nice speakers, nice people all around, good food. Only the weather wasn't so fine (above 30 C).&lt;/p&gt; &lt;p&gt;The event started with DHH talking on new features of Ruby On Rails 2.2 answering questions of the crowd. I didn't liked it too much, mostly common questions with common answers by him, nothing special.&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;DHH on Rails Summit Latin America 2008&quot; src=&quot;../../images/dhh-rails-summit-latin-america-2008.jpg&quot; title=&quot;DHH on Rails Summit Latin America 2008&quot; /&gt;&lt;/p&gt; &lt;p&gt;Then Chad Fowler comes and well really debut the event, he made an awesome presentation about be remarkable, talking about his book &amp;quot;My Job Went to India&amp;quot;, his life as a musician and Doom player :-)&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Chad Fowler on Rails Summit Latin America 2008&quot; src=&quot;../../images/chad-fowler-rails-summit-latin-america-2008.jpg&quot; title=&quot;Chad Fowler on Rails Summit Latin America 2008&quot; /&gt;&lt;/p&gt; &lt;p&gt;After lunch, George Malamidis talked about REST. I didn't liked too much, was hard to me after lunch pay attention, after 9 hours driving in day before and an early wake up for the event.&lt;/p&gt; &lt;p&gt;Dr Nic Williams talked on Open Source and encouraged people to contribuite more to Open Source Projects. Dr Nic Williams presented a very funny talk and I think if he could take a shot on a Saturday Night Live, if he don't want to be a developer anymore. He's the Jerry Seinfield of Ruby On Rails community.&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Dr Nic on Rails Summit Latin America 2008&quot; src=&quot;../../images/dr-nic-rails-summit-latin-america-2008.jpg&quot; title=&quot;Dr Nic on Rails Summit Latin America 2008&quot; /&gt;&lt;/p&gt; &lt;p&gt;Chris Wanstrath, his keynote was very similar to Ruby Hoedown keynote (good IMO, but I expected a little different).&lt;/p&gt; &lt;p&gt;The summit ends the first day with a Birds of Feather were some participants presented random thoughts, Eduardo Bellani also gave his presentation at this time. This whole BoF was one of the funniest moments at Rails Summit Latin America 2008.&lt;/p&gt;</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/32</id>
    <published>2008-10-20T06:26:42Z</published>
    <updated>2008-10-20T06:39:18Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/eduardo-bellani-on-rails-summit-latin-america-2008" rel="alternate"/>
    <title>Eduardo Bellani on Rails Summit Latin America 2008</title>
    <content type="html">&lt;p&gt;Apresenta&amp;ccedil;&amp;atilde;o de Eduardo Bellani sobre voto eletr&amp;ocirc;nico no Rails Summit Latin America 2008, em S&amp;atilde;o Paulo.&lt;/p&gt; &lt;p&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/sjG5B1xSSp8&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/sjG5B1xSSp8&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/31</id>
    <published>2008-10-10T19:36:50Z</published>
    <updated>2008-10-20T20:55:40Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/vota-o-caixa-preta" rel="alternate"/>
    <title>Vota&#231;&#227;o caixa preta (Black box voting)</title>
    <content type="html">&lt;p&gt;For the english readers (if any) =&amp;gt; sorry, this one will be in portuguese (except the article with a ++ in front)&lt;/p&gt; &lt;p&gt;Aqui embaixo vai uma colet&amp;acirc;nea de artigos sobre esse assunto (revisitei de novo o esquema de vota&amp;ccedil;&amp;atilde;o digital depois de assitir este &lt;a href=&quot;http://en.wikipedia.org/wiki/Hacking_Democracy&quot;&gt;document&amp;aacute;rio&lt;/a&gt;, o qual recomendo fortemente). Pretendo escrever algum artigo a respeito futuramente, mas n&amp;atilde;o pude deixar de compartilhar estas fontes, dada a gravidade deste assunto:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://voto-e.blogspot.com/2006/07/urna-eletrnica-e-os-ciberbobos.html&quot;&gt;entrevista com um especialista brasileiro&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.avirubin.com/vote.pdf&quot;&gt;++Analysis of an Electronic Voting System&lt;/a&gt;, artigo que &amp;eacute; citado no document&amp;aacute;rio sobre a fragilidade do sistema eleitoral americano&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.cic.unb.br/docentes/pedro/trabs/analise_setup.html&quot;&gt;vers&amp;atilde;o tupiniquim inpirada no artigo acima&lt;/a&gt;&lt;/li&gt; &lt;li&gt;neste &lt;a href=&quot;http://voto-e.blogspot.com/2007/06/voto-eletrnico-viagra-para-eleitores.html&quot;&gt;aqui&lt;/a&gt;, o nome diz tudo&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.brunazo.eng.br/voto-e/livros/FeD.htm&quot;&gt;livro&lt;/a&gt; dispon&amp;iacute;vel sobre fraudes na urna eleitoral brasileira&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;N&amp;atilde;o esque&amp;ccedil;am, ser um l&amp;iacute;der nada mais &amp;eacute; do que agir pensando no coletivo, e por incr&amp;iacute;vel que pare&amp;ccedil;a n&amp;oacute;s (uso essa palavra pra descrever todo mundo que esteja lendo um blog sobre tecnologia como este) somos a elite de nossa sociedade, e isso implica em agirmos como l&amp;iacute;deres, sob pena de ruir a mesma com nossa apatia.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/30</id>
    <published>2008-09-29T17:49:28Z</published>
    <updated>2008-10-15T18:04:37Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/new-article-on-pedagogical-development" rel="alternate"/>
    <title>New article on pedagogical development</title>
    <content type="html">&lt;p&gt;Hey there readers.&lt;/p&gt;&lt;p&gt;I've written a new small article, and I'm not even sure on what do to with it (if someone has a clue, drop me a line).&lt;/p&gt;&lt;p&gt;It's based on the works of Seymour Papert and constructionism.&lt;/p&gt;&lt;p&gt;Anyway, &lt;a href=&quot;../../learning_curve.pdf&quot;&gt;here&lt;/a&gt; it is.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/29</id>
    <published>2008-09-24T13:24:53Z</published>
    <updated>2008-09-24T13:25:37Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/rails-summit-latin-america-by-locaweb" rel="alternate"/>
    <title>Rails Summit Latin America by Locaweb</title>
    <content type="html">&lt;a href=&quot;http://site.locaweb.com.br/railssummit/default.asp&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Rails Summit Latin America&quot; border=&quot;0&quot; height=&quot;60&quot; src=&quot;http://site.locaweb.com.br/images/locaweb/pt_BR/railssummit/banners/468x60.gif&quot; title=&quot;Rails Summit Latin America&quot; width=&quot;468&quot; /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; Here we go!</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/28</id>
    <published>2008-07-28T23:43:52Z</published>
    <updated>2008-10-29T17:30:41Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/my-thesis-short-article" rel="alternate"/>
    <title>My thesis short article</title>
    <content type="html">&lt;p&gt;Hey there. I've closed college (finally) and for the last project we had to built an extensive conclusion work and an article on this work.&lt;/p&gt;&lt;p&gt;The full length work is in portuguese, so it's a bit inaccessible to most readers, but I've tried to write the article in english, since it was permitted and it increased the potential reader base.&lt;/p&gt;&lt;p&gt;So &lt;a href=&quot;../../a-new-production-model-for-the-competition-in-a-progressively-more-integrated-world.pdf&quot;&gt;here&lt;/a&gt; it is. It's about using the Getting Real philosophy as a way to be competitive in an ever increasingly competitive and integrated world. Hope you guys enjoy it, and any grammar mistakes, please point them out, english is not my first language, and mistakes do happen :P&lt;/p&gt;&lt;p&gt;Hugs&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/27</id>
    <published>2008-07-08T17:12:49Z</published>
    <updated>2008-11-13T19:54:17Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/export-the-database-models-to-yml-fixtures" rel="alternate"/>
    <title>Export the database models to YML fixtures</title>
    <content type="html">&lt;p&gt;Hi Sirs,&lt;/p&gt; &lt;p&gt;Many tutorials over the web shows how to load data from fixtures. But, if you want to migrate your &lt;em&gt;mysql&lt;/em&gt; data to a &lt;em&gt;postgresql&lt;/em&gt; database?&lt;/p&gt; &lt;p&gt;We can export our data to fixtures, and after that we can load the fixtures to every database management system we wish.&lt;/p&gt; &lt;p&gt;Let's go to the rake task:&lt;/p&gt;

&lt;pre&gt;&lt;span class=&quot;ident&quot;&gt;desc&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;export the database models to YML fixtures&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; 
&lt;span class=&quot;ident&quot;&gt;task&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:models_to_fixtures&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:environment&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; 
  &lt;span class=&quot;constant&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Base&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;establish_connection&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;symbol&quot;&gt;:adapter&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;postgresql&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;',&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# mysql, sqlite3&lt;/span&gt;
    &lt;span class=&quot;symbol&quot;&gt;:encoding&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;utf8&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;',&lt;/span&gt;
    &lt;span class=&quot;symbol&quot;&gt;:database&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;cnxs_development&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;',&lt;/span&gt;
    &lt;span class=&quot;symbol&quot;&gt;:username&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;',&lt;/span&gt;
    &lt;span class=&quot;symbol&quot;&gt;:password&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;secret&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;
  &lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;constant&quot;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Base&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;connection&lt;/span&gt;

  &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;['&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;MODELS&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;'].&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;nil?&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;['&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;MODELS&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;'].&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;blank?&lt;/span&gt;
    &lt;span class=&quot;keyword&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;Please enter valid models names separated by coma. Ex: MODELS=User,Account&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;ident&quot;&gt;models&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;['&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;MODELS&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;'].&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;('&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;').&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;collect&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;arg&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;arg&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;camelize&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;constantize&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;ident&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{}&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;collection&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:all&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;ident&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;store&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;to_param&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;attributes&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;file_path&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&lt;span class=&quot;expr&quot;&gt;#{RAILS_ROOT}&lt;/span&gt;/tmp/&lt;span class=&quot;expr&quot;&gt;#{model.table_name}&lt;/span&gt;.yml&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;# /tmp/&lt;/span&gt;
    &lt;span class=&quot;constant&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;file_path&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;w+&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;to_yaml&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Here you need to fill your database attributes like you do in the &lt;em&gt;/config/database.yml&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;You will call the command line:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ rake models_to_fixtures MODELS=&amp;lt;your model names separated by coma&amp;gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ rake models_to_fixtures MODELS=User,Post&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;All your model data will be stored on &lt;em&gt;/tmp/&lt;/em&gt; directory.&lt;/p&gt; &lt;p&gt;Download this rake task &lt;a href=&quot;../../models_to_fixtures.rake&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/26</id>
    <published>2008-06-26T13:58:57Z</published>
    <updated>2008-10-24T04:29:31Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/better-than-grep-you-bet" rel="alternate"/>
    <title>Better than grep? You bet!</title>
    <content type="html">&lt;p&gt;Well, long time no post here.&lt;/p&gt; &lt;p&gt;I'm going to talk about a tool that changed the way I do search on the programming front.&lt;/p&gt; &lt;p&gt;Since I really don't like grep for common searches (it's a great tool but it's interface is a bit clunky) I used to use the &lt;a href=&quot;http://regexxer.sourceforge.net/&quot; title=&quot;Regexxer&quot;&gt;Regexxer&lt;/a&gt; for those kind of project searches (it's a great GUI tool, I recommend it to anyone).&lt;/p&gt; &lt;p&gt;But since I'm more of a minimalist command line kind of guy, I was happy as a &lt;a href=&quot;http://en.wikipedia.org/wiki/Bonobo&quot; title=&quot;Happy monkey&quot;&gt;bonobo&lt;/a&gt; when I found &lt;a href=&quot;http://petdance.com/ack/&quot; title=&quot;Ack makes me happy, Bonobo style&quot;&gt;ack&lt;/a&gt;, a grep like program hat has a interface for human beings (yeah, ubuntu reference, sue me). To give a little example on how simple is to search in a ruby project for example:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;cd ~/project/path&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;ack-grep --ruby string_to_be_searched&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;And that's it, if you want any more details, the &lt;a href=&quot;http://petdance.com/ack/&quot; title=&quot;again, a cool link&quot;&gt;ack&lt;/a&gt; home page has a great little tutorial.&lt;/p&gt; &lt;p&gt;Hugs everyone.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/25</id>
    <published>2008-06-24T16:01:13Z</published>
    <updated>2008-10-20T21:02:53Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/windows-in-ubuntu-8-04-with-virtualbox" rel="alternate"/>
    <title>Windows in Ubuntu 8.04 with VirtualBox</title>
    <content type="html">&lt;p&gt;I have a Windows on my machine, cause for some stuff I still need it, (MS Visio, MindMaps and couple of others application that doesn't run fine with Wine). It's a pain in the ass to always boot machine to access 2 or 3 files and stay 15 minutes on Windows.&lt;/p&gt; &lt;p&gt;A couple of years ago I was a big fan of &lt;a href=&quot;http://www.vmware.com/&quot; title=&quot;VMware&quot; target=&quot;_blank&quot;&gt;VMware&lt;/a&gt; (old times that I virtualize ubuntu on windows), and I felt a lack of OSS on this area. So the solution it's virtualization, with &lt;a href=&quot;http://www.virtualbox.org&quot; title=&quot;VirtualBox&quot; target=&quot;_blank&quot;&gt;VirtualBox&lt;/a&gt; it all comes easy!&lt;/p&gt; &lt;p&gt;VirtualBox, was recently bought by Sun, has 2 licenses: one commercial and one open source. I use OSE and to install it you have to follow these steps:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo apt-get install virtualbox-ose virtualbox-ose-modules-generic&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Then add your current user on 'vboxusers'&amp;nbsp; group&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo adduser someuser vboxusers&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Go to applications &amp;gt; system tools &amp;gt; VirtualBox&lt;/p&gt; &lt;p&gt;Now create your Windows VM with the almost NNF (next, next,finish) wizard. It's a piece of cake!&lt;/p&gt;</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/24</id>
    <published>2008-06-18T13:38:37Z</published>
    <updated>2008-11-13T19:57:28Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/rspec-view-test-for-partial-with-locals" rel="alternate"/>
    <title>RSpec view test for render :partial with :locals?</title>
    <content type="html">&lt;p&gt;I was working on some rspec views tests and I've noticed that partial renderization can be tricky.&lt;/p&gt; &lt;p&gt;For example, if we have an index page that renders the objects list in a partial template.&lt;/p&gt; &lt;p&gt;In my case I was testing using a 'GivingClub' list:&lt;/p&gt; 

&lt;pre&gt;&lt;span class=&quot;ident&quot;&gt;describe&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;giving_clubs&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;before&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;attribute&quot;&gt;@giving_clubs&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;mock_model&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;GivingClub&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)]&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;assigns&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:giving_clubs&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;@giving_clubs&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;expect render giving clubs list&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;expect_render&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:partial&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;/giving_clubs/list&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:locals&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:giving_clubs&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;@giving_clubs&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;})&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;render&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;/giving_clubs/index&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Do not forget the assigns before call template.expect_render. Locals works fine in this way.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/23</id>
    <published>2008-05-13T12:12:26Z</published>
    <updated>2008-05-13T12:14:40Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/hp-acquired-eds" rel="alternate"/>
    <title>HP Acquired EDS</title>
    <content type="html">&lt;p&gt;Well another big player buying other big player. Big acquisitions in the last couple of months! For around $13 billion ($25 per share). HP said that they could double their service revenue. Well seems that market doesn't believe too much in HP since their shares are down on 6% now...&amp;nbsp;&lt;/p&gt;&lt;p&gt;Source: &lt;a href=&quot;http://www.marketwatch.com/news/story/hp-acquire-eds-139-billion/story.aspx?guid=%7B1678B521%2D7B0E%2D47A7%2D90EF%2D7AE3A725ABE9%7D&quot; target=&quot;_blank&quot;&gt;market watch&lt;/a&gt;&lt;br /&gt; &lt;/p&gt;</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/22</id>
    <published>2008-03-02T12:51:19Z</published>
    <updated>2008-10-24T04:19:37Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/clean-objects-with-find-method" rel="alternate"/>
    <title>Clean Objects with find method</title>
    <content type="html">&lt;p&gt;Hi Sirs.&lt;/p&gt; &lt;p&gt;An important trick on the famous ActiveRecord::Base find method.&lt;/p&gt; &lt;p&gt;When you are in development time of your application, and you do some query on your database query editor, is a good practice to use the limit clauses and selects just the columns you want.&lt;/p&gt; &lt;p&gt;In the find method we can do it with the :limit and :select arguments.&lt;/p&gt; &lt;p&gt;For example in our code when we try to authenticate some user we got it like:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;find(:first, :conditions =&amp;gt; [query, hash], :select =&amp;gt; &amp;quot;id, email, login&amp;quot;)&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;The returned object contains just the id, email and login attributes. Clean object.&lt;/p&gt; &lt;p&gt;Password and other attributes do not appears in the returned object =]&lt;/p&gt; &lt;p&gt;Simple development practice, but very important too.&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/21</id>
    <published>2008-02-21T20:05:53Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/rspec-quickref" rel="alternate"/>
    <title>Rspec quickref</title>
    <content type="html">&lt;p&gt;Hey wanderers  &lt;/p&gt;&lt;p&gt;Sorry for all this time frozen, the crew and I have a lot to post about, but our current assignments has kept everyone pretty busy(but that's not an excuse, so let me blow the dust off this blog).&lt;/p&gt;&lt;p&gt;So, just stumbled on &lt;a href=&quot;http://blog.daveastels.com/&quot;&gt;Dave Astels&lt;/a&gt; (for those of you who don't know the guy, he's one of the responsible for the creation of the rspec behavior driven development framework, I'll post more specifically about it later, but you can find tons of info on the web about it) rspec &lt;a href=&quot;http://blog.daveastels.com/files/QuickRef.pdf&quot;&gt;QuickRef&lt;/a&gt;. For those of us who are using rspec a lot, this might come in handy. I know it did for me.  &lt;/p&gt;&lt;p&gt;Just a tip this time folks, but I'll try and get some cooler tutorial next time.&lt;/p&gt;&lt;p&gt;Hugs to you all&amp;nbsp;&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/20</id>
    <published>2008-02-05T09:18:31Z</published>
    <updated>2008-10-24T04:30:33Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/installing-rmagick-on-ubuntu" rel="alternate"/>
    <title>Installing RMagick on Ubuntu</title>
    <content type="html">&lt;p&gt;Last week I was installing again rmagick on a Ubuntu server, then I discovered an very easy way to do it.&lt;/p&gt; &lt;pre&gt;&lt;strike&gt;&lt;code&gt;$ sudo aptitude install librmagick-ruby&lt;/code&gt;&lt;/strike&gt;&lt;/pre&gt; &lt;p&gt;Edit 10/20/08:&amp;nbsp;Avoid this tutorial it doesn't work, if you wanna install rmagick use the old fashion way:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo apt-get install imagemagick&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;$ sudo apt-get install libmagick9-dev&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;$ sudo gem install rmagick&lt;/code&gt;&lt;/pre&gt;</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/19</id>
    <published>2008-01-28T13:19:07Z</published>
    <updated>2008-10-24T04:33:15Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/sql-lite-for-ruby-on-rails" rel="alternate"/>
    <title>SQL Lite for Ruby On Rails</title>
    <content type="html">&lt;p&gt;Hi all.&lt;/p&gt; &lt;p&gt;If your Operacional System is Ubuntu and you are using Ruby on Rails 2.0.2 you can easily use it:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo apt-get install sqlite3&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;$ sudo gem install sqlite3-ruby&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;SQLite3 does not use authentication and needs only a pointer to the database file on database yml.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;development:&lt;br /&gt;&amp;nbsp; adapter: sqlite3&lt;br /&gt;&amp;nbsp; database: db/development.sqlite3&lt;br /&gt;&amp;nbsp; timeout: 5000&lt;br /&gt;test:&lt;br /&gt;&amp;nbsp; adapter: sqlite3&lt;br /&gt;&amp;nbsp; database: db/test.sqlite3&lt;br /&gt;&amp;nbsp; timeout: 5000&lt;br /&gt;production:&lt;br /&gt;&amp;nbsp; adapter: sqlite3&lt;br /&gt;&amp;nbsp; database: db/production.sqlite3&lt;br /&gt;&amp;nbsp; timeout: 5000&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;When you run &amp;quot;rake db:create:all&amp;quot; on your RAILS_ROOT it creates all 3 databases.&lt;/p&gt; &lt;p&gt;More information about other plataforms?&lt;/p&gt; &lt;p&gt;Here: &lt;a href=&quot;http://wiki.rubyonrails.org/rails/pages/HowtoUseSQLite&quot;&gt;http://wiki.rubyonrails.org/rails/pages/HowtoUseSQLite&lt;/a&gt;&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/18</id>
    <published>2008-01-23T18:21:26Z</published>
    <updated>2008-11-13T20:12:31Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/atom-feed-helper-example" rel="alternate"/>
    <title>Atom Feed Helper Example</title>
    <content type="html">Hi all,&lt;br /&gt;Rails 2 makes the Atom RSS Feed much more sophisticated and elegant. If you are using the Ruby on Rails by RubyGems installer, maybe you have an old version of the Atom Feed Helper. To fix it you can check out the atom_feed_helper version inside the Ruby on Rails repository and after that, copy and paste it to /vendor/plugins/ directory.&lt;br /&gt;The repository is: &lt;a href=&quot;http://svn.rubyonrails.org/rails/plugins/atom_feed_helper&quot;&gt;http://svn.rubyonrails.org/rails/plugins/atom_feed_helper&lt;/a&gt;.&lt;br /&gt;In there you will find plugins that are more up to date.&lt;br /&gt;In the README you will find a simple example to build your feed. Like when you click in our Cnxs feed at the navigation bar, if you are browsing with Firefox.&lt;br /&gt;Here comes our example:
&lt;pre&gt;&lt;span class=&quot;comment&quot;&gt;# rss.builder&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;atom_feed&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:schema_date&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;last&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;created_at&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;year&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;feed&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;feed&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;CNXS&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;feed&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;updated&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;first&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;created_at&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;utc&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;ident&quot;&gt;feed&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
      &lt;span class=&quot;ident&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;ident&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:type&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;')&lt;/span&gt;
      &lt;span class=&quot;ident&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;author&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;author&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
        &lt;span class=&quot;ident&quot;&gt;author&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;ident&quot;&gt;author&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;


You can note the the atom_feed method has 4 arguments, but just one of them is required, that is the :schema_date. You can read at &lt;a href=&quot;http://feedvalidator.org/docs/error/InvalidTAG.html&quot;&gt;http://feedvalidator.org/docs/error/InvalidTAG.html&lt;/a&gt;, you see that the URI tag needs a year to be fix in the validators, month and day parts are optional. The others arguments are :language, that defaults to &amp;quot;en-US&amp;quot;, :root_url, that defaults to the root path on the current host and :url that defaults to the current URL.&lt;br /&gt;Another thing that you can look is that the &amp;quot;.builder&amp;quot; extension has higher precedence. So, if you code it in your rss action in the PostsController:

&lt;pre&gt;&lt;span class=&quot;ident&quot;&gt;respond_to&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt;
  &lt;span class=&quot;ident&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;atom&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;render&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:layout&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;

the atom format respond int the same way to rss.builder and rss.atom.builder.&lt;br /&gt;

See you.</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/17</id>
    <published>2008-01-18T09:33:27Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/some-thoughts-on-some-thoughts-on-security" rel="alternate"/>
    <title>Some Thoughts on Some Thoughts on Security</title>
    <content type="html">I've been reading a great &lt;a href=&quot;http://cr.yp.to/qmail/qmailsec-20071101.pdf&quot;&gt;paper&lt;/a&gt; by Daniel J. Bernstein, the creator of a &lt;a href=&quot;http://cr.yp.to/qmail.html&quot;&gt;qmail&lt;/a&gt;, and wow, what a pearl of wisdom. One of the most clarifying and straight to the point works on code security I have ever read. He (quite correctly) makes a parallel between the code security and the amount on exploitable bugs (EB), stating that it is the major problem on the code, regarding security. And then gives some answers to that problem, along with a couple of common distractions of the programmer while coding that helps those EB creep on our code base (CB). Let's review then, starting with the distractions, and I'll try to make some links with my favorite unambiguous tool of choice, Ruby. &lt;ol&gt; &lt;li&gt;Chasing attackers. The point here is give some thought to respond to tomorrow's attacks, and not being trapped by the anti-virus mentality of being only responsive to aggressors. Perhaps the dynamic nature of Ruby would help with that, but I think it is more a personal posture problem than anything else.&lt;/li&gt; &lt;li&gt;Minimizing privilege. Here, what is being said is that the old principle of least privilege is fundamentally wrong. How so? Well, it might (!) reduce the damage done by security holes, but never fixes these. Plus, IMO, it might even give users a false sense of security. Again, it is more of a way of a personal way of thinking (but what isn't? :P ).&lt;/li&gt; &lt;li&gt;Speed, speed, speed. Here I think rubists have some advantage. Since we work on a language that is 'slow', usually we tend to not place emphasis on premature optimization. I think this quote summarizes the thinking here: &lt;blockquote&gt;Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small ef&#64257;ciencies, say about 97% of the time; premature optimization is the root of all evil. &amp;mdash;Knuth in [13, page 268]&lt;/blockquote&gt;&lt;/li&gt; &lt;/ol&gt; Now, to the answers. These are also 3, and they are codependent connected to each other: &lt;ol&gt; &lt;li&gt;Eliminating bugs. I think everyone saw that one coming. But even so, Daniel's down to earth advices on it are a very worthwhile reading. I think I can summarize him on this section by saying (and that is a plus to rubists too), simplify stuff. Simplify interfaces, UI, parsing. Elegance is not a luxury, it is a way to obtain security. Following that logic we come to.&lt;/li&gt; &lt;li&gt;Eliminating code. Heck, here I'll quote his quote, and be done with it. &lt;blockquote&gt;To this very day, idiot software managers measure 'programmer productivity' in terms of 'lines of code produced,' whereas the notion of 'lines of code spent' is much more appropriate. &amp;mdash;Dijkstra in [9, page EWD962&amp;ndash;4]&lt;/blockquote&gt; But as our systems grow, and our time and budgets remain the same or are diminished, and as programmers get more dumb, something has to give right? Wrong (don't know about the last part though).&lt;/li&gt; &lt;li&gt;Eliminating trusted code. That is somewhat more difficult I think, but it says that a program should do what it is meant to do, nothing more, and trust as few sources of data as possible. KISS and all that stuff.&lt;/li&gt; &lt;/ol&gt; I would love to hear any input on that. Until next time people.</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/16</id>
    <published>2008-01-16T20:07:26Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/oracle-acquired-bea" rel="alternate"/>
    <title>Oracle Acquired BEA</title>
    <content type="html">What a day &lt;a href=&quot;http://www.oracle.com/bea/&quot;&gt;huh&lt;/a&gt;? &lt;a href=&quot;http://www.oracle.com&quot;&gt;Oracle&lt;/a&gt; bought BEA for around U$ 8.5 billions. I don't like this kind of acquisition, cause means less competitors in some market that they used to compete.</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/15</id>
    <published>2008-01-16T18:52:28Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/mysql-acquired-by-sun" rel="alternate"/>
    <title>MySQL Acquired by SUN</title>
    <content type="html">&lt;a href=&quot;http://www.mysql.com/&quot; target=&quot;_blank&quot;&gt;Huh&lt;/a&gt;? Sun acquired MySQL as announced today. I was very surprised by this notice, I guess soon we gonna have a much better DBMS. How does it sound for you?</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/14</id>
    <published>2008-01-14T23:29:16Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/work-environment" rel="alternate"/>
    <title>Work Environment</title>
    <content type="html">What's your work environment? Which IDE or whatever you use for code? I will describe mine:&lt;br /&gt;I use &lt;a href=&quot;http://www.eclipse.org&quot; title=&quot;Eclipse&quot; target=&quot;_blank&quot;&gt;Eclipse&lt;/a&gt; as my IDE for Rails Java or ColdFusion (I use a separate version/dist of Eclipse for each). I don't have too much to complain about memory usage, cause everytime I prefer spend a hundred bucks more on my pc's to get much more memory that I would use. By the way here's a tip for those who want to reduce the memory usage of Eclipse, or just want to not have some tools that they will not use (that's me!). Download only the Eclipse Plataform Binary (around 40MB) that comes without the JDT and without other unnecessary plugins.&lt;br /&gt;Ok that will save some MB on your memory. Now build your own environment, with only plugins that you want!&lt;br /&gt;Here is mine for Ruby on Rails: &lt;a href=&quot;http://www.aptana.com&quot; title=&quot;Aptana&quot; target=&quot;_blank&quot;&gt;Aptana&lt;/a&gt;, &lt;a href=&quot;http://www.aptana.com&quot; title=&quot;RadRails&quot; target=&quot;_blank&quot;&gt;RadRails&lt;/a&gt;, &lt;a href=&quot;http://subclipse.tigris.org&quot; title=&quot;SubClipse&quot; target=&quot;_blank&quot;&gt;Subclipse&lt;/a&gt;.&lt;br /&gt;ColdFusion: &lt;a href=&quot;http://www.cfeclipse.org&quot; title=&quot;CFEclipse&quot; target=&quot;_blank&quot;&gt;CFEclipse&lt;/a&gt;, &lt;a href=&quot;http://www.aptana.com&quot; title=&quot;Aptana&quot; target=&quot;_blank&quot;&gt;Aptana&lt;/a&gt;, &lt;a href=&quot;http://subclipse.tigris.org&quot; title=&quot;SubClipse&quot; target=&quot;_blank&quot;&gt;Subclipse&lt;/a&gt;&lt;br /&gt;Java: WTP, &lt;a href=&quot;http://subclipse.tigris.org&quot; title=&quot;SubClipse&quot; target=&quot;_blank&quot;&gt;Subclipse&lt;/a&gt;.</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/13</id>
    <published>2008-01-14T21:35:07Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/ext-js" rel="alternate"/>
    <title>Ext JS</title>
    <content type="html">Hey people, here is my first post and I expect you enjoy it.&lt;br /&gt;Have you ever heard about the javascript library &lt;a href=&quot;http://www.extjs.com&quot; title=&quot;Ext JS&quot; target=&quot;_blank&quot;&gt;Ext JS&lt;/a&gt;? If your answer is no, you should visit their website. It's an amazing javascript library, build in the top of &lt;a href=&quot;http://developer.yahoo.com/yui/&quot; title=&quot;Yahoo UI&quot; target=&quot;_blank&quot;&gt;Yahoo UI&lt;/a&gt; library (another amazing), with a impressive variety of pretty beautiful and fully featured components. It's also extensible, customizable and very well documented. This last point I want to give a special focus, cause the documentation of the api is very good (part are inherit of YUI).&lt;br /&gt;So if you want to deliver web 2.0 applications, don't forget to take a look closely on this library.</content>
    <author>
      <name>Rafael Coelho de Souza</name>
      <email>rcoelhodesouza@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/12</id>
    <published>2008-01-14T13:08:17Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/html-filtering-with-sanitize-helper" rel="alternate"/>
    <title>HTML Filtering with sanitize helper</title>
    <content type="html">Hi sirs,&lt;br /&gt; another important feature that we need to use is the 'sanitize' helper. This Ruby on Rails helper filters HTML nodes and attributes and strips invalid protocols. Here in our case the use it on the simpler way:&lt;br /&gt; &lt;code&gt;&amp;lt;%= sanitize(post.body) %&amp;gt;&lt;/code&gt;&lt;br /&gt; Other time you can choose the options ':tags' and ':attributes' to do a custom use where just the HTML tags and attributes pointed here are allowed to be interpreted.&lt;br /&gt; It is another little tip that helps in malicious posts or comments containing javascripts codes or comments with different enconding. Here comes the Rails API link to more information about this: &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#M000936&quot; title=&quot;Sanitize Helper&quot; target=&quot;_blank&quot;&gt;SanitizeHelper&lt;/a&gt;.&lt;br /&gt; See you.</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/11</id>
    <published>2007-12-27T22:09:33Z</published>
    <updated>2008-11-13T20:15:35Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/ruby-on-rails-pagination" rel="alternate"/>
    <title>Ruby on Rails pagination</title>
    <content type="html">&lt;p&gt;Hi sirs.&lt;/p&gt; &lt;p&gt;I really recommend the official Ruby on Rails paginator. Very easy to use. Like 95% of the plugins =).&lt;/p&gt; &lt;p&gt;I just checkout the project on SVN, change one line of code on my controller, appends a line of code on the &amp;quot;.html.erb&amp;quot; template index file, and paste a piece of CSS code on the stylesheet, and it works. The piece of CSS code is defined on the README file inside the plugin's root directory.&lt;/p&gt; &lt;p&gt;In my case, I just insert on my controller:&lt;/p&gt; 
&lt;pre&gt;&lt;span class=&quot;attribute&quot;&gt;@posts&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Post&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;paginate&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:page&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:page&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:per_page&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:order&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;created_at DESC&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;and just insert on the view's bottom:&lt;/p&gt; 
&lt;pre&gt;&lt;span class=&quot;punct&quot;&gt;&amp;lt;%=&lt;/span&gt;&lt;span class=&quot;string&quot;&gt; will_paginate @posts %&amp;gt;&lt;span class=&quot;normal&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The CSS code I just change the color =).&lt;/p&gt; &lt;p&gt;The SVN repository is &lt;a href=&quot;svn://errtheblog.com/svn/plugins/will_paginate&quot;&gt;svn://errtheblog.com/svn/plugins/will_paginate&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The page that contains most of instructions is the &lt;a href=&quot;http://errtheblog.com/&quot;&gt;err.the_blog&lt;/a&gt;, but if you just read the README in the will_paginate plugin you will be prepared to do all the work.&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/10</id>
    <published>2007-12-27T08:17:28Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/new-file-extensions-on-ruby-on-rails" rel="alternate"/>
    <title>New file extensions on Ruby on Rails</title>
    <content type="html">The very best point to participate of a developers group like CNXS is when you found a problem, everyone tries to help faster they can.&lt;br /&gt;Rafael Souza shows me &lt;a href=&quot;http://ryandaigle.com/articles/2007/2/21/what-s-new-in-edge-rails-rhtml-and-rxml-to-die-a-slow-and-painful-death&quot;&gt;this post&lt;/a&gt; on another blog and it helps a lot. Just change the extension &amp;quot;.rhtml&amp;quot; to &amp;quot;.html.erb&amp;quot; and &amp;quot;.rxml&amp;quot; to &amp;quot;.builder&amp;quot; on you Ruby on Rails application in version 2.0.2. Your problems is gone.&lt;br /&gt;See you.</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/9</id>
    <published>2007-12-27T07:37:51Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/problems-on-ruby-on-rails-2-0-2" rel="alternate"/>
    <title>Problems on Ruby on Rails 2.0.2</title>
    <content type="html">Hi all,&lt;br /&gt; Ruby on Rails 2.0.2 is released... and I do not like this version, because of 2 modifications.&lt;br /&gt; 1. Database default: Postgresql is my favorite database management system, but I know that Mysql is very easy to use on Windows and Linux. I respect the preference about Mysql. But I do not like what I read on &amp;quot;&lt;a href=&quot;http://weblog.rubyonrails.org/2007/12/17/rails-2-0-2-some-new-defaults-and-a-few-fixes&quot;&gt;Riding Rails&lt;/a&gt;&amp;quot; that says &amp;quot;This is especially so under OS X 10.5 Leopard, which ships with SQLite3 and the driver gems preinstalled as part of the development kit&amp;quot;. Sincerelly, for me, it is not a good point to change the default database :P&lt;br /&gt; 2. &amp;quot;.rxml&amp;quot; files was fired. Our feed on the site just blow up... because we use the .rxml files to render the xml version of the site.&lt;br /&gt;&lt;br /&gt; Our host is using just Rails 2.0.2, living on the edge has problems too.&lt;br /&gt; =)&lt;br /&gt; See you.</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/8</id>
    <published>2007-12-19T14:52:22Z</published>
    <updated>2008-10-25T02:28:39Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/cv-with-curve-and-latex-in-ubuntu-7-10" rel="alternate"/>
    <title>CV with Curve and LaTeX in Ubuntu 7.10</title>
    <content type="html">&lt;p&gt;Hey there. In our little how-to I'll explain something that was very useful to me, this great &lt;a href=&quot;http://www.lrde.epita.fr/~didier/research/verna.06.practex.pdf&quot;&gt;tutorial&lt;/a&gt; by &lt;a href=&quot;http://www.lrde.epita.fr/~didier/&quot;&gt;Didier Verna&lt;/a&gt;, on using the &lt;a href=&quot;http://en.wikipedia.org/wiki/LaTeX&quot;&gt;Latex&lt;/a&gt; &lt;a href=&quot;http://www.ctan.org/tex-archive/macros/latex/contrib/curve/&quot;&gt;curve&lt;/a&gt; class to build Cvs (pretty nice and standardized ones). That will be a superb reading for a more detailed tutorial. If you want to take a peek before reading on, here is my &lt;a href=&quot;../../files/cv.pdf&quot;&gt;CV&lt;/a&gt; sample(a little past upgrade time :P), using a modified version of the sample used on the aforementioned tutorial, plus the source files &lt;a href=&quot;../../files/cv_source.tar.gz&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Anyway, I'll use the Ubuntu 7.10 distro, and all the wonderful free tool that are at our disposal in there. First, lets download the, IMO, best latex docs editor, &lt;a href=&quot;http://kile.sourceforge.net/&quot;&gt;kile&lt;/a&gt;. Then let's proceed to fetch the LaTeX packages so our Kile can compile smoothly our docs.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo apt-get install kile tetex-extra&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Now bake a cake and go play soccer (looong download). Then download the &lt;a href=&quot;http://www.ctan.org/tex-archive/macros/latex/contrib/curve/&quot;&gt;Curve&lt;/a&gt; (or take the compiled one with my source files) class and place it on the docs root tree. So, now build a new project, add all the necessary files on that, including the curve class. If click on the pdflatex button (the big gear with a little pdf symbol) it should generate the cv.pdf nicely (don't forget to only use PDF, JPG, JBIG2, and PNG graphics formats, kile use pdflatex on this command, do yourself a favor and read the manual).&lt;/p&gt; &lt;p&gt;On some future post I'll go step by step on my modifications and the meanings of the commands. But if you just change the text and go hacking stuff you'll eventually find out what things mean. Oh, and please write on open office or something else that has a grammar correction, a CV with grammar mistakes don't look so good :)&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/7</id>
    <published>2007-12-18T18:26:23Z</published>
    <updated>2008-04-18T10:03:20Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/first-page-on-google-com-br" rel="alternate"/>
    <title>First page on google.com.br</title>
    <content type="html">Hi all,&lt;br /&gt;I am very happy to type 'cnxs' on &lt;a href=&quot;http://google.com.br&quot;&gt;google.com.br&lt;/a&gt;, and found our name in the first page.&lt;br /&gt;Thanks to meta tags =)&lt;br /&gt;See you.</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/6</id>
    <published>2007-12-16T21:19:54Z</published>
    <updated>2008-10-25T02:24:15Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/installing-postgresql-on-ubuntu-7-10" rel="alternate"/>
    <title>Installing Postgresql on Ubuntu 7.10</title>
    <content type="html">&lt;p&gt;Hi Sirs.&lt;/p&gt; &lt;p&gt;Now I am using &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu 7.10&lt;/a&gt; and my favorite Database Management System is &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;Postgresql&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The best tutorial that I found is the Ubuntu tutorial about Postgresql and &lt;a href=&quot;http://www.pgadmin.org/&quot;&gt;pgAdmin&lt;/a&gt; installation.&lt;/p&gt; &lt;p&gt;Very easy to learn by every developer. This tutorial shows how to install both the Database Management System and the Administration and Development Platform.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://help.ubuntu.com/community/PostgreSQL&quot;&gt;https://help.ubuntu.com/community/PostgreSQL&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Easy to install and configure.&lt;/p&gt; &lt;p&gt;Just one line to install the 'Sophisticated open-source Object-Relational DBMS' and the 'graphical Open Source management, development and administration tool'.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo apt-get install postgresql pgadmin3&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Other two commands to configure your new account:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$ sudo -u postgres psql template1&lt;br /&gt;$ template1=# ALTER USER postgres WITH ENCRYPTED PASSWORD '&amp;lt;***password***&amp;gt;';&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;I recommend this tutorial =]&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/5</id>
    <published>2007-12-13T21:44:39Z</published>
    <updated>2008-10-21T03:12:12Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/filter-sensitive-information-on-logs" rel="alternate"/>
    <title>Filter sensitive information on logs</title>
    <content type="html">&lt;p&gt;Hi Sirs,&lt;/p&gt; &lt;p&gt;a very important thing that I can remember about security on web environment is 'logs'.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt; provide a very simple way to protect us of store sensitive information on the logs. Every information that goes through the parameters is writed on the log. In websystem development phasis logging information is important, but in the production phasis, is dangerous. Hackers in general can take information through many ways. Our tip to protect sensitive information in the logs is the method 'filter_parameter_logging' of the &lt;a href=&quot;http://api.rubyonrails.com/classes/ActionController/Base.html&quot;&gt;Class ActionController::Base&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;ActionController is the mother class of every controller in your applications, so the best place to call it is in the &lt;em&gt;app/controllers/application.rb&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Just insert this example line of code:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;filter_parameter_logging :password, :password_confirmation&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;and than it replaces the values of all keys that matches the arguments name with &amp;quot;[FILTERED]&amp;quot;, and you are protecting your informations in the logs.&lt;/p&gt; &lt;p&gt;Is a simple tip, but very important. Do not forgot to use it.&lt;/p&gt; &lt;p&gt;See you.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/4</id>
    <published>2007-12-10T00:12:04Z</published>
    <updated>2008-10-21T03:09:00Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/rails-2" rel="alternate"/>
    <title>Rails 2</title>
    <content type="html">&lt;p&gt;Hi all,&lt;/p&gt; &lt;p&gt;I am very happy to give you the notice that our website here, is installed in Ruby on Rails 2.0.1 just 3 days after the release is finished. Installed and tested in the weekend =].&lt;/p&gt; &lt;p&gt;That's the way that the CNXS team likes to work. Ever living on the edge.&lt;/p&gt; &lt;p&gt;Congratulations to Ruby on Rails Development Staff and to CNXS Team.&lt;/p&gt; &lt;p&gt;See you sirs.&lt;/p&gt;</content>
    <author>
      <name>Wilson de Almeida</name>
      <email>wilsondealmeida@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/3</id>
    <published>2007-12-10T00:05:34Z</published>
    <updated>2008-10-21T03:07:40Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/a-good-testing-idea" rel="alternate"/>
    <title>A good testing idea</title>
    <content type="html">&lt;p&gt;The &lt;a href=&quot;http://www.youtube.com/watch?v=m-nwvB7Up_g&quot;&gt;approach&lt;/a&gt; of Douglas Sellers about testing their AJAX heavy system really sounded to me as an excellent idea. I can imagine in the future this being adopted by more and more web systems, as they embrace javascript for building RIAs more and more.&lt;/p&gt; &lt;p&gt;Essentially they have built a DSL on top of &lt;a href=&quot;http://www.openqa.org/selenium/&quot;&gt;selenium&lt;/a&gt; using ruby (yay), for testing the AJAX stuff on their page, aiming at easiness to write the tests, trading the complexity of writing the tests for the complexity of the DSL itself, trying even for the non technical people on the company to write their own tests.&lt;/p&gt; &lt;p&gt;Really recommended for a fresh and no nonsense view on testing.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/2</id>
    <published>2007-12-10T00:04:34Z</published>
    <updated>2008-10-20T21:06:18Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/freedom-of-our-thoughts-and-works" rel="alternate"/>
    <title>Freedom of our thoughts and works</title>
    <content type="html">&lt;p&gt;If you have not yet &lt;a href=&quot;http://www.ted.com/talks/view/id/187&quot;&gt;seen&lt;/a&gt; or &lt;a href=&quot;http://www.free-culture.cc/&quot;&gt;read&lt;/a&gt; Lawrence Lessig, I urge you to. I'll try to make a small analysis on his work, just as a appetizer for for those still ignorant about it :).&lt;/p&gt; &lt;p&gt;His point is that we are moving away from a read-only culture, where the content is controlled and governed by producers and broadcasters, and consumers have little saying on the content, to a read-write culture.&lt;/p&gt; &lt;p&gt;What is a read-write culture? One that is governed by the freedom to modify. Where distribution costs are next to zero, and each individual now has a shot at producing her own content, and to mix and remix work of a third party, without being worry of a lawsuit. A new (we could argue that for most of the human history it has been that way, just in the 20 century the paradigm has changed) way of looking at our own freedoms, and how we can not only consume work of others, but create ours, based or not on all the free content available.&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
  <entry>
    <id>tag:cnxs.com.br,2007:Post/1</id>
    <published>2007-12-10T00:03:34Z</published>
    <updated>2008-10-20T21:04:22Z</updated>
    <link type="text/html" href="http://cnxs.com.br/posts/introduction-to-cnxs" rel="alternate"/>
    <title>Introduction to cnxs</title>
    <content type="html">&lt;p&gt;Hey Folks. This is the first post, so I'll manage to keep myself away from technological ramblings and just say some words about us and our purpose here.&lt;/p&gt; &lt;p&gt;This is not exactly a company, it is more a group of friends with some mutual interests who got together because they thought it would be fun to do it and each could learn and teach the others a lot.&lt;/p&gt; &lt;p&gt;What bought us together here is a passion for developing good software, with tools that help us not only accomplish this, but to have some fun while we are doing it. We like what we do, and I can say that we don't view this as a job, but as a pleasant thing, which fortunately happens to be payed sometimes (yay). I think that's that for now, but we'll be back tomorrow.&lt;/p&gt; &lt;p&gt;Hugs everyone, and welcome to the joy of connected thoughts :D&lt;/p&gt;</content>
    <author>
      <name>Eduardo Bellani</name>
      <email>ebellani@gmail.com</email>
    </author>
  </entry>
</feed>
