Code Segment

Polar Rs300x - GUI

Jan 8 2010 by csegura @ 14:34

Estas navidades el Olentzero, Santa Claus, Papa Noel ó uno mismo, vaya ud. a saber … me dejo un pulsometro Polar RS300x, uno de esos aparatitos que te miden las pulsaciones (para evitar que a los que nos vamos haciendo mayores nos dé un chunguito)



La verdad es que no está nada mal, viene con el transmisor WearLink que es la cinta que te atas en el pecho que se encarga de enviar la frecuencia cardiaca al reloj, con un sensor S1 que es un podómetro que te pones en la zapatilla y una vez calibrado, mide la distancia y la velocidad, y finalmente con el FlowLink que es un dispositivo USB a través del cual puedes enviar la información a una web para (www.polarpersonaltrainer.com) para mantener un histórico de las sesiones de entrenamiento.

El domingo día 3 calibre el sensor S1 recorriendo una distancia de 1km y después probé por los alrededores de mi casa a correr una distancia conocida y me quede impresionado, tan solo medio metro de diferencia. Una maravilla.

El lunes día 4 realice una sesión de entrenamiento y después subí los datos la web, usando el FlowLink y el software de sincronización que viene con el aparato.

Bueno, no es que este mal del todo, pero no se puede decir que la web sea una pasada. La cosa es que me pico el gusanito ese “f-geek” (freak-geek) que llevo dentro ..

De modo que me puse a buscar todo tipo de información acerca de cómo sacar los datos del dichoso relojito … y no encontré absolutamente nada (y mira que ha sido fácil)

Revisando el software de sincronización di con unas .dlls curiosas .. Polar.Transport.dll y Polar.Monitor.dll … que curiosamente están en .Net … también hay una biblioteca de más bajo nivel llamada libpolar.dll a la que las otras dos hacen refencia (Interop) ..

Bueno tras una revisión con el reflector encontré muchas, muchas cosas interesantes .. lo mejor es que me podía conectar al relojito y obtener los datos de las sesiones, de modo que en un primer paso realice un sencillo programita para exportar los datos a XML

Que bonito … en poco más de una hora tenía los datos …

Básicamente basta con crear un proyecto en VS y referenciar Polar.Monitor.dll (como internamente usa libpolar.dll) debéis aseguraros que libpolar.dll está también localizable.

Pero para no perder detalle aquí os dejo un video de cómo hacerlo…



La cosa es que me he liado un poco (¿Cómo no?) y me he metido a hacer un GUI que por el momento tiene este aspecto.

Permite ver un resumen de las sesiones



Permite analizar cada sesión (yo le he activado el modo Auto Lap, de modo que el pulsometro toma datos a cada KM) me muestra el tiempo empleado, la velocidad, la FC Max, y la FC Media. Además emparejo cada dato de FC con la Zona de trabajo.

En el gráfico, se puede ver la FC , la FC Max (puntitos rojos) y ambas dentro de sus zonas correspondientes. En el gráfico de velocidad, se puede ver la velocidad en Km/h y en min/km además la vuelta más rápida queda en verde y la más lenta en rojo.



Por último el gráfico de las Zonas, con el tiempo empleado en cada una de ellas en la sesión de entrenamiento.



Os dejo otro bonito video del programita … (que me he emocionaooo ...)


Ya sabes si eres un f-geek de los ordenadores que además te gusta el running el Rs300x es una magnifica opción

Comments (6)

¿Por qué son importantes los patrones? - Libros de Referencia

May 22 2009 by csegura @ 13:49

A estas alturas… todavía me encuentro con aplicaciones donde es imposible comprender el diseño e interpretar las intenciones del desarrollador.

Básicamente, pienso que hablan por sí solos, es decir, revelan la intención del diseño, son un lenguaje común; cuando en un equipo de desarrollo se habla en términos de patrones de código, se está hablando de las características, cualidades y restricciones que el patrón representa. Hablamos simplificando los problemas y partes del diseño de nuestras aplicaciones.

Prácticamente no hay API ó Framework (la de SharePoint es una excepción) donde no se haga uso de patrones, esto hace que el uso y comprensión así como las extensiones que realicemos sea mucho más sencillo.

“Cada patrón describe un problema que ocurre una y otra vez en nuestro ambiente y describe el corazón de la solución del problema, de esta manera podemos usar esta solución una y otra vez sin hacerlo de la misma manera dos veces” Christopher Alexander [AIS+77, page x]

Los patrones nos dicen como estructurar clases y objetos para resolver problemas, y es nuestro trabajo adaptarlos a nuestros diseños.

