Usar un registro DNS CNAME para hacerte la vida más fácil

Velneo vClientLa nube de Velneo esta teniendo éxito y ya son muchos los que utilizan habitualmente v7cloud*.velneo.com, para desarrollar, ejecutar e implantar.

Esta sugerencia puede ayudarte a conseguir una dirección de Velneo Cloud más personal.

Si quieres acceder a tu vServer de una forma más directa, al estilo:

vatp://app.empresa.com:12345

Solamente debes añadir un registro CNAME en la configuración de DNS de tu dominio «empresa.com»

El registro DNS sería algo como esto:

app CNAME v7cloud1.velneo.com

Debes poner el nombre de v7cloud*.velneo.com que corresponde con tu vrl.

Un registro CNAME indica que las solicitudes de resolución para un nombre sea resueltas con el valor del dominio indicado.

De esta forma, no te tendrás que preocupar si Velneo cambia de ip alguno de sus servidores, tu DNS siempre estará correcta.

Hay muchas páginas en internet que nos dan pistas de como crear un registro CNAME, pero lo más cómodo es que consultes la información  donde tengas tu gestión de DNS

En este enlace de Google hay información de como configurar un registro CNAME en varios proveedores

Autohotkey, como herramienta de automatización de procesos

Hace años que empezamos a usar Autohotkey como herramienta para automatizar algunos procesos en aplicaciones.

Consiste en un ejecutable que lee un script donde se definen las tareas a realizar, cosas del tipo :

  1. Abre este programa tal.
  2. Dale a la tecla Alt+A
  3. Escribe el texto «hola»
  4. Dale al botón Guardar
  5. Cierra la aplicación

Parece una aplicación sencilla para cosas triviales, pero realmente sorprende la fiabilidad y las posibilidades que ofrece para la automatización de procesos.

Actualmente la usamos para distintas tareas:

  • Pruebas de interfaz en la integración continua, para verificar las funcionalidades de interfaz de las aplicaciones
  • Recopilación de información de Mapas de Velneo 6.x
  • Tareas automáticas de integración

La herramienta tiene buena documentación y mucha información en internet y puedes hacer casi cualquier cosa que se te pase por la cabeza.

Junto a Jenkins se pueden hacer verdaderas viguerías en la integración continua, tanto para realizar automatizaciones como para realizar verificaciones.

Tiene un hermano ( autoit ), con el que comparten mucho código, no se cual de los dos es mejor, pero en nuestro caso autohotkey cubre nuestras necesidades.

La nube aporta mejoras en el desarrollo de software

Durante los últimos meses la nube entra por todos lados, cada rincón de la empresa de software es susceptible de viajar a la nube.

Hay muchos ámbitos donde puede aportarnos soluciones mejores y más económicas.

Pruebas

Una de las áreas donde el Cloud esta ayudando es el área de pruebas, ya que permite arrancar una máquina limpia de manera rápida, ejecutar las pruebas y eliminarla.
Todo el trabajo de instalación de sistemas operativos desaparece. El coste de una hora de una máquina incluyendo licencias de sistema operativo  suele ser inferior al euro. Hacer eso en local lleva mucho más tiempo y dinero.

Esclavos en la nube

Si usas integración continua con Jenkins, es muy cómodo tener los esclavos en la nube. Estas máquinas son las encargadas de realizar la compilaciones, verificaciones,  pruebas funcionales, etc. En nuestro caso usamos múltiples esclavos para los diferentes sistemas operativos y sus diferentes sabores.

El ahorro más importante viene en que podemos arrancar las máquinas esclavas a demanda, ahorrándonos el coste de tenerlas siempre encendidas. También es muy sencillo cambiar los recursos de las maquinas en función de las necesidades.

Más madera

Otro de los puntos fuertes son las pruebas de carga, estos proveedores te permiten contratar monstruos de la computación. Se pueden montar pruebas de carga con varios equipos de 64 núcleos con cientos de Gigas de RAM. Es posible probar el rendimiento en grandes infraestructuras por unos pocos euros.

Seguridad

En cuanto a la seguridad de las máquinas, es eficaz mantener una política dura en la configuración del firewall del proveedor de Cloud, con lo que no tendremos problema en la configuración o reconfiguración individual de cada máquina virtual.

