Infraestructura desarrollo gratis (I)

Una buena infraestructura ayuda a los equipos a sentirse a gusto y mejora la comunicación lo que hace mas fácil seguir una metodología de desarrollo ordenada y coherente, para ello existen actualmente muchas herramientas gratuitas. Estas son algunas alternativas:

Infraestructura gratis

Infraestructura gratis

  • Linux / freeBSD: Siempre un sistema operativo libre nos permite utilizar mejor los recursos físicos locales con los que contemos (y reutilizar hardware que no es de última generación).
  • Eclipse / Netbeans / Geany : Un entorno de desarrollo acorde con la tecnología que usemos para el proyecto ahorra tiempo en tareas comunes.
  • Google mail + docs + calendar / Zoho: Cuentas de correo con amplio espacio, cliente de mensajería instantánea e integración con documentos compartidos y organizados además de un calendario común mejoran la comunicación interna del equipo.
  • Wikidot / Google sites: Usar la documentación del proyecto como herramienta de conocimiento explícito y memoria del proyecto además de documentar desde el principio permite que la renovación y crecimiento del equipo humano sea más sencillo.
  • Bitbucket / Github / Xp-dev: El control de versiones de los productos / subproductos del proyecto junto con el manejo de incidencias permite que se mida el avance del proyecto.
  • AWS free: Un servidor común de administración propia con suficiente capacidad como para instalar un servidor de integración continua sin muchas complicaciones.
  • Maven / Ivy: La gestión de artefactos, dependencias, informes acerca del proyecto (pruebas unitarias, pruebas de integración, cobertura de las pruebas, etc) de forma común y centralizada permite hacer un seguimiento de la calidad de los productos / subproductos desde el principio.
  • Jenkins / Continuum: Un servidor de integración continua permite detectar fallos, centralizar pruebas, generar releases de forma automatizada.
  • Twitter: Comunicarse de forma rápida y sucinta con el equipo desde cualquier dispositivo móvil en cualquier momento.
  • Ifttt: If This Then That, permite integrar múltiples servicios web de forma ultra fácil.

En próximos post espero describir la forma de integrar varias de estas herramientas.

Anuncios

jasper chart themes

Insertar gráficos en Jasperreports es muy sencillo usando iReport, sin embargo, para hacer cambios de estilo en los gráficos se necesitan algunas lineas de código y librerías extra. Los mejores tutoriales al respecto los encuentran aqui.

El problema es que jasper no publica todos sus artefactos en los repositorios públicos, entonces encontrar la librería jasperreports-chart-themes-x.y.z.jar es una molestia, para encontrarla es necesario descargar jasperreports-server-cp-x.y.z-bin.zip (jasperServer) y de allí descomprimir el .war y en WEB-INF/lib se encuentra el archivo necesario.

Luego es cuestion de copiar el archivo en nuestro src/main/webapp/WEB-INF/lib y configurar el pom.xml para usarla (yo estoy usando la versión 4.0.0):

<dependency>
				    <groupId>net.sf.jasperreports</groupId>
				    <artifactId>jasperreports</artifactId>
				    <version>4.0.0</version>
				</dependency>
				
				<dependency>
					  <groupId>jasperreports</groupId>
					  <artifactId>jasperreports-chart-themes</artifactId>
					  <version>4.0.0</version>
					  <scope>system</scope>
					  <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jasperreports-chart-themes-4.0.0.jar</systemPath>
				</dependency>
				
				<dependency>
					<groupId>jfree</groupId>
					<artifactId>jcommon</artifactId>
					<version>1.0.15</version>
					<scope>compile</scope>
					<exclusions>
						<exclusion>
							<groupId>gnujaxp</groupId>
							<artifactId>gnujaxp</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>jfree</groupId>
					<artifactId>jfreechart</artifactId>
					<version>1.0.12</version>
					<scope>compile</scope>
					<exclusions>
						<exclusion>
							<groupId>gnujaxp</groupId>
							<artifactId>gnujaxp</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.codehaus.castor</groupId>
					<artifactId>castor</artifactId>
					<version>1.2</version>
					<scope>compile</scope>
				</dependency>
                                <dependency>
				  <groupId>org.springframework</groupId>
				  <artifactId>spring-core</artifactId>
				  <version>2.5.6</version>
				</dependency>
				<dependency>
				  <groupId>org.springframework</groupId>
				  <artifactId>spring-beans</artifactId>
				  <version>2.5.6</version>
				</dependency>

