Microformatos en TextMate

Acabo de enviar a la lista de correo de TextMate mi pequeña contribución al desarrollo de los Microformatos: un bundle de TextMate con dos snippets para hCalendar y hCard, que harán tu vida un pelín más fácil si quieres empezar a trastear con la “web semántica en minúsculas”.

Puedes bajarte el bundle aquí.

Y esto es un pequeño screencast de cómo funciona:

Si estás leyendo este post usando un lector de feeds, puede que tengas que visitar la web para ver el vídeo…

Intentaré ir ampliando el bundle con otros microformatos (hReview es el próximo) y haciéndolo un pelín más inteligente (lo de componer timestamps a mano en hCalendar acaba resultando un poco pesado :)

Update: He creado un repositorio de Subversion para el bundle. Iré actualizándolo con ideas que han propuesto en la lista… El acceso de lectura es público (sin usuario ni contraseña). Para hacer un checkout del bundle:

svn co http://sofanaranja.com/subversion/textmate/bundles/microformate/

(o usa mi cliente favorito de Subversion después de la línea de comando y el propio TextMate: ZigVersion)

Estadísticas absurdas

Revisando las estadísticas de este humilde site, compruebo algunos datos interesantes:

  • Sólo el 6% de los usuarios navega a 800×600
  • El 90% usa resoluciones iguales o superiores a 1024×768 (mención especial para el que sea que visita esta web con 2560 x 1600, me has matado de envidia)
  • El 32% de los visitantes no usa Windows
  • Firefox ya es mayoría aplastante, y Explorer sólo tiene el doble de usuarios que Safari
  • Aún más… si sumamos todos los navegadores que no son Firefox ni Explorer, el porcentaje es más alto que el de usuarios de Explorer
  • El porcentaje de usuarios que no tiene Flash instalado es casi igual que el de usuarios de Epiphany

En vista de todo ello, el próximo rediseño de Sofá Naranja será para 1600×1200, todo en Flash, y lo probaré en Opera antes que en Explorer.

O no… quién sabe… :P

Mi crónica de Fundamentos Web 2006…

…se resume en este pequeño vídeo:

Si estás leyendo este post usando un lector de feeds, puede que tengas que visitar la web para ver el vídeo…

Herramientas para desarrollo web “hardcore” en Mac

A raíz del post sobre jQuery, estuve revisando la web de AquaPath para ver si había alguna novedad.

Y me he encontrado con una colección de herramientas impresionante para desarrolladores web estilo “hardcore” (i.e: de los que escriben su código directamente con unos y ceros : )

Algunas, como XMLNanny, ya las conocía. Pero hay suculentas novedades en la lista.

Algunas de las herramientas que encontraremos son:

  • XMLNanny: Un validador XML y XHTML, perfecto para validar código que tienes en local sin volverte loco con los validadores del W3C.
  • Safari Guide: Para evaluar expresiones XPath, XQuery, XSLT y JavaScript en el documento que tengamos abierto en Safari.
  • AquaPath: Una utilidad que nos permitirá evaluar expresiones XPath 2.0 en documentos XML (incluyendo XHTML), viendo el resultado gráficamente.
  • OttoMate: Para automatizar el testing de sitios web usando Automator, parecido a Selenium, pero para Safari.
  • XML-RPC Client: Un cliente gráfico para servicios XML-RPC (WordPress, por ejemplo)

Hay más, pero así de repente estas son las más interesantes (o al menos las que yo entiendo para qué sirven :)

Javascript no intrusivo con jQuery

Tenía a jQuery en mi lista de “cosas que tengo que probar un día de estos” desde hace tiempo.

Para un proyecto que tenemos, he empezado a trastear con esta librería, y los resultados (inmediatos) me han dejado muy buen sabor de boca.

Vamos con unos ejemplitos de lo que sabe hacer jQuery:

Lista de resultados “con pijama”…

Este es un quebradero de cabeza clásico, para el que se han planteado muchas soluciones. La que he encontrado, usando los selectores CSS + DOM de jQuery es tan simple que casi da miedo:

$("#lista ul li:even").addClass("even");

Que viene a decir: “dentro del div #lista, me seleccione todos los li impares dentro de un ul, y les añada la clase ‘even’”

El HTML que estoy usando es bastante limpito:

<div id="lista">
    <ul>
        <li>Elemento 1</li>
        <li>Elemento 2</li>
        <li>Elemento 3</li>
        <li>Elemento 4</li>
    </ul>
</div>

Pero dejarlo así sería desaprovechar toda la potencia de jQuery (y manchar un poco el HTML, en realidad). Así que, después de mirar un rato (10 minutos) la documentación, me encuentro con que puedo dejar mi HTML tal que así:

<ul>
    <li>Elemento 1</li>
    <li>Elemento 2</li>
    <li>Elemento 3</li>
    <li>Elemento 4</li>
</ul>

¿Y entonces cómo sé a qué lista tengo que ponerle el pijama? Aquí es donde entra en juego toda la potencia de los pseudo-selectores de jQuery (el li:even) es uno de ellos, pero hay muchos más

$(body ul:first li:even).addClass("even");

Que es como decir: “le añada la clase ‘even’a los li impares de la primera ul que aparezca en el body” (en este caso he hecho trampa, porque sé que mi ul será la primera que aparezca en el documento)

