<?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>Gustavo Villavizar &#187; Programación</title>
	<atom:link href="http://villavizar.com/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://villavizar.com</link>
	<description>Life of a Webmaster</description>
	<lastBuildDate>Fri, 18 May 2012 05:32:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Open Source en RD</title>
		<link>http://villavizar.com/programacion/open-source-en-rd/</link>
		<comments>http://villavizar.com/programacion/open-source-en-rd/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 12:23:38 +0000</pubDate>
		<dc:creator>Gustavo Villavizar</dc:creator>
				<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://villavizar.com/?p=284</guid>
		<description><![CDATA[Hará cuesión de más de un año vengo observando (quizá no con el detalle que quisiera) la industria de software de RD buscando un tema en específico, Open Source, y para mi sorpresa me encontré con que somos un país que consume el OS en demasía pero que sin embargo no producimos nada OS. En [...]]]></description>
			<content:encoded><![CDATA[<p>Hará cuesión de más de un año vengo observando (quizá no con el detalle que quisiera) la industria de software de RD buscando un tema en específico, Open Source, y para mi sorpresa me encontré con que somos un país que consume el OS en demasía pero que sin embargo no producimos nada OS.</p>
<p>En cierto modo es comprensible, siendo un país pobre, enfocamos todo lo que hacemos al lucro personal. Pero aún así, sorprende encontrar que el porcentaje de OS producido y consumido en RD está por debajo del 2% (y sinceramente creo que soy conservador).</p>
<p>No tenemos la voluntad, ni la disposición para crear y dar seguimiento a ningún tipo de software OS, lo cual es una lástima pues de allí han salido ideas estupendas.</p>
<p>Hablamos y nos regocijamos en el Open Source, nus lucramos enormemente del mismo, pero no tenemos la iniciativa para iniciar un proyecto con el fin de regresar un poco de lo que el OS nos ha brindado.</p>
<p>Ultimamente puede parecer que sólo critico a RD en mis posts, pero precisamente porque amo este país es que entiendo que debo hablar sobre lo que está mal pero que nadie habla.</p>
<p>Me gustaría conocer algunos proyectos Open Source nacidos en RD, si alguien tiene alguno para compartirlo, pueden dejarlo en los comentarios.</p>
<img src="http://villavizar.com/?ak_action=api_record_view&id=284&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://villavizar.com/programacion/open-source-en-rd/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>[Top 10+6] cosas que molestan a un programador</title>
		<link>http://villavizar.com/programacion/top-106-cosas-que-molestan-a-un-programador/</link>
		<comments>http://villavizar.com/programacion/top-106-cosas-que-molestan-a-un-programador/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 17:33:59 +0000</pubDate>
		<dc:creator>Gustavo Villavizar</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Top]]></category>

		<guid isPermaLink="false">http://villavizar.com/?p=222</guid>
		<description><![CDATA[Ayer leía con una sonrisa en mi rostro un tema escrito por Keving William Pang llamado &#8220;Top 10 Things That Annoy a Programmer&#8221; y aunque estoy 100% de acuerdo con el, creo que solo 10 cosas no son suficientes, así que aquí van las 10 cosas que según él molestan a un programador (traducidas por [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer leía con una sonrisa en mi rostro un tema escrito por <strong>Keving William Pan</strong><strong>g</strong> llamado &#8220;<a href="http://www.kevinwilliampang.com/2008/08/28/top-10-things-that-annoy-programmers/" target="_blank">Top 10 Things That Annoy a Programmer</a>&#8221; y aunque estoy 100% de acuerdo con el, creo que solo 10 cosas no son suficientes, así que aquí van las 10 cosas que según él molestan a un programador (traducidas por mi) y luego MIS 10 cosas que molestan a un programador.<br />
<span id="more-222"></span></p>
<h2>10. Comentarios que explican el &#8220;cómo&#8221; pero no el &#8220;porqué&#8221;</h2>
<p>Esto es típico, estamos programando en el código de otro y nos encontramos con esto:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">r <span style="color: #339933;">=</span> n <span style="color: #339933;">/</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Set r to n divided by 2</span>
<span style="color: #666666; font-style: italic;">// Loop while r - (n/r) is greater than t</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">abs</span><span style="color: #009900;">&#40;</span> r <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">/</span>r<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> t <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
r <span style="color: #339933;">=</span> <span style="color:#800080;">0.5</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span> r <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">/</span>r<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Set r to half of r + (n/r)</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Y el principal problema con esto es que yo entiendo lo que hace el código, si estoy trabajando con tu código es porque sé cómo funciona un while(), lo que no entiendo (y necesito entender) es con qué objetivo usaste un while en esta parte del programa. A veces cuando comentamos no nos detenemos a pensar la relevancia del comentario, sino que como está comentado ya estamos cumpliendo, tomen por ejemplo el código anterior, cambiemos el comentario y veamos si entendemos algo.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// square root of n with Newton-Raphson approximation</span>
r <span style="color: #339933;">=</span> n <span style="color: #339933;">/</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">abs</span><span style="color: #009900;">&#40;</span> r <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">/</span>r<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> t <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    r <span style="color: #339933;">=</span> <span style="color:#800080;">0.5</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span> r <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">/</span>r<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ok, para muchos seguirá siendo incomplensible, pero para un programador al menos nos pone en el camino correcto de qué hace este bloque de código. Es una de las peores cosas de trabajar con el código de otro.</p>
<h2>9. Interrupciones</h2>
<p>Muy pocos programadores pueden ir de 0 a código en un instante. Por lo general un programador toma tiempo para introducirse en el código, pero una vez que lo hacemos podemos escribir miles y miles de líneas de código semánticas sin detenernos. Desafortunadamente es muy dificil entrar en la zona de programación cuando estamos siendo constantemente distraídos por clientes, compañeros de trabajo o jefes todo el tiempo, incluso otros programadores.</p>
<p>Algo que aprendí en mi trabajo en <a href="http://www.comunique.com.do" target="_blank">comuniQue </a>es que lo mejor para programar definitivamente es desconectarse del resto del mundo.</p>
<p>Mientras programamos debemos manejar demasiada información en nuestra mente, es decir, antes de comenzar debemos tener una visión del objetivo final y luego separar ese objetivo en partes y trabajar en pequeñas porciones, pero cada porción debe ir de la mano con las demás para que mantengan concordancia. Esto es algo dificil de entender para la mayoría de los no-programadores. Las distracciones nos sacan de nuestra área y generalmente toma demasiado tiempo volver a ella.</p>
<h2>8. Scope creep</h2>
<p>Desde <a href="http://en.wikipedia.org/wiki/Scope_creep" target="_blank">Wikipedia</a>:</p>
<blockquote><p>Scope creep (also called focus creep, requirement creep, feature creep, and sometimes kitchen sink syndrome) in project management refers to uncontrolled changes in a project’s scope. This phenomenon can occur when the scope of a project is not properly defined, documented, or controlled. It is generally considered a negative occurrence that is to be avoided.</p></blockquote>
<p>No tengo mucho que decir de esto, solo pensarlo me pone los nervios de punta&#8230;pero miremos un ejemplo práctico que Kevin da:</p>
<ul>
<li>Versión 1: Mostrar un mapa de la ubicación</li>
<li>Versión 2: Mostrar un mapa <strong>3D</strong> de la ubicación</li>
<li>Versión 3: Mostrar un mapa <strong>3D</strong> de la ubicación <strong>en la que el usuario pueda navegar</strong></li>
</ul>
<p>Así de sencillo un requerimiento que en el primer planteamiento fue relativamente sencillo y de unas pocas horas de integración se convirtió en un total dolor de cabeza para cualquier programador. Este tipo de &#8220;adiciones&#8221; a un requerimiento generalmente ocurren <em>durante</em> el desarrollo y esto requiere reescribir, reestructurar y a veces votar porciones de código que previamente teníamos.</p>
<h2>7. Gerencia que no entiende de programación</h2>
<p>Resumiendo: Cuando la gerencia no conoce ni los conceptos básicos de nuestro trabajo, terminamos con Scope Creep, deadlines irrealistas y en general frustración de ambos lados de la mesa. Esta es una queja común entre programadores y la fuente de mucho enojo.</p>
<h2>6. Documentar nuestras aplicaciones</h2>
<p>Ok, desde siempre se nos ha dicho que debemos documentar todas nuestras aplicaciones, pero es un dolor en el @$$, miren todos los programas open source que hay en internet, qué es lo que normalmente buscan cuando alguien se ofrece a ayudar&#8230;&#8221;escribir la documentación&#8221;.</p>
<p>La causa de esto es simple, para cualquiera que esté en este trabajo es porque <strong>disfruta</strong> este trabajo. Siendo realistas, nadie escribiría 3786 lineas de código de no disfrutarlo. Documentar no es parte de nuestro trabajo, estamos a gusto escribiendo código que solo unos pocos entienden, pero la verdad carecemos de la capacidad de escribir una documentación que cualquiera pueda entender&#8230;a la hora de escribir documentación <strong>no podría hacerlo alguien más</strong>?</p>
<h2>5. Aplicaciones sin documentación</h2>
<p>Si, es una contradicción completa al punto anterior, estamos de acuerdo en que <strong>odiamos documentar</strong>, pero eso no significa que no la necesitemos.</p>
<h2>4. Hardware</h2>
<p>Es un error común el creer que solo porque somos programadores podemos reparar una computadora que no sube, una impresora que no imprime o una máquina que no tiene acceso al servidor. En muchos casos es cierto, pero en muchos otros no. Los no-programadores o en este caso no-informáticos en general tienden a creer que cualquiera que trabaje con algo relacionado a las computadoras debe saber repararlas, y esto no es cierto.</p>
<p>Un programador solo desea que las cosas funcionen  como deben de funcionar para que podamos seguir con nuestro trabajo. Esto pasa en compañías que tienen programadores pero no tienen nadie encargado de TI, así que en muchas ocasiones el programador debe dejar de programar y pararse a ayudar a un vendedor que no puede abrir una presentación de powerpoint en su pc, siendo que la presentación es para 2007 y la pc tiene 2003&#8230;y eso, eso <strong>es frustrante</strong>!</p>
<h2>3. Vaguedad</h2>
<p>Antes que todo si, <a href="http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&amp;LEMA=vaguedad" target="_blank">la palabra existe</a>.</p>
<p>Ahora al punto, &#8220;el website no funciona&#8221;, &#8220;no puedo loguearme&#8221;. Es un caos trabajar con requerimientos vagos. Es sorprendente ver como los no-programadores se ponen cuando se les pide que reproduzcan el error para el programador. Parecen no entender que &#8220;está dañado, repáralo&#8221; no es suficiente información para resolverlo.</p>
<p>Por eso muchas veces se dice &#8220;intenté reproducir el error y no logré hacerlo, por tanto, <strong>todo está funcionando correctamente</strong>&#8220;, esto no significa que el programador sea vago, significa que necesitamos saber el navegador, el sistema operativo, la velocidad de conexión, los datos que se estaban introduciendo, desde donde y hacia donde se dirigía cuando surgió el problema, si los CAPS Lock estaban activados o no, si el teclado es en inglés o en español&#8230;todo esto es necesario para poder encontrar y reparar un error.</p>
<h2>2. Otros programadores</h2>
<p>No comentarios en este punto&#8230;el título es muy obvio.</p>
<h2>1. El código propio, 6 meses después</h2>
<p>Para un no-programador puede ser dificil entender este punto, pero la base de un buen programador es la evolución constante. Un programador que no evolucione en 6 meses ya no puede llamarse a si mismo programador.</p>
<p>Lo cierto es que cada vez que tenemos que volver a trabajar en una aplicación que hicimos hace 6 meses o un año, muchas veces preferimos escribir el código desde 0. Esto no es malo, es solo que a un programador le cuesta mucho seguir las malas prácticas, la tecnología y la programación como tal evolucionan, la forma de hacer algo hoy es mucho más sencilla que la forma de hacer eso mismo hace 6 meses, por tanto es repulsivo tener que trabajar con un código no óptimo.</p>
<p>Les pongo un simple ejemplo, en cierto proyecto necesitaba mostrar una fecha en español desde la base de datos. Este fue el primer código que usé:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$fecha</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fecha'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$date</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;-&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$fecha</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$time</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;:&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$fecha</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dia</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;l&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$search</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sunday&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Monday&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Tuesday&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Wednesday&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Thursday&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Friday&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Saturday&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$replace</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Domingo&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Lunes&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Martes&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Miércoles&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Jueves&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Viernes&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Sábado&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dia</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search</span><span style="color: #339933;">,</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span><span style="color: #000088;">$dia</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$mes</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;M&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$search2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Jan&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Apr&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Aug&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$replace2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ene&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Abr&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Ago&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$mes</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search2</span><span style="color: #339933;">,</span><span style="color: #000088;">$replace2</span><span style="color: #339933;">,</span><span style="color: #000088;">$mes</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$meridiano</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;a&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$date</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Rústico si, pero funcionó bastante bien. Luego perfeccioné ese código, en un nuevo proyecto descubrí que puedo lograr el mismo resultado con el siguiente código:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'es_ES'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%A %d de %b del %Y a las %X'</span><span style="color: #339933;">,</span><span style="color: #990000;">strtotime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fecha'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Cool eh? Acabo de convertir 12 líneas de código en 2&#8230;imagínen mi impresión cuando tuve que volver a trabajar con el primer proyecto y me encontré con ese código&#8230;qué creen que hice, lo dejé tal cual y resolví el asunto o lo cambié por el nuevo código? Por supuesto que lo cambié, si no lo hubiera hecho no habría podido dormir esa noche (si, así de grave es mi caso), en este caso no vale eso de que si no está roto no lo arregles, porque desde el punto de vista de un programador <strong>SI ESTA ROTO</strong>.</p>
<p>Estas son las 10 cosas que molestan a un programador según <a href="http://www.kevinwilliampang.com/">Kevin William Pang</a>, ahora les expreso otras 6 cosas que molestan a un programador según <strong>Gustavo Villavizar</strong>.</p>
<h2>6. La superposición del cliente</h2>
<p>La superposición del cliente indica cuando un cliente solicita un nuevo feature a una aplicación, el contacto del cliente le dice &#8220;Ok&#8221;. Esa persona no hace preguntas, no sabe hacerlas, por tanto le queda al programador la tarea de realizar ese requerimiento sin importar si conviene o no, si es factible, si es posible, pero hay que hacerlo porque ya se le dijo al cliente que si.</p>
<h2>5. Trabajar con el código de otro</h2>
<p>Este caso indica una relación entre varios puntos que he mencionado antes&#8230;es dificil trabajar con el código de otro.</p>
<h2>4. Demasiados nodos en la cadena</h2>
<p>Esto es demasiado común. Cuando hay muchos intermediarios entre el cliente y el programador se hace mucho más dificil desarrollar los requerimientos del cliente. El cliente hace un requerimiento, tarda mucho tiempo en llegar al programador y si el programador lo rechaza tarda mucho en llegar de nuevo al cliente, en esta etapa el cliente entiende que al haber pasado tanto tiempo su requerimiento fue aceptado y que se está trabajando en eso, es problemático cuando se le cambia la idea al cliente con la respuesta del programador.</p>
<h2>3. Gente que cree que sabe programar</h2>
<p>Un ingeniero de sistemas graduado en 1993, un programador de Cobold, un programador de aplicaciones Win32 que creen que saben cómo programar para web&#8230;¡esto es fatal! Por favor entiéndelo, Windows y la Web no funcionan igual.No eres programador web así que deja de pensar que entiendes mi trabajo o pero aún, que sabes más que yo del mismo.</p>
<p>Esta es una de las principales razones por las cuales un programador independiente rechaza un proyecto luego de haberlo iniciado, no es por falta de responsabilidad, es que se vuelve imposible trabajar así.</p>
<h2>2. Clientes que lidian con términos complejos de los cuales no entienden</h2>
<p>A veces, cuando las estrellas se alínean, algún no-programador lee un post sobre programación o escucha una conferencia y aprende términos nuevos, y los quieren usar.</p>
<p>Cuando te piden un proyecto minimalista como el website de Apple, generalmente quieren una página con fondo blanco y muchas imágenes. Cuando te piden que el proyecto tenga la tendencia KISS pero que tenga 13 mil features, cuando te piden que la página sea fácil de usar pero que tenga comunicación de marca, etc.</p>
<h2>1. Cuando creen que el programador también es diseñador y hasta copywriter</h2>
<p>¿Alguien se siente identificado con esto? El cliente hace un requerimiento y el programador debe realizarlo, integrarlo con el diseño y escribir el texto correcto en el website&#8230;cuesta trabajo decirle a un cliente que somos programadores, no diseñadores ni copywriters, y peor aún es cuando se lo has dicho en los dos requerimientos anteriores y en este tienes que repetirselo.</p>
<p>Leyendo todo el post nuevamente parece una especie de rabieta, pero estoy seguro de que mis colegas programadores y algunos no-programadores se sentirán identificados con algunos de los puntos que expreso en esta entrada.</p>
<p>Si olvidé alguno, son bienvenidos a expresarlos en los comentarios.</p>
<img src="http://villavizar.com/?ak_action=api_record_view&id=222&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://villavizar.com/programacion/top-106-cosas-que-molestan-a-un-programador/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Microsoft toma cartas en el asunto de los navegadores</title>
		<link>http://villavizar.com/general/microsoft-toma-cartas-en-el-asunto-de-los-navegadores/</link>
		<comments>http://villavizar.com/general/microsoft-toma-cartas-en-el-asunto-de-los-navegadores/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 17:00:15 +0000</pubDate>
		<dc:creator>Gustavo Villavizar</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://villavizar.com/index.php/?p=109</guid>
		<description><![CDATA[No tienen idea de lo que me alegra leer esta noticia (vía Bitelia) que cito a continuación. Los chicos de Microsoft están haciendo esfuerzos para que todos los usuarios de su navegador actualicen a la última versión, para lo cual han implantando estrategia basada en actualizaciones mediante Windows Update. A partir de la siguiente semana [...]]]></description>
			<content:encoded><![CDATA[<p>No tienen idea de lo que me alegra leer esta noticia (vía <a href="http://bitelia.com/" target="_blank">Bitelia</a>) que cito a continuación.</p>
<p style="padding-left: 30px;">Los chicos de Microsoft están haciendo esfuerzos para que todos los usuarios de <img class="alignright size-full wp-image-110" title="ie8-beta" src="http://villavizar.com/wp-content/uploads/2009/04/ie8-beta.png" alt="ie8-beta" width="284" height="290" />su navegador actualicen a la última versión, para lo cual <a href="http://blogs.msdn.com/ie/archive/2009/04/10/prepare-for-automatic-update-distribution-of-ie8.aspx">han implantando estrategia</a> basada en actualizaciones mediante Windows Update.</p>
<p style="padding-left: 30px;">A partir de la siguiente semana los usuarios de Windows Server 2008, 2003, Windows Vista y XP <strong>recibirán aviso automático de Windows Update para pasarse a la última versión del navegador</strong>, constando como una actualización de Alta Prioridad para los sistemas XP y Server 2003 y actualización Importante para Vista y Server 2008.</p>
<p style="padding-left: 30px;">Ahora bien, estos de Microsoft siempre dan una de cal y otra de arena. No entiendo por qué, a la vez que sacan esta estrategia, también <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=21687628-5806-4ba6-9e4e-8e224ec6dd8c&amp;displaylang=en">presentan un pequeño programa</a> <strong>para que quien quiera pueda bloquear la instalación de IE8</strong>. Creo que es hora de que todos los usuarios se actualicen sin condición, si no corremos el peligro de lo que hemos vivido hasta la fecha: muchos usuarios funcionando aún con la arcaica versión 6 de Internet Explorer.</p>
<p style="padding-left: 30px;">Esperemos que esto surta efecto y la gran mayoría se pase a Internet Explorer 8, la última versión y por lo tanto la más “fina” y a la que se le dará soporte de fallos, seguridad etc.</p>
<p style="padding-left: 30px;"><strong>Fuente:</strong> <a href="http://bitelia.com/2009/04/13/microsoft-quiere-que-actualices-a-internet-explorer-8/" target="_blank">Bitelia</a></p>
<p>No puedo decir más que ojalá y esto sirva para reducir la quota de mercado de IE6. De nuestra parte solo nos queda, <a href="http://villavizar.com/index.php/2009/03/21/iniciativa-noie6day/">ayudar a Microsoft con esta medida</a>.</p>
<img src="http://villavizar.com/?ak_action=api_record_view&id=109&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://villavizar.com/general/microsoft-toma-cartas-en-el-asunto-de-los-navegadores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iniciativa NOIE6Day</title>
		<link>http://villavizar.com/general/iniciativa-noie6day/</link>
		<comments>http://villavizar.com/general/iniciativa-noie6day/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 16:37:14 +0000</pubDate>
		<dc:creator>Gustavo Villavizar</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://villavizar.com/index.php/?p=100</guid>
		<description><![CDATA[Me he enterado de una propuesta que ha iniciado Andrés Nieto a favor de acelerar la descontinuación de Internet Explorer 6 de una vez y por todas de nuestras vidas. Me ha parecido tan buena que me inscribí en ella para seguir la iniciativa, a continuación les detallo porqué me agrada la iniciativa, en qué [...]]]></description>
			<content:encoded><![CDATA[<p>Me he enterado de una propuesta que ha iniciado <a href="http://www.anieto2k.com">Andrés Nieto</a> a favor de acelerar la descontinuación de Internet Explorer 6 de una vez y por todas de nuestras vidas. Me ha parecido tan buena que me inscribí en ella para seguir la iniciativa, a continuación les detallo porqué me agrada la iniciativa, en qué consiste y cómo pueden unirse a ella.</p>
<p><span id="more-100"></span>Bien, para empezar. La iniciativa se llama <strong>NOIE6Day</strong> y consiste en que a partir de un día en específico (por ahora el 18 de Octubre del 2009) los sitios que sigan la iniciativa se motrarán sin estilos CSS a los visitantes que entren con Internet Explorer 6.</p>
<h2>¿Porqué una iniciativa para descontinuar IE6, si yo lo uso y funciona?</h2>
<p>Pues es relativamente simple, IE6 es la pesadilla de los desarrolladores.  Los avances tecnológicos son muy buenos pero los usuarios de IE6 nos frenan en nuestro avance, pues por mucho que querramos usar nuevas y mejores tecnologías debemos detenernos y perder horas, días o hasta semanas de tiempo para poder hacer nuestros trabajos compatibles con ese explorador.</p>
<p>Si hoy en día la mayoría de las páginas de internet funcionan en IE6 es por la dedicación de muchos desarrolladores al sentarse días y días a hacer que sus aplicaciones funcionen también en IE6 (es decir, hay que dedicar tiempo extra sólo para que la página funcione <strong>también</strong> en IE6).</p>
<p>Pero incluso no este el principal motivo, sino que muchas veces para lograr buena integración debemos restringir ciertas acciones o efectos a los usuarios de IE6, así que en muchos casos al navegar con IE6 se pierden detalles de un website, que si bien no son vitales, no está en la idea de un desarrollador que cierto grupo de sus usuarios no puedan ver algo que pensamos e ideamos y desarrollamos para ellos.</p>
<h2>¿Y porqué no desarrollan para IE6?</h2>
<p>Porque nos limita y nos atraza. IE6 no se actualiza desde el año 2004. No es culpa de los desarrolladores que IE6 sea un atrazo tecnológico, sino de los usuarios que aún lo usan. Es como andar en caballo en estos días.</p>
<h2>¿Y qué hago si quiero cambiarme?</h2>
<p>Hay muchas mejores alternativas en internet completamente gratis, más rápidas y seguras.</p>
<p>De parte de <strong>Microsoft </strong>tenemos: <a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx">Internet Explorer 8</a></p>
<p>De parte de <strong>Apple </strong>tenemos: <a href="http://apple.com/safari">Safari</a></p>
<p>De parte de <strong>Google </strong>tenemos: <a href="http://www.google.com/chrome">Google Chrome</a></p>
<p>De parte de <strong>Mozilla </strong>tenemos: <a href="http://getfirefox.com">Firefox</a></p>
<p>Y hay más en internet. Alternativas hay cientos.</p>
<h2>¿Cómo sigo la iniciativa?</h2>
<p>En el siguiente enláce <a href="http://www.anieto2k.com/2009/02/25/noie6day-la-iniciativa-20/">encontrarán toda la información necesaria</a>.</p>
<p>Por mi parte seguiré la iniciativa, a partir del 18 de octubre ninguno de los sites que haga tendrán hojas de estilo en IE6.</p>
<p>¿Alguién se une a la iniciativa?</p>
<img src="http://villavizar.com/?ak_action=api_record_view&id=100&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://villavizar.com/general/iniciativa-noie6day/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Más de 2.400 sitios grandes son incompatibles con IE8</title>
		<link>http://villavizar.com/programacion/mas-de-2400-sitios-grandes-son-incompatibles-con-ie8/</link>
		<comments>http://villavizar.com/programacion/mas-de-2400-sitios-grandes-son-incompatibles-con-ie8/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:11:19 +0000</pubDate>
		<dc:creator>Gustavo Villavizar</dc:creator>
				<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://villavizar.com/index.php/?p=83</guid>
		<description><![CDATA[Leí este tema en FayerWayer y no puedo evitar mencionarlo&#8230; Por muy avanzado y por mucho que trate de adaptarse a los estándares de Internet, la nueva versión 8 del navegador de Microsoft todavía tiene mucho camino que recorrer para arreglar lo que una vez rompió. Oficialmente, Microsoft dice que su versión candidata a la [...]]]></description>
			<content:encoded><![CDATA[<p>Leí este tema en FayerWayer y no puedo evitar mencionarlo&#8230;</p>
<p>Por muy avanzado y por mucho que trate de adaptarse a los estándares de Internet, la nueva versión 8 del navegador de Microsoft todavía tiene mucho camino que recorrer para arreglar lo que una vez rompió.</p>
<p>Oficialmente, Microsoft dice que su versión candidata a la final, <a href="http://www.fayerwayer.com/2009/01/microsoft-internet-explorer-8-rc1-ya-esta-disponible/">la RC1</a>, no es compatible con más de 2.400 sitios importantes, o sea, de gran tráfico.</p>
<p>Del total de la lista, los sitios incompatibles más conocidos son:</p>
<ul>
<li>microsoft.com</li>
<li>google.com</li>
<li>yahoo.com</li>
<li>msn.com.cn</li>
<li>live.com</li>
<li>youtube.com</li>
<li>thepiratebay.org</li>
<li>wikipedia.org</li>
<li>flickr.com</li>
<li>wordpress.com</li>
<li>sony.com</li>
<li>adobe.com</li>
<li>facebook.com</li>
<li>imdb.com</li>
<li>dell.com</li>
<li>nytimes.com</li>
<li>apple.com</li>
</ul>
<p>Me parece increíble, incluso me atrevo a decir que con IE8 han dado pasos hacia atrás con respecto a la versión 7 (que al menos había adoptado algunos estándares).</p>
<p>Y lo más curioso de todo es, explíquenme, cómo puede cualquier browser ser <strong>no compatible</strong> con google.com!?</p>
<h4>Vía: <a href="http://www.fayerwayer.com/2009/02/mas-de-2400-sitios-grandes-son-incompatibles-con-ie8/">FayerWayer</a></h4>
<img src="http://villavizar.com/?ak_action=api_record_view&id=83&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://villavizar.com/programacion/mas-de-2400-sitios-grandes-son-incompatibles-con-ie8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

