No necesitas ser flickr para usar microformatos

La web de mi empresa no necesita microformatos, eso es para sitios grandes. ¿Has escuchado o dicho esto alguna vez? La gran ventaja de los microformatos es que cuesta poco usarlos y no molestan.

Hoy he implementado algunos microformatos en la web de Warp. No es una web que interaccione mucho con el usuario, ni tenemos perfiles de usuarios, pero ya veréis como se pueden usar.

En concreto he usado hCard, para la dirección de la empresa en el pie de página, y hCalendar, para el listado de Cursos MySQL.

Para probar el funcionamiento de estos microformatos podéis instalar la extensión Operator para Firefox

hCard

Warp footer

En el pie de la página tenemos la dirección de la oficina. Vista en HTML era un párrafo normal.

<p>&copy; 2005-2007 Warp Networks S.L - C. Don Jaime I 33, 3º Dcha, 50003 Zaragoza, España</p>

Ahí tenemos información interesante para poner en la agenda o para ver en un mapa:

<p>&copy; 2005-2007 
  <span id="" class="vcard">
    <span class="org">Warp Networks S.L.</span>
    <span class="adr">
    <span class="street-address">Don Jaime I 33, 3º Dcha</span>
    <span class="locality">Zaragoza</span>
    , 
    <span class="postal-code">50003</span>
    <span class="country-name">España</span>
  </span>
</p>

Operator showing hCard

hCard in Google Maps

hCalendar

Buscando un poco más, uno se da cuenta de que el listado de cursos MySQL no deja de ser un “calendario” en forma de lista. Seguro que a quién se apunte a un curso le interesa añadirlo a su calendario. ¿Por qué no facilitar las cosas?

hCalendar in MySQL courses

Al igual que antes, la estructura anterior de cada curso era bastante sencilla:

<tr class="course_instance">
  <td>
    Del 03 de Diciembre al 05 de Diciembre en Zaragoza
  </td>
  <td class="price">900 €</td>
</tr>

Y tras un poco de magia hCalendar:

<tr class="course_instance">
  <td>
    <div class="vevent">
     <a class="url" href="/cursos/show/4">
       <span class="summary">MySQL 5.0 High Availability (Diciembre)</span>
      </a>
      Del 
      <abbr class="dtstart" title="2007-12-03">03 de Diciembre</abbr>
      al 
      <abbr class="dtend" title="2007-12-05">05 de Diciembre</abbr>,
      en <span class="location">Zaragoza</span>
     </div>
  </td>
  <td class="price">900 €</td>
</tr>

En este caso, el contenido hay cambiado ligeramente: he añadido de nuevo el nombre del curso junto con el mes a modo de resumen. Esto será útil a la hora de importarlo a un calendario. Como no queremos que se vuelva a mostrar en la web lo ocultamos con CSS

.course_instance .url {
  display: none;
}

Después de esto es bastante sencillo añadir el curso a un calendario.

Operator showing hCalendar

Import event

MySQL course in Google Calendar

Como se puede comprobar, no cuesta tanto implementar los microformatos y las ventajas son interesantes. Además, no necesitamos la extensión Operator (u otra tecnología nueva) para poder usar el sitio, simplemente nos ofrece una funcionalidad extra.

Así que ya sabéis, no tenéis excusa para no usar microformatos.

Ponte en el pellejo de otro: desactiva Javascript por un día

Nos cuentan en Walking in others shoes: Turn JavaScript off for a day:

La gente habla a menudo acerca de ser capaces de ponerse en la piel de otra persona. A los hombres les gustaría ser mujeres por un día, a algunos les gustaría ser jugadores de fútbol, etc.

En nombre de la accesibilidad, qué tal hacer un pequeño experimento y desactivar JavaScript por un día.

Probablemente encontrarás un montón de sitios importantes que no funcionen. Muchos serán inusables (enlaces que no funcionen, aspecto incorrecto), y algunos serán usables parcialmente.

Los pocos buenos funcionarán como antes.

Pruébalo esta tarde. Puede que te lleves alguna sorpresa.

En Firefox se puede hacer visitando las preferencias -> Contenido -> Activar JavaScript

Preferencias Firefox

En principio, iba a avisar de que la campaña está orientada hacia desarrolladores webs, profesionales o no (cualquiera que haga o vaya a hacer una página web). Pero creo que en realidad no está de más que todos seamos un poco conscientes del tema. Tú podrás volver a activar JavaScript, pero un ciego no puede volver a activar sus ojos.

