Parece que es momento de aprender otro lenguaje de programación

Esto es para ponerse a pensar:

SUN (la empresa casi "mamá" de Java... porque IBM parece el papá) ha lanzado una nueva página web de tenología, con noticias y artículos acerca de un lenguaje de programación que.... no es java.

Es Python: http://developers.sun.com/scripting/python/index.jsp

Ah! y está actualizando NetBeans para que soporte el lenguaje Python próximamente. http://wiki.netbeans.org/Python

Se pone interesante no?... pero sigamos:

Google ha lanzado hosting para aplicaciones Python: http://www.niallkennedy.com/blog/2008/04/google-app-engine.html

No sólo hosting, Google ofrece toda una SDK para desarrollo con Python. http://code.google.com/appengine/docs/whatisgoogleappengine.html

Python ha ganado el premio "Lenguaje de programación del año 2007": http://www.cmswire.com/cms/enterprise-20/2007s-programming-language-of-the-year-is-002221.php

Humm.....

Google contrata al creador de Python: http://www.oreillynet.com/onlamp/blog/2005/12/python_creator_guido_van_rossu.html

La empresa SUN parece que está perdiendo dinero ( http://www.bloggingstocks.com/2008/08/01/sun-microsystems-java-drops-on-forecast-of-losses/ ) Después de todo... SUN no "vende" java pues es gratis. Pero lo peor de todo es que SUN no parece estar aprovechando la "fama" de java a su favor. Parece que mientras más se usa Java los que se benefician son otros (IBM, Oracle, .etc) y no la propia SUN.

Bruce Eckel (el que escribió el libro "thinking in Java") ahora trabaja para Adobe y utiliza herramientas Flex: http://www.jamesward.com/wordpress/2007/01/10/bruce-eckel-is-thinking-in-flex/ ......su próximo libro será "Thinking in Flex"?.

Bruce Eckel (si, el mismo) también hizo el intento de escribir "Thinking in Python" ( http://www.mindview.net/Books/TIPython )

Guido Van Rossum (creador de Python), quien pronto sacará la siguiente versión (Python 3000) http://dotnet.sys-con.com/node/467841 mencionó algo muy interesante en una entrevista: "... Python es un lenguaje de incluso más alto nivel [incluso mas alto que java] y eso antiguamente era mal visto por la pérdida de performance que eso genera; pero sin embargo el poder computacional del hardware avanza tan rápido que ese argumento es cada vez menos válido..."

Revisemos un poco de historia:

Assembler es un lenguaje de gran poder; pero luego apareció otro lenguaje ("C") un poco más lento pero de "alto nivel" que te permite ser productivo y se empezó a usar más que el propio assembler, estoy hablando de lenguaje C.
Luego apareció C++ y se repitió lo mismo.
Luego apareció Visual Basic, cuyo "alto nivel y facilidad de uso" lo ha convertido en quizás el lenguaje más utilizado.
Alguno recuerda Visual FOX?... lenguaje de alto nivel pero con alta productividad.
Luego apareció Java y es muy utilizado y definitivamente uno puedo hacer mucho con Java y ser muy productivo. Claro, el resultado final puede no ser tan rápido como algo hecho en C++ ... pero..... realmente importa? Realmente es necesario ser milisegundos más rápido en un mundo en el que procesadores más rápidos aparecen constantemente?

¿Y qué tal si te dijera que con Python puedes ser incluso más productivo que con Java; pero tu programa va a correr un poquito más lento?... ¿Usarías Python? ...

Claro, el "mercado" determina mucho que lenguaje de programación utilizamos, y el respaldo de "los grandes" (SUN, IBM, Microsoft) es la razón por la cual muchos de nosotros trabajamos con lenguajes como Java y .NET. Pero ahora que otro "grande" como Google está empujando Python quizás eso empiece a cambiar.

He revisado Python ultimamente y yo (que trabajo con Java todos los días) puedo decir que cada vez me gusta más Python.... aquí algunas de las observaciones que he encontrado:

  • Java es libre. Python también.
  • Si, mi Eclipse soporta Python. Pero hay otras IDEs también.
  • Tooodos esos términos de marketing que se usan para vender Java también aplican para Python: programación orientada a objetos, multiplataforma, seguridad, escalabilidad, gran cantidad de librerías y frameworks, .etc.
  • Interesante comparación de java versus Python: http://pythonology.org/success&story=nexedi
  • Cuando quiero mayor performance en java, "bajo" a lenguaje C... y eso no es simple porque tengo que usar DLLs, JNI y esas cosas... sin embargo Python conversa con librerías de lenguaje C de una manera más natural.
  • Y Python también puede utilizar librerías Java, incluso puede extender una clase java de ser necesario. ( www.jython.org ) De hecho puedo hacer un "applet java" en Python. (Si! y ponerlo en una web como si fuera un "applet java")
    Siempre he querido hacer un juego, cada vez que lo intento con java llego sólo a un límite porque las librerías gráficas de java (no me refiero a Swing ni a AWT) no tienen el poder suficiente para hacer un juego 3D "de verdad" o usar una librería de juegos como OGRE: http://www.ogre3d.org/ .... sin embargo... Python tiene varias librerías para acceder al "poder gráfico de 3D"... ejemplos: http://www.pygame.org/ y el propio Blender: http://www.blender.org/ que te permite crear juegos en 3D y luego aplicarles lógica de programación..... con el lenguaje Python por supuesto.
  • Los hosting para aplicaciones Java están "caros" (20 dólares mensuales) y por eso PHP tiene gran popularidad porque sus hostings son "baratos" (3 dólares mensuales, algunos incluso menos o gratis). Los precios de hosting Python son similares a los de PHP.
Creo que he estado demasiado ocupado en Java ultimamente y me he perdido este "movimiento pitónico" llamado Python que ha estado surgiendo....


Ahora la única razón para no aprender Python es: flojera.

Te invito a descubrir un mundo nuevo llamado Python: www.python.org

Cómo arrancar (boot) y usar Windows y Linux desde un llavero USB

Holas! ya tengo la última versión de Ubuntu Linux (8.1) corriendo desde mi llavero USB. Esto es mejor que una versión "live CD" porque lo puedo llevar a donde sea y lo que haga se va grabando en el mismo llavero USB. Además el acceso de lectura es más rápido en un USB que en un CD.

Aquí los links de como hacerlo:


Ubuntu en USB:
http://www.pendrivelinux.com/2008/10/15/ubuntu-810-persistent-flash-drive-install-from-live-cd/

Si prefieres KDE puedes poner slax linux en USB: http://www.slax.org/ o intentar poner Kubuntu en un USB....

Windows en USB:
http://www.tomshardware.com/reviews/windows-pocket,1113-8.html

Notas:

Windows en USB (también llamado BART-PE) no es muy útil porque para empezar no es un Windows real (le faltan algunas librerías) y no se le puede instalar cualquier software que uno desee, está limitado a sólo software compatible con Windows versión BART.

En cambio cuando linux funciona desde USB tienes un LINUX COMPLETO, sin "algo menos", sin "restricciones", y si algo le falta, simplemente se lo instalas :) el límite lo pone el tamaño de tu llavero USB.

He probado SLAX y Ubuntu versión USB (tengo dos llaveros USB de 2GB cada uno... aunque uno es de mi esposa que me lo ha prestado por el bien de la ciencia) y puedo decir que ambos funcionan muy bien; sin embargo SLAX cada vez funciona más lento hasta que llega al punto que se cuelga. Sospecho que es por mi culpa y no sé usarlo bien porque veo en su web que SLAX es muy querido por quienes lo usan. En fin. Me quedo con Ubuntu desde mi USB que está funcionando OK y me permite total libertad:

  • Libertad para usarlo (software libre)
  • En cualquier lugar o PC (lo llevo a todos lados en mi USB)

Cómo navegar por internet con seguridad máxima

Las últimas version de los navegadores Firefox e Internet Explorer son más seguros que antes (protegen mejor ante los peligros de internet, como virus, troyanos, phishing, .etc).

¿Pero puede haber algo más seguro?

Claro, usar un antivirus. (Norton, McAffee, Avast, .etc.)

¿Pero puede haber algo más seguro?

Claro, usar un antivirus+firewall+antispyware (AVG, Panda Total Control, Norton 360, .etc)

¿Pero puede haber algo MUCHO más seguro todavía?

(si sigues preguntando es porque o eres muy espeso o porque eres de la gente como yo que pelea contra las malignas criaturas de la oscuridad que amenzan por internet)

Pues si!... no navegues por internet. (tan sólo bromeaba). Aquí te doy unos tips si buscas mayor seguridad cuando navegas por internet:
  • No uses tu máquina real para navegar, mejor utiliza una máquina virtual y navega desde allí, de manera tal que si algo malo ocurre sólo se daña la máquina virtual. Yo utilizo un WindowsXP que "vive" dentro de una imagen VirtualBox ( http://www.virtualbox.org ) para navegar por internet... enciendo la imagen... navego... y cuando termino de hacerlo simplemente apago la máquina virtual y listo. Y si algún virus infecta a la imagen, simplemente la borro y creo otra. Mi verdadero Windows XP no se ve afectado. Si el concepto de máquina virtual no les quedó claro, miren estas imágenes: http://www.virtualbox.org/wiki/Screenshots
  • Navega desde Linux. Yo uso Ubuntu ( http://www.ubuntu.com ) pero puedes usar cualquier "sabor" de Linux que prefieras. Casi todos son gratis. Y no es necesario que borres, particiones o elimines tu Windows pues Ubuntu puede vivir dentro de una imagen virtual VirtualBox si deseas. Incluso, puedes ejecutar tu Linux desde un llavero USB, sin tocar tu disco duro para nada.
  • Activa un campo de fuerza que te proteja! (no es broma). Si utilizas el producto FORCE FIELD de Zone Alarm tu Internet Explorer adquiere un campo de fuerza que brilla a su alrededor y lo protege de ataques de internet... y si alguno llega a dañarlo o infectarlo pues no importa porque todo queda contenido dentro del "campo de fuerza" y nada llega a tu computadora. ¿Quieres saber más sobre eso? mira aquí: http://www.zonealarm.com/forcefield/

Aprendiendo a complacerlas

Entender a las mujeres es un todo un tema eh?; pero llegar a complacerlas ya es un arte. Aquí van algunos de mis intentos de aprendizaje:


Etapa infantil. En la cocina
Henry: yum! mami cocina rico! voy a darle un gran regalo por el día de la madre y hoy voy a limpiar sus ollas y sartenes! empezaré por esta sartén que se ven muy negra.

(Varios minutos después aparece mamá y me ve con una sartén brillando!)

Mamá: ¿Qué haces hijo!?
Henry: mira mamá! he limpiado tu sartén con una lija hasta que se le salió todo lo negro! ahora está blanquita color de su metal original!

(Mamá se preocupa y se pone algo triste)

Mamá: Hijito! las sartenes de teflón son negras por naturaleza! al lijarla le has quitado el teflón! ahora esta sartén ya no sirve.
Henry: uy! ... yo sólo quería ayudar....


En el Instituto

Amiga: Ya pues Henry, tu eres inteligente, qué tal si en el examen final tu pones mi nombre y lo resuelves y yo pongo tu nombre? ok?... tu ya aprobaste el curso sin importar que nota saques... anda por favor si?
Henry: esteee.... bueno.... supongo que no hay problema....
Amiga: yeeee!

(Durante el examen, pongo el nombre de mi amiga y lo resuelvo... pero no podía hacerlo muy bien porque una nota alta iba a resultar sospechoso, así que cometí algunos errores a propósito en las respuestas...)

(Algunos días después)


Amiga: oye! qué pasó? viste las notas?
Henry: no; pero ya aprobaste el curso no?
Amiga: grrrrrr.... NO!!!!
Henry: ¿Por qué?
Amiga: Porque TU!!! OSEA-YO!!!! has sacado mas nota que YO!!! OSEA-TU!!!! te he hecho aprobar el curso y tu no sé que has hecho en el examen que has sacado menos nota que yo!!!! OSEA-TU!!!!
Henry: es que no podía sacar alta nota y tuve que poner algunos errores... y... uy... chispas... creo que puse demasiados????
Amiga: SIII!!!!!!! mejor hubiera puesto mi nombre nomás!!! ay!!!!!
Henry: humm.... cuando lo hago bien me sale súper y cuando me equivoco también me equivoco bien no???
Amiga: ayshshshssh!!!!


En la discoteca, con la enamorada


Enamorada: Ok, por fin logré traerte a una discoteca. Acá están mis amigas así que pórtate como un caballero y conversa con ellas para que te conozcan
Henry: "tengo" qué?
Enamorada: Si! tu vida no es sólo computadoras! Y "yo" por supuesto. Je Je.
Henry: ok. Aquí voy.

(Me divierto conociendo a sus amigas y conversando con una de ellas y la invito a bailar. Luego de algunos momentos de conocerla y reír y pasar un buen rato sociabilizando, regreso a la mesa donde estaba mi enamorada observando lo que pasaba)

Henry: Tu amiga me cae muy bien
Enamorada: (En silencio y molestísima con cara de pared de ladrillos king-kong que durán mas que los demás)
Henry: esteee.... por qué estás molesta? hice lo que me dijiste, hasta baile con tu amiga!
Enamorada: grrrrrr..... ELLA NO ES MI AMIGA!!! NO LA CONOZCO!!!!
Henry: aaaahh..... yo... eh.. ahh.... uh... es que... pensé... es que... estaba aquí y .... ay! .... hay mucha gente en las discotecas no?....
Enamorada: humm........


En el concierto de música, con la enamorada


Enamorada: Yeee! vamos a ver el concierto sentados aquí.
Henry: ok.
Enamorada: Uy! me duele la barriga... me compras una pastilla en la farmacia?
Henry: pero acabamos de hacer una cola de 2 horas para entrar y cuando cerraron la puerta el guardia (mas bien gorila) nos dijo que el que sale ya no vuelve a entrar... Y eso sin contar que estamos a 1000 personas de distancia de la puerta, quizás no podría volver a encontrarte de nuevo en medio del auditorio.... vaya!.... si te duele mucho simplemente vámonos...
Enamorada: no!... quiero ver el concierto! ..... ay mi barriga...
Henry: pero pero....
Enamorada: haz algo pues!

Entonces yo analizo la situación y me doy cuenta de que incluso si lograra traspasar al gorila y nadar a través del mar de personas quizás no encuentre una farmacia cerca -y más importante aún: ABIERTA a esa hora. En momentos como esos todo hombre sabe que debe acceder a fuerzas superiores a él y pedir la iluminación de seres superiores.... y entonces recordé las palabras sabias de Miyagui san el capítulo 1 de Karate Kid cuando David san estaba a punto de perder el campeonato: "aplicar calor sobre el dolor"

Así que cerré los ojos, me concentré, y junté mis manos he hice la técnica de generar calor en mis manos del master Miyagui... y luego puse mis manos sobre la barriga de mi enamorada y eso el calmó el dolor y así pudimos quedarnos a ver el concierto.

Aplicar calor (y las manos) sobre una parte que te duele es una técnica muy útil. Incluso está en nuestros genes... han notado como cuándo algo les duele inmediatamente lo quieren tocar o cubrir con sus manos?... quizás deberían preguntarse "por qué" tienen ese instinto.

Acerca de RIA (Rich Internet Applications)

Para todos los que desarrollamos aplicaciones (no sólo web, sino en general) es importante lograr ir mas allá del HTML, del javascript y lograr aplicaciones realmente amigables y funcionales, al estilo RIA.

Y no sólo a nivel web, sino en todos los niveles, sea cual sea la plataforma de presentación (web, desktop, mobile, .etc).

Tecnologías como Flex, Flash, JavaFX, Silverlight empezarán a cobrar cada vez mas importancia.
Los que estudian administración de negocios o de empresas ya lo saben desde hace mucho tiempo: en un mundo cada vez mas globalizado en el que todos ofrecen casi la misma tecnología la DIFERENCIACION de tu producto puede ser la clave de éxito. Ya no es suficiente con decir que un sistema te permite manejar información, también debe permitirle al usuario ser "dueño" de su información. Los usuarios de hoy que han crecido con Nintendos y Playstations ya no quieren sólo ver la información en su pantalla, también quieren interactuar con ella. (Y los usuarios de mañana habrán crecido usando Nintendo Wii....)

La línea que divide aplicaciones "desktop" con aplicaciones "web" está cada vez más borrosa. Con Adobe AIR (y con la última versión de java que te permite ejecutar un applet FUERA de internet explorer) una aplicación puede vivir y ejecutarse indistintamente como "web" o como "desktop".

Les recomiendo esta lectura acerca de RIA:

http://www.flomedia.de/diploma/

(busquen un PDF en esa web que dice algo como "Thesis Florian Moritz)

Es el mejor resumen que he podido encontrar de RIA. El texto "parece" enfocado exclusivamente en JavaFX; pero no es así. Léanlo.