Ha servido para algo

Estoy feliz de la vida, y es que en el post Mamá, quiero ser Rector, he recibido un comentario que me ha encantado. Su autora es Ana Belén González, la encargada de desarrollar la página de la candidatura de J.R. Alonso, cuya web analicé junto a la del resto de los candidatos a Rector de la USAL hace unos días.

Es fantástico que te tomen en serio aun cuando el tono es desenfadado, y la verdad es que tiene mérito que haya sido tan correcta y equilibrada después de leer un artículo tan incendiario. Algunas cosas que ha escrito me han gustado especialmente:

En el caso de nuestra candidatura, no hemos pagado a ningún programador ni a ningún diseñador gráfico, maquetador, etc. hemos sido personal de la Universidad los que hemos llevado a cabo todas las tareas relacionadas con la Campaña. Así que en ella se ve reflejado, para bien y para mal, nuestro quehacer, las horas que hemos quitado a nuestro sueño, a nuestra familia o a nuestros estudiantes en algunos casos, pero las damos por bien empleadas.

Respecto a la apuesta por los estándares y el cumplimiento de las normas de accesibilidad y usabilidad web, no tengáis ninguna duda, fue nuestro punto de partida para crear tanto la web como el blog, aunque finalmente no lo alcanzáramos del todo, ya sabéis los que lo habéis intentado que eso suele llevar muchas horas y en estas semanas el tiempo del que disponemos es escaso.

Explica además otras cosillas interesantes, como el motivo de que existan fotos diferentes para la web y los carteles, como señaló HED. Y lo que más me ha gustado:

Por cierto, animada (o abochornada por haber sido pillada) esta tarde he comenzado la tarea de disminuir el número de errores, aún quedan 61, no creo que encuentre hueco para eliminarlos todos de aquí a las elecciones, pero seguiré intentándolo. Por cierto, la web ha sido diseñada con Joomla y el problema es que a veces no te deja meter mano todo lo que quieres.

Esto me ha encantado, sinceramente. En el momento de redactar esta entrada, la web tiene 36 fallos. Siguen siendo bastantes, pero no son los 180 de hace un par de días.

Que entre todos hayamos conseguido que esto cambie me llena de satisfacción. Y habla muy a favor de la candidatura de J.R. Alonso, que de momento, han sido los únicos en darse por aludidos y ponerse a trabajar. Esta es la filosofía que echo tantas veces de menos en la Universidad, porque concibe Internet como algo vivo, con enlaces, comentarios, referencias e interacción

Consultorio NSL: Enlazar el Apple Remote

El Apple Remote es esta simpática criatura que viene con cada Mac, y que sirve básicamente como mando a distancia para controlar la reproducción de música y otro montón de cosas:

remote.jpg

Sólo tiene un problema, y es que por defecto, todos los Apple Remote funcionan con todos los Mac, y esto hace las delicias de los bromistas (cuando trabajaba, en la oficina nos hacíamos mobbing del bueno con esto). Por cierto, esto me recuerda que tengo pendiente pasarme con el mando por la sala de Macs de la facultad y sembrar el caos…

El caso es que algunos maqueros que conozco me han preguntado cómo se puede hacer que su equipo sólo responda a su mando a distancia (pretensión bastante lógica por otro lado). Bien, lo que tenemos que hacer es enlazar nuestro Apple Remote con nuestro Mac, para lo cual apuntaremos al ordenador con el mando y presionaremos «siguiente» y «menú» durante un rato, hasta que se oscurezca la pantalla y aparezca algo así:

remote.png

Esto quiere decir que este mando y nuestro equipo han sellado un bello enlace. Como en toda relación puede haber problemas, así que podremos divorciar a nuestro Apple Remote del Mac desde la opción «Seguridad» del panel de control, donde hay un botón tal que así:

eliminar.png

Creo que no hace falta explicar para qué sirve… ¿dudas?

Virtualizando

La virtualización (en concreto la paravirtualizacion) nos permite ejecutar varios sistemas operativos de manera simultánea en una misma máquina. La idea base de esto es crear sobre nuestro ordenador otro virtual, que se comporta igual que una computadora independiente, sobre la que podemos, por ejemplo, instalar un sistema operativo.

Desde luego, se trata de una opción atractiva porque nos permitiría ejecutar cualquier sistema desde otro sistema, siempre que dispongamos de un programa que nos permita crear máquinas virtuales, o dicho de otro modo, ordenadores en nuestro ordenador.

El programa que conozco y utilizo con este propósito es Parallels Desktop, del que poseo la beta 2 y con el que estoy muy satisfecho. He pensado que debía compartirlo porque quizá haya algún maquero pensando en cómo rescatar aquel programa que sólo está disponible para Windows, o bien alguien que tema pasarse a Mac por el cambio de sistema operativo. Con la virtualización no hay excusa…

Bueno, como muestra dejo un par de capturas de mi Mac. La primera presenta, con MacOS X de fondo, un Suse Linux 10.1 y un Windows 2000 funcionando simultáneamente. En total, la máquina soporta tres sistemas al mismo tiempo, y la verdad es que funciona bastante bien y apenas se ralentiza.

virtual1.jpg

Clic en la imagen para ampliarla

Y esta otra muestra el modo coherente sobre MacOS, en el que las ventanas de Windows 2000 se muestran mezcladas con las del sistema «anfitrión»: en este caso, se muestra Matlab en Windows y el Safari. La barra de Windows se coloca sobre el dock.

virtual2.jpg

Clic en la imagen para ampliarla

Creo que se trata de una opción muy interesante para el mundo maquero. Personalmente, no necesito nada que pueda tener en Windows, aunque hay algún programa que sólo funciona sobre este sistema y esto nos permite utilizarlo. Lo que sí que está bien es tener el Linux a mano para no perder los buenos hábitos…

Curso de ética ingenieril (IV)

Esto se está poniendo en modo experto… No se imaginan lo que les espera, pero adelanto que esta entrega está al más alto nivel… Bueno, al lío. Resulta que estaba yo mirando unos apuntes del año pasado, en concreto de Programación Orientada a Objetos, cuando llegué a un apartado dedicado a las clases amigas.

Se trata de un tema algo complicado, así que creo que no es razonable que intente explicar aquí qué son esas clases amigas, sobre todo porque quienes no lo sepan se van a quedar igual y quienes lo sepan se van a tirar de los pelos. De todas formas, si a alguien le interesa el tema, puedo dedicarle una entrada.

Las clases son estructuras de datos en la Programación Orientada a Objetos, y resumiendo a lo bestia, una clase que es amiga de otra es una clase que tiene permisos para leer y modificar sus datos privados, realizando un tipo especial de comunicación entre objetos.

El caso es que en las prácticas nos lo mostraban con un ejemplo en C++ políticamente incorrecto. Lo que sigue es un programa que simula el comportamiento de dos vecinas: Pepi y Juani, y que reproduce cómo intercambian sus cotilleos. Progresismo puro, oiga.

Como poner código en WordPress, además de ser una gran experiencia es un coñazo algo complicado posteo sólo las mejores líneas… He dejado los comentarios originales (los comentarios son fragmentos que ayudan a entender el código y que van precedidos de «//»)

class Pepi{
char cotilleo[100];

[…]

Pepi() {
strncpy(cotilleo, «A Mary Flor la plantó su novio», 100);
}

[…]

Pepi(char *not) {
strncpy(cotilleo, not, 100);
}

friend class Juani; // Juani es una clase amiga de Pepi
};

Pero ojo, que lo mejor llega ahora. Los comentarios de la última sección son para llorar…

void main (void) {
Pepi P1, P3(«La vecina de arriba es rubia de bote»);
Juani J1(«Yo no soy nada cotilla»);

[…]

P3.leer(); // Sale lo de rubia de bote
J1.cambia(P3, «Es que realmente es calva»); // Sale este mensaje
J1.escucha(P3); // Sale lo de rubia de bote ya que P3 se ha pasado por valor: no se modifica
P3.leer(); // Sale lo de rubia de bote
J1.cambia(&P3, «Es porque no tienen pelo»); // Sale este mensaje
J1.escucha(P3); // Sale lo de que no tiene pelo ya que P3 se ha pasado por referencia: se modifica
P3.leer(); // Sale lo de que no tiene pelo
J1.cambiaR(P3, «O porque se le cae muy a menudo»); // Sale este mensaje
J1.escucha(P3); // Sale lo de que se le cae muy a menudo ya que P3 se ha pasado como una referencia: se modifica
P3.leer(); // Sale lo de que se le cae muy a menudo
}

Y no, no me lo he inventado… dejo el código fuente aquí, pero adelanto que no lo he probado, por si explota.

Un concierto inolvidable…

Al fin estoy en casa y puedo descargarme al ordenador las fotos del concierto de Iron Maiden… tengo que decir que todas las hice con el móvil, así que no se ven demasiado bien…

_dsc000311.JPG

No quiero aburrir a nadie con mi crónica del concierto, sólo decir que ha sido lo más alucinante que he visto en mi vida sobre un escenario. Personalmente, me gusta bastante el último disco y me gusta que se atrevan a defenderlo completo en directo, sin dejarse llevar por sus temas más clásicos…

La actuación de Iron Maiden duró algo más de dos horas, en las que interpretaron todo su último trabajo, A Matter Of Life And Death. No estoy seguro de que tocaran todos los temas, pero sí casi todos.

Todos estuvieron fantásticos. Me impresionó especialmente la voz de Bruce Dickinson, que no ha perdido absolutamente nada, y Nicko con la batería, que sigue tocando como si tuviera veinte años. Me encantó que fueran tan perfeccionistas y tan profesionales, realmente lo hicieron de maravilla.

Como broche, nos regalaron 2 Minutes to Midnight, The Evil That Men Do, Hallowed Be Thy Name, Fear Of The Dark y Iron Maiden, con lo que nos fuimos todos a casa sonrientes y felices de la vida. Bien por ellos :-)

En nada volveremos a la temática habitual, tras este paréntesis jevimetalero. Dicho esto, dejo las fotos más decentes que tengo del evento…

Continue reading

Scream for me Barcelona

Anoche tuvo lugar en el Palau Sant Jordi de Barcelona el concierto de Iron Maiden que comentaba el otro día.

Todavía tengo que recuperarme, pero tengo que decir que ha sido el espectáculo más alucinante que he visto en mi vida. Cuando vuelva a casa podré descargar las fotos del móvil y tal vez escriba algunos comentarios con más detalle. Pero ha sido impresionante.

Pienso repetir :-)

¡Iron Maiden!

Mañana miércoles vuelo a Barcelona para ver a Iron Maiden en concierto, presentando su último disco, A Matter Of Life And Death. La verdad es que tengo ganas de escucharles por fin en directo, de modo que si todo va bien, el jueves cumpliré uno de mis sueños (al menos en cuanto a música se refiere).

Tengo un montón de temas apuntados en decenas de papelitos repartidos por mi habitación, pero me falta tiempo para ponerlos por escrito como a mí me gustaría… No sé si seré capaz de escribir algo en todo el fin de semana, pero en todo caso, intentaré comentarles mis impresiones sobre el concierto :-)

¡Up the irons!

Curso de ética ingenieril (III)

(Música clásica de fondo)

Sean bienvenidos, queridos lectores, a esta nueva edición de nuestro Curso de Ética Ingenieril. En esta ocasión vamos a referirnos al libro «Programación en C», editado por el Departamento de Informática y Automática de la Universidad de Salamanca; en cuya página 164 se nos regalan estas líneas:

El resultado serán dos líneas con las dos primeras estrofas de la famosa poesía de Gustavo Adolfo Bécquer:
Con cien cañones por banda,
viento en popa a toda vela…

Se trata de hacer un programa muy sencillo que muestra esas dos líneas en pantalla. Pero si uno lo lee despacio comienza a sufrir un ataque de nervios que puede llevarle a arrancarse los ojos de inmediato.

En primer lugar, lo que muestra el programa no son dos estrofas sino dos versos. En segundo lugar, no son cien cañones sino diez. Con cien cañones por banda, el velero necesitaría propulsión por energía nuclear para surcar los siete mares. Y en tercer lugar, ese poema, llamado «La canción del pirata» no es de Bécquer sino de José de Espronceda.

El Curso de Ética Ingenieril, comprometido con la corrección y el rigor de los textos de informática, recomienda la adopción de la siguiente propuesta:

El resultado serán dos líneas con los dos primeros versos de la famosa poesía «La canción del pirata», de José de Espronceda:
Con diez cañones por banda,
viento en popa a toda vela…

Aunque si queremos rizar el rizo, siempre podemos escribir:

El resultado serán dos líneas con las siete primeras letras del famoso relato de Yola Berrocal:
Con 2 cañones por banda,
viento en popa a toda vela…

Recomendando encarecidamente la adopción de la primera propuesta, nos despedimos hasta la siguiente edición de nuestro Curso de Ética Ingenieril, no sin antes presentar, a modo de desagravio, las dos primeras estrofas de «La canción del pirata»:

Con diez cañones por banda,
viento en popa, a toda vela,
no corta el mar, sino vuela
un velero bergantín.
Bajel pirata que llaman,
por su bravura, El Temido,
en todo mar conocido
del uno al otro confín.

La luna en el mar riela
en la lona gime el viento,
y alza en blando movimiento
olas de plata y azul;
y va el capitán pirata,
cantando alegre en la popa,
Asia a un lado, al otro Europa,
y allá a su frente Istambul.

José de Espronceda

¡Y por fin es viernes!

La horda mongoliana

Vamos muy mal de tiempo. Hay que entregar un proyecto en quince días y el equipo está muy presionado, y es muy posible que el desarrollo no se concluya en el plazo previsto…

Los directivos no quieren correr el riesgo de perder a un cliente importante, e insisten en que el producto quede listo en el plazo previsto. Lo que no saben, o si lo saben no les importa, es que ese plazo era imposible de cumplir desde un primer momento… una vez más, las fechas las fijó un gestor en vez de un informático.

Los jefes se han reunido y han acordado que lo mejor es contratar a más personal para que se integre en el equipo… “si en vez de trabajar cinco personas, trabajan diez, lógicamente el proyecto se terminará en la mitad del tiempo previsto?. El equipo directivo sonríe satisfecho y cinco nuevos trabajadores se incorporan al equipo.

Dos semanas después, se cumple el plazo y el proyecto no está terminado… los directivos, confundidos, piden explicaciones al equipo técnico, que les dice que lejos de hacerles avanzar más rápido, las nuevas incorporaciones les hicieron ir aún más lentos…

¿Qué ha pasado?

Los directivos olvidaron que más personal no implica una mayor velocidad en el desarrollo, y han caído en la trampa conocida en la ingeniería del software como “La horda mongoliana?, que se resumen en “si no da tiempo, contrata a más gente?. Es posible que a primera vista esa forma de pensar parezca lógica, pero cuando uno lo piensa se da cuenta del grave error que supone.

horda.jpg

Imaginemos que tenemos que construir un muro de ladrillo de un metro de alto y disponemos de dos albañiles que tardarán, pongamos, un día en terminarlo. Nadie nos garantiza que 24 albañiles lo construirán en una hora… de hecho es posible que tarden hasta más del día inicial, porque tendrían que coordinarse muy bien para alcanzar cierto rendimiento.

El ejemplo del muro nos desvela uno de los dos fenómenos que intervienen en el problema de la horda mongoliana: más medios son más difíciles de coordinar. El otro fenómeno que concurre es muy interesante, y consiste en que las personas tardamos en rendir al 100% al incorporarnos a un equipo: tenemos que aprender cómo se trabaja en la empresa, ponernos al día de los procedimientos, entender lo que se está desarrollando y en menor medida, necesitamos tomar un poco de relación con nuestros compañeros.

Para evitar caer en estos fallos tan lamentables como frecuentes es necesario escuchar al equipo de desarrollo antes de fijar los plazos de entrega, y dentro de unos límites, llegar a un consenso con los trabajadores. Si la presión es grande, puede ser mejor idea incrementar la jornada de los técnicos y pagarles las horas extra (lo cual a veces no interesa, pero esa es otra historia).

Si no queda más remedio que contratar a personal ajeno, es donde nos ayudará el contar con procesos sistemáticos de ingeniería que nos permitirán que el nuevo equipo se adapte con rapidez al desarrollo existente.