30 diciembre 2012

"Visual Management" Misional



Hace diez años atrás, entre los años 2001 y 2003, me encontraba en la ciudad de Buenos Aires, Argentina, como misionero de La Iglesia de Jesucristo de los Santos de los Últimos Días, predicando nuestras creencias a la gente de dicha ciudad, muy aparte de las grandiosas experiencias que tuve durante los dos años que duró mi actividad misional, hubieron algunas cosas que durante ese tiempo realicé y con el tiempo las volví a encontrar dentro del mundo Agile.

La que deseo comentar en esta ocasión es nuestro "Tablero de seguimiento" (no tenía un nombre en particular, asi que lo denominaré así). Es similar a nuestro taskboard o panel de tarea que usamos en los proyectos, solo que en lugar de "tareas" hablamos de "personas". Un poco de visual management. A continuación, les haré mención de la información que colocábamos en dicho tablero.


Nombre del Área: de la misma forma que en un panel de tareas en el que colocas el nombre del proyecto en curso, en nuestro caso colocábamos el nombre del área que estaba bajo nuestra responsabilidad.

Lista de reglas/normas del equipo: en esta lista se encontraban las instrucciones sobre el manejo del tablero y demás información como la hora en la que hacíamos las reuniones diarias de planeamiento, alguien mencionó daily meeting? Sí, teníamos reuniones diarias todas las noches a las 9:45pm (al volver al deparamento).

Para el flujo de la búsqueda de nuevos conversos, contábamos con varios cuadrantes o secciones en nuestro tablero y que listaré a continuación:


1. Encontrar: Durante el tiempo en el área podíamos encontrar personas de dos maneras que eran claramente diferenciadas en el tablero. Una de ellas era la denominada "Iniciativa Propia" o como solíamos decirle meramente "IP" (nada que ver con internet protocol). El "IP" podía incluir cualquier esfuerzo del equipo para contactar personas interesadas en escuchar acerca de nuestro mensaje, esto podía ser mediante "toque de puertas", conversaciones en la calle, entrega de folletos, actividades de servicio, etc. La otra forma era a través de los mismos miembros de la iglesia quienes podían presentarnos a un amigo o conocido de ellos.

Los nombres de las personas encontradas por IP se colocaban en un post-it y se ubicaban en la parte superior de esta zona, mientras que aquellas que provenían de referencia de miembros de la iglesia se ubicaban en la parte inferior.

2. Enseñar: El siguiente paso luego de encontrar a la gente es tratar de enseñarles el mensaje que teníamos, podían suceder dos cosas: una es que no lográramos contactar con la persona, la otra es que lográramos contactar a la persona y le enseñáramos alguno de los mensajes que teníamos preparados. Cuando pasaba esto pasábamos el post-it al cuadrante de "Enseñar" y poníamos una marca por cada lección que le enseñábamos.


3. Bautizar: Por fin! Encontramos a una persona buenísima, aceptó recibirnos, le enseñamos las lecciones y ahora quiere bautizarse! Es lo máximo para un misionero! Bueno, cuando esto sucede pasamos el post-it de la persona al cuadrante "Bautizar" y anotamos la fecha de bautismo en él, habitualmente con un color que se diferencie, tal como lo muestro a continuación:


4. Conversos nuevos: Y llegamos a la meta! La persona se bautizó, cuando eso pasa, movemos el post-it a este cuadrante. Si me preguntan, ¿qué pasa con las personas que llegan hasta acá?, pues les comentaré que pasan a ser visitados por los miembros y el seguimiento a su progreso pasa a ser responsabilidad de la unidad local. En un taskboard tradicional este cuadrante sería el equivalente a Done o Listo.

Nuestro "Tablero de seguimiento" contaba con dos cuadrantes más...

5. Gigantes dormidos: acá se colocan los nombres de aquellas personas que estuvieron en el cuadrante "Enseñar" y que por alguna razón dejaron de recibirnos. Estos nombres luego los registrábamos para que en un tiempo futuro otros misioneros pudieran visitarlos.

6. Reactivación: acá se anotaban los nombres de aquellos miembros menos activos, que necesitan ayuda y a los que nos hemos comprometido visitar.

Pues bueno, he aquí un poco del visual management que empleaba en la misión, ¿qué les parece? Si tienen algún comentario o consulta no duden en hacérmela llegar.

