jueves, 17 de marzo de 2011

Lenguajes, lenguajes, lenguajes

Según Eric Raymond, uno de los principios de diseño de UNIX que se ha demostrado beneficioso después de todos estos años es el uso de los llamados minilenguajes. Estos lenguajes permiten elevar el nivel de abstracción y centrarse en problemas más concretos, con lo que se consigue más con menos líneas de código y por lo tanto de forma más productiva y con menos errores. Curiosamente, brevedad y potencia son términos intercambiables para mucha gente.

Un ejemplo característico del UNIX original fue la creación de makefiles para mantener los scripts de compilación en lugar de utilizar shell scripts. Un makefile permite declarar las dependencias entre los ejecutables, el código objeto y los ficheros fuentes y cómo compilar y enlazar los distintos elementos. El resultado es breve y capaz de compilar sólo los fuentes que han cambiado desde la última vez.

Ya que distintos lenguajes son apropiados para diferentes tareas, ¿por qué no experimentar con algunas herramientas libres? Justo rondaba esta idea por mi cabeza cuando tenía que preparar material para dar un pequeño curso de HTML y CSS.

Mi primera intención fue buscar alguna plantilla para hacer presentaciones en HTML y encontré un par de proyectos interesantes. Me resultó interesante Slippy, que proporciona una estructura en la que se añaden transparencias mediante un pre de clase slide:

 
<div class="slide"> 
    <h2>Bubbling Events</h2> 
    <p>Device events: key*, mouse*, click</p> 
    <br /> 
    <h2>Non-Bubbling Events</h2> 
    <p>focus, blur, change, submit, ..</p> 
    <br />
<p>Capture them! Fails in IE < 9 though.</p> <p>Proprietary events (focusin/focusout/..?) that are bubbling are an alternative.</p> </div>

Lo divertido de todo esto es que, gracias a un poco de JavaScript, se tienen los mismos atajos de teclado y aspecto que en una presentación hecha de forma tradicional. Pero con la ventaja de poder incluir cualquier cosa que podamos poner en una web y con todas las facilidades de que baste con repartir una URL al alumnado.

Al final, me decanté por Slidy, un proyecto que sigue una filosofía muy parecida del mismo autor que HTML Tidy, porque me pareció más limpio y reutilizable (y por que permitía crear transparencias con scroll).

Sin embargo, aunque poder poner los ejemplos de HTML y CSS en la propia transparencia es muy cómodo, escribir texto normal en HTML no es algo cómodo. Si lo fuese, la wikipedia se editaría directamente en HMTL (más bien un subconjunto). Para esta tarea está mucho mejor diseñado Markdown, una idea genial de Jonh Gruber que consiste en adoptar las convenciones típicas de la escritura de documentos en texto plano (ya olvidadas por el gran público) y, traducirlas a otros formatos como HTML, RTF, LaTeX...

La solución final que adopté fue combinar la plantilla de Slidy con el cuerpo del texto en Markdown (que permite incluir HTML por medio). De entre los muchos traductores de Markdown, utilicé Pandoc, un interesante proyecto hecho en Haskell. El resultado final lo podéis ver aquí.

Otros ilustres exlabos, jlopez y jmostazo han contribuido con mejoras a la plantilla que podéis encontrar (con un tema CoNWeT Lab) en este repo de github. Enjoy!