April 2, 2008 at 2:49 pm · Filed under Rails, Programacion
Es el primer post que hago de un plugin de Rails, pero estaba viendo la lista de los más usados en Agile Web Development y vi este plugin.
Se trata de un plugin para hacer parecer nuestra aplicación más “empresarial”, uds dirán ¿Qué quiere decir más “empresarial”?. El que hizo el plugin lo define como “que esta haciendo cosas importantes detras de escenas”. Y obtiene esta apariencia tardando más.
En síntesis un plugin para hacer que tu aplicación tarde un poco más en cada request. Muy muy útil… :s
October 13, 2007 at 3:59 pm · Filed under Economia y Politica, Programacion
[Este post surgió por una larga discusión que se esta dando en la lista de Ruby Argentina acerca del Software de Código Abierto.
Para los que no participan de esta lista de correo, les cuento que esta discusión surgió a partir de una situación bastante fea que ocurrió en Cafelug 2007 en Buenos Aires. En ella se presentaron argumentos de ambos bandos (los del “software libre”, y los de el software comercial).]
Debido a que no quiero meterme directo en esa discusión y por otro lado si plantear una visión alternativa y, espero, enriquecedora sobre el tema, quiero hablar sobre un tema planteado desde mi punto de casi economista. Este tema son los bienes públicos y las fallas de mercado.
Primero debemos saber de que estamos hablando. ¿Qué es un bien público? Un bien público puro puede definirse como aquel que produce efectos sobre quienes no han participado en la transacción. O sea, la Comunidad Europea emite una resolución haciendo una fuerza para cuidar el medio ambiente y todo el mundo se beneficia, hasta sin enterarse.
Para definir un bien público se usan dos criterios el de “no rivalidad” y “no exclusión”. La no rivalidad implica que un consumidor del bien no le saque provecho a otro potencial consumidor. Por ejemplo si me como la última porción de torta que tengo en la heladera mi mujer me mata.
La no exclusión dice que no se pueda diferenciar entre un consumidor y otro, cobrándole a uno y prohibiendo al otro de su uso, en su forma más común. Imagínense si a las plazas se dejaran entrar solo las personas que pagan tal impuesto, se puede pero flor de complicación.
Aquél bien público puro cumple con estas dos condiciones estrictamente. Hay otros bienes, como la plaza, que si bien podría considerarse que hay rivalidad y que podría llevarse a cabo la exclusión por una cuestión de costos o incentivos no se hace. Esos casos son los más comunes como ser las calles, plazas, (ejemplo típico) fuegos artificiales, etc.
Todos los bienes públicos (puros y no tanto) generan fallas de mercado, yo no me voy a comprar un ejército para defender al país, primero porque es carísimo y segundo que lo haga el de al lado!. En estos casos lo que sucede es que el Estado actúa en su rol paternalista y nos saca a todos un poco para cubrir la necesidad de todos los habitantes y mantener estos bienes que tanto usamos o que tanto usan otros (yo no voy a la plaza hace rato). Igualmente algunos privados tienen intereses creados en proveer bienes públicos a pesar de que el Estado lo provea.
Todo este chiste viene al tema del software como ya se imaginaran. El software es un bien público ya que no hay rivalidad en su consumo si Pepe me pasa su CD de el Sistema Operativo Puertas 2008 y me lo instalo a Pepe no le pasa nada. Y la exclusión es bastante complicada más hoy en día con este sistema nuevo que escuche por ahí de Internet en donde las cosas parecen fluir en complicidad con unos muchachos muy malos que se la pasan subiendo cosas para que la gente también mala las use sin pagar.
La respuesta desde la economía es el Estado tiene que proveer este bien público, y en caso de no estar capacitado permitir una solución mediante la cuál se permita la exclusión así se generan incentivos en el sector privado para la producción de este bien.
Esta solución, como saben, son las licencias. Tanto el software de código cerrado como el software de código abierto utilizan estas licencias que existen de diversos tipos con diversas responsabilidades tanto para el autor como para el consumidor.
Dicho sea de paso, tanto interviene el Estado en este papel que una de las principales licencias de software de código abierto fue creada por el MIT bajo la cual se distribuyen la mayoría del código académico, y a decir verdad, la mayoría del software libre.
En lo personal me parece muy mal calificar al software como “libre” o “privativo” ya que ambos tienen sus libertades y sus prohibiciones, y el hecho de que estas prohibiciones existan hacen que los autores tengan un incentivo a crearlo, y de hecho, a mi parecer, el mejor software es en general el de código cerrado con licencias comerciales ya que permite a los autores contar con mayores recursos y generar la mejor calidad. Es verdad que hay montones de excepciones y montones de grises en colaboraciones entre ambos sectores, pero al fin esa es mi opinión.
En síntesis creo que el software de código abierto existe por incentivos de sus creadores distintos del comercial (o por lo menos de la comercialización de esa distribución que están entregando) y que esta bien que así se haga ya que es bueno para toda la comunidad creadora de software compartir el código y poder contribuir a él. Pero también es muy importante la creación de software de código cerrado ya que este permite que se invierta mucho más capital en su creación y se obtenga una pieza con una consistencia y robustez mayor.
September 5, 2007 at 10:23 pm · Filed under Programacion
Por si no es de tu conocimiento yo soy programador y bastante fanatico de Ruby on Rails. Intento desarrollar toda aplicación en la que trabajo en esa combinación de lenguaje + framework, y a decir verdad, me ha dado bastantes oportunidades.
Cada vez surgen más y más proyectos en esta plataforma y supongo que si estas leyendo esto es porque estas interesado en el tema.
Al ser uno de mis primeros posts queria transmitir una cosa bien sencilla y bien importante acerca de mi experiencia, y la de algunos otros también, en la programación y, en particular, la de proyectos grandes y crecientes.
Como se imaginaran, ya que el título lo dice, el tema viene por el lado de los tests. Yo se que todo el mundo dice que hay que hacer tests pero he encontrado muchos que predican acerca de estoy y no lo practican.
Si tenes en desarrollo una aplicación en Rails, o en otra plataforma en la que se puedan realizar Automated Tests, y tenes aunque sea la remota esperanza de que la aplicación crezca deberias hacer tests, de todos los tipos, y en lo posible muchos, que sean lo más extensivos posibles.
Porqué hacerlos? Por que al hacerlos, y correrlos, vas a tener la garantía de que tu código tiene menos errores, probablemente haya algunos pero menos. Y también sirven para cuando uno trabaja en código viejo o en el de otra persona ya que si uno cambia algo y los tests presentan fallas hay algo que se encuentra fuera de lugar.
Ahora como se que no vas a ir a correr a hacer test lo que te sugiero es que aunque sea hagas que el código se ejecute (léase ‘get :index’ en vez de assert true), con esto vas a lograr que si hay algun error bien sencillo que ni siquiera deja compilar el código lo vas a poder arreglar.
Por otro lado como hay muchas veces que uno esta confiado, o se olvida, o pasa alguna cosa de emergencia que uno hace todo apurado, es bueno agregar un script que corra los tests siempre que uno le hace commit al subversion o deploy a capistrano. En la red hay algunos hechos y seguro que se encuentran como plugins o cosas por el estilo.
El sistema que elijan queda a su placer sea BDD, TDD, o HLQSMCET (hago lo que se me canta en tests) esta bien y es bueno.