<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
  <id>tag:cnxs.com.br,2007:/rss</id>
  <link type="text/html" href="http://cnxs.com.br" rel="alternate" />
  
  <title>CNXS</title>
  <updated>2009-09-08T16:27:17Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/Cnxs" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><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ódigo com liberdade ou morte(): Porque Hackers geralmente são libertários</title>
    <content type="html">&lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"&gt;

por &lt;A  HREF="http://dfranke.us/cfod.html"&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ão vai ser novidade que
hackers são com freqüência libertários. A razão é normalmente entendiada como
algo assim: hackers, por definiçã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ém iria gostar dessas coisas ou
porque que elas teriam valor pra alguém, passam leis que interferem com essas
atividades. Justificadamente irados, hackers adotam visões políticas que se
opõem a estas intrusões.

&lt;P&gt;
A mais clara exposição deste modelo talvez seja o artigo de 2004 do Paul Graham
chamado "A palavra `hacker'". A idéia geral entretanto já está tacitamente
entendida a muito mais tempo. Ela é a base para o tom  de várias histórias do
site Slashdot. Observações da correlação hacker-libertário é ainda mais
antiga; não da pra ler USENET antiga por 10 minutos sem perceber-la.

&lt;P&gt;
A rescrição de Gordon ao corolário de Newman sobre a lei de Godwin observa
"Libertarismo (pro, contra, e lutas entre as facções) é o tópico primordial
de discussões do net.news. Qualquer hora que o debate muda para outro lugar, ele
precisa eventualmente voltar a esta fonte de combustível" (Não sei quando isto
foi escrito. Não foi entes de 1990 que a lei de Godwin foi criada, e não depois
de 1994 que Godwin a citou).

&lt;P&gt;
Hackers tem uma longa história de conflitos com governo. Uma lista incompleta:

&lt;P&gt;

&lt;UL&gt;
&lt;LI&gt;1986: O ``Computer Fraud and Abuse Act" passa no congresso americano,
      tornando pela primeira vez cracking um crime. Enquanto ele é direcionado
      principalmente a crimes não controversos, abuso legal por autoridades
      ignorantes por atos perfeitamente legais como port-scanning se torna
      rotina na década de 90.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1993: Philip Zimmerman é o alvo de uma investigação criminal depois que o
      PGP é sai dos Estados Unidos, em violação de restrições de exportação para
      criptografia (que era classificada como munição na época).

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1996: O ``Communications Decency Act" restringe severamente material
      "obsceno ou indecente" na internet. Esta lei é 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" passa, tornando crime qualquer
      tentativa de passar pelas medidas de segurança que tem como objetivo proteger
      material com copyright, independentemente da intenção do tentativa.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1999: Jon Johansen et. al. libera o DeCSS, decodificando a `encriptação'
      ridícula usado praticamente em todos os DVDs e tornando possível assistir
      DVDs usando software open-source. No ano seguinte, a casa de Johansen é
      invadida pela polícia Norueguesa.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;1999: Amazon recebe a notória patente do 1-click.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2000: 72 pessoas na Califórnia recebem uma intimação proibindo-as de usar
      uma camiseta contendo o có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, é
      preso  pela lei DMCA e detido por vários meses por ter escrito um leitor
      de e-book capaz de ler vários formatos com DRM.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2002: Sarbanes-Oxley torna quase impossível para pequenas startups web
      fazerem abertura de ações

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2003: A saga legal da SCO começa. SCO exige que todos os usuários Linux a
    paguem $700 dólares de licença.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2003: O FBI invoca abusivamente o USA PATRIOT ACT para recuperar 
    notas de repórteres que entrevistaram Adrian Lamo.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2004:  No que Brad Templeton descreve como `spamlitigação', o RIAA começa a
    processar seus clientes em massa, distribuindo mais de 20000 processos
    legais, incluindo crianças, avós e falecidos entre os acusados.