Y esto es lo más grande, porque esa adaptación a un problema particular no oculta las intenciones del programador, viendo que patrón se ha adaptado nos permite vislumbrar en que ha pensado a la hora de tomar decisiones.

En fin, para todos aquellos que comienzan, y para algunos que todavía… os dejo una lista de libros que son (no todos) de obligada lectura.

De arriba abajo:



* Patrones de diseño, edición en castellano de Design Patterns - Lectura obligatoria
* Design Patters (GOF Book) - Lectura obligatoria
* Analysis Patterns - Es un libro más profundo, sobre todo orientado al análisis y diseño de aplicaciones, con ejemplos (sin código) del diseño de aplicaciones de negocio y de aplicación de patrones en el diseño - Lectura Recomendada
* AAgile Principles, Patterns and Practices in C# - Para mi uno de los mejores libros que he leído, no solo hace hincapié en los principios de diseño más básicos, sino que también añade una completa referencia de los patrones más usados. - Lectura Muy Recomendada.
* Patterns of Enterprise Application Architecture - Fantástico, aquí se incluyen muchos de los patrones más usados que no se encuentran en el GOF Book, desde Active Record, Lazy Load, Unit Of Work ... aproximadamente 50 patrones menos conocidos, pero ampliamente usados. - Lectura Obligatoria.
* Refactoring to Patterns,, un pedazo de libro, que es como el eslabón que une refactorizaciones y patrones, perfectamente explicado, realmente impresionante como une el libro de Design Patterns, con el de Refactoring  (Fowler) - Lectura Muy Recomendada.
* Implementation Patterns - Un libro que realmente habla más del estilo de código que de patrones, un poco flojo, recomiendo leer Clean Code de Robert C. Martin. - Lectura Medio Recomendada.
* C# 3.0 Design Patterns - Un libro con ejemplos de patrones (GOF) en C# 3.0 sin más. - Lectura Medio Recomendada.
* C# Design Patterns, los GOF con ejemplos en C#, Libro recomendado para los que comienzan con C#.
* xUnit Test Patterns - Si haces pruebas ó TDD es imprescindible. Lectura Muy Recomendada.
* Design Patterns in Ruby - Si eres un salsas, como yo, no esta de más ver como se implementan los GOF en Ruby, muy entretenido. Lectura Pasatiempo.

Por último tengo un librito que aunque parece que esta en chino, no es así, esta en ingles, pero es una edición Design Patterns para China, a mi me gusta para llevarlo en la maleta cuando doy charlas o cursos.


Comments (0)

Veneno en los dedos

Apr 16 2009 by csegura @ 22:33

En la vida de todo programador hay un “día especial”, algunos tendréis que hacer memoria, otros mucha memoria y algunos no lo recordareis pero es el día en que uno toma conciencia de sí mismo y se da cuenta de que es un “PROGRAMADOR”. (¡Qué fea palabra!… léase “CODER” please)

No estoy hablando de ser “programador”, si no de ser “PROGRAMADOR”. Me refiero al momento en que te das cuenta de que el código es importante, que eres una máquina de tirar líneas que buscas mejorar día a día y de que el veneno de los 1s y los 0s está dentro de ti, del momento en que te das cuenta que todo es programable, de que a la silla de ruedas de tu abuelo se le puede poner un motor y programarlo, de que la gameboy de tu primo lleva un Z80 y seguro que hay alguna forma de meterle mano y…..en fin, te das cuenta de que el teclado es una extensión de tus dedos.

Os contaré como fue mi momento.

Yo cacharreaba con ordenadores como muchos de vosotros, que si un ZX81, un Commodore 64, etc…,etc… Allá por el año 1989 (yo tenía 19 años), un amigo de mi cuadrilla (Iñaki) me propuso hacer un programa para la empresa en que trabajaba su padre, era una empresa de excavaciones pequeña, CAMES, que hacía cosas generalmente para empresas más grandes.

El programa demandado consistía en llevar un control de los partes de los empleados y las máquinas; había que controlar el número de horas que se empleaba en cada obra. Tuvimos algunas reuniones en la oficina de la empresa y me explicaron con todo detalle cómo se llevaban los partes manualmente y los controles que se debían hacer semanalmente y mensualmente, así como los trabajos que había que re-facturar a terceros.
Durante las reuniones tome un montón de notas tratando de no perder detalle de lo que querían que el programa hiciera exactamente.
Por aquel entonces, había aprendido algunos leguajes de programación, como Basic, Pascal, C, algo de Lisp y Prolog, y dBase3, para el asunto me decante por dBase3, no por nada especial, pero las librerías btreeve que usaba entonces en Basic y en C, daban bastante guerra. También pensé en la comodidad de que dBase contaba con campos de entrada que admitían validaciones sin mucho esfuerzo, así como poder examinar las tablas y ver cualquier detalle de los datos. Otro de los factores importantes en la decisión fueron los listados, ya que hacer listados con dBase era coser y cantar. En fin dBase era perfecto para hacerlo todo sin demasiado esfuerzo.