16 diciembre 2012

Be Agile! / Se Ágil (una reflexión)

 http://blog.outsystems.com/aboutagility/Caution-agilists-beware.gif

Hoy quise escribir un poco respecto a la onda Ágil o Agile, que se anda escuchando mucho últimamente y de lo que significa para mi. Durante el tiempo que llevo como desarrollador he tenido la oportunidad de participar en cierto número de proyectos con diferentes resultados. Si me pidieran realizar una lista de observaciones a todos estos, tal vez la lista sería como la que sigue:
  • Proyectarse a realizar un proyecto de larga duración con fases secuenciales muy marcadas (Análisis, Desarrollo, Pruebas y Despliegue) no siempre es un buen ídea, es más por lo general no lo es porque bajo ciertas circunstancias el coste de los cambios (que siempre suelen ocurrir) es elevado.
  • El verdadero valor de un proyecto como el mencionado en el punto anterior no se conoce sino hasta el final, lo cual puede ser muy costoso y frustrante cuando el cliente se da cuenta que las cosas han cambiado y aquello que se hizo ya no tiene razón de ser.
  • En muchas ocasiones se quiere dar solución a situaciones utópicas en lugar de atacar los puntos críticos del proyecto.
  • En ocasiones quien realizaba la estimación o bien no tenía idea de lo que se tenía que hacer o bien no tenía los suficientes skills técnicos para comprender cabalmente lo que involucra el desarrollo de una solución.
  • En muchas ocasiones tener a alguien detrás preguntando a cada rato "¿Cómo vamos?" es incómodo y tendía a hacernos perder la concentración en lo que veníamos realizando y no está de más, nos aumentaba la presión y la tensión.
  • No suele tenerse en claro el concepto de mejora continua, tras los errores de un proyecto, por lo general, se olvidan y se vuelven a repetir en el siguiente.
  • Los desarrolladores y más los jefes de proyecto, deberían tener en claro que es OBLIGATORIO escribir pruebas unitarias o en general todo desarrollo debería estar en la capacidad de testearse de forma constante.
Y podría seguir alargando más la lista pero ese no es el objetivo de este post. En fin, hace ya 3 años, tuve mi primer acercamiento al mundo ágil, a través de Scrum, en un proyecto para una reconocida compañía de seguros; nunca olvidaré la sensación que tuve al experimentar lo que significa estar en un "equipo auto-organizado", contar con una relación de "colaboración" más estrecha con el cliente, encontrar oportunidades de mejora durante las "retrospectivas" e incluso, la organización del tiempo del proyecto en tramos cortos que se conocen como "sprints". Podría decir que nunca antes me había sentido tan productivo, nunca antes había disfrutado tanto con realizar mi trabajo de una forma distinta.

Al principio, aprendí sobre Scrum, sobre XP, sobre Kanban, y otros frameworks ágiles. Supuse que aprendiendolos conseguiría ser feliz en mi trabajo, pero la realidad a veces no suele ser la ideal; aquí entra una frase que oí en repetidas ocasiones a Alan Cyment: "pragmatismo a corto plazo, idealismo a largo plazo"; no se trata de aplicar violentamente todo un framework, en ocasiones uno se debe "adaptar" y generar el cambio de a pocos. Hubieron ocasiones en las que el entorno era tan hostil, que suponía un alejamiento de las prácticas ágiles, bueno, cuando sucedió esto no perdía la esperanza y siempre buscaba oportunidades para enseñar lo que había aprendido hasta el momento.

Pero "ser ágil", por lo que entiendo ahora, no es solo una manera de trabajar o de hacer diferente el trabajo, sino que va más allá... es un cambio en el pensar y en la forma en la que realizas las cosas en tu diario vivir. Recuerdo una ocasión en la que hablando con uno de mis "mentores", le contaba sobre algunos problemas que había tenido con un par de personas; lamentablemente, con la primera las cosas terminaron mal; sin embargo, para la segunda, cuya riña aun no llegaba a un desenlace, mi mentor me dijo: "Armando, tu eres un chico ágil, aplica la agilidad!". Salí de aquella sesión con la plena intención de mejorar los canales de comunicación mediante una conversación "cara a cara", estableciendo "un objetivo" y "una visión", antes de analizar los problemas... el resultado fue, por creces, muy satisfactorio. Y así podría mencionar algunas otras ocasiones en el que valores y principios ágiles también podrían aplicarse en la vida cotidiana.

