Monthly Archives: October 2007

You are browsing the site archives by month.

Apple vs Sun, Leopard sin soporte para Java 6

La nueva versión del sistema operativo de Apple, ese que usa la gente cool, OS X Leopard ha sido publicado y me ha llamado bastante la atención su curiosa “feature” de no soportar Java 6. Si Apple dio un gran golpe bajo a Sun al no incorporar Java en su iPhone, este nuevo movimiento es toda una declaración de guerra, cuanto menos. Movimiento digno de Microsoft.

Se pueden ver numerosas protestas de usuarios que se sienten traicionados. Desde luego es una buena táctica para perder mercado, y alejarse totalmente del sector empresarial. Tarde o temprano, supongo, que deberá soportarlo pues no es que sea una tecnología minoritaria que digamos. Eso si, en vez de eso, Leopard te incluye de serie Ruby y Ruby on Rails, parece ser que no se han enterado que ha muerto.

Ahora mismo me viene a la mente el acuerdo no muy lejano entre Sun y Canonical para la incorporación de paquetes en Ubuntu para el desarrollo de aplicaciones en la plataforma Java. Mmmm… Mac OS X & Ruby VS Ubuntu & Java, mejor no haré comentarios más profundos, que me entra la risa floja.

Ahora si que se puede decir con plenas palabras que OS X es cool que te cagas, pues a todos los desarrolladores de la plataforma Java (el lenguaje más usado actualmente) les impide trabajar. Así te puedes dedicar a oír cosas con el iTunes, mirar tus fotos en el iPhoto y molarte a ti mismo con el iPichas. Cada vez estoy más convencido en pillarme un mac de esos, si me apuras, incluso dos. Con patatas, por favor.

Por cierto, mención especial a este post de un usuario de macs expresando su frustración en forma de código Java, enorme.

Ruby on Rails, ¿se acabó lo que se daba?

Hace 3 años se publicó lo que fue la primera versión de un increíble framework para el desarrollo Web en un lenguaje de script no muy conocido, Ruby. Este framework era Ruby On Rails, y comenzó la revolución.

Desde entonces, en los dos años siguientes el tema de moda en la programación Web era lo cool que era RoR, que molaba mogollón, que era la hostia, que viva la madre que lo parió, y esas cosas. Incluso el año pasado me dio por probarlo a ver si realmente merecía la pena. Después de probar algunas de sus características lo dejé por dos razones, (1) ruby me parece parecía un lenguaje de script apestoso (yo lo veo como una mezcla de ada y perl, los cuales tienen unos puntos de vista totalmente opuestos!, ¡eso no se hace!), (2) ninguna de sus características es algo revolucionario, sí, son curiosas y chocan la primera vez, pero nada que no se puede hacer en otro lenguaje (en una tarde te programas la característica X que necesitas).

Últimamente se ha ido tranquilizando la cosa y apenas se hablaba ya de Rails, o al menos no tanto. Y hace un mes, a raíz de este post, empezaron las críticas sin parar hacia éste. Famosa es ya la historia de Twitter, aplicación escrita en RoR, que cuando alcanzó su éxito y comenzó su uso intensivo, estaba más tiempo caída que online (exagerando las cosas claro, pero era muy lenta y con bastantes caídas) y a partir de ésto se atacaba a rails criticando su falta de eficiencia y escalabilidad.

En mi opinión todo se está exagerando, simplemente la moda de Ruby On Rails ha pasado (2 años creo que es ya más que suficiente), lo cual no quiere decir que vaya a desaparecer, pero posiblemente significa que no crecerá mucho más, y dado que en el ámbito empresarial no es que haya entrado muy fuerte (principalmente debido a una falta de soporte o entidad detrás del framework, a diferencia de, por ejemplo, GWT o apestosas tecnologías Java en general), esto significa que la caída ha comenzado y no hay quien la pare.

Si hace un año hubiese dicho que Rails es una mierda, la gente me hubiese escupido, pegado una paliza, Google no me indexaría, Microsoft me mandaría bindous con cada telepizza y los teletubbies me dedicarían una canción. Ahora, una vez que ha pasado la moda, ya se permite tocar al intocable, y quien quiera, puede decir lo que le plazca. Ves que bien. Por mi parte, cuando tenga que realizar una aplicación Web en el futuro, rails será una de mis últimas primeras opciones, puesto aunque que por alternativas, no será.

Netbeans y compiz fusion

netbeans 6 beta con compiz fusion

Si usas compiz fusion e intentas usar Netbeans te encontrarás con una hermosa ventana sin contenidos. Para solucionar este contratiempo, simplemente edita el ejecutable de netbeans (el cual es un script shell, {DIR_INSTALACIÓN}/bin/netbeans) y añadir donde te de la gana (en algún lugar que se ejecute siempre claro… al principio, por ejemplo) esta línea:

export AWT_TOOLKIT=MToolkit

Let’s code! (esto mismo es aplicable para todas las aplicaciones que usen el, feo de cojones, toolkit AWT para hacer GUIs en Java, no sería mala idea ponerte esa línea en tu ~/.bashrc, y tal)

 

Don’t call us, we’ll call you

No nos llame, nosotros le llamaremos. También conocido como el principio de Hollywood. ¿De qué narices estoy hablando? Es obvio, de uno de los principios de la programación orientada a objetos.

En un sistema se suelen tener diferentes niveles de abstracción, diferentes capas o diferentes subsistemas unos por encima de otros; según el contexto se usaría un termino u otro. Este principio básico nos dice que los niveles superiores (el jefe en Hollywood) llamarán a los de abajo (los actores piltrafilla), pero no en el sentido contrario. No nos llame, nosotros le llamaremos.

Este principio aunque pueda parecer simple es mucho menos obvio de lo que se cree. Un simple hola mundo o derivados ya lo viola, pues un hilo de ejecución se hace cargo del flujo del programa, ahí estamos violando el principio, pues estamos dando la vara llamando a todo Hollywood para que nos dejen actuar. Los ejemplos más claros donde se puede ver cómo se aplica este principio son en los conocidos patrones de diseño Observer, Factory Method, Strategy, y sobretodo, el más evidente, el patrón Template Method. Explicaré brevemente con un ejemplo práctico este último para poder visualizar en él el principio de Hollywood.

Read More …

¡Kimi Raikkonen campeón! ¡Ferrari doblete!

ferrari-kimi-raikonen.jpg¡Yeah, yeah! Kimi Raikkonen se ha proclamado campeón del mundo del campeonato de Formula 1 2007, después de una temporada realmente patética por parte de McLaren intentando convertir la Formula 1 en una prensa rosa alternativa, se ha terminado este año con un doblete de Ferrari, como debe ser.

Kimi es un gran piloto, rozando varias veces el campeonato (2 subcampeonatos), y por fin ha llegado a conseguir su primer campeonato del mundo en su séptimo año en la F1. Recordemos que esta temporada sustituyó a Michael Schumacher en Ferrari, después de estar 5 años en McLaren enfrentándose a la mecánica de su coche y al invencible M.Schumacher, habiendo estado en su año de debut en Sauber.

 
kimi-raikkonen.jpg

Me pone un debugger con patatas, por favor

He leído este post donde un desarrollador que ha asistido a una charla de Jim Weirich (creador de rake) habla sobre los debugger en general y sobre el poco soporte de un debugger en ruby en particular. Parece ser que algunos piensan que no tener soporte para un debugger es una feature:

Asking why Ruby has weak debugger support is like asking why a dolphin doesn’t have gills. Ruby has weak debugger support because Ruby programmers shouldn’t be using a debugger. Ruby supports TDD and BDD better than any other language except possibly Smalltalk. Debugger support is for languages that you can’t run tests against gracefully.

WTF? ¿Un debugger es para lenguajes en los que no se pueden ejecutar tests fácilmente? Una leche. Un debugger es una herramienta para el desarrollo, punto. Si tu lenguaje favorito resulta que no tiene (aunque ruby tiene), no te inventes teorías o intentes convencer al resto de programadores de otros lenguajes (que si tienen debuggers) que tienes razón. En definitiva, no me llores. Lógicamente ha habido muchas respuestas frente a argumentos tan inconsistentes y frágiles, como la estupenda respuesta cuando tus herramientas apestan….

La ausencia de un debugger no es una característica, es una importante y significativa carencia en tus herramientas

También hay que reconocer que usando TDD, o simplemente pruebas, deberíamos anticiparnos y detectar bugs, y un debugger debería de ser innecesario. Pero prefiero tener la opción de poder usar uno cuando quiera, que su carencia. El ansia que es muy mala, cuanto más, mejor, ¿no?.

Actualización Abril 2008: Meses después se podría considerar que hay herramientas más que suficientes como para debuggear aplicaciones ruby con bastante facilidad. No tan bien como lenguajes como C o Java, pero si decéntemente.