PD: gracias a @renebareno por la sugerencia del post.

Un diagrama vale más que 501 palabras

Una de las cosas que me parecen comunes y poco prácticas en el desarrollo de software es la forma en la que se considera a la documentación como un subproducto estático – quizás por las metodologías de desarrollo en cascada -, sin embargo con las wiki documentar mientras se hace y para hacer un control de cambios es muy sencillo.

Hace poco busqué alternativas para hacer diagramas – básicamente UML pero algunos wireframes -, sin embargo el problema de la sincronización diagrama -> wiki me llevo a extender la búsqueda para bajar los tiempos de socialización del contenido.

La ventaja de los editores stand alone es que permiten trabajar offline y para publicar los cambios solo hay que exportar el diagrama y subirlo a la wiki, pero esto nos deja en el aire el problema de la sincronización porque como el desarrollo es evolutivo siempre hay modificaciones.

El asunto es encontrar un editor online gratuito, smoot es un proyecto libre abandonado y las opciones con restricciones en el número de diagramas, entidades, etc no suenan halagadoras, sin embargo tras las actualizaciones google docs drawing se presenta como la mejor opción por una simple característica – además de no presentar restricciones para compartir y 10gb de espacio-:

Permite mantener la edición cerrada a un grupo de personas y aparte hacer una publicación del diagrama que se actualiza en linea y tiene como parámetros el ancho y largo de la imagen.

Esto reduce el problema de la sincronización diagrama -> wiki a insertar un enlace del diagrama publicado en una página wiki para que siempre se renderice la última versión. Sin embargo nada es completo y para la felicidad suprema supongo que hace falta:

  • Insertar nuevas paletas de formas en google docs draw (se soluciona parcialmente con plantillas y copias de diagramas genericos)
  • Control de versiones sobre los diagramas (mucho pedir?)

Lombok – esteroIDEs para Java

Programo en java desde 2001 aproximadamente, me encanta la cantidad de recursos disponibles y me gustaba que no conocía muchos casos, estamos en la versión 7 y aun no hay propiedades para los Plain Old Java Objects (POJO).

Afortunadamente lo importante no es el lenguaje sino la Máquina Virtual y existe una cantidad decente decente de lenguajes para casi todos los gustos (Groovy, Jython, JRuby, etc).

Pero mientras me familiarizo con Groovy++ y para hacer la transición de mis amigos más sencilla estamos usando el excelente proyecto Lombok.

A través de sencillas anotaciones podemos evitar escribir los métodos de acceso a los atributos de clases (Compatible con maven, eclipse, sts y netbeans), la declaración del log, los constructores y métodos de comparación y hashing de nuestras clases, cerrar los recursos que hemos abierto en un método y muchas otras pequeñas mejoras que van a hacer nuestro código mas legible y sencillo.

Solo por recordar algo que ya está en la web del proyecto: además de insertar la dependencia de maven es necesario instalarlo (ejecutar el jar) para que modifique la configuración de inicio del IDE.

En caso de no funcionar solo hay que agregar un par de configuraciones al .ini del IDE:

-Xbootclasspath/a:<i>ruta_al_jar</i>/lombok-0.10.0.jar
-javaagent:<i>ruta_al_jar</i>/lombok-0.10.0.jar

Get the things done

Desde hace algunos años intento bajar el índice de entropía de mis tareas, ideas y obligaciones para tratar de no procrastinar tanto (habrá un índice de procrastinación diferente a la ineficiencia), entonces siempre he querido una herramienta para tener mis tareas organizadas de forma sencilla, poder escribir notas categorizables y que se sincronicen con algún servicio Web en caso de que quiera consultarlas cuando no tengo una computadora cerca o quiera formatear mi máquina sin previo aviso o copia de seguridad.

En la #inmersión probé Keepnote que esta muy bien para tomar notas jerárquicas, pero no se integra con nadie ni con nada así que mi forma de sincronizarla fue usando subversión y un repositorio en unfunddle pero esto implica dos pasos (escribir y sincronizar).