Esta es una pequeña reflexión sobre lo que significa el "ser ágil" para mi, sabiendo que el término "ágil" es solo una etiqueta para muchas ideas, conceptos y prácticas; que no son nuevas, pero que están cobrando relevancia últimamente.

25 septiembre 2012

Instalación de Apache Maven en Ubuntu 12.04LTS

En esta ocasión se me dio por instalar Maven en mi ubuntu, asi que aquí les dejo los pasos que seguí.

Versión de ubuntu 12.04LTS
Versión de apache maven 3.0.4
Versión de java sdk 6u35

Descargar el binario (Binary tar.gz) de Maven desde el siguiente enlace:

http://maven.apache.org/download.html

Desempaquetar el binario en un directorio con permisos de ejecución.

Ingresar via “Terminal” al directorio en el que desempaquetamos el binario y ejecutamos la sentencia “./mvn -version”, prestemos atención al resultado:

Warning: JAVA_HOME environment variable is not set.Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
Maven home: /home/armando/apache-maven-3.0.4
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre
Default locale: es_PE, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-31-generic", arch: "amd64", family: "unix"

Si bien todo parece andar casi OK, debemos setear la variable “JAVA_HOME” para evitar cualquier problema de ejecución de tareas, adicionalmente, prefiero usar el JDK de 0racle, en lugar del OPENSDK (cuestión de gustos por ahora) para las labores de desarrollo, por ello será necesario descargar el binario correspondiente a java desde la página de 0racle.

Para iniciar la descarga del binario (jdk-6u35-linux-x64.bin) nos dirigimos al siguiente enlace:

http://www.oracle.com/technetwork/java/javase/downloads/

y seguimos las instrucciones para “Self Extracting Linux 64 bits” (porque uso la versión para 64 bits) que encontramos en este otro enlace:

http://www.oracle.com/technetwork/java/javase/index-137561.html#linux

Una vez que ya tengamos instalado al java, estableceremos la variable JAVA_HOME de la siguiente manera:

export JAVA_HOME=/home/armando/jdk6u35/jdk1.6.0_35/

Luego, volvemos a ejecutar la sentencia “./mvn -version” y obtendremos un resultado similar al que sigue:
Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
Maven home: /home/armando/apache-maven-3.0.4
Java version: 1.6.0_35, vendor: Sun Microsystems Inc.
Java home: /home/armando/jdk6u35/jdk1.6.0_35/jre
Default locale: es_PE, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-31-generic", arch: "amd64", family: "unix"

Y con esto ya estaríamos listo para empezar a usar Maven.

*************** Actualización 15:22hrs ***************

Para facilitar las cosas agregaremos algunas variables al sistema:


Abrimos el archivo “/etc/environment” y agregamos las siguientes lineas:

M2_HOME=”/home/armando/apache-maven-3.0.4”
MAVEN_HOME=”/home/armando/apache-maven-3.0.4”
M2=”/home/armando/apache-maven-3.0.4/bin”

Luego, modificamos la linea superior correspondiente al PATH:

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/armando/apache-maven-3.0.4/bin

Guardamos y por si acaso ejecutamos la siguiente sentencia para asegurarnos que se refleja el cambio:

echo $PATH

Si por a o b no aparece la modificación que le hicimos al PATH ejecutamos la siguiente sentencia:

export PATH=$PATH:/home/armando/apache-maven-3.0.4/bin

Y con esto ya podemos ejecutar el comando “mvn” desde cualquier directorio.


24 julio 2012

Android - Configurando la AVD para aceleración gráfica


Se requiere Android SDK Tools rev 17 o superior, entonces al crear una nueva AVD con la aceleración gráfica habilitada, en la sección Hardware de la configuración de la AVD, pulse el botón New, y seleccione GPU emulation estableciendo su valor en Yes.



20 julio 2012

Google Plus - Crea un "badge" para tu +Page

Sí, a través de Google+ Badge puedes crear un simpático widget que puedes colocar en tu página y así referencia a tu +Page. Cuando ingresas los datos dicha herramienta te genera un código javascript similar al que aparece a continuación:


El resultado final, será como el que sigue:


16 julio 2012

AIX/Linux - Cambiar Zona Horaria y Fecha/Hora

Necesitaba una ayuda memoria porque se están convirtiendo en tareas casi frecuentes.

Cambiar la zona horaria (timezone) a "Peru Time".

chtz 'PET'

Luego, reiniciar el servidor.

A continuación, debemos ajustar la hora, a través del siguiente comando (date MMDDhhmm[YYYY.ss])

date 07161210

En este caso he ajustado la fecha y hora a las "12:10hrs del 16 de Julio".

27 junio 2012

Hoy es el Google IO 2012!!!


Hoy empieza el Google I/O 2012, el evento más esperado de los amantes de la tecnología. Estaremos a la expectativa de loa que suceda en el Moscone Center de San Francisco, en el que por 3 días (27 - 29 de Junio) tendremos la oportunidad de disfrutar de los anuncios, demostraciones y charlas sobre las novedades que nos traen los amigos de la gran "G" para este año y el próximo. En esta ocasión ya está confirmado el lanzamiento de Android 4.1, el cual será conocido como Jelly Bean, hay rumores de otras novedades que iremos despejando a medida que el evento transcurra. 



Asi que los invito a estar en línea con el evento pulsando en la página "Google I/O 2012" para ver el evento en vivo.

16 mayo 2012

Problema con el cambio de WASADMIN y PORTALADMIN en Portal 7.0.0.2

Hoy me encontré con este problema mientras intentaba cambiar los usuarios de administración del WAS y del Portal (7002):

[wplc-validate-user-exists]   Instance attributes (Set 1 of 1):
[wplc-validate-user-exists]     ignoreDuplicateIDs= *** NOT_SPECIFIED ***
[wplc-validate-user-exists]     attribute=[ *** NONE_SPECIFIED *** ]
[wplc-validate-user-exists]     customproperty=[ *** NONE_SPECIFIED *** ]
[wplc-validate-user-exists]     cn="CN=wasadmin,OU=usuarios,OU=portal,DC=pe,DC=ibm,DC=com"
[wplc-validate-user-exists]     trimSpaces= *** NOT_SPECIFIED ***
[wplc-validate-user-exists] com.ibm.websphere.management.cmdframework.InvalidParameterNameException: ADMF0004E: Invalid parameter name CN for command searchUsers.
[wplc-validate-user-exists]     at com.ibm.websphere.management.cmdframework.provider.AbstractAdminCommand.getParameterMetadata(AbstractAdminCommand.java:1096)
[wplc-validate-user-exists]     at com.ibm.websphere.management.cmdframework.provider.AbstractAdminCommand.isParamReadonly(AbstractAdminCommand.java:1162)
[wplc-validate-user-exists]     at com.ibm.websphere.management.cmdframework.provider

Gracias al post de Dave Hay pude encontrar la solución (bueno, un workaround), agregarle "-Dskip.ldap.validation=true" al final de la sentencia.

Sentencia para el cambio de usuario administrador del WAS:

./ConfigEngine.sh wp-change-was-admin-user -DWasPassword=wpadmin -DnewAdminId=CN=wasadmin,OU=usuarios,OU=portal,DC=pe,DC=ibm,DC=com -DnewAdminPw=wasadmin -Dskip.ldap.validation=true


Sentencia para el cambio de usuario administrador del Portal:


./ConfigEngine.sh wp-change-portal-admin-user -DWasPassword=wasadmin -DnewAdminId=CN=wpsadmin,OU=usuarios,OU=portal,DC=pe,DC=ibm,DC=com -DnewAdminPw=wpsadmin -DnewAdminGroupId=CN=wpadmins,OU=grupos,OU=portal,DC=pe,DC=ibm,DC=com -Dskip.ldap.validation=true

09 mayo 2012

Hangouts On Air para todo el mundo!! :D


Hace dos días se anunció oficialmente que Hangouts On Air se puso a disposición de los usuarios de Google+. Y ¿qué es un hangout? pues es un servicio que te ofrece Google mediante el que puedes hablar e interactuar con hasta 10 usuarios a la vez por video. Pues buen, esta limitación ahora se levanta gracias "Hangouts On Air", el cual te permite hacer el broadcast de tu hangout a todos aquellos que tengan acceso a la url que se genere para el encuentro.

Fuente:

Licenciamiento por PVUs


Quizá un tema un poco más comercial, nunca está de más conocer cómo se maneja el licenciamiento en los productos IBM los cuales se basan en PVUs tal como se menciona a continuación:
A Processor Value Unit (PVU) is a unit of measure used to differentiate licensing of software on distributed processor technologies (defined by Processor Vendor, Brand, Type and Model Number).
Para mayor información sobre cómo se emplean los PVUs en los diferentes hardwares deben echarle un vistazo al siguiente enlace:

http://www-01.ibm.com/software/lotus/passportadvantage/pvu_licensing_for_customers.html

07 mayo 2012

Instalando el nuevo tema modular 7.0.0.2

El más reciente fixpack (7.0.0.2) trae consigo un nuevo tema, en el que se introduce un nuevo concepto de modularización.
IBM® WebSphere Portal 7.0.0.2 includes a new theme. The new theme is a modularized theme that you can enable and disable features as needed. The ability to enable and disable the theme provides better performance. You can disable components that are not needed. This ability also eases development of a theme.

A continuación, les diré que hacer para instalarlo.
  1. Primero debemos actualizar nuestro portal 7 con el fixpack 2 (recuerden que para su actualización también requieren actualizar el WAS (en mi caso lo tengo actualizado con el fixpack 21).
  2. Por defecto, el nuevo tema no viene instalado, así que debemos desplegarlo mediante la siguiente sentencia: 

  3. ./ConfigEngine.sh deploy-7002-theme -DPortalAdminPwd=password -DWasPassword=password

    Tras el despliegue, que tarda unos minutos, podremos ver que aparece listado el nuevo tema, con sus respectivos skins.


  4. Creé una nueva página y le apliqué el nuevo tema, así es como luce:

09 febrero 2012

Administering IBM WebSphere Portal 7.0: A comprehensive workshop

Administering IBM WebSphere Portal 7.0: A comprehensive workshop: This plopped into my inbox this morning - kudos to Thomas Hurek and Falk Posch for creating this useful document: -

The goal of this white paper is to explain the various administration and configuration tools offered by IBM WebSphere Portal 7.0. Learn about which tool to use for which task and about the new capabilities of WebSphere Portal 7.0, and understand differences from previous versions of WebSphere Portal. We take you through exercises for each tool so you can learn hands-on how to use them.

ToC

• Introduction
• What is WebSphere Portal?
• WebSphere Portal installation
• WebSphere Portal file system structure
• Command line tools
• Administration user interface: Admin portlets
• WebSphere Application Server Admin user interface
• Conclusion
• Resources
• About the authors


IBM Content Template Catalog V3.0 (CTC) and WebSphere Portal 7.0.02

IBM Content Template Catalog V3.0 (CTC) and WebSphere Portal 7.0.02: This IBM Technote plopped into my In-Box earlier today, and I immediately shared it via Sametime with a number of my colleagues, most of whom are working with the IBM Content Template Catalog (CTC) right now.

IBM Content Template Catalog V3.0 (CTC) is broken after upgrade to WP/WCM V7.0.0.1 CF009 (or later) or 7.0.0.2 fix pack

Abstract

The IBM Content Template Catalog V3.0 (CTC3) can be installed on IBM Web Content Manager (WCM) V7.0.0.1 or 7.0.0.2. Installing the Combined Cumulative Fix 009 or 010, or upgrading to fix pack level 7.0.0.2 renders CTC3 unusable.

Content

A fix will be made available in the near future and this page will be updated when more information is available.

The IBM Content Template Catalog V3.0 (CTC3) is documented here: -

http://www-10.lotus.com/ldd/portalwiki.nsf/dx/IBM_Content_Templates_Catalog_V3.0

One of the files necessary for its successful operation is overwritten when installing either Combined CF009, CF010, or fix pack 7.0.0.2. The .jar file, "wp.wcm.templating.jar", is installed into the WCM shared apps directory during a CTC3 install.

To correct the issue, copy the original .jar file from CTC3 back into the shared apps directory (replacing the file present) and restart the server.

The .jar file is located in "/wp.ctc/components/wp.ctc/enablment/" in the CTC PAA. The non-CTC3 file will be 31KB after installing the CF or fix pack but the CTC3 version is 80KB.

After the restart, the templating functions should be working again.