martes, 13 de enero de 2009

Revisión del libro "El modelo Google. Una revolución administrativa"

El libro "El modelo Google. Una revolución administrativa" de Bernard Girard permite a los lectores comprender de manera ágil y simple como son las novedosas prácticas administrativas de Google y que factores han permitido que en tan corto tiempo se haya logrado un éxito rotundo. Actualmente Google es un ejemplo a seguir a nivel mundial, no solo por empresas relacionadas con la informática, sino por empresas de todos los sectores.

Bernard Girard es consultor gerencial y autor de varios libros sobre la administración y su historia. Desde hace más de 20 años ha seguido de cerca los adelantos tecnológicos y argumenta que los cambios en las organizaciones será consecuencia directa de la informática. Desde el 2000 se ha dedicado a analizar los diferentes aspectos de la empresa Google y producto de esa observación y análisis escribe este libro.

Resulta muy interesante la lectura de este libro, pues va más allá de contar la historia de Google, en cada uno de sus capítulos realiza un análisis exhaustivo de las diferentes circunstancias y variables que intervinieron desde el comienzo, explicando claramente como ha sido el manejo de la compañía y como logró convertirse en menos de una década en un referente administrativo a nivel mundial, saliéndose de los paradigmas ya conocidos propuestos por Ford o Toyota. Este modelo administrativo es perfectamente aplicable a otros sectores diferentes al de la informática. Es gracias a esa nueva metodología de trabajo, donde se le da mucha importancia a la motivación de los empleados y a la constante innovación que se logra un gran éxito. Google como bien lo resaltan en el libro "es una máquina de innovar", y es que la innovación no solo está presente en los productos, el modelo económico, la selección de personal, gestión de proyectos, la relación con los clientes, el manejo del marketing (nunca gastaron dinero en marketing), el hecho de que su estructura administrativa tiene tres personas a la cabeza y no una como la mayoría de la empresas evidencian que Google es una compañía diferente. Todos estos factores han hecho posible que Google se mueva de manera ágil en el sector, pudiendo evolucionar rápidamente y entregarles a sus clientes justo lo que ellos desean.

Muchas personas se preguntan cómo gana dinero Google si todos sus productos son gratis, pues en este libro se explica detalladamente como a través de la publicidad, específicamente mediante Adwords y Adsense logra que los millones de usuarios a través del mundo por cada click que dan en sus anuncios minimalistas (muchos usuarios ni siquiera se percatan que han dado click en un anuncio publicitario) ganan justo lo que el anunciante esté dispuesto a pagar. También se tocan temas controversiales que muchos detractores de Google argumentan, tales como la violación de los derechos de autor, la violación de la privacidad, monopolio en internet, entre otros.

En el capítulo 6 "La regla del 20%" se toca uno de los aspectos más interesantes del modelo administrativo que tiene Google, en él se expone como hace la compañía para motivar a sus empleados, crear un ambiente donde se propicia la innovación y sobre todo lograr altos niveles de productividad. Para lograr esto, Google comprendió que personas con un alto nivel educativo no solo se motivan a través de bonificaciones o aumentos del salario sino que existe también una motivación intrínseca, en otras palabras, Google no solo ofrece beneficios tangibles sino también intangibles, estos últimos enfocados a la realización personal a través de otras actividades que permitan que los empleados logren metas personales. Para esto Google hace que sus ingenieros y programadores dediquen el 80% del tiempo a la misión que se les encomendó al ser contratados y el 20% restante dedicado a proyectos personales. La mayoría de las personas, usan este tiempo para desarrollar ideas que surgen del trabajo, con lo que Google no solo propicia la disminución de la rotación de personal, sino que aumenta la capacidad de innovar y crear nuevas aplicaciones. Cada ingeniero y programador debe escribir cada semana en un párrafo de máximo cinco líneas a que dedico su 20% de tiempo a proyectos personales la semana inmediatamente anterior, con esto se crea una presión sutil sobre ellos, pues si a un empleado no le basta el 80% del tiempo para realizar su trabajo simplemente no es la persona indicada. Además, los proyectos propuestos son evaluados por los otros ingenieros altamente conocedores, con lo que se crea un ambiente donde cada quien debe proponer y ejecutar proyectos que estén a la altura.

Definitivamente la innovación es un factor diferenciador para las empresas y para las personas, en la medida en que se realicen las actividades profesionales o incluso personales se puede obtener gran éxito si se le aplica un toque de innovación. Muchas personas entienden innovación como algo místico, algo difícil y ajeno, sin embargo, en mi opinión creo que todas las personas tienen la capacidad de innovar, de hecho lo hacen continuamente sin darse cuenta y paradójicamente innovan sin proponérselo, pues innovar básicamente es aplicar a algo existente una diferencia, algo nuevo. Partiendo de esta definición personal, todas las cosas que nos rodean son susceptibles de aplicárseles cambios que pueden darle mayor valor; en la medida en que ese proceso de innovación se vuelve consiente, es posible aplicar valor agregado a los productos, situaciones, lugares, etc. que nos rodean y por consecuencia mejoramos nuestra situación respecto a los demás o al ambiente que nos rodea, permitiéndonos lograr el éxito.

Si bien este libro puede ser leído por cualquier persona, incluso sin tener profundos conocimientos en informática, para los estudiantes de Ingenieros de Sistemas o Informáticos en general resulta muy inspirador, pues muestra como un proyecto que nace en la academia puede cambiar el mundo y llegar a ser una gran empresa.

Algunas frases interesantes presentes en el libro:

- "la ausencia de una clausula de no concurrencia contribuye a una mayor movilidad de las personas, de las ideas y del know how".

- "los directivos de Google comprendieron que los usuarios confiaban tanto o más en las maquinas que en las personas".

- "siempre hay que estar dispuesto a escuchar: las innovaciones pueden llegar de cualquier parte, de los ingenieros, de los universitarios o de la competencia. En esta materia nadie tiene la ciencia infusa, ni los directivos de la empresa ni los demás".

- "Preocúpese por los usuarios, y todo lo demás vendrá por sí solo".

- "Somos muy analíticos. Medimos todo y hemos sistematizado cada aspecto de lo que sucede en la empresa. Por ejemplo, esta semana lanzamos una hoja de cálculo. Ya recibí información sobre el número de personas que la utilizan, sobre lo que hacen con ella, y esto, hora tras hora".

- "la intuición es simple: cada uno de los colaboradores puede tener ideas originales que merecen que se trabaje en ellas.".

- "Page y Brin saben convencer a los demás de seguirlos a donde quieren ir; tienen la arrogancia de los visionarios, son inteligentes, lo saben y no lo esconden; son ambiciosos, no les basta con hacer fortuna, también quieren cambiar el mundo; y se apasionan por lo que hacen".

Por: Camilo Giraldo J

lunes, 22 de diciembre de 2008

-Tutorial GWT- Parte1. Desarrollo de una aplicación Web usando GWT.


Este tutorial sera dividido en tres partes, ya que se cubriran los diferentes aspectos a tener en cuenta al momento de desarrollar una aplicación Web usando el Google Web Toolkit (GWT) bajo el sistema operativo Linux (Ubuntu) y usando el IDE Eclipse. Antes de comenzar, se debe tener instalado Eclipse (ver el tutorial Como instalar Eclipse en Ubuntu). El primer paso a seguir es descargar el GWT de la pagina oficial del proyecto http://code.google.com/webtoolkit/ en un directorio cualquiera, preferiblemente que se encuentre en nuestro home. El archivo descargado tiene la extensión .tar.bz2, para descomprimirlo usamos la siguiente instrucción por consola: tar xvjf gwt-linux-1.5.3.tar.bz2 Aunque se pueden crear proyectos para Eclipse usando algunas herramientas del GWT, en nuestro caso vamos a usar el plugin para Eclipse desarrollado por Cypal, llamado Cypal Studio for GWT, este lo podemos descargar del sitio oficial: http://www.cypal.in/ Una vez descargado y descomprimido, copiamos los archivos *.jar en la carpeta plugins del Eclipse (En caso de tener instalado el Eclipse en el directorio opt debemos tener permisos de root). Una vez realizados estos pasos, procedemos a abrir el Eclipse. Entramos por WindowPreferences damos click a la opción Cypal Studio, allí especificamos la ruta donde se encuentra el GWT, tal como se ve en la siguiente figura:


Damos click en Apply y luego en OK.

Para verificar que todo esté bien, vamos a realizar una aplicación de prueba. Para esto creamos un proyecto tipo Dynamic Web Project y configuramos el proyecto de la siguiente forma:



Damos click en Finish (Es posible que Eclipse te sugiera otra perspectiva, sin embargo, es preferible conservar la perspectiva Java).


Una vez creado el proyecto, nos ubicamos en la raíz y con click derecho seleccionamos NewOther... Nos ubicamos en la opción Cypal Studio y creamos un nuevo modulo, tal como se muestra en la siguiente figura:



Damos click en Next y configuramos el modulo de la siguiente forma:




Click en Finish para terminar.


Con esto se ha creado la jerarquía y archivos suficientes para hacer nuestro primer ejemplo. En el archivo HolaMundo.java ingresamos el siguiente código:

com.camigira.ejemplo.client;

import com.google.gwt.core.client.EntryPoint;
import
com.google.gwt.user.client.Window;
import
com.google.gwt.user.client.ui.Button;
import
com.google.gwt.user.client.ui.ClickListener;
import
com.google.gwt.user.client.ui.RootPanel;
import
com.google.gwt.user.client.ui.Widget;

public class HolaMundo implements EntryPoint {

public void onModuleLoad() {
Button
button = new Button("Prueba");
button.addClickListener(
new ClickListener() {
public void onClick(Widget sender) {
Window.alert(
"Hola Mundo");
}
});
RootPanel.get().add(button);
}

}


Para probar si funciona, nos ubicamos en el archivo HolaMundo.gwt.xml damos click derecho Run AsGWT Hosted Mode Application. Con esto nos debería aparecer tanto el GWT Development Shell como el navegador de prueba con un botón, el cual al darle click hace aparecer una ventana de alerta con la frase Hola Mundo.

Por: Camilo Giraldo J

-Info Android- Que es el Android Market?


Cuando se realiza el esfuerzo de aprender algún tema relacionado con el desarrollo de software, más allá de la satisfacción que puede representar saber “algo nuevo” en definitiva estamos buscando que ese esfuerzo se vea recompensado económicamente, ya sea mediante un mejor salario en una organización o mejores ingresos trabajando de manera independiente para otros. Sin embargo, que pasa con nuestras ideas y proyectos de desarrollo, como realizarlas y lograr que nos representen ingresos?
Una respuesta obvia pude ser “Pues la hago y luego la vendo!”… si lo pensamos bien, el proceso de desarrollo depende únicamente de nosotros y los impedimentos finalmente son oportunidades de aprendizaje, por lo que esa parte de la respuesta está bien, pero “y luego la vendo!” puede ser complejo pues encontrar varios clientes y llegar a todos ellos no es tan simple pues definitivamente que la venta se realice no depende completamente de nosotros, incluso si contamos con buenas aptitudes de vendedor.
Una posible solución a los problemas mencionados es Android Market, gracias a la cual se podría afirmar que la respuesta “Pues la hago y luego la vendo!” puede ser absolutamente cierta. Android Market es un sistema de distribución de contenido que ayuda a los usuarios finales buscar, comprar, descargar e instalar diversos tipos de contenido en sus dispositivos móviles. Esto es, un sistema organizado por Google con características como calificación y retroalimentación por parte de compradores, además, de herramientas que ayuden a los desarrolladores a hacer seguimiento a sus negocios y mejorar sus ofertas y aplicaciones. Este sistema esta soportado por la experiencia e infraestructura que tiene Google propiciando la venta y compra de diversos tipos de aplicaciones de una forma ágil y relativamente simple tanto para desarrolladores como usuarios.
Para la publicación de las aplicaciones en el Android market, se deben tener en cuenta los siguientes aspectos:

Manejo de versiones

Los usuarios necesitan disponer de información específica sobre la versión de la aplicaciónestá instalada en sus dispositivos moviles, para asi conocer saber cuando existen actualizaciones disponibles. En ocasiones el manejo de versiones, permite determinar la compatibilidad de de ciertas aplicaciones o modulos ya que pudiera existir dependencias segun la versión.
Para definir la información de versión en una aplicación Android, se cuenta con dos atributos, los cuales deben ser anexados al archivo manifiesto (manifest).

- android:versionCode Es un valor entero que representa la versión del codigo de la aplicación relativo a otras versiones.
Este valor entero puede ser verificado mediante logica de programacion, para asi evaluar si existen nuevas versiones o alguna relacion de dependencia interna. Este valor es arbitrario, por lo que es el programador quien lo define, sin embargo debe asegurarse de que simepre que exista una nueva versión, este valor sea mayor al anterior.

- android:versionName Es una cadena de texto (String) que representa la versión de la aplicación, esta sera mostrada al usuario.
Este valor no es usado internamente para algun proposito de programacion, simplemente se muestra al usuario, por lo que es importante tener algun estándar o formato.

En caso de que la aplicación requiera una versión minima de la plataforma Android, esta se puede especificar en el archivo manifiesto con el siguiente atributo:

- android:minSdkVersion Valor entero que corresponde a la versión de codigo de la plataforma Android.

Resulta muy util al momento de instalar una aplicación, ya que el sistema valida este atributo comparandolo con la versión del sistema Android, en caso de que no sea compatible el sistema aborta la instalación de la aplicación.

Firmar las aplicaciones

El sistema Android requiere que todas las aplicaciones estén firmadas digitalmente cuya clave privada está en manos del desarrollador. Este certificado es usado como una forma para identificar a los autores y establecer relaciones de confianza entre las aplicaciones. El certificado no necesariamente debe estar firmado por una autoridad de certificación, es normal y común recurrir al auto firmado de certificados para aplicaciones Android.

Los principales puntos a tener en cuenta son:

- Todas las aplicaciones deben ser firmadas digitalmente, el sistema no se instalará una aplicación que no está firmada.
- Es posible usar una firma propia, no es necesario un certificado de autoridad.
- Al momento de publicar una aplicación, se debe firmar la aplicación Android con una clave privada adecuada. No se permite la publicación de aplicaciones que usan la clave por defecto que provee el SDK.
- El sistema verifica la fecha de expiración de la firma solo al momento de realizar la instalación. En caso de que esta fecha expire luego de haber sido instalada, la aplicación continúa funcionando normalmente.
- Es posible usar las herramientas estándar — Keytool and Jarsigner — para generar las claves y firmar la aplicación.

Antes de publicar una aplicación, es recomendable tener en cuenta los siguientes puntos:

- Probar ampliamente su aplicación en un dispositivo real
- Considerar la posibilidad de añadir una licencia de usuario final en su aplicación
- Especificar un icono y etiqueta para su aplicación.
- Especificar la versión de su aplicación
- Obtener un adecuado clave criptográfica
- Registrarse para obtener una clave del Maps API, si su aplicación está utilizando elementos MapView
- Firmar su aplicación
- Pruebe ampliamente la aplicación compilada.

Para mayor información, puede visitar la página oficial del proyecto http://code.google.com/android

Bibliografía
Por: Camilo Giraldo J

martes, 25 de noviembre de 2008

-Tutorial Android- Configuración de ambiente de desarrollo Android en Ubuntu

Lo primero que debemos hacer es descargar e instalar el IDE Eclipse (ver tutorial Como instalar Eclipse en Ubuntu ), algo importante a tener en cuenta es que en este tutorial vamos a usar la versión 3.4.1 Ganymede de Eclipse. Una vez instalado, debemos descargar el SDK de Android, el cual se pude descargar desde la pagina oficial de Android: http://code.google.com/android/
Para descargarlo, entramos al link “Download the SDK”, aceptamos los terminos de uso y seleccionamos la ultima versión disponible bajo la plataforma Linux (i386).

Una vez hallamos descargado el SDK procedemos a ubicarnos en el directorio donde lo descargamos y ejecutamos las siguientes instrucciones por consola:

unzip android-sdk-linux_x86-1.0_r1.zip

sudo mv android-sdk-linux_x86-1.0_r1 /opt/eclipse

sudo chmod -R +r /opt/eclipse/android-sdk-linux_x86-1.0_r1/

Una vez realizado esto, iniciamos Eclipse y entramos por: Help-> SoftwareUpdates damos click en la pestaña Available Software y luego click en el boton Add site... Se abre una ventana donde ingresamos la siguiente url: https://dl-ssl.google.com/android/eclipse/ Con esto hemos adicionado una nueva fuente para complementos de Eclipse, la seleccionamos (con esto se seleccionan todas las opciones de Developer Tools) y damos click en Install. Luego saldrán las ventanas de instalación, donde muestran los terminos de uso, para completar la instalación, debemos marcar la opción donde se aceptan los términos. Una vez finalizada la Instalación del plugin debemos reiniciar Eclipse.

Ya reiniciado Eclipse, entramos por Window-> Preferences, seleccionamos la opcion Android y especificamos la ruta donde se encuentra el SDK, en nuestro caso /opt/eclipse/android-sdk-linux_x86-1.0_r1/ click en el boton Apply y luego en OK.

Con esto hemos terminado la configuración del ambiente de desarrollo Android en Ubuntu usando Eclipse. Para verificar que todo se encuentra correctamente, creamos un nuevo proyecto tipo Android, con los siguientes parámetros:

Damos click en Finish. Y ejecutamos el proyecto.

Por: Camilo Giraldo J.

martes, 18 de noviembre de 2008

-Tutorial linux- Como instalar Eclipse en Ubuntu


Luego de haber instalado java (ver tutorial) se deben seguir los siguientes pasos para instalar eclipse:

- Descargar eclipse desde la pagina de descargas http://www.eclipse.org/downloads/

- Una vez descargado eclipse, debemos descomprimirlo. Para esto, primero nos ubicamos en el directorio donde se encuentra el archivo eclipse.tar.gz y escribimos lo siguiente en la consola:

tar xzf eclipse.tar.gz

luego, movemos la carpeta eclipse al directorio opt:

sudo mv eclipse /opt/

Cambiamos los permisos:

sudo chmod -R +r /opt/eclipse
sudo chmod +x /opt/eclipse/eclipse

Creamos un ejecutable en nuestra ruta:

sudo touch /usr/bin/eclipse
sudo chmod 755 /usr/bin/eclipse
sudo gedit /usr/bin/eclipse

Escribimos lo siguiente en este archivo y guardamos los cambios:
#!/bin/sh
#export MOZILLA_FIVE_HOME="/usr/lib/mozilla/"
export ECLIPSE_HOME="/opt/eclipse"
$ECLIPSE_HOME/eclipse $*

Ahora hacemos que eclipse pueda ser ejecutado desde cualquier sitio creando un symlink:

sudo ln -s /usr/bin/eclipse /bin/eclipse

Para crear el icono en el menu:

sudo gedit /usr/share/applications/eclipse.desktop

Escribimos las siguientes lineas y guardamos los cambios:

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse IDE
Exec=eclipse
Icon=/opt/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=GNOME;Application;Development;
StartupNotify=true

Hemos terminado, ahora podemos ejecutar eclipse por primera vez desde consola escribiendo:

eclipse -clean

O también por Applications->Programming->Eclipse


Por: Camilo Giraldo J

domingo, 16 de noviembre de 2008

-Tutorial linux- Instalar motor de base de datos MySQL en Ubuntu

Para instalar el motor de base de datos MySQL en Ubuntu, se deben seguir los siguientes pasos por consola:

sudo apt-get install mysql-server-5.0 mysql-client-5.0 mysql-admin mysql-doc-5.0

En esta instalación se ingresa la contraseña del root o administrador de la base de datos, por lo que es muy importante recordarla. Usualmente para desarrollo y pruebas es común usar adminadmin como contraseña.

El administrador Grafico se puede instalar por Applications>Add/Remove y buscamos MySQL Administrator. Tambien es recomendable instalarel MySQL Query Browser, el cual permite realizar consultas o ejecutar sentencias sql a las bases de datos.

Por: Camilo Giraldo J.

-Tutorial java- Instalación de Java en Ubuntu

Para instalar Java 6 en Ubuntu LTS, se debe hacer lo siguiente:

Lo primero que se debe hacer, es instalar el paquete primordial de Java, el JRE (Java Runtime Enviroment). Por consola escribimos lo siguiente:

sudo apt-get install sun-java6-jre

Para instalar el JDK (Java Development Kit), escribimos por consola:

sudo apt-get install sun-java6-jdk

Para instalar el plugin necesario para desplegar contenido Java en el navegador escribimos por consola:

$ sudo apt-get install sun-java6-plugin

y para instalar las fuentes:

sudo apt-get install sun-java6-source


Por: Camilo Giraldo J

-Tutorial linux- Instalar Apache Tomcat en Ubuntu

Luego de tener instalado Java (ver tutorial para la instalación Java). Descargamos la version de Apache Tomcat que se desee y la ponemos en el directorio /usr/local/ Para esto es necesario tener permisos de root, por lo que usamos el comando sudo su para moverlo por consola, o sudo nautilus para realizar el movimiento usando el navegador.

Para descomprimir y mover usar las siguientes lineas:

tar xvzf apache-tomcat-6.0.14.tar.gz

sudo mv apache-tomcat-6.0.14 /usr/local/tomcat

Como el Tomcat requiere tener configurado la variable JAVA_HOME, debemos escribir lo siguiente para editar el archivo bashrc:

gedit ~/.bashrc

Y agregamos la siguiente linea:

export JAVA_HOME=/usr/lib/jvm/java-6-sun

Una vez realizado esto se puede iniciar el Tomcat usando el script de inicio ubicado el la carpeta bin.

Para verificar que todo esta bien escribimos en el navegador:

http://127.0.0.1:8080/

Para agregar usuario administrador del tomcat, procedemos de la siguiente manera:

sudo gedit /usr/local/tomcat/conf/tomcat-users.xml

Y antes del tag </tomcat-users> escribimos la siguiente linea:

<user username="your username" password="your password" roles="admin,manager"/>

Por: Camilo Giraldo J

sábado, 15 de noviembre de 2008

-Tip java- Ejecutar JAR externo

Como ejecutar una clase Java por consola si se tiene un .Jar externo?

Para ejecutar una clase java que usa una librería externa como por ejemplo JDOM (para manipulacion de archivos xml), se debe seguir la siguiente sintaxis:

java -classpath $CLASSPATH:/ruta/archivo.jar claseJava

Por: Camilo Giraldo J

-Tutorial linux-Como realizar una conexión SSH con UBUNTU


Para realizar una conexión SSH usando Ubuntu, vamos a usar gFTP, para instalarlo, se deben seguir los siguientes pasos:

Applications>Add/Remove. Y buscamos gFTP para instalarlo.

Al abrir gFTP se llenan los siguientes campos asi:
Host: nombreHost
Port: 22
User: nombreUsuario
Pass: Contraseña
Y seleccionamos la opción SSH2 click en el icono:




Por: Camilo Giraldo J