Luego descubrí Zim (no el invasor) una aplicación que permite llevar un wiki personal de edición muy sencilla y con prestaciones muy útiles que incluyen una vista en árbol jerárquico de las páginas, checkboxes para señalar TODOs, gráficos a partir de textos Y sincronización con subversión de forma nativa, así que los pasos para mantener mi cuaderno de notas sincronizado se simplificaron pero no se redujeron.

Luego encontré Get the things gnome que permite generar tareas organizadas por etiquetas con colores y se sincroniza con remember the milk además de permitir anexarle a las tareas una nota con algo mas de formato (negrilla, italica, listas) por medio de Tomboy.

Pero ayer por un trino de @luchomolina pensé en que lo mejor seria pensar en una cadena de aplicaciones mas que en una super aplicación, como estoy iniciando un nuevo proyecto creí que seria razonable dedicar un poco de tiempo a buscar un nuevo esquema de generación de contenido (texto) tanto para el proyecto como para mis cuaderno de notas.

Y así encontré que Tomboy (Linux, Mac OS y Win2) permite:

  • Agrupar las notas en cuadernos
  • Generar una plantilla por defecto a cada cuaderno
  • Usar atajos de teclado para el formateo del texto y para buscar o generar nuevas notas
  • Exportar una nota como una tarea al gestor de tareas tasque que a su vez permite guardarlas localmente o enviarlas a Remember the milk
  • Usar enlaces entre notas
  • Exportar las notas como post de WordPress o Blogger
  • Exportar las notas con formato Wiki
  • Sincronizar de manera automática las notas con el servicios ubuntuone (sin consumir espacio de los 5gb gratuitos)
  • Generar una nota diaria automáticamente
  • Usar WebDav para almacenar las notas
  • Exportar las notas en formato HTML

