jump to navigation

Nuevo escaparate en Reus February 28, 2008

Posted by Bosco in : escaparates , 2comments

Eva Perlado y Yolanda Sanjurjo hicieron este nuevo escaparate para la tienda Pasoca en Reus. Es una boutique de ropa, multimarca pero selecta, y les ha quedado así de moderna.

Escaparate Pasoca Reus 1 Escaparate Pasoca Reus 2

Decidieron hacer estas líneas de colores verticales, de diferentes grosores para romper con el blanco del fondo y darle dinamismo y alegría al escaparate. Además colocaron las estanterías para poder mostrar más producto. Para acompañar al producto, utilizaron unas botellas de cristal con un look antiguo y llenas con agua coloreada.

Los maniquíes también los maquearon un poco. Pusieron pelucas rubias cardadas a las chicas y unas pestañas sensuales, y a los chicos les vistieron con un toque más radical.

El resultado, excelente.


Otra vez con Django February 27, 2008

Posted by Bosco in : django/python, programación , 7comments

Simplemente comentar que le estoy dando duro con Django, el framework de productividad de Python, y me está flipando. Breves pinceladas:

Como IDE utilizo Eclipse 3.3 + PyDev, bastante completo. La gran pregunta, RoR o Django? No lo sé, los dos son muy buenos, supongo que dependerá del proyecto. Pero ambas son alternativas válidas. Las dos escalan, tienen una gran comunidad detras, están muy documentados y tienen todos los plugins que puedas necesitar.

Seguiremos diciendo que Java es la única alternativa válida?

Ecosistema NexOpen February 24, 2008

Posted by Bosco in : nexopen , 1 comment so far

Ayer estuve repasando todas las aplicaciones adicionales que usamos para que NexOpen sea realidad, y poco a poco hemos ido construyendo un ecosistema interesante. Ahí va la lista:

  1. Sourceforge. En primer lugar, SourceForge, que es el hosting principal de nuestro proyecto. Además de ofrecernos el alojamiento de la web del proyecto (hecha con wordpress), tenemos alojada también el javadoc de la API, el servidor de SVN, las releases (con sus respectivos mirrors) y los foros del proyecto.
  2. JIRA. Tenemos nuestro JIRA en el que reportamos las incidencias tanto del framework, de las Tools, y ahora, como novedad, la consola de servicios! Tenemos más de 100 incidencias registradas (somos humanos), y casi todas resueltas (somos unas máquinas)!
  3.  Confluence.  La wiki del proyecto. Toneladas de información y muchas ideas para avanzar. Imprescindible darse una vuelta por ahí.
  4.  Bamboo. Bamboo es un Continuous Integration Server, de la gente de Jira y confluence, que permite monitorizar el correcto desarrollo del server, ya que con su integración en el SVN valida que el código sea siempre correcto (o al menos que compile y ejecute los unit tests!)
  5. FishEye. Otra aplicación de Atlassian. Permite navegar de una forma más rica por el SVN del proyecto
  6. Continuum. El servidor de Continuous Integration de Apache. Lo teníamos antes que Bamboo, pero lo seguimos manteniendo por ahora para los proyectos de ejemplo, tutoriales del frwk..
  7. Artifactory. Un servidor de los .jars, mojos y archetypes del proyecto, para su uso desde Maven. De esta forma te evitas tener que bajarte las releases a tu disco. Apunta a este server, y maven se sincronizará. (Lee esto para saber cómo)
  8. Eclipse Update Site. Un pequeño update site para bajarte las Tools de NexOpen a tu Eclipse personal! (Explicación aquí)

Lo que empezó como un proyecto pequeño se está convirtiendo en algo muy serio. La calidad en el desarrollo siempre fue una de las directivas de NexOpen, y para dar ejemplo, usamos toda esta lista de herramientas para intentar que tú, Desarrollador, te sientas confortable y seguro trabajando con NexOpen.

Enjoy!

RoR no escala? February 18, 2008

Posted by Bosco in : django/python, programación , 4comments