Como alternativas tenemos experiencia en Amazon Ec2 y Arsys Cloud builder, pero existen decenas de proveedores que pueden ofrecer un buen API para la gestión de las máquinas.

Nos pasamos el 50% del tiempo escribiendo en el teclado

Cuando veo alguna persona escribiendo en el teclado con «dos» dedos en su puesto de trabajo solo se me ocurre pensar la cantidad de tiempo que estará perdiendo.

En nuestra sociedad los teclados han pasado a ser algo crítico, escribir con soltura en el teclado no se está convirtiendo en una ventaja, sino en una necesidad.

Ventajas:

  • Aprender a escribir en el teclado ahorra muchas horas al día, si pueden utilizar los diez dígitos. Esto les permite escribir mientras piensan y vaciar sus ideas directamente al ordenador, si  es posible escribir rápido, pueden pensar más rápido.
  • Aprender a utilizar las aplicaciones en menos del 40% del tiempo requerido, lo cual les proporciona la oportunidad de aprovechar al máximo los recursos.
  • Mejorar las perspectivas laborales, incluso si el trabajo no es formal, la paga será mejor si se tiene esta habilidad de por vida. Los gerentes de negocios de hoy reconocen que el escribir con sólo dos dedos, no es un método aceptable en esta era de la información – deben de ser usuarios expertos de la computadora y saber escribir utilizando todos los dedos en forma efectiva.
  • Utilizar todas las herramientas de un procesador de palabras.
  • Un estudio reciente realizado a familias con PC mostró que el 77% de los padres dijeron que era de vital importancia para sus hijos.
  • Puedes escribir largos documentos sin tener que romperte el cuello mirando si está bien lo que escribiste.

Si sigues teniendo dudas de la necesidad de escribir con los 10 dedos, puedes leer este post

Comprueba aquí tu velocidad http://www.typingstudy.com/es/speedtest

Control de cambios para Velneo 6.x con Perforce

Perforce como herramienta de control de cambiosCuando se trabaja en equipo es muy cómodo tener un lugar centralizado donde almacenar y gestionar las distintas modificaciones en tus desarrollos.

Los SCM o herramientas de control de cambios permiten centralizar y gestionar los cambios de un proyecto software.

Existen muchas herramientas para gestionar el control de cambios ( Git, Subversión, etc ). Nosotros llevamos usando Perforce durante años.

Ventajas que más nos gustan de Perforce:

  • Solución muy visual (P4V) que permite iniciarse rápidamente en la gestión de cambios
  • Multiplataforma
  • Servidor muy robusto
  • Fácilmente integrable con Jenkins
  • Configuración Cliente/Servidor por TCP
  • Muy útil para gestión de cambios en mapas de velneo 6.x, documentos, imágenes o cualquier tipo de archivo

Actualmente para pequeños equipos de desarrollo existe una versión gratuita para 20 usuarios / 20 workspaces, lo que permite disfrutar de la herramienta con todas sus funcionalidades.

Es importante crear una correcta estructura de tu repositorio (Branches (ramas) y Trunk (tronco) ) que te permitan controlar todas las versiones y parches para ayudar a tener un buen ciclo de desarrollo

Video de explicación de Perforce

¿Donde documentar mi proyecto de software?

Formas de documentarA lo largo de los años hemos intentado tener una documentación en cada proyecto que pueda servir a cualquier miembro del equipo en el momento que lo necesite.

Respecto a la cantidad de documentación, cada proyecto es un mundo pero en general siempre tenemos bastante información que tiene una relación directa con el proyecto.

Hemos probado técnicas, ubicaciones, wikis, documentos y otros sistemas, cada uno con distinto éxito.

A lo largo de los diferentes proyectos hemos comprobado  que cuanto más cerca estaba la documentación del código más ventajas teníamos y la información era más valiosa.

Entendemos por cerca, que la documentación este dentro de los mismos ficheros de código, en los mismos directorios o en el mismo repositorio de código.

Estas son algunas de las ventajas que existe cuando la documentación del proyecto esta cerca de los recursos :

-Más fácil tenerla actualizada

Al estar cerca del código es más sencillo actualizarla cuando realizamos un cambio.

-Más fácil tenerla localizada

No hay que preguntar a nadie donde esta el esquema de conexión el gŕafico de recursos o como acceder al wiki para ver tal objeto. Todo el equipo sabe donde está y donde debe estar.