Añadir un icono a los enlaces externos…

Este es un asunto que ya visitamos en un artículo anterior (Destacando enlaces externos en WordPress)

Usando jQuery hay varias maneras de hacer esto, pero voy a elegir una particularmente curiosa: usar una expresión XPath.

$("//a[not(contains(@href,'sofanaranja.com'))]").addClass("externo");

Esto sería el equivalente a “busca todos los elementos ‘a’cuyo atributo src no contenga la cadena ‘sofanaranja.com’, y les añades la clase ‘externo’”.

(Lo de escribir expresiones XPath se sale un poco de la temática del post… : )

Javascript no intrusivo

Como vemos con este par de ejemplitos, los selectores de jQuery nos permiten hacer toda clase de perrerías (tanto en presentación como en comportamiento) sobre el DOM de nuestro documento sin (practicamente) guarrear el HTML.

Usando jQuery no hay excusa para ese crimen que es

... href="javascript:abreVentana()" ...

Me temo que seguiré comentando las bondades de jQuery una temporadita :D

Por qué me gusta jQuery, personalmente

  • Porque ocupa poco (15Kb comprimida)
  • Porque no le sobra nada, y lo poco que le falta es, casi siempre, innecesario :)
  • Porque la documentación está actualizada, bien escrita, y tiene ejemplos claros de qué se puede hacer y cómo.
  • Porque seleccionar elementos del DOM usando selectores CSS y XPath es droga dura: una vez que lo pruebas no puedes vivir sin ello.

Recursos interesantes…

Para trabajar con XPath, hace tiempo me encontré con AquaPath, una utilidad para Mac que vale su peso en oro…

Desconferencia…

El sábado pasado tuvimos desconferencia

En algún momento comentaré las ponencias pero la impresión general, igual que la de Javier, es que no podía haber salido mejor.

Obviamente, habrá que ir puliendo detalles, pero realmente fue uno de esos días que mereció la pena vivir.

Para los impacientes: los podcasts los están peinando, y yo tengo la (titánica) tarea de procesar esto:

Los vídeos de la desconferencia...

y convertirlo en algo digerible :D

En breve, en sus pantallas, los vídeos de la Desconferencia.

Snipplr, próximamente en sus pantallas…

Llevo un rato jugando con esto: http://snipplr.com y me parece una de las mejores ideas del mundo mundial para los que nos dedicamos (de vez en cuando) a picar código…

La cosa es bastante simple: un repositorio de snippets* de código que podemos guardar online (convenientemente tageados) y recuperar cuando los necesitemos.

Así contado no tiene mucha gracia (y tampoco es original, la verdad, ahí tenemos http://cl1p.net)

La gracia está en que el tipo se ha currado un plugin de TextMate y podemos cargar y guardar snippets sin salir del editor! :D

No se pierdan el vídeo

El código del plugin es bastante chorra (básicamente, una llamada a ‘curl’) así que se puede adaptar sin mucha complicación a Vim, Emacs, tu-editor-de-codigo-favorito…

Pos eso… viva la web 2.0! Nunca más tendré que acordarme de en cual de mis carpetas (u ordenadores) está el código que me falta :D

*: un ‘snippet’es, tradicionalmente, un pedacito de código/texto que por si sólo no sirve para nada, pero que acabamos usando 50000 veces al mes en todos los proyectos. Por ejemplo: “maldito cliente” :P

Mini-curso de TextMate

La gran corporación continúa su expansión vertiginosa y se ha anexionado los territorios colindantes (léase: entreplanta) de la nuestra nueva oficina.

El objetivo de tal conquista es convertirla en el Aula Coctelera™ (yo me hubiera mudado a vivir allí, pero no creo que mis compañeros llevaran muy bien el hecho de que no tenga ducha…)

Para tal fin, y sin otro motivo que inaugurarla como dios manda, tenemos idea de impartir un minicurso de TextMate tan pronto como terminen de arreglar el suelo de la sala (teóricamente, la semana que viene)

El plan (o la ausencia de él) consiste en hacerlo un jueves sobre las 19:30 – 20:00 y aguantar el chaparrón durante 60-90 minutos.

Tras el curso, procederemos a hacer una inspección de temperatura de los tiradores de cerveza de la zona, como viene siendo habitual en estos eventos (y sin estos eventos, ciertamente). El evento será gratuito y la asistencia es libre, con permiso de la sala.

Calculamos que será sobre el 22 de junio, en Madrid capital. En cuanto tengamos fecha y hora concreta daremos más detalles, pero adelanto que los requisitos son:

  • Idealmente, tener un Mac (o intención de tenerlo)
  • Cierta familiaridad con algún editor de código
  • Inquietud por trabajar más rápido (o menos estresado)
  • No se requieren conocimientos previos de TextMate

Si te gustaría asistir, deja un comentario para hacernos una idea de la demanda. Si hay algún tema en concreto del que te gustaría que se hablara, ídem de lo mismo…

Ah… casi se me olvidaba… el profesor será éste que escribe (aunque espero que Furilo me eche una manita para las demos de Ruby On Rails : )

Update: Allan Odgaard, el programador de TextMate, me acaba de confirmar la sorpresilla que tenía guardada. Entre todos los asistentes se sorteará una licencia de TextMate :D

Update 2: MacDevCenter publica una entrevista con Allan Odgaard, el programador de TextMate.