<?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>Dupermag &#187; duperrific</title>
	<atom:link href="http://dupermag.com/tag/duperrific/feed/" rel="self" type="application/rss+xml" />
	<link>http://dupermag.com</link>
	<description>Armando Sosa sobre startups, tecnología y diseño</description>
	<lastBuildDate>Mon, 19 Mar 2012 16:34:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>CSML</title>
		<link>http://dupermag.com/2009/12/14/csml/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=csml</link>
		<comments>http://dupermag.com/2009/12/14/csml/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 19:43:41 +0000</pubDate>
		<dc:creator>Armando Sosa</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[csml]]></category>
		<category><![CDATA[dte]]></category>
		<category><![CDATA[duperrific]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dupermag.com/?p=634</guid>
		<description><![CDATA[CSML es una pequeña clase (requiere PHP5) que permite generar tags de HTML, usando selectores de CSS]]></description>
			<content:encoded><![CDATA[	<p>CSML es una peque&#241;a clase (requiere PHP5) que permite generar tags de HTML, usando selectores de CSS sin salir de sus bloques de c&#243;digo, sin necesidad de hacer complicadas concatenaciones ni aprender sintaxis complicadas.</p>

	<p><a href="http://github.com/soska/csml/archives/master"><img src="http://dupermag.com/wp-content/uploads/2009/12/download-button.png" alt="download-button" title="download-button" width="300" height="100" /></a></p>

	<p>Hay una cosa que odio: mezclar bloques de PHP con bloques de HTML. Ser&#225; que CakePHP me ha mal acostumbrado a tener separadas las vistas de la l&#243;gica, pero de verdad me molesta c&#243;digo que se ve as&#237; (tomado del tema default de WordPress):</p>

	<p><script src="http://gist.github.com/256319.js?file=wordpress-sidebar.php"></script></p>

	<p>No se a ustedes, pero a m&#237; tanto <code> &lt;? ?&gt;  </code> me marea y luego se me hace muy dificil entender donde empieza y donde termina un bloque. Desgraciadamente &#233;ste tipo de programaci&#243;n es muy com&#250;n en el mundo de WordPress, algunos pupulares temas y plugins son verdaderos spaghettis indescifrables, y esto es en cierta manera porque asi es la manera en que WP est&#225; escrito.</p>

	<p>CakePHP, por otra parte, tiene una soluci&#243;n interesante para este <em>problema</em> (en realidad, creo que es una soluci&#243;n para un problema distinto, pero denme chance) en la forma del <a href="http://api.cakephp.org/class/html-helper#method-HtmlHelperdiv">HTMLHelper</a>, pero para tags complicados y con muchos  atributos, el c&#243;digo se vuelve demasiado y a mi siempre me cuesta recordar el orden de los parametros.</p>

	<p>Cuando decid&#237; aventarme a crear temas premium para WP, una soluci&#243;n para &#233;ste problema fue una de las principales razones para escribir el <a href="http://github.com/soska/dte">Duperrific Theme Engine</a> de donde finalmente extraigo lo que ahora les presento como CSML.</p>

	<p>Ejemplo:<br />
<script src="http://gist.github.com/256319.js?file=csml-example-1.php"></script></p>

	<p>Como ver&#225;s <code>csml::tag()</code> toma un selector como parametro y regresa un tag de HTML, mientras que <code>csml::entag()</code> toma una cadena y la envuelve con el selector designado en el segundo parametro. En el caso de <code>csml::entag()</code> el segundo parametro tambien puede ser un array de selectores, lo que har&#225; que anide los selectores uno dentro de otro, empezando por el &#250;ltimo selector del array.</p>

	<p>Aunque la forma m&#225;s facil de utilizar csml, es usando las dos funciones inclu&#237;das: <code>t()</code> y <code>en()</code> que son wrappers para <code>csml::tag()</code> y <code>csml::entag()</code> respectivamente y adem&#225;s imprimen el tag.</p>

	<p>Un ejemplo m&#225;s de la vida real:<br />
<script src="http://gist.github.com/256319.js?file=csml-example-2.php"></script></p>

	<p>Apenas estoy empezando en esto de liberar cosas que he hecho, as&#237; que espero que les resulte tan &#250;til como a m&#237; me ha resultado. Si la usan me avisan y si encuentran alg&#250;n bug me dicen o, mejor a&#250;n, <a href="http://github.com/soska/csml">forkean el proyecto</a> y lo arreglan.</p>

	<p><a href="http://github.com/soska/csml/"><img src="http://dupermag.com/wp-content/uploads/2009/12/download-button.png" alt="download-button" title="download-button" width="300" height="100" /></a></p>


 ]]></content:encoded>
			<wfw:commentRss>http://dupermag.com/2009/12/14/csml/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Duperrific Manifesto &#8211; parte I</title>
		<link>http://dupermag.com/2009/03/24/duperrific-manifesto-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=duperrific-manifesto-1</link>
		<comments>http://dupermag.com/2009/03/24/duperrific-manifesto-1/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 22:33:11 +0000</pubDate>
		<dc:creator>Armando Sosa</dc:creator>
				<category><![CDATA[diseño]]></category>
		<category><![CDATA[temas]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[duperrific]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dupermag.com/?p=542</guid>
		<description><![CDATA[Como algunos ya saben, estoy a punto de lanzar una tienda de temas premium, cuyo nombre ser&#225; Duperrific y en un ejercicio de desvergonzada auto-promoci&#243;n, hoy les quiero platicar por qu&#233; mis temas ser&#225;n distintos a lo que ya existe en el mercado y por qu&#233; quiz&#225;, querr&#237;as comprar uno. La primera cosa que not&#233; [...]]]></description>
			<content:encoded><![CDATA[	<p>Como algunos ya saben, estoy a punto de lanzar una tienda de temas premium, cuyo nombre ser&#225; <a href="http://duperrific.com">Duperrific</a> y en un ejercicio de desvergonzada auto-promoci&#243;n, hoy les quiero platicar por qu&#233; mis temas ser&#225;n distintos a lo que ya existe en el mercado y por qu&#233; quiz&#225;, querr&#237;as comprar uno.</p>

	<p>La primera cosa que not&#233; en los temas que se venden como premium en el mercado es al parecer su enfoque es muy estrecho. Pareciera que su &#250;nico objetivo es verse <strong>muy bien</strong> y ser muy atractivo para el usuario final o lector del sitio y dejan de lado a <a href="http://dupermag.com/2009/03/19/los-4-roles-que-intervienen-en-un-sitio-web/">los otros roles que intervienen en un sitio web</a>: desarrolladores, dise&#241;adores y editores o colaboradores, d&#225;ndoles poca o ninguna importancia.</p>

	<p>Con esto en mente me puse una serie de reglas o lineamientos que ten&#237;a que seguir a la hora de desarrollar mis temas, con la premisa de que no liberar&#237;a nada hasta que pudiera satisfacer todas ellas. Este es el Duperrific Manifesto:<br />
<ol><br />
<li><strong>La usabilidad es primero, la apariencia viene despu&#233;s</strong>. Antes de comenzar hay que tener nuestras prioridades en su lugar.<strong> </strong></li><br />
<li><strong>Ofrecer soluciones completas y en paquete</strong>. Mi cliente no tiene porque buscar entre miles de plugins para ver cual satisface sus necesidades, todo lo que necesita viene empaquetado en su descarga.</li><br />
<li><strong>Ofrecer un verdadero framework de desarrollo.</strong> Donde al igual que en todos los frameworks que se respetan: &#8220;Convenci&#243;n sobre configuraci&#243;n&#8221; es la frase clave.</li><br />
<li><strong>Escribir c&#243;digo extensible y reutilizable.</strong> &#191;Por qu&#233; repetir c&#243;digo?</li><br />
<li><strong>Programar Orientado a Objetos. </strong>Tanto como WP, que es casi completamente funcional lo permita.</li><br />
<li><strong>Los temas deben ser absoloutamente flexibles.</strong> Los widgets, son una poderosa caracter&#237;stica que WordPress trae de f&#225;brica y que a&#250;n no se ha aprovechado cual debe ser.</li><br />
<li><strong>Configurar el sitio debe ser sencillo</strong>.&#160; El dise&#241;ador no tiene por que editar una l&#237;nea de c&#243;digo. WP nos permite a&#241;adir nuevos paneles de control a la administraci&#243;n del sitio, d&#233;mosle buen uso.</li><br />
<li><strong>Crear contenido debe ser simple</strong>. Por lo tanto, las funcionalidades avanzadas de nuestros temas deben ser abstra&#237;das. Los editores no tienen por que saber qu&#233; es un campo personalizado para meterle una foto a un art&#237;culo.</li><br />
</ol><br />
En los pr&#243;ximos post, les contar&#233; de como cumplir est&#225;s reglas es mucho m&#225;s complicado de lo que parece, y quiz&#225; les adelante como logramos algunas de ellas.</p>


 ]]></content:encoded>
			<wfw:commentRss>http://dupermag.com/2009/03/24/duperrific-manifesto-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Los 4 Roles que intervienen en un sitio web</title>
		<link>http://dupermag.com/2009/03/19/los-4-roles-que-intervienen-en-un-sitio-web/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=los-4-roles-que-intervienen-en-un-sitio-web</link>
		<comments>http://dupermag.com/2009/03/19/los-4-roles-que-intervienen-en-un-sitio-web/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 18:08:09 +0000</pubDate>
		<dc:creator>Armando Sosa</dc:creator>
				<category><![CDATA[temas]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[duperrific]]></category>
		<category><![CDATA[necesidades]]></category>
		<category><![CDATA[opiniones]]></category>
		<category><![CDATA[premium]]></category>
		<category><![CDATA[roles]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dupermag.com/?p=534</guid>
		<description><![CDATA[Siguiendo con lo de los premium themes, me pareci&#243; que la mejor manera de desarrollar un producto que diera justo en el clavo era estudiando a mi mercado meta, ver sus necesidades y buscar la manera m&#225;s eficaz de resolverlas. Estuve meditando mucho al respecto, estudiando las propuestas del mercado y compar&#225;ndolas con necesidades reales [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://dupermag.com/2009/02/23/%c2%bfque-esperamos-de-un-tema-premium/">Siguiendo con lo de los <em lang="en">premium themes</em></a>, me pareci&#243; que la mejor manera de desarrollar un producto que diera justo en el clavo era estudiando a mi mercado meta, ver sus necesidades y buscar la manera m&#225;s eficaz de resolverlas.  </p>

	<p>Estuve meditando mucho al respecto, estudiando las propuestas del mercado y compar&#225;ndolas con necesidades reales que me he topado en estos 5 a&#241;os que llevo desarrollando para la web y estas son mis conclusiones.</p>

	<p><span id="more-534"></span></p>

	<h3>Las Necesidades de Los Diferentes Roles Usuario</h3>

	<p>Personalmente, identifiqu&#233; 4  <em>roles</em> que tienen parte en un sitio <em>powered by wp</em> y <strong>deben ser tomados en cuenta</strong>: El Programador, El Dise&#241;ador, El Editor y El Usuario Final. N&#243;tese que hablo de <em>roles</em> y no de personas puesto que a menudo una sola persona desempe&#241;a m&#225;s de un papel o es un equipo completo el que se dedica a cierta tarea.</p>

	<p><strong>El Programador</strong> es el que entiende bien &#8211;o <em>m&#225;s o menos</em> bien&#8211; el c&#243;digo que hace funcionar a WordPress y realiza temas o plugins que se adapten a las necesidades de su cliente o de su usuario final. </p>

	<p>Los mejores programadores se preocupan por un c&#243;digo limpio, ordenado y bien documentado y est&#225;n dispuestos a seguir convenciones que refuercen la limpieza y confiabilidad, as&#237; como la reusabilidad de su c&#243;digo.</p>

	<p>Por alguna raz&#243;n &#233;sta no parece ser una cultura extendida en el mundo de WordPress y una gran mayor&#237;a de los temas y plugins existentes parecen m&#225;s que fueron hackeados al paso que desarrollados con los est&#225;ndares arriba descritos. Quiz&#225; solo sea que despues de pasar mucho tiempo en los mundos de <a href="http://cakephp.org">CakePHP</a>, <a href="http://jquery.org">jQuery</a>, <a href="http://rubyonrails.org">RoR</a> y <a href="http://cappuccino.org">Cappuccino</a> me volv&#237; quisquilloso.</p>

	<p>Al <strong>Dise&#241;ador</strong> le toca la parte que se ve y la que le da la cara al usuario final. Aunque para que un dise&#241;ador web sea m&#225;s completo es bueno que sepa HTML, CSS y hasta PHP o JavaScript estas deben ser entendidas como habilidades accesorias o <em>plus</em> pero que no forman parte del quehacer propio de un dise&#241;ador.</p>

	<p>Idealmente el dise&#241;ador deber&#237;a estar preocupado por el <em>branding</em>, por la legibilidad, por comunicar y resolver problemas gr&#225;ficamente y deber&#237;a poder lograrlo de forma intuitiva y gr&#225;fica sin necesidad de andar desenredando loops anidados.</p>

	<p>Desgraciadamente poco desarrolladores de temas para WP toman en cuenta al dise&#241;ador <em>de a pie</em> y hacen que implementar un dise&#241;o a partir de un tema sea una labor tediosa y estresante.</p>

	<p>Para <strong>El Editor</strong>, que es la persona encargada de meterle el contenido al sitio las cosas est&#225;n f&#225;ciles si el sitio se trata de un blog convencional porque, seamos sinceros, para eso fue dise&#241;ado WordPress. Si queremos algo m&#225;s, as&#237; sea una modificaci&#243;n tan cercana como una revista electr&#243;nica en lugar de un blog entonces las cosas comienzan a ponerse feas.</p>

	<p>Imaginate explicarle al editor que en ocasiones un post no es un post sino que puede ser un producto o una fotograf&#237;a depende de en que categor&#237;a lo coloque. Que a veces el campo &#8220;excerpt&#8221; es para poner un <em>teaser</em> del post pero en otras ocasiones se trata del pie de p&#225;gina de una foto. Que por cierto la foto debes recortarla en 3 diferentes tama&#241;os y luego subirla, copiar la url y pegarla en un <em>custom field</em> que debe llevar un nombre determinado.</p>

	<p>Y para el <strong>Usuario Final</strong> o lector o c&#243;mo uno quiera llamarle, todo debe ser transparente y f&#225;cil de usar. Hace poco escuchaba una entrevista con Irene Rosenfeld, CEO de Kraft Foods donde dec&#237;a que al vender comida el factor decisivo es que &#233;sta <strong>tenga buen sabor</strong>.</p>

	<p>Con los sitios web sucede algo parecido, el factor decisivo es que al usuario final <strong>le sea &#250;til</strong>, sin este factor, lo dem&#225;s no sirve de nada.</p>

	<h3>Resolviendo Necesidades</h3>

	<p>En los &#250;ltimos dos meses he estado experimentando y probando diferentes maneras de resolver los problemas que he planteado en &#233;ste post y me siento confiado en que encontr&#233; la mejor manera de resolverlas. </p>

	<p>En una siguiente entrefa les platicar&#233; mi <em lang="en">approach</em> y como estoy resolviendo estos problemas en mi propia linea de <em lang="en">premium themes</em> que <a href="http://duperrific.com">voy a lanzar muy, muy pronto</a></p>

	<p>Si piensan que estoy completamente equivocado, ya saben &#8220;c&#243;mo decirmelo&#8221;#respond</p>


 ]]></content:encoded>
			<wfw:commentRss>http://dupermag.com/2009/03/19/los-4-roles-que-intervienen-en-un-sitio-web/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

