sábado, 23 de junio de 2007

¿Punto de inflexión?

Es la primera vez que un desarrollo chapuza llega a los medios de información generalistas y al gran público. Por supuesto, estoy hablando de la página web del Congreso de los Diputados.
Lo que comenzó siendo una crítica de algunos desarrolladores a una web realmente mal hecha ha terminado siendo un tema de conversación y de preocupación para el ciudadano de a pie.
Lo triste es que no es la primera vez que ocurre, sobre todo en desarrollos para la administración, donde el control del producto final no suele ser tan estricto como en corporaciones privadas.

Todos/as los que vivimos de esto sabemos cómo se trabaja en las grandes consultoras y empresas de desarrollo de software (hay excepciones, por lo visto: no todo va a ser malo)

Proyectos mal planificados y peor gestionados. Venta de "humo". Buzzwords. Incompetentes dirigiendo equipos y proyectos [1]. Intereses creados --"partners". Becarios "vendidos" a los clientes como expertos. Subcontratación. ¿Seguimos?

Ya está bien de tomaduras de pelo. A ver si a partir de ahora los clientes, los usuarios, la administración y la opinión pública en general se van concienciando de que las cosas se pueden hacer bien, pero si hay voluntad de hacerlas bien. Lamentablemente, hoy por hoy, lo que impera en el mercado no es la calidad del producto sino los beneficios y la supuesta rapidez en el desarrollo.

Nunca se han tenido tantas metodologías, herramientas y técnicas disponibles para el desarrollo de software (OOP, UML, Patrones de Diseño, bla, bla, bla, ...) De nada sirven si lo que al final tenemos es una porquería de producto.

Si una empresa privada quiere malgastar su dinero contratando desarrollos con consultoras con renombre pero cutres en el fondo, peor para esa empresa. Pero un desarrollo para la administración lo pagamos todos/as. No puede consentirse que estas chapuzas salgan a la calle.

Es obligatorio por ley que las páginas web de la administración sean accesibles. No vale con colocar el iconito de WAI, como hacen en muchas webs. Es ilegal hacer eso.

[1] Acabo de leer un artículo sobre esto en Fogonazos (mis felicitaciones a su autor). Lo clava.

viernes, 11 de mayo de 2007

(Re)Descubriendo Tcl/Tk

En esto tiempos aciagos para los/as programadores/as, en los que cada dos días sale un lenguaje o herramienta nuevos, en los que para montar una sencilla web hay que lidiar con los omnipresentes patrones de diseño, montones de capas de abstracción y demás, se agradece la simplicidad y sencillez de los viejos tiempos.
Tcl significa "Tool Command Language" y Tk "ToolKit". Es un lenguaje de "script", con una sintaxis muy similar a la de cualquier "shell" (como Bash).

Hacía mucho que no hacía nada con Tcl/Tk, y el otro día recordé que existe todavía la estupenda librería Snack. Es una librería de tratamiento y generación de sonido en tiempo real.

Así que, provisto del tutorial de Snack y la documentación de Tcl/Tk pertinente, me hice un pequeño afinador (cutre: sólo da notas de referencia, no "lee" las notas del instrumento):

Captura pantalla

(Captura de pantalla en Windows)

En 65 líneas de código simple tenemos casi un programa completo:

Código (renombrar a tuner.tcl)

Lo que más atención me llama es que a cada "widget" se le puede asociar una variable (global) de tal forma que, al cambiar la variable, se actualiza el elemento convenientemente. Por ejemplo, el "message" y el "spinbox" tienen asociados dos variables, newfreq y octave, respectivamente.

Desde el procedimiento beep modificamos newfreq y el texto de la etiqueta cambia.
Ocultamiento de información y encapsulamiento: ninguno. ¿Acaso es necesario siempre? ;-)

Recursos

  • Todavía hay en la red un tutorial en castellano (de lo poquito que he podido encontrar) de la Universidad de Oviedo. Data de 1998 (!) y está bastante bien. Lo bueno del mundillo Tcl/Tk es que las cosas no se quedan obsoletas tan pronto.

  • Visual Tcl es un IDE para Tcl/Tk. Permite desarrollar las aplicaciones Tcl/Tk de forma "visual": pinchando y dibujando los "widgets". Funciona perfectamente y su última actualización fue en 2006.

lunes, 7 de mayo de 2007

Software musical en Linux

Soy músico aficionado (y creo que lo seguiré siendo toda mi vida). Tocaba la guitarra, me pasé al saxofón (tenor), luego al bajo eléctrico y, finalmente, al contrabajo. También intento tocar un poco la armónica, la flauta dulce y el ukelele.

Hay dos programas que utilizo a menudo para mis “tareas musicales”, Lilypond y Musical MIDI Accompaniment (MMA).

Lilypond es un programa de edición de partituras. Su utilización es muy diferente a otros programas con la misma finalidad. Las notas y otros símbolos musicales se escriben en un archivo de texto plano, y después se procesa con Lilypond este archivo. El resultado es un archivo PDF (también puede generar Postscript y ficheros MIDI) con una calidad muy buena. Muchos ejemplos musicales en estas páginas han sido elaborados con Lilypond.

Musical MIDI Accompaniment es un programa que sirve para generar ficheros MIDI con acompañamiento musical. Es una alternativa al programa comercial “Band in a Box”, de la compañia PG Music.

No existe mucha documentación en castellano sobre los programas Lilypond y Musical MIDI Accompaniment (MMA). Por ello me decidí a escribir sendos tutoriales de Lilypond y MMA. En las siguientes direcciones pueden consultarse:

jueves, 3 de mayo de 2007

Desarrollo de temas para Wordpress

Estoy empezando a cacharrear con Wordpress, su API y la posibilidad de desarrollar temas personalizados.

Ya sé que Wordpress no es la herramienta más adecuada para utilizar como gestor de contenidos (CMS), pero es que me encanta su sencillez y facilidad de uso.

El mayor problema que me estaba encontrando era el siguiente: cuando se tienen varias categorías anidadas, al seguir el enlace de la categoría "madre", ésta mostraba todas las entradas de sus categorías "hijas", aunque ella misma no tuviese entradas. Esto está bien para un "blog", pero no era lo que yo necesitaba.

Lo que quiero es lo siguiente: al "pinchar" en el título de la categoría "madre" mostrar la descripción de la categoría o algo similar si no tiene entradas, pero no mostrar las entradas de sus "hijas".

Cacharreando un poco, ya he encontrado la manera de hacerlo. Ej. del fichero archive.php:

Estamos "dentro" del código y del

La función single_cat_title('', false) nos devuelve la categoría actual (por ejemplo, el nombre de la categoría "madre"), la función get_the_category() nos devuelve todas las categorías a las que pertenece una entrada, así que sólo hay que comparar si son la misma o no.

Nuestro archive.php queda así, más o menos:

<?php$categoria = get_the_category();
if (single_cat_title('', false) == $categoria[0]->cat_name) {
?>


martes, 24 de abril de 2007

Debian services control panel

Debian Services Control Panel es un pequeño programa que sirve para gestionar los servicios en una máquina que ejecute Debian (o alguna distribución derivada).

Está programado con GAMBAS.