-Organizada en base al proyecto

Los proyectos suelen tener una organización en base a módulos, componentes, áreas, etc. La documentación puede estar organizada de la misma manera, con lo que si te sabes mover por el código sabes moverte por la documentación

-La documentación y el código se apoyan, es bueno verlo con relación

Cuando tienes dudas en el código del proyecto necesitas ver la documentación que pueda estar relacionada. Cuando quieres ver como se aplica algo de la documentación, es bueno tener el código cerca.

-Si viaja el código que viaje la documentación

En ocasiones necesitas llevarte el código a una máquina sin conexión o cambiar de máquina. Si el código va junto a la documentación no tendrás que hacer dos pasos.

-Si tengo acceso al código tengo acceso a la documentación.

Si tienes unos privilegios de acceso al código, normalmente van parejos para el acceso a la documentación

Uno de los ejemplos prácticos de llevar la documentación cerca del código es la documentación de Qt, donde los ex-nokia y ex-trolltech documentaban en el código, su inmensa librería esta perfectamente documentada y actualizada.

Si tu documentación esta dentro del código existen herramientas que te ayudan a extraer esa documentación y compactarla de una forma muy accesible. Doxygen o JavaDoc son claros ejemplos.

En otros casos los IDEs de las plataformas te permiten crear directamente la documentación, en el caso de Velneo puedes crear esquemas directamente desde el vDevelop.

Jenkins como herramienta de integración continua y mucho más

Desde hace bastante tiempo venimos usando Jenkins como herramienta de integración continua.

Aunque esta orientada a desarrolladores de Java, gracias a su inmensa cantidad de plugins, puede servirte para cualquier lenguaje de programación o plataforma ( Nosotros lo usamos con C++ y Velneo )

La idea general de la integración continua es que tu producto este permanentemente pasando todos los pasos necesarios para su liberación.

Tu herramienta de integración continua es la encargada de dirigir todos los pasos intermedios desde que un desarrollador toca algo de código hasta que el instalable está disponible para descarga. Entre las tareas que debe hacer :

  • Conexión con el control de cambios (Perforce, GIT, etc )
  • Realizar los test de que todo el proyecto es coherente
  • Realizar los test necesarios de que tu proyecto no tiene errores
  • Realizar la compilación/compactación de todos los componentes
  • Probar que las diferentes partes de tu proyecto son compatibles
  • Tests para comprobar la calidad de tu proyecto (Tamaño imágenes, calidad de código, código duplicado, errores ortográficos, etc.)
  • Creación de instalables
  • Pruebas del instalable
  • Pruebas multiplataforma
  • Subida de los instalable a su repositorio final

Jenkins te permite crear trabajos (jobs) donde se detallan todas estas operaciones mediante scritps en el lenguaje que prefieras (Python, Batch, Bash, etc.)

Otras ventajas de Jenkins:

  • Multiplataforma
  • Configuración Maestro/Esclavo (Para integraciones distribuidas)
  • Cientos de plugins
  • Fácil instalación y mantenimiento
  • Multitud de idiomas ( Español incluido )

Si usas Jenkins en tu proyecto tendrás resueltos 2 de los 12 pasos hacia un código mejor de Joel Spolsky

Una imagen ocupa más de 1.000 palabras

El refrán decía …

«Una imagen vale más que mil palabras»

Fontana di trevi
Una imagen vale más que 1000 palabras.
Fontana de Trevi. Roma

Pero nadie nos dijo que si añadimos una imagen a nuestro proyecto de software o página web, nuestra creación ocupará mucho más tamaño.

Aunque parezca que lo importante es el código, procesos, tablas, etc, las imágenes son parte fundamental del interfaz de usuario y un buen uso puede conseguir que nuestras aplicaciones tengan un estilo sencillo y agradable que ayude a los usuarios a ser un poco más felices.

Del mismo modo debemos tener mucho cuidado con el uso de las imágenes, suelen ser parte importante de los recursos que componen nuestra aplicación. En muchas ocasiones superan el 25% del tamaño en bytes de nuestro proyecto