Parece que hay un rumor muy extendido por la red diciendo que RoR no escala. Por qué? Quién dice eso? En primer lugar se habla del caso de Twitter, que está hehco con RoR y se cae más que una manzana madura. Por otro lado, está la potente maquinaria de Sun/Java haciendo un FUD contra estos nuevos lenguajes. Que solo Java escala, y tal.

Pues bien, en primer lugar, lo de Twitter es un error de arquitectura y un problema de BBDD, que nada tiene que ver con el lenguaje elegido. El contenido de twitter es muy dificilmente cacheable, por lo que el uso de la BBDD es intensivo. En este artículo explica muy bien porqué Twitter sufre tanto, y ofrece una solución (no se si es la solución que implementaron o solo una propuesta).

Lo segundo, el FUD de Sun (aunque también de los phperos), continuamente oimos que cualquier cosa que no sea Java (o php, según quién lo diga) no puede escalar. Porque solo java tiene la tecnología de clusters y bla, bla, bla.

Pues bien, es mentira podrida. En primer lugar, montar un cluster J2EE no es en absoluto trivial (aunque en NexOpen ofrecemos una alternativa bastante viable). El coste suele ser muy elevado, requiriendo utilizar EJBs, y no todo el mundo sabe cómo. Por otro lado, he conocido muchos casos donde la solución está en poner varias máquinas y una balanceador de carga por delante… Entonces, el cluster para qué? Y lo que es más grave, si esa es la solución más habitual, qué tiene Java que no tenga RoR?

La solución más habitual en soluciones escalables, y que propone tanto RoR como Python (y supongo que PHP), es utilizar una arquitectura “share nothing“. Es bien sencillo. Creas la aplicación tal y como lo harías para un único servidor, con la única pega de que no puedes acceder a recursos propios de la máquina, por ejemplo el disco (en un entorno EJB tampoco) o a la Session! Esto último si que puede parecer un poco radical, pero podemos respaldar toda la información que tuviera que ir en la session replicádola en la Request, o si no persistiéndola (más adelante explico este punto)!! Cuando tengas tu aplicación funcionando en un servidor, puedes replicarla n veces en n instacias (por ejemplo, en mongreils) y puedes poner tantas máquinas como quieras. Solamente falta que le añadas un Balanceador de carga por delante, y tendrás una aplicación que escalará todo lo que pueda tu presupuesto. Recuerda que el hierro es mucho más barato que el coste de un Arquitecto Senior J2EE, y encima no se queja!

Lo de persistir la sessión… Puede resultar muy caro tener que hacer un insert por cada request. Para esto, y porque acceder a BBDD suele ser el principal cuello de botella de cualquier aplicación, existen componentes del tipo memcached. Puedes dedicar un máquina (o un trozo) a cachear todo lo que entra y sale de la BBDD, acelerando las queries más habituales, y teniendo la sessión “persistida” sin apenas penalización.

Pues eso, esta solución es perfectamente aplicable a RoR, Python, PHP, Perl incluso Java. He trabajado muchos años en Java y puedo afirmar que los clusters son una solución muy potente. Pero también afirmo que su coste es demasiado elevado para muchas aplicaciones. Abre la mente y entra en el mundo fascinante de los lenguajes dinámicos y del “share nothing”. Leed este interesante artículo que explica todo lo que yo he dicho, y mucho mejor, con un caso real.

Be water, my friend.

Los piratas de Silicon Valley February 17, 2008

Posted by Bosco in : tech , add a comment

Curiosa película (link a Google Video) que ví el otro día, sobre los comienzos de Microsoft y Apple Computers. En la peli (de 1999)  se ve como Bill Gates y Steve Ballmer (que aparece como un subnormal) son como son, animales de negocios sin escrupulos y que el software solo es una excusa para hacer dinero, pero lo que me sorprende es la imagen del otro lado, de Apple, donde Steve Jobs aparece como el mismísimo demonio, y Steve Woz, como si fuera tonto del culo.

No niego que Jobs fuera así de malo, lo que me sorprende es que hoy se le trate como a un semidios, y encima que haga discursos tan increibles como el famoso de Stanford (link a Google Video, VOSE) cuando su pasado es completamente diferente. En fin, estoy muy contento de haberme decantado por Linux y pasar de esos 2 monstruos. (habrá alguna película mostrando a Linus Torvalds como un descerebrado?)