De modo que me encerré en casa e hice el programa; unos días más tarde recibí en mi casa (la de mis padres en realidad y en mi habitación más concretamente) a las personas a las que debía enseñar el programa. Estuvimos toda la tarde revisando las especificaciones y surgieron varias cosas. Al terminar, yo no estaba del todo satisfecho con el programa a pesar de que cumplía con las especificaciones salvo en algún pequeño detalle que surgió durante la demo.

Un amigo me hablo de Clipper el compilador de dBase, me dejo un manual y me dijo que sería mucho más profesional hacerlo con Clipper (87). Así que rehíce el programa completamente desde cero.

Finalmente entregué el programa y cobre 60.000 pesetas (un dineral en el año 89) y muy agradecido asesoré a la empresa también acerca del ordenador y la impresora que debían comprar.

Los primeros viernes de cada semana, momento en que se pagaban las horas extras a los empleados, yo tenía que bajar a la empresa exclusivamente por si surgía algún problema o alguno de los cálculos no salían correctamente. El argumento de “Benito”, el encargado,  era que los empleados (tíos muy curtidos de la obra y con carácter más bien duro) sabían mejor que nadie cuanto debían cobrar de modo que, por si acaso, sería mejor que yo estuviese allí en caso de que no coincidieran las cifras.



Lo estuvimos haciendo aproximadamente durante un mes hasta que lo dieron por válido, ya que, los cálculos siempre salían correctamente si se habían introducido bien los datos.

Ese fue mi primer programa de ordenador, y mis primeros ingresos como “programador”.

Aún así, todavía no era un programador.

Tiempo después, mientras estudiaba FP por las mañanas, entre a trabajar por las tardes en una empresa de programación. Ellos programaban en Clipper pero no muy bien, de modo que, les di algunas lecciones, suena chulesco lo sé, pero lo mejor de todo es que mi profesor de COBOL de FP, trabajaba allí por las tardes, de modo que, él por la mañana me daba COBOL y yo por la tarde le daba Clipper a él. Cosas de la vida.

Bueno, estando allí hice multitud de programas, facturaciones, contabilidad,  etc…etc …




Aún así, no era un programador de los que hablaba al principio, pero el momento llegó y lo recuerdo perfectamente.

No estaba satisfecho con algunas de las cosas repetitivas que hacíamos programando, así que, cree un meta lenguaje que nos ahorraba horas y horas de programación de esa repetitiva, lo hice en casa por las noches e incluso hice un manual para que todo el mundo en la empresa pudiese usarlo. Ese fue el momento que arruinó mi vida :-).

Ese momento en que no te basta con lo que los lenguajes te dan, cuando empiezas a crear bibliotecas de código, a optimizar en ensamblador rutinas lentas, cuando creas un sistema que es capaz de ahorrar multitud de horas de programación, cuando los días y las noches se funden en la pantalla tirando líneas de código, leyendo programas de otros para aprender más y más, cuando no puedes pasar sin programar algo, lo que sea aunque sea solo por auténtico ocio, por ver si eres capaz de hacerlo o por la razón que sea, que seguro que es lo suficientemente buena como excusa para teclear.

¿Cómo te entro a ti el veneno?

Comments (6)

Retorno de la inversión de la calidad dek software en las PYMES

Sep 15 2008 by csegura @ 14:24

El miércoles día 17 daré una ponencia sobre “Testing, reducción de costes de no calidad” en los cursos de veranos organizados por la Universidad Pública de de Navarra, el curso se llama “Retorno de la inversión de la calidad del software en las pymes”.

Una de las preocupaciones que tienen las organizaciones que desarrollan software es mejorar sus resultados financieros apoyándose en la mejora de los procesos de desarrollo siguiendo modelos de buenas prácticas como por ejemplo CMMI. Estas empresas se involucran en iniciativas de mejora estimando que van a conseguir una mejora suficiente, pero sin conocer a priori el retorno de inversión.

En este curso se presenta la metodología ROI para evaluar las iniciativas de mejora en las que las empresas se involucran para mejorar sus procesos de desarrollo.

A su vez, se cuenta con la presentación de experiencias de empresas involucradas actualmente en iniciativas de mejora y empresas acreditadas en el modelo CMMI. Finalmente, se presenta ejemplos prácticos para conseguir mejorar el retorno de inversión en las organizaciones que desarrollan o que contratan el desarrollo, por actividades de testing.