Algoritmo de ordenado por diseño inteligente

Introducción

El ordenado por diseño inteligente es un algoritmo de ordenamiento basado en la teoría del diseño inteligente.

Descripción del algoritmo

La probabilidad de que la lista inicial este en el orden exacto es de 1/(n!). Es una posibilidad tan pequeña que es claramente absurdo decir que esto ha ocurrido por casualidad, así que debe haber sido puesto en ese orden de forma consciente por un ordenador inteligente. Por tanto, es seguro asumir que ya está óptimamente ordenada en una forma que trasciende a nuestro ingenuo entendimiento mortal del orden ascendente. Cualquier intento por cambiar ese orden de acuerdo a nuestras propias concepciones previas realmente lo desordenarían.

Análisis

Este algoritmo es constante en el tiempo, y ordena la lista en su sitio, sin requerir memoria adicional en absoluto. Ni siquiera necesita ninguna de esas sospechosas tecnologías informáticas. ¡Alabad al ordenador!

(Traducción de Intelligent Design Sort)

Cursos de MySQL para administradores

Ya hablamos de cursos en Cursos de MySQL y desarrollo web. Esta vez, se trata de MySQL 5.0 for DBAs y se impartirá:

  • Del 18 al 22 de Diciembre de 2006
  • Del 22 al 26 de Enero de 2007

Los cursos tienen un precio de 1500€ y están orientados hacia la obtención de la certificación oficial de MySQL. Se impartirán en el Centro de Estudios Adams, en la calle Miguel Servet, 3 (ver mapa).

Para cualquier consulta relativa a los cursos, se puede escribir a training@warp.es

Cursos de MySQL y desarrollo web

Powered by MySQL

Durante los meses de Febrero y Marzo tendrán lugar en Zaragoza y Huesca respectivamente los cursos de desarrollo web con PHP y MySQL y MySQL para desarrolladores. Son cursos con certificación oficial MySQL, y son gratuitos e intuyo que al ser del INAEM serán gratuitos, pero tendría que confirmarlo.

Más información en la página del Gobierno de Aragón:

Los detalles sobre los contenidos están tanto en los enlaces anteriores como en la web de MySQL:

Blog Ciudadano de Zaragoza

Hace ya tiempo que lo descubrí y tenía pendiente escribir sobre el tema. Según la propia web del Blog Ciudadano:

Blog Ciudadano es el sitio en el que convergen las voces de los zaragozanos. Un sitio para el debate y la participación ciudadana en la red. La vida y el sentimiento de una ciudad desde el punto de vista de sus auténticos protagonistas.

El principal problema que encontré es el tener que mandar los pings a mano (al menos no encontré forma alguna de ahcerlo automáticamente). Así que me puse manos a la obra y hoy comparto con todos los bloggers zaragozanos el pingeador ciudadano (a falta de un nombre menos burdo).

Está pensado para WordPress pero no creo que sea dificil integrarlo en otros gestores. Se copia el siguiente código en un archivo zcping.php en el directorio de nuestro blog (donde está el index.php, el wp-config.php,…). Antes de eso hay que cambiar la variable $_ME de amedias.org a la dirección de vuestro blog (o me haréis famoso en un momento :P).

Por último, desde la administración de WordPress, en Options->Writing añadiremos donde pone “Update Services” la dirección http://www.la-direccion-de-mi-blog.com/zcping.php y le damos a “Update options”.

Si los astros están con nosotros, la próxima vez que publiqueis, el blog ciudadano se enterará y aparecereis entre los últimos blog actualizados.

Ahí va el código, o si lo quereis descargar como archivo: zcping.phps (acordaos de renombrarlo de zcping.phps a zcping.php).


Actualización: ahora puedes usar el pinger directamente, poniendo como url http://amedias.org/zcping.php?url=http://www.la-direccion-de-mi-blog.com/

Empiezo a entender por que odio launchpad

Navegando por el wiki de Launchpad, he encontrado la página que lo explicaba todo. Desde hacía ya tiempo me venía yo preguntando por qué había tal sobredosis de información y mal diseño en las páginas de Launchpad. La respuesta: TotalExposure

Every piece of Launchpad information, except for internal database ID’s, needs to be exposed in the web UI for Launchpad, in two places: first, in at least one page, as part of the main body of the page, and second, in a portlet for the object of which it is an attribute, or a related object.

Esta es una aproximación posible frente a otras…

Acerca del nuevo mando a distancia de apple:

Dell Media Experience remote = 60 buttons you’ll never use.
Apple Remote = Just the six buttons you need.

O el manifiesto de Basecamp:

We believe in Less Software
Basecamp is simple on purpose. We’ve kept the confusing, complex stuff out. Basecamp doesn’t do everything, but what it does it does extremely well. That’s focus and that’s the baseline principle of our “Less Software” approach. Not more stuff, just the right stuff to help you get your job done.

¿Cuál de estos ejemplos está mejor diseñado? ¿Cuál es realmente agradable de usar y cuál le destroza los nervios cada vez que intenta realizar una operación sencilla, escondida en un océano de información?

Y seguiría criticando pero hace poco leí una gran frase (de la que por cierto no consigo encontrar la fuente):

Algo no es perfecto cuando no queda nada que añadir, sino cuando no queda nada que quitar.

Comparativa gráfica entre Java y Rails

En la lista de rails, ha aparecido un enlace a una comparativa entre Java y Rails, aunque la foto habla por si misma:

Libros de Java vs libros de rails

To put it all in perspective, I piled my books up on the table covering developing web applications. The stack on the left is the Java books, the stack on the right is the Ruby books. The same breadth of material is covered. Well almost, there are on-line references for things like XSL, not covered in the Ruby books. But other than that the functionality is the same. So which stack will be easier to keep in my head? The choice is easy.

¡Ha salido GnomeTorrent 0.1!

Todo esto comenzó cuando descubrí jamendo. En resumen, es un sitio web donde se pueden escuchar discos de música licenciada con CC y descargarlos usando BitTorrent u otro tipo de redes P2P. Encontré unos cuantos discos interesantes y para bajarlos decidí darle una oportunidad a gnome-btdownload para descargarlos.

Encontré este programa muy simple y agradable, muy en el estilo de Gnome, pero no podía soportar tener x ventanas abiertas (una por descarga/semilla), principalmente cuando x → ∞ (o al menos un número relativamente alto si eres bueno y compartes tanto como recibes).

Así que quise empezar a modificar ese código para que pudiese descargar múltiples archivos en una sola ventana y esconderse en la bandeja del sistema. He terminado escribiendo mi propio código para la interfaz, aunque he reaprovechado toda la parte de BitTorrent.

Es mi primer programa completo de escritorio que funciona y es una sensación increible… es casi como cuando empecé a programar hace tiempo :)

He montado una pequeña web para los interesados (en inglés, pendiente de traducir):

Gnome Torrent

La ventana principal

No, no estoy en el Summer of Code

Esta mañana me he despertado como en otro planeta. Tenía un examen y al llegar todo el mundo me felicitaba por haber conseguido “lo de Google”. Ayer recibí esto:

Dear Jorge Bernal,

Thank you for taking the time to apply for Google’s Summer of Code
program. We received a lot of interesting applications, but we are
only able to fund a limited number. Unfortunately, yours was not one
of the finalists.

Please keep up the good work, and we hope to connect with you in the future!

Best regards,
The Summer of Code team

El problema está posiblemente en GoogleSocApplications, donde aparezco. Esta lista supongo que es una propuesta por parte de Ubuntu hacia Google., pero es éste quien tiene la última palabra, y ha sido “pues va a ser que no”.

Resúmen del día: googleX, correo rebelde, y diseño Ubuntu

Esta mañana, en mi repaso habitual a los blogs, me he encontrado con GoogleX, que ahora parece no estar disponible, pero yo juro haberlo visto:

Roses are red. Violets are blue. OS X rocks. Homage to you.

Más tarde, Bencer me avisaba de que no se podía mandar correo a través de Amedias, así que investigando he deducido que nunca había funcionado, pero como hasta ahora no lo usaba nadie no me había dado cuenta. La solución no ha sido sencilla: Cyrus SASL no se llevaba bien con las contraseñas cifradas y guardadas en una base de datos, así que había que parchear. Creía que aquí acababa el problema, pero no había hecho más que empezar: el parche era para FreeBSD y las llamadas a la librería crypt eran distintas. Resultado, el koke haciendose un parche para SASL: cyrus-sasl2_mysql-crypt-passwords. He de mencionar que el sistema de parches de DBS (Debian Build System, supongo; no confundir con DBS) es realmente extraño y, por qué no decirlo, horrible.

Diseños agradables

