Otro año más comienzan las jornadas del grupo de usuarios de Linux de la Carlos III (gul-uc3m) y me he animado a colaborar de nuevo con ellos, esta vez con una charla sobre OpenLdap. En las jornadas del año pasado participé con una charla sobre Alta Disponibilidad y Balanceo de carga.
Habrá charlas durante todas las tardes de la semana (ver horarios) y finalizarán el viernes con la celebración del congreso del Gul en el que habrá charlas durante todo el día. Mi charla será el Martes 11 a las 18:00, así que si queréis aprender algo sobre OpenLdap pasaros por allí.
ACTUALIZACIÓN: La charla fue bastante interactiva y entretenida, tenía pensado no tomar mucho más de una hora y terminamos utilizando cerca de 2 horas y poco. La interacción con los asistentes fue constante e intenté resolver sus dudas y preguntas de la mejor forma posible.
Estoy bastante contento de las modificaciones que metí en la charla respecto a la que realicé en las Jornadas de Software Libre de Albacete ya que hacen el tema mucho más claro. Por ejemplo la primera parte explicando mejor que es un directorio, cuál es la estructura que se usa en Ldap, etc… pero especialmente el ejemplo de cómo utilizamos OpenLdap en Andago. Cuando observas cómo se integra la autenticación de más de 25 servicios tan variados cómo los sistemas de correo y web, subversion, trac, sugarcrm, openvpn, samba, opencms, egroupware o incluso los propios escritorios te das cuenta lo útil que puede ser tener un sistema de directorio basado en OpenLdap. El mejor ejemplo es calcular el tiempo que tardarías en dar alta un nuevo empleado en todas esas herramientas :D.
También realicé algunas demostraciones en vivo en la charla instalando OpenLdap, herramientas para gestionarlo cómo GQ o phpldapadmin y demostrando lo fácil que es utilizar la API de OpenLdap desde cualquier lenguaje de programación cómo en este sencillo script Perl de ejemplo. Lo que ya no me dio tiempo debido a la avalancha de preguntas fue a mostrar la integración pam-ldap que llevaba preparada.
Y para aquellos que os la perdisteis aquí os dejo las transparencias utilizadas, cómo ya es habitual liberadas bajo licencia Creative Commons Reconocimiento 3.0 España:
Un saludo a toda la gente del GUL de la Carlos III y suerte con el congreso de hoy, pena que me marche a Santander de boda, sino me habría encantado compartirlo con vosotros.
Ya han pasado unos días desde que regresé de Málaga pero aún no me he recuperado del todo de las emociones que he vivido en esos días. Dos eventos increíbles en tan poco tiempo era una oportunidad que no podía perder y tras hacer lo imposible conseguí estar en los dos: Hackmeeting 0.8 y Open Source World Conference 2008.
Hace ya bastante tiempo que tenía ganas de asistir a algún Hackmeeting pero por A o por B nunca me había sido posible. Esta vez y aprovechando que enlazaba con la OSWC en la que Andago pondría un stand y que se podía aprovechar el viaje para hacer un 2×1 me lancé a asistir, además tras hablar con acs pillamos el hotel a medias con su correspondiente reducción de coste :D. Me encantó el ambiente del hackmeeting, esas ganas de colaborar entre todos para llevar a cabo el evento, charlar con la enorme diversidad de gente que asistía al evento, los nodos que se prepararon y la energía que se genera entre todos.
El CSOA de la casa invisible es encantador con su enorme patio, su tetería y todo el espacio para realizar las charlas y eventos. Al principio me sentí un poco extraño en un ambiente tan alternativa pero poco a poco te acoges a la dinámica y empiezas a pasarlo bien. Yo llegué ya por la noche, así que no pude estar en la manifestación, parodiando una misa de alabanza a root, que según me cuentan fue muy divertida y que luego se repitió en el pabellón de la OSWC unos días más tarde. Mi primer contacto fue con la asamblea general del Hackmeeting dónde me enteré mucho mejor de cómo funcionaba y se coordinaba la gente.
Ya al día siguiente, después de hacer un poco el cabra y de turismo por la playa, estuvimos trasteando un poco con Arduino, la verdad es que me sorprendió lo fácil que es hacer cosas con estas plaquitas y las muchas posibilidades que te ofrecen. Por la noche estuvo muy interesante la cena en un chino con acs y Mirian Ruiz dónde charlamos sobre Debian, licencias y forjas. Para más tarde, ya a altas horas de la madrugada, asistí a dos nodos sobre web semántica y las posibilidades que nos da el análisis de datos en la red que me despejaron completamente. Quizás, y fue un tema muy comentado, eché de menos más nodos de seguridad y demás temática hack, aunque la parte social del evento también me interesaba.
El domingo me tocó currar de lo lindo, ya que el lunes Andago liberaba Opencities 2.0 en la OSWC y había que hacer algunos retoques a los paquetes y demás así que no pude acercarme por la invisible a despedirme, un saludo a todos desde aquí. Aún así saqué un ratito para quedar a comer con mi colega Sean que me llevó a disfrutar de los chiringuitos malagueños.
Y por fin llegó el Lunes ya se abría la OSWC en la que Andago participaba cómo patrocinador y en la que desplegamos un stand y se impartían varias charlas sobre nuestras soluciones. La verdad es que de siempre me han encantado las ferias y me hacía ilusión participar en una desde dentro. La participación fue enorme y desde el primer día la gente abarrotaba los stands y las salas de conferencias.