El programa del curso podéis descargarlo desde aquí

Comments (0)

Mal dia - backing up is sexy!

Dec 10 2007 by csegura @ 15:58
Buff, un mes sin escribir nada. La verdad es que le mes pasado ha sido terriblemente duro, en cuanto a trabajo se refiere, además de las dos semanas que me he pasado por el sur de España Sevilla, Córdoba, Málaga y  por Madrid, después a mi regreso me he encontrado con algún que otro desastre y un montón de trabajo acumulado.

Mal día….

El caso es que el viernes por la noche mientras realizaba copias de seguridad de mi portátil, (je, hace un par de días volví a ver el episodio de “Sexo en New York” -Sex and the city- My Motherboard My shelf)



“Always backup and keep it remote – no matter how lucky you feel! And yes – backing up is sexy!”

Me he desesperado con Windows Vista, y la velocidad de copiado de archivos en red. (Y eso que tengo el SP1 RC)

Tras pasar un buen rato el sábado por la mañana buscando por internet, me he encontrado con algunas cosas interesantes como

http://www.technoblogo.com/2007/02/12/Windows+Vista+Tip+3++Slow+Network+Issues.aspx
http://support.microsoft.com/default.aspx/kb/931770/en-us

y otras poco mil entradas que he probado sin mucho éxito...

Después he tratado de activar el 802.11 n que tiene el Linksys RT300N que uso en casa, ya que no me había dado cuenta que el portátil que uso ahora (Compaq 8510p) lleva una tarjeta de red 802.11 n la Intel 4965AGN , esto ha sido el colmo.

Tras perder tres horas no ha habido manera de que detecte el protocolo N (de las Narices) he actualizado firmwares, drivers he cambiado prácticamente todo lo cambiable y probado todo lo probado sin fortuna alguna… incluido el cambio de seguridad WPA2-AES que parece ser es necesario para que se detecte el N, (tras el cual dos de los equipos de casa han dejado de funcionar tienen todavía el XP, lo que me ha llevado a instalar el KB893357, que activa la compatibilidad WPA2, já, pues en mis equipos las tarjetas deben ser muy viejas por qué no lo soportan. )

En ese momento he recordado ese extracto que suele leer Chema Alonso, sobre la configuración de una tarjeta Wifi en Linux, y me he empezado a partir de risa, de pura desesperación .. Así que he optado por abrir unas cervezas .. y hacer de esto una experiencia cuando menos amena …

Finalmente he optado por soltar el disco (es un IOMEGA home network con Ethernet, que tengo conectado al router) y conectarlo por USB a mi portátil, que poco glamur …

De modo que he empezado a copiar los archivos, pero cuando han llegado la Maquinas virtuales …. me he topado con la limitación de copiar archivos de más de 4Gb (fat32) … a ver que alguien me lo explique, hasta ahora copiando archivos por red SMB no había tenido problemas para copiar archivos de más de 4Gb  - No lo entiendo –

De modo que ni corto ni perezoso, decido hacer un convert a NTFS, por si acaso miro en la web de IOMEGA, no vaya a ser que no sea adecuado…

Las recomendaciones típicas de que si pasas a NTFS no podrás volver a FAT32 etc … que no podré usarlo con Linux, Windows 98 o Mac  etc…
De modo que adelante .. (Le llevo casi una hora .. ya que tenía el 50% ocupado) y después lo deje copiando archivos mientras veía una peli.

Más tarde, lo desconecte del USB, lo volví a conectar a la LAN y descanse feliz a pensando de que mis datos estaban a salvo …

“– backing up is sexy!” yeahhh

Bueno, resulta que más tarde he tratado de conectarme por SMB para buscar unos documentos que tenia archivados y HORROR … mi disco ha desaparecido … intento entrar en la parte de administración y ohhh sorpresa … no entra…
 
Tal vez se les haya pasado algún tipo de recomendación en las instrucciones a los señores de IOMEGA.

Bueno, por el momento no he tenido tiempo para ver qué diablos ha pasado exactamente de modo que ya os contaré como termina la historia, por el momento sospecho que el software del firmware no reconoce NTFS. En cualquier caso, podrian publicar el firmware como hacen los señores de Linksys .... 

Ah no estoy excesivamente preocupado ya que de las cosas importantes guardo siempre una copia ó dos en CD ó DVD.

Pero si me he sentido un poco identificado con Carrie ...




Desde luego un mal día … but remember “– backing up is sexy!”

Comments (4)