&lt;P&gt;
&lt;/LI&gt;
&lt;LI&gt;2005: FEC Commissioner Bradley Smith afirma que `a exceção da imprensa' do
      McCain-Feingold Campaign Finance Reform Act não inclui bloggers.

&lt;P&gt;
&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;
Entretanto, estes casos sã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ção anterior dos operadores de rádio amador. Foi uma cultura libertária
desde sua concepção. Mesmo assim, a lista começa em 1986. Antes do CFAA, era
difícil apontar para qualquer intrusão que incomodasse os hackers em particular.
Uso civil dos computadores não estava no radar do congresso e da polícia até
então.

&lt;P&gt;
Para não fazer injustiça a tese de Graham, ela é muito mais abrangente que
qualquer lista de reclamações. Graham observa corretamente que hackers tem suspeita de toda a autoridade, mesmo
onde a teoria libertária diz que esta autoridade é legítima. Hackers ficam tão
nervosos com o chefe que controla seu departamento fala para eles que "Eu
acabo de ler numa revista sobre algo chamado virtualização. Nós deveríamos usar
isso." quanto vão ficar com algum agente do governo. Por isso os hackers já se
incomodavam bastante antes de 1986. O governo chegou tarde para essa festa.

&lt;P&gt;
Mas a obvervação que hackers são um grupo de espertinhos reclamações não explica o
porque disto. Se as reclamações não se limitam a intersecção entre governo e
tecnologia, porque esta atitude tem relação com escrever código?

&lt;P&gt;
A resposta de Graham a isto é a seguinte:

&lt;P&gt;
Deixe-me colocar isto em termos que um oficial do governo iria apreciar.
      As liberdades civis não são apenas um ornamento, ou uma velha tradição
      americana. Liberdades civis fazem os países enriquecerem. Se você fizer um
      gráfico de PIB per capita vs liberdades civis, você verá uma forte
      relação. Poderia tais liberdades serem a causa, ao invés da conseqüência
      da riqueza? Eu penso que sim. Eu penso que uma sociedade em que as pessoas
      podem dizer e fazer o que quiserem irá ser uma onde as soluções mais
      eficientes venceriam, ao invés daquelas que fossem patrocinadas pelas
      pessoas mais poderosas. Países autoritários se tornam corruptos, países
      corruptos se tornam pobres, e países pobres se tornam fracos. Parece que
      existe uma curva Laffer para o poder do governo, assim como para impostos.
      No mínimo, é provável o suficiente para não se tentar um experimento para
      testar a hipótese. Ao contrário de impostos, você não pode repelir o
      totalitarismo se ele não funcionar direito.

&lt;P&gt;
É por isso que os hackers se preocupam. O governo espionando as pessoas
      não faz com que o código que eles escrevem se torne pior. Ele apenas leva
      a um mundo onde as idéias ruins vencem. E por causa que isto é tão
      importante para os hackers, eles são especialmente sensíveis a isto. Eles
      podem sentir o autoritarismo se aproximando a distância, como animais
      podem sentir uma tempestade.

&lt;P&gt;
Eu acho que isto é uma falácia &lt;A NAME="tex2html3"
  HREF="http://pt.wikipedia.org/wiki/Falácia"&gt;petitio
principii&lt;/A&gt;. É uma visão libertária
sobre o porque os hackers deveriam ser libertários. Se alguém concorda com a
premissa que as liberdades civis fazem as pessoas enriquecerem, então tudo seque
tranqüilamente. Mas se o governo autoritário "não faz com que o código que eles
escrevem se torne pior", então porque hackers tem uma chance maior de fazer esta
conexão?

&lt;P&gt;
Uma resposta tentadoramente lisonjeira para esta pergunta vêm do post de 1992 de
Stuart Reges. Resumidamente, Reges afirma que existem uma certa habilidade
mental - "QI libertário" - 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ês, eu acho que este argumento erra o ponto da discussão. Toda a
teoria econômica que vem junto com o libertarismo é um efeito secundário.
Libertarismo não é sobre o que nos faz ricos; é sobre o que é certo.&lt;SPAN  CLASS="textit"&gt;
&lt;A NAME="tex2html2"
  HREF="http://pt.wikipedia.org/wiki/Declaração_da_Independência_dos_Estados_Unidos_da_América"&gt;``We hold these truths to be self-evident''&lt;/A&gt;&lt;/SPAN&gt;
e tudo mais. Libertários  não se opões ao governo porque é atrapalhado e
ineficiente, se opõe porque é maligno.

&lt;P&gt;
Além disso, acho que Reges nos dá muito crédito. O conhecimento médio dos
hackers sobre a escola Austríaca ou a de Chicago é mais medíocre do que eles se
permitiriam em qualquer assunto técnico. Comece a falar de externalidades ou o
&lt;A NAME="tex2html4"
  HREF="http://qualia-esob.blogspot.com/2008_04_01_archive.html"&gt;problema do
parasita&lt;/A&gt;
e nós mudaremos de assunto. 
Claro, os mais sofisticados irão citar o &lt;A NAME="tex2html5"
  HREF="http://www.knoow.net/cienceconempr/economia/teoremadecoase.htm"&gt;Teorema de
Coase&lt;/A&gt;, mas a maioria nem
ouviu falar dele.

&lt;P&gt;
Eu acho que nós estivemos olhando para o problema do ângulo errado. 
Não é que hackers adotam políticas libertárias, nem que existe um terceiro fator
que influencia libertários e hackers. Ao invés disso, pessoas com uma atitude
anti autoritária tendem a serem atraídos para programação.

&lt;P&gt;
A frase "conhecimento é poder" é um clichê, mas é também verdadeira num sentido
bem literal. Aquilo que você não entende tem poder sobre você. As pessoas que
não tem interesse em entender os computadores estão totalmente acostumadas a
serem mandadas por eles; é mais um fato da vida. Se você não sabe que você pode
mudar o bit de apenas-leitura ao clicar com o botão direito e editar o atributo
na janela de propriedades, então não ter a permissão de editar o arquivo não é
fundamentalmente diferente de não ser capaz de tocar um arquivo .wma cifrado
porque a Microsoft fechou seu servidor de licença. Tentar fazer com que pessoas
leigas se importem com DRM é inútil. Eles são sujeitos as tiranias de seus
computadores todo o tempo. Porque esta seria pior?

&lt;P&gt;
Mas para aqueles de temperamento libertário, isso é um estado inaceitável. Ser
mandado pelo governo já é ruim o suficiente. Mas ser mandado por um objeto
inanimado? Intolerável. Como eu posso controlar essa coisa?

&lt;P&gt;
Este modelo da psiquê humana explica bastante nossas idiossincrasias de
personalidade. Quando você não tolera ser ignorante sobre uma tecnologia,
aprender sobre ela é a única saída. A outra é se tornar um
&lt;A NAME="tex2html6"
  HREF="http://educaterra.terra.com.br/voltaire/artigos/ludismo.htm"&gt;ludita&lt;/A&gt;. Hackers se tornam
luditas com freqüência.

&lt;P&gt;
Para exemplificar, eu tenho o mais barato celular do mercado. Ele não pode nem
fazer o download de tons. Mas é ótimo para fazer chamadas. Porque é isso que
eles tem que fazer. Eles não são feitos para mandar email. Nem para jogar
tetris. Nem para tirar fotos. São feitos para fazer chamadas. É bastante chato
ter que descobrir como tirar meu telefone do modo de câmera. Eu não quero
descobrir como tirar meu telefone do modo de câmera, porque telefones não são
feitos para tirar fotos. São feitos para fazer chamadas.

&lt;P&gt;
Algumas pessoas riem dessa atitude, mas é o mesmo sentimento que hackers tem
quando reclamam de inchaço de software. Todos já escutamos, se já não tivermos
participado, de conversas como:

&lt;P&gt;
``Eu não quero que meu editor de texto leia email! Eu quero um editor de
    texto!''

&lt;P&gt;
``Entã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ê você não ignora isso? Não está nem exposto na interface gráfica.
    Você tem que saber o comando correto para ativá-lo. São menos de 80MB de
    espaço, e você tem 1TB no seu disco, e a maior parte não chega na RAM até
    que você a invoca.''

&lt;P&gt;
``Mas é nojento!''

&lt;P&gt;
Pode parecer forçado chamar a atitude dos odiadores do emacs de ludismo, e mais
forçado ainda chamá-lo de libertária. Mas a psicologia é a mesma. Ninguém quer
tirar o tempo para entender alguma coisa que eles consideram supérflua.
Racionalmente ou não, hackers irão encontrar qualquer tecnologia que eles não
entendem com suspeita - não de seus mérito, mas de sua segurança. "I eu quero
isso ai ferrando com meu sistema", nós iremos dizer para você, mesmo sabendo
perfeitamente bem que ele irá apenas sentar em um canto do disco rígido. Já
recompilou seu kernel apenas para desabilitar um módulo que você não necessita?
A maior pare de nós já o fez, mas isso desafia qualquer base racional.

&lt;P&gt;
Mas essa irracionalidade é comum. As atitudes libertárias geralmente ultrapassam
os princípios libertários. Essencialmente todos os libertários defendem o
direito de portar armas, mas consideram o direito a propriedade privada mais
fundamental. Então, nós compreendemos o direito do de proprietários de proibir
armas em sua propriedade. Mas isso não impede libertários de ficarem perturbados
cada vez que um proprietário exerce esse direito.

&lt;P&gt;
Ficamos perturbados com os hoplofóbicos (medo de armas de fogo) pela mesma razão
que arrancamos aquele mó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="vim.org"&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="http://plt-scheme.org/"&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="vim-code" text="#ffffff"&gt;&lt;font face="monospace"&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;Maintainer:&lt;/b&gt;&lt;/font&gt;&lt;span class="Comment"&gt;&amp;nbsp;&amp;nbsp; Bram Moolenaar &amp;lt;Bram@vim.org&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; To use it, copy it to&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;10 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;11 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;12 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;13 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;14 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;set noguipty&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;15 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;16 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; set the X11 font to use&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;17 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;18 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;19 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;20 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;!exists(&amp;quot;syntax_on&amp;quot;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;21 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;syntax&lt;/b&gt;&lt;/font&gt;&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;on&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;22 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;endif&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;23 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;24 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;SETTINGS&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;25 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;26 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;ch&lt;/b&gt;&lt;/font&gt;=2&lt;span class="vimSet"&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="#00ffff"&gt;&lt;b&gt;&amp;quot; Make command line two lines high&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;27 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;mousehide&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&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="#00ffff"&gt;&lt;b&gt;&amp;quot; Hide the mouse when typing text&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;28 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;29 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;30 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;31 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;use it like this&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;32 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;:grep Dumper perllib&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;33 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;34 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;grepprg&lt;/b&gt;&lt;/font&gt;=ack-grep\ -a&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;35 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;36 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;37 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; Switch on search pattern highlighting.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;38 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;hlsearch&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;39 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;40 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;display current info all the time&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;41 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;ruler&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;42 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;43 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;colorscheme&lt;/b&gt;&lt;/font&gt;&amp;nbsp;twilight&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;44 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;45 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;prettier font...&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;46 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;guifont&lt;/b&gt;&lt;/font&gt;=Liberation\ Mono\ 12&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;47 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;48 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; those next 2 commands are taken from a tip in &lt;a href="http://vim.sourceforge.net/tips/tip.php?tip_id=259"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;49 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;50 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;51 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; get rid of toolbar&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;52 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;guioptions&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&gt;-&lt;/span&gt;=&lt;span class="vimSet"&gt;T&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;53 &lt;/b&gt;&lt;/font&gt;:&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g&lt;span class="vimCmdSep"&gt;:&lt;/span&gt;toggleTool&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;0&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;54 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;silent&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;S-F2&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:if g:toggleTool == 1&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set guioptions-=T&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set lines+=3&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:let g:toggleTool = 0&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:else&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set lines-=3&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set guioptions+=T&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:let g:toggleTool = 1&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:endif&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;55 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;56 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; get rid of menu&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;57 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;guioptions&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&gt;-&lt;/span&gt;=&lt;span class="vimSet"&gt;m&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;58 &lt;/b&gt;&lt;/font&gt;:&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g&lt;span class="vimCmdSep"&gt;:&lt;/span&gt;toggleMenu&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;0&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;59 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;silent&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;S-F1&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:if g:toggleMenu == 1&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set guioptions-=m&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set lines+=1&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:let g:toggleMenu = 0&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:else&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:set guioptions+=m&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:let g:toggleMenu = 1&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;:endif&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;60 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;61 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;line numbers please...&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;62 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;number&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;63 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;64 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;set the incremental search&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;65 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;incsearch&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;66 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;67 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;remember more history&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;68 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;history&lt;/b&gt;&lt;/font&gt;=50&lt;span class="vimSet"&gt;0&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;69 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;70 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;71 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;72 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;gdefault&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;73 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;74 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;75 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:rubycomplete_buffer_loading&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;1&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;76 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:rubycomplete_classes_in_global&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;1&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;77 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:rubycomplete_rails&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;1&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;78 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;79 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;80 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;*****************************************************************************************************&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;81 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;*****************************************************************************************************&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;82 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;*****************************************************************************************************&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;83 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;84 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;MAPPINGS &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;85 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;86 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;87 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;88 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;S-Insert&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;MiddleMouse&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;89 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map!&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;S-Insert&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;MiddleMouse&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;90 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;91 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;v&amp;nbsp;&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;ESC&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;span class="vimMapRhs"&gt;&amp;quot;+gp &lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;92 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;c&amp;nbsp;&amp;quot;+y &lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;93 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;94 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;n&amp;nbsp;:vnew&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;95 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;96 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;97 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;found here &lt;a href="http://dailyvim.blogspot.com/2008/11/reload-vimrc.html?showComment=1228044660000#c2642014041159858949"&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="#ffff00"&gt;&lt;b&gt;&amp;nbsp;98 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;au&lt;/b&gt;&lt;/font&gt;! &lt;font color="#00ff00"&gt;&lt;b&gt;BufWritePost&lt;/b&gt;&lt;/font&gt;&amp;nbsp;$MYVIMRC&amp;nbsp;&lt;span class="Statement"&gt;source&lt;/span&gt;&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;%&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;99 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;100 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;101 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;Found here &lt;a href="http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim"&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="#ffff00"&gt;&lt;b&gt;102 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;t&amp;nbsp;:FuzzyFinderTextMate&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;103 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;104 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;minibufexpl plugin &lt;a href="http://www.vim.org/scripts/script.php?script_id=159"&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="#ffff00"&gt;&lt;b&gt;105 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:miniBufExplMapWindowNavVim=1&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;106 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:miniBufExplMapWindowNavArrows=1&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;107 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;let&lt;/b&gt;&lt;/font&gt;&amp;nbsp;g:miniBufExplMapCTabSwitchBufs=1&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;108 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;hid&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;Hide abandoned buffers in order to not loose undo history (taken from &lt;a href="http://heykevinle.blogspot.com/2007/06/vim-minibufexpl.html)"&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="#ffff00"&gt;&lt;b&gt;109 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;110 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;111 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;Leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;b&amp;nbsp;:MiniBufExplorer&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;cr&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&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="#ffff00"&gt;&lt;b&gt;113 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; SPELLING OPTIONS &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;114 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;115 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;116 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;autocmd&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ff00"&gt;&lt;b&gt;BufNewFile&lt;/b&gt;&lt;/font&gt;,&lt;span class="Type"&gt;BufRead&lt;/span&gt;&amp;nbsp;*.txt,*.html,README,*.tex,*.story&lt;span class=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Statement"&gt;setlocal&lt;/span&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;spell&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;spelllang&lt;/span&gt;=en_u&lt;span class="vimSet"&gt;s&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;117 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;118 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;119 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;F2&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:setlocal spell spelllang=en_us&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;120 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;map&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;F3&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;:setlocal spell spelllang=pt&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;CR&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;121 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;122 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;123 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;mousemodel&lt;/b&gt;&lt;/font&gt;=popu&lt;span class="vimSet"&gt;p&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;124 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;125 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;textwidth&lt;/b&gt;&lt;/font&gt;=8&lt;span class="vimSet"&gt;0&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;126 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;127 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;found those on &lt;a href="http://wiki.rubyonrails.org/rails/pages/HowtoUseVimWithRails"&gt;http://wiki.rubyonrails.org/rails/pages/HowtoUseVimWithRails&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;128 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;filetype&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ff00"&gt;&lt;b&gt;plugin&lt;/b&gt;&lt;/font&gt;&lt;span class="vimFiletype"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Type"&gt;indent&lt;/span&gt;&lt;span class="vimFiletype"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Type"&gt;on&lt;/span&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot; Enable filetype-specific indenting and plugins&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;129 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;augroup&lt;/b&gt;&lt;/font&gt;&amp;nbsp;myfiletypes&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;130 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;131 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;autocmd&lt;/b&gt;&lt;/font&gt;&lt;span class="vimAugroup"&gt;!&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;132 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;133 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;134 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;autocmd&lt;/b&gt;&lt;/font&gt;&lt;span class="vimAugroup"&gt;&amp;nbsp;&lt;/span&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;FileType&lt;/b&gt;&lt;/font&gt;&amp;nbsp;ruby,eruby,yaml&lt;span class="vimAugroup"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Statement"&gt;set&lt;/span&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;ai&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;sw&lt;/span&gt;=2&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;sts&lt;/span&gt;&lt;span class="vimSetEqual"&gt;=2&lt;/span&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;bs&lt;/span&gt;&lt;span class="vimSetEqual"&gt;=2&lt;/span&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;et&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;135 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;136 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#8080ff"&gt;&lt;b&gt;ai&lt;/b&gt;&lt;/font&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;sw&lt;/span&gt;=2&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;sts&lt;/span&gt;&lt;span class="vimSetEqual"&gt;=2&lt;/span&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;bs&lt;/span&gt;&lt;span class="vimSetEqual"&gt;=2&lt;/span&gt;&lt;span class="vimSet"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="PreProc"&gt;et&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;137 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;augroup&lt;/b&gt;&lt;/font&gt;&amp;nbsp;END&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;138 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;139 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;Autoidenting ruby code using the kode gem. Found on &lt;a href="http://antono.info/en/50"&gt;http://antono.info/en/50&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;140 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;rci&amp;nbsp;:%!ruby-code-indenter&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;cr&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;141 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;142 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;143 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;d&amp;nbsp;:bd&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;cr&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;144 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;145 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;quot;write the buffer&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;146 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;w&amp;nbsp;:w&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;cr&lt;/span&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;147 &lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;font color="#ffff00"&gt;&lt;b&gt;148 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&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="#ffff00"&gt;&lt;b&gt;149 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;nmap&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;lt;&lt;font color="#ff6060"&gt;&lt;b&gt;leader&lt;/b&gt;&lt;/font&gt;&lt;span class="Delimiter"&gt;&amp;gt;&lt;/span&gt;wa&amp;nbsp;:wa&lt;span class="Delimiter"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Special"&gt;cr&lt;/span&gt;&lt;span class="Delimiter"&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="tex2html1"
  HREF="http://www.amazon.com/Vortex-Neurons-Rodolfo-R-Llinas/dp/0262621630"&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="tex2html2"
  HREF="http://thesciencenetwork.org/programs/the-science-studio/enter-the-i-of-the-vortex"&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="http://github.com/ebellani/Emergent-Design-Article/raw/d412f3aac686161c8c9fbe178e6b8c883a48c226/emergent_design.pdf"&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="http://ournature.org/~novembre/illich/1970_deschooling.html"&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="textit"&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="http://web.media.mit.edu/~cavallo/cavallo_emergent_design.pdf"&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="http://www.mprove.de/diplom/gui/Kay74.pdf"&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 "extensible" system, can easily "be" 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. "Tempting analogies" which later come back to haunt are especially to be avoided.&lt;/p&gt;

&lt;p&gt;We teach "straight" 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 "natural language" linguistic structures are ultimately deadly and we avoid them.&lt;/p&gt;

&lt;p&gt;Examples are: "nouns", "verbs", "pronouns", 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 "putting the student under the gun", 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 "thinking on one's feet".&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 "bail out" 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 "simultaneous" 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="http://www.amazon.com/Society-Mind-Marvin-Minsky/dp/0671657135"&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="http://web.media.mit.edu/~push/ExaminingSOM.html"&gt;review&lt;/a&gt; or just to read
the book itself. It is the &lt;SPAN  CLASS="textit"&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="textit"&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="http://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/0465046746/ref=wl_it_dp?ie=UTF8&amp;coliid=I3S1J23V2VTONF&amp;colid=25BYFGJI3WTE5"&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="http://www.amazon.com/exec/obidos/ISBN=0743276639/marvinminskyA/"&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="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"&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, "I understand
  this, it is just part of the object I am already seeing. I won't pass on the
  details." 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, "I don't know what this is, I didn't anticipate it, why don't you
  higher-ups look at it?" 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— creativity— 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— 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="http://en.wikipedia.org/wiki/Chinese_Room"&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="http://hdl.handle.net/1721.1/6084"&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="www.numenta.com/Numenta_HTM_Concepts.pdf"&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="http://www.papert.org"&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="http://en.wikipedia.org/wiki/Mathetics"&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="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;index&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@posts&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="ident"&gt;respond_to&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;html&lt;/span&gt; &lt;span class="comment"&gt;# index.html.erb&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;csv&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;list&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;csv_list&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@posts&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;send_data&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;list&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:type&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;text/plain&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="symbol"&gt;:filename&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;posts.csv&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="symbol"&gt;:disposition&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;attachment&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;})&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;headers&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Content-Length&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;list&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;length&lt;/span&gt;&lt;br /&gt;    &lt;span class="punct"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&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‘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 "File.size(path)", 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="http://www.actsasconference.com/"&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="http://www.railsenvy.com/aac"&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á, gostaria de discutir uma questão que é muito relevante para os brasileiros em geral. O sistema de cotas que acaba de ser aprovado na câmara. 
&lt;a href="http://txt.estado.com.br/editorias/2008/11/22/edi-1.93.5.20081122.1.1.xml"&gt;Aqui&lt;/a&gt;
tem um bom texto para saber mais sobre o assunto.
&lt;/p&gt;
&lt;p&gt;
A questão real é de eficiência da solução. Cotas, ao meu ver,
serviriam mais para prejudicar o mercado alvo (índios, negros,
excluídos sociais, etc),
pois retiraria pressão do governo em providenciar aquilo que é responsável,
um ensino médio de qualidade, compromissado com o aprendizado 
técnico, social e crítico da população, sem distinções.
&lt;/p&gt;
&lt;p&gt;
Cotas em suma, não contribuiriam em nada para o alívio da dívida moral
(que existe e realmente precisa ser paga),
econômica e política que a sociedade brasileira e mundial tem com suas
parcelas mais
fracas e historicamente exploradas, e sim contribuiriam para os
políticos terem desculpas,
ao apontar para a "realização" da "justiça" com as cotas, sendo que
nada realmente justo 
foi realizado, e a solução verdadeira que só viria com sacrifício e
mudança real é empurrada
para as próximas gerações realizarem.
&lt;/p&gt;
&lt;p&gt;
Ou seja, é a solução de covardes que se escondem atrá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="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;User&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;
  &lt;span class="ident"&gt;has_one&lt;/span&gt; &lt;span class="symbol"&gt;:profile&lt;/span&gt; &lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:dependent&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="symbol"&gt;:destroy&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;


&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Profile&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;
  &lt;span class="ident"&gt;belongs_to&lt;/span&gt; &lt;span class="symbol"&gt;:user&lt;/span&gt;
  &lt;span class="ident"&gt;validates_presence_of&lt;/span&gt; &lt;span class="symbol"&gt;:first_name&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:last_name&lt;/span&gt;
&lt;span class="keyword"&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="http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M001642"&gt;
  validates_associated&lt;/a&gt;, but you would end up with a message like "Profile is
  invalid". 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="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;validate&lt;/span&gt;
  &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;profile&lt;/span&gt;
    &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;profile&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;errors&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;error&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;errors&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;add_to_base&lt;/span&gt; &lt;span class="ident"&gt;error&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;join&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt; &lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&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="http://creativecommons.org/licenses/by-nc/2.5/br/deed.en_US"&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="http://omnisio.com/startupschool08"&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="keyword"&gt;module &lt;/span&gt;&lt;span class="module"&gt;Hand&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Animal&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Mamal&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;Animal&lt;/span&gt;
  &lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;Hand&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Dog&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;Mamal&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;dog&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;

&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;instance_of?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Dog&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;    &lt;span class="comment"&gt;# true&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;instance_of?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Mamal&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;  &lt;span class="comment"&gt;# false&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;instance_of?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Animal&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="comment"&gt;# false&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;instance_of?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Hand&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;   &lt;span class="comment"&gt;# false&lt;/span&gt;

&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;is_a?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Dog&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;    &lt;span class="comment"&gt;# true&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;is_a?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Mamal&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;  &lt;span class="comment"&gt;# true&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;is_a?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Animal&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="comment"&gt;# true&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;is_a?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;Hand&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;   &lt;span class="comment"&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="David Chelimsky and CNXS Team" src="../../images/david-chelimsky-rails-summit-latin-america-2008.jpg" title="David Chelimsky and CNXS Team" /&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="Rafael Souza and Obie Fernandez" src="../../images/obie-fernandez-rails-summit-latin-america-2008.jpg" title="Rafael Souza and Obie Fernandez" /&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="Carlos Brando, F&amp;aacute;bio Akita and CNXS Team" src="../../images/carlos-brando-fabio-akita-rails-summit-latin-america-2008.jpg" title="Carlos Brando, F&amp;aacute;bio Akita and CNXS Team" /&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="http://ruby-doc.org/core/classes/Object.html#M000333"&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="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Chuck&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;Object&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;norris&lt;/span&gt;
    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;the man&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="ident"&gt;chuck_norris&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Chuck&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;
&lt;span class="ident"&gt;p&lt;/span&gt; &lt;span class="ident"&gt;chuck_norris&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;respond_to?&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;norris&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt; &lt;span class="comment"&gt;# true&lt;/span&gt;
&lt;span class="ident"&gt;p&lt;/span&gt; &lt;span class="ident"&gt;chuck_norris&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;respond_to?&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;mr_t&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt; &lt;span class="comment"&gt;# false&lt;/span&gt;
&lt;/pre&gt;

 &lt;p&gt;J&amp;aacute; o &lt;a href="http://api.rubyonrails.org/classes/ActionController/MimeResponds/InstanceMethods.html#M000206"&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="ident"&gt;respond_to&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;html&lt;/span&gt; &lt;span class="comment"&gt;# render por default nome_da_acao.html.erb&lt;/span&gt;
  &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;js&lt;/span&gt; &lt;span class="comment"&gt;# render o nome_da_acao.rjs&lt;/span&gt;
  &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;xml&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="symbol"&gt;:xml&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="attribute"&gt;@chuck&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_xml&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt; &lt;span class="comment"&gt;# coloca o chuck pra xml e envia&lt;/span&gt;
&lt;span class="keyword"&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="DHH on Rails Summit Latin America 2008" src="../../images/dhh-rails-summit-latin-america-2008.jpg" title="DHH on Rails Summit Latin America 2008" /&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="Chad Fowler on Rails Summit Latin America 2008" src="../../images/chad-fowler-rails-summit-latin-america-2008.jpg" title="Chad Fowler on Rails Summit Latin America 2008" /&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="Dr Nic on Rails Summit Latin America 2008" src="../../images/dr-nic-rails-summit-latin-america-2008.jpg" title="Dr Nic on Rails Summit Latin America 2008" /&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="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sjG5B1xSSp8&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sjG5B1xSSp8&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&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çã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="http://en.wikipedia.org/wiki/Hacking_Democracy"&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="http://voto-e.blogspot.com/2006/07/urna-eletrnica-e-os-ciberbobos.html"&gt;entrevista com um especialista brasileiro&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.avirubin.com/vote.pdf"&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="http://www.cic.unb.br/docentes/pedro/trabs/analise_setup.html"&gt;vers&amp;atilde;o tupiniquim inpirada no artigo acima&lt;/a&gt;&lt;/li&gt; &lt;li&gt;neste &lt;a href="http://voto-e.blogspot.com/2007/06/voto-eletrnico-viagra-para-eleitores.html"&gt;aqui&lt;/a&gt;, o nome diz tudo&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.brunazo.eng.br/voto-e/livros/FeD.htm"&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="../../learning_curve.pdf"&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="http://site.locaweb.com.br/railssummit/default.asp" target="_blank"&gt;&lt;img alt="Rails Summit Latin America" border="0" height="60" src="http://site.locaweb.com.br/images/locaweb/pt_BR/railssummit/banners/468x60.gif" title="Rails Summit Latin America" width="468" /&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="../../a-new-production-model-for-the-competition-in-a-progressively-more-integrated-world.pdf"&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="ident"&gt;desc&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;export the database models to YML fixtures&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="ident"&gt;task&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:models_to_fixtures&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="symbol"&gt;:environment&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; 
  &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;establish_connection&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;
    &lt;span class="symbol"&gt;:adapter&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;postgresql&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="comment"&gt;# mysql, sqlite3&lt;/span&gt;
    &lt;span class="symbol"&gt;:encoding&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;utf8&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt;
    &lt;span class="symbol"&gt;:database&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;cnxs_development&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt;
    &lt;span class="symbol"&gt;:username&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;username&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt;
    &lt;span class="symbol"&gt;:password&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;secret&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
  &lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;connection&lt;/span&gt;

  &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;MODELS&lt;/span&gt;&lt;span class="punct"&gt;'].&lt;/span&gt;&lt;span class="ident"&gt;nil?&lt;/span&gt; &lt;span class="punct"&gt;||&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;MODELS&lt;/span&gt;&lt;span class="punct"&gt;'].&lt;/span&gt;&lt;span class="ident"&gt;blank?&lt;/span&gt;
    &lt;span class="keyword"&gt;raise&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Please enter valid models names separated by coma. Ex: MODELS=User,Account&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

  &lt;span class="ident"&gt;models&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;MODELS&lt;/span&gt;&lt;span class="punct"&gt;'].&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;,&lt;/span&gt;&lt;span class="punct"&gt;').&lt;/span&gt;&lt;span class="ident"&gt;collect&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;arg&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;arg&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;camelize&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;constantize&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;

  &lt;span class="ident"&gt;models&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;model&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
    &lt;span class="ident"&gt;output&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;{}&lt;/span&gt;
    &lt;span class="ident"&gt;collection&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;model&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:all&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;collection&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;object&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="ident"&gt;output&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;store&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;object&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_param&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;object&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;attributes&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
    &lt;span class="ident"&gt;file_path&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{RAILS_ROOT}&lt;/span&gt;/tmp/&lt;span class="expr"&gt;#{model.table_name}&lt;/span&gt;.yml&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="comment"&gt;# /tmp/&lt;/span&gt;
    &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;open&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;file_path&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;w+&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;write&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;output&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_yaml&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&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="../../models_to_fixtures.rake"&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="http://regexxer.sourceforge.net/" title="Regexxer"&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="http://en.wikipedia.org/wiki/Bonobo" title="Happy monkey"&gt;bonobo&lt;/a&gt; when I found &lt;a href="http://petdance.com/ack/" title="Ack makes me happy, Bonobo style"&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="http://petdance.com/ack/" title="again, a cool link"&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="http://www.vmware.com/" title="VMware" target="_blank"&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="http://www.virtualbox.org" title="VirtualBox" target="_blank"&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="ident"&gt;describe&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;giving_clubs&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;before&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="attribute"&gt;@giving_clubs&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="ident"&gt;mock_model&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;GivingClub&lt;/span&gt;&lt;span class="punct"&gt;)]&lt;/span&gt;
    &lt;span class="ident"&gt;assigns&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:giving_clubs&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;@giving_clubs&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

  &lt;span class="ident"&gt;it&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;expect render giving clubs list&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="ident"&gt;template&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;expect_render&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:partial&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;/giving_clubs/list&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="symbol"&gt;:locals&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:giving_clubs&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="attribute"&gt;@giving_clubs&lt;/span&gt; &lt;span class="punct"&gt;})&lt;/span&gt;
    &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;/giving_clubs/index&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&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="http://www.marketwatch.com/news/story/hp-acquire-eds-139-billion/story.aspx?guid=%7B1678B521%2D7B0E%2D47A7%2D90EF%2D7AE3A725ABE9%7D" target="_blank"&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="http://blog.daveastels.com/"&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="http://blog.daveastels.com/files/QuickRef.pdf"&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="http://wiki.rubyonrails.org/rails/pages/HowtoUseSQLite"&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="http://svn.rubyonrails.org/rails/plugins/atom_feed_helper"&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="comment"&gt;# rss.builder&lt;/span&gt;
&lt;span class="ident"&gt;atom_feed&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:schema_date&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="attribute"&gt;@posts&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;last&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;created_at&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;year&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;feed&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="ident"&gt;feed&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;CNXS&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
  &lt;span class="ident"&gt;feed&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@posts&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;first&lt;/span&gt; &lt;span class="punct"&gt;?&lt;/span&gt; &lt;span class="attribute"&gt;@posts&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;first&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;created_at&lt;/span&gt; &lt;span class="punct"&gt;:&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;utc&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="attribute"&gt;@posts&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
    &lt;span class="ident"&gt;feed&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;entry&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;entry&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="ident"&gt;entry&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
      &lt;span class="ident"&gt;entry&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;content&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;body&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:type&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;html&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
      &lt;span class="ident"&gt;entry&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;author&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;author&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
        &lt;span class="ident"&gt;author&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;user&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
        &lt;span class="ident"&gt;author&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;email&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;user&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;email&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
      &lt;span class="keyword"&gt;end&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&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="http://feedvalidator.org/docs/error/InvalidTAG.html"&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="ident"&gt;respond_to&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;atom&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="symbol"&gt;:layout&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;false&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
&lt;span class="keyword"&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="http://cr.yp.to/qmail/qmailsec-20071101.pdf"&gt;paper&lt;/a&gt; by Daniel J. Bernstein, the creator of a &lt;a href="http://cr.yp.to/qmail.html"&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ﬁ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="http://www.oracle.com/bea/"&gt;huh&lt;/a&gt;? &lt;a href="http://www.oracle.com"&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="http://www.mysql.com/" target="_blank"&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="http://www.eclipse.org" title="Eclipse" target="_blank"&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="http://www.aptana.com" title="Aptana" target="_blank"&gt;Aptana&lt;/a&gt;, &lt;a href="http://www.aptana.com" title="RadRails" target="_blank"&gt;RadRails&lt;/a&gt;, &lt;a href="http://subclipse.tigris.org" title="SubClipse" target="_blank"&gt;Subclipse&lt;/a&gt;.&lt;br /&gt;ColdFusion: &lt;a href="http://www.cfeclipse.org" title="CFEclipse" target="_blank"&gt;CFEclipse&lt;/a&gt;, &lt;a href="http://www.aptana.com" title="Aptana" target="_blank"&gt;Aptana&lt;/a&gt;, &lt;a href="http://subclipse.tigris.org" title="SubClipse" target="_blank"&gt;Subclipse&lt;/a&gt;&lt;br /&gt;Java: WTP, &lt;a href="http://subclipse.tigris.org" title="SubClipse" target="_blank"&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="http://www.extjs.com" title="Ext JS" target="_blank"&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="http://developer.yahoo.com/yui/" title="Yahoo UI" target="_blank"&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="http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#M000936" title="Sanitize Helper" target="_blank"&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="attribute"&gt;@posts&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;paginate&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:page&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:page&lt;/span&gt;&lt;span class="punct"&gt;],&lt;/span&gt; &lt;span class="symbol"&gt;:per_page&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:order&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;created_at DESC&lt;/span&gt;&lt;span class="punct"&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="punct"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="string"&gt; will_paginate @posts %&amp;gt;&lt;span class="normal"&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="svn://errtheblog.com/svn/plugins/will_paginate"&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="http://errtheblog.com/"&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="http://ryandaigle.com/articles/2007/2/21/what-s-new-in-edge-rails-rhtml-and-rxml-to-die-a-slow-and-painful-death"&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="http://weblog.rubyonrails.org/2007/12/17/rails-2-0-2-some-new-defaults-and-a-few-fixes"&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="http://www.lrde.epita.fr/~didier/research/verna.06.practex.pdf"&gt;tutorial&lt;/a&gt; by &lt;a href="http://www.lrde.epita.fr/~didier/"&gt;Didier Verna&lt;/a&gt;, on using the &lt;a href="http://en.wikipedia.org/wiki/LaTeX"&gt;Latex&lt;/a&gt; &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/curve/"&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="../../files/cv.pdf"&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="../../files/cv_source.tar.gz"&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="http://kile.sourceforge.net/"&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="http://www.ctan.org/tex-archive/macros/latex/contrib/curve/"&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="http://google.com.br"&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="http://www.ubuntu.com/"&gt;Ubuntu 7.10&lt;/a&gt; and my favorite Database Management System is &lt;a href="http://www.postgresql.org/"&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="http://www.pgadmin.org/"&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="https://help.ubuntu.com/community/PostgreSQL"&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="http://rubyonrails.org"&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="http://api.rubyonrails.com/classes/ActionController/Base.html"&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="http://www.youtube.com/watch?v=m-nwvB7Up_g"&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="http://www.openqa.org/selenium/"&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="http://www.ted.com/talks/view/id/187"&gt;seen&lt;/a&gt; or &lt;a href="http://www.free-culture.cc/"&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>