Esto tiene varias ventajas para mí:

  • Trabajar desconectado en el blog y en la wiki de mi proyecto
  • Generar redundancia en el almacenamiento (copia local de notas, copia total en ubuntuone y copia de post en wordpress) pero no en la publicación
  • Centralizar, simplificar y reducir el número de pasos para la generación, publicación y socialización de mis notas o posts (Mediante una tarea de ittt)
  • Mantener una copia local de mi wiki de trabajo (me permite migrar contenido entre wikis más fácilmente, pero ese es otro asunto

Finalmente, una serie de tips para tener un ecosistema libre para gestión de notas personales:

Un diagrama vale más que 500 palabras

Un diagrama decente puede ayudar a explicar una idea de manera sencilla, existen recomendaciones respecto al uso de colores en los diagramas de diseños de sistemas de información y a los ingenieros -al menos en la Universidad Nacional de Colombia– nos hacen (hacían?, snif los 30’s) tomar una asignatura llamada “Expresión Gráfica” en la que aprendiamos algunas técnicas muy útiles.

En estos días estoy empezando a trabajar en un nuevo sistema de información y me gusta apoyarme en diagramas UML (charlar conmigo, incluso acerca de temas técnicos, puede ser algo confuso y bizantino) y nada mejor que una buena herramienta:

  • Dia: El viejo y conocido editor de diagramas libre con versiones para Linux (Single Document Interface – La razón por la que me decidí a buscar otras alternativas), Mac OS y Win2 (Multiple Document Interface – rulezz). Su formato de archivo es xml, tiene una cantidad considerable de stencils, es posible generar fácilmente nuevas formas y hojas (stencils) y permite exportar los diagramas fácilmente.
  • yEd: Una aplicación gratuita (NO libre) java (instaladores para Linux, Mac OS, Win2) con interesantes prestaciones – varios estilos de autolayout, importación de iconos desde iconfinder a las hojas de formas, exportación de diagramas-, MDI. También tiene una versión Web que es de pago según entiendo.
  • GoVisual: Aplicación gratuita con versiones para Linux y para Win2. No la he probado.
  • Smoot: Dentro de la multitud de editores de diagramas Web que existen (algunos con versiones libres que limitan el numero de objetos en el diagrama, limitan el numero de diagramas o el espacio total usado por los diagramas) Smoot es un proyecto LIBRE (Licencia LGPL) escrito en PHP y ajax que permite generar diagramas, aun no lo he probado pero parece abandonado.

Mi herramienta actual es yEd. Sin embargo probaré Smoot.

Doing business 2011

El informe Doing Business 2011 – Making a Difference for Entrepreneurs es un estudio anual de 183 economías nacionales que compara las regulaciones para hacer negocios en áreas diferentes:

  • Apertura de negocio
  • Manejo de permisos de construcción
  • Registro de propiedades
  • Obtención de crédito
  • Protección de los inversores
  • Pago de impuestos
  • Comercio transfronterizo
  • Cumplimiento de contratos
  • Cierre de una empresa

En el informe de 2010 Colombia estaba rankeado en el puesto 38, Perú en el 46 y Mexico en el 41, para el informe del 2011 Colombia está en el puesto 39, Perú en el 36 y México en el 35.

¿Que hicieron Colombia, Perú y México para moverse así en el último año? Doing business también da una primera aproximación a la respuesta con la Ficha Informativa Doing Business 2011 – Resumen de las reformas en América Latina y el Caribe donde presentan las reformas hechas en la regulación de cada país y las áreas en las que afectan esas reformas.

Colombia facilitó la concesión de permisos de construcción, al mejorar la verificación electrónica de los
certificados necesarios en las fases previas a la construcción.
Áreas de reforma de la regulación empresarial: Manejo de permisos de construcción

Perú facilitó la apertura de empresas, al simplificar los requisitos de concesión de licencias de actividad y
crear una oficina en línea de ventanilla única para la inscripción de empresas. Facilitó el comercio
internacional, al implantar un sistema electrónico de intercambio de datos por internet, así como las
inspecciones basadas en el riesgo y los pagos diferidos. Introdujo procedimientos de vía rápida en el
registro de la propiedad, con lo que se recortó a la mitad el tiempo necesario para registrar la propiedad.
La adopción de reformas administrativas agilizó el proceso de concesión de permisos de construcción.
Áreas de reforma de la regulación empresarial: Apertura de una empresa, Comercio transfronterizo,
Registro de propiedades, Manejo de permisos de construcción

México facilitó la apertura de empresas mediante el lanzamiento de una oficina de ventanilla única en
línea para los primeros trámites de la inscripción de las empresas. Mejoró la concesión de permisos de
construcción al combinar y agilizar los procedimientos relacionados con la zonificación y las conexiones
a los servicios de suministro. México aumentó los impuestos a las empresas a través del incremento del
impuesto a las ganancias y una tasa sobre los depósitos en efectivo. Con todo, ha seguido reduciendo la
2121 Pennsylvania Avenue, N.W. Washington D.C. 20433 Teléfono 202-473-3800 Fax 202-974-4394
carga administrativa de tributar, gracias a que ofrece más opciones de pago en línea y favorece la
utilización de programas informáticos de contabilidad.
Áreas de reforma de la regulación empresarial: Apertura de una empresa, Manejo de permisos de
construcción, Pago de impuestos (más difícil)

Pero no se detienen allí, de hecho permiten realizar una simulación usando los datos actualizados posteriormente a la fecha de publicación del reporte mediante una hoja de cálculo (2010, 2011 – Incluso hay un informe y simulador específico para Colombia 2010).

Ahora bien, dado que se avecinan las elecciones para mandatarios locales y regionales en Colombia, creo que sería razonable preguntar a los candidatos acerca de sus planes para mejorar la competitividad de sus ciudades-regiosnes, por ejemplo para Bogotá (Puesto 12 entre 21 ciudades de Colombia):

  • ¿Cómo reducir el número (9) y tiempo de los trámites (20 días) para generar empresa? – Supongo que también hay que preguntarle a la Cámara de Comercio de Bogotá
  • ¿Cómo mejorar la eficiencia en la recaudación de la cantidad inmensa de impuestos (20 pagos y 208 horas estimadas)?
  • ¿Cómo lograr que portales distritales tales como Contratación a la vista tengan una funcionalidad y un rendimiento decente?
  • ¿Se integran las cifras de contratación local en el Portal de Transparencia económica?
  • ¿Hay algún plan de fomento e integración de las industrias creativas – Media interactiva = software, diseño, videojuegos (Documento CONPES 3659 página 9) locales para aprovechar la iniciativa Vive Digital ?