<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hey Deejay! Visual Studio</title>
	<atom:link href="http://heydeejay.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://heydeejay.wordpress.com</link>
	<description>Así se hizo (y se sigue haciendo)</description>
	<lastBuildDate>Fri, 01 Jan 2010 21:38:19 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='heydeejay.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hey Deejay! Visual Studio</title>
		<link>http://heydeejay.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://heydeejay.wordpress.com/osd.xml" title="Hey Deejay! Visual Studio" />
	<atom:link rel='hub' href='http://heydeejay.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Feliz año a todos :)</title>
		<link>http://heydeejay.wordpress.com/2010/01/01/feliz-ano-a-todos/</link>
		<comments>http://heydeejay.wordpress.com/2010/01/01/feliz-ano-a-todos/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 21:38:01 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Miscelánea]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=204</guid>
		<description><![CDATA[Simplemente felicitar al año a todos, y recordar que este blog no está muerto, sólo de vacaciones (ha sido un fin de año un poco ajetreado). Estoy haciendo progresos interesantes por lo que espero poder subir ficheros .wav dentro de poco y así poder escuchar estos progresos Un saludo.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=204&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Simplemente felicitar al año a todos, y recordar que este blog no está muerto, sólo de vacaciones (ha sido un fin de año un poco ajetreado). Estoy haciendo progresos interesantes por lo que espero poder subir ficheros .wav dentro de poco y así poder escuchar estos progresos <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Un saludo.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=204&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2010/01/01/feliz-ano-a-todos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://heydeejay.wordpress.com/2009/10/16/144/</link>
		<comments>http://heydeejay.wordpress.com/2009/10/16/144/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 12:58:11 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Hey Deejay! Visual Studio]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=144</guid>
		<description><![CDATA[En el artículo anterior hablaba de la similitud entre un sistema de software y una cadena de montaje. Aunque la comparación sigue siendo válida resulta un tanto simplista. El modelo que se presentaba es lineal, en el que una pieza de la cadena procesa la entrada producida por la salida de otra pieza. Sin embargo, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=144&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">En el artículo anterior hablaba de la similitud entre un sistema de software y una cadena de montaje. Aunque la comparación sigue siendo válida resulta un tanto simplista. El modelo que se presentaba es lineal, en el que una pieza de la cadena procesa la entrada producida por la salida de otra pieza. Sin embargo, en una aplicación real nos encontraremos con que la forma de relacionarse de estas piezas recuerda mucho más a un árbol.</p>
<div class="wp-caption aligncenter" style="width: 415px"><img src="http://s3.amazonaws.com/lcp/gatinha/myfiles/arbol2.jpg" alt="" width="405" height="270" /><p class="wp-caption-text">A mayor altura, más especialización</p></div>
<p style="text-align:center;">
<p style="text-align:justify;">Conceptualmente, cuanto más cerca de la raíz se encuentre una pieza, más cerca se encontrará de la abstracción inicial, y la manera de enfocar su cometido será también más abstracta. Para ello se apoyará  en las piezas que ofrecen sus ramas, las cuales estarán diseñadas para resolver problemas más concretos. Podríamos decir que las piezas de una misma rama pertenecen al mismo dominio del problema. Una rama puede necesitar de otras ramas más especializadas en las que apoyarse, y estas a su vez necesitar de otras ramas. A medida que nos desplacemos por ellas nos encontraremos con piezas más simples cuyo propósito será resolver problemas más concretos. Cuando una pieza es capaz de resolver su cometido por sí misma, se convertirá en una hoja.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=144&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/10/16/144/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/lcp/gatinha/myfiles/arbol2.jpg" medium="image" />
	</item>
		<item>
		<title>Sistemas de software y cadenas de montaje</title>
		<link>http://heydeejay.wordpress.com/2009/10/16/fabricas-de-coches-y-objetos-antipaticos/</link>
		<comments>http://heydeejay.wordpress.com/2009/10/16/fabricas-de-coches-y-objetos-antipaticos/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 09:34:39 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Hey Deejay! Visual Studio]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[arquitectura]]></category>
		<category><![CDATA[calidad]]></category>
		<category><![CDATA[consejos]]></category>
		<category><![CDATA[consistente]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[elegante]]></category>
		<category><![CDATA[información]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=88</guid>
		<description><![CDATA[Según la RAE, una de las acepciones de sistema es &#8220;Conjunto de cosas que relacionadas entre sí ordenadamente contribuyen a determinado objeto&#8221;. La verdad es que no se me ocurre un término mejor para definir  cómo funciona una aplicación diseñada bajo el paradigma de la orientación a objetos. Si nos fijamos en la cadena de montaje de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=88&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Según la <a href="http://www.rae.es" target="_blank">RAE</a>, una de las acepciones de <a href="http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&amp;LEMA=sistema" target="_blank">sistema</a> es &#8220;Conjunto de cosas que relacionadas entre sí ordenadamente contribuyen a determinado objeto&#8221;.</p>
<p style="text-align:justify;">La verdad es que no se me ocurre un término mejor para definir  cómo funciona una aplicación diseñada bajo el paradigma de la orientación a objetos. Si nos fijamos en la cadena de montaje de una fábrica de coches veremos cómo cada sección de la misma se dedica exclusivamente a una tarea específica. Cada una de las secciones trabaja sobre el resultado producido por la sección anterior, el cual es procesado de nuevo y puesto a disposición de la siguiente sección. Todas estas piezas forman un sistema que resuelve el <em>objeto </em>de fabricar un coche. Si alguna de las secciones deja de funcionar o se para, el sistema entero se detiene.</p>
<p><img class="alignleft" title="Producción en cadena en una fábrica de coches" src="http://www2.diariomotor.com/imagenes/porsche%20cadena%20montaje%202%20450pix.jpg" alt="" width="270" height="167" /></p>
<p style="text-align:justify;">Un sistema software funciona de forma parecida. Aunque las piezas  no se desgastan por el uso sufren de otro tipo  de  <em>debilidades. </em>Como no queremos que ninguna de nuestras piezas se pare o deje de funcionar, debemos ser exigentes con ellas. Para empezar, no queremos que sepan qué hacen ni cómo funcionan las demás. No queremos que sean inteligentes y las obligaremos a dedicarse a una única cosa, que es resolver eficientemente el problema para el que han sido diseñadas. Queremos que además sean asociales por naturaleza, que no puedan relacionarse libremente con su alrededor, y que cuando lo hagan que sea a través del mínimo número de interlocutores, y siempre que resulte imprescindible para garantizar su corrección. Sobre todo, exigiremos que sean discretas y muy claras en sus intenciones, pues no queremos atraer las miradas de otras piezas que quizás podrían malinterpretar su funcionamiento y utilizarlas para fines inadecuados, pervirtiendo así el sistema.</p>
<p style="text-align:justify;">Si tuviéramos que diseñar una versión software de la cadena de montaje, cada eslabón sólo debería conocer a qué otro eslabón se tiene que dirigir para pedirle la materia prima con la que trabajar. De la misma forma, éstos tendrían que ofrecer un mecanismo para acceder a su producto finalizado. Nada más y nada menos. Un eslabón no  sabe qué es una fábrica de coches, ni que forma parte de una  cadena de montaje, ni siquiera tendría conciencia de sí mismo, porque esa información es irrelevante para el propósito de su existencia.</p>
<p style="text-align:justify;">Diseñar nuestras piezas de la cadena con estas premisas nos da una serie de ventajas:</p>
<p style="text-align:justify;">1. Si se estropea una pieza, sólo tenemos que desconectarla de las otras dos a los que está conectada y enganchar en su lugar una que funcione.</p>
<p style="text-align:justify;">2. Si queremos modificar el funcionamiento de una pieza el cambio afectará única y exclusivamente a esa pieza.</p>
<p style="text-align:justify;">3. Si queremos extender la cadena con una nueva característica, sólo tenemos que insertar una nueva pieza en el lugar adecuado.</p>
<p style="text-align:justify;">En ninguno de estos tres casos se verían afectadas las otras piezas del sistema, y esto lo conseguimos aplicando uno de los principios fundamentales del diseño orientado a objetos:  <a href="http://es.wikipedia.org/wiki/Ocultaci%C3%B3n_de_informaci%C3%B3n" target="_blank">Ocultación de la Información</a>.</p>
<div class="wp-caption alignright" style="width: 201px"><img src="http://1.bp.blogspot.com/_WYSY4vcAZdU/R7YsUhg2w9I/AAAAAAAAAB8/KXcA8Qg1rSc/s320/eslab%C3%B3n.JPG" alt="" width="191" height="174" /><p class="wp-caption-text">Una pequeña fisura en una pieza puede arruinar todo el sistema</p></div>
<p style="text-align:justify;">Una de las tareas más complicadas para un programador es la del diseño de las piezas del puzzle de la aplicación. Sólo hay una pieza posible para cada posición del tablero, además ha de encajar perfectamente con las piezas de su alrededor y no puede faltar ninguna pero tampoco sobrar. Más complicado aún es <em>descubrir</em> qué piezas son las que tenemos que diseñar. Para identificar estas piezas es esencial conocer y entender todos los parámetros del problema que intentamos solucionar. Debido a que generalmente toda aplicación parte de una idea más o menos abstracta además tendremos que echar mano de mucho <a href="http://heydeejay.wordpress.com/2009/04/30/lapiz-y-papel/">lápiz y papel</a>, y raudales de imaginación.</p>
<p style="text-align:justify;">En el siguiente post hablaré de las piezas principales del <em>Hey Deejay!</em> sobre las que se sostiene el resto de la aplicación. No debería tardar demasiado puesto que está prácticamente acabado.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=88&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/10/16/fabricas-de-coches-y-objetos-antipaticos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>

		<media:content url="http://www2.diariomotor.com/imagenes/porsche%20cadena%20montaje%202%20450pix.jpg" medium="image">
			<media:title type="html">Producción en cadena en una fábrica de coches</media:title>
		</media:content>

		<media:content url="http://1.bp.blogspot.com/_WYSY4vcAZdU/R7YsUhg2w9I/AAAAAAAAAB8/KXcA8Qg1rSc/s320/eslab%C3%B3n.JPG" medium="image" />
	</item>
		<item>
		<title>Vuelta de vacaciones</title>
		<link>http://heydeejay.wordpress.com/2009/09/15/vuelta-de-vacaciones/</link>
		<comments>http://heydeejay.wordpress.com/2009/09/15/vuelta-de-vacaciones/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 13:03:17 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Miscelánea]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=134</guid>
		<description><![CDATA[Iba a ser una semana pero al final han sido dos. Así que aquí estamos de nuevo.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=134&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Iba a ser una semana pero al final han sido dos. Así que aquí estamos de nuevo.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=134&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/09/15/vuelta-de-vacaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
		<item>
		<title>Recolección de Basura y Objetos Efímeros</title>
		<link>http://heydeejay.wordpress.com/2009/07/17/el-recolector-de-basura-y-objetos-efimeros/</link>
		<comments>http://heydeejay.wordpress.com/2009/07/17/el-recolector-de-basura-y-objetos-efimeros/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 18:13:45 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[basura]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[collector]]></category>
		<category><![CDATA[creacion]]></category>
		<category><![CDATA[destruccion]]></category>
		<category><![CDATA[duracion]]></category>
		<category><![CDATA[garbage]]></category>
		<category><![CDATA[generacion]]></category>
		<category><![CDATA[generacional]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[objeto]]></category>
		<category><![CDATA[recolector]]></category>
		<category><![CDATA[vida]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=92</guid>
		<description><![CDATA[Mi reciente experiencia con el recolector de basura (Garbage Collector en inglés o GC a partir de ahora) de la máquina virtual de Java me había hecho comprender que aunque esta pieza esté diseñada para hacerle la vida más sencilla al programador no es ni mucho menos un ente transparente que debamos ignorar. El GC existe y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=92&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Mi reciente experiencia con el recolector de basura (<strong>Garbage Collector</strong> en inglés o <strong>GC</strong> a partir de ahora) de la máquina virtual de Java me había hecho comprender que aunque esta pieza esté diseñada para hacerle la vida más sencilla al programador no es ni mucho menos un ente transparente que debamos ignorar. El GC <strong>existe </strong>y se puede volver contra nosotros. Creer que gracias a él nos podemos despreocupar de la gestión de memoria es un grave error. Gran parte de los problemas de rendimiento de una aplicación .NET o Java (por citar los que conozco) se deben al uso y abuso indiscriminado de la memoria, probablemente debido a la poca experiencia o al desconocimiento total o parcial acerca de cómo funciona este mecanismo.</p>
<p>Sin embargo, es fácil caer en el defecto contrario: preocuparse de la gestión de memoria cuando no nos corresponde. Un ejemplo que lo ilustra se da cuando durante la llamada a una función necesitamos usar algún otro objeto de forma temporal para producir el resultado. Uno puede llegar a pensar: &#8220;si cada vez que llamo a este método creo una nueva instancia de un objeto, ¿por qué no tener una única instancia de éste último ya creada y reusarla cuando sea necesario?&#8221; Pues esto es una mala idea en la mayoría de los casos.</p>
<p>Por un lado, es bastante probable que tengamos que modificar o extender el interfaz de la clase para añadirle la característica de <em>reusable</em>. Querríamos como mínimo tener una función <em>Reset()</em>, o quizás un par de funciones <em>Initialize(&#8230;) / Deinitialize()</em>, pero esto tiene implicaciones más profundas de lo que a simple vista parece. No se trata sólo de añadir una o dos funciones nuevas, estamos hablando de añadir <strong>estado </strong>a una clase, y con ello todo lo necesario para garantizar que el uso de dicho objeto será coherente con el estado actual en que se encuentre. En nuestro sencillo ejemplo, convertir un objeto en reusable afectará al resto de su API, ya que al menos se habrá de comprobar en cada llamada que el estado actual es <em>inicializado</em>, y lanzar una excepción en caso contrario. Visto con un poco más de perspectiva, en realidad lo que haremos será modificar profunda e innecesariamente una pequeña clase para adecuarla a un caso de uso muy concreto, el cual además, como veremos a continuación, está basado en una suposición errónea.</p>
<p>Resulta que el GC de Java y .NET son generacionales, es decir, clasifican los objetos según su tiempo de vida. Un objeto recién creado pasa a formar parte de la primera generación o generación 0, mientras que objetos que al cabo de cierto tiempo siguen estando referenciados en alguna parte del código son <em>ascendidos</em> a una generación superior. El porqué de clasificarlos de esta manera está basado en en el comportamiento de la mayoría de las aplicaciones. Se ha observado que la gran mayoría de los objetos que se crean en un momento dado tienden a tener un tiempo de vida muy corto, y que cuanto más viejo es un objeto, más probable es que se haga más viejo aún. Sin entrar mucho en detalles (hay mucho escrito sobre este tema), diré que esta manera de trabajar del GC le permite despachar los objetos que mueren jóvenes de una manera ultrarrápida y eficiente.</p>
<p>En conclusión, no merece la pena en absoluto cachear instancias de pequeños objetos cuyo tiempo de vida va a ser efímero. Ya lo hace el GC y probablemte más rápido y mejor. La única excepción, cuando el sentido común lo aconseje,  no querremos hacer constantemente news de algo que tarde mucho en construirse o se apropie de 1Gb de memoria.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=92&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/07/17/el-recolector-de-basura-y-objetos-efimeros/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
		<item>
		<title>Procrastinando</title>
		<link>http://heydeejay.wordpress.com/2009/07/16/procrastinando/</link>
		<comments>http://heydeejay.wordpress.com/2009/07/16/procrastinando/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 17:39:56 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Miscelánea]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=89</guid>
		<description><![CDATA[Debo reconocer que he sido víctima de la procrastinación y me he dejado llevar por el &#8216;mañana escribo sobre esto&#8217;, pero también soy un cabezón y estoy decidido a echar este blog a andar, cueste lo que cueste. Creo que los posts anteriores son demasiado largos y a partir de ahora intentaré que sean más [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=89&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Debo reconocer que he sido víctima de la procrastinación y me he dejado llevar por el &#8216;mañana escribo sobre esto&#8217;, pero también soy un cabezón y estoy decidido a echar este blog a andar, cueste lo que cueste. Creo que los posts anteriores son demasiado largos y a partir de ahora intentaré que sean más cortos pero más abundantes. Parece que escribir una entrada es cosa fácil pero la verdad es que le lleva a uno su tiempo&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=89&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/07/16/procrastinando/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
		<item>
		<title>¿C++ ó C#?</title>
		<link>http://heydeejay.wordpress.com/2009/05/04/%c2%bfc-o-c/</link>
		<comments>http://heydeejay.wordpress.com/2009/05/04/%c2%bfc-o-c/#comments</comments>
		<pubDate>Mon, 04 May 2009 21:12:13 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[El Rincón de C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[calidad]]></category>
		<category><![CDATA[cáculos]]></category>
		<category><![CDATA[clases]]></category>
		<category><![CDATA[consistente]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[elegante]]></category>
		<category><![CDATA[ensamblador]]></category>
		<category><![CDATA[evolución]]></category>
		<category><![CDATA[herramienta]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[incompatible]]></category>
		<category><![CDATA[indocumentada]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lenguaje]]></category>
		<category><![CDATA[librerías]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[making of]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[pistas estéreo 16 bits]]></category>
		<category><![CDATA[pitch]]></category>
		<category><![CDATA[reescribir]]></category>
		<category><![CDATA[rutina]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[Unix.Solaris]]></category>
		<category><![CDATA[volumen]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=31</guid>
		<description><![CDATA[Recuerdo la primera vez que oí hablar de .NET y C#. Alguien en la oficina lo estaba usando en casa para no sé qué juego de fútbol y lo contaba con entusiasmo. A mí me sonaba por aquel entonces a una especie de lenguaje de segunda división pensado para las masas, fácil de usar por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=31&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recuerdo la primera vez que oí hablar de .NET y C#. Alguien en la oficina lo estaba usando en casa para no sé qué juego de fútbol y lo contaba con entusiasmo. A mí me sonaba por aquel entonces a una especie de lenguaje de segunda división pensado para las masas, fácil de usar por cualquiera que quisiera desarrollar rápidamente un portal web o aplicaciones de gestión y manejo de bases de datos. Me imaginaba al panadero de mi barrio con el Visual Studio. Al igual que Java muchos años antes, .NET introducía algunos conceptos que mi mente cuadriculada de C++ no podía tolerar: &#8220;¿Recolector de basura?&#8221; &#8220;¿Que no puedo decidir dónde ni cuándo destruir los objetos que yo mismo he creado? ¿Cómo se atreve?&#8221; y la puntilla: &#8220;Y es 20 veces más lento, definitivamente no vale para programas de verdad&#8221;. Qué atrevida es la ignorancia.</p>
<p>Un par de años más tarde tuve la oportunidad de trabajar con C# en un proyecto. Inicialmente sólo éramos dos programadores que sumábamos más de 25 años de experiencia en C++ y cero en C#. Aunque a mí no me apetecía cambiar, el tipo de proyecto, su corto tiempo de desarrollo y los pocos recursos disponibles aconsejaban su uso. En dos meses debíamos tener listo un prototipo.</p>
<p>Al principio lo hacíamos todo en C++ disfrazado de C# (no sabíamos hacer otra cosa al fin y al cabo), pero poco a poco nos fuimos enganchando y entendiendo el verdadero potencial de la herramienta. Era un lenguaje formal, elegante, muy estricto en cuanto a las formas, de modo que era prácticamente imposible retorcerlo para usarlo de una manera digamos <em>creativa</em>. Un lenguaje diseñado, entre otras cosas, para cubrir las necesidades reales de un programador y hacerle la vida más sencilla.</p>
<p>Si hay algo que multiplica por 100 el valor de cualquier lenguaje .NET es el Framework Class Library (FCL), una vastísima colección de clases destinada a ser la base sobre la que construir componentes, servicios, aplicaciones y en definitiva cualquier solución software. Se acabó el tener que recurrir a la búsqueda de librerías de terceros, a veces caras, difíciles de mantener, de dudosa calidad, indocumentadas o en el peor de los casos incompatibles entre sí. Con la librería de clases tenemos prácticamente todo lo que nos podamos imaginar a la distancia de unos pocos clicks, con el añadido de disponer de un API consistente tanto en funcionalidad como en estilo (el 90% de las veces).</p>
<p>Otra de las cosas que se hace notar es que es un lenguaje vivo en constante evolución. En cada nueva release podemos encontrar características de lo más variadas que lo van situando poco a poco en la categoría de lenguaje &#8216;todoterreno&#8217;. La única pega, por el momento, es que está confinado a la plataforma Windows, aunque paralelamente se está desarrollando <a href="http://mono-project.com/Main_Page">Mono</a>, un proyecto Open Source impulsado por Novell con Miguel de Icaza a la cabeza, con el objetivo de hacer posible el desarrollo de aplicaciones .NET en <a title="Linux" href="http://en.wikipedia.org/wiki/Linux">Linux</a>, <a class="mw-redirect" title="BSD" href="http://en.wikipedia.org/wiki/BSD">BSD</a>, <a title="Unix" href="http://en.wikipedia.org/wiki/Unix">UNIX</a>, <a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a>, <a title="Solaris (operating system)" href="http://en.wikipedia.org/wiki/Solaris_%28operating_system%29">Solaris</a> y el mismo <a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows">Windows</a>.</p>
<p>En definitiva, cada día que pasaba descubríamos un par de cosas nuevas que nos dejaban asombrados. Reconozco que de cuando en cuando nuestro pasado nos cegaba: &#8220;¡Maldita sea, se les ha olvidado meter &#8216;x&#8217; en C#!&#8221;. No, no se les había olvidado, simplemente se hacía de otra manera, más elegante, mejor. Una cosa importante que hay que tener en cuenta para evitar frustraciones futuras es que C# <strong>no</strong> es una forma de C++, ni siquiera es una evolución del mismo. Son dos lenguajes <strong>diferentes </strong>de la misma familia que comparten una sintaxis muy parecida. Por parecerse a algo se parece a Java, lenguaje del cual ha heredado las cosas buenas y desechado las malas.</p>
<p>Después de un par de meses trabajando en C# tomé la decisión de reescribir el HD con esta nueva y perfecta herramienta. Tenía un montón de código pero se limitaba a un <em>framework </em>sobre el que basar el <em>core </em>de la aplicación. Para mi sorpresa, el FCL tenía todo lo que durante meses había estado escribiendo: listas enlazadas, pilas, diccionarios, gestión de memoria, gestión de ficheros etc, y solo me llevó una semana tener el nuevo motor funcionando. Básicamente más que reescribir código fue tirar el antiguo y reemplazarlo con algo que ya estaba hecho y probado, con mucha pena en el alma eso sí.</p>
<p>El único apartado en el que tenía dudas era en la parte de DSP. Se me ocurrió escribirlo primero en C# para tener algo funcional que después podría pasar a C ó C++ . La primera implementación era terriblemente lenta, pero entonces descubrí el modo <em>unsafe</em>, dentro del cual es posible escribir código libre de comprobaciones extras por parte del compilador, haciéndolo muy eficiente y <em>peligroso </em>a la vez. Básicamente tienes acceso directo a la memoria a través de punteros estilo C/C++, por lo que si no se manejan con cuidado pueden causar los mismos estropicios de antaño, como sobrescribir variables, provocar desbordamientos de pila, pisar zonas de memoria etc. Si esto ocurre y tienes mucha suerte tu desliz provocará un crash inmediato, en caso contrario prepárate para un dolor de cabeza seguro.</p>
<p>Por el momento no he tenido la necesidad de escribir nada en C++. Haciendo un poco de profiling  en un ordenador de gama media he llegado a mezclar simultáneamente cerca de 150 pistas de audio 16 bits estéreo a 44.100 hz,  todas con envolventes de pitch y volumen, lo cual es mucho más de lo necesario en cualquier aplicación práctica.</p>
<p>En definitiva, y hasta que no se me demuestre lo contrario, he desterrado el C++ de mis herramientas del trabajo, algo que a algunos les puede parecer un sacrilegio. Quizás algún día necesite hacer alguna rutina que precise de millones de cálculos y deba ser llamada millones de veces por segundo. Bueno, pues ese día usaré C ó C++, al igual que antaño se usaba el ensamblador para estos casos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=31&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/05/04/%c2%bfc-o-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
		<item>
		<title>Lápiz y Papel</title>
		<link>http://heydeejay.wordpress.com/2009/04/30/lapiz-y-papel/</link>
		<comments>http://heydeejay.wordpress.com/2009/04/30/lapiz-y-papel/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 07:35:00 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[consejos]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[desde cero]]></category>
		<category><![CDATA[dj]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[empezar]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[información]]></category>
		<category><![CDATA[making of]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heydeejay.wordpress.com/?p=10</guid>
		<description><![CDATA[Pensemos en un carpintero construyendo una mesa. Antes de ponerse a cortar y pegar trozos de madera a lo loco necesita disponer de una buena cantidad de información: tamaños, pesos, capacidades, resistencias, entorno, medidas. etc. Tras estudiar minuciosamente estos detalles deberá elegir sobre qué tipo de madera va a trabajar: pino, roble, alcornoque, contrachapado, etc, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=10&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pensemos en un carpintero construyendo una mesa. Antes de ponerse a cortar y pegar trozos de madera a lo loco necesita disponer de una buena cantidad de información: tamaños, pesos, capacidades, resistencias, entorno, medidas. etc. Tras estudiar minuciosamente estos detalles deberá elegir sobre qué tipo de madera va a trabajar: pino, roble, alcornoque, contrachapado, etc, y en base a ello seleccionar las  herramientas que va a usar,  tamaño de los clavos, tipos de pegamento, barnices, pinturas adecuadas, etc. Sólo al final de este proceso será cuando se ponga manos a la obra y parezca un <em>verdadero </em>carpintero.  Este hombre sabe por experiencia que cometer un error de cálculo en cualquiera de las etapas previas a la construcción supone la creación de una mesa subóptima y que tarde o temprano alguien lo acabará pagando.</p>
<p>Empezar algo desde cero puede ser desconcertante. A menudo la idea que tienes en la cabeza es amorfa e incompleta y es posible que ni siquiera seas consciente de ello. No sabes cómo ni por dónde empezar  y ahora te has creado una nueva necesidad que tu cerebro percibe como un problema que tiene que resolver, y tienes muchas tentaciones de ponerte a escribir código cuanto antes para estar más cerca de la solución y poder aliviar esa incómoda carga. No se podría empezar de una manera peor.</p>
<p>La primera herramienta que uno debe instalar es el lápiz y papel. Baja a la tienda y compra lápices, bolígrafos y papel, mucho papel. Es preferible usar blocks en lugar de hojas sueltas o acabarás perdiendo alguna. Si eres de esa clase de programador que expresa ideas y conceptos con cajitas y otras formas geométricas, es muy recomendable usar papel cuadriculado. No se trata de escribir un documento formal sino de de dejar constancia de todo lo que pasa por la cabeza. Garabatos, dibujos, lluvias de flechas, cualquier cosa que ayude a separar el barro del oro. <em>Pierde </em>todo el tiempo que sea necesario en esta tarea. Be un carpintero my friend.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=10&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/04/30/lapiz-y-papel/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
		<item>
		<title>Un poco de historia</title>
		<link>http://heydeejay.wordpress.com/2009/04/23/hello-world/</link>
		<comments>http://heydeejay.wordpress.com/2009/04/23/hello-world/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 12:27:55 +0000</pubDate>
		<dc:creator>trapazza</dc:creator>
				<category><![CDATA[Hey Deejay! Visual Studio]]></category>
		<category><![CDATA[Miscelánea]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[arquitectura]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[dj]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[herramienta]]></category>
		<category><![CDATA[making of]]></category>
		<category><![CDATA[megamix]]></category>
		<category><![CDATA[mix]]></category>
		<category><![CDATA[montaje]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[profesional]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[remix]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Todo empezó una tarde de aburrimiento allá por el verano de 2005. Recuerdo que hacía calor, arreglábamos bugs y no teníamos muchas ganas de trabajar. No sé por qué surgió el tema de los proyectos personales que había hecho cada uno. Yo soy de esa clase de programadores que empieza decenas de ellos y no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=1&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Todo empezó una tarde de aburrimiento allá por el verano de 2005. Recuerdo que hacía calor, arreglábamos bugs y no teníamos muchas ganas de trabajar. No sé por qué surgió el tema de los proyectos personales que había hecho cada uno. Yo soy de esa clase de programadores que empieza decenas de ellos y no termina ninguno. El proceso era casi siempre como el que sigue:</p>
<p>1. Un día te viene a la cabeza lo que te crees que es una idea <em>buenísima</em> que va a revolucionar el mercado. Pasas días o semanas entusiasmado dándole vueltas. Piensas también en los países a los que vas a viajar y en la vida de lujos que te espera debido a tu éxito.</p>
<p>2. Te pones a ello. Para reafirmarte en tu decisión haces tonterías para autoengañarte, como instalar una versión mejor del Visual Studio (tu súper idea se merece algo mejor), instalar otras herramientas de developer que sabes que nunca vas a usar (pero son profesionales), reformatear el disco duro (para que todo vaya más fino), reinstalar una versión superior del SO, o incluso comprarte otro ordenador (el que tienes es demasiado pequeño para la magnitud de lo que quieres hacer).</p>
<p>3. Este es el punto clave, a partir de aquí sólo puede pasar una cosa buena y muchas malas:</p>
<p>-  Se te ocurre otra idea muchísimo más buenísima que la anterior, abandonas tu mediocre idea actual y te encuentras de nuevo en el paso 1.</p>
<p>-  Te agobias tanto que decides procrastinar un poco (ya si eso el lunes&#8230;). Varios meses más tarde no recuerdas nada de esto y vuelves al paso 1 con una nueva idea, tan feliz.</p>
<p>- Lo que quieres hacer existe hace años, va por la versión 7.1 y hace cosas que a ti nunca se te hubieran ocurrido.</p>
<p>- Al cabo de un tiempo te das cuenta de que tu idea en realidad apesta y te preguntas si deberías dedicarte a otra cosa.</p>
<p>En mi caso, la causa número uno de abandono ha sido el aburrimiento. Aburrimiento por no haber sido capaz de llevar a la pequeña pantalla mis <em>brillantes</em> ideas en una cantidad de tiempo razonable y no haber sabido utilizar las herramientas precisas en el momento adecuado.</p>
<p>Aquella tarde me propuse en serio hacer algo, una vez más, y mientras escuchaba el Max Mix 3 se me ocurrió la idea. ¿Por qué no hacer un editor de audio especializado en este estilo de discos? En lugar del típico editor multipistas genérico capaz de hacer millones de cosas&#8230; ¿por qué no hacer uno especializado en la creación de mixes, remixes, megamixes y cualquier otro tipo de montaje musical? Siendo un friki de esta manera de marear la música lo peor que me podría pasar es que me divirtiera haciéndolo.</p>
<p>Pensaba que no iba a ser tarea fácil ya que mis conocimientos sobre audio y DSP no eran precisamente brillantes (y siguen sin serlo realmente), aunque pronto me di cuenta de que este aspecto no iba a representar ni un 10% del total. El verdadero reto era diseñar un motor de audio lo suficientemente potente como para producir resultados de calidad profesional y lo suficientemente flexible como para permitir la inclusión de nuevas <em>features</em> con el mínimo esfuerzo. Aún quedan cosas importantes por definir pero las contaré más adelante cuando diseccione la arquitectura de la aplicación.</p>
<p>Ya han pasado tres años desde ese día y hasta la fecha no he pensado ni un solo momento en abandonar, y estoy tan sorprendido de no haberlo hecho aún que he empezado este blog con la intención de hablar de vez en cuando de mi pequeño.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heydeejay.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heydeejay.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heydeejay.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heydeejay.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heydeejay.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heydeejay.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heydeejay.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heydeejay.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heydeejay.wordpress.com&amp;blog=7475225&amp;post=1&amp;subd=heydeejay&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heydeejay.wordpress.com/2009/04/23/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ebc7baf5b572cd893874b81890621fa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">trapazza</media:title>
		</media:content>
	</item>
	</channel>
</rss>
