<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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"
	>

<channel>
	<title>QuarkBlog &#187; General</title>
	<atom:link href="http://quarkblog.org/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://quarkblog.org</link>
	<description>If you can read this, you need another beer.</description>
	<pubDate>Thu, 07 Aug 2008 07:20:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Chiquito de la Calzada meets Emilio Botín</title>
		<link>http://quarkblog.org/2008/07/17/chiquito-de-la-calzada-meets-emilio-botin/</link>
		<comments>http://quarkblog.org/2008/07/17/chiquito-de-la-calzada-meets-emilio-botin/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 21:00:49 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Humor]]></category>

		<category><![CDATA[Internet]]></category>

		<category><![CDATA[QuarkBlog]]></category>

		<guid isPermaLink="false">http://quarkblog.org/?p=561</guid>
		<description><![CDATA[Cuando uno de los hombres más poderosos y ricos del país intenta hacerse pasar por &#8220;internacional&#8221; y sale algo como esto &#8230;

&#8230; es que algo huele a podrido en Dinamarca.
EDITADO.
Veo que el gaditano ha encontrado otra impagable muestra de cultura patria.
Y como olvidar al mítico principe gitano &#8230; si es que en este país de [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando uno de los hombres más poderosos y ricos del país intenta hacerse pasar por <em>&#8220;internacional&#8221;</em> y sale algo como esto &#8230;</p>
<div class="center"><object width="450" height="340"><param name="movie" value="http://video.publico.es/videos/v/15393/0/medium"></param><param name="allowScriptAccess" value="always"></param><param name="allowfullscreen" value="true"></param><embed src="http://video.publico.es/videos/v/15393/0/medium" type="application/x-shockwave-flash" width="450" height="340" allowScriptAccess="always" allowfullscreen="true"></embed></object></div>
<p>&#8230; es que algo huele a podrido en Dinamarca.</p>
<p>EDITADO.</p>
<p>Veo que <a href="http://folksonomy.com">el gaditano</a> ha encontrado otra <a href="http://es.youtube.com/watch?v=BtAm0UepX8s">impagable muestra de cultura patria</a>.</p>
<p>Y como olvidar al mítico <a href="http://es.youtube.com/watch?v=w-yxVdW8ik0">principe gitano</a> &#8230; si es que en este país de <em>piratas</em> es necesario proteger la cultura de pandereta y pincho de tortilla a toda costa.</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/07/17/chiquito-de-la-calzada-meets-emilio-botin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Primer aniversario del Geek Errante</title>
		<link>http://quarkblog.org/2008/07/02/primer-aniversario-del-geek-errante/</link>
		<comments>http://quarkblog.org/2008/07/02/primer-aniversario-del-geek-errante/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 20:55:47 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Internet]]></category>

		<category><![CDATA[QuarkBlog]]></category>

		<guid isPermaLink="false">http://quarkblog.org/?p=559</guid>
		<description><![CDATA[El Geek Errante, el podcast más escuchado en cinco universos alternativos, está de aniversario. Para celebrarlo han montado un concurso: debes relatar tu experiencia más aterradora con las tecnologías terrestres de la información.
Como premio, un DVD de la primera temporada de The IT Crowd [laureles]cedido generosamente por este blog[/laureles]  . Si te interesa, ya [...]]]></description>
			<content:encoded><![CDATA[<p>El <a href="http://elgeekerrante.com">Geek Errante</a>, el podcast más escuchado en cinco universos alternativos, está de aniversario. Para celebrarlo han montado un <a href="http://elgeekerrante.com/ege-podcast-ep39/">concurso</a>: debes relatar tu <strong>experiencia más aterradora con las tecnologías terrestres de la información</strong>.</p>
<p>Como premio, un DVD de la primera temporada de <strong>The IT Crowd</strong> [laureles]cedido generosamente por este blog[/laureles] <img src='http://quarkblog.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Si te interesa, ya sabes.</p>
<p>Gracias a la tripulación de la nave y sus agentes durmientes por hacer posible este grandísimo podcast y esperemos que sigan retransmitiendo durante muuucho tiempo, no me gustaría cambiar de universo para seguir escuchándolos.</p>
<p>Kudos!</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/07/02/primer-aniversario-del-geek-errante/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Beautiful Code 2</title>
		<link>http://quarkblog.org/2008/05/19/beautiful-code-2/</link>
		<comments>http://quarkblog.org/2008/05/19/beautiful-code-2/#comments</comments>
		<pubDate>Mon, 19 May 2008 19:24:14 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quarkblog.org/?p=552</guid>
		<description><![CDATA[Esta es una respuesta para este comentario que al final ha quedado demasiado larga y la pongo aquí.
Veamos, para empezar hay que comprender lo que para los autores del libro es beautiful code: De la misma manera que no se pueden comparar dos poesías por lo melodiosas que suenan al recitarlas, no se puede comparar [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es una respuesta para <a href="http://quarkblog.org/2008/02/12/beautiful-code/#comment-4208">este comentario</a> que al final ha quedado demasiado larga y la pongo aquí.</p>
<p>Veamos, para empezar hay que comprender lo que para los autores del libro es <em>beautiful code</em>: De la misma manera que no se pueden comparar dos poesías por lo <em>melodiosas</em> que suenan al recitarlas, no se puede comparar el código por lo lo <em>estético</em> que resulte.</p>
<p>La belleza a la que se refiere el libro está en los pequeños detalles de la resolución del problema; a veces la belleza reside en lo óptimo del código, la simplicidad, la estructura de la arquitectura, la elegancia del planteamiento, etc. Todos los capítulos hacen referencia a una o varias de estas cualidades.</p>
<p>Hay varios capítulos con implementaciones en el lenguaje C, me voy a quedar con el primero: <strong>&#8220;A Regular Expression Matcher&#8221;</strong>, donde el mismísimo <a href="http://en.wikipedia.org/wiki/Brian_Kernighan">Brian Kernighan</a> hace un repaso a las implementaciones de expresiones regulares que se pueden ver hoy en día a lo largo y ancho de lenguajes, librerías, sistemas operativos, etc.</p>
<p>Brian tuvo la necesidad de incorporar expresiones regulares en UNIX pero examinando la implementación de <code>grep</code> le pareció demasiado compleja (~500 lineas), así que desafió a <a href="http://en.wikipedia.org/wiki/Robert_C._Pike">Robert Pike</a> a encontrar la implementación mínima capaz manejar construcciones con:</p>
<table>
<tr>
<th>Carácter</th>
<th>Significado</th>
</tr>
<tr>
<td>c</td>
<td>Coincide con el literal <em>c</em></td>
</tr>
<tr>
<td>.</td>
<td>Coincide con un carácter simple</td>
</tr>
<tr>
<td>^</td>
<td>Coincide con el inicio de la cadena</td>
</tr>
<tr>
<td>$</td>
<td>Coincide con el final de la cadena</td>
</tr>
<tr>
<td>*</td>
<td>Coincide con cero o más ocurrencias del anterior carácter</td>
</tr>
</table>
<p>Como he dicho, se trata de la funcionalidad básica de un autómata que reconoce expresiones regulares. Perl, grep, awk, etc. son capaces de manejar construcciones mucho más complejas que estas.</p>
<p>Cuenta la leyenda(tm) que Pike se encerró en su despacho, al cabo de un par de horas apareció con 30 líneas de código que implementaban el autómata propuesto por Kernighan y hasta la fecha es la solución óptima al problema.</p>
<p>A esto es a lo que Kernighan llama <em>beautiful code</em> y creo que la afirmación está fuera de toda duda después del <em>show me the code!</em>:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* match: search for regexp anywhere in text */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> match<span class="br0">&#40;</span> <span class="kw4">char</span> *regexp, <span class="kw4">char</span> *text <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> regexp<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == <span class="st0">&#8216;^&#8217;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> matchhere<span class="br0">&#40;</span>regexp<span class="nu0">+1</span>, text<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">do</span> <span class="br0">&#123;</span> <span class="coMULTI">/* must look even if string is empty */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> matchhere<span class="br0">&#40;</span>regexp, text<span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span> *text++ != <span class="st0">&#8216;<span class="es0">\0</span>&#8216;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* matchhere: search for regexp at beginning of text */</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">int</span> matchhere<span class="br0">&#40;</span> <span class="kw4">char</span> *regexp, <span class="kw4">char</span> *text <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> regexp<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == <span class="st0">&#8216;<span class="es0">\0</span>&#8216;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> regexp<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> == <span class="st0">&#8216;*&#8217;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> matchstar<span class="br0">&#40;</span>regexp<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>, regexp<span class="nu0">+2</span>, text<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> regexp<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == <span class="st0">&#8216;$&#8217;</span> &amp;&amp; regexp<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> == <span class="st0">&#8216;<span class="es0">\0</span>&#8216;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> *text == <span class="st0">&#8216;<span class="es0">\0</span>&#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> *text != <span class="st0">&#8216;<span class="es0">\0</span>&#8216;</span> &amp;&amp; <span class="br0">&#40;</span>regexp<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == <span class="st0">&#8216;.&#8217;</span> || regexp<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == *text<span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> matchhere<span class="br0">&#40;</span>regexp<span class="nu0">+1</span>, text<span class="nu0">+1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* matchstar: search for c*regexp at beginning of text */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> matchstar<span class="br0">&#40;</span> <span class="kw4">int</span> c, <span class="kw4">char</span> *regexp, <span class="kw4">char</span> *text <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">do</span> <span class="br0">&#123;</span> <span class="coMULTI">/* matches zero or more instances */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> matchhere<span class="br0">&#40;</span> regexp, text <span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span> *text != <span class="st0">&#8216;<span class="es0">\0</span>&#8216;</span> &amp;&amp; <span class="br0">&#40;</span>*text++ == c || c == <span class="st0">&#8216;.&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>En el libro se discuten largo y tendido todas las decisiones, casos especiales y alternativas del algoritmo así como la explicación de porque es imposible batir a esta implementación con un lenguaje de alto nivel (básicamente por la manera en que C gestiona las cadenas y la memoria).</p>
<p>El capitulo en cuestión no esta disponible en la red, pero rebuscando he encontrado una <a href="http://swtch.com/~rsc/regexp/regexp1.html">explicación similar</a>. Para más detalles podéis encargar el libro en <a href="http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1211224952&#038;sr=8-1">Amazon</a> (es una buena compra), o <a href="http://mininova.org">no</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/05/19/beautiful-code-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The root of all evil y El dinero es deuda</title>
		<link>http://quarkblog.org/2008/04/01/the-root-of-all-evil-y-el-dinero-es-deuda/</link>
		<comments>http://quarkblog.org/2008/04/01/the-root-of-all-evil-y-el-dinero-es-deuda/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 21:37:07 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2008/04/01/the-root-of-all-evil-y-el-dinero-es-deuda/</guid>
		<description><![CDATA[Creo que la mayoría de mi audiencia ha visto ya el documental independiente Zeitgeist. Este documental está dividido en tres partes que se encargan de desmontar tres de las más elaboradas manipulaciones de la historia de la humanidad: la religión, la reserva federal de los Estados Unidos y la guerra contra el terrorismo.
En Zeitgeist se [...]]]></description>
			<content:encoded><![CDATA[<p>Creo que la mayoría de mi audiencia ha visto ya el documental independiente <a href="http://video.google.es/videoplay?docid=8883910961351786332&#038;q=zeitgeist+spanish&#038;total=39&#038;start=0&#038;num=10&#038;so=0&#038;type=search&#038;plindex=0">Zeitgeist</a>. Este documental está dividido en tres partes que se encargan de desmontar tres de las más elaboradas manipulaciones de la historia de la humanidad: <strong>la religión</strong>, <strong>la reserva federal de los Estados Unidos</strong> y la <strong>guerra contra el terrorismo</strong>.</p>
<p>En Zeitgeist se echa de menos un poco más de profundidad en los temas (de echo la virtud de Zeitgeist es que no cae en <em>conspiranoias</em> ni entra en juicios de valor), así que me permito recomendaros un par de documentales para ampliar vuestra curiosidad:</p>
<p>Respecto a la religión, podéis profundizar más leyendo los libros de Richard Dawkins o viendo los respectivos documentales de la BBC: <a href="http://video.google.es/videoplay?docid=9002284641446868316&#038;q=the+root+of+all+evil&#038;total=937&#038;start=0&#038;num=10&#038;so=0&#038;type=search&#038;plindex=0">The root of all evil?: The God Delusion</a> y <a href="http://video.google.es/videoplay?docid=-8210522903232438954&#038;q=the+root+of+all+evil&#038;total=937&#038;start=0&#038;num=10&#038;so=0&#038;type=search&#038;plindex=2">The root of all evil?: The Virus of Faith</a>.</p>
<p>En cuanto a <a href="http://video.google.es/videoplay?docid=-2882126416932219790&#038;q=el+dinero+es+deuda&#038;total=118&#038;start=0&#038;num=10&#038;so=0&#038;type=search&#038;plindex=0">El dinero es deuda</a> es un documental didáctico donde se explica cómo se crea y funciona el dinero, una vez visionado, uno ya puede hacerse una idea de cómo funciona nuestro agradable mundo financiero y social.</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/04/01/the-root-of-all-evil-y-el-dinero-es-deuda/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Otra baja</title>
		<link>http://quarkblog.org/2008/03/02/otra-baja/</link>
		<comments>http://quarkblog.org/2008/03/02/otra-baja/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 16:44:20 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2008/03/02/otra-baja/</guid>
		<description><![CDATA[Señores he caido, soy poseedor de un iPod tal y como indicaba este espontáneo spoiler. Las cosas han venido así. Supongo que todavía no soy lo bastante hombre como para hacerme mi propio reproductor mp3.
Me ha salido un poco caro por el dock que venía con él; paso del cutre-clabe USB, ya que me gasto [...]]]></description>
			<content:encoded><![CDATA[<p>Señores he caido, soy poseedor de un iPod tal y como indicaba este espontáneo <a href="http://quarkblog.org/2008/02/11/meme-%c2%bfcuanto-software-privativo-usas-en-tu-debian-o-derivado/#comment-3884">spoiler</a>. Las cosas han venido así. Supongo que todavía no soy lo bastante hombre como para <a href="http://www.engadget.com/2006/12/19/how-to-make-your-own-mp3-player/">hacerme mi propio reproductor mp3</a>.</p>
<p>Me ha salido un poco caro por el dock que venía con él; paso del cutre-clabe USB, ya que me gasto el dinero, me lo gasto bien &#8230; un Volkswagen Golf like this:</p>
<div class="center"><img src='http://quarkblog.org/wp-content/uploads/2008/03/golf.png' alt='Volkswagen Golf' /></div>
<p>Bueno, esto no cambia nada, sólo estoy blogeando sobre la compra de un iPod, después subiré las fotos del unbox a flickr, se lo diré a todos mis followers de twitter y miraré precios de un macbook &#8230; oh wait!</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/03/02/otra-baja/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Beautiful Code</title>
		<link>http://quarkblog.org/2008/02/12/beautiful-code/</link>
		<comments>http://quarkblog.org/2008/02/12/beautiful-code/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 23:50:31 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2008/02/12/beautiful-code/</guid>
		<description><![CDATA[Justo termino de leer Beautiful Code: Leading Programmers Explain How They Think, por recomendación indirecta del gaditano, y me invade una paz Zen y una satisfacción interior difícil de describir.
Este libro es especial; no es el típico libro técnico, se podría decir que es un recopilatorio de poemas escritos en C, Python, Perl, Lisp, &#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Justo termino de leer <strong>Beautiful Code: Leading Programmers Explain How They Think</strong>, por recomendación indirecta del <a href="http://blog.folksonomy.com/index.php/computer-skills-in-europe/">gaditano</a>, y me invade una paz Zen y una satisfacción interior difícil de describir.</p>
<p>Este libro es especial; no es el típico libro técnico, se podría decir que es un recopilatorio de poemas escritos en C, Python, Perl, Lisp, &#8230; por los mejores poetas que este peculiar arte ha dado a la humanidad. Tienen su espacio en el libro piezas como <a href="http://labs.google.com/papers/mapreduce.html">Map/reduce</a> (el mecanismo que utiliza Google para escalar hasta el infinito sus sistemas), el <a href="http://marsrovers.nasa.gov/overview/">Mars Rover</a> de la NASA (una de las misiones más exitosas de toda la carrera espacial), <a href="http://genome.ucsc.edu/">Gene Sorter</a> (un programa que facilita la investigación del Proyecto Genoma Humano) y, mi preferido, el <a href="http://www.red-bean.com/kfogel/beautiful-code/bc-chapter-02.html">Delta Editor</a> de Subversion.</p>
<p>Te inspira a programar, a ser elegante y cuidadoso con tu código, a mimarlo y presumir de él. Sólo el libro de <a href="http://www.amazon.co.uk/C-Programming-Language-2nd/dp/0131103628/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1199274726&#038;sr=8-1">Kernighan &#038; Ritchie sobre C</a> llegó a hacerme ver esa belleza en un puñado de ceros y unos.</p>
<p>Citando al <a href="http://blog.folksonomy.com/">gaditano</a>:</p>
<blockquote><p>La programación es una forma de entender los problemas de forma lógica y una forma de abstracción y casi si me da el día pedante digo que una manera de entender la vida. Habré escuchado (y pensado) más de una vez que esa tendencia tan cerebral de pensar que todo es información y todo es un problema cuya solución puede encontrarse puede joderte la vida de la manera más miserable y es que pese a que nos intenten siempre poner a los constructores de puentes como modelo de elegancia a imitar en nuestros desarrollos, la programación (el sentarse a resolver problemas sistemáticamente, día a día y del modo más elegantemente posible) tiene mas puntos en común con las artes que con cualquiera de las ciencias.</p></blockquote>
<p>Si para ti programar es una pasión, <a href="http://www.oreilly.com/catalog/9780596510046/">leelo</a>.</p>
<p>Si programas por dinero, coge un PC-Actual y lárgate de aquí.</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/02/12/beautiful-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Meme: ¿Cuánto Software Privativo usas en tu Debian o derivado?</title>
		<link>http://quarkblog.org/2008/02/11/meme-%c2%bfcuanto-software-privativo-usas-en-tu-debian-o-derivado/</link>
		<comments>http://quarkblog.org/2008/02/11/meme-%c2%bfcuanto-software-privativo-usas-en-tu-debian-o-derivado/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 20:08:17 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2008/02/11/meme-%c2%bfcuanto-software-privativo-usas-en-tu-debian-o-derivado/</guid>
		<description><![CDATA[En mi ordenador principal (Ubuntu):
cdrecord                  command line CD writing tool
fglrx-amdcccle            Catalyst Control Center for the ATI graphics accelerat
linux-restricted-modules  Generic Linux restricted modules.
linux-restricted-modules- Non-free Linux 2.6.22 modules [...]]]></description>
			<content:encoded><![CDATA[<p>En mi ordenador principal (Ubuntu):</p>
<pre>cdrecord                  command line CD writing tool
fglrx-amdcccle            Catalyst Control Center for the ATI graphics accelerat
linux-restricted-modules  Generic Linux restricted modules.
linux-restricted-modules- Non-free Linux 2.6.22 modules on x86/x86_64
linux-restricted-modules- Non-free Linux 2.6.22 modules helper script
linux-restricted-modules- Restricted Linux modules for generic kernels
mkisofs                   Creates ISO-9660 CD-ROM filesystem images
rar                       Archiver for .rar files
skype                     Skype - Take a deep breath
sun-java6-bin             Sun Java(TM) Runtime Environment (JRE) 6 (architecture
sun-java6-jdk             Sun Java(TM) Development Kit (JDK) 6
sun-java6-jre             Sun Java(TM) Runtime Environment (JRE) 6 (architecture
sun-java6-plugin          The Java(TM) Plug-in, Java SE 6
unrar                     Unarchiver for .rar files (non-free version)
  Reason: Modifications problematic
xorg-driver-fglrx         Video driver for the ATI graphics accelerators

  15 non-free packages, 0.9% of 1711 installed packages.</pre>
<p>En mi servidor casero (Debian Etch):</p>
<pre>unrar                     Unarchiver for .rar files (non-free version)
  Reason: Modifications problematic

  1 non-free packages, 0.2% of 492 installed packages.</pre>
<p>En el trabajo (Debian Etch):</p>
<pre>sun-java6-bin             Sun Java(TM) Runtime Environment (JRE) 6 (architecture
sun-java6-jdk             Sun Java(TM) Development Kit (JDK) 6
sun-java6-jre             Sun Java(TM) Runtime Environment (JRE) 6 (architecture
sun-java6-source          Sun Java(TM) Development Kit (JDK) 6 source files

  4 non-free packages, 0.6% of 637 installed packages.</pre>
<p>Me siento sucio &#8230;</p>
<p><a href="http://blogs.ua.es/jgaliana/2008/02/11/meme-%c2%bfcuanto-software-privativo-usas-en-tu-debian-o-derivado/"><em>Memizado</em> por Juan Galiana</a></p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/02/11/meme-%c2%bfcuanto-software-privativo-usas-en-tu-debian-o-derivado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nokia piensa adquirir Trolltech</title>
		<link>http://quarkblog.org/2008/01/28/nokia-piensa-adquirir-trolltech/</link>
		<comments>http://quarkblog.org/2008/01/28/nokia-piensa-adquirir-trolltech/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 19:37:22 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[KDE]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2008/01/28/nokia-piensa-adquirir-trolltech/</guid>
		<description><![CDATA[Está movidito este comienzo de año, el otro día Sun compró MySQL, Oracle compró BEA (que no lo dije) y hoy Nokia hace una oferta pública a Trolltech que acabará en compra de un momento a otro si no se ha materializado ya. Viva el capitalismo.
Trolltech es una empresa noruega que hasta la fecha vivía [...]]]></description>
			<content:encoded><![CDATA[<p>Está movidito este comienzo de año, el otro día Sun compró MySQL, Oracle compró BEA (que no lo dije) y hoy Nokia hace una oferta pública a Trolltech que acabará en compra de un momento a otro si no se ha materializado ya. Viva el capitalismo.</p>
<p>Trolltech es una empresa noruega que hasta la fecha vivía de vender licencias de la librería Qt, una librería que permite construir aplicaciones multiplataforma (Linux, OSX y Windows) de manera sencilla y que constituye el pilar principal sobre el que está construido KDE. En los últimos meses hemos podido ver mucho feedback entre Trolltech y KDE: algunas tecnologías desarrolladas para KDE 4 han pasado a Qt y viceversa.</p>
<p>Creo que a Nokia no le interesa Qt, lo que pasa es que le han visto las orejas al lobo y su hegemonía en el mercado de los móviles se puede ver comprometida con Google Android; así que como más vale prevenir que curar, se hacen con Qtopia y el proyecto Greenphone (que viene a ser la plataforma de desarrollo de Trolltech para dispositivos móviles).</p>
<p>No se si es un movimiento estratégico para que nadie más entre en competencia o realmente van a utilizar esta tecnología, recordemos que Nokia ya lleva tiempo jugando con la plataforma Maemo. El futuro de Maemo está un poco en el aire, lo más probable es que recoja el testigo Canonical para el Ubuntu Mobile.</p>
<p>En cualquier caso, tanto por un lado como por el otro, Linux y software libre en los todos teléfonos móviles. Menos los iPhone de Apple, los SmartPhone de Microsoft y lo que queda todavía con Symbian. </p>
<p>¿Cual será la plataforma para dispositivos móviles dentro de 3 años?. Lo que utilicen los chinos. Y me da a mi que no va a ser ni el iPhone ni el Windows Mobile &#8230;</p>
<p>PD. Qt y KDE siguen como hasta el momento y sin previsión de cambio.</p>
<h4>Links</h4>
<ul>
<li><a href="http://trolltech.com/company/newsroom/announcements/press.2008-01-28.4605718236">Comunicado oficial de Trolltech</a></li>
<li><a href="http://www.nokia.com/A4136001?newsid=1185531">Comunicado oficial de Nokia</a></li>
<li><a href="http://code.google.com/android/">Google Android</a></li>
<li><a href="http://trolltech.com/products/qtopia">Qtopia</a></li>
<li><a href="http://en.wikipedia.org/wiki/Maemo">Maemo</a></li>
<li><a href="http://en.wikipedia.org/wiki/Greenphone">GreenPhone</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/01/28/nokia-piensa-adquirir-trolltech/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quickies</title>
		<link>http://quarkblog.org/2008/01/02/quickies/</link>
		<comments>http://quarkblog.org/2008/01/02/quickies/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 15:09:47 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2008/01/02/quickies/</guid>
		<description><![CDATA[Al más puro estilo Geek errante:
Formatea datos JSON online
Muchos desarrolladores prefieren JSON sobre XML sobre todo porque es más compacto y directamente interpretable por Javascript, pero depurar un stream de cierto tamaño es un dolor. JSON formatter permite dar un formato más legible a los datos.
Resolviendo sudokus con expresiones regulares
Este entra en la categoría: &#8220;tengo [...]]]></description>
			<content:encoded><![CDATA[<p>Al más puro estilo <a href="http://elgeekerrante.com/">Geek errante</a>:</p>
<h4>Formatea datos JSON online</h4>
<p>Muchos desarrolladores prefieren JSON sobre XML sobre todo porque es más compacto y directamente interpretable por Javascript, pero depurar un stream de cierto tamaño es un dolor. <a href="http://curiousconcept.com/jsonformatter/">JSON formatter</a> permite dar un formato más legible a los datos.</p>
<h4>Resolviendo sudokus con expresiones regulares</h4>
<p>Este entra en la categoría: &#8220;tengo toneladas de tiempo libre y una obsesión enfermiza por los autómatas finitos y los números&#8221;. Resulta curioso el mecanismo que utiliza para resolver el problema. <a href="http://n01senet.blogspot.com/2007/05/sudoku-by-regex.html">Sudoku by RegEx</a></p>
<h4>Programación en lenguaje natural orientado a eventos para Prototype</h4>
<p><a href="http://livepipe.net/projects/event_behavior/">Event.Behavior</a> es un lenguaje específico para describir y definir eventos en las aplicaciones JavaScript. Intenta aproximarse a cómo alguien describe un evento (en ingles) y permite extender el dominio con tus propios verbos. Las aplicaciones JavaScript se prestan especialmente a este tipo de programación.</p>
<h4>Analiza gráficamente tu música con Graphviz</h4>
<p><a href="http://www.graphviz.org/">Graphviz</a> es un programa GPL disponible de serie en todos los Unix que sirve para construir grafos a partir de una entrada que describe los nodos y sus conexiones.<br />
Un buen día a Kunal Anand, Ingeniero del Jet Propulsion Laboratory de la Nasa y blogger, se le ocurrió tomar como entrada la letra de varias canciones y generar grafos para analizarlos. El <a href="http://www.whatspop.com/blog/2006/11/glancing-alternative-song-structures.cfm">resultado</a> es peculiarmente bello, de ese tipo de sentimiento de belleza que sentían los griegos por el número áureo.</p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2008/01/02/quickies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mosquis, un generador de avatares &#8230;</title>
		<link>http://quarkblog.org/2007/07/23/vaya-un-generador-de-avatares/</link>
		<comments>http://quarkblog.org/2007/07/23/vaya-un-generador-de-avatares/#comments</comments>
		<pubDate>Mon, 23 Jul 2007 12:48:11 +0000</pubDate>
		<dc:creator>Moisés Maciá</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quarkblog.org/2007/07/23/vaya-un-generador-de-avatares/</guid>
		<description><![CDATA[
d&#8217;oh!!
]]></description>
			<content:encoded><![CDATA[<div class="center"><img src='http://quarkblog.org/wp-content/uploads/2007/07/simpsonizado.jpg' alt='simpsonizado.jpg' /></div>
<p><a href="http://www.simpsonsmovie.com">d&#8217;oh!!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://quarkblog.org/2007/07/23/vaya-un-generador-de-avatares/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.930 seconds -->
<!-- Cached page served by WP-Cache -->