Tres consejos rápidos:

  • Usa herramientas de compresión y limpieza de los ficheros, te ayudarán a reducir enormemente el tamaño de la imagen sin tener perdida de calidad.
  • Uso del formato y número de colores necesarios. Si es imagen con pocos colores PNG, si son imágenes con miles de colores JPG
  • Organización en los nombres. Muchas veces no se puede encontrar el nombre apropiado a un recurso y se invierte tiempo en volver a crear otro.

Una herramienta que es muy útil es PngCrush, que permite por linea de comandos optimizar y comprimir cualquier imagen PNG

pngcrush.exe -rem alla -reduce fichero.png

5 motivos para usar DucksBoard

Desde hace unos meses usamos la herramienta Ducksboard para representar los valores de los indicadores más importantes de la empresa. Después de este tiempo, puedo detallaros los 5 principales motivos por los que volvería a usarla.

1. Interfaz

Una de las primeras cosas que impresiona al empezar a usar Ducksboard es el cuidado detalle que tiene en todo su interfaz, desde la parte de administración a la parte de presentación. Todo tiene un estilo sencillo y agradable. Aunque intentes poner algún elemento feo no lo conseguirás.

2. +101 widgets

Lo primero que harás con ducksboard será trastear con los widgets que tiene, seguro que usas algún servicio de los disponibles ( Analytics, Zendesk, Twitter, Facebook, etc ). Una vez los «tires» en el panel podrás jugar con las posibilidad de cada widget.

3. Madera de buena calidad

Los fondos de nuestros Dashboards, son muy chulos, en especial los de madera, es algo muy tonto, pero es un buen motivo para elegir uno u otro producto.

4. API

Panel de ducksboard mostrando captura de web con info incrustadaEl API será lo que empezarás a usar cuando acabes de jugar con todos los widgets predefinidos que tienen funcionado. Es lo realmente potente y donde podrás empezar a sacarle partido para mostrar toda la información que necesitas.
Todo el API funciona con peticiones REST pasandole la información que quieres actualizar. Yo principalmente actualizo la información desde Python y Velneo, pero se puede actualizar de cientos de formas. Para probar sin duda Curl
Mi última incorporación a los paneles de ducksboard fue la imagen de una web con la información incrustada de rendimiento, errores y tamaño. De esta manera tenemos controladas el estado de todas nuestras webs.
El limite es la imaginación.

5. No es perfecto

Otra de las sensaciones que tendrás al usar Ducksboard es que parece que se te queda corto, como que tiene pocas cosas. En verdad tiene todo lo que usarás, nada es superfluo. Es un producto centrado en el 20% de las funcionalidades que usarán el 80% de los clientes.
De todas formas durante los últimos meses he visto como la gente de patolandia, se lo curra y va añadiendo cosas nuevas para facilitar la vida

Armadillo Run

Para una de mis primeras entradas me gustaria comentar uno de mi descubrimiento del último año.

http://www.armadillorun.com/

Armadillo Run es un Juego, un buen juego de los que me ha hecho pasar muy buen rato en esos momentos que quieres desconectar del mundo. Es un juego de estrategia/puzzle que consiste en llevar una bola ( el armadillo ) a un circulo azul. Como te puedes imaginar algo tan tonto tiene que ser brutal, ya que la mayoría de juegos más populares ( futbol, baloncesto, golf, etc ) tienen estos dos componentes ( bola y circulo )

Armadillo Run

El juego es un estilo a The Incredible Machine y con una buena dosis de «gravedad» que te invita a resolver pantallas cada vez más complicadas. Los efectos de elasticidad, rozamientos, gravedad y todo tipo de fuerzas dan una buena sensación de realidad.

Todas las fases te dan libertad total para resolverlos como tu cabeza sea capaz. Te puedo asegurar que hay fases muy difíciles.

El juego cuesta 19$, contando el número de tiempo que he invertido creo que cada Armadillo me ha salido por menos de lo que cuesta un lacasito.

La sorpresa más grande que me ha dado este juego, es haberlo visto en un centro de arte!

Playware es una exposición en la que estuve hace unos meses en la http://www.laboralcentrodearte.org/ en Gijón y encontrar el Armadillo Run fue todo un alegrón porque realmente es un programa bien elaborado

Enhorabuena a Peter Stock por este buen puñado de lineas de código bien puestas.

Conclusión: Si te gustan los juegos de acción, matar, deportes y cosas similares, vete a tomar el fresco 😉