Phusion Passenger (a.k.a. mod_rails)

Finalmente hoy leo que ya está disponible la primer versión estable de mod_rails, y si todo anda como dicen, no más problemas con fcgi o mod_balancer + mongrels. Simplemente deploy a la PHP. Será posible?

Ventaja inmensa cuando se tiene más de un sitio en el mismo host. Hoy en día (apacha+mongrel) debo recordar y documentar que rango de puertos usa cada aplicación (son 3 por ahora) y al hacer los updates tener que restartear N procesos diferentes y cosas así.

Voy a ponerlo en los servers de testing del trabajo a ver como se porta y si todo sale bien pasarlo a producción :).

WP Update y Nuevo estilo

Hoy por fin tuve tiempo de actualizar el WP a la última versión estable. Principalmente me interesaba ver el nuevo admin panel, que la verdad es que hicieron un laburo terrible para dejarlo 10 puntos, y ahora tengo nuevas cosas para copiar en el proyecto en el que trabajo :).

De paso, y para aprovechar nuevos features, tomé del sitio de temas de WP uno que mas o menos me gustó para arrancar, después veré si tengo el tiempo para ponerlo a punto.

Creo que rompé encodings en los posts viejor (ahora tengo por default UTF-8), si tengo ganas y tiempo veré de arreglarlo :-D.

Twisterss!!!!!

No es «el día despues de mañana», no, tampoco esa película mala sobre tornados, y mucho menos un F5, F4 o simular, son simplemente dos remolinitos de porquería, pero bueno, al fin podemos decir que tenemos algo más en común con el primer mundo :).

Fotos «prestadas» por Clarin :

tromba3.jpgtromba4.jpgtromba.jpg

Ponele un nombre a tu punta de pruebas!

Y si, algún día se iba a dar, y que mejor día que «San Valentín» para demostrarle todo tu amor a tu proyecto favorito 😀 ?. A partir de hoy se le pueden poner nombres a las puntas de pruebas. Nada de adivinar quién es v(1), quién v(2); solo poné «In«, «Out«, y listo!!!

La verdad que no fue trivial ya que en donde necesitaba los nombres ya se había perdido el contexto del Schematic y solo tenía la información que da el Engine (y no soporta cosas lindas como v(1) AS MiNombre, tipo SQL :-P), pero haciendo un par de pases mágicos de punteros entre estructuras, quedó andando. Lo único feo feo feo, es que hay que acordarse que «el último apaga la luz«, que en este caso es liberar la lista de nombre, pero ya veré como mejorarlo más adelante.

Seguro explota en muchos casos, puede fallar :), pero la idea está y abre la puerta a un refactoring (otra vez!!!) del Engine System para ser «Context Aware» del Schematic que se esté simulando.

Espero hacer en estos días cuando complete el soporte para NgSpice, ya que por ahora solo anda con GNUCap.

El screenshot :

Puntas de Pruebas con nombre en oregano

Programando Rails con GEdit

Luego de buscar y buscar opciones para hacer el día a día programando en Ruby on Rails decidí quedarme con GEdit, por sobre mis otras opciones : Aptana Studio, vim+rails.vim, jedit.

Tanto jEdit como Aptana están escritos en Java, por lo que tienen todo lo malo de la JVM corriendo atrás y la verdad que molestaban más de lo que ayudaban. Aptana es un lindo plugin para Eclipse, pero no pienso actualizar la PC solo para poder sacarle el juego :).

Por el lado de vim, por primera vez que yo recuerde, queda chico. Esta muy bien para tocar 3 o 4 boludeces de vez en cuando. Pero para desarrollar a diario se me hace un martirio. El auto-complete de helpers, por decir algo, es super incomodo y yo lo quiero con un simple Tab :). No encontré si tiene la opción de Code Snippets.

Tengo que admitir que mi primer reacción fue : Quiero TextMate en Linux!. Quienes hayan usado TextMate lo entenderán, quienes nunca lo usaron, es como aquellos que no entiende como con un solo botón alcanza para hacer todo :). No vale la pena explicarlo.

No tuve que buscar demasiado la verdad y encontré varias fuentes para configurar GEdit de manera que quede suficientemente cómodo (como estaba acostumbrado con TextMate) para trabajar todos los días. El resultado :

GEdit en modo TextMate

GEdit es una de esas cosas que siempre fue «el editor pedorro ese que viene con GNOME». Me sorprendió que se porte tan bien con varios plugins andando. Esperemos que a la larga no termine siendo un fracaso :).

Dell SP2008WFP

Ya era hora. Luego de 10 años de uso le di un descanso a mi tan amado monitor Sony de 15″, y ya que lo iba a reemplazar, me gaste unos mangos :).

El cambio se nota muuucho :), este monitor Dell de 20 pulgadas es realmente muy bueno y viene con cámara incorporada de 2 megapixels, una ganga. Lo mejor de todo es que la camara esta soportada en Linux por el módulo uvcvideo (emerge -va linux-uvc en Gentoo) y amsn la sacó andando de toque.

En resolución no cambió demasiado. Pasé de usar 1280×1024 a 1680×1050. Donde se nota la diferencia es cuando la gente viene y dice «ahora se puede leer!!» … malditos miopes :P.

Abriendo diferentes programas para «experimentar» lo que es tener un Wide, me di cuenta que Eclipse a esta resolución es usable :). Solo me faltaría algo así como 1 GB de RAM (solo tengo 1 :S) para decir que es el mejor IDE del planeta :D.

Hitman: Agent 47

Hitman: Agent 47Ayer fui al preestreno (a.k.a Avant Premiere) de la película basada en los juegos Hitman, invitado por Speedy. El overall siendo generoso, es un 5/10.

El actor no está mal, un poco duro para mi gusto, aunque bueno, tiene que imitar a un mesh 3D :P, fuera de chiste, yo prefería a Jason Statham para el panel, ya que la primera vez que vi The Transporter, pense en «uh, este es como Hitman!».

La película me resulto muy corta. Si no hice mal mis matemáticas fue una hora y media. Ahora, o estaba cortada o no daba para más :).

En general esta bien cuidado el personaje, salvo en un par de lugares donde sonríe frente a algún chiste de su co-star Olga Kurylenko (si, si, lo tuve que buscar). Desde cuando un super asesino sonríe ?!! 🙂

Las escenas de accion estan bien, no se me ocurre ahora criticarles mucho más de que duran como 30 segundos cada una. Como buen asesino que es, lo hace todo rápido y no deja nadie de pié :). Podrían haberlas hecho en slowmotion para que duren más !!.

El personaje da para hacer buenas películas y espero que estén pensando en hacer una segunda un poco mejor. Seguramente habrá que esperar un rato

/ URLs / Lindas / Con / Rails

Unos de los proyectos actuales en los que trabajo es un portal hecho en Ruby on Rails y tenía que mostrar el nombre de la seccion y subseccion en las URLs. La primer versión fue usar las rutas anidades que se incluyen en Rails 2.0 como sigue :

map.resources :sections do |section|
  section.resources :subsections do |subsec|
    subsec.resources :articles
  end
end

Sin embargo para Rails eso no son URls tan lindas como me (nos?) gustaría. Un ejemplo que daría la llamada a section_subsection_article_url sería : /sections/1/subsections/2/article/4, nada cómodo para alguien que quiere entrar a /sections/deportes/notas/yyyyy.

La solución llegó, en parte, al encontrar el plugin resource_hacks, que nos permite agregar un member_path a mano el cual Rails utilizaría para armar las rutas. Con el plugin instalado nuestro ejemplo anterior quedaría como :

map.resources :sections, :member_path => 'sections/:section' do |section|
  section.resources :subsections, :member_path => 'sections/:section/:subsection' do |subsec|
    subsec.resources :articles, :member_path =>; 'sections/:section/:subsection/:permalink'
  end
end

Y ahora si, si entramos a /sections/deportes/ veremos la portada del sitio de Deportes.

Este requerimiento era «importante» ya que el cliente quere manejar en forma dinámica el sitio. No todas las secciones tienen las mismas subsecciones y demás yerbas.

Una vez que tuve todo eso andando, mi problema fue que los helpers _url y _path dejaron de andar alegando que los parametros de entrada no concordaban con lo esperado.

Lo primero que encontré luego de un par de dias de buscar fue que había que redefinir el mítodo to_param de los modelos para que retornen el string que quería mostrar en la URL, ya que por default retornan el id del objeto. Sin embargo esto no alcanzó. La solución llegó cuando se me ocurrió pasar un string a mano con el parámetro :id a los helpers y todo mágicamente empezó a funcionar.

En lugar de :


Llamar a :

 "1") %>

Y todo va de pelos. No se si es un comportamiento esperado, o si los helpers con este hack no serían válidos, pero esto anda al menos hasta ahora. Si a alguien se le ocurre por qué puede pasar esto o alguna mejor solución, será bienvenido 🙂

En los controladores ahora debemos hacer las búsquedas por los strings que nos llegan mas el permalink del artículo, en lugar de utilizar el find por ID, por lo que es altamente recomendable agregar índices en las tablas :). Hay otras tantas optimizaciones que hacer, pero en general, la cosa funciona.

Life++

Hace mucho que no posteo nada (y hace más que no posteo nada interesante, pero eso va a seguir así :D), por lo que decidí tomarme un rato para hacer un update de mi vida.

Para empezar entré en mi ultimo año «vienti», si, si, 29, llegue vivo al menos por ahora 😀 y espero seguir atormentando muchos años más. Este cumple tuve la suerte de poder festejarlo con mis amigos de Cipolletti, con quienes hace casi 10 años que no festejaba un cumpleaños debido a la distancia que nos separa, así que creo que fue un festejo bien merecido para ir dejando la década de «los 20». El mismo día también festejamos la despedida de soltero de Jorgelote lo que potenció el festejo haciéndolo inolvidable :).

Por el lado laboral ya desde hace unos meses que puse junto con mis socios en marcha nuestro nuevo proyecto : entrar en la industria de los juegos. El camino para llegar a un AAA va a ser largo y vamos a tener que pasar por varios filtros (económicos principalmente :D) pero creo que vamos por buen camino y de a poco vamos creciendo en cantidad y complejidad de proyectos. Es por eso que les presento Hype Parama.

Actualmente estamos desarrollando principalmente juegos web utilizando Flash y Ruby on Rails para la parte web, pero ya están en marcha proyectos para utilizar otras tecnologías (si, si, algunas son privativas también, todo no se puede :).

Lamentablemente el Portfolio está super desactualizado y no hemos tenido tiempo de subir los demos que tenemos preparados. El contenido también quedó un poco desactualizado y espero tener tiempo de actualizarlo antes de fin de año ya que varias secciones fueron reescritas para ser más fieles a nuestros objetivos que se redefinen constantemente.

Oregano, que decir de Oregano? … Tengo muchos bugs que arreglar y muy pocas ganas/tiempo de hacerlo. Estoy jugando con un hack que hice hace un tiempo para integrar Emu51 a Oregano de manera de poder probar assembler para el 8051 y ejecutarlo de corrido o step-by-step y ver como se comporta. Está a medio camino pero por ahora no se cuelga todo el programa :). No esperen que vea la luz hasta mediados del 2009, como muy pronto.

El último punto, y no por eso el menos significativo, es que estoy a un pasito nomás de poder terminar la facultad, si, si, para Ripley («aunque Ud. no lo crea», por si hay algún colgado que no sabe de lo que hablo :P). Tengo que pasar un examen que me está dando dolores de cabeza y eso es toooodo. Crucen los dedos por mi :).