A través del Herbert Figuiere (desarrollador de ¿Abiword?) veo Tiling picture, que enlaza a un script en perl para, dado un directorio lleno de imagenes, crear un poster con fotos aleatorias:

Un ejemplo con mis fotos

Por último, Lukas Zapletal ha presentado el nuevo diseño de la portada del CD de Ubuntu. Un rato después, Jeff Waugh ha anunciando una nueva competición para el diseño de una mascota para la próxima versión de desarrollo de Ubuntu: Breezy Badger

GNOME 2.10 a punto de caramelo

Mañana es el gran día, sale GNOME 2.10. Estaba esperando para contarlo, pero se me han adelantado en Punto y aparte.

En esta ocasión, las notas de la versión o release-notes están traducidas (por un servidor), aunque al final van a faltar algunas capturas de pantallas por una conspiración universal de las máquinas contra mí: Notas de la versión de GNOME 2.10.

Trae un puñado de cosas nuevas interesantes:

  • Un applet para control del módem, para todos esos que siguen con la banda estrecha
  • Mejor soporte para wireless
  • Gestión de grupos más sencilla, es decir, en lugar de añadir a pepe al grupo cdrom se marca una casilla como que tiene permiso para poner CDs
  • Los juegos tienen gráficos más agradables, y creo que además son todos vectoriales
  • Hay soporte (aunque creo que no está completo aún) para jugar por red
  • Mayor uso de los estándares de freedesktop.org
  • Las ventanas se comportan mejor:

    En el pasado, si estaba escribiendo algo en una aplicación cuando, de repente, su aplicación de mensajería instantánea le ofrecía una invitación de charla de algún amigo, sus palabras se escribían en la ventana de charla. Imagine que pasaría si en ese momento estuviera escribiendo su contraseña. Ésto ya no pasa con GNOME 2.10.

GNOME 2.10 Party

Ya sé que por Zaragoza hay mucho KDE-ero, pero ¿alguien se apunta e una Gnome 2.10 party

Un día productivo

Así da gusto:

koke@ababol ~/Devel/hermes/hermes/trunk $ sh <<EOF
echo $( svn diff -r 194:HEAD | grep -c "^+" ) lineas añadidas
echo $( svn diff -r 194:HEAD | grep -c "^-" ) lineas eliminadas
EOF
542 lineas añadidas
333 lineas eliminadas

El 70% de la lista de tareas limpio 😀

Actualización: +621-453, este ritmo me va a matar. Buenas noches.

Huevos de pascua en GNOME

Mirando el código de gnome-panel para intentar que el diálogo de “Ejecutar una aplicación…” sea un poco más ligero, me he encontrado con esto:

/* evil eggies, do not translate! */
        if (!strcmp (command, "free the fish")) {
                start_screen_check ();
                g_free (command);
                gtk_widget_destroy (dialog->run_dialog);
                return;
        } else if (!strcmp (command, "gegls from outer space")) {
                start_geginv ();
                g_free (command);
                gtk_widget_destroy (dialog->run_dialog);
                return;
        }

Definitivamente, Ubuntu mola

Hoy he vuelto a usar el ordenador de sobremesa, que ultimamente tenía bastante abandonado por el iBook y he actualizado Hoary. La sorpresa ha sido al volver de comer, ya que como siempre había bloqueado la pantalla.

Me he encontrado con esto:

Salvapantallas de hoary

Ya era hora de que alguien renovara un poco el aspecto del xscreensaver. Chapeau.

Por otro lado, he instalado Kate y Konsole, y el aspecto era un poco lamentable. Solución, instalar kcontrol y kdeartwork-style, y desde el Centro de control elegir Plastik como estilo, activar el antialias de las fuentes, reducirlas a tamaño 10 y aplicar un nuevo esquema de colores, que me ha dado por hacer:

Tema de colores Human para KDE

Por cierto, también me hago eco del nuevo meme de la blogosfera: el Blogger Code. El mio es:

B5 d++ t++ k s u-- f i o+ x+ e+ l c-

Jugando con 3D

He estado jugando un poco con Wings3D y la verdad es que es bastante sencillo de manejar. Pero soy demasiado torpe para el diseño en 3D. Primero he creado una mano que bien podría haber sido un paquete de salchichas frescas. Luego una botella de Klein, aunque tampoco la he llegado a completar.

La gracia es que luego lo importas con blender, empiezas a aplicar materiales, transparencias, translucencias y reflejos y nos queda algo tal que asín.

Botijo raro (botellas de Klein)

Actualización: casi se me olvida, la receta.