<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>alvarezp</title>
	<atom:link href="http://blog.alvarezp.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alvarezp.org</link>
	<description>cat &#62;&#62; /dev/blog</description>
	<lastBuildDate>Sun, 28 Feb 2010 08:16:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Se libera msn-pecan 0.1.0 de felipec</title>
		<link>http://blog.alvarezp.org/2010/02/27/se-libera-msn-pecan-0-1-0-de-felipec/</link>
		<comments>http://blog.alvarezp.org/2010/02/27/se-libera-msn-pecan-0-1-0-de-felipec/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 02:30:50 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Desarrollos]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=993</guid>
		<description><![CDATA[Esa es la noticia: se ha liberado msn-pecan 0.1.0! Y me da gusto.
Para citar (traducido) del post de felipec en su blog:

Después de un poco más de dos años de desarrollo, realmente nos orgullece anunciar la primera versión estable de msn-pecan. El proyecto comenzó como un &#8220;bifurcación&#8221; del protocolo msn de libpurple (lea más abajo [...]]]></description>
			<content:encoded><![CDATA[<p>Esa es la noticia: se ha liberado <a href="http://code.google.com/p/msn-pecan/">msn-pecan</a> 0.1.0! Y me da gusto.</p>
<p>Para citar (traducido) del <a href="http://felipec.wordpress.com/2010/02/27/msn-pecan-0-1-released-the-best-option-for-pidginlibpurple/">post</a> de felipec en su <a href="http://felipec.wordpress.com/">blog</a>:</p>
<blockquote><p>
Después de un poco más de dos años de desarrollo, realmente nos orgullece anunciar la primera versión estable de msn-pecan. El proyecto comenzó como un &#8220;bifurcación&#8221; del protocolo msn de libpurple (lea más abajo por qué no es realmente un bifurcación) pero ha crecido y pronto será una librería por sí misma, también con soporte para Telepathy.
</p></blockquote>
<p>Aunque puse sólo 3 de los 1009 parches y que no entiendo nada del código en sí, debo admitir que me siento parte del projecto.</p>
<p>Hace 7 años inicié un proyecto para escribir un cliente de MSN Messenger para Linux, en modo texto, basado en ncurses. El proyecto aún está registrado en Sourceforge como <a href="http://msnclient.sourceforge.net/">msnclient</a>. Fue mi primer intento de escribir <a href="http://es.wikipedia.org/wiki/Software_libre">software libre</a>. Sin embargo, el reto fue demasiado grande y el proyecto rápidamente se murió. Nunca llegué más allá de simplemente iniciar sesión y enviar mensajes de una sola palabra a otro contacto.</p>
<p>Eventualmente aprendí a usar Pidgin y conseguí buen hardware y la necesidad de un cliente personalizado de MSN ya no existía. Aún así creo que msnclient es un buen concepto para ser realizado. Tal vez algún día sea una interfaz basada en las funciones de msn-pecan.</p>
<p>Dicho eso, a mediados de 2009, cuando comencé a aprender Git, felipec me proveyó una rama de su repositorio para probar las conexiones directas (mejor conocidas como &#8220;transferencias rápidas&#8221; o &#8220;transferencias p2p&#8221;). No funcionaron en ese entonces.</p>
<p>6 meses y muchos commits sobre su master después: 0.1.0-rc1 salió y directconn aún no funcionaba pero la rama dc-test era ya muy vieja. Había aprendido más sobre Git y creí que era lo suficientemente mejor como para intentar corregir el problema de las conexiones directas. Sin embargo no sabía nada de la funcionalidad de MSN ni del código. Al menos sabía cuál era el primer paso: fuera lo que fuere había que hacer un rebase del código. Así que intenté rebasarlo para que las correcciones de la rama dc-test funcionaran bajo la nueva base de código; al menos sería útil para los desarrolladores. Así que la guerra estaba perdida para mí, pero tal vez felipec se podría motivar lo suficiente para continuar trabajando sobre esta parte de msn-pecan (pero se supone que uno no dice eso, cierto?). Así fue como ví las cosas y obtuve la motivación de hacerlo. Además, sería mi primer git rebase en el mundo real.</p>
<p>El principal problema fue que felipec había hecho muchos cambios de reorganización, renombrado y división de código en julio (algunos bien otros mal). Con un poco de experiencia en C, logré hacer el rebase y lo envié como un par de parches.</p>
<p>De repente felipec continuó trabajando arduamente sobre directconn. No sé si fueron los parches o no; eso es lo de menos. Lo importante es que en msn-pecan 0.1.0, las conexiones directas ya funcionan y de manera estable. Aunque no en todos los casos, es un gran avance.</p>
<p>Ahora creo que fue más allá de aprender a hacer un rebase: Realmente aprendí a <em>contribuir</em> usando Git, tal cual lo hacen los niños grandes en el proyecto del <a href="http://es.wikipedia.org/wiki/Linux_(núcleo)">Kernel Linux</a>. Aún no entiendo el código ni el funcionamiento interno del proyecto, pero esos dos parches me permitieron aprender mucho sobre colaboración y revisión de software. Esto fue particularmente útil para <a href="http://sourceforge.net/apps/mediawiki/superkb/">Superkb</a> que también está hecho en <a href="http://es.wikipedia.org/wiki/Lenguaje_de_programación_C">C</a> y su código fuente está manejado en <a href="http://git-scm.com/">Git</a>.</p>
<p>Así que, gracias nuevamente, felipec, felicidades y todos deberíamos tomarnos un trago por el proyecto, aunque estemos en diferentes partes del mundo. ¡A tirar fiesta y correr la voz!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/02/27/se-libera-msn-pecan-0-1-0-de-felipec/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>felipec&#8217;s msn-pecan 0.1.0 released</title>
		<link>http://blog.alvarezp.org/2010/02/27/felipecs-msn-pecan-0-1-0-released/</link>
		<comments>http://blog.alvarezp.org/2010/02/27/felipecs-msn-pecan-0-1-0-released/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 01:57:37 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Desarrollos]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=986</guid>
		<description><![CDATA[So that&#8217;s the news: msn-pecan 0.1.0 is released! And I&#8217;m glad.
To directly quote from Felipec&#8217;s post in his blog:

After a bit more than two years of development we are proud to announce the first stable release of msn-pecan. The project started as a “fork” of libpurple’s msn protocol (read below why it’s not really a [...]]]></description>
			<content:encoded><![CDATA[<p>So that&#8217;s the news: <a href="http://code.google.com/p/msn-pecan/">msn-pecan</a> 0.1.0 is released! And I&#8217;m glad.</p>
<p>To directly quote from Felipec&#8217;s <a href="http://felipec.wordpress.com/2010/02/27/msn-pecan-0-1-released-the-best-option-for-pidginlibpurple/">post</a> in his <a href="http://felipec.wordpress.com/">blog</a>:</p>
<blockquote><p>
After a bit more than two years of development we are proud to announce the first stable release of msn-pecan. The project started as a “fork” of libpurple’s msn protocol (read below why it’s not really a fork), but it has grown and soon will become a standalone library with support for Telepathy too.
</p></blockquote>
<p><span id="more-986"></span>Even though I have only 3 of the 1009 patches and although I don&#8217;t understand any of the code itself, I gotta admit I really feel like I&#8217;m part of the project.</p>
<p>7 years ago I started a project to write a text mode, ncurses-based MSN client for Linux. The project is still registered on Sourceforge as <a href="http://msnclient.sourceforge.net/">msnclient</a>. It was my first attempt at writing <a href="http://en.wikipedia.org/wiki/Free_software">free software</a>. However, the challenge was too much for me and the project quickly died. I never got further than logging in and sending a single-worded message to another contact.</p>
<p>I eventually started to learn how to use Pidgin and got my self good hardware and my need of a personalized MSN client was no more. I still think, however, that msnclient is a good concept to try to bring to life. Maybe some day it will be an interface based on the msn-pecan functions.</p>
<p>That said, in mid 2009, when I started learning Git, felipec provided me a branch from his repository to test the direct connection feature (better known as &#8220;fast file transfers&#8221; or &#8220;p2p file transfers&#8221;). It didn&#8217;t work that time.</p>
<p>6 months went by and lot of commits over his master branch were too. 0.1.0-rc1 came out and directconn was still not working but the dc-test branch was relly old now. I had learned enough about Git and I though that I was better enough to try fixing the DC code. However I really knew nothing about the MSN functionality and I really didn&#8217;t understand the code. Well, at least I knew what the first step was: I had to rebase it anyway. So I tried to bring that old branch to the new code base so it could be (at least) useful to the developers. So war was lost for me, but perhaps felipec would get encouraged enough to restart working over this part of msn-pecan (but you&#8217;re not supposed to say that, right?). That&#8217;s how I saw it and how I got my motivation to do it; also, I would be my first actual real-world git rebase.</p>
<p>The main problem was that felipec had done a lot of relevant code reorganization, renaming and splitting in July (some done good, some done badly). Using some C experience I managed to rebase it and sent it in as a couple of patches.</p>
<p>Suddenly, felipec continued work on directconn. I don&#8217;t know if it was because of the patches or not; that doesn&#8217;t matter. The important thing is that in msn-pecan 0.1.0, direct connections now work and are stable. Even if not in all cases, it is a great step.</p>
<p>Now I think it went beyond learning how to rebase: I actually learned how to <em>contribute</em> using Git, just like the big boys do in the <a href="http://www.kernel.org/">Linux Kernel</a> project. I still don&#8217;t understand the code and the inner workings of the project but those two patches allowed me to learn a lot about software collaboration and review. This was particularly helpful for <a href="http://sourceforge.net/apps/mediawiki/superkb/">Superkb</a> which is also written in <a href="http://en.wikipedia.org/wiki/C_(programming_language)">C</a> and its source code managed in <a href="http://git-scm.com/">Git</a>.</p>
<p>So, thanks again felipec, congratulations and we all should have a drink for the project, even if on different parts of the world! Let&#8217;s party and spread the word.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/02/27/felipecs-msn-pecan-0-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps Street View en Tijuana</title>
		<link>http://blog.alvarezp.org/2010/02/12/google-maps-street-view-en-tijuana/</link>
		<comments>http://blog.alvarezp.org/2010/02/12/google-maps-street-view-en-tijuana/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:45:22 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>
		<category><![CDATA[Tijuana]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=975</guid>
		<description><![CDATA[
Por azares del destino encontré que Google ya tiene una pizca de Tijuana lista en el Street View de Google Maps.
Al parecer alguien vio el carro en junio de 2009, se la pasó a algún amigo y éste lo blogueó! :-O
Actualización 1: La mejor foto que publicaron los de tijuanayo.com es la del vehículo de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><a href="http://blog.alvarezp.org/imagenes/gm-sv-tijuana/gm-st-tij.png"><img src="http://blog.alvarezp.org/imagenes/gm-sv-tijuana/gm-st-tij-480.png" alt="Google Maps, Street View, Tijuana, 2010-02-12" /></a></p>
<p>Por azares del destino encontré que Google ya tiene una pizca de Tijuana lista en el Street View de Google Maps.</p>
<p>Al parecer alguien <a href="http://www.tijuanayo.com/google-maps-street-view-en-tijuana/  ">vio el carro</a> en junio de 2009, se la pasó a algún amigo y éste lo blogueó! :-O</p>
<p><strong>Actualización 1: </strong>La mejor foto que publicaron los de <a href="http://www.tijuanayo.com/">tijuanayo.com</a> es la del <a href="http://www.tijuanayo.com/wp-content/gallery/google-maps-1/google-street-view-tijuana02.jpg">vehículo de Google siendo cuestionado por la policía</a>.</p>
<p><strong>Actualización 2: </strong>También en <a href="http://www.tijuanayo.com/">tijuanayo.com</a> observaron que ya está en línea e hicieron un <a href="http://www.tijuanayo.com/habilitan-parte-de-google-street-view-en-tijuana/">post</a> al respecto.</p>
<p>Grandioso ¿no? Ojalá pronto podamos tener el resto de los servicios. Particularmente, saber cómo llegar de A a B con optimizaciones, como en San Diego, pero específicas a la localidad. Estas son las optimizaciones que me imagino en Google Maps para Tijuana:
<ul>
<li>Usar sólo transporte público</li>
<li>Usar sólo automóvil</li>
<li>Evitar boulevares y aprovechar vías rápidas</li>
<li>Evitar tráfico (en tiempo real)</li>
<li>Evitar baches y charcos (en tiempo real)</li>
<li>Evitar balaceras (en tiempo real)</li>
<li>Parar por una gasolinera non-rata (en tiempo real?)</li>
<li>Evitar el tren (en tiempo real)</li>
</ul>
<p>:-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/02/12/google-maps-street-view-en-tijuana/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Video favorito: Saturday Morning Science</title>
		<link>http://blog.alvarezp.org/2010/01/30/video-favorito-saturday-morning-science/</link>
		<comments>http://blog.alvarezp.org/2010/01/30/video-favorito-saturday-morning-science/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 05:37:51 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=970</guid>
		<description><![CDATA[Justo cuando creí haberlo visto todo encuentro este video titulado Saturday Morning Science.
Es un video con los experimentos realizados por el Dr. Donald Pettit, astronauta, Ingeniero de Vuelo y Oficial de Ciencias de la expedición 6 a bordo de la Estación Espacial Internacional.
Según la página de Saturday Morning Science, &#8220;hasta en su tiempo libre, los [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=jXYlrw2JQwo"><img src="http://blog.alvarezp.org/imagenes/saturday-morning-science/saturday-morning-science.png" alt="Cristales crecidos en agua" class="float_left" /></a>Justo cuando creí haberlo visto todo encuentro este video titulado <a href="http://www.youtube.com/watch?v=jXYlrw2JQwo">Saturday Morning Science</a>.</p>
<p>Es un video con los experimentos realizados por el <a href="http://en.wikipedia.org/wiki/Donald_Pettit">Dr. Donald Pettit</a>, astronauta, Ingeniero de Vuelo y Oficial de Ciencias de la <a href="http://spaceflight.nasa.gov/station/crew/exp6/">expedición 6</a> a bordo de la <a href="http://es.wikipedia.org/wiki/Estación_Espacial_Internacional">Estación Espacial Internacional</a>.</p>
<p>Según la página de <a href="http://science.nasa.gov/headlines/y2003/25feb_nosoap.htm">Saturday Morning Science</a>, &#8220;hasta en su tiempo libre, los astronautas a bordo de la ISS están descubriendo cosas nuevas y sorprendentes sobre la naturaleza&#8221;. Según Don Pettit, estos experimentos no se tenían programados como parte de la misión; no eran ciencia &#8220;programada&#8221; sino ciencia &#8220;de oportunidad&#8221;.</p>
<p>Este video es un video crudo y directo al grano; tal vez sea una versión compilada; pero hay otras versiones en YouTube y la <a href="http://spaceflight.nasa.gov/gallery/video/station/expedition6/ndxpage1.html">galería de videos de la expedición</a> donde están editadas a modo de entrevista con un poco más de explicación.</p>
<p>Espero que los disfruten tanto como yo y se sorprendan tanto como los astronautas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/30/video-favorito-saturday-morning-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb estrena Wiki</title>
		<link>http://blog.alvarezp.org/2010/01/26/superkb-estrena-wiki/</link>
		<comments>http://blog.alvarezp.org/2010/01/26/superkb-estrena-wiki/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 09:40:05 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=964</guid>
		<description><![CDATA[Gracias a SourceForge y su implementación de MediaWiki, el proyecto Superkb cuenta con su propio Wiki.
Por el momento está sólo en inglés. Realmente tengo en la mira poner el equivalente en español.
Con esto será mucho más fácil mantener la documentación al día.
El Wiki de SourceForge no admite ediciones anónimas, así que es necesario contar con [...]]]></description>
			<content:encoded><![CDATA[<p>Gracias a <a href="http://www.sourceforge.net/">SourceForge</a> y su implementación de <a href="http://www.mediawiki.org/">MediaWiki</a>, el proyecto <a href="http://superkb.sourceforge.net/">Superkb</a> cuenta con su propio <a href="https://sourceforge.net/apps/mediawiki/superkb/">Wiki</a>.</p>
<p>Por el momento está sólo en inglés. Realmente tengo en la mira poner el equivalente en español.</p>
<p>Con esto será mucho más fácil mantener la documentación al día.</p>
<p>El Wiki de SourceForge no admite ediciones anónimas, así que es necesario contar con una cuenta de SourceForge para poder incluir a las personas en el grupo de edición.</p>
<p>Las sugerencias y contribuciones son bienvenidas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/26/superkb-estrena-wiki/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Superkb brand new Wiki</title>
		<link>http://blog.alvarezp.org/2010/01/26/superkb-brand-new-wiki/</link>
		<comments>http://blog.alvarezp.org/2010/01/26/superkb-brand-new-wiki/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 09:38:43 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=965</guid>
		<description><![CDATA[Thanks to SourceForge and its MediaWiki implementation, the Superkb project now has its own Wiki.
For now, it is only in English. I&#8217;m really looking forward to adding a full Spanish equivalent.
I think this will make it a lot easier to keep the documentation up to date.
The SourceForge Wiki doesn&#8217;t allow anonymous contributions, so an SF [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to <a href="http://www.sourceforge.net/">SourceForge</a> and its <a href="http://www.mediawiki.org/">MediaWiki</a> implementation, the <a href="http://superkb.sourceforge.net/">Superkb</a> project now has its own <a href="https://sourceforge.net/apps/mediawiki/superkb/">Wiki</a>.</p>
<p>For now, it is only in English. I&#8217;m really looking forward to adding a full Spanish equivalent.</p>
<p>I think this will make it a lot easier to keep the documentation up to date.</p>
<p>The SourceForge Wiki doesn&#8217;t allow anonymous contributions, so an SF account is needed to include the people in the editors group.</p>
<p>Suggestions and contributions are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/26/superkb-brand-new-wiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video favorito: Orquesta Juvenil Simón Bolívar</title>
		<link>http://blog.alvarezp.org/2010/01/24/video-favorito-orquesta-juvenil-simon-bolivar/</link>
		<comments>http://blog.alvarezp.org/2010/01/24/video-favorito-orquesta-juvenil-simon-bolivar/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 03:57:40 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Música]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/?p=191</guid>
		<description><![CDATA[Este video fue publicado como una TED Talk. Es una presentación de la Orquesta Sinfónica (Juvenil) Simón Bolívar, de Venezuela.
En este video interpretan dos piezas. Abren con el Segundo Movimiento de la Sinfonía No. 10 de Shostakóvich, después unas palabras del director Gustavo Dudamel y cierran con el Danzón No. 2 de Arturo Márquez.
A mí [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=amSqQ5XNaGE"><img src="http://blog.alvarezp.org/imagenes/orquesta-venezolana/orquesta-screenshot.png" alt="Orquesta Teresa Carreño" class="float_left" /></a>Este video fue publicado como una <a href="http://www.ted.com/">TED Talk</a>. Es una presentación de la <a href="http://es.wikipedia.org/wiki/Orquesta_Sinfónica_Simón_Bolívar">Orquesta Sinfónica (Juvenil) Simón Bolívar</a>, de Venezuela.</p>
<p>En este video interpretan dos piezas. Abren con el Segundo Movimiento de la Sinfonía No. 10 de <a href="http://es.wikipedia.org/wiki/Dmitri_Shostakóvich">Shostakóvich</a>, después unas palabras del director <a href="http://es.wikipedia.org/wiki/Gustavo_Dudamel">Gustavo Dudamel</a> y cierran con el Danzón No. 2 de <a href="http://es.wikipedia.org/wiki/Arturo_Márquez">Arturo Márquez</a>.</p>
<p>A mí me ha impactado la energía que proyectan estos jóvenes, así como del director, y lo disfrutan.</p>
<p>Lo demás que yo pudiera decir sobre la interpretación no tiene importancia. Escojan sus mejores bocinas y escuchen la música.</p>
<p>Enlace al video: <a href="http://www.youtube.com/watch?v=amSqQ5XNaGE">http://www.youtube.com/watch?v=amSqQ5XNaGE</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/24/video-favorito-orquesta-juvenil-simon-bolivar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Bridge</title>
		<link>http://blog.alvarezp.org/2010/01/18/debian-bridge/</link>
		<comments>http://blog.alvarezp.org/2010/01/18/debian-bridge/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 23:55:05 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Net-admin]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=958</guid>
		<description><![CDATA[/etc/network/interfaces:
auto br0
iface br0 net dhcp
   bridge_ports eth0 eth1
   bridge_stp off
   bridge_fd 3

]]></description>
			<content:encoded><![CDATA[<p>/etc/network/interfaces:</p>
<pre class="code"><code>auto br0
iface br0 net dhcp
   bridge_ports eth0 eth1
   bridge_stp off
   bridge_fd 3
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/18/debian-bridge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De Superkb, GCC pedante y portabilidad</title>
		<link>http://blog.alvarezp.org/2009/12/29/de-superkb-gcc-pedante-y-portabilidad/</link>
		<comments>http://blog.alvarezp.org/2009/12/29/de-superkb-gcc-pedante-y-portabilidad/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 09:47:41 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=943</guid>
		<description><![CDATA[Por fin se me hizo: cambiar el Makefile de Superkb para usar gcc -std=c99 -pedantic-errors en lugar de -std=gnu99.
Lo que me impedía hacerlo era que uso algunas extensiones de GNU, BSD o POSIX que no se encuentran en el estándar C.
Yo no sabía, pero basta con añadir la línea
#define _GNU_SOURCE

o, según el caso,
#define _POSIX_C_SOURCE 2

al [...]]]></description>
			<content:encoded><![CDATA[<p>Por fin se me hizo: cambiar el Makefile de Superkb para usar <code>gcc -std=c99 -pedantic-errors</code> en lugar de <code>-std=gnu99</code>.</p>
<p>Lo que me impedía hacerlo era que uso algunas extensiones de GNU, BSD o POSIX que no se encuentran en el estándar C.</p>
<p>Yo no sabía, pero basta con añadir la línea</p>
<pre class="code">#define _GNU_SOURCE
</pre>
<p>o, según el caso,</p>
<pre class="code">#define _POSIX_C_SOURCE 2
</pre>
<p>al principio del código fuente y glibc reconoce y habilita las funciones que hagan falta.</p>
<p>Esto es un paso hacia adelante, pues ahora ya puedo usar un simple &#8220;grep&#8221; para ver en qué archivos están &#8220;solicitando extensiones&#8221;.</p>
<p>Desafortunadamente aún falta bastante para llegar al ideal, pues sigo atado a las herramientas de GNU. Por ejemplo ¿qué pasa si trato de compilar sobre OpenSolaris? La última vez que lo intenté, resultó que el Makefile usa extensiones que dependen de gmake (una de ellas es el <code>include</code> no fatal). Pero si hubiera gmake, ¿compilaría?</p>
<p>Sólo hay una manera de saberlo&#8230; ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/29/de-superkb-gcc-pedante-y-portabilidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meaning of the default EIGRP metric</title>
		<link>http://blog.alvarezp.org/2009/12/26/meaning-of-the-default-eigrp-metric/</link>
		<comments>http://blog.alvarezp.org/2009/12/26/meaning-of-the-default-eigrp-metric/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 23:46:59 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Ensayos]]></category>
		<category><![CDATA[Net-admin]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=892</guid>
		<description><![CDATA[Introduction and motivation
I have always felt the EIGRP metric as being really overwhelming. I see values like &#8220;2820096&#8243; and instead of understanding it, I always end up asking what the hell does that number mean.
For example, in RIP:
R    192.168.0.0/24 [120/3] via 172.16.1.1, 00:00:15, FastEthernet0/0
Just by looking at the metric of &#8220;3&#8243; I [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction and motivation</h3>
<p>I have always felt the EIGRP metric as being really overwhelming. I see values like &#8220;2820096&#8243; and instead of understanding it, I always end up asking what the hell does that number mean.</p>
<p>For example, in RIP:</p>
<pre class="code">R    192.168.0.0/24 [120/3] via 172.16.1.1, 00:00:15, FastEthernet0/0</pre>
<p>Just by looking at the metric of &#8220;3&#8243; I immediately know what is means: there are three steps between the announced network and the router receiving the advertisement. Easy, right? &#8220;Understanding the number&#8221; makes it easy for me to manage and diagnose it.</p>
<p>In OSPF, the metric (cost) is still not as cumbersome as EIGRP&#8217;s. However, in the following example, can you identify what does &#8220;66&#8243; mean? For you, is it &#8220;just a number&#8221; that won over another because of its numerical value being lower? How do you know if the number is right or not?</p>
<pre class="code">O   192.168.0.0/24 [110/66] via 172.16.1.1, 00:00:82, FastEthernet0/0</pre>
<p><span id="more-892"></span>The EIGRP metric formula is better, functionally speaking. It is calculated from various components. As a result, it is more complex. Furthermore, the resulting value is bigger. When you try to read the number in the route table, it is no longer obvious.</p>
<pre class="code">D   192.168.0.0/24 [90/2820096] via 172.16.1.1, 00:00:12, FastEthernet0/0</pre>
<p>So, what does &#8220;2820096&#8243; mean? Well, it&#8217;s pretty simple. Take 2820096 and divide it by / 25600 and you get the estimated travel time in milliseconds: <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_fe151cd7ae1c16721ee58e661b8e7039.png" style="vertical-align:-16px; display: inline-block ;" alt="2820096 / 25600 = 110.16 ms" title="2820096 / 25600 = 110.16 ms"/>.</p>
<p>The EIGRP metric is an approach to calculating the total travel time. By default, EIGRP calculates the packet travel time like is: take the transmission delay in all hops in the path (the famous &#8220;delay&#8221; part) and &mdash;instead of adding all of the serialization delays&mdash; add only that of the bottleneck bandwidth for a 100 Kilobit sample.</p>
<p>The goal of this article is to show you how to mathematically get to that conclusion in the particular case of the default K values. This will allow the article to be much shorter and understandable, because the rest of the terms that compose the complete EIGRP metric are more complex and there is less on-line documentation reference for those. Also, Cisco doesn&#8217;t recommend changing the K values by default unless you REALLY know what you are doing. </p>
<p>Besides, we can get our engines started and warmed up for a later article with an analysis for the whole formula, don&#8217;t we?</p>
<h3>Step 0: Starting to think</h3>
<p>To put a &#8220;meaning&#8221; to this number, I will first ask you: if you designed your own &#8220;perfect&#8221; routing protocol, what would you use as a metric? What formula do you think would provide the routers with the best and closest to reality information in order to always take the most optimal routing decisions, at all times, and whatever the network circumstance is? It is not an easy question, though it is one that any protocol designer will never be able to escape. Think about this for a moment.</p>
<p>When I asked myself this question, my answer was: I think everybody wants the packets to get to its destination (unmodified, of course) as quickly as possible. I would like all participating routers to know the exact time it will take a packet to get to router B. Travel time should be used as *the* metric. In my &#8220;perfect&#8221; routing protocol, the metric would be measured in some submultiple of seconds. Even the Internet would be better if this were true, except that it&#8217;s way too expensive, complex, and difficult to manually control if done this way (that&#8217;s were BGP jumps in).</p>
<p>The EIGRP protocol gives it a shot at this approach.</p>
<h3>Quoting complete the EIGRP metric formula, by Cisco</h3>
<p>To analyze the default metric behavior I will start by quoting the complete EIGRP metric formula specified by Cisco<sup><a href="#reference-eigrp">1</a></sup>:</p>
<blockquote><p>
<img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_376332fb80739bec2be9c41ad7b2067c.png" style="vertical-align:-24px; display: inline-block ;" alt="metric = [K_1 * bandwidth + {K_2 * bandwidth} / {256 - load} + K_3 * delay] * [K_5 / {reliability + K_4}]" title="metric = [K_1 * bandwidth + {K_2 * bandwidth} / {256 - load} + K_3 * delay] * [K_5 / {reliability + K_4}]"/></p>
<p>where:</p>
<ul>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_975.5_9bcc4e08bbf462b3f4b8f108149384c3.png" style="vertical-align:-24.5px; display: inline-block ;" alt="bandwidth = (10000000/{bandwidth(i)}) * 256" title="bandwidth = (10000000/{bandwidth(i)}) * 256"/>
<ul>
<li>where <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_991.5_1b4e0643e2b5d0b450ed9295a7d72b7b.png" style="vertical-align:-8.5px; display: inline-block ;" alt="bandwidth(i)" title="bandwidth(i)"/> is the least bandwidth of all outgoing interfaces on the route to the destination network represented in kilobits.</li>
</ul>
</li>
<li> <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_991.5_d01af6959c23697d28dbd916d7fc0dd5.png" style="vertical-align:-8.5px; display: inline-block ;" alt="delay = delay(i) * 256" title="delay = delay(i) * 256"/>
<ul>
<li>where <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_991.5_52d54ae10289acdb87fdd551dcfcc9b4.png" style="vertical-align:-8.5px; display: inline-block ;" alt="delay(i)" title="delay(i)"/> is the sum of the delays configured on the interfaces, on the route to the destination network, in tens of microseconds. The delay as shown in the <strong>show ip eigrp topology</strong> or <strong>show interface commands</strong> is in microseconds, so you must divide by 10 before you use it in this formula. Throughout this paper, we use delay as it is configured and shown on the interface.</li>
</ul>
</li>
<li>If <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_1819bec75cb2651a6339e253b6f64f4e.png" style="vertical-align:-14.5px; display: inline-block ;" alt="K_5 = 0" title="K_5 = 0"/>, the formula reduces to <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_4046116e4ccf2fb30ba06d9403deb05a.png" style="vertical-align:-16px; display: inline-block ;" alt="metric = K_1 * bandwidth + {K_2 * bandwidth}/{256 - load} + K_3 * delay" title="metric = K_1 * bandwidth + {K_2 * bandwidth}/{256 - load} + K_3 * delay"/>.</li>
<li>Cisco routers do not perform floating point math, so at each stage in the calculation, you need to round down to the nearest integer to properly calculate the metrics.</li>
<li>The default values for K are:
<ul>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_4b70092d664a9159afb8d9a7a4592275.png" style="vertical-align:-14.5px; display: inline-block ;" alt="K_1 = 1" title="K_1 = 1"/></li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_43f3b406b35471fa55e9028cd602e28f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="K_2 = 0" title="K_2 = 0"/></li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_cb547fa56be176041412dea775eb0925.png" style="vertical-align:-14.5px; display: inline-block ;" alt="K_3 = 1" title="K_3 = 1"/></li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_f11f9ce463756e243c5f9ae7152f9147.png" style="vertical-align:-14.5px; display: inline-block ;" alt="K_4 = 0" title="K_4 = 0"/></li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_1819bec75cb2651a6339e253b6f64f4e.png" style="vertical-align:-14.5px; display: inline-block ;" alt="K_5 = 0" title="K_5 = 0"/></li>
</ul>
</li>
</ul>
<p>For default behavior, you can simplify the formula as follows:<br />
<img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_f4cd09b3e2eb252e11af7e5821191e64.png" style="vertical-align:-6.5px; display: inline-block ;" alt="metric = bandwidth + delay" title="metric = bandwidth + delay"/>
</p></blockquote>
<p>I found out that sentence to be a source of confusion for myself. Even the simplified, default-behavior metric formula is expressed in a way that assumes we can add apples and oranges, though this is impossible. Cisco wants us to add &#8220;bandwidth&#8221; with &#8220;delay&#8221;. So, how do they actually do it? How much is &#8220;10 bps + 10 s&#8221;?</p>
<h3>Step 1: Arranging the mathematical expression in its default K values</h3>
<p>Let&#8217;s try to state the formula in its default behavior. I will use the following symbols:</p>
<ul>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_e9b2ff641da23037adec56684fb7552b.png" style="vertical-align:-6.5px; display: inline-block ;" alt="M" title="M"/>: metric.</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_8acfe827853aff5217d7ef210177df96.png" style="vertical-align:-6.5px; display: inline-block ;" alt="B" title="B"/>: resulting scaled bandwidth.[/pmath]</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_71a27f48cb3f8458093be05225f435cd.png" style="vertical-align:-14.5px; display: inline-block ;" alt="B_min" title="B_min"/>: bandwidth(i), the least bandwidth of all outgoing interfaces on the route to the destination network represented in kilobits.</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_75b573a2a80f7d1f54f711b89d1a80fa.png" style="vertical-align:-6.5px; display: inline-block ;" alt="D" title="D"/>: resulting scaled delay.[/pmath]</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_990.5_e05eb093ab6836b9b83181a25baf2d22.png" style="vertical-align:-9.5px; display: inline-block ;" alt="sum{}{}{d}" title="sum{}{}{d}"/>: delay(i), the sum of the delays configured on the interfaces, on the route to the destination network, in tens of microseconds.</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_211bca6f8a55723b6c5c2ce4a5b504a1.png" style="vertical-align:-6.5px; display: inline-block ;" alt="10 * 10^6" title="10 * 10^6"/>: 1000000 (as in 10 Mega-something).</li>
</ul>
<p>Let&#8217;s arrange the formula in a way it really looks like a mathematical equation:</p>
<blockquote><p>
<img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_18f2f570d13dc9223d4ab667a0aea29e.png" style="vertical-align:-6.5px; display: inline-block ;" alt="M = B + D" title="M = B + D"/></p>
<p>where:</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_bd73bdd880261665cef62b6fa6ab5ece.png" style="vertical-align:-24px; display: inline-block ;" alt="B = 256 10 * 10^6 / {B_min}" title="B = 256 10 * 10^6 / {B_min}"/><br />
<img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_990.5_7bb547c14ef3d36efc09455c490fb9b2.png" style="vertical-align:-9.5px; display: inline-block ;" alt="D = 256 sum{}{}{d}" title="D = 256 sum{}{}{d}"/>
</p></blockquote>
<h3>Step 2: moving the &#8220;256&#8243; out of the way and getting to the original IGRP metric formula</h3>
<p>EIGRP metric is 256 times that of IGRP<sup><a href="#reference-256igrp">2</a></sup>. This is easily provable: as both, B and D are a multiple of 256, we can divide by it. The result is the exact original IGRP formula<a href="#reference-igrp">3</a>. (Though this is also true in the complete formula, please remember we are only working with the particular case of the default metric behavior.)</p>
<p>This means that the EIGRP metric will be always inflated and will be a multiple of 256.</p>
<p>Let&#8217;s do the procedure. First, lets get all into one big formula. Let&#8217;s replace B and D for their corresponding formulas:</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_322fb3711d461985bdb0bf3dea6093cb.png" style="vertical-align:-24px; display: inline-block ;" alt="M = 256 10 * 10^6 / {B_min} + 256 sum{}{}{d}" title="M = 256 10 * 10^6 / {B_min} + 256 sum{}{}{d}"/></p>
<p>There we can see how the 256 factor is present in the two terms. We could factor it out but for convenience I will divide everything by 256.</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_02cbf59d8580cbeee82cddecb181dacb.png" style="vertical-align:-24px; display: inline-block ;" alt="M / 256 = 10 * 10^6 / {B_min} + sum{}{}{d}" title="M / 256 = 10 * 10^6 / {B_min} + sum{}{}{d}"/></p>
<p>The right side is the default metric for IGRP.</p>
<h3>Step 3: Unit analysis and T<sub>3</sub></h3>
<p>Or put another way: what is the resulting value measured in, is it Kilobits, seconds, hops, packets&#8230;?</p>
<p>The last formula from step 2 has the following form:</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_96e184a0accbd2658cac3adb1b15a69b.png" style="vertical-align:-16px; display: inline-block ;" alt="{M / 256} = T_1 + T_3" title="{M / 256} = T_1 + T_3"/></p>
<p>where:</p>
<ul>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_e9b2ff641da23037adec56684fb7552b.png" style="vertical-align:-6.5px; display: inline-block ;" alt="M" title="M"/> (metric)</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_6d49a55de5600d1cb163574427c44646.png" style="vertical-align:-24px; display: inline-block ;" alt="T_1 = 10 * 10^6 / {B_min}" title="T_1 = 10 * 10^6 / {B_min}"/></li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_e9d964f9f2d7b111da97ee0432fd5c9c.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_3 = sum{}{}{d}" title="T_3 = sum{}{}{d}"/></li>
</ul>
<p>The terms <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_de8060c956be7be96980a5c3f6dec32f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1" title="T_1"/> and <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_da2d64dcacd2e1a44ec409563d302173.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_3" title="T_3"/> must have the same units. Otherwise, addition couldn&#8217;t be possible.</p>
<p>The easiest term to analyze is <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_da2d64dcacd2e1a44ec409563d302173.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_3" title="T_3"/>. According to Cisco <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_990.5_e05eb093ab6836b9b83181a25baf2d22.png" style="vertical-align:-9.5px; display: inline-block ;" alt="sum{}{}{d}" title="sum{}{}{d}"/> must be in tens of microsegundos. Therefore:</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_c6c4fe34d5cdaed3d40c7640e324cc3e.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_3: 10 {mu}s" title="T_3: 10 {mu}s"/></p>
<p>And thus, <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_de8060c956be7be96980a5c3f6dec32f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1" title="T_1"/> units (and therefore the whole M units) must be tens of microseconds, also.</p>
<p>So:</p>
<ul>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_1a813378d8f0b19ef674b959cf055ddb.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1: 10 {mu}s" title="T_1: 10 {mu}s"/> (time)</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_c6c4fe34d5cdaed3d40c7640e324cc3e.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_3: 10 {mu}s" title="T_3: 10 {mu}s"/> (time)</li>
<li><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_917e81831d91cdb10364f4760cae4f18.png" style="vertical-align:-6.5px; display: inline-block ;" alt="M: 10 {mu}s" title="M: 10 {mu}s"/> (time)</li>
</ul>
<p>So, given <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_da2d64dcacd2e1a44ec409563d302173.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_3" title="T_3"/> is a delay, the other term and the total metric must be a delay too in the same scale. Remember what I said at the beginning about using travel time as my &#8220;perfect&#8221; metric for a routing protocol? EIGRP is actually giving it a shot.</p>
<h3>Step 4: Analyzing T<sub>1</sub></h3>
<p>In step 3 we let <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_de8060c956be7be96980a5c3f6dec32f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1" title="T_1"/> be defined as:</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_6d49a55de5600d1cb163574427c44646.png" style="vertical-align:-24px; display: inline-block ;" alt="T_1 = 10 * 10^6 / {B_min}" title="T_1 = 10 * 10^6 / {B_min}"/></p>
<p>And also that <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_de8060c956be7be96980a5c3f6dec32f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1" title="T_1"/> must be in tens of microseconds.</p>
<p>We know the units for <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_de8060c956be7be96980a5c3f6dec32f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1" title="T_1"/> and <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_71a27f48cb3f8458093be05225f435cd.png" style="vertical-align:-14.5px; display: inline-block ;" alt="B_min" title="B_min"/>, but what are the units for <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_211bca6f8a55723b6c5c2ce4a5b504a1.png" style="vertical-align:-6.5px; display: inline-block ;" alt="10 * 10^6" title="10 * 10^6"/>?</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_965_c1ca2595f9564fb1856c5a61548d18d1.png" style="vertical-align:-35px; display: inline-block ;" alt="10 {mu}s = x / {kilobit/s} doubleleftright x = {10 {mu}s} {k bit/s} = {10 * 10^{-6} * 10^3 bit s}/s = 10 * 10^{-3} bit" title="10 {mu}s = x / {kilobit/s} doubleleftright x = {10 {mu}s} {k bit/s} = {10 * 10^{-6} * 10^3 bit s}/s = 10 * 10^{-3} bit"/>: tens of millibit</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_965_732c952d2ceb11ad919f69df31f9eee9.png" style="vertical-align:-35px; display: inline-block ;" alt="{10 milibit} / {k bit/s} = {10 * 10^{-3} bit} / {10^3 bit/s} = 10 / { 10^{-6} } s = 10 {mu}s" title="{10 milibit} / {k bit/s} = {10 * 10^{-3} bit} / {10^3 bit/s} = 10 / { 10^{-6} } s = 10 {mu}s"/></p>
<p>How many bits are <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_983_75c792bd251a7e3fc65f431249678344.png" style="vertical-align:-17px; display: inline-block ;" alt="(10 * 10^6) (10 milibit)" title="(10 * 10^6) (10 milibit)"/>?</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_983_2deed1e1f19940f9635e74e9bd26328b.png" style="vertical-align:-17px; display: inline-block ;" alt="(10 * 10^6) (10 milibit) = (10 * 10 * 10^6 * 10^-3 * bit) = 100 * 10^3 * bit = 100 Kilobit" title="(10 * 10^6) (10 milibit) = (10 * 10 * 10^6 * 10^-3 * bit) = 100 * 10^3 * bit = 100 Kilobit"/></p>
<p>So finally, <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_985.5_de8060c956be7be96980a5c3f6dec32f.png" style="vertical-align:-14.5px; display: inline-block ;" alt="T_1" title="T_1"/> is like this:</p>
<p><img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_af968d550ce51f252136ad603b26f6b3.png" style="vertical-align:-24px; display: inline-block ;" alt="T_1 = {100 Kbits} / B_min" title="T_1 = {100 Kbits} / B_min"/></p>
<p>Just like <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_af937e5c92408ab4d1624ac8667e1edc.png" style="vertical-align:-16px; display: inline-block ;" alt="time = distance / speed" title="time = distance / speed"/>, also <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_b63eb32e63a20751f9722ee340b0b408.png" style="vertical-align:-16px; display: inline-block ;" alt="serialization delay = bits / bandwidth" title="serialization delay = bits / bandwidth"/>, so <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_976_93c9ec332e889620893530bcd1014bc6.png" style="vertical-align:-24px; display: inline-block ;" alt="{100 Kbits} / {B_min}" title="{100 Kbits} / {B_min}"/> means &#8220;serialization delay for 100 Kbits under that bandwidth B<sub>min</sub>&#8220;.</p>
<h3>Conclusion and interpretation</h3>
<pre class="code">D   192.168.0.0/24 [90/2820096] via 172.16.1.1, 00:00:12, FastEthernet1/1</pre>
<p>We know that 2820096 is given in <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_2f6e8751c1a6a0c20a78e9dfdafaa287.png" style="vertical-align:-6.5px; display: inline-block ;" alt="10 {mu}s" title="10 {mu}s"/> and multiplied by 256.</p>
<p>So we take 2820096 / 256 = 11016.</p>
<p>To convert it to <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993.5_01127c284b667954cef2c9101fd8cb84.png" style="vertical-align:-6.5px; display: inline-block ;" alt="{mu}s" title="{mu}s"/> instead, divide the metric / 25.6: <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_ac1b6e974c7fefe2802e00ec168398fc.png" style="vertical-align:-16px; display: inline-block ;" alt="2820096 / 25.6 = 110160 {mu}s" title="2820096 / 25.6 = 110160 {mu}s"/></p>
<p>Or to milliseconds, divide it by / 25600: <img src="http://blog.alvarezp.org/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_984_fe151cd7ae1c16721ee58e661b8e7039.png" style="vertical-align:-16px; display: inline-block ;" alt="2820096 / 25600 = 110.16 ms" title="2820096 / 25600 = 110.16 ms"/></p>
<p>As I said, the EIGRP default metric is an approach to calculating the total travel time. By default, EIGRP calculates the packet travel time like is: take the transmission delay in all hops in the path (the famous &#8220;delay&#8221; part) and &mdash;instead of adding all of the serialization delays&mdash; add only that of the bottleneck bandwidth for a 100 Kilobit sample.</p>
<h3>References</h3>
<p id="reference-eigrp"><sup>1</sup> Cisco Document ID 16406, actualizado: Sep 09, 2005. Enhanced Interior Gateway Routing Protocol: http://www.cisco.com/en/US/tech/tk365/technologies_white_paper09186a0080094cb7.shtml</p>
<p id="reference-256igrp"><sup>2</sup> IP Routing, by Ravi Malhotra, January 2002. Chapter 4: Enhanced Interior Gateway Routing Protocol (EIGRP) http://oreilly.com/catalog/iprouting/chapter/ch04.html#45434</p>
<p id="reference-eigrp"><sup>3</sup> Cisco Document ID 13678, actualizado: Aug 10, 2005. IGRP Metric [IP Routing], http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a008009405c.shtml</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/26/meaning-of-the-default-eigrp-metric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Etiquette in e-mail message quoting</title>
		<link>http://blog.alvarezp.org/2009/12/24/etiquette-in-e-mail-message-quoting/</link>
		<comments>http://blog.alvarezp.org/2009/12/24/etiquette-in-e-mail-message-quoting/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 20:55:59 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=888</guid>
		<description><![CDATA[This is a translation of my previous post Etiqueta en el citado de mensajes de e-mail.
Introduction
The most ignored Internet Etiquette rule is that of the posting style when replying to an e-mail message.
By &#8220;quoting&#8221; I mean the inclusion of a previous message in a new one (for example, a reply) with the intent of stating [...]]]></description>
			<content:encoded><![CDATA[<p>This is a translation of my previous post <a href="http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/">Etiqueta en el citado de mensajes de e-mail</a>.</p>
<h3>Introduction</h3>
<p>The most ignored <a href="http://en.wikipedia.org/wiki/Netiquette">Internet Etiquette</a> rule is that of the <a href="http://en.wikipedia.org/wiki/Posting_style">posting style</a> when replying to an e-mail message.</p>
<p>By &#8220;quoting&#8221; I mean the inclusion of a previous message in a new one (for example, a reply) with the intent of stating the relevance of the answer itself in the original context. I would say &#8220;Dan, I don&#8217;t know what are you talking about. Please quote the original e-mail in your reply next time in order to know what were you replying to.&#8221;</p>
<p>Almost every <a href="http://en.wikipedia.org/wiki/Email_client">e-mail client</a> do quote the original message in the reply, at least by default. That is good, and it contributes to the &#8220;netiquette&#8221;, but its abuse has made it completely useless.</p>
<p><span id="more-888"></span>By saying that the rule is &#8220;ignored&#8221;, I mean that the common user doesn&#8217;t edit the text put by the e-mail client as the quote. It leaves the quoted message as is, simply ignoring the resulting text. After three iterations of the answer, the &#8220;original message&#8221; carries more garbage than relevant content.</p>
<p>Common e-mail clients &mdash;like Outlook y Thunderbird&mdash; don&#8217;t help either; those are pretty stupid. They quote whatever they find. Even when the original goal is to place the original message in the editor ready for its editing while replying, it is also true that signatures and those hideous legal disclaimers are stupidly included also.</p>
<p>Ok. Beyond the rant, the main purpose of this article is to show the current quoting and reply techniques, but more important, to yearn for a style / technique used more than 15 years ago, even before Internet started to be popular in the city where I live.</p>
<p>A correctly applied etiquette to an e-mail reply allows a well-organized message. This etiquette is mainly formed by two elements: (a) the correct placement of the answer in relation to the quoted message and (b) the correct editing of the quoted message.</p>
<h3>Reply text placement against the quoted text</h3>
<p>The best way to explain this is to mention the three different styles and the difference between them: top-posting, bottom-posting and interposting (or in-line posting). It refers to the placement of the answer before, after or inserted into the original text.</p>
<h5>Example A: top-posting</h5>
<blockquote><pre>
Yes, and I'm going to do it.

On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> Octavio:
>
> Is the maintenance window on next Thursday?
>
> Who's going to execute the changes?
>
> Regards.
>
> ---
> Hitsuo Tikashi.
> Infrastructure Services Manager.
> Integrated Systems, Inc.
> T. +1 (619) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<h5>Example B: bottom-posting</h5>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> Octavio:
>
> Is the maintenance window on next Thursday?
>
> Who's going to execute the changes?
>
> Regards.
>
> ---
> Hitsuo Tikashi.
> Infrastructure Services Manager.
> Integrated Systems, Inc.
> T. +1 (619) 555-1234
> E. hitsuo.tikashi@sistint.com.mx

Yes, and I'm going to do it.
</pre>
</blockquote>
<h5>Example C: interposting (or inline-posting)</h5>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> Octavio:
>
> Is the maintenance window on next Thursday?

Yes.

>
> Who's going to execute the changes?

I am.

> Regards.
>
> ---
> Hitsuo Tikashi.
> Infrastructure Services Manager.
> Integrated Systems, Inc.
> T. +1 (619) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<p>Which one do you think is the best? All of them has pros and cons, so the answer may be different in each environment. What do you think are the pros and cons of each?</p>
<p>For instance, In some mailing lists, top-posting is more than prohibited. Either you do bottom-posting or, better yet, interposting. This has been used since before the existence of e-mail as is known today.</p>
<p>However, in businesses and common use, the most popular style is top-posting, due to the easiness of just &#8220;writing and sending&#8221; without worrying for anything else; this has moved the MUAs (e-mail clients) to be configured for top-posting out of the box. This, in turn, makes it even more popular.</p>
<h3>Proper editing of the quoted text</h3>
<p>The last example of interposting made it easy to show how a great part of the reply text is just useless. It is considered that the quoted text is part of the reply, as it occupies disk space as part of the reply.</p>
<p>I&#8217;ll use that interposting example as the case to analyze, but the following applies to either of the three quoting styles.</p>
<p>From the word &#8220;regards&#8221; on, the text is irrelevant, and thus, useless. Maybe we could say that the line &#8220;Octavio:&#8221; is also irrelevant, but let us not be so picky at the moment. In numbers, 8 out of 21 lines (38%) are useless; so are 25 of the 59 words (42%); and so are 161 of the 373 characters (43%). We still have to take into account that mi reply signature is not there, so that will slightly lower those ratios.</p>
<h5>Example D: Proper quoting in top-posting</h5>
<blockquote><pre>
Yes, and I'm going to do it.

On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> Octavio:
>
> Is the maintenance window on next Thursday?
>
> Who's going to execute the changes?
>
</pre>
</blockquote>
<h5>Example E: Proper quoting in bottom-posting</h5>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> Octavio:
>
> Is the maintenance window on next Thursday?
>
> Who's going to execute the changes?
>

Yes, and I'm going to do it.
</pre>
</blockquote>
<h5>Example F: Proper quoting in interposting (or in-line posting)</h5>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> Octavio:
>
> Is the maintenance window on next Thursday?

Yes.

> Who's going to execute the changes?

I am.
</pre>
</blockquote>
<p>The main argument for not editing the quoted text would be that it takes a long time to do it and it is done inefficiently. At home, this is called &#8220;lazyness&#8221;.</p>
<p>This will be the argument for those that don&#8217;t know the keyboard shortcuts for text editing, in particular the use of the Shift key as a non-written standard to select text. Using Shift and the arrow keys, followed by &#8220;Delete&#8221;, is extremely easy to select and erase useless text.</p>
<h3>Yearning for Blue Wave and FidoNet</h3>
<p>Before going into user interfaces and mobile devices, I&#8217;d like to take a momento to show my yearning feeling for the times where I wrote in <a href="http://en.wikipedia.org/wiki/FidoNet">FidoNet</a>, even before the Internet started to be popular in Tijuana (1994 to 1996).</p>
<p>In FidoNet, it was common to do this a little different. I used a popular shareware named <a href="http://en.wikipedia.org/wiki/Blue_Wave">Blue Wave Offline Reader</a>. Many of us used Blue Wave, which had a particular way of preparing the quoted text before putting it into the editor:</p>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi said:
 HT> Octavio:
 HT>
 HT> Is the maintenance window on next Thursday?
 HT>
 HT> Who's going to execute the changes?
 HT>
 HT> Regards.
 HT>
 HT> ---
 HT> Hitsuo Tikashi.
 HT> Infrastructure Services Manager.
 HT> Integrated Systems, Inc.
 HT> T. +1 (619) 555-1234
 HT> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<p>The interesting thing is not in the inline replying. Same as today, a couple of Enters in the right place allowed me to reply in-line.</p>
<p>To erase from &#8220;Regards&#8221; on, still same as today: I place the cursor in the &#8220;R&#8221; from &#8220;Regards&#8221; and Shift+Ctrl+End, Delete and voilà: message is clean.</p>
<p>And so was my answer:</p>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi said:
 HT> Octavio:
 HT>
 HT> Is the maintenance window on next Thursday?

 Yes. Even thought the changes are not considered to be critical, in case
 of a possible failure we will affect our service level agreements,
 because less than 30 days ago our carriers suffered an outage.

 HT> Who's going to execute the changes?

 I am.
</pre>
</blockquote>
<p>What is really interesting is that when the original sender tried to reply me back, the text would be automatically adjusted to the line length (properly word wrapped) and quoted in the following way:</p>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Octavio Alvarez said:
 HT> Octavio:
 HT>
 HT> Is the maintenance window on next Thursday?
 OA>
 OA> Yes. Even thought the changes are not considered to be critial, in
 OA> case of a possible failure we will affect our service level
 OA> agreements, because less than 30 days ago our carriers suffered an
 OA> outage.

 Acknowledged. I leave it in your hands and keep me informed.

 HT> Who's going to execute the changes?
 OA>
 OA> I am.

 BTW, who will monitor and operate the services the next day?
</pre>
</blockquote>
<p>In the example, the user interleaved its answers to me.</p>
<p>Notice how the quoted lines don&#8217;t exactly match the original lines. those were modified intelligently, being considered as a paragraph and adjusted to keep a solid and consistent text block.</p>
<p>Also, notice how the text is clear enough and easy to follow; even more if the reader and editor software puts the different authors in different colors.</p>
<p>This style, beyond organized is scalable. After multiple iterations, the format and the text are kept organized.</p>
<blockquote><pre>
On Fri, Jun 26 2009 17:42:34 -0700, Octavio Alvarez said:
 HT> Octavio:
 HT>
 HT> Is the maintenance window on next Thursday?
 OA>
 OA> Yes. Even thought the changes are not considered to be critial, in
 OA> case of a possible failure we will affect our service level
 OA> agreements, because less than 30 days ago our carriers suffered an
 OA> outage.
 HT>
 HT> Acknowledged. I leave it in your hands and keep me informed.
 OA>
 OA> Ok, I'll send you an SMS, according to the procedure.

 And please send it to me via e-mail, also.

 HT> Who's going to execute the changes?
 OA>
 OA> I am.
 HT>
 HT> BTW, who will monitor and operate the services the next day?
 OA>
 OA> It would be the new team member, but we have already asked everyone
 OA> else to be alert and ready in case of any eventuality.

 Have you exchanged phone numbers yet?
</pre>
</blockquote>
<p>From my point of view, this is much more intelligent than its popular counterpart:</p>
<blockquote><pre>
On Mon, Jun 29 2009 17:42:34 -0700, Octavio Alvarez &lt;alvarezp@alvarezp.ods.org> said:
> On Sun, Jun 28 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> > On Sat, Jun 27 2009 17:42:34 -0700, Octavio Alvarez &lt;alvarezp@alvarezp.ods.org> said:
> > > On Fri, Jun 26 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> said:
> > > > Octavio:
> > > >
> > > > Is the maintenance window on next Thursday?
> > >
> > > Yes. Even thought the changes are not considered to be critial, in
> > > case of a possible failure we will affect our service level
> > > agreements, because less than 30 days ago our carriers suffered an
> > > outage.
> >
> > Acknowledged. I leave it in your hands and keep me informed.
>
> Ok, I'll send you an SMS, according to the procedure.

And please send it to me via e-mail, also.

> > > > Who's going to execute the changes?
> > >
> > > I am.
> >
> > BTW, who will monitor and operate the services the next day?
>
> It would be the new team member, but we have already asked everyone else
> to be alert and ready in case of any eventuality.

Have you exchanged phone numbers yet?
</pre>
</blockquote>
<p>This is the best the current e-mail practices can get us. It is not bad, but only if the authors and client software follow the etiquette.</p>
<p>If not, we get:</p>
<ul>
<li>Badly nested quoting prefixes like: > >> > >>> ></li>
<li>Badly split lines for exceeding a line length.</li>
<li>Fully quoted messages, including irrelevant paragraphs.</li>
<li>HTML garbage from improper tag handling.</li>
<li>Messages full of signatures and legal texts (sometimes in more than one language per message).</li>
</ul>
<p>Even though a message from an author that followed the etiquette is a lot better than what we see in a day-to-day basis, i feel it far from the comfort of working in the Blue Wave / FidoNet style.</p>
<h3>About user interfaces</h3>
<p>E-mail clients fail in promoting the etiquette culture in e-mail messaging.</p>
<p>I think there could be a signature detection mechanism and automatically exclude it from the quoted text. This would save us from getting three copies of the same bulk after three replies:</p>
<blockquote><pre>
> ---
> Hitsuo Tikashi.
> Infrastructure Services Manager.
> Integrated Systems, Inc.
> T. +1 (619) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
>
> The content of this e-mail message and its attachments is confidential
> and may be protected by Copyright law. It is intended exclusively to the
> addressees and them only. If you have received it by mistake, you must
> eliminate it from your system. In this case you are not allowed to copy,
> print or distribute this e-mail or its attachments nor use them for any
> purpose of allowing its contents to be known by any person. The here
> included information is not necesarily backed up by [CORPORATION NAME]
> or any of its subsidiaries or strategic alliances.
>
> Please consider the environment before printing this message.
</pre>
</blockquote>
<p>Note: I&#8217;ve seen that last line in some messages. I included it because I just couldn&#8217;t help myself from using my poor sarcasm after seeing that call for the ecology right after that waste of electricity and disk space (that is usually in HTML format).</p>
<h3>Mobile devices</h3>
<p>In a 160&#215;320 screen and an itsy bitsy teenie weenie keyboard one could argue that is difficult to do all of this editing in a practical way. However, in the same way new mobile devices present the user an appropriate interface to do other common tasks in a different way, it is the UI that holds how easy or impossible the editing would be.</p>
<p>If in-line posting were popular, a mobile device would have a function or command to &#8220;answer below this paragraph&#8221; or &#8220;navigate by paragraph&#8221; and choose &#8220;reply, leave or snip&#8221; each of them and maybe even an option to &#8220;erase the rest of the text&#8221;.</p>
<p>If the UI doesn&#8217;t have it, it is because in-line posting has not been that popular and not requested enough. It is still a deficiency, though.</p>
<h3>Conclusions</h3>
<p>I&#8217;ve tried to show show the style in example F is the most organized and scalable among all possible, based on previous experience from Blue Wave and FidoNet.</p>
<p>Personally, I try to go with the same style that most of the people use in the same context. It&#8217;s the best. A people replying with interposting in a mailing list where everybody top-post (for example, at work) will only confuse for everybody.</p>
<p>I have nothing else to say than to throw a call to those that participate in discussion groups, mailing lists (and, in particular those in technical areas) that at least we observe this etiquette guides among ourselves:</p>
<ul>
<li>Reply in line to the topics in the original answer.</li>
<li>Eliminate irrelevant parts of the quoted message. Signatures and legal texts in particular.</li>
<li>Rearrange illegible paragraphs (word wrapping, for example).</li>
<li>Use correct spelling and grammar.</li>
<li>Back our text up with emoticons if confusion might arise.</li>
</ul>
<p>Thank for the patience to read all the way to here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/24/etiquette-in-e-mail-message-quoting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operación contraintuitiva de &#8220;patch&#8221;</title>
		<link>http://blog.alvarezp.org/2009/12/22/operacion-contraintuitiva-de-patch/</link>
		<comments>http://blog.alvarezp.org/2009/12/22/operacion-contraintuitiva-de-patch/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 18:52:39 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Queja]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=880</guid>
		<description><![CDATA[Este es un ejemplo de lo que NO se debe hacer al diseñar un software.
[Sun Dec 20 14:37:42 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 24
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.bak
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.c
-rw-r--r-- 1 alvarezp alvarezp 7232 Dec 20 14:37 slpcall.c.2

[Sun Dec 20 14:37:43 -0800 -- alvarezp@octavio:~/patch-test]
$ diff [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un ejemplo de lo que NO se debe hacer al diseñar un software.</p>
<pre class="code">[Sun Dec 20 14:37:42 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 24
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.bak
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.c
-rw-r--r-- 1 alvarezp alvarezp 7232 Dec 20 14:37 slpcall.c.2

[Sun Dec 20 14:37:43 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u slpcall.c slpcall.c.2 > p

[Sun Dec 20 14:37:57 -0800 -- alvarezp@octavio:~/patch-test]
$ cat p
--- slpcall.c	2009-12-20 14:37:36.000000000 -0800
+++ slpcall.c.2	2009-12-20 14:37:36.000000000 -0800
@@ -66,6 +66,11 @@

 	slpcall->slplink = slplink;

+	slpcall->wait_for_socket = FALSE;
+	slpcall->xfer = NULL;
+	slpcall->dc = NULL;
+	slpcall->branch = NULL;
+
 	msn_slplink_add_slpcall(slplink, slpcall);

 	slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall);

[Sun Dec 20 14:38:00 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u slpcall.bak slpcall.c # .bak is a backup of original

[Sun Dec 20 14:38:19 -0800 -- alvarezp@octavio:~/patch-test]
$ patch < p
patching file slpcall.c
</pre>
<p>Hasta aquí, todo bien.</p>
</pre>
<pre class="code">[Sun Dec 20 14:38:53 -0800 -- alvarezp@octavio:~/patch-test]
$ cp slpcall.bak slpcall.c

[Sun Dec 20 14:39:02 -0800 -- alvarezp@octavio:~/patch-test]
$ mkdir x

[Sun Dec 20 14:39:04 -0800 -- alvarezp@octavio:~/patch-test]
$ mv slpcall* x/

[Sun Dec 20 14:39:06 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 8
-rw-r--r-- 1 alvarezp alvarezp  410 Dec 20 14:37 p
drwxr-xr-x 2 alvarezp alvarezp 4096 Dec 20 14:39 x

[Sun Dec 20 14:39:08 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u x/slpcall.c x/slpcall.c.2 > px

[Sun Dec 20 14:39:20 -0800 -- alvarezp@octavio:~/patch-test]
$ cat px
--- x/slpcall.c	2009-12-20 14:39:02.000000000 -0800
+++ x/slpcall.c.2	2009-12-20 14:37:36.000000000 -0800
@@ -66,6 +66,11 @@

 	slpcall->slplink = slplink;

+	slpcall->wait_for_socket = FALSE;
+	slpcall->xfer = NULL;
+	slpcall->dc = NULL;
+	slpcall->branch = NULL;
+
 	msn_slplink_add_slpcall(slplink, slpcall);

 	slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall);

[Sun Dec 20 14:39:22 -0800 -- alvarezp@octavio:~/patch-test]
$ patch < px
patching file slpcall.c.2
Hunk #1 FAILED at 66.
1 out of 1 hunk FAILED -- saving rejects to file slpcall.c.2.rej
</pre>
<p>¿La solución?</p>
</pre>
<pre class="code">
patch -p0 < px
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/22/operacion-contraintuitiva-de-patch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Etiqueta en el citado de mensajes de e-mail</title>
		<link>http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/</link>
		<comments>http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 07:47:16 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Ensayos]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Queja]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=858</guid>
		<description><![CDATA[Introducción
Una regla de etiqueta en Internet muy ignorada es la del citado de mensajes al contestar un correo electrónico.
Al hablar de &#8220;citado&#8221; me refiero a la inclusión de un mensaje anterior dentro de uno nuevo (una respuesta, por ejemplo) con el objetivo de mantener la relevancia de la respuesta dentro del contexto original. Es decir, [...]]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>Una regla de <a href="http://es.wikipedia.org/wiki/Netiquette">etiqueta en Internet</a> muy ignorada es la del <a href="http://es.wikipedia.org/wiki/Top-posting">citado de mensajes</a> al contestar un correo electrónico.</p>
<p>Al hablar de &#8220;citado&#8221; me refiero a la inclusión de un mensaje anterior dentro de uno nuevo (una respuesta, por ejemplo) con el objetivo de mantener la relevancia de la respuesta dentro del contexto original. Es decir, le diría a alguien: &#8220;Javier, no sé de qué hablas. La próxima vez cita en tu respuesta el mensaje original para saber a qué estás contestando.&#8221;</p>
<p>Prácticamente todos los <a href="http://es.wikipedia.org/wiki/Cliente_de_correo_electrónico">clientes de correo electrónico</a> citan el mensaje que es objeto de respuesta, al menos por defecto. Eso es bueno y contribuye con la etiqueta, pero ha desencadenado un abuso de esta regla que la vuelve totalmente inútil.</p>
<p>Al decir que la regla es &#8220;ignorada&#8221;, me refiero a que el usuario común no edita el texto citado por el cliente de correo. Deja que su programa cite el mensaje original ignorando el texto resultante. Después de 3 iteraciones de respuesta, el &#8220;mensaje original&#8221; contiene más basura que contenido relevante.</p>
<p>Y los clientes de correo electrónico &mdash;como Outlook y Thunderbird&mdash; tampoco ayudan; son demasiado tontos. Citan lo que se encuentran. Si bien, el propósito es dejarte el mensaje original listo para su *edición* durante la respuesta, lo cierto es que incluyen hasta las firmas y los legales odiosos.</p>
<p>Bien, más allá de la queja, el propósito de este artículo es mostrar las técnicas de citado y respuesta existentes, pero sobre todo, expresar mi añoranza por un estilo que usaba hace 15 años, incluso antes de la proliferación de Internet en esta ciudad.</p>
<p>La etiqueta bien aplicada a una respuesta o forward de correo electrónico permite un mensaje relativamente organizado y se compone de dos elementos: (a) la correcta colocación de la respuesta en relación al mensaje citado y (b) la correcta edición del mensaje citado.</p>
<h3>Colocación de la respuesta en relación al mensaje citado</h3>
<p>La mejor manera de explicar lo que es, es mencionando los tres diferentes estilos y la diferencia entre ellos: publicación superior (top-posting), inferior (bottom-posting) e intercalado (interposting or inline-posting). Corresponde a colocar la respuesta arriba del mensaje original, abajo, o intercalando las respuestas a los diferentes temas del texto.</p>
<h5>Ejemplo A: publicación superior (top-posting)</h5>
<blockquote><pre>
Sí y la voy a realizar yo.

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<h5>Ejemplo B: publicación inferior (bottom-posting)</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx

Sí y la voy a realizar yo.
</pre>
</blockquote>
<h5> Ejemplo C: respuestas intercaladas (inline-posting)</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?

Sí.

>
> Quién la va a realizar?

Yo.

> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<p>¿Cuál consideran que es mejor? La respuesta puede variar según el entorno, pues tienen pros y contras. ¿Cuáles consideras que son los pros y contras de cada uno?</p>
<p>En las listas de correo, por ejemplo, el escrito superior está más que prohibido, a favor del escrito inferior (o mejor aún, el intercalado). Este se ha venido manejando incluso desde antes de la existencia del &#8220;correo electrónico&#8221; como se conoce hoy en día.</p>
<p>Sin embargo, en los negocios y el uso común, lo más popular es el estilo &#8220;superior&#8221;, debido a que es más fácil &#8220;escribir y mandar&#8221; sin preocuparse por más; esto ha llevado a que los clientes de correo electrónico más populares vengan preconfigurados de esa manera, lo que a su vez lo populariza aún más.</p>
<h3>Correcta edición del mensaje citado</h3>
<p>El ejemplo anterior de mensaje intercalado deja al descubierto la inutilidad de una gran parte del texto de respuesta. Se considera que el texto citado forma parte de la respuesta, pues pertenece al mismo mensaje y ocupa espacio en disco como parte de la misma.</p>
<p>Tomaré el ejemplo de intercalado expuesto arriba como caso de análisis, pero esto aplica a cualquiera de los tres estilos de colocación de respuesta.</p>
<p>A partir de la palabra &#8220;saludos&#8221; es texto irrelevante (y por ende, inútil). Tal vez podríamos argumentar que la línea &#8220;Octavio:&#8221; también es texto irrelevante, pero no seamos tan quisquillosos en este momento. En números, son inútiles 8 de 21 líneas (38%); 25 de 59 palabras (42%); 161 de 373 caracteres (43%). Hay que considerar que falta mi propia firma, lo cual disminuirá ligeramente estos porcentajes.</p>
<h5>Ejemplo D: Correcto citado en publicación superior</h5>
<blockquote><pre>
Sí y lo voy a realizar yo.

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
</pre>
</blockquote>
<h5>Ejemplo E: Correcto citado en publicación inferior</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>

Sí y lo voy a realizar yo.
</pre>
</blockquote>
<h5>Ejemplo F: Correcto citado en publicación intercalada.</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?

Sí.

> Quién la va a realizar?

Yo.
</pre>
</blockquote>
<p>El argumento principal para no editar el texto podría ser que es muy ineficiente y tardado hacerlo. Lo que en mi barrio le llamamos &#8220;hueva&#8221;. </p>
<p>Este será el argumento que den aquellas personas que no conozcan los atajos de teclado para edición, en particular el uso de la tecla Shift como un estándar no escrito para marcar texto. Usando Shift y las flechas seguido de la tecla &#8220;Delete&#8221;, es sumamente fácil marcar y eliminar texto inútil.</p>
<h3>Añorando Blue Wave y FidoNet</h3>
<p>Antes de tocar el tema de las interfaces de usuario y los dispositivos móviles, me tomaré un momento para externar mi más sincera añoranza por los tiempos en los que escribía en <a href="http://es.wikipedia.org/wiki/FidoNet">FidoNet</a>, antes de la presencia popular de Internet en Tijuana (1994 a 1996).</p>
<p>En FidoNet, la costumbre era un tanto distinta. En ese entonces usaba un shareware popular llamado <a href="http://en.wikipedia.org/wiki/Blue_Wave">Blue Wave Offline Reader</a>. Muchos usábamos Blue Wave, que tenía un estilo especial de preparar el citado antes de enviarlo a edición:</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 HT>
 HT> Quién la va a realizar?
 HT>
 HT> Saludos.
 HT>
 HT> ---
 HT> Hitsuo Tikashi.
 HT> Coord. de Servicios de Infraestructura.
 HT> Sistemas Integrados.
 HT> T. +52 (664) 555-1234
 HT> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<p>Lo interesante no está en el intercalado, pues entonces como hoy, con un par de Enters tenía una respuesta intercalada.</p>
<p>Y para borrar a partir de &#8220;Saludos&#8221;, tal como hoy: me coloco en la letra &#8220;S&#8221; de &#8220;Saludos&#8221; y en dos pasos: Shift+Ctrl+End, Delete, y listo: mensaje limpio.</p>
<p>Y entonces yo contestaba:</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?

 Así es. Aunque el mantenimiento no está considerado de carácter crítico,
 en caso de posible falla afectaremos los acuerdos de nivel de servicio,
 pues hace menos de 30 días hubo otra falla por parte de nuestros
 proveedores.

 HT> Quién la va a realizar?

 Yo.
</pre>
</blockquote>
<p>Lo realmente interesante es que cuando el susodicho remitente intentara contracontestar mi respuesta, el texto era automáticamente ajustado a la longitud de la línea y citado de la siguiente manera:</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Octavio Alvarez dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 OA>
 OA> Así es. Aunque el mantenimiento no está considerado de carácter
 OA> crítico, en caso de posible falla afectaremos los acuerdos de
 OA> nivel de servicio, pues hace menos de 30 días hubo otra falla por
 OA> parte de nuestros proveedores.

 Enterado. Te encargo el changarro y mantenme informado.

 HT> Quién la va a realizar?
 OA>
 OA> Yo.

 ¿Quién estará monitoreando los servicio al siguiente día?
</pre>
</blockquote>
<p>En el ejemplo, el usuario ya intercaló su respuesta hacia mí.</p>
<p>Puede apreciarse cómo las líneas del texto no corresponden a las líneas originales: fueron modificadas inteligentemente, siendo consideradas como un párrafo y ajustadas para mantener un bloque sólido y consistente de texto.</p>
<p>Puede verse cómo el texto es sumamente claro y fácil de seguir; aún más, si el lector y el editor se encargaban de poner en diferentes colores a los diferentes autores.</p>
<p>Este estilo, además de ordenado es escalable. Después de múltiples iteraciones, el texto y el formato se mantienen en orden.</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Octavio Alvarez dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 OA>
 OA> Así es. Aunque el mantenimiento no está considerado de carácter
 OA> crítico, en caso de posible falla afectaremos los acuerdos de
 OA> nivel de servicio, pues hace menos de 30 días hubo otra falla por
 OA> parte de nuestros proveedores.
 HT>
 HT> Enterado. Te encargo el changarro y mantenme informado.
 OA>
 OA> Ok. Le enviaré un mensaje a su celular, según el procedimiento.

 Y además mándamelo por correo, por favor.

 HT> Quién la va a realizar?
 OA>
 OA> Yo.
 HT>
 HT> ¿Quién estará monitoreando los servicio al siguiente día?
 OA>
 OA> Estará el compañero nuevo, pero ya hablé con los demás para que
 OA> estén al pendiente de caulqueir eventualidad.

 ¿Ya intercambiaron números de teléfono?
</pre>
</blockquote>
<p>Desde mi punto de vista esto es mucho más inteligente que su popularizada contraparte:</p>
<blockquote><pre>
El Lun, 29 Jun 2009 17:42:34 -0700, Octavio Alvarez &lt;alvarezp@alvarezp.ods.org> dijo:
> El Dom, 28 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> > El Sab, 27 Jun 2009 17:42:34 -0700, Octavio Alvarez &lt;alvarezp@alvarezp.ods.org> dijo:
> > > El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> > > > Octavio:
> > > >
> > > > El mantenimiento es la madrugada del próximo jueves?
> > >
> > > Así es. Aunque el mantenimiento no está considerado de carácter
> > > crítico, en caso de posible falla afectaremos los acuerdos de
> > > nivel de servicio, pues hace menos de 30 días hubo otra falla por
> > > parte de nuestros proveedores.
> >
> > Enterado. Te encargo el changarro y mantenme informado.
>
> Ok. Le enviaré un mensaje a su celular, según el procedimiento.

Y además mándamelo por correo, por favor.

> > > > Quién la va a realizar?
> > >
> > > Yo.
> >
> > ¿Quién estará monitoreando los servicio al siguiente día?
>
> Estará el compañero nuevo, pero ya hablé con los demás para que estén
> al pendiente de caulqueir eventualidad.

¿Ya intercambiaron números de teléfono?
</pre>
</blockquote>
<p>Esto es lo mejor que un mensaje de correo electrónico puede dar. No está tan mal, asumiendo que el autor haya seguido la etiqueta.</p>
<p>De no ser así, nos encontramos con:</p>
<ul>
<li>Prefijos de cita como el siguiente: > >> > >>> ></li>
<li>Líneas partidas por exceder una cierta longitud.</li>
<li>Mensajes citados en su totalidad, incluyendo párrafos irrelevantes.</li>
<li>Mensajes llenos de firmas y bloques de textos de información legal (a veces en dos idiomas por mensaje).</li>
</ul>
<p>Aunque mejor que lo que se ve día a día, dista mucho de la comodidad de trabajar con el estilo de Blue Wave / FidoNet.</p>
<h3>De interfaces de usuario</h3>
<p>Los clientes de correo electrónico son realmente deficientes en promover la cultura de la etiqueta en el correo electrónico.</p>
<p>Considero que podría existir un mecanismo en los clientes de correo electrónico para detectar la firma del remitente y excluirla del mensaje citado. Esto ahorraría que después de tres respuestas, la respuesta contuviera tres copias del mismo rollo:</p>
<blockquote><pre>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
>
> El contenido de este mensaje de correo, así como sus anexos pueden ser
> confidenciales y estar protegidos por derechos de autor. Están dirigidos
> única y exclusivamente para uso de el (los) destinatario(s). Si Usted
> lo ha recibido por error debe destruirlo de su sistema. No se permite
> copiar, ni imprimir, ni distribuir este correo o sus anexos, ni usarlos
> para propósito alguno ni dar a conocer su contenido a persona alguna.
> La información aquí contenida no necesariamente refleja la opinión
> o postura de [NOMBRE DE LA EMPRESA] ni sus subsidiarias, afiliadas
> o alianzas.
>
> Por favor piense en el planeta antes de imprimir este mensaje.
</pre>
</blockquote>
<p>(Nota: la última línea la he visto en algunos mensajes de correo y la he incluído sólo porque al imaginarme ese llamado a la ecología al lado de ese derroche de energía eléctrica y espacio en disco que suele estar en HTML, no puedo evitar contener mi deficiente sentido del sarcasmo.)</p>
<h3>Los dispositivos móviles</h3>
<p>En una pantalla de 160&#215;320 y un teclado miniatura uno podría argumentar que es difícil realizar toda esta edición de mensaje de forma práctica. Sin embargo, del mismo modo en el que los dispositivos móviles presentan al usuario interfaces apropiadas para realizar otras tareas, es en la interfaz donde radica la facilidad o dificulad de realizar estas ediciones.</p>
<p>De ser popular el intercalado, un dispositivo móvil contaría con una función para &#8220;contestar el siguiente bloque o párrafo&#8221; o tal vez para &#8220;navegar por párrafo&#8221; y escoger &#8220;contestar&#8221;, &#8220;dejar&#8221; o &#8220;eliminar&#8221; cada uno de ellos hasta una opción para &#8220;borrar el resto del texto&#8221;.</p>
<p>Si la interfaz no lo contiene, es porque el intercalado no fue lo suficientemente popular y hoy en día no se demanda lo suficiente.</p>
<h3>Conclusiones</h3>
<p>He tratado de mostrar cómo el estilo del ejemplo F es el más ordenado, organizado y escalable de todos, basado en la experiencia previa de Blue Wave y FidoNet.</p>
<p>Personalmente, trato de respetar el estilo que la mayoría de la población utilice en un contexto dado. Es lo mejor. Una persona que contesta con intercalado en una lista donde todos contestan arriba del mensaje original (por ejemplo, en el trabajo) sólo provocaría confusión para todos.</p>
<p>No me queda más que hacer el llamado a quienes participan en grupos de discusión, listas de correo (en especial a los de áreas más técnicas) que al menos entre nosotros mismos sigamos estas reglas de etiqueta:</p>
<ul>
<li>Intercalar nuestras respuestas en el mensaje original.</li>
<li>Eliminar las partes irrelevantes del mensaje citado, en especial firmas y párrafos legales.</li>
<li>Reacomodar los párrafos que se vuelvan ilegibles.</li>
<li>Evitar <a href="http://blog.alvarezp.org/2007/04/06/vicios-de-escritura/">vicios de escritura</a>.</li>
<li>Apoyar nuestro texto con los emoticones en caso de que pudiera prestarse a confusión.</li>
</ul>
<p>Gracias por la paciencia de leer hasta aquí.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Remplazo interactivo en vim</title>
		<link>http://blog.alvarezp.org/2009/12/08/remplazo-interactivo-en-vim/</link>
		<comments>http://blog.alvarezp.org/2009/12/08/remplazo-interactivo-en-vim/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 08:47:11 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notas]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=853</guid>
		<description><![CDATA[Una nota rápida para que no se me olvide la siguiente vez.
Para remplazar texto en vim, confirmando cada remplazo, basta con agregar la opción &#8220;c&#8221; al comando &#8220;s&#8221;.
Si nuestro comando original era %s/viejo/nuevo/g entonces se usa %s/viejo/nuevo/gc.
Cada posible remplazo se sombrea y vim solicita confirmación con las siguientes opciones:
y = yes, remplazar el texto sombreado.
n [...]]]></description>
			<content:encoded><![CDATA[<p>Una nota rápida para que no se me olvide la siguiente vez.</p>
<p>Para remplazar texto en vim, confirmando cada remplazo, basta con agregar la opción &#8220;c&#8221; al comando &#8220;s&#8221;.</p>
<p>Si nuestro comando original era <code>%s/viejo/nuevo/g</code> entonces se usa <code>%s/viejo/nuevo/gc</code>.</p>
<p>Cada posible remplazo se sombrea y vim solicita confirmación con las siguientes opciones:</p>
<p>y = yes, remplazar el texto sombreado.<br />
n = no, ignorar el texto sombreado.<br />
a = all, siempre sí remplazar todo.<br />
l = last, cambiar el actual y terminar.<br />
q = quit, ignorar el actual y terminar.<br />
^E = desplazar el texto hacia adelante (para ver más texto).<br />
^Y = desplazar el texto hacia atrás.</p>
<p>Fuente:<br />
<a href="http://www.linux.com/learn/tutorials/8255-vim-tips-the-basics-of-search-and-replace">Vim tips: The basics of search and replace</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/08/remplazo-interactivo-en-vim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Superkb 0.20</title>
		<link>http://blog.alvarezp.org/2009/11/20/superkb-0-20/</link>
		<comments>http://blog.alvarezp.org/2009/11/20/superkb-0-20/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 07:44:19 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=844</guid>
		<description><![CDATA[Ha habido mucho trabajo en esta versión y lo más notable es el soporte para pintar el teclado usando Cairo.
Cualquier falla que encuentren, por favor levanten un bug en el sistema de seguimiento de bugs, o bug tracking system. Al levantar un caso de bug, todo queda escrito y no se nos van a olvidar [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural.png"><img title="Teclado Microsoft Natural, pintado por Superkb." src="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural-thumb.png" alt="Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key). Haz clic para ver la imagen completa." width="300" height="277" /></a><p class="wp-caption-text">Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key)</p></div>
<p>Ha habido mucho trabajo en esta versión y lo más notable es el soporte para pintar el teclado usando <a href="http://es.wikipedia.org/wiki/Cairo_(biblioteca)">Cairo</a>.</p>
<p>Cualquier falla que encuentren, por favor levanten un bug en el <a href="https://bugs.launchpad.net/superkb">sistema de seguimiento de bugs</a>, o <em>bug tracking system</em>. Al levantar un caso de bug, todo queda escrito y no se nos van a olvidar las cosas. Lo más importante es que el caso o bug quedará documentado para evitar que usuarios y desarrollador(es) trabajemos doble.</p>
<p>Por supuesto, lo anterior no quita que podamos platicar y discutir en #superkb en irc.freenode.net.</p>
<p>Quiero agradecer al <a href="http://www.gultij.org/">Grupo de Usuarios de Linux de Tijuana</a> por la retroalimentación sobre Superkb, sobre todo estos últimos días, en particular a:</p>
<ul>
<li><a href="http://israel8a.blogspot.com/">IsReal</a>, por el <a href="http://israel8a.blogspot.com/2009/11/superkb-paquetes-rpm-y-srpm-para-fedora.html">post en su blog</a> y usar Superkb para aprender a hacer paquetes RPM. <span style="text-decoration: line-through;">Si tendremos uno para la 0.20 será gracias a él.</span> <strong>Update</strong>: Ya tenemos paquete para Fedora Core 12! Gracias, IsReal.</li>
<li><a href="http://www.aduarte.net/blog/">aduarte</a>, por las eternas recomendaciones.</li>
<li><a href="http://www.rugebiker.com/">biker</a>, por intentar incansablemente de instalarlo por más que le falle. Al ver los errores he podido corregirlos.</li>
<li>y me faltó juan_arandaalva, por la ayuda con Cairo (que al final resultó ser una tontería).</li>
</ul>
<p>Bien, los recursos y descargas están donde siempre: en la <a href="http://blog.alvarezp.org/superkb/">página de Superkb en este blog</a> y en el <a href="http://superkb.sourceforge.net/">sitio oficial</a>.</p>
<p>De cualquier manera, cito todo eso aquí:</p>
<ul>
<li>Versión más reciente: 0.20.</li>
<li>Licencia: GPL v2.</li>
<li>Página del proyecto: <a href="http://superkb.sourceforge.net/">http://superkb.sourceforge.net/</a></li>
<li>Proyecto en Sourceforge: <a href="http://sourceforge.net/projects/superkb">http://sourceforge.net/projects/superkb</a></li>
<li>Descarga en gz: <a href="http://prdownloads.sourceforge.net/superkb/superkb-0.20.tar.gz?download">superkb-0.20.tar.gz</a></li>
<li>Descarga en bz2: <a href="http://prdownloads.sourceforge.net/superkb/superkb-0.20.tar.bz2?download">superkb-0.20.tar.bz2</a></li>
<li>Descarga para Fedora Core 12: <a href="http://prdownloads.sourceforge.net/superkb/superkb-0.20-1.fc12.i686.rpm?download">superkb-0.20-1.fc12.i686.rpm</a></li>
<li>Seguimiento de bugs: <a href="https://bugs.launchpad.net/superkb">https://bugs.launchpad.net/superkb</a></li>
<li>Descarga desde Git: <code>git clone git://superkb.git.sourceforge.net/gitroot/superkb/superkb superkb-git</code></li>
<li>Navegación del historial en Gitweb: <a href="http://superkb.git.sourceforge.net/">http://superkb.git.sourceforge.net/</a></li>
<li>Suscripción RSS a liberaciones de archivos: <a href="http://sourceforge.net/export/rss2_projfiles.php?group_id=154661">http://sourceforge.net/export/rss2_projfiles.php?group_id=154661</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/11/20/superkb-0-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sin alternativa</title>
		<link>http://blog.alvarezp.org/2009/11/06/sin-alternativa/</link>
		<comments>http://blog.alvarezp.org/2009/11/06/sin-alternativa/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 17:54:48 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Anécdota]]></category>
		<category><![CDATA[Opera browser]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=835</guid>
		<description><![CDATA[Estaba revisando mi correo electrónico y quise mover un mensaje de una carpeta IMAP a otra en Opera, cuando de pronto:

El texto dice:
Uno o más de los mensajes seleccionados no tienen el cuerpo descargado localmente, ¿Desea que Opera descargue los cuerpos faltantes antes de la exportación (sumamente recomendado)?
:-D
]]></description>
			<content:encoded><![CDATA[<p>Estaba revisando mi correo electrónico y quise mover un mensaje de una carpeta IMAP a otra en Opera, cuando de pronto:</p>
<p><a href="http://blog.alvarezp.org/wp-content/uploads/2009/11/opera.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/11/opera.png" alt="sin-alternativas" title="sin-alternativas" width="440" height="171" class="aligncenter size-full wp-image-836" /></a></p>
<p>El texto dice:</p>
<blockquote><p>Uno o más de los mensajes seleccionados no tienen el cuerpo descargado localmente, ¿Desea que Opera descargue los cuerpos faltantes antes de la exportación (sumamente recomendado)?</p></blockquote>
<p>:-D</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/11/06/sin-alternativa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambio en el método antispam</title>
		<link>http://blog.alvarezp.org/2009/10/28/cambio-en-el-metodo-antispam/</link>
		<comments>http://blog.alvarezp.org/2009/10/28/cambio-en-el-metodo-antispam/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 05:59:36 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Español]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=830</guid>
		<description><![CDATA[Estimados todos:
He realizado un cambio en el método antispam para el blog. Notarán que ya no se ven las sumas; esto es porque automáticamente se contestan y esconden por medio de JavaScript.
Si acostumbran navegar sin JavaScript, verán el cuadro de las sumas como siempre y bastará con contestar la suma, o bien, habiliten JavaScript para [...]]]></description>
			<content:encoded><![CDATA[<p>Estimados todos:</p>
<p>He realizado un cambio en el método antispam para el blog. Notarán que ya no se ven las sumas; esto es porque automáticamente se contestan y esconden por medio de JavaScript.</p>
<p>Si acostumbran navegar sin JavaScript, verán el cuadro de las sumas como siempre y bastará con contestar la suma, o bien, habiliten JavaScript para mi blog.</p>
<p>Mis pruebas fueron satisfactorias (probado con Opera y Links), pero si notan que algún comentario se pierde en el olvido, por favor notifíquenmelo a alvarezp@alvarezp.ods.org.</p>
<p>Veremos qué tal funciona.</p>
<p>Gracias.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/10/28/cambio-en-el-metodo-antispam/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>¿Qué falló durante mi plática en el SHDH, 2009?</title>
		<link>http://blog.alvarezp.org/2009/10/26/%c2%bfque-fallo-durante-mi-platica-en-el-shdh-2009/</link>
		<comments>http://blog.alvarezp.org/2009/10/26/%c2%bfque-fallo-durante-mi-platica-en-el-shdh-2009/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 07:52:39 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=820</guid>
		<description><![CDATA[El pasado 24 de octubre estuve en el Super Happy Dev House, 2009 que se realizó en el CESUN de El Lago.
Además de estar presente para escuchar otras pláticas, yo me apunté a una para presentar sobre Git.
El objetivo de la plática era dar a conocer a Git como un sistema distribuído de control de [...]]]></description>
			<content:encoded><![CDATA[<p>El pasado 24 de octubre estuve en el <a href="http://shdhtj.pbworks.com/">Super Happy Dev House, 2009</a> que se realizó en el CESUN de El Lago.</p>
<p>Además de estar presente para escuchar otras pláticas, yo me apunté a una para presentar sobre <a href="http://git-scm.com/">Git</a>.</p>
<p>El objetivo de la plática era dar a conocer a Git como un <a href="http://en.wikipedia.org/wiki/Distributed_Version_Control_System">sistema distribuído de control de versiones</a>, y tratar de demostrar su funcionamiento con un ejemplo.</p>
<p>Si bien la parte de la plática salió bien y las primeras muestras en proyección funcionaron, la demostración en la maqueta no salió como esperaba.</p>
<p><span id="more-820"></span>Fuera de que lo que llevaba como servidor se puso a hacer un fsck a la hora de levantar el lab y que hubo que levantar una red alterna porque los peers no se veían entre ellos, lo que realmente mató la demostración fue que olvidé el asunto de los permisos. Al no tener los usuarios permisos para leer los repositorios unos de otros, la demostración se convirtió en un ejemplo de VCS centralizado.</p>
<p>Realicé varios clones, uno de otro y con otro usuario para cuidar los accesos a la laptop. Para cuando todos clonaron del repositorio compartido, estúpidamente perdí rastro del árbol de repositorios generados. Pero en fin, estaba logrando recuperar camino, cuando&#8230;</p>
<p>Debido a que todos clonaron de mi repositorio &#8211;que tenía una <em>working copy</em>, es decir, que no era un repositorio <em>bare</em>&#8211; cuando quisieron darle <code>git push</code> sólo Alex pudo enviar sus cambios y ocurrió lo que tenía que pasar:</p>
<ol>
<li>Que a los demás les apareció un mensaje sobre las &#8220;refs&#8221; que rápidamente se resolvió con <code>git pull</code></li>
<li>Una vez realizado el pull, git les comenzó a rechazar el push, debido a que mi copia local estaba &#8220;sucia&#8221;, es decir, que no correspondía con la última versión del HEAD.</li>
<p> Esto lo he resuelto múltiples veces con <code>git reset --hard</code> pero por algún motivo que desconozco, nunca pensé en forzar mi copia local a la versión actual de HEAD. Y aún si lo hubiera hecho, era demasiado tema para una sola sesión explicar <code>git reset</code>.
</ol>
<p>Algunos tuvieron conflictos y no pudieron realizar el git pull necesario para preparar el git push. Yo me preguntaba por qué tenían conflictos, y entre las tantas cosas que estaba tratando de resolver simultáneamente, el laboratorio me rebasó.</p>
<p>Afortunadamente, la parte conceptual quedó cubierta, algunos lograron instalar Git y ejecutar algunos de sus comandos.</p>
<p>Yo siento que quedé debiendo, así que he preparado un ejemplo que podrán leer y seguir con toda calma.</p>
<p>Se trata de una serie de acciones realizadas con Git afectando cuatro repositorios para demostrar la naturaleza distribuída de este gran manejador de versiones.</p>
<p>Hagan clic en la imagen para entrar a una tabla con cuatro columnas. Cada columna pertenece a los comandos ejecutados en un repositorio. Verticalmente es una línea de tiempo.</p>
<p><a href="http://blog.alvarezp.org/files/git-lab-run.html"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/git-lab-overview.png" alt="git-lab-overview" title="git-lab-overview" width="550" height="360" class="aligncenter size-full wp-image-822" /></a></p>
<p>Si ustedes siguen todo el laboratorio en orden, los repositorios les quedarán de la siguiente manera:</p>
<p><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/diagram-550.png" alt="diagram-550" title="diagram-550" width="550" height="418" class="aligncenter size-full wp-image-821" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/10/26/%c2%bfque-fallo-durante-mi-platica-en-el-shdh-2009/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bash prompting</title>
		<link>http://blog.alvarezp.org/2009/10/12/bash-prompting/</link>
		<comments>http://blog.alvarezp.org/2009/10/12/bash-prompting/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 03:43:41 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=772</guid>
		<description><![CDATA[Al diagnosticar un problema intermitente, tener la hora exacta en la que una prueba arrojó un determinado resultado puede ser muy útil al momento de tratarlo con los proveedores o intercambiar información con otro técnico.
Por medio de cambiar el prompt PS1 de Bash he resuelto el problema de saber a qué hora ejecuté un comando.
Mi [...]]]></description>
			<content:encoded><![CDATA[<p>Al diagnosticar un problema intermitente, tener la hora exacta en la que una prueba arrojó un determinado resultado puede ser muy útil al momento de tratarlo con los proveedores o intercambiar información con otro técnico.</p>
<p>Por medio de cambiar el prompt PS1 de Bash he resuelto el problema de saber a qué hora ejecuté un comando.</p>
<p><span id="more-772"></span>Mi prompt anterior era el default de Ubuntu:</p>
<pre class="code">PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
</pre>
<p>Para efectos de simplificar, eliminaré la parte <code>${debian_chroot:+($debian_chroot)}</code>. Bastará indicar que muestra la variable de entorno <code>debian_chroot</code> entre paréntesis cuando ésta tenga un valor asignado. Desconozco más.</p>
<p>Digamos entonces que mi prompt anterior era:</p>
<pre class="code">PS1='\u@\h:\w\$ '</pre>
<div id="attachment_776" class="wp-caption aligncenter" style="width: 515px"><a href="http://blog.alvarezp.org/wp-content/uploads/2009/10/prev.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/prev.png" alt="Versión por default." title="prev" width="505" height="151" class="size-full wp-image-776" /></a><p class="wp-caption-text">Versión por default.</p></div>
<p>Y planteé como objetivos:</p>
<ul>
<li>Que me permitiera encontrar fácilmente la separación entre comandos ejecutados.</li>
<li>Que me permitiera separar visual y fácilmente los componentes del prompt.</li>
<li>Que me permitiera determinar cuándo exactamente ejecuté un comando (útil durante mantenimientos de emergencia).</li>
<li>Que a pesar de tanta información, no se me acabe el renglón para escribir mi comando.</li>
</ul>
<p>Así que:</p>
<ul>
<li>Incluí un <code>\n</code> al principio del prompt para dejar una línea en blanco.</li>
<li>Incluí la fecha y hora con huso horario <code>\d \t \D{%z}</code>. El huso horario es particularmente útil cuando hay que compartir un resultado con un tercero que pudiera estar en otro lugar.</li>
<li>Puse en verde el identificador de usuario y en azul el directorio actual</li>
<li>Inicié el comando en una línea nueva. Una ventaja de esto fue que para documentar, puedo simplemente copiar toda la línea y no se incluye toda la información irrelevante.</li>
</ul>
<p>Quedó como sigue:</p>
<pre class="code">
SET_GREEN=`echo -e '\033[01;32m'`
SET_BLUE=`echo -e '\033[01;34m'`
UNSET_COLOR=`echo -e '\033[0m'`
PS1='\n[\d \t \D{%z} -- \[$SET_GREEN\]\u@\h\[$UNSET_COLOR\]:\[$SET_BLUE\]\w\[$UNSET_COLOR\]]\n\$ '
</pre>
<p>En líneas posteriores en mi .bashrc, Debian y Ubuntu anteponen <code>\[\e]0;\u@\h: \w\a\]</code> para que el título cambie al establecer el prompt. Esto se habilita si la terminal es compatible con los cambios de título.</p>
<p>El resultado final es:</p>
<div id="attachment_775" class="wp-caption aligncenter" style="width: 515px"><a href="http://blog.alvarezp.org/wp-content/uploads/2009/10/after.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/after.png" alt="Resultado final." title="after" width="505" height="151" class="size-full wp-image-775" /></a><p class="wp-caption-text">Resultado final.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/10/12/bash-prompting/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bell on new line</title>
		<link>http://blog.alvarezp.org/2009/09/28/bell-on-new-line/</link>
		<comments>http://blog.alvarezp.org/2009/09/28/bell-on-new-line/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 20:10:21 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=725</guid>
		<description><![CDATA[To have a Linux beep each time a new line is printed on standard output, just filter your output through the following code:
gawk '{print "\007" $0 }'
This will effectively &#8220;prepend&#8221; a bell to each line.
You can convert this into an alias or a command (say /usr/local/bin/line-beep.gawk):
#!/usr/bin/gawk -f

{ print "\007" $0; }
So it can be used [...]]]></description>
			<content:encoded><![CDATA[<p>To have a Linux beep each time a new line is printed on standard output, just filter your output through the following code:</p>
<pre class="code"><code>gawk '{print "\007" $0 }'</code></pre>
<p>This will effectively &#8220;prepend&#8221; a bell to each line.</p>
<p>You can convert this into an alias or a command (say /usr/local/bin/line-beep.gawk):</p>
<pre class="code"><code>#!/usr/bin/gawk -f

{ print "\007" $0; }</code></pre>
<p>So it can be used in a code like the following:</p>
<pre class="code"><code>tail -f /var/log/messages | grep --line-buffered dhcpd | line-beep.bash
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/28/bell-on-new-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
