<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2spanishfull.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Raúl Ochoa</title>
	
	<link>http://rau1.com</link>
	<description>Procrastinando</description>
	<pubDate>Mon, 17 Nov 2008 15:39:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/rau1" type="application/rss+xml" /><feedburner:emailServiceId>554969</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Frau1" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/rau1" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Frau1" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Frau1" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Frau1" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=es&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Frau1" src="http://eur.i1.yimg.com/eur.yimg.com/i/es/my/addto1.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.feedness.com/alta/http://feeds.feedburner.com/rau1" src="http://www.feedness.com/ayuda/wp-content/square_b_sh_feed.gif">Subscribe with Feedness</feedburner:feedFlare><item>
		<title>Patrones de diseño: Con novia deja que te observen no que te llamen constantemente</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/455440125/patrones-de-diseno-con-novia-deja-que-te-observen-no-que-te-llamen-constantemente</link>
		<comments>http://rau1.com/blog/2008/11/17/patrones-de-diseno-con-novia-deja-que-te-observen-no-que-te-llamen-constantemente#comments</comments>
		<pubDate>Mon, 17 Nov 2008 01:29:53 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[design-patterns]]></category>

		<category><![CDATA[f1]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[lewis-hamilton]]></category>

		<category><![CDATA[nerd]]></category>

		<category><![CDATA[observer]]></category>

		<category><![CDATA[pull]]></category>

		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=143</guid>
		<description><![CDATA[ATENCIÓN: si soportas cualquier tipo de ideología/religión a la que el siguiente texto le pueda resultar molesto, reemplaza, a tu gusto, tantos términos como desees hasta que te encuentres ante un contenido coherente con tus principios/creencias. No pretendo molestar a nadie.
RMS fanboys: Java ya no es malo.
AVISO: probablemente lo que voy a contar no lo [...]]]></description>
			<content:encoded><![CDATA[<p>ATENCIÓN: si soportas cualquier tipo de ideología/religión a la que el siguiente texto le pueda resultar molesto, reemplaza, a tu gusto, tantos términos como desees hasta que te encuentres ante un contenido coherente con tus principios/creencias. No pretendo molestar a nadie.</p>
<p><acronym title="Richard Matthew Stallman">RMS</acronym> fanboys: <a href="http://www.gnu.org/philosophy/java-trap.html">Java ya no es malo</a>.</p>
<p>AVISO: <em>probablemente</em> lo que voy a contar no lo haya inventado yo. No soy tan listo.</p>
<p>Qué delicado es el mundo de las relaciones. Lewis era un apuesto y joven campeón de Fórmula 1, vivía feliz y enamorado de la que entonces era su novia, Nicole, una no-famosa cantante de un no-famoso grupo pop (algo bastante común entre los campeones de F1 de aquellos años). Lewis tenía un problema: había tres chicas que estaban locamente enamoradas de él, ellas eran Katie, Price y Jordan, unas jóvenes muy atentas: <em>las observadoras</em> se hacían llamar. Tal era su obsesión por el joven inglés, que hicieron lo imposible hasta conseguir el número de teléfono de Lewis para poder llamarle y saber, en todo momento, si su estado con Nicole había cambiado.</p>
<p>Al principio recibía una llamada al día de Katie, Price y Jordan. Pero según pasaba el tiempo la cantidad de llamadas que tenía que contestar diariamente era mayor, aquello no parecía estar bien: su estado seguía siendo el mismo pero como buen caballero inglés que él era no se veía capaz de dejar de contestar a aquellas llamadas. Por otra parte a Nicole no le hacía mucha gracia lo de aquellas tres arpías.</p>
<p>Lewis era un tipo listo, un tipo con cabeza (que no con cabezón). Aquello tenía que cambiar, él no podía despreciar a aquellas maravillosas mujeres, además si el día de mañana su estado cambiaba quería que ellas fuesen las primeras en saberlo, pero por otra parte no podía soportar aquella ingente cantidad de llamadas. Entonces decidió que lo mejor era llegar a un <strong>acuerdo</strong> con Katie, Price y Jordan para, sin tener que ser ellas las que llamasen continuamente, poder avisarlas cuando su estado cambiase: era tan sencillo como tener su número y mandar un mensaje cuando su estado cambiase. Las ventajas eran claras: las observadoras podrían enterarse, Lewis no tendría que dejar de atender a Nicole para atender a llamadas intranscendentes, llamadas que iban a recibir la misma respuesta.</p>
<p>Katie, Price y Jordan estaban de acuerdo, pero a cambio le impusieron a Lewis una condición: podrían avisarle en cualquier momento para decirle que ya no estaban interesadas en él y que, por tanto, no hacía falta que fuesen notificadas de su cambio de estado. Lewis, chico listo, estaba de acuerdo, pero como no le gustaba desaprovechar ninguna posibilidad decidió que además cualquier chica debería poder suscribirse a su sistema de notificación.</p>
<p>Al principio todas seguían interesadas, Lewis era un sujeto deseado e interesaba conocer sus cambios de estado. Lewis se casó y todas las observadoras fueron avisadas, entonces Jordan decidió que ya no estaba interesada en Lewis y así se lo hizo saber. El grupo de las famosas <em>observadoras</em> ahora sólo estaba formado por Katie y Price.</p>
<p><a href="http://www.youtube.com/watch?v=xoa4m5KwobU#t=59s">Y era cuando ella</a>, Nicole, tenía que decirle a Lewis algo así: <em><a href="http://www.youtube.com/watch?v=FGx6YXdv_40">I don&#8217;t need a man</a> to make it happen / I get off being free / I don&#8217;t need a man to make me feel good / I get off doing my thing / I don&#8217;t need a ring around my finger / To make me feel complete / So let me break it down / I can get off when you ain&#8217;t around / Oh!</em>. Su estado había cambiado, nadie le iba a llamar porque así lo había acordado con las observadoras, pero Lewis era un chico listo y como había acordado un método para avisar a las observadoras sólo tenía que ejecutarlo para que Katie y Price supiesen que su estado había cambiado. Katie y Price podían llamar a Lewis para conocer su estado puesto que sabían que este había cambiado.</p>
<p>Lo más increíble de esta historia no es que esté casi-basada en personajes reales, es el hecho de que todo esto sea un patrón de diseño: observer, en este caso siguiendo un <em>protocolo</em> de <strong>pull</strong>, sólo se notifica que el estado ha cambiado y los suscriptores se tiene que encargar de obtener el nuevo <em>estado</em>. Si se hubiese escogido un <em>protocolo</em> de <strong>push</strong> el <em>estado</em> podría haber sido pasado a través del método de aviso.</p>
<p style="text-align: center;"><img class="size-full wp-image-144 aligncenter" title="Observer Pattern" src="http://rau1.com/wp-content/uploads/2008/11/diagram.png" alt="" width="500" height="320" /></p>
<p><strong>El acuerdo</strong>:</p>
<pre name="code" class="java">
public interface SujetoDeseado {
	public void interesarse(Observadora o);
	public void desinteresarse(Observadora o);
	public void avisarObservadoras();
}
</pre>
<pre name="code" class="java">
public interface Observadora {
	public void avisar();
}
</pre>
<p>El bueno y afable de <strong>Lewis</strong>:</p>
<pre name="code" class="java">
import java.util.ArrayList;

public class Lewis implements SujetoDeseado {

	public enum Estado {
		SOLTERO, ENNOVIADO, CASADO
	};

	private ArrayList&lt;Observadora&gt; observadoras;
	private Estado estado;

	public Lewis() {
		this.observadoras = new ArrayList&lt;Observadora&gt;();
		this.estado = Estado.ENNOVIADO;
	}

	@Override
	public void avisarObservadoras() {
		for (Observadora o : this.observadoras) {
			o.avisar();
		}

	}

	@Override
	public void desinteresarse(Observadora o) {
		this.observadoras.remove(o);
	}

	@Override
	public void interesarse(Observadora o) {
		this.observadoras.add(o);
	}

	public Estado getEstado() {
		return this.estado;
	}

	public void estadoCambiado() {
		this.avisarObservadoras();
	}

	public void setEstado(Lewis.Estado estado) {
		this.estado = estado;
		this.estadoCambiado();
	}

}
</pre>
<p><strong>Katie</strong>:</p>
<pre name="code" class="java">
public class Katie implements Observadora {

	private SujetoDeseado lewis;

	public Katie(SujetoDeseado lewis) {
		this.lewis = lewis;
		lewis.interesarse(this);
	}

	public void loDelAmor() {
		System.out
				.println("Katie: A mi si que me vas a poder quitar todos los botones!");
	}

	@Override
	public void avisar() {
		if (lewis instanceof Lewis) {
			Lewis l = (Lewis) lewis;
			switch (l.getEstado()) {
			case CASADO:
				this.esoNoVaADurar();
				break;
			case ENNOVIADO:
				this.loDeHacerseLaIndiferente();
				break;
			case SOLTERO:
				this.loDelAmor();
			}
		}
	}

	private void loDeHacerseLaIndiferente() {
		System.out.println("Katie: me da igual, sé que me quiere a mi.");
	}

	private void esoNoVaADurar() {
		System.out.println("Katie: esa relación no tiene futuro.");
	}

}
</pre>
<p><strong>Price</strong>:</p>
<pre name="code" class="java">
public class Price implements Observadora {

	private SujetoDeseado lewis;

	public Price(SujetoDeseado lewis) {
		this.lewis = lewis;
		lewis.interesarse(this);
	}

	public void loDelAmor() {
		System.out.println("Price: Lewis que voy sin bragafaja!");
	}

	@Override
	public void avisar() {
		if (lewis instanceof Lewis) {
			Lewis l = (Lewis) lewis;
			switch (l.getEstado()) {
			case CASADO:
				this.mePonenLosCasados();
				break;
			case ENNOVIADO:
				this.loDeTirarLosTrastos();
				break;
			case SOLTERO:
				this.loDelAmor();
			}
		}
	}

	private void mePonenLosCasados() {
		System.out.println("Price: Ains como me ponen los casados!");
	}

	private void loDeTirarLosTrastos() {
		System.out.println("Price: Tu padre podría vivir con nosotros.");
	}

}
</pre>
<p>Y <strong>Jordan</strong>:</p>
<pre name="code" class="java">
public class Jordan implements Observadora {

	private SujetoDeseado lewis;

	public Jordan(SujetoDeseado lewis) {
		this.lewis = lewis;
		lewis.interesarse(this);
	}

	public void loDelAmor() {
		System.out.println("Jordan: Vente pacá' y mira que escotazo!");
	}

	@Override
	public void avisar() {
		if (lewis instanceof Lewis) {
			Lewis l = (Lewis) lewis;
			switch (l.getEstado()) {
			case CASADO:
				this.loDeBuscarseOtro();
				break;
			case ENNOVIADO:
				this.loDeTirarLosTrastos();
				break;
			case SOLTERO:
				this.loDelAmor();
			}

		}
	}

	private void loDeTirarLosTrastos() {
		System.out.println("Jordan: Ains que guapeton es mi Hamilton!");
	}

	private void loDeBuscarseOtro() {
		System.out.println("Jordan: Que le den, yo me voy con Eddie Irvine");
	}

}
</pre>
<p>La historia de amores y desamores:</p>
<pre name="code" class="java">
public class Main {
	public static void main(String[] args) {
		// Katie, Price y Jordan llegan a un acuerdo para que Lewis
		// pueda mandar un aviso cuando su estado cambie.
		Lewis lewis = new Lewis();
		// Todas decicen suscribirse... Lewis es tan MONO.
		new Katie(lewis);
		new Price(lewis);
		Jordan jordan = new Jordan(lewis);
		// Lo primero que hace Lewis es avisar que está ennoviado con Nicole.
		lewis.setEstado(Lewis.Estado.ENNOVIADO);
		// Luego decide casarse, su estado cambia por tanto avisa.
		// Jordan ya le avisó que el día que su estado fuese el de casado se
		// desinteresaría.
		lewis.setEstado(Lewis.Estado.CASADO);
		// Nicole le canta eso de I don't need a man...
		// Pero ya sólo Katie y Price siguen interesadas en él, así que son las
		// únicas que se enteran de su nuevo estado
		lewis.desinteresarse(jordan);
		lewis.setEstado(Lewis.Estado.SOLTERO);
	}
}
</pre>
<p>Y el <strong>resultado</strong> de toda esta historia:</p>
<pre name="code" class="java">
Katie: me da igual, sé que me quiere a mi.
Price: Tu padre podría vivir con nosotros.
Jordan: Ains que guapeton es mi Hamilton!
Katie: esa relación no tiene futuro.
Price: Ains como me ponen los casados!
Jordan: Que le den, yo me voy con Eddie Irvine
Katie: A mi si que me vas a poder quitar todos los botones!
Price: Lewis que voy sin bragafaja!
</pre>
<p>Te puedes meter con la implementación todo lo que quieras, sobre todo con la visibilidad de algunos de los métodos. O por el hecho de extender <code>java.util.Observable</code>, pero esto ya es más discutible :-).</p>
<p>Y sí, probablemente debería haber aprovechado el tiempo en otra cosa, pero los domingos no suelen ser los mejores días para <em>trabajar</em>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=mwXon"><img src="http://feeds.feedburner.com/~f/rau1?i=mwXon" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=2FXlN"><img src="http://feeds.feedburner.com/~f/rau1?i=2FXlN" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/11/17/patrones-de-diseno-con-novia-deja-que-te-observen-no-que-te-llamen-constantemente/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/11/17/patrones-de-diseno-con-novia-deja-que-te-observen-no-que-te-llamen-constantemente</feedburner:origLink></item>
		<item>
		<title>Update your WordPress installation to latest version (or die)</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/454271836/update-your-wordpress-installation-to-latest-version-or-die</link>
		<comments>http://rau1.com/blog/2008/11/15/update-your-wordpress-installation-to-latest-version-or-die#comments</comments>
		<pubDate>Sat, 15 Nov 2008 20:50:29 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Hacks]]></category>

		<category><![CDATA[hack]]></category>

		<category><![CDATA[latest]]></category>

		<category><![CDATA[shoot-yourself-in-the-foot]]></category>

		<category><![CDATA[update]]></category>

		<category><![CDATA[upgrade]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=138</guid>
		<description><![CDATA[If you don&#8217;t appreciate your WordPress blog too much you can upgrade to latest version this way:

curl -s http://wordpress.org/latest.tar.gz &#124; tar zxv > /dev/null &#038;&#038; \
cp -rf wordpress/* . &#038;&#038; rm -rf wordpress/* &#038;&#038; rmdir wordpress

P.S.: I regularly shoot myself in the foot.
]]></description>
			<content:encoded><![CDATA[<p>If you don&#8217;t appreciate your WordPress blog too much you can upgrade to latest version this way:</p>
<pre name="code" class="shell">
curl -s http://wordpress.org/latest.tar.gz | tar zxv > /dev/null &#038;&#038; \
cp -rf wordpress/* . &#038;&#038; rm -rf wordpress/* &#038;&#038; rmdir wordpress
</pre>
<p>P.S.: I regularly shoot myself in the foot.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=JooJn"><img src="http://feeds.feedburner.com/~f/rau1?i=JooJn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=91OMN"><img src="http://feeds.feedburner.com/~f/rau1?i=91OMN" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/11/15/update-your-wordpress-installation-to-latest-version-or-die/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/11/15/update-your-wordpress-installation-to-latest-version-or-die</feedburner:origLink></item>
		<item>
		<title>Puzzles en Java</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/420957688/puzzles-en-java</link>
		<comments>http://rau1.com/blog/2008/10/15/puzzles-en-java#comments</comments>
		<pubDate>Tue, 14 Oct 2008 22:11:02 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[josh-bloch]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[puzzle]]></category>

		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=134</guid>
		<description><![CDATA[A raíz de mi irónica entrada sobre PHP el jrande de Diego me recomendó ver Advanced Topics in Programming Languages: Java Puzzlers, un ameno tech talk presentado por Joshua Bloch (os debería sonar del JavaDoc) y William Pugh.
Me gustó Histogram Mystery (43min 40s), así que he preparado una versión simplificada y castellanizada. Dos cervezas para [...]]]></description>
			<content:encoded><![CDATA[<p>A raíz de <a href="http://rau1.com/blog/2008/08/25/why-php-rocks">mi irónica entrada sobre PHP</a> el <em>jrande</em> de Diego me recomendó ver <a href="http://youtube.com/watch?v=wDN_EYUvUq0">Advanced Topics in Programming Languages: Java Puzzlers</a>, un ameno tech talk presentado por Joshua Bloch (os debería sonar del JavaDoc) y William Pugh.</p>
<p>Me gustó <em>Histogram Mystery</em> (43min 40s), así que he preparado una versión simplificada y castellanizada. <strong>Dos cervezas para el primero</strong> que diga cuál es el resultado y además lo justifique (sin haber visto el vídeo, claro). Y cuidado con las posibles respuestas&#8230; por aquello de la rima fácil.</p>
<pre name="code" class="java">
public class AbsolutVodkaPuzzle {
	public static void main(String[] args) {
		String frase = "Al anochecer llamaron al celular";
		String [] palabras = frase.split(" ");
		int i = 0;
		for (String palabra1 : palabras) {
			for (String palabra2 : palabras) {
				String dosPalabras = palabra1 + palabra2;
				int valorAbsolutoHash = Math.abs(dosPalabras.hashCode());
				if (valorAbsolutoHash >= 0) {
					i++;
				}
			}
		}
		System.out.println('1' + i);
	}
}
</pre>
<p>ExtraLap™: Josh Bloch es autor de <em>Effective Java</em> y coautor de <em>Java Puzzlers</em> y <em>Java Concurrency in Practice</em> (de este último todavía no he podido disfrutar). Y además es una de las personas que consigue que [ames|odies] Java.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=Z18Am"><img src="http://feeds.feedburner.com/~f/rau1?i=Z18Am" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=0zn6M"><img src="http://feeds.feedburner.com/~f/rau1?i=0zn6M" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/10/15/puzzles-en-java/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/10/15/puzzles-en-java</feedburner:origLink></item>
		<item>
		<title>Zero&amp;Huno: La crisis y los minipisos</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/415872574/zero-huno-la-crisis-y-los-minipisos</link>
		<comments>http://rau1.com/blog/2008/10/09/zero-huno-la-crisis-y-los-minipisos#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:16:58 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Zero&amp;Huno]]></category>

		<category><![CDATA[bitwise]]></category>

		<category><![CDATA[casting]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[crisis]]></category>

		<category><![CDATA[economic]]></category>

		<category><![CDATA[financial]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=130</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://rau1.com/zero_n_huno/005_crisis.png" alt="" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=rCEQm"><img src="http://feeds.feedburner.com/~f/rau1?i=rCEQm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=M8YOM"><img src="http://feeds.feedburner.com/~f/rau1?i=M8YOM" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/10/09/zero-huno-la-crisis-y-los-minipisos/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/10/09/zero-huno-la-crisis-y-los-minipisos</feedburner:origLink></item>
		<item>
		<title>Zero&amp;Huno: Redes Sociales</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/386946374/zero-huno-redes-sociales</link>
		<comments>http://rau1.com/blog/2008/09/08/zero-huno-redes-sociales#comments</comments>
		<pubDate>Mon, 08 Sep 2008 19:33:57 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Zero&amp;Huno]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[facebook]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[social-network]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[tuenti]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=125</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone" src="http://rau1.com/zero_n_huno/004_socialnetworks.png" alt="" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=IGVyl"><img src="http://feeds.feedburner.com/~f/rau1?i=IGVyl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=CrEyL"><img src="http://feeds.feedburner.com/~f/rau1?i=CrEyL" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/09/08/zero-huno-redes-sociales/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/09/08/zero-huno-redes-sociales</feedburner:origLink></item>
		<item>
		<title>Why PHP rocks</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/374210775/why-php-rocks</link>
		<comments>http://rau1.com/blog/2008/08/25/why-php-rocks#comments</comments>
		<pubDate>Mon, 25 Aug 2008 12:05:22 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[array]]></category>

		<category><![CDATA[best-practices]]></category>

		<category><![CDATA[bitwise]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[comparisons]]></category>

		<category><![CDATA[funniest]]></category>

		<category><![CDATA[ieee-754]]></category>

		<category><![CDATA[integers]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[rant]]></category>

		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=116</guid>
		<description><![CDATA[Programming (aka scripting/writing) PHP is so funny you never know what is the next thing that will happen when you compare two variables or simply try to increment an integer.
You can complain about its design (OOP), or its functions&#8217; names or whatever you want, but you know how cool and funny is to program in [...]]]></description>
			<content:encoded><![CDATA[<p>Programming (aka scripting/writing) PHP is so funny you never know what is the next thing that will happen when you compare two variables or simply try to increment an integer.</p>
<p>You can complain about its design (OOP), or its functions&#8217; names or whatever you want, but you know how cool and funny is to program in PHP. It should be <em>a must</em> within any programming 101 course ;-).</p>
<p>Here my compilation of PHP funniest things:</p>
<pre name="code" class="php">
printf("Integers and Strings\n");
echo "----------------\n";
printf("%s\n", ('0' == 0) ? 'true' : 'false');
printf("%s\n", ('0' === 0) ? 'true' : 'false');
printf("%s\n", ('string' == 0) ? 'true' : 'false');
printf("%s\n", ('string' === 0) ? 'true' : 'false');
printf("%s\n", ('string' == 1) ? 'true' : 'false');
printf("%s\n", ('string' === 1) ? 'true' : 'false');
printf("%s\n", ('0000e12345' == '0e12345') ? 'true' : 'false');
printf("%s\n", ((string) '0123' == (string) '123') ? 'true' : 'false');
printf("%s\n", ('007' == '7') ? 'true' : 'false');
printf("%s\n", ('Bond' == 'Raul') ? 'true' : 'false');
$i = null;
echo (++$i) . "\n";
echo ($i+=1) . "\n";
$i = null;
echo (--$i) . "\n";
echo ($i-=1) . "\n";

printf("\nBitwise Operators\n");
echo "----------------\n";
printf("%s\n", (~0 &amp; 0x20) ? 'true' : 'false');
printf("%s\n", (~'0' &amp; 0x20) ? 'true' : 'false');
echo (9 &amp; 8) . "\n";
printf("%s\n", (9 &amp; 8 == 8) ? 'true' : 'false');
echo (8 &amp; 8) . "\n";
printf("%s\n", (8 &amp; 8 == 8) ? 'true' : 'false');

echo "\nIEEE 754 friends et al\n";
echo "----------------\n";
echo (7 % 2.4) . "\n";
printf("%s\n", -1 % 7);
printf("%s\n", 3333333333 % 3);
printf("%s\n", 2863311530 % 25);
printf("%s\n", 2863311530 % 256);

printf("\nOther comparisons\n");
echo "----------------\n";
printf("%s\n", ($a = 0 or $a = 'string') ? $a : $a);
printf("%s\n", ($a = 0 || $a = 'string') ? $a : $a);
printf("%s\n", (array() == false) ? 'true' : 'false');
printf("%s\n", (array() === false) ? 'true' : 'false');
</pre>
<p>It should produce 29 results. It&#8217;s said that one guy once was able to predict (Yeah! I meant to predict) the exact output for every single one. PHP is <em>so lovely</em>.</p>
<p><strong>Could you say what is the exact output for each and everyone of them?</strong></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=rxckik"><img src="http://feeds.feedburner.com/~f/rau1?i=rxckik" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=hc6lNK"><img src="http://feeds.feedburner.com/~f/rau1?i=hc6lNK" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/08/25/why-php-rocks/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/08/25/why-php-rocks</feedburner:origLink></item>
		<item>
		<title>Zero&amp;Huno: Color Profiles</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/317871885/zero-huno-color-profiles</link>
		<comments>http://rau1.com/blog/2008/06/23/zero-huno-color-profiles#comments</comments>
		<pubDate>Mon, 23 Jun 2008 06:00:37 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Zero&amp;Huno]]></category>

		<category><![CDATA[color-profiles]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=114</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone" src="http://rau1.com/zero_n_huno/003_colorprofiles.png" alt="" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=jlOusi"><img src="http://feeds.feedburner.com/~f/rau1?i=jlOusi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=xjfUcI"><img src="http://feeds.feedburner.com/~f/rau1?i=xjfUcI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/06/23/zero-huno-color-profiles/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/06/23/zero-huno-color-profiles</feedburner:origLink></item>
		<item>
		<title>Zero&amp;Huno: IEEE 754</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/316040165/zero-huno-ieee-754</link>
		<comments>http://rau1.com/blog/2008/06/20/zero-huno-ieee-754#comments</comments>
		<pubDate>Fri, 20 Jun 2008 07:13:31 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Zero&amp;Huno]]></category>

		<category><![CDATA[binary]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[floating-point]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[ieee]]></category>

		<category><![CDATA[ieee-754]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=113</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone" src="http://rau1.com/zero_n_huno/002_ieee754.png" alt="" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=Oy3Fwi"><img src="http://feeds.feedburner.com/~f/rau1?i=Oy3Fwi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=49VaKI"><img src="http://feeds.feedburner.com/~f/rau1?i=49VaKI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/06/20/zero-huno-ieee-754/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/06/20/zero-huno-ieee-754</feedburner:origLink></item>
		<item>
		<title>Zero&amp;Huno: Recursividad</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/314874002/zero-huno-recursividad</link>
		<comments>http://rau1.com/blog/2008/06/18/zero-huno-recursividad#comments</comments>
		<pubDate>Wed, 18 Jun 2008 20:24:09 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Zero&amp;Huno]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[recursivity]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=112</guid>
		<description><![CDATA[
URL: http://itgo.es/1gm
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone" src="http://rau1.com/zero_n_huno/001_recursividad.png" alt="" /></p>
<p style="text-align: center;">URL: <a href="http://itgo.es/1gm">http://itgo.es/1gm</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=Z35uxi"><img src="http://feeds.feedburner.com/~f/rau1?i=Z35uxi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=CVCvNI"><img src="http://feeds.feedburner.com/~f/rau1?i=CVCvNI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/06/18/zero-huno-recursividad/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/06/18/zero-huno-recursividad</feedburner:origLink></item>
		<item>
		<title>Zero&amp;Huno: Branding 2.0</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/313047812/zero-huno-branding-20</link>
		<comments>http://rau1.com/blog/2008/06/16/zero-huno-branding-20#comments</comments>
		<pubDate>Mon, 16 Jun 2008 14:07:17 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Zero&amp;Huno]]></category>

		<category><![CDATA[binary]]></category>

		<category><![CDATA[branding]]></category>

		<category><![CDATA[buzz]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=111</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone" src="http://rau1.com/zero_n_huno/000_branding.png" alt="" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=5iPyBi"><img src="http://feeds.feedburner.com/~f/rau1?i=5iPyBi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=NUE7NI"><img src="http://feeds.feedburner.com/~f/rau1?i=NUE7NI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/06/16/zero-huno-branding-20/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/06/16/zero-huno-branding-20</feedburner:origLink></item>
		<item>
		<title>Zero &amp; Huno</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/313042229/zero-huno</link>
		<comments>http://rau1.com/blog/2008/06/16/zero-huno#comments</comments>
		<pubDate>Mon, 16 Jun 2008 13:57:22 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[comic]]></category>

		<category><![CDATA[geek]]></category>

		<category><![CDATA[strip]]></category>

		<category><![CDATA[zero-huno]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=110</guid>
		<description><![CDATA[A partir de hoy me acompañarán un par de personajes, Zero y Huno, que iréis conociendo poco a poco. Con ellos intentaré abstraerme de El Mundo Real™ durante unos minutos a la semana, y de paso poder parecer algo más informático y algo menos persona. Por supuesto, y como siempre, no prometo que vaya a [...]]]></description>
			<content:encoded><![CDATA[<p>A partir de hoy me acompañarán un par de personajes, Zero y Huno, que iréis conociendo poco a poco. Con ellos intentaré abstraerme de <em>El Mundo Real</em>™ durante unos minutos a la semana, y de paso poder parecer algo más informático y algo menos persona. Por supuesto, y como siempre, no prometo que vaya a durar ni un poquito.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=X2s4Ui"><img src="http://feeds.feedburner.com/~f/rau1?i=X2s4Ui" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=ZwHYJI"><img src="http://feeds.feedburner.com/~f/rau1?i=ZwHYJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/06/16/zero-huno/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/06/16/zero-huno</feedburner:origLink></item>
		<item>
		<title>Bazooka J2EE MVC-RESTful Framework</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/310518287/bazooka-j2ee-mvc-restful-framwork</link>
		<comments>http://rau1.com/blog/2008/06/12/bazooka-j2ee-mvc-restful-framwork#comments</comments>
		<pubDate>Thu, 12 Jun 2008 16:43:55 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Proyectos]]></category>

		<category><![CDATA[app-engine]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[hibernate]]></category>

		<category><![CDATA[j2ee]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[junit]]></category>

		<category><![CDATA[log4j]]></category>

		<category><![CDATA[mvc]]></category>

		<category><![CDATA[orm]]></category>

		<category><![CDATA[restful]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[spring]]></category>

		<category><![CDATA[struts]]></category>

		<category><![CDATA[tomcat]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=108</guid>
		<description><![CDATA[I&#8217;m working in my final degree project, an interactive web document commenting system that allows people to annotate comments directly onto document elements like words at paragraphs and images.
My mentor forced me to use Java as the primary language for the project. In these days choosing a J2EE Framework sucks. If you&#8217;re a fashion-victim/fancy-boy, you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working in <a href="http://commenteverywhere.com/">my final degree project</a>, an interactive web document commenting system that allows people to annotate comments directly onto document elements like words at paragraphs and images.</p>
<p>My mentor <em>forced</em> me to use Java as the primary language for the project. In these days choosing a J2EE Framework sucks. If you&#8217;re a fashion-victim/fancy-boy, you know, you&#8217;ll end using a combination of Struts + Spring + Hibernate + AnyFlavourOfYourFavoriteJavaTrendyWebTechnology and obviously a <a href="http://www.google.com/search?q=gazillion">gazillion</a> of XML config files. Do you really need all of this stuff for <em>little projects</em> with just two SQL queries and three templates? It was driving me crazy for about two weeks. I&#8217;m not underestimating Structs or Hibernate or whatever, I&#8217;m saying it doesn&#8217;t fit for small projects.</p>
<p>You must be thinking I&#8217;m using a single approach with some Servlets and JSP files, and also you can be wrong. I don&#8217;t like how huge struts framework is, but I&#8217;m <em>a fan of trendy-best-practices </em> ;-). I love the way <a href="http://code.google.com/appengine/">Google&#8217;s App Engine</a>, <a href="http://www.rubyonrails.com/">Ruby on Rails</a> and <a href="http://www.djangoproject.com/">Django</a> enforce you to get things done. I&#8217;ve been hacking with the Java Reflection API, Tomcat and other stuff for a while, now I can tell you I have a little alpha-baby called Bazooka.</p>
<p><span id="more-108"></span></p>
<p>Bazooka is a high-level convention-over-configuration J2EE Web framework that encourages rapid development and clean, pragmatic design. (Is it possible in Java World?)</p>
<p>Currently Bazooka is under development, in its 0.2614972128 version (aka Meissel-Mertens [1]) it features:</p>
<ul>
<li>MVC paradigm</li>
<li>RESTful</li>
<li><a href="http://ehcache.sourceforge.net/">Ehcache</a> support</li>
<li><a href="http://activeobjects.dev.java.net/">ActiveObjects</a> ORM (à la ActiveRecord). It supports Derby, HSQLDB, SQL Server, MySQL, Oracle and PostgreSQL.</li>
<li>Pure Java HTML Forms (with validation&#8230;)</li>
<li>Templates with layouts (allowing you to include a view into a general layout)</li>
<li>Authentication and user-role helpers</li>
<li>JUnit and log4j integration</li>
<li>A simple app admin console to manage database migrations and cache status.</li>
<li>NO XML configuration files!</li>
</ul>
<p>For now I&#8217;m the solo user-developer, but I plan to release it under a free software license. When? I don&#8217;t know, but keep checking this blog. In the next blog-post I&#8217;ll show you how easy is to develop a simple web application with my little Bazooka baby }:-).</p>
<p>[1] One day I&#8217;ll explain how I assign version numbers.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=3sm9ki"><img src="http://feeds.feedburner.com/~f/rau1?i=3sm9ki" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=T5VQoI"><img src="http://feeds.feedburner.com/~f/rau1?i=T5VQoI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/06/12/bazooka-j2ee-mvc-restful-framwork/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/06/12/bazooka-j2ee-mvc-restful-framwork</feedburner:origLink></item>
		<item>
		<title>Download Movies from the IMDb website</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/274215972/download-movies-from-the-imdb-website</link>
		<comments>http://rau1.com/blog/2008/04/20/download-movies-from-the-imdb-website#comments</comments>
		<pubDate>Sun, 20 Apr 2008 19:06:21 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Hacks]]></category>

		<category><![CDATA[bittorrent]]></category>

		<category><![CDATA[download]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[greasemonkey]]></category>

		<category><![CDATA[imdb]]></category>

		<category><![CDATA[movie]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[torrent]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=105</guid>
		<description><![CDATA[Updated: Memiux asked through the comments about the possibility of publishing an greasemonkey user script, I have just uploaded it too. So you can choose between two flavours.
I&#8217;m just releasing my brand-new Firefox plugin that allows you to direct download movie&#8217;s torrents from The Internet Movie Database. When you reach a movie page you see [...]]]></description>
			<content:encoded><![CDATA[<p><span class="updated">Updated</span>: Memiux asked through the comments about the possibility of publishing an greasemonkey user script, I have just uploaded it too. So you can choose between two flavours.</p>
<p>I&#8217;m just releasing my brand-new Firefox plugin that allows you to <strong>direct download movie&#8217;s torrents from The Internet Movie Database</strong>. When you reach a movie page you see a new section under the title and you can choose a torrent to download. <strong>Please spread the word</strong>. Ouch! I forgot to mention&#8230; it&#8217;s <strong>for free</strong>!</p>
<p style="text-align: center;"><img title="IMDB" src="http://rau1.com/wp-content/uploads/2008/04/imdbbittorrent.png" alt="" /></p>
<p><a class="download" href="http://rau1.com/dl/imdbbittorrent.xpi">Download IMDB Bittorrent Firefox Plugin</a><br />
<span class="download-info">v0.100, <a href="http://www.gnu.org/copyleft/gpl.html">GNU GPLv3</a>.</span><br />
<a class="download" href="http://rau1.com/dl/imdbbittorrent.user.js">Download IMDB Bittorrent Greasemonkey User Script</a><br />
<span class="download-info">v0.100, <a href="http://www.gnu.org/copyleft/gpl.html">GNU GPLv3</a>.</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=5BoipSg"><img src="http://feeds.feedburner.com/~f/rau1?i=5BoipSg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=yL95rNG"><img src="http://feeds.feedburner.com/~f/rau1?i=yL95rNG" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/04/20/download-movies-from-the-imdb-website/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/04/20/download-movies-from-the-imdb-website</feedburner:origLink></item>
		<item>
		<title>apt-get install raul-kernel-headers-23</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/268697941/apt-get-install-raul-kernel-headers-23</link>
		<comments>http://rau1.com/blog/2008/04/12/apt-get-install-raul-kernel-headers-23#comments</comments>
		<pubDate>Sat, 12 Apr 2008 00:46:39 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[app-engine]]></category>

		<category><![CDATA[birthday]]></category>

		<category><![CDATA[celebration]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[friends]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jisko]]></category>

		<category><![CDATA[lamp]]></category>

		<category><![CDATA[life]]></category>

		<category><![CDATA[networking]]></category>

		<category><![CDATA[open-pizza-night]]></category>

		<category><![CDATA[pfc]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://rau1.com/?p=102</guid>
		<description><![CDATA[Hace unos días me aburría, decidí que tener 23 podría ser más divertido que seguir con 22, sobre todo porque hasta los 29 no volveré a disfrutar de un número primo. Sí, hablaba de [cumple]años. Y es que el número 23 es uno de esos números que te cautivan, por ejemplo su representación en binario, 10111, también [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días me aburría, decidí que tener 23 podría ser más divertido que seguir con 22, sobre todo porque hasta los 29 no volveré a disfrutar de un número primo. Sí, hablaba de [cumple]años. Y es que <a href="http://en.wikipedia.org/wiki/23_(number)">el número 23</a> es uno de esos <a href="http://www.archimedes-lab.org/numbers/Num13_23.html">números que te cautivan</a>, por ejemplo su representación en binario, 10111, también es un número primo.</p>
<p><strong>Google Open Pizza Night:</strong><br />
También estuve en la Open Pizza Night que brillantemente organizó Google España en sus oficinas de Madrid. <a href="http://raulenlasnubes.blogspot.com/">Raúl Benito</a> (qué difícil es encontrar su blog!) iba a presentar el nuevo API de Youtube, primero una pequeña introducción seguida de un workshop en el que Raúl presentó su revolucionario método de desarrollo <acronym title="Snippet-Driven Development">SDD</acronym>, estamos a la espera del RFC }:-).</p>
<p><span id="more-102"></span></p>
<p>Fue una <em>noche</em> de reencuentros, estuve con los <a href="http://lamboratory.com/blog/2008/03/29/un-gran-premio-para-una-gran-victoria/">Lamb Brothers</a> (que me tienen engañado para hacer una pequeña aplicación), con Javi (está vez acompañado por otro Raúl) y <a href="http://a1berto.es/google-pizza-night/">A1berto</a>, todos viejos conocidos de la Campus Party. También coincidí con Miguel que le tuve como compañero en un workshop del GDD del año pasado. Pude estar, por ejemplo, con <a href="http://tufuncion.com/google-open-pizza-night">Manu, de tufuncion.com</a>, al que, por cierto, le debo una disculpa por no haberme pasado a dejar el comentario que le prometí O:-) y con Igor de <a href="http://www.txurdi.net/">Txurdi</a>. También charlé con Dani y Rupert de <a href="http://www.tuenti.com/">Tuenti</a>. Seguro que me olvido a más de uno, así que&#8230; lo siento! </p>
<p>Además, y por fin, pude conocer a <a href="http://diazr.com/un-dia-de-open-pizza-night/">Rubén Díaz</a> (aka <a href="http://jisko.net/outime">outime</a>), todo un crack que está desarrollando <a href="http://jisko.net/">Jisko</a>, y aunque no me guste explicarlo así, un clon libre de Twitter con funcionalidades extras, me llamó poderosamente la atención lo involucrado que está en el proyecto, este sí que sigue aquello de <em>eating his own dog food</em>, proyecto que, por cierto, pudo presentar durante 10 minutos.</p>
<p>Por lo demás, decir que las pizzas estaban mejor que buenas, la cerveza también, pero nada como las patatas fritas de colores, lo siento, eran mi debilidad, y la de todos mis compañeros de mesa! Ahora dar las gracias a todos l@s chic@s de Google, que una vez más nos trataron fenomenal, y sobre todo a Clara por invitarnos a un evento que espero no sea el último de este tipo. Para enterarte de eventos como este y de todas las novedades de Google no dejes de leer y suscribirte al blog de oficial de Google para desarrolladores en español: <a href="http://programa-con-google.blogspot.com/">Programa con Google</a>.</p>
<p>Yo también tuve 10 minutos para presentar una pequeña <em>prueba de concepto</em> que pretendía mostrar algunas de las nuevas capacidades del API de Youtube. Todo lo había programado en tres tardes y una larga noche, una aplicación a medio camino entre Twitter y <a href="http://www.seesmic.com/">Seesmic</a>. Un servicio de <em>microvideoblogging</em> que permite grabar vídeos directamente a través de la página web, y que posteriormente son almacenados en Youtube, en los que se permite, por ejemplo, añadir videorespuestas. Podría dedicarle algo más de tiempo y publicar la aplicación (aunque todavía no tenga modelo de financiación :-P). Aplicación que estaba escrita en Java, por una vez creo que escribir en Java una aplicación web me supuso ahorrar tiempo, ya que pude usar el <a href="http://code.google.com/p/gdata-java-client/">GData API Client de Java</a>.</p>
<p><strong>Mi Proyecto Fin de Carrera:</strong><br />
La aplicación que presenté en la Open Pizza Night usaba una de las primeras versiones de un pequeño framework J2EE que estoy preparando para mi Proyecto Fin de Carrera. Framework que sigue el patrón MVC con un <em>front controller</em> que procesa todas las peticiones y usa el API de reflexión de Java para cargar clases y llamar a métodos dinámicamente en función de la URL, también usa annotations para, por ejemplo, poder especificar que métodos necesitan autentificación por parte del usuario. Y lo mejor, no hace falta escribir ni una línea de XML! El próximo día hablaré sobre mi PFC, porque lo mejor de Java es que puedes odiarlo, pero nunca lo odiarás tanto como documentar.</p>
<p><strong>Arpia49 (the distroman):</strong><br />
Por otra parte pasé dos días geniales en casa de <a href="http://arpia49.wordpress.com/">Adal</a> (aka arpia49), sin el que no hubiese podido aprender a usar mi nueva powerball, y sin el que tampoco podía haber saboreado la primera sandía del mundo que en realidad sabía a melón (priceless).</p>
<p><strong>Optimización de Aplicaciones LAMP:</strong><br />
Ayer estuve en una magnífica charla, impartida por Fernando Arconada, sobre optimización (y un poquito de escalabilidad) de aplicaciones LAMP. La charla estaba enmarcada dentro de las jornadas técnicas que se imparten en mi universidad con motivo de la celebración de la <a href="http://www.riojaparty.com/">RiojaParty</a> de este año.</p>
<p><strong>Sobre el </strong><a href="http://rau1.com/code/pywebdj/"><strong>PyWebDj</strong></a><strong>:</strong><br />
Como casi siempre me termina pasando, una vez más, no tengo tiempo para mantener la aplicación, y menos si quiero que funcione en GNU/Linux, Windows y Mac OS X. Parece que la versión actual ha dejado de funcionar, seguramente hayan cambiado los tokens asociados a los archivos, pero no quiero ni pararme a mirarlo. Además han aparecido varias herramientas similares (seguro que incluso son mejores), <em>so&#8230; google for it</em>.</p>
<p><strong>Extra Lap (parafraseando a </strong><a href="http://8000vueltas.com/author/delarosa"><strong>delarosa</strong></a><strong>):</strong><br />
Seguramente me olvide de contar algunas cosas. Como que me <span style="text-decoration: line-through;">rompí</span> rompieron un ligamento jugando al fútbol y llevo casi dos meses sin jugar. O que el número de cervezas consumidas durante el transcurso de todas estas historias es superior a dos. O todo lo que me gusta el nuevo <a href="http://code.google.com/appengine/">App Engine de Google</a>, pero de esto ya hablaremos en otro momento. En definitiva, lo que venía a decir es: <strong>sigo vivo</strong>.</p>
<p><strong>Disculpas:</strong><br />
Siento que este post tenga casi el mismo número de saltos en el tiempo que el peliculón <a href="http://video.google.com/videoplay?docid=3909854615539675694">Primer</a>, pero después de tres meses sin escribir casi se me había olvidado. Intentaré que el próximo post se publique antes de mi siguiente cumpleaños primo.<br />
Lo del título del post, no voy a intentar ni explicarlo, si no lo entiendes pasa al siguiente, siguiente, siguiente. Y hasta la vista, Vista.</p>
<p> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=4dZ4Icg"><img src="http://feeds.feedburner.com/~f/rau1?i=4dZ4Icg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=TNs6LsG"><img src="http://feeds.feedburner.com/~f/rau1?i=TNs6LsG" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/04/12/apt-get-install-raul-kernel-headers-23/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/04/12/apt-get-install-raul-kernel-headers-23</feedburner:origLink></item>
		<item>
		<title>PyWebDj: Free Music For EveryOne</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/212325210/pywebdj-free-music-for-everyone</link>
		<comments>http://rau1.com/blog/2008/01/07/pywebdj-free-music-for-everyone#comments</comments>
		<pubDate>Mon, 07 Jan 2008 02:33:06 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Hacks]]></category>

		<category><![CDATA[app]]></category>

		<category><![CDATA[download]]></category>

		<category><![CDATA[free]]></category>

		<category><![CDATA[gnu/linux]]></category>

		<category><![CDATA[macosx]]></category>

		<category><![CDATA[mp3]]></category>

		<category><![CDATA[music]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[search]]></category>

		<category><![CDATA[web]]></category>

		<category><![CDATA[windows]]></category>

		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2008/01/07/pywebdj-free-music-for-everyone</guid>
		<description><![CDATA[Qué es PyWebDj (versión corta y oficial)
Es un programa sin ánimo de lucro que permite extraer el audio de ficheros alojados en internet por terceros.
Qué es PyWebDj (versión larga también conocida como: qué fumas?)
No lea el siguiente párrafo a no ser que esté muy aburrido (o trabajando)
Es la confirmación de que puedo ser un vago, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Qué es PyWebDj (versión corta y oficial)</strong><br />
Es un programa sin ánimo de lucro que permite extraer el audio de ficheros alojados en internet por terceros.</p>
<p><strong>Qué es PyWebDj (versión larga también conocida como: <em>qué fumas?</em>)</strong><br />
<small>No lea el siguiente párrafo a no ser que esté muy aburrido (o trabajando)</small><br />
Es la confirmación de que puedo ser un vago, lo que a su vez demuestra que puedo llegar a ser informático, sí, uno más de esos.<br />
Después de este comienzo tan poco gracioso me explico: aproximadamente hace un mes me preguntaron si podía encontrar (vía eDonkey2000, ares, bittorrent&#8230;<em>ponga aquí su protocolo p2p favorito</em>) una canción. Nada, no la encontraba, era algo fuera de lo común y no lo encontraba, pero al preguntar dónde habían escuchado esa canción me dijeron que en un vídeo de YouTube. Así que me puse el mono de trabajo, bajé el vídeo, tiré de <a href="http://ffmpeg.mplayerhq.hu/">ffmpeg</a> y saqué un mp3 con la canción en cuestión, <a href="http://www.youtube.com/watch?v=by8oyJztzwo">una versión rock del canon de Pachelbel</a>.<br />
<span id="more-99"></span><br />
Hace unos días me volvieron a pedir algo parecido, así que antes de que esto se convirtiese en el <em>Raúl puedes pasarte a formatear mi ordenador 2.0</em>, <a href="http://twitter.com/rochoa/statuses/546760072">decidí que tenía que hacer un programita chorra como regalo de reyes para todo el mundo</a> y además me ahorrase el trabajo. En un principio iba a ser algo en plan: meto la URL, que baje el vídeo a cañón y que le saque el audio. Eso era feo y además lo tendría que seguir haciendo yo, sino podría pasar la de&#8230; <em>Consola? Qué Consola? Yo sólo tengo una Play2, me vale esa?</em> (Era un chiste geek, si no te ha hecho gracia, no hace falta que lo entiendas). Así que la siguiente idea fue Java + SWT, pero bueno ya se sabe, lo bonito de Java es que puedes odiarlo. Así que tras tener prácticamente todo lo necesario para bajar y extraer el audio, me puse a pegarme con SWT durante un buen rato (3 minutos), no está hecho para programarlo (sí, SWT se programa, no se diseña :D) a las tantas de la mañana o la tarde de un domingo.</p>
<p>Por qué no usar&#8230;dotNet, <em>que te preparas una interfaz en 5 minutos con WinForms</em>? Porque quería que fuese multiplataforma<sup>*</sup>. De ahí la idea de la aplicación para línea de comandos, y luego Java + SWT.</p>
<p>Entonces&#8230;? Python (webpy), SQLite, ffmpeg, XML, Flash, HTML, x cervezas, 500gr de pistachos, dos tardes de <em>ayer salí</em> y una noche un poco larga. Y como resultado una aplicación web con buscador de canciones, <em>gestor</em> de descargas y <em>gestor</em> de biblioteca musical. Probablemente no sea la mejor solución, pero era la más cómoda para mi, y al final la aplicación cumple con su función: bajar música.</p>
<p><small><sup>*</sup>Habrá versión para Mac OS X y Linux es unos días (espero).</small></p>
<p><strong>Licencia</strong><br />
Aunque todavía no he publicado el código, lo haré espero que pronto, de momento le he colocado una <a href="http://www.apache.org/licenses/LICENSE-2.0.html">licencia Apache Version 2.0</a>. Si alguien quiere hacer alguna sugerencia sobre la licencia más oportuna para esta aplicación, por favor, como siempre a través de los comentarios.</p>
<p><strong>Sí, no todo es maravilloso</strong><br />
La aplicación es bastante mejorable, muy mejorable. Sé que tiene problemas (y fallos) pero no quería alargarme, más que nada porque durante los próximos días prefiero no dedicarle más tiempo a esto. Pero ya se sabe aquello de <em>Release early, release often</em>, yo de momento voy a cumplir la primera parte.<br />
Por ejemplo, la calidad del audio está condicionada por los archivos de vídeo, así que no esperéis calidades altas. Todavía sólo he preparado la versión para Microsoft Windows. Seguramente en Internet Explorer no funcione (algún día lo hará).</p>
<p><strong>No prometo NADA</strong><br />
Viene un mes un tanto duro para mi, así que no prometo mejoras, ni corregir errores hasta que al menos llegue el 15 de febrero, más o menos.</p>
<p><strong>Sugerencias, quejas y dudas</strong><br />
Como siempre a través de los comentarios. Se bonificarán ;-).</p>
<p><strong>Sobre lo legal, lo ilegal y lo alegal</strong><br />
Yo sólo pongo la cama, y creo que es cómoda. Nada más que decir.</p>
<p><a href="http://rau1.com/dl/PyWebDj-Installer.exe" class="download">Download PyWebDj for Windows</a><br />
<span class="download-info">v0.100, <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License, Version 2.0</a>.</span></p>
<p><strong>P.D.:</strong><br />
Podría haberme extendido más, pero estoy con el portátil en la cama y me estoy quedando sin batería. Así que perdonadme las faltas y que no haya hablado de cositas como Adobe AIR (entre otras). Y si probáis la aplicación se agradecería un comentario.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=u36SQzd"><img src="http://feeds.feedburner.com/~f/rau1?i=u36SQzd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=kvJSMwD"><img src="http://feeds.feedburner.com/~f/rau1?i=kvJSMwD" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2008/01/07/pywebdj-free-music-for-everyone/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2008/01/07/pywebdj-free-music-for-everyone</feedburner:origLink></item>
		<item>
		<title>Programa con Google</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/196119059/programa-con-google</link>
		<comments>http://rau1.com/blog/2007/12/06/programa-con-google#comments</comments>
		<pubDate>Thu, 06 Dec 2007 14:53:39 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[developer]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[spain]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/12/06/programa-con-google</guid>
		<description><![CDATA[Programa con Google es el nuevo blog en castellano para los desarrolladores que utilizan las herramientas de Google en el que se informará de las últimas novedades, eventos y noticias relacionadas con La Compañía ;-). Además intentarán responder al mayor número de dudas y preguntas que se planteen.
Si desarrollas con herramientas de Google y quieres [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://programa-con-google.blogspot.com/">Programa con Google</a> es el nuevo blog en castellano para los desarrolladores que utilizan las herramientas de Google en el que se informará de las últimas novedades, eventos y noticias relacionadas con <a href="http://en.wikipedia.org/wiki/The_Company_(Prison_Break)">La Compañía</a> ;-). Además intentarán responder al mayor número de dudas y preguntas que se planteen.</p>
<p>Si desarrollas con <a href="http://code.google.com/">herramientas de Google</a> y quieres compartir tus conocimientos, <strong>puedes ganar una camiseta</strong> con las <em>letritas lego</em> que tan de moda están. Para ello sólo tienes que enviar un correo a <a href="mailto:programacongoogle@google.com"><strong>programacongoogle@google.com</strong></a> con tu aportación. A esa misma dirección puedes enviar tus preguntas, dudas y sugerencias.</p>
<p>Mi enhorabuena al equipo de Google España por esta iniciativa. Ánimo Clara!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=x3rZyzc"><img src="http://feeds.feedburner.com/~f/rau1?i=x3rZyzc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=imNZkdC"><img src="http://feeds.feedburner.com/~f/rau1?i=imNZkdC" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/12/06/programa-con-google/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/12/06/programa-con-google</feedburner:origLink></item>
		<item>
		<title>Skribit: de qué quieres que hable?</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/195729921/skribit-de-que-quieres-que-hable</link>
		<comments>http://rau1.com/blog/2007/12/05/skribit-de-que-quieres-que-hable#comments</comments>
		<pubDate>Wed, 05 Dec 2007 21:21:00 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[andrew-hyde]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[blogging]]></category>

		<category><![CDATA[business-plan]]></category>

		<category><![CDATA[entrepreneur]]></category>

		<category><![CDATA[interaction]]></category>

		<category><![CDATA[skribit]]></category>

		<category><![CDATA[startup]]></category>

		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/12/05/skribit-de-que-quieres-que-hable</guid>
		<description><![CDATA[Skribit permite que bloggers y lectores interactúen. A través de un widget que se coloca en el blog, los lectores pueden hacer sugerencias sobre los temas que quieren que escriba en el blog. Las sugerencias se pueden hacer de una forma anónima, pero también es posible registrarse en el servicio y realizar las sugerencias como usuario. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://skribit.com/">Skribit</a> permite que bloggers y lectores interactúen. A través de un widget que se coloca en el blog, los lectores pueden hacer sugerencias sobre los temas que quieren que escriba en el blog. Las sugerencias se pueden hacer de una forma anónima, pero también es posible registrarse en el servicio y realizar las sugerencias como usuario. Además el registro nos facilita funcionalidades extra como un histórico de las sugerencias que hemos hecho. A parte de poder realizar sugerencias, se pueden votar las sugerencias que el resto de lectores han hecho.</p>
<p>Skribit nació en el <a href="http://atlanta.startupweekend.com/">Startup Weekend de Atlanta</a>, <a href="http://twitter.com/Stammy/statuses/403077242">la idea ganadora fue una propuesta de Paul Stamatiou</a>. Skribit actualmente se encuentra en estado de beta privada, pero es posible hacer una petición para poder acceder a ella e incorporar el widget a tu blog.</p>
<p>Hoy mismo he recibido un correo de <a href="http://paulstamatiou.com/">Paul Stamatiou</a> en el que me indicaba que mi cuenta había sido activada. Ya he añadido el <strong>widget en el lateral</strong> del blog, así que desde este momento <strong>puedes hacer sugerencias sobre lo que te deseas que escriba</strong>.<br />
<span id="more-96"></span><br />
<strong>Extra ball</strong><br />
Un <a href="http://startupweekend.com/">Startup Weekend</a> consiste en reunir a un grupo de emprendedores (entre 40 y 50 normalmente) durante un fin de semana para intentar crear una compañía en torno a una idea/aplicación.</p>
<p>En el transcurso de unas 54 horas, y después de haber elegido la idea a desarrollar, se forman equipos que para desarrollar la aplicación, buscar un plan de negocio, etc. Después se reparte la empresa mediante participaciones. <em>Startup Weekend</em> es ya una marca registrada por <a href="http://andrewhyde.net/">Andrew Hyde</a>, por lo que los eventos organizados bajo esa marca tienen asociados unas restricciones sobre todo a la hora de repartir las participaciones de las acciones creadas.</p>
<p>En España durante el último fin de semana se desarrollo un evento basado en el concepto de Startup Weekend, pero bajo el nombre de <a href="http://iweekend.org/">iWeekend</a>, promovido por <a href="http://luvspain.wordpress.com">Luv Sayal</a>, <a href="http://raulandres.com">Raul Andrés</a>, <a href="http://davidrc.es">David Rodríguez</a>, <a href="http://blog.ojacq.com">Ollivier Jacq</a> y <a href="http://bermi.org">Bermi Ferrer</a>. Durante el primer iWeekend se desarrollo <a href="http://www.adlemons.com/">AdLemons</a>, sobre el que <a href="http://iweekend.org/blog/iweekend/reflexiones-y-conclusiones/">todavía poco se sabe</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=aAIUmkc"><img src="http://feeds.feedburner.com/~f/rau1?i=aAIUmkc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=EU6r30C"><img src="http://feeds.feedburner.com/~f/rau1?i=EU6r30C" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/12/05/skribit-de-que-quieres-que-hable/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/12/05/skribit-de-que-quieres-que-hable</feedburner:origLink></item>
		<item>
		<title>Tengo Proyecto Fin de Carrera, necesito sugerencias.</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/191524246/tengo-proyecto-fin-de-carrera-necesito-sugerencias</link>
		<comments>http://rau1.com/blog/2007/11/28/tengo-proyecto-fin-de-carrera-necesito-sugerencias#comments</comments>
		<pubDate>Tue, 27 Nov 2007 23:07:36 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[apache-ant]]></category>

		<category><![CDATA[apache-log4j]]></category>

		<category><![CDATA[apache-tomcat]]></category>

		<category><![CDATA[google-docs]]></category>

		<category><![CDATA[hibernate]]></category>

		<category><![CDATA[jdbc]]></category>

		<category><![CDATA[jstl]]></category>

		<category><![CDATA[junit]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[pfc]]></category>

		<category><![CDATA[skd]]></category>

		<category><![CDATA[spring-framework]]></category>

		<category><![CDATA[word-processor]]></category>

		<category><![CDATA[zoho-writer]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/11/28/tengo-proyecto-fin-de-carrera-necesito-sugerencias</guid>
		<description><![CDATA[Desde hace ya unas semanas tengo proyecto fin de carrera, su título: Herramienta colaborativa de tutorización de contenidos para la web de una asignatura. Aunque creo que no es el título definitivo, ya es lo suficientemente confuso.
Estos días estoy empezando, ya en serio, con el Documento de Objetivos del Proyecto, en el que debo determinar, [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace ya unas semanas tengo proyecto fin de carrera, su título: <strong><em>Herramienta colaborativa de tutorización de contenidos para la web de una asignatura</em></strong>. Aunque creo que no es el título definitivo, ya es lo suficientemente <em>confuso</em>.</p>
<p>Estos días estoy empezando, ya en serio, con el Documento de Objetivos del Proyecto, en el que debo determinar, entre otras cosas, el objetivo, el alcance del proyecto y las tecnologías a usar.</p>
<p>La idea, o al menos así lo he interpretado yo hasta ahora, es facilitar una herramienta que conecte al <em>publisher</em> (<acronym title="also known as">a.k.a.</acronym> editor) de un documento web con los lectores del mismo. Permitiendo la interacción, de editores y lectores, mediante comentarios y preguntas que podrán ser formuladas sobre elementos concretos del documento.</p>
<p><span id="more-92"></span></p>
<p>Algunos <em>procesadores de texto online</em> como <a href="http://writer.zoho.com/">Zoho Writer</a> o <a href="http://docs.google.com/">Google Docs</a> ya facilitan la posibilidad de añadir comentarios y notas. Pero para ello es necesario tener permiso para editar el documento. Lo que se pretende es que el <em>publisher</em> sea el único que pueda modificar el documento, y los lectores puedan añadir comentarios y preguntas al documento una vez publicado. La <em>conversación</em>, generada a través de los comentarios, permitirá la corrección de posibles errores así como la posible incorporación de información recomendada por los lectores.</p>
<p>Como ejemplos, y omitiendo muchos detalles, podríamos tener:</p>
<ul>
<li>Una pregunta sobre las 5 últimas palabras de la segunda línea de séptimo párrafo del documento</li>
<li>Un comentario sobre la celda situada en la fila 3 y la columna 4 de la primera tabla del documento</li>
<li>Otro comentario sobre la cuarta imagen del documento</li>
<li>&#8230;</li>
</ul>
<p>Entre las tecnologías a usar, ahora mismo cuento con las siguientes:</p>
<ul>
<li><a href="http://java.sun.com/">Java</a> SKD 6 ó Java EE 5 <sup>*</sup></li>
<li><a href="http://tomcat.apache.org/">Apache Tomcat</a></li>
<li><a href="http://www.springframework.org/">Spring Framework</a></li>
<li><a href="http://java.sun.com/javase/technologies/database/">JDBC</a></li>
<li><a href="http://www.oracle.com/database/">Oracle</a> o <a href="http://dev.mysql.com/">MySQL</a> <sup>*</sup></li>
<li><a href="http://java.sun.com/products/jsp/">JSP</a>/<a href="http://java.sun.com/products/jsp/jstl/">JSTL</a></li>
<li><a href="http://ant.apache.org/">Apache Ant</a></li>
<li><a href="http://junit.sourceforge.net/">JUnit</a></li>
<li><a href="http://logging.apache.org/log4j/">Apache log4j</a></li>
<li><a href="http://www.hibernate.org/">Hibernate</a> <sup>**</sup></li>
</ul>
<p><small><br />
<sup>*</sup> Puede variar según requisitos.<br />
<sup>**</sup> Garantizar la persistencia, en un principio, puede resultar más costoso, en tiempo, con Hibernate que sin él.<br />
</small><br />
Algunas de ellas están impuestas, otras han sido elegidas por mi, aunque viéndose condicionadas por las imposiciones.</p>
<p>Contestando a <a href="http://rau1.com/blog/2007/09/20/se-busca-proyecto-fin-de-carrera">mis dudas iniciales sobre el proyecto</a>:</p>
<ul>
<li><em>Me ciño a la propuesta de un profesor? De una empresa? Propongo mi propio proyecto?</em> <strong>Propuesta de un profesor.</strong></li>
<li><em>Aplicación de escritorio? <acronym title="Rich Internet Application">RIA</acronym>?</em> <strong><acronym title="Rich Internet Application">RIA</acronym>!</strong></li>
<li><em>Java? Python? PHP?</em> <strong>Java :-(</strong></li>
<li><em>Oracle? [Postgre|My]SQL?</em> <strong>Pendiente de requisitos.</strong></li>
<li><em>Software libre? Código abierto? Software privativo?</em> <strong>Tengo que leerme la normativa de proyectos y ver que se puede hacer con este delicado tema. Aunque al menos la mayoría de las herramientas que use serán libres.</strong></li>
<li><em>Posible público potencial? Cubrir expediente?</em> <strong>Dependerá también de la normativa.</strong></li>
</ul>
<p>De momento sólo estoy planteando el objetivo principal. Si tienes dudas o sugerencias, te agradecería que las plantearas a través de los comentarios de esta entrada. Gracias :-).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=UY7iNUb"><img src="http://feeds.feedburner.com/~f/rau1?i=UY7iNUb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=dZBlO6B"><img src="http://feeds.feedburner.com/~f/rau1?i=dZBlO6B" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/11/28/tengo-proyecto-fin-de-carrera-necesito-sugerencias/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/11/28/tengo-proyecto-fin-de-carrera-necesito-sugerencias</feedburner:origLink></item>
		<item>
		<title>Enhorabuena a 8000vueltas.com</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/189974024/enhorabuena-a-8000vueltascom</link>
		<comments>http://rau1.com/blog/2007/11/24/enhorabuena-a-8000vueltascom#comments</comments>
		<pubDate>Sat, 24 Nov 2007 21:56:25 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[8000vueltas]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[blogging]]></category>

		<category><![CDATA[car]]></category>

		<category><![CDATA[magazine]]></category>

		<category><![CDATA[prize]]></category>

		<category><![CDATA[spanish]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/11/24/enhorabuena-a-8000vueltascom</guid>
		<description><![CDATA[Enhorabuena y gracias a los delarosa, Juan GTi y JMJ (les pongo en ese orden por el número de artículos publicados, espero que no se me enfaden!), ellos son los que semanalmente trabajan en los artículos de 8000vueltas.com. Trabajo reconocido con la nota más alta en la comparativa de blogs del motor realizada en la revista [...]]]></description>
			<content:encoded><![CDATA[<p>Enhorabuena y gracias a los <a href="http://8000vueltas.com/author/delarosa/">delarosa</a>, <a href="http://8000vueltas.com/author/juangti/">Juan GTi</a> y <a href="http://8000vueltas.com/author/jmj/">JMJ</a> (les pongo en ese orden por el número de artículos publicados, espero que no se me enfaden!), ellos son los que semanalmente trabajan en los artículos de <a href="http://8000vueltas.com/">8000vueltas.com</a>. Trabajo reconocido con la nota más alta en la comparativa de blogs del motor realizada en la revista <a href="http://www.luike.com/revistas/GT/">Car&amp;Tecno</a> en su edición de diciembre.</p>
<p><img src="http://rau1.com/wp-content/uploads/2007/11/100_5178.JPG" alt="car" /></p>
<p>Lo que más me ha gustado es que en la revista indican lo que menos les gusta sobre cada blog, en el caso de 8000vueltas señalan: <em>Subjetividad pura y dura. Muchas veces no estarás de acuerdo</em>. Lo que hace que mi felicidad sea superior, porque si algo se pretende en todo momento, en 8000vueltas, es ser subjetivos, no cortarse y opinar. Todavía hay cosas que mejorar, pero este pequeño reconocimiento resulta motivador.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=XG2Okib"><img src="http://feeds.feedburner.com/~f/rau1?i=XG2Okib" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=2439puB"><img src="http://feeds.feedburner.com/~f/rau1?i=2439puB" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/11/24/enhorabuena-a-8000vueltascom/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/11/24/enhorabuena-a-8000vueltascom</feedburner:origLink></item>
		<item>
		<title>Monta el puzzle de Weebly y gana 2 cervezas</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/184932315/monta-el-puzzle-de-weebly-y-gana-2-cervezas</link>
		<comments>http://rau1.com/blog/2007/11/15/monta-el-puzzle-de-weebly-y-gana-2-cervezas#comments</comments>
		<pubDate>Wed, 14 Nov 2007 23:53:29 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[beer]]></category>

		<category><![CDATA[hacker-news]]></category>

		<category><![CDATA[hackers]]></category>

		<category><![CDATA[jobs]]></category>

		<category><![CDATA[paulgraham]]></category>

		<category><![CDATA[prize]]></category>

		<category><![CDATA[puzzle]]></category>

		<category><![CDATA[startups]]></category>

		<category><![CDATA[weebly]]></category>

		<category><![CDATA[y-combinator]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/11/15/monta-el-puzzle-de-weebly-y-gana-2-cervezas</guid>
		<description><![CDATA[A diario intento sacar un rato para leer Hacker News antes conocida como Startup News, es una especie de menéame sobre hackers y startups que forma parte de Y Combinator, una incubadora de startups de la que, para no extenderme en exceso, debería hablar otro día.
Hoy en Hacker News se apunta que una de las [...]]]></description>
			<content:encoded><![CDATA[<p>A diario intento sacar un rato para leer <a href="http://news.ycombinator.com/">Hacker News</a> antes <a href="http://ycombinator.com/hackernews.html">conocida como Startup News</a>, es una especie de menéame sobre <a href="http://www.paulgraham.com/gh.html">hackers</a> y <a href="http://www.paulgraham.com/start.html">startups</a> que forma parte de <a href="http://ycombinator.com/">Y Combinator</a>, una <a href="http://es.wikipedia.org/wiki/Incubadora_de_empresas">incubadora de startups</a> de la que, para no extenderme en exceso, debería hablar otro día.</p>
<p><a href="http://news.ycombinator.com/item?id=79723">Hoy en Hacker News se apunta</a> que una de las empresas en las que Y Combinator invirtió este invierno: <a href="http://www.weebly.com/jobs.html">Weebly, está buscando un Front-end web developer</a>. Hasta aquí todo es normal en relación con lo que se suele publicar en Hacker News. Lo curioso es que en la oferta, además de los requisitos de siempre, se indica que en el código fuente de la página se encuentra incrustado un <em>puzzle</em>, el que junto a su <em>resume</em> envíe la respuesta del puzzle tendrá un <em>extra point</em> durante el proceso de selección, ya que habrá demostrado ciertos conocimientos básicos.</p>
<p>Quizás no estés interesado en optar a ese puesto de trabajo (o tal vez sí, quién sabe), pero seguro que estás deseando tomar dos buenas y frías cervezas. <strong>Dos cervezas que te pagaré si</strong> antes de las 23:59:59 GMT+1 del jueves 15 de noviembre de 2007 (hoy) <strong>dejas la respuesta al puzzle</strong>, y como has llegado hasta ella, <strong>en los comentarios</strong> de esta entrada.</p>
<p><strong>Todo lo que necesitas</strong> está en la <a href="http://www.weebly.com/jobs.html">página de la oferta de trabajo de Weebly</a>. Decir que no es muy complicado, hasta yo he conseguido dar con la respuesta. Pero era la única forma de justificar el beberme dos cervezas.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=S0VPGab"><img src="http://feeds.feedburner.com/~f/rau1?i=S0VPGab" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=ZFF0CDB"><img src="http://feeds.feedburner.com/~f/rau1?i=ZFF0CDB" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/11/15/monta-el-puzzle-de-weebly-y-gana-2-cervezas/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/11/15/monta-el-puzzle-de-weebly-y-gana-2-cervezas</feedburner:origLink></item>
		<item>
		<title>Por qué son las tapas de las alcantarillas redondas</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/174044078/por-que-son-las-tapas-de-las-alcantarillas-son-redondas</link>
		<comments>http://rau1.com/blog/2007/10/24/por-que-son-las-tapas-de-las-alcantarillas-son-redondas#comments</comments>
		<pubDate>Tue, 23 Oct 2007 23:52:37 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/10/24/por-que-son-las-tapas-de-las-alcantarillas-son-redondas</guid>
		<description><![CDATA[Parece que últimamente esta es la cuestión de moda, llegándose a preguntar incluso durante procesos de selección de personal en importantes empresas. Hace unos días se me hizo esta pregunta, alguna de las posibles explicaciones son:

Son redondas porque así no se pueden caer al interior de la tubería
O porque los tubos son la forma más [...]]]></description>
			<content:encoded><![CDATA[<p>Parece que últimamente esta es la cuestión de moda, llegándose a preguntar incluso durante procesos de selección de personal en importantes empresas. Hace unos días se me hizo esta pregunta, alguna de las <a href="http://en.wikipedia.org/wiki/Manhole_cover">posibles explicaciones</a> son:</p>
<ul>
<li>Son redondas porque así no se pueden caer al interior de la tubería</li>
<li>O porque los tubos son la forma más eficiente a la hora de aguantar la compresión de la tierra que se encuentra a su alrededor, y por tanto las tapas deben adaptarse a esta forma.</li>
<li>O porque no es necesario pensar cual es su posición a la hora de colocarlas.</li>
<li>O porque una persona se desplaza mejor a través de una tubería circular.</li>
<li>O porque el flujo esta condicionado por la resistencia, siendo menor esta en las tuberías circulares.</li>
<li>O porque se pueden desplazar haciéndolas rodar</li>
<li>O porque es más difícil pinchar la rueda de un vehículo ya que no tienen esquinas</li>
<li>O porque&#8230; <em>ponga aquí su explicación favorita</em>&#8230;</li>
</ul>
<p>Pero hay que tener claro que ninguna de las anteriores estupideces explica porque realmente las tapas de alcantarilla son redondas. Si quieres saber porque son redondas debes continuar leyendo, sabrás la respuesta única y válida a la pregunta, la respuesta que justifica la forma circular de las alcantarillas.<br />
<span id="more-91"></span></p>
<p style="font-size: 1.4em">Las tapas de las alcantarillas son redondas para que las Tortugas Ninja puedan pasar sus pizzas<sup>*</sup> a través de ellas.</p>
<p style="text-align: center"><a href="http://en.wikipedia.org/wiki/Teenage_Mutant_Ninja_Turtles"><img src="http://rau1.com/wp-content/uploads/2007/10/tortugas.png" alt="tortugas" /></a></p>
<p><small>Informó Raúl Ochoa, desde el departamento de <a href="http://www.google.com/search?q=answer+to+life+the+universe+and+everything">respuestas estúpidas a preguntas estúpidas</a>.</small></p>
<p><small><sup>*</sup> Donde el radio de la pizza &lt; radio de la tapa de alcantarilla.</small></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=ynmnxPa"><img src="http://feeds.feedburner.com/~f/rau1?i=ynmnxPa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=5tVK13A"><img src="http://feeds.feedburner.com/~f/rau1?i=5tVK13A" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/10/24/por-que-son-las-tapas-de-las-alcantarillas-son-redondas/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/10/24/por-que-son-las-tapas-de-las-alcantarillas-son-redondas</feedburner:origLink></item>
		<item>
		<title>Mozilla Firefox, el IDE para la Web</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/173546165/mozilla-firefox-el-ide-para-la-web</link>
		<comments>http://rau1.com/blog/2007/10/23/mozilla-firefox-el-ide-para-la-web#comments</comments>
		<pubDate>Mon, 22 Oct 2007 23:32:02 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[addons]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[communication]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[ide]]></category>

		<category><![CDATA[mouseless]]></category>

		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[plugins]]></category>

		<category><![CDATA[tools]]></category>

		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/10/23/mozilla-firefox-el-ide-para-la-web</guid>
		<description><![CDATA[Mozilla Firefox, además de seguir siendo El Navegador, es el mejor IDE (Entorno Integrado de Desarrollo) para la web. Vale, a nadie, en su sano juicio, se le ocurriría maquetar/escribir/programar una web usando sólo Firefox. Pero a través de los plugins para Firefox se puede conseguir tener la mejor herramienta posible para pruebas, modificación, comparación [...]]]></description>
			<content:encoded><![CDATA[<p>Mozilla Firefox, además de seguir siendo <a href="http://www.getfirefox.com/">El Navegador</a>, es el mejor <acronym title="Integrated Development Environment">IDE</acronym> (Entorno Integrado de Desarrollo) para la web. Vale, a nadie, en su sano juicio, se le ocurriría maquetar/escribir/programar una web usando sólo Firefox. Pero a través de los <a href="https://addons.mozilla.org/">plugins para Firefox</a> se puede conseguir tener la mejor herramienta posible para pruebas, modificación, comparación de rendimiento, optimización, corrección de errores y <em>ponga aquí su problema favorito a la hora de desarrollar aplicaciones/páginas web</em>. Aparte resulta ser una magnífica herramienta de comunicación, de nuevo gracias a la posibilidad de extender su comportamiento mediante plugins.</p>
<p>Después de esta venta de humo, en la que no he dicho más que lo que todo el mundo ya sabe: <strong>Firefox es el navegador más completo</strong>. Quizás no sea brillante en la gestión de memoria, ni sea el más rápido, ni el que mayor número de selectores <acronym title="Cascading Style Sheets">CSS</acronym>3 implemente a día de hoy, pero es El Navegador.<br />
<span id="more-77"></span><br />
Sin dilatarme más paso a enumerar las extensiones que hacen que Firefox sea la mejor plataforma para el <strong>desarrollo</strong> de aplicaciones/páginas web:</p>
<ul>
<li><a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a>, lo activas y al pasar el ratón por cualquier elemento tendrás su color en varios sabores.</li>
<li><a href="http://console2.mozdev.org/">Console<sup>2</sup></a>, integra <a href="http://tidy.sourceforge.net/">Tidy</a> en la consola, y en el visor de código fuente.</li>
<li>DOM Inspector, como el nombre bien indica, date un paseo por el DOM de cualquier documento (viene por defecto con Firefox).</li>
<li><a href="http://www.getfirebug.com/">Firebug</a>, si Firefox es El Navegador, Firebug es La Extensión, manipula cualquier documento en tiempo real.</li>
<li><a href="http://www.greasespot.net/">Greasemonkey</a>, posibilita modificar el aspecto y comportamiento de cualquier página web.</li>
<li><a href="http://users.skynet.be/mgueury/mozilla/">HTML Validator</a>, comprueba la validez de cualquier documento haciendo uso, una vez más, de Tidy.</li>
<li><a href="http://livehttpheaders.mozdev.org/">Live HTTP Headers</a>, si quieres saber que solicitudes hace Firefox y que respuestas recibe, esta es tu extensión.</li>
<li><a href="http://piro.sakura.ne.jp/xul/_splitbrowser.html.en">Split Browser</a>, muy útil para comparar dos páginas sin necesidad de tener abiertas dos ventanas.</li>
<li><a href="http://chrispederick.com/work/web-developer/">Web Developer</a>, junto a Firebug esta es otra de las imprescindibles, permite modificar ciertas partes del documento, medir distancias, obtener información de elementos.</li>
<li><a href="http://developer.yahoo.com/yslow/">YSlow</a>, es una extensión para otra extensión, en concreto para Firebug. Mide el <em>rendimiento</em> de las páginas, comprobando número de peticiones, tiempos de respuesta, <em>caches</em>&#8230;</li>
</ul>
<p>Y ahora los que hacen de Mozilla Firefox una muy buena herramienta de <strong>comunicación</strong>:</p>
<ul>
<li><a href="http://ginatrapani.org/workshop/firefox/bettergmail/">Better Gmail</a>, viene directamente de una de las editoras de Lifehacker, se trata de una selección de user scripts de Greasemonkey para Gmail, todos empaquetados en un sólo plugin. Es perfecto para leer tu correo sin usar el ratón. Productividad++;</li>
<li><a href="http://www.cocomment.com/tools/extension">coComment</a>, te permite seguir conversaciones allí donde dejes un comentario, sin necesidad de acudir a la página original para comprobar si alguien te ha contestado.</li>
<li><a href="http://del.icio.us/help/firefox/extension">del.icio.us</a>, almacena tus favoritos en del.icio.us de la forma más cómoda.</li>
<li><a href="http://labs.mozilla.com/2006/12/introducing-operator">Operator</a>, permite descubrir tags, contactos, direcciones, reseñas&#8230; en todas aquellas webs que incorporen <a href="http://microformats.org/">Microformats</a> en su código.</li>
</ul>
<p><strong>Extra ball</strong>: sólo para los que se consideren muy geeks: navegación al más puro estilo Vim con <a href="http://vimperator.mozdev.net/">Vimperator</a>. Una forma más de <a href="http://lifehacker.com/software/feature/hack-attack-mouseless-firefox-139495.php">no usar el ratón para navegar</a>.</p>
<p>Alguien me sugiere algún otro buen plugin (del tipo que sea)?</p>
<p><strong>Update</strong>: algo que había olvidado mencionar, y que al leer los comentarios me he dado cuenta, es el uso recomendado del <a href="https://nic-nac-project.de/~kaosmos/index-en.html#profname">plugin Profile Switcher</a>. Este plugin nos creará una nueva entrada en el menú <em>Archivo</em>: Open Profile Manager. Que nos permitirá de una forma muy cómoda cambiar entre diferentes perfiles de usuario.<br />
Así podemos tener un <em>perfil para navegar</em>, sin los <em>plugins de desarrollo</em> instalados, consiguiendo tener un Firefox un poco menos perezoso, y otro <em>perfil de desarrollador</em> en el que todos esos plugins estén instalados.<br />
Otra opción para abrir el profile manager es lanzar Firefox con el parámetro <em>-ProfileManager</em>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=N8Bzksa"><img src="http://feeds.feedburner.com/~f/rau1?i=N8Bzksa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=jeusOIA"><img src="http://feeds.feedburner.com/~f/rau1?i=jeusOIA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/10/23/mozilla-firefox-el-ide-para-la-web/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/10/23/mozilla-firefox-el-ide-para-la-web</feedburner:origLink></item>
		<item>
		<title>Twitter Home With All Replies</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/173094637/twitter-home-with-all-replies</link>
		<comments>http://rau1.com/blog/2007/10/22/twitter-home-with-all-replies#comments</comments>
		<pubDate>Mon, 22 Oct 2007 01:12:05 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Hacks]]></category>

		<category><![CDATA[free-software]]></category>

		<category><![CDATA[gpl]]></category>

		<category><![CDATA[greasemonkey]]></category>

		<category><![CDATA[hack]]></category>

		<category><![CDATA[license]]></category>

		<category><![CDATA[replies]]></category>

		<category><![CDATA[script]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/10/22/twitter-home-with-all-replies</guid>
		<description><![CDATA[Yet another Greasemonkey script. It allows you to retrieve all your Twitter replies and put in homepage, so you can see replies from people isn&#8217;t in your friends list. It&#8217;s just a hack, not documented, maybe inneficient, and possible stupid, but I wanted this feature in Twitter homepage and this is the way I have [...]]]></description>
			<content:encoded><![CDATA[<p>Yet another <a href="http://www.greasespot.net/">Greasemonkey</a> script. It allows you to retrieve all your <a href="http://twitter.com/">Twitter</a> replies and put in homepage, so you can see <a href="http://twitter.com/replies">replies</a> from people isn&#8217;t in your friends list. It&#8217;s just a hack, not documented, maybe inneficient, and possible stupid, but I wanted this feature in Twitter homepage and this is the way I have chosen.<br />
<a href="http://rau1.com/dl/TwitterHomeWithAllReplies.user.js" class="download">Install Twitter Home w/All Replies</a><br />
<span class="download-info">v0.100, <a href="http://www.gnu.org/copyleft/gpl.html"><acronym title="General Public License">GPL</acronym> license</a>.</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=aOqYJza"><img src="http://feeds.feedburner.com/~f/rau1?i=aOqYJza" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=Q6QPVvA"><img src="http://feeds.feedburner.com/~f/rau1?i=Q6QPVvA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/10/22/twitter-home-with-all-replies/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/10/22/twitter-home-with-all-replies</feedburner:origLink></item>
		<item>
		<title>Free Burma</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/164937025/free-burma</link>
		<comments>http://rau1.com/blog/2007/10/04/free-burma#comments</comments>
		<pubDate>Wed, 03 Oct 2007 23:34:04 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[aung-san-suu-kyi]]></category>

		<category><![CDATA[free-burma]]></category>

		<category><![CDATA[freedom]]></category>

		<category><![CDATA[myanmar]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/10/04/free-burma</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center; margin-top: 30px"><a href="http://www.free-burma.org"><img src="http://freeburma.s3.amazonaws.com/free_burma_01.gif" alt="Free Burma!" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=SSzZYrOj"><img src="http://feeds.feedburner.com/~f/rau1?i=SSzZYrOj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=MUbXcsD7"><img src="http://feeds.feedburner.com/~f/rau1?i=MUbXcsD7" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/10/04/free-burma/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/10/04/free-burma</feedburner:origLink></item>
		<item>
		<title>Cambia</title>
		<link>http://feeds.feedburner.com/~r/rau1/~3/163464917/cambia</link>
		<comments>http://rau1.com/blog/2007/10/01/cambia#comments</comments>
		<pubDate>Sun, 30 Sep 2007 23:50:57 +0000</pubDate>
		<dc:creator>Raúl</dc:creator>
		
		<category><![CDATA[Difusión]]></category>

		<category><![CDATA[changes]]></category>

		<category><![CDATA[decisions]]></category>

		<category><![CDATA[experience]]></category>

		<category><![CDATA[habits]]></category>

		<category><![CDATA[hapiness]]></category>

		<category><![CDATA[life]]></category>

		<category><![CDATA[living]]></category>

		<category><![CDATA[stages]]></category>

		<category><![CDATA[who-moved-my-cheese]]></category>

		<guid isPermaLink="false">http://rau1.com/blog/2007/10/01/cambia</guid>
		<description><![CDATA[

El cambio ocurre
El Queso no cesa de moverse


Anticípate al cambio
Prepárate para cuadno se mueva el Queso


Controla el cambio
Olfatea el Queso con frecuencia para saber cuándo se vuelve rancio


Adáptate al cambio con rapidez
Cuando más rápidamente te olvides del Queso Viejo, antes podrás disfrutar del Queso Nuevo.


Cambia
Muévete con el Queso


¡Disfruta del cambio!
Saborea la aventura y disfruta del [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<ul>
<li>El cambio ocurre</li>
<li><small>El Queso no cesa de moverse</small></li>
</ul>
<ul>
<li>Anticípate al cambio</li>
<li><small>Prepárate para cuadno se mueva el Queso</small></li>
</ul>
<ul>
<li>Controla el cambio</li>
<li><small>Olfatea el Queso con frecuencia para saber cuándo se vuelve rancio</small></li>
</ul>
<ul>
<li>Adáptate al cambio con rapidez</li>
<li><small>Cuando más rápidamente te olvides del Queso Viejo, antes podrás disfrutar del Queso Nuevo.</small></li>
</ul>
<ul>
<li>Cambia</li>
<li><small>Muévete con el Queso</small></li>
</ul>
<ul>
<li>¡Disfruta del cambio!</li>
<li><small>Saborea la aventura y disfruta del sabor del Queso Nuevo</small></li>
</ul>
<ul>
<li>Prepárate para cambiar con rapidez y para disfrutarlo una y otra vez</li>
<li><small>El queso no cesa de moverse</small></li>
</ul>
<p><a href="http://en.wikipedia.org/wiki/Who_Moved_My_Cheese">Who Moved my Cheese?</a></p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/rau1?a=TzAHk44x"><img src="http://feeds.feedburner.com/~f/rau1?i=TzAHk44x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/rau1?a=9OFJU6x3"><img src="http://feeds.feedburner.com/~f/rau1?i=9OFJU6x3" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://rau1.com/blog/2007/10/01/cambia/feed</wfw:commentRss>
		<feedburner:origLink>http://rau1.com/blog/2007/10/01/cambia</feedburner:origLink></item>
	</channel>
</rss>