En cuanto a las charlas me gustó bastante la de Tim O’Reilly aunque me decepcionó un poco que restara importancia a los logros que hemos conseguido ya en el software libre, minimizándolo frente otros logros y ensalzando el modelo de nube que se está generando ahora. Para mí algunos problemas que genera este nuevo modelo son la perdida de privacidad, la perdida de control sobre las aplicaciones, la imposibilidad para cualquier persona para reproducir el desarrollo de forma personal o corporativa (no todo el mundo tiene granjas de servidores) y que muchas de las soluciones no son libres, eso sí son muy cómodas y muy potentes pero entramos en el debate de siempre. Luego estuve un rato por las charlas de desarrollo con Arduinos cómo la de cuadrúpedos libres.

Una de las cosas que más pena me dio es volver a comprobar la imposibilidad de coordinación que hay entre administraciones públicas y demás estamentos. Antes se trataba de las distribuciones regionales en la que ha sido muy difícil llegar a reutilizar los esfuerzos de unas para las otras y ahora le toca el turno a la forjas. ¿Ya tienes tu propia forja en casa? Pues en la OSWC pudimos ver cómo empujando cada uno para un sitio se diluye el esfuerzo y oímos hablar de OSOR, VULCANO, el CTT y demás que vienen a unirse las que ya teníamos a nivel regional cómo las de Cataluña y Galicia, así cómo a la de rediris y otras internacionales cómo Sourceforge. Señores pongase de acuerdo y colaboren, ¿no va esto de eso? Ahí va otro ejemplo, en una charla del CENATIC afirman haber creado el primer directorio de empresas de fuentes abiertas de España… no sé si habría algún matiz de esos de abogado en la frase pero señores, estudien la historia que ya ha habido unas cuantas. Y sin olvidar cuando salen a la palestra las grandes empresas y se dedican a medirse los miembros… yo tengo más gente, yo tengo más desarrollos, yo tengo los más antiguos y yo los más bonitos. Muy bien señores, mientras favorezcan al software libre cuanto más tengan mejor para todos.
Me gustó bastante la tanda de charlas de virtualización OpenXVM, OpenVZ y ModularIT que confirman las grandes posibilidades que tiene el software libre en este campo cada día más extendido entre las empresas. Mientras que la otra cara de la moneda fue la charla de SUN supuestamente titulada: Glassfish + Mysql + Netbeans en la que se presentó un tipo a restregarnos toda su suite de software privativo (Vista + Powerpoint) y en la que se dedicó a mal bajarse el paquete de Netbeans y hacer una triste JSP con el asistente. A la próxima, por favor, titule la charla “Cómo hacer un JSP en 40 minutos” y se ahorrará mi presencia.
Me perdí la charla de los “gurús” y estoy esperando que la suban a la web del OSWC. Y por último estuve en una charla sobre asociaciones de empresas de Software Libre en la que presentaba la gente de Asolif y representantes de Amesol, que sería su versión Mexicana. Al terminar la charla me quedé un rato platicando con los cuates de Amesol y me dio mucho gusto ver que las cosas se mueven por allí también, quién sabe dónde puede acabar uno
. Por último conseguí, tras una hora de cola, hacerme con mi certificado digital de la fábrica nacional de moneda y timbre, que hace tiempo quería conseguir pero nunca sacaba tiempo para hacer el trámite.

En definitiva me encantó la OSWC y creo que estos eventos dan un gran impulso al Software Libre a todos los niveles: institucional, empresarial y personal, mi enhorabuena a los organizadores. Quizá la única pega que se produce al haber tanta gente es que es más difícil el consabido “networking”, es decir conocer gente interesante, charlar, hacer negocios, etc… cosa que creo que en el congreso Hispalinux del año anterior era algo más cercano.
Bueno ya llevo mis primeras semanas dedicadas al tema de Arquitectura de Plataforma y sumergiéndome en el mundillo del desarrollo Java, aunque sea desde el punto de vista no ya del desarrollador sino de la gestión de sistemas y la organización de proyectos. El primer punto en el que queríamos focalizar los esfuerzos es en la gestión de entornos: desarrollo, pre-producción y producción y el paso que realizan los proyectos a través de estos.
Primero describir el escenario inicial: existen diversos grupos de desarrolladores trabajando en varios proyectos, muchos de ellos interelacionados entre si. Este proceso de desarrollo muchas veces se realiza en la propia máquina de los desarrolladores y se va subiendo a un repositorio común, en nuestro caso subversion. El problema aparece cuando se intenta llevar una versión a producción y esto se hace desde el equipo de algún desarrollador, por lo que en muchos casos ese código ni ha subido aún al subversion, se tienen instaladas librerías o versiones del JDK que no se corresponden con las que hay en producción, no queda registrada que versión pasa a producción y cuál había, otras veces el proyecto se compila dentro de la máquina de producción, etc… es decir, en el caso de un desarrollo ya medianamente grande se va creando un pequeño/gran caos.
Para solucionar este problema hemos desarrollado el siguiente esquema de funcionamiento en el que encontramos una pieza clave: el servidor de integración.

