2007/05/21

Ingenieros, escojamos las palabras

Un proyecto de ingeniería, trate de lo que trate, es antes que nada eso, un proyecto. Nunca suficientemente valorado, este documento responde al qué, el cómo, el por qué, cuanto y quien realizará cada paso para llevar a cabo ese fin.
Quizá esté exagerando en eso de "nunca suficientemente valorado", excepto en el campo de la ingeniería del software, ese mundo lleno de vaguedades donde un prototipo es capaz de alcanzar el mercado a base de parches.

El caso es que leyendo este documento sobre XMPP me he fijado en la nota sobre el uso del lenguaje que se hace dentro del mismo documento. Viene a ser lo mismo que me explicó en clase el Sr. Castejón Limas, una de las pocas personas que hasta ahora he visto tomarse de verdad en serio un proyecto. Mis saludos desde aquí.

Uno de los pasos más importantes en cualquier proyecto es levantar correctamente las especificaciones; es decir ¿qué tenemos que cumplir para alcanzar nuestra meta?
Aquí entra en juego seriamente el lenguaje. No se trata de hacer una mera exposición de objetivos, sino en qué grado son importantes para el fin último.

Intentaré traducir brevemente el RFC 2119:
  1. Debe: esta palabra junto con "tiene que" o "requiere" indica un requisito absoluto. Piensa antes de escribirlas porque TENDRÁS que cumplirlas.
  2. No debe: indica una prohibición absoluta.
  3. Debería: esta palabra junto con el adjetivo "recomendado" indican la posible existencia de razones válidas en circunstancias particulares para ignorar este ítem. Las implicaciones deben ser comprendidas y valoradas cuidadosamente antes de elegir un rumbo diferente.
  4. No debería: esta locución, junto con "no recomendado" significa que puede haber razones válidas en circunstancias particulares en las que un comportamiento específico sea aceptable o incluso útil. Igualmente hay que comprender las implicaciones que esto conlleva y pensárselo bien antes de implementar algo etiquetado de esta manera.
  5. Puede: al igual que el adjetivo "opcional" significa que un ítem es completamente opcional.
  6. Imperativos: Deben ser utilizados únicamente cuando sea realmente necesario para interoperabilidad o para evitar daños. No deben, por ejemplo, usarse para imponer un método o implementación si no es necesario para interoperabilidad.
  7. Consideraciones de seguridad: el autor del documento debe tomarse el tiempo necesario para mostrar las implicaciones de no seguir las recomendaciones y requisitos, ya que los efectos pueden ser inicialmente sutiles y que el implementador probablemente no tenga la experiencia del que escribe la especificación (que por algo la escribe).

Estos son, aproximadamente, los términos en que se expresa el citado RFC.

En resumidas cuentas: hay que pensar lo que se escribe en un proyecto, ya que luego hay que hacer lo que se ha escrito.

Cuestión de proporciones

En uno de esos momentos de procrastinación que tiene uno, leía un artículo sobre el hallazgo de un anillo de materia oscura. Fuera del enorme interés que tiene para la Física y para los chistes escatológicos, hay algo que me ha hecho perder la noción de la realidad: las escalas

El anillo en cuestión tiene al parecer 2,6 millones de años-luz de diámetro y dicen los astrónomos que se formó posiblemente por el choque de dos cúmulos de galaxias. ¿Qué bien, no? Lo hemos digerido sin problemas, ¿verdad?

Vamos a verlo desde otro lado. Dos conjuntos de estrellas chocan. Dos galaxias del tamaño de la Vía Láctea suponen más de 400 mil millones de estrellas. Dos cúmulos de galaxias chocan. Varios billones de cuerpos celestes colisionan entre sí. No todos con todos, eso es cierto, pero ... ¿a que ahora las películas de cataclismos que no paran de sucederse en los cines parecen una auténtica chorrada?

Los cúmulos en cuestión están a unos 5000 millones de años-luz de nosotros. Esa distancia es mayor a la que puede haber cubierto un haz de luz desde que existe vida en la Tierra hasta ahora. Desde antes de la primera protobacteria hasta ahora; una evolucioncilla de nada.

Aunque las estadísticas siempre mientan y por bajísima que sea la probabilidad de que surja la vida en cualquier sitio... ¿cuántas formas de vida, inteligentes o no, civilizadas o no, semejantes a nosotros o no, habrán existido y desaparecido antes de que nuestro planeta comenzase a ser fértil? ¿Quién dice que somos seres únicos? ¿Cómo unas piltrafillas como nosotros vamos a estar llamados a heredar nada?

Ojo, esto no tiene un ápice de pesimismo. Todo lo contrario. Tenemos la puñetera chiripa de estar hoy aqui, vivos y poder disfrutar que lo estamos.

Es simplemente que de vez en cuando La Vida me da vértigo.

2007/05/19

Erecciones municipales 2007

Pasó de moda el "puedo prometer y prometo". Ahora, desde Burgos, llega el "puedo prometer que la meto".

Sí señor. Este es uno de los días en que me siento orgulloso de ser burgalés, de un lugar donde los políticos no solo te la van a meter doblada sino que además se la afilan y entrenan a fondo. Si en el fondo lo hacen con cariño; ¿no va el andoba este y dice "¡Va a saber lo que es el amor republicano y de la Ribera burgalesa!"? Me parece que esta tía ya ha probado más amor del que se pueda imaginar el alcaldible.

Veremos cómo afectan estas tremendas declaraciones al mercado internacional de morcilla.


2007/05/14

¿Qué vista tienes desde tu puesto de trabajo?

Aunque no soy especialmente aficionado a los memes, sobre todo porque se me olvidan, recojo este que me pasó Diego.
Tengo que moverme por toda la empresa, así que la definición de "puesto" de trabajo es un poco laxa, así que también lo son las fotos.

Esto es lo que veo cuando meto mano en el servidor grande.




Y esto, por ejemplo, en planta.



No son como los robots pintores del anuncio del Citröen Xara Picasso, pero también molan (y hacen las piezas del Picasso y otros)

2007/05/02

Pringao, ahora también en remoto

De todos es conocido el "Pringao How-To" y, si no, debería serlo.

Aquí os presento una lista de herramientas para poder trabajar en sistemas remotos, ya sea como pringao o de motu propio.
Las tenemos de todos los colores oiga. Gráficas, de texto, seguras, potentes, simples, sin configuración... Eso sí, pondré poco más que comentarios y enlaces, que para eso están.


Líneas de comando: controlando un sistema con interfaz textual mediante teclado.
  • SSH
    Línea de comandos segura, ni más ni menos. Ideal para manejar una máquina en la que normalmente usaríamos también la consola; cualquier *nix o incluso Windows son candidatos.
  • Telnet
    Línea de comandos pelada. Insegura ya que la comunicación no está encriptada y contraseñas y datos viajan sueltos por el éter para que todos los veamos.

Modos gráficos: una forma de uso más amigable. También llamados escritorio remoto.

Hay gustos para todos los tipos y no todo se puede hacer a base de comandos y texto. La información gráfica suele ser muy rica y en algunos casos imprescindible.
Entre las herramientas siguientes hay algunas diferencias fundamentales, como el caudal necesario para un uso fluido, la necesidad de una sesión en el equipo anfitrión abierta para funcionar o si es software libre o privativo. Además las sesiones de usuario pueden tener lugar en el equipo local o en el remoto.
  • VNC: Sirve para compartir un terminal gráfico abierto en el anfitrión, lo que significa que sólo puede existir una única sesión simultáneamente, aunque la manejen varios clientes. Es software libre y multiplataforma. La conexión puede iniciarla el sistema cliente o el servidor (útil para que un usuario pida soporte técnico a su pringao). Requiere configurar puertos al menos en uno de los extremos. Ejemplos: UltraVNC, TightVNC.
  • NX, creado por NoMachine. Es una tecnología, actualmente libre, para realizar sesiones X a alta velocidad. Por tratarse de un servicio X Windows no necesita que haya inicialmente una sesión de usuario abierta en el anfitrión. Eso sí, solo es para conectarse a sistemas *nix (Linux, Solaris ¿otros?) desde otras plataformas (no necesariamente *nix). A mi me funciona realmente bien incluso en conexiones lentas.
  • Remote Desktop es la tecnología usada por Microsoft para establecer sesiones remotas. Normalmente necesita de un servidor específico (Terminal Server) y muy caro aunque desde Windows XP se ofrece una conectividad limitada (3 conexiones de admin) gratis. Rdesktop es una implementación libre de este protocolo que, si no me equivoco, fue inicialmente desarrollado por Citrix.
  • Conectar al servidor X a pelo. Tiene los inconvenientes de redirigir puertos y la seguridad. Puede tunelarse a través de una sesión SSH para darle seguridad.
  • TeamViewer es básicamente un VNC con un detalle especialmente gracioso: no necesita configuración de puertos y trabaja de forma transparente a través de NAT sin tocar nada (ver Hamachi más abajo) Superútil para dar soporte técnico a gente sin maña tecnológica. Es software privativo, sólo para Windows, pero desde hace pocos días gratuito sin limitaciones para uso personal. Para uso profesional no es de lo más caro.
  • Crossloop, lo pongo por haberlo visto muy muy recomendado. No lo he probado pero parece lo mismo que TeamViewer.
  • Ksremotesupport y otros. Porque como decía hay decenas de opciones posibles y gustos de todo tipo.
Métodos para establecer las conexiones
  • Directa: dirección + puerto. Tiene sus problemas si estás detrás de NAT, firewalls, etc.
  • VPN: red privada virtual, o la posibilidad de crear conexiones directas privadas a través de redes públicas. Hay un mundo sobre esto y mis conocimientos son bien reducidos, así que mentaré un par de herramientas que me resultan especialmente interesantes.
    • Hamachi: crear VPNs de forma rápida y sin apenas configurar nada a través de NAT, firewalls, etc. Multiplataforma y software propietario. Una vez creada la red podremos hacer lo mismo que en una local. Lo usan mucho los viciosos de los videojuegos para simplificar la configuración.
    • OpenVPN: software libre, extremadamente potente, seguro y configurable. Multiplataforma. El problema es que hay que configurarlo (y que el NAT nos deje ser accesibles).
Más referencias en varios otros sitios.

De todo esto últimamente uso mucho la combinación Hamachi + VNC (y en menor medida NX o RDP). No es rápido con VNC, pero puedo usar todos mis ordenadores desde cualquier sitio, sin configurar nada, y tal y como los dejé.
Tanto me está gustando Hamachi que lo tengo como futuro proyecto libre a implementar. Creo que sería muy beneficioso y no especialmente complicado fundir varios proyectos libres en esto. Hace falta algo así para las VPNs del mismo modo que Jabber hacía falta para la mensajería instantánea.

Embrace & extend & extinguish (I)

Hace unos días me sorprendí al oir a un usuario de Windows 2000 de los de toda la vida ¡me toca actualizarme!

No tendría mucho de particular si no fuese porque quienes usamos este sistema para trabajar lo hacemos por su estabilidad y muchos porque desconfían de las pijadillas introducidas en XP y Vista. Algo debía haber aparecido que le obligase al paisano a cambiar su estable plataforma de labora; ¿sería una nueva versión del programa de CAD/CAM? ¿el paquete ERP? ¿un bug de esos enormes que te hace replantearte todo? ¡Qué va! ¡¡Era el messenger de las narices!!

El hombre necesitaba hablar con un distribuidor de programas de CAD y el MSN messenger disponible para descargar pedía Win XP o más reciente. ¿Y para qué? ¿para nuevas pijadas animadas? ¿Por qué mi software libre funciona en un sistema antiguo y el de ellos no?

Embrace & extend & extinguish. Si tus propios productos antiguos son la competencia más fiera a tus nuevos lanzamientos ... tienes un problema. Ya tienes el mercado y has creado extensiones a las viejas piezas de tu imperio; ahora falta rematar a la competencia, incluso si eres tú mismo.

Es difícil que decenas de miles de usuarios contentos o simplemente acostumbrados a sus herramientas se decidan a soltar la mosca precisamente tras haber rentabilizado su inversión anterior. A Microsoft, por ejemplo, cada día le está costando más dar el empujoncito a sus usuarios para que compren más de lo mismo. Si las nuevas cosillas de Office ya no tiran lo suficiente del mercado de sistemas operativos porque nadie cambia un Office que ya funciona bien, igual el hacer que servicios gratuitos como Messenger funcionen como el culo en el sistema antiguo puede ayudar. Al fin y al cabo los servicios "con conexión" o funcionan o no; si el servidor quiere una versión nueva no puedes tu viejo software en tu viejo pc.

Nota:
Sí, sé que no suele estar bien aceptado el uso de mensajes instantáneos en el puesto de trabajo, pero nosotros lo usamos bastante para comunicarnos con proveedores de software y servicio técnico vía colegas. El caso es que lo usamos y lo necesitamos.