La peli es entretenida, se enfoca más en la relación entre Jobs y Gates, muy poco sobre tecnología. Es un pelín superficial y te deja un poco con las ganas de saber un poco más sobre Woz (no me creo que fuera tan tonto), pero está bien. Recomendable para Geeks.

Buceo en el Furió d’Aigua Gelida February 17, 2008

Posted by Bosco in : buceo , add a comment

Ayer sábado hice mi primera inmersión del 2008. Fuimos al Barracuda de LLanfranc, eramos poquitos como suele pasar en Invierno, pero llenamos el barco con gente de otros clubs. No hacía demasiada mala mar pero solo fuimos hasta el Furió d’Aigua Gelida. Ayer además estrenaba mi supre traje, un Seac Sub Pure Flex de 2 piezas, el de abajo mixto con partes de 5 y 7mm, y el de arriba de 5 mm. Además el traje tiene doble mangitos en las extremidades y en el cuello, y cremallera estanca. Casi un semiseco, pero flexible y cómodo como un húmedo. Me lo compré en Andorra, en Viladomat Sports, por 200€, una ganga.

El agua estaba a 13 grados, y se notaba el frio, pero con el traje la verdad lo aguanté bastante bien. Estuvimos cerca del furió, navegamos por lo cañones y finalmente por la grutilla. Fue una inmersión cortita, de 40 minutos, pero muy agradable y tranquila.  Perfecto para una mañana de sábado de invierno!

Fecha: 16/02/08
Lugar: Furió d’Aigua Gelida (Llafranc)
Centro buceo: Barracuda (Llafranc)
Tiempo de fondo: 40 min
Profundidad máxima: 25 metros
Visibilidad: 15 m
Temperatura Agua: 13 grados (frío)
Neopreno: semiseco dos piezas (7+5), con capucha
Plomos: 10 kg (demasiado)
Botella: Aire 15l
Atms al salir: 80
Estado del mar: Con olas, pero poco mar de fondo.

Programming Collective Intelligence February 14, 2008

Posted by Bosco in : programación, recommenders, web2.0 , add a comment

He empezado a leerme el libro de Toby Segaran “Programming Collective Intelligence” que es un pequeño compendio de algoritmos para poder extraer conclusiones inteligentes a partir de datos generados por los usuarios, por ejemplo, una red social. Es un libro super interesante, muy directo, y con ejemplos muy explicativos. Cubre temas super intesantes, desde sitemas de recomendaciones a búsquedas de palabras al modo google (programando una versión de PageRank).

El libro te hace pensar, y te quedas con las ganas de debatir alternativas, soluciones… Por eso he creado un grupo en Google Groups en caso de que haya más gente rara como yo… Pues eso, muy recomendable.

Adios java February 10, 2008

Posted by Bosco in : blog, programación , 7comments

He cambiado el subtítulo de mi blog a “Adios java”. Y es que lo que he visto estas últimas semanas ha hecho que me replantee muchas cosas. Por qué java para todo? Es java el cobol de los 90? Es una pregunta muy tópica que sale en diversos foros cada x meses. No, seguro que java todavía le queda mucho recorrido, y tiene un nicho de mercado muy importante donde es necesario. Pero para muchísimos proyectos, sobre todo para los proyectos web… java? No, gracias, es demasiado costoso. No me interesa.

Y pensar que hace menos de un mes me saqué la certificación de programador java. Uffff!!

Django February 10, 2008

Posted by Bosco in : django/python, programación , 1 comment so far

Ya dije que soy procrastinador nato y no termino nada de lo que empiezo… En fin, que el otro día descubrí Django a través del blog de rgalli que podría ser algo así como un Python On Rails (seguro que los pythoneros me odiarán por llamarlo así). Y nada, ya que estoy a la búsqueda de nuevos lenguajes y frameworks, y encima que hay tanto hype sobre python, no pude evitar probarlo. Qué me parece? Pues algo fantástico, cuanto más pruebo estos frameworks (grails, ror, django) más reniego de java!

De todas formas Django me está pareciendo más duro que RoR. Me costó un pelín arrancar, ya que se supone que requiere el mod_python 3.x para apache y no lo encontraba… Resulta que al final viene con su propio server de desarrollo y no lo he necesitado todavía. Después me puse a seguir el tutorial de la web de Django, está muy bien escrito y facil de seguir. Y el módulo (aplicación) de Admin, que viene por defecto con Django es de flipar.

Cuando me puse a tocar código python busqué un IDE. Me leí varios reviews y al final me decanté por OpenKomodo. Pero no termina de convencerme, sobre todo porque hay que usar a la vez consola, e incluso gedit para los templates, ya que no están en la misma carpeta del proyecto…

Por último, he llegado al capítulo 4 del tutorial y me he aburrido, y como buen procrastinador me he puesto escribir este post en vez de terminarlo!

La conclusión superficial, Django tiene muy buena pinta, todo lo bueno de RoR, y encima la potencia de python. Me lo guardo para futuros proyectos, seguro que lo valoro. Pero ahora mismo no me apetece seguir profundizando, tengo la cabeza como un bombo con los múltiples threads que tengo abiertos: RoR, escalabilidad, performance, inteligencia colectiva…

RoR rocks February 9, 2008

Posted by Bosco in : programación , add a comment

Ayer en un par de horitas que tenía sueltas a la tarde me volví a poner con mi protoproyecto del Amigo Invisible en RoR. La semana pasada lo dejé fully-functional pero sin captcha ni i18n. Pues bien, ayer volví a intentar lo del captcha.

Existe unas librerías genéricas de Linux (y windows?, ni idea) que se llaman ImageMagick. Hay un plugin para RoR Simple Captcha de Expressica que utiliza este ImageMagick para crear los captchas. El pequeño problema es que se necesita ImageMagick 6.3 y en Ubuntu por

simple_captcha

defecto viene la 6.2. La instalacion de la 6.3 es un pelín lenta, y me falló la primera vez, pero una vez instalada, el uso del plugin es espectacular. Más fácil imposible, y el resultado mucho mejor que el jCaptcha (la imagen de al lado). Recomiendo ver el tutorial para tener una visión completa.

Mientras instalaba el ImageMagick, que insisto tarda unos 20 minutos o así (hay que recompilarlo), me puse a investigar la i18n (o l10n) . Descubrí gettext, que, otra vez, es una utilidad de linux. Con gettext y el plugin de gettext para RoR simplemente debes señalar en el código, o en tus htmls, o donde sea, qué frases deben ser 18n-adas. Pero a diferencia de los tags típicos de java, no tienes que usar claves para despúes referenciarlas en ficheros .properties. Aquí directamente escribes en castellano, en inglés o en arameo el mensaje que va en tu web. Y la herramienta gettext se encarga de identificar todas estas frases y incluirlas en el fichero .po para que las traduzcas! Aquí va un tutorial, que dice que es para Rails 1.2, pero a mime ha funcionado para Rails 2.0

Un ejemplo vale más que mil palabras:
En el controller, identifico el string a traducir con la sintaxis _(string)

flash[:resultado] = _(’El captcha es erroneo’)

Esto me genera un fichero .po, que en el caso del inglés diría esto:

#: app/controllers/sorteo_wizard_controller.rb:58
msgid "El captcha es erroneo"
msgstr "captcha is wrong"

En definitiva, lo que en java supone una arquitectura más o menos compleja, un montón de líneas de código, y métodos para acceder a los bundles, en RoR se hace casi transparentemente. Si en java tardarías un día en preparar todo esto, en RoR se hace en media hora? Y lo del captcha, lo que me costó aprender a utilizar el jCaptcha, que incluso tuve que rehacer parte de la documentación del proyecto del jCaptcha, aquí es inmediato!

La productividad en RoR es muchísimo mayor que con java, no hay color. Las siguientes pruebas que haré serán de performance y uso de resources. Ojalá vayan bien, aunque hay gente que dice que no…