Todas las “piezas” que se quieran pasar a producción deberán ser construidas en este servidor de integración y además siempre se obtendrán todos los elementos necesarios para la construcción del sistema apartir del control de versiones.
Con ello matamos varios pájaros de un tiro:
- Tendremos controlada la versión de los proyectos desplegados, sobretodo si generamos un Tag de subversion tras la compilación correcta.
- El entorno de construcción está controlado, siempre se usará la misma versión de la máquina virtual, librerías, etc… y nos aseguraremos que en producción dispongamos de ese mismo entorno.
- No requeriremos de compiladores ni dependencias de ese tipo en los entornos de producción, cosa que es altamente recomendable por motivos de seguridad.
- Los desarrolladores ya no tendrán acceso a las máquinas de producción, simplemente tendrán que solicitar una nueva compilación de su proyecto al servidor de integración y los encargados de sistemas lo pasarán a pre-producción y una vez probado a producción.
Buscando alguna interfaz que nos permita hacer más amigable el proceso de compilación de proyectos en una máquina remota me he encontrado con los llamados servidores de integración continua, a los que dedicaré un post individual, pero que nos pueden facilitar enormemente esta tarea además de darnos algunas ventajas adicionales.
Por otro lado hemos descubierto que no debemos basarnos únicamente en los elementos ejecutables que pasan a producción, sino que en muchos casos habrá que hacer subidas también de datos requeridos para el funcionamiento de la aplicación: modificaciones a las bases de datos o al LDAP o directorios con ficheros necesarios. Estos objetos se empaquetarán junto con la consiguiente nueva versión del proyecto y deberán gestionarse de forma paralela a este, tanto en versionado cómo en su posterior subida a producción.
Finalmente otra gran ventaja la encontramos al disponer de entornos de pre-producción para cada proyecto que nos permitan probar las nuevas versiones de las aplicaciones antes de pasar a producción. Una buena infraestructura de virtualización nos puede ser de gran ayuda en esta parte ya que nos va a permitir tener multiples entornos dentro de un mismo servidor compartiendo recursos.
Al hilo de mi último post sobre el curso de JBoss y demás quería hablar sobre mi nueva dedicación dentro de Andago: la creación de un departamento de arquitectura de plataforma o arquitectura de sistemas, todavía no está decidido el nombre, aunque el logo podría ser algo así:

Para comprender este paso hay que tener en cuenta el cambio de orientación que ha tenido Andago en los últimos años: pasando de trabajar más en el area de sistemas y Linux propiamente dicho a abrirse al mundo del desarrollo de soluciones abiertas para la administración y al impulso de una fuerte política de I+D en este area. Esto ha probocado que la tortilla dé de alguna manera la vuelta y que el mayor crecimiento se haya producido en el area de desarrollo, tanto en personal cómo en proyectos que se llevan a cabo. Llegados a este punto uno se pregunta si aún quedará trabajo para un jefe de proyecto especializado en el area de sistemas cómo es mi caso.
Y la respuesta es que hay muchísimo trabajo por hacer a la hora de mejorar las plataformas y sistemas que alojarán las soluciones que salen del horno de la sección de desarrollo y muchos de los procedimientos a través de los cuales se está trabajando en este momento. Así que el departamento de arquitectura será un elemento transversal a la compañía y separado del departamento de sistemas y soporte que afectará a todas las areas de trabajo.
Algunos de los objetivos que nos estamos fijando son los siguientes:
- Unificación de soluciones sobre un marco común que las haga interoperables y compatibles entre sí,
- Paquetización de productos tanto para facilitar el trabajo a los equipos de desarrollo cómo para su posterior distribución en el mercado.
- Definición de políticas de entornos para que todo proyecto disponga de sus correspondientes entornos de desarrollo, pre-producción y producción y guías de cómo se debe pasar entre ellos.
- Dotar a las plataformas de alta disponibilidad y balanceo de carga.
- Mejora de la seguridad de las soluciones.
- Pruebas de carga y mejora de rendimiento de las plataformas.
Y muchas más que nos irán surgiendo… aquí os dejo un mapa conceptual que hecho con Freemind (herramienta que nos recomendó acs y de la que me he convertido en un gran fan):
Además siguen surgiendo muchos proyectos de sistemas y de redes inalambricas metropolitanas que irán surgiendo y con los que tendré el gusto de lidiar, pero ya os iré comentando más cosas. Por otro lado si el proyecto de Arquitectura de plataformas te ha resultado interesante y tienes conocimientos de Linux y servidores de aplicaciones (preferentemente JBoss/Tomcat) estamos buscando gente cómo tú (mandame tu curriculum a través del formulario de contacto de esta mísma página web).
La semana pasada asistí al curso JB336: Jboss for administrators que impartía la gente de Red Hat. Las sensaciones han sido bastante satis satisfactorias y he aprendido bastante por lo que quería hacer un post sobre el tema.

Lo primero que me llamó la atención del curso y lo que me llevó a solicitar a mi empresa que me inscribiera fue su orientación hacia la administración y no tanto hacia el desarrollo. Llevamos algunos meses buscando un experto en servidores de aplicaciones sin éxito con lo que decidimos impulsar el conocimiento dentro de la propia empresa y este curso venía cómo anillo al dedo.
Este es el segundo curso que hago con la gente de RedHat, el primero fué el de certificación RHCE, y en ambos casos he acabado bastante satisfecho, eso sí cómo siempre lo bueno sale caro, pero al final terminas amortizándolo a el largo plazo con la mejora que puedes aplicar a tu trabajo con un conocimiento orientado en la dirección correcta.
De toda la vida he sito muy contrario a la filosofía JAVA y a todo lo que la rodea optando siempre por otras alternativas, pero su amplía difusión me ha llevado a tener que lidiar con ella finalmente y espero que esta nueva amistad tenga un final feliz.
El primer día de curso me pareció un tanto teórico pero me ayudó a afianzar muchos conceptos del mundo JAVA y de los servidores de aplicaciones que tenía algo entremezclados. Pero a partir del segundo día nos pusimos a darle caña al servidor profundizando en temas interesantes cómo los procedimientos de despliegue de aplicaciones, temas de rendimiento y tunning, balanceo de carga y alta disponibilidad, seguridad, etc… La arquitectura de JBoss es bastante flexible y extremadamente potente con lo que nos va a permitir muchas posibilidades a la hora de ponerlo en producción.
Por último comentar que he vuelto a reafirmar mi posición respecto a lo increíble que es recibir formación de gente experta en un tema que ha tenido que lidiar con ella en entornos de producción y que sabe muy bien de lo que está hablando frente a la formación académica que se recibe en muchos casos en la Universidad por un profesor que acaba de leer algo sobre el tema en un libro. Quizás por eso el formato muchas veces está cambiando y en muchos master las asignaturas no las imparte un único profesor sino que traen a expertos en la materia para bien de sus alumnos.
Para que podamos genera documentos PDF con la facilidad que nos da C# tanto para nuestras aplicaciones de escritorio como para las Web.Con caracteristicas tan interesantes como:
Y gran cantidad de ejemplos desde aqui.Como este "Hello World":
// Create a new PDF document
PdfDocument document = new PdfDocument();
// Create an empty page
PdfPage page = document.AddPage();
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);
// Create a font
XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
// Draw the text
gfx.DrawString("Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormat.Center);
// Save the document...
string filename = "HelloWorld.pdf";
document.Save(filename);
// ...and start a viewer.
Process.Start(filename);
Desde aqui lo podeis descargar.
Ultimamente me esta dando por experimentar con mi s200, hasta que por fin lo he conseguido. Bueno mas bien lo han conseguido los crack que trabajan en el proyecto linwizard, dadas las similitudes de la HTC Wizard con la Prophet podemos correr perfectamente el kernel montado de una para la otra.
Desde hace tiempo podiamos correr la linea de comandos, pero ya estan empezando a moverse los primeros entronos graficos como GPE, Opie, OpenMoko e incluso Android.
Hoy vamos a correr el primero GPE, aunque es si, recordad que esto es una BETA !!, todo lo que hagais corre a cargo y riesgo vuestro. Pues bien, empezemos a definir los pasos:

Montar tarjeta MMC/SD
Si necesitamos mas espacio de almacenamiento para seguir haciendo pruebas solo tenemos que haber preparado nuestro tarjetero antes de arrancar la distro. Gracias a la iniciativa SD-Workaround podemos hacerlo. Solo tenemos que seguir los siguientes pasos:
La siguiente vez que arranques linwizard ya podras detectar la tarjeta en /dev/mmcblk0. En las ultimas versiones la dectecta automaticamente, pero en la 0.2.0 y anteriores tienes que forzarlo para que funcione:
# cat /proc/partitions
major minor #blocks name
1 0 20504 ram0
179 0 1990656 mmcblk0
179 1 78136 mmcblk0p1
179 2 1912512 mmcblk0p2
# cd /dev
# mknod mmcblk0 b 179 0
# mknod mmcblk0p1 b 179 1
# mknod mmcblk0p2 b 179 2
# mkdir /mnt
# mkdir /mnt/sda2
# mount /dev/mmcblk0p2 /mnt/sda2
Montar el rootfs desde una tarjeta MMC/SD
En el primer apartado hemos lanzado el Sistema Operativo desde el initrd, pero ahora vamos a probar a cargar el kernel, pero lanzar el rootfs que este copiado en una tarjeta SD o MMC. En este caso vamos a ver como lanzarlo con el OpenMoko.
Primero preparamos nuestra tarjeta con dos particiones, la primera (mmcblk0p1) un sistema de ficheros FAT y en la segunda particion (mmcblk0p2) ha de ser EXT2. (Dado que existen mil tutoriales de como hacerlo me abstengo de detallarlo)
set MTYPE 1229
set KERNEL "zImage"
set INITRD "initrd"
set CMDLINE "root=/dev/ram0 ramdisk_size=20504 init=/linuxrc panic=30 video=omapfb:accel console=tty0"
bootlinux
Por el siguiente:
set MTYPE 1229
set KERNEL "zImage"
set CMDLINE "root=/dev/mmcblk0p2 ramdisk_size=20504 init=/linuxrc panic=30 video=omapfb:accel console=tty0"
bootlinux

De la misma forma podremos hacerlo con Android en breve.
Mas info:
irc://irc.freenode.org/#linwizard
irc://irc.freenode.org/#htc-linux
Últimamente me rondan por la cabeza un montón de ideas que luego acaban en el cajón desastre de las cosas que nunca llegaron a hacerse, pero que hoy me ha dado por darles salida aunque sea a este blog. Algunas son un poco antiguas y ya las ha echo alguien y otras son simple efecto de la locura temporal. La verdad es que luego siempre me echo en cara que luego nunca me pongo con nada y que siempre ando perdiendo el tiempo.

Ahí va este chaparroncillo de ideas:
- Servicios digitales para eventos. Esta idea me surgió mientras estaba sentado junto al escenario dónde tocaría más tarde Metalica en el Electric Weekend de Getafe. Mi misión era dar conectividad inalambrica tanto a organizadores, músicos y asistentes al concierto y estaba esperando que los electricistas volvieran de comer para empezar a subir nodos Mesh a las farolas y después de haber comprobado que el enlace Wimax con el troncal funcionaba perfectamente. La cifra que me había cometnado la organización que se manejaba cómo presupuesto para ese tipo de conciertos rebotaba en mi cabeza. También muchas de las cosas que podría ofrecer una empresa especializada en estos temas.
Antes de que tuviera lugar el concierto se podría comenzar con todo el tema de difusión: página web, blog, foros, posicionamiento, difusión en redes sociales, prensa digital, etc, etc… Luego en el concierto o en el evento de que se tratase está el tema de la conectividad: instalar un centro de mando, posiblemente una conexión por satélite a internet que se pudiera instalar en la calle, mesh para cubrir toda la zona, tomas de cable para prensa y muchos más. También se podrían hacer cosas cómo zonas de información por bluetooth, concursos por SMS, kioskos de conexión, etc… las posibilidades son infinitas y no se limitarían a conciertos, existen miles de eventos dónde los servicios de una empresa especializada cómo esta podría tener su cabida.
- El agregador social: Este tema creo que ya está siendo desarrollado o hay iniciativas parecidas pero no sé si han terminado llegando a algo. Se trataría de una utilidad, podría ser en web o un aplicación de escritorio, que te permitiera interactuar con varias redes sociales de forma unificada, pudiendo así llegar a mucha más gente. Por ejemplo tendrías tus contactos independientemente de la red a la que pertenezcan, podrías subir una foto y que esta estuviese publicada a la vez en facebook, hi5, orkut, myspace, flickr y tu propio gallery, que recibiera y te mostrara los eventos que se producen en cada una de ellas. Por ejemplo, pepito a editado su perfil en facebook, menganito subió un video en youtube, alguien comentó tu foto en flickr, florinda te habla por el google talk o el skype, etc… La iniciativa de Google de OpenSocial facilitaría muchísimo llevar esto a cabo, porque por ahora habría que pelearse con todas las APIs una por una.
- El escritorio social: Esta idea hace mucho tiempo que me ronda por la cabeza… y es algo parecido a lo que he comentado antes con el agregador social, pero sacado del navegador o su programa concreto e integrado en el escritorio. Disponer de widgets con información de los eventos de las redes sociales, poder ir caminando por second life cómo si fuera tu propio escritorio, etc… es decir transformar el escritorio más en una herramienta de comunicación que en un contenedor de aplicaciones locales y de ficheros, ya que últimamente nos dedicamos más a esa faceta cuando encedemos nuestras máquinas.
- SMS-Twitt: Esta es una utilidad que no sé si está desarrollada para España pero que te permitiría twittear a través de SMS. Hasta dónde yo sé puedes recibir tus twitts por SMS pero no estoy tan seguro de que puedas publicar. El desarrollo sería fácil, bastaría con unos terminales móviles conectados a la computadora, al menos uno por operador o un acuerdo con estos últimos para la recepción de los SMS y asociar los números de teléfono de la gente que envié SMS con su cuenta de twitter correspondiente. A cada envío se le cobraría una pequeña cantidad a sumar a la que ya te cobra el operador por mandar el SMS. y es que a veces queremos twittear y no tenemos Wifi cerca o aún no hemos contratado esas tarifas tan baratas de 3G.
La verdad es que tengo muchas más ideas, pero por hoy yo creo que ya ha sido bastante atormentaros. Si hay alguien dispuesto a poner su tiempo o su pasta para desarrollar mis ideas, es bienvenido.
Muchas veces hemos necesitado obtener la posicion GPS de un punto sin estar alli. para metersela al TomTom, para hacer algun estudio, por curiosidad, ... Pues bien, simplemente siguiendo los cuatro pasos que se muestras a continuacion los tendreis
javascript : void(prompt('',gApplication.getMap().getCenter()));
Para uno de los proyectos en el que llevo trabajando algunos meses nos pidieron que efectuaramos pruebas de carga de los servidores del proyecto para ver hasta dónde podríamos llegar y cómo reaccionaban dichos servidores ante la carga.
El primer problema fué encontrar la forma de simular peticiones sobre los servidores web de forma que estas simularan la actividad de los usuarios reales. Esto era un tanto difícil por la forma en que se autenticaban los usuarios y que la mayor parte del contenido se accedía una vez autenticado. Aquí encontramos dos posibles soluciones:
- Scripting con curl: Utilizando bash script y el curl realizábamos una auténticación en el sistema que quedaba almacenada en una cookie que se utilizaba posteriormente cómo credencial de acceso en las peticiones siguientes. La verdad es que curl es una herramienta que me encanta y que nos permite hacer cosas realmente ingeniosas cuando se trata de automatizar algunos procesos web y os la recomiendo encarecidamente. Además se desarrolló otro script para parsear los resultados de curl de forma que pudieramos obtener estadísticas de tiempos de acceso por número de usuario y por página visitada. Un saludote a @jorgecab que se curró la mayor parte de los scripts.
- Jakarta JMeter: Es una herramienta java bastante potente que nos permite definir escenarios muy variados de pruebas de carga y analizar los resultados. Una de las cosas que más me gustó es su herramienta de proxy web que te permite levantar un proxy contra el que enchufas tu navegador y simulas la navegación que quieres que luego se repita durante las pruebas de carga. Muy potente y bastante flexible, y por supuesto Open Source.
Una vez que disponíamos de nuestro generador de stress y antes de lanzarlo contra los servidores hay que asegurarse de tomar bien “la temperatura” a los servidores, es decir capturar el máximo de datos de su estado durante el periodo de las pruebas. Para ello utilizamos el paquete sysstat que nos permite medir con precisión una gran cantidad de elementos significativos dentro de nuestro servidor. Para ello utilizamos dos herramientas:
- Sar: Que nos permite muestrear una gran cantidad de información de nuestro equipo cómo por ejemplo: uso de las distintas CPUs, carga del sistema, uso de memoria, entrada/salida, red, etc… Para ello definimos los parámetros que queremos monitorizar, el periodo entre cada muestra y el número de muestras que vamos a tomar.
- Pidstat: De toda la información que obteníamos con sar sólo echaba en falta el poder comprobar el estado de los procesos y cuales eran los que estaban cargando la máquina. Después de buscar un rato descubrí que a partir de la versión 8 de systat se incluye la utilidad pidstat que nos permite tomar muestras parecidas a las de sar pero por procesos indicando los pids de los procesos a monitorizar o trabajando con todos ellos. Así podemos comprobar la subida y bajada del uso de memoria y de CPU de los procesos más significativos.
A la hora de estudiar el comportamiento del sistema y de generar el informe sobre las pruebas nos encontramos con otra herramienta muy interesante: kSar que nos permite sacar de forma sencilla gráficas a partir de los datos obtenidos mediante sar. También tenemos la opción de exportar directamente la salida de sar o pidstat a un fichero csv y importarlo en nuestro openoffice calc para crear gráficas.
Despues de la rendicion de Palm y la no llegada al publico de OpenMoko, ataca Google con su Sistema Operativo Android siendo una realidad, hoy sale a la venta el HTC Dream, con este S.O. empotrado, pudiendo desarrollar con lenguajes como Java, Mono, .....
ACTUALIZACION: (HTC parece que corre el rumor de anunciar el lanzamiento del Diamond en el Sur de África en Q4 2008)

Y aunque teoricamente es novedad hardware, desde hace ya tiempo podemos ver videos en youtube de como funciona en otros dispositivos
HTC Touch Dual
HTC Wizard
HTC TyTN
HTC Polaris
Tiembla IIS !! je ,je , interesante articulo de Oren Eini, en el que nos muestra como programar un servidor web en pocas lineas de codigo en Boo, un leguaje que empezo como experimento inspirado en Python, pero que cada vez coje mas fuerza, dada la comunidad que le acompaña.
import System.Net
import System.IO
if argv.Length != 2:
print "You must pass [prefix] [path] as parameters"
return
prefix = argv[0]
path = argv[1]
if not Directory.Exists(path):
print "Could not find ${path}"
return
listener = HttpListener()
listener.Prefixes.Add(prefix)
listener.Start()
while true:
context = listener.GetContext()
file = Path.GetFileName(context.Request.RawUrl)
fullPath = Path.Combine(path, file)
if File.Exists(fullPath):
context.Response.AddHeader("Content-Disposition","attachment; filename=${file}")
bytes = File.ReadAllBytes(fullPath)
context.Response.OutputStream.Write(bytes, 0, bytes.Length)
context.Response.OutputStream.Flush()
context.Response.Close()
else:
context.Response.StatusCode = 404
context.Response.Close()
Para compilarlo solo
# booi prueba.boo http://localhost:8085/ ~/Desktop/
Desde hace tiempo que vengo trabajando con dos pantallas en mi estación de trabajo y la verdad es que es un gustazo. Disponer de un espacio de trabajo de 2560×1024 es otra dimensión y es realmente útil a la hora de tener dos vistas completas al mismo tiempo: el editor de texto y google para extraer información, dos trozos de código a comparar, el gimp con todas sus herramientas desplegadas, etc… Algunos problemas que tuve al principio fueron que metacity no me colocaba correctamente las ventanas nuevas y solía mandarlas a la otra pantalla, lo que resultaba muy molesto. Al parecer esto se podía evitar utilizando compiz, pero en las primeras versiones se pegaba de tortas con los drivers de mi nvidia configurada con 2 monitores y se comía toda la cpu, aparte de ir muy lento. Con las versiones actuales de compiz o de los nuevos drivers de nvidia se ha solucionado el problema y ahora al abrir nuevas ventanas se abren en la misma pantalla en la que tengo el puntero. Digamos que sólo me falta solucionar un defectillo con el splash de algunos programas que se posiciona en el medio, es decir mitad en cada monitor.

Pero dándole vueltas a esto, muchas veces tengo también sobre la mesa el portátil y es un rollo tener que cambiar de teclado y ratón para manejarlo y lo ideal sería poder controlarlo también con el mismo teclado y ratón que mi estación de trabajo. Bueno pues para eso tenemos x2x que nos salva la papeleta de maravilla. Tras permitirle acceso a las X del portátil a la estación mediante xhost, lanzamos en esta x2x indicandole a que lado de nuestras pantallas tenemos el portátil. Cuando el cursor llega al final de la pantalla de la estación de trabajo se pasa limpiamente a la pantalla del portátil y podemos controlarla sin cambiar las manos ni sufrir el calorcillo de nuestro pequeñin. Incluso podemos cortar y pegar texto de uno en otro, ya pasar ventanas teniendo en cuenta que son dos equipos diferentes parece un poco más complicado, pero seguro que se podría hacer. Incluso si no usamos Linux en nuestro portátil podríamos controlarlo si tenemos instalado vnc con x2vnc
Hoy os voy a presentar el último proyecto que han desarrollado mis compañeros de I+D en Andago: Open Health Assistant. Se trata de una plataforma para móviles basada en Android de Google que ofrece importantes avances en el área de la asistencia sanitaria. Pero lo cuenta mucho mejor “Rafa” en un perfecto inglés:
Mi más gran enhorabuena a todo el equipo Android de Andago: Rafa, Ruth, Mariajosé, Silvia y Angel, y mucha suerte con el concurso Android Development Challenge. ![]()
El otro día me enseñaron mis compañeros de sistemas de Andago un nuevo plugin que habían incorporado a firefox y a thunderbird que te permite saber en todo momento si tienes alguna alerta en tu red.
Me encanta Nagios, creo que es uno de los componentes de software libre que más he visto implantado en todo tipo de entornos corporativos para monitorización, tanto grandes cómo pequeños. Y poder tener información de las posibles alertas mientras navegas o lees correo está genial. Podéis descargarlo en:
¡A monitorizar sin parar de navegar!
El proximo dia 29 de Marzo contaremos con la presencia de Hadi Hariri con una estupenda sesion de TDD, ya oodeis apuntaros:
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
CLMNET.- Hands On Lab.- Desarrollo guiado por pruebas (TDD) Descripción: Hadi
Hariri realizará un Hand On Lab (Taller práctico guiado) con una charla
extendida de desarrollo utilizando TDD (Test Driven Development o
desarrollo guiado por pruebas), con un enfoque práctico, con ejemplos,
de cómo resolver casos reales incluyendo aspectos de metodología y de
desarrollo en equipo como: - Pruebas unitarias - Mocks (prototipos) - Arquitectura en capas incluyendo MVC Ponente: Hadi Hariri Fecha: Sábado 29 marzo del 2008 Horas: 9:00h a 13:00 Lugar: Laboratorio Software 5, Escuela Politécnica superior de Albacete (EPSA) 
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
Mañana doy una charla en la Universidad Carlos III de Madrid dentro del ciclo de cursos organizados por el GUL. La charla será sobre Alta Disponibilidad y Balanceo de Carga con Software Libre, uno de mis temas favoritos y que ya expuse en una de las jornadas de Software Libre de Albacete.

He actualizado las transparencias con las nuevas novedades y le he dado un toque más minimalista siguiendo las recomendaciones que suelen hacer para las charlas, menos texto que luego terminas leyendo y más hablar sobre el tema. A ver que tal sale.
La charla será en el campus de Leganés (Ver mapa) y empieza a las 19:00. Así que si os animáis nos vemos por allí.
ACTUALIZACIÓN (12/03): Me quedé con ganas de escribir sobre la charla, así que voy a ampliar un poco más el post. La verdad es que cada día me siento con más aplomo para hablar en público y sobre todo se facilita muchísimo si son temas que te gustan y sobre los que has trabajado bastante. Las mejoras que le hice a la presentación, cómo dije, eliminando gran parte del texto y dejando sólo un titular, un par de frases o un gráfico, dan pie a que puedas improvisar y hablar todo lo que sepas sobre el tema. Aún creo que me falta mejorar bastante en la expresión corporal, porque a veces señalo al ordenador en lugar de la pantalla, pero he descubierto que darlas de pie termina dando mucha más expresividad al asunto. Precisamente hace poco tiempo le comentaba a Lili que a veces me gustaría dedicar parte de mi tiempo a la enseñanza, aunque me gusta seguir al pie del cañon, asi que es un sentimiento un tanto contradictorio.
La charla se hizo amena porque la gente preguntó mucho y aunque por supuesto uno no sabe de todo, se presentaron algunas dudas interesantes que intentamos resolver. También creo que fué un acierto diversificar algunos temas cómo las técnicas de almacenamiento y contando las novedades en las herramientas que se presentaron, haciendo que a pesar de no profundizar en exceso en una tecnología nos queden los conceptos e ideas claras y luego se puedan ampliar para los que quieran montarlas.
Luego pude charlar un ratillo con la gente del GUL y me quedé con ganas de más, así que me pasaré a algunas de las reuniones que hacen de vez en cuando. Mañana colgaré la nueva versión de la charla, que cómo se acostumbra, se libera bajo Creative Commons Reconocimiento 2.5 y también a ver si consigo alguna foto de la charla y/o el video de la misma y también lo cuelgo.
ACTUALIZACION (16/04): Aquí están las transparencias que utilicé para la charla:
Se liberan cómo de costumbre bajo Creative Commons Reconocimiento 2.5 de España, que os aprovechen. ![]()
Una de las cosas que me encanta de Madrid es la increíble cantidad de cosas que hay para ver y hacer no sólo en la parte lúdica y cultural, sino para alimentar nuestro lado más geek. Cada año cuando me enteraba de que se iba a celebrar la MadriSX se me ponían los dientes largos y pensaba ¿merecerá la pena pillar un tren para pasar un día entre mis cacharrejos favoritos? Bueno ahora tengo la suerte de poder pillar un metro y en menos de media hora estar ahí. ¿Algo bueno tenía que tener no?

La rebautizada MadriSX, ahora llamada Retromadrid para abarcar un concepto más amplio ya que hay cosas de spectrum, amstrad, atari y muchos otros, así cómo consolas antiguas y muchas otras cosas, es una auténtica pasada. Aunque ocupa sólo una sala pasear entre todos esos portentos de 8 bits, ver pantallas de tus juegos favoritos aunque sea sobre el fosforo verde y ver que todavía se desarrolla para estas plataformas te hace estar un par de horas con cara de niño. Hasta puedes estar un buen rato jugando al pacman cómo si fuera la última novedad y pensar: eso sí eran juegos.

Tuve en mis manos el One Chip MSX y me encantó, tanto que me dieron ganas de pillarme uno, pero sé que mi viejo Mitsubishi MSX 2 se habría sentido celoso y conseguí mantenerme fiel. También me encantó echar una partidilla con el mando de la Megadrive, el de seis botones, y recordar el funde que le he dado al mio. Lo que eché en falta este año fué el juego de los patos de la NES en el que año pasado tuvimos un buen pique.

En el post del año pasado dejé un listado de palabras que me producen esa sensación de volver a ser niño.

Hartito me tiene el spam, que da día llega en mayor cantidad de mi buzón de turegano.net. La verdad es que desde que implanté mi correo tragalotodo (Ver entrada anterior) el 99% del spam ya aparece en la carpeta de Spam. Pero ahora me dá rabia tener que borrar diariamente 150 correos de esa carpeta así que voy a implantar dos medidas:
- Eliminar directamente los mails con una puntuación superior a 8 en el .procmailrc:
:0
* ^X-Spam-Level: [*][*][*][*][*][*][*][*]
/dev/null
- Añadir un script que elimine los ficheros de la carpeta de spam que lleven más de 4 días. Así no tendré que borrarla a mano sino pasar de vez en cuando a ver si hay algún falso positivo.
ACTUALIZACION 09/03: Ufff, que gustazo, ahora mi carpeta de spam contiene tan sólo 3 o 4 mensajes a revisar en caso de falso positivo y no tengo ni que borrarlos, desaparecen solitos.
Ayer fue día de darle vueltas al tema de las ciudades wireless o inalámbricas. Primero asistimos al desayuno Gowex sobre ciudades inalámbricas, dónde presentamos el proyecto de Getafe Wifi y todas las iniciativas que se están realizando sobre la red. La presentación parece que despertó bastante interés y que resulta muy ilustrativa de las posibilidades que se nos abren en este tipo de redes metropolitanas. Luego asistimos al resto de presentaciones en las que Intel presentó su roadmap para incluir 802.11n y WiMax en las futuras versiones de Centrino, se presentó la red de San Sebastián una de las decanas en estos asuntos, se pusieron sobre la mesa los temas legales de la creación de este tipos de redes por entidades públicas y algunos servicios cómo los de videostreaming que dan valor a nuestras redes. Luego dimos una vuelta por SITI/as Lan, la feria de las tecnologías inalámbricas. Así que el de ayer fué un día completito, eso sí, sin cables.

De todo esto se me ha ocurrido escribir algunas reflexiones:
- Una cosa que debe quedar clara es que no debemos hablar sólo de ciudades Wifi sino de ciudades wireless, hay muchos sitio para otras tecnologías cómo WiMax o Bluetooth cada una en su medida y en su lugar.
- “Según Intel, Internet está echo para x86″. Al principio esta frase me hizo enfadar bastante y me pareció un absurdo desmedido y un deseo de que lo único que haya son sus procesadores. Pero tras meditarlo un poco… Mac ya usa x86, Solaris tb y los gadgets poco a poco se van acercando y quedan pocos con otras arquitecturas. De todas formas la frase sigue siendo un poco engreida.
- Me encantó el Asus EEE PC con Linux. Que cosa tan pequeñita, tan ligerita y tan bonita. Y para colmo con su Linux dentro y con un coste de risa. Hago un llamamiento a Asus desde aquí, si me regaláis una de esas prometo desarrollar alguna mejora en el operativo y alguna cosilla más, porque me gustó mucho.

- Los servicios que se dan y que nos posibilita tener una red inalambrica metropolitana deben ser el motor de esta y no al revés, sino será un rotundo fracaso. Y en esta es una de las partes en las que pensamos volcarnos en Andago: servicios para el ciudadano y servicios para la administración sobre redes inalambricas.
- Uno de los debates que se abrieron fue el del uso de pre-WiMax en banda libre (5.4 GHz). Para mí es un gran avance y que se debería impulsar más. Creo que los dos modelos deberían coexitir: WiMax en bada licenciada para operadores que quieran/puedan pagar la licencia y que tendrá algunas ventajas sobre el libre y el WiMax en banda libre para los desarrollos del resto. El problema vendrá si se abandona el desarrollo y el impulso del uso de la banda libre y por ejemplo los equipos de usuario: PCs, PDAs, etc… no lo incorporan, cómo parece que va a ser, quedará únicamente cómo una buena tecnología para backbone e interconexión de redes.
Bueno y creo que está bien para un día.