Comienza el Agile Open Spain 2010

Hoy viernes 12 de Noviembre, comienza en Barcelona el Agile Open Spain 2010. Donde parece que voy a tener oportunidad de volverme a encontrar con mucha gente conocida; conocer en persona a gente con la que tengo relación vía twitter, por diferentes listas de correo, etc; y seguro que conocer otra mucha gente interesante todavía desconocida para mi.

Agile Open Spain 2010

Es la primera vez que voy a un evento con formato Open Space, la temática Agile me resulta muy interesante(así como otras centradas en tratar de mejorar cosas en el desarrollo de software) y es el evento donde más calentamiento del personal he percibido de los que he asistido hasta ahora. En fin, que tengo ganas de ver que nos encontramos en el evento y en el tan caldeado post-evento :D

Por cierto, que los amigos de Masterbranch me han dado un puñado de pegatinas de su mascota (yo diría que inspirada en Ultraman :P) para repartirlas entre otros asistente. Si alguien quiere la suya, se la voy reservando :)

El Ultraman de Masterbranch

NO a la ley Sinde


Rellena el siguiente formulario

Rellenando el siguiente formulario puedes enviar un mensaje a los diputados/as del congreso español en relación a la aprobación de la Ley Sinde. Escríbeles lo que consideres oportuno pero sé respetuoso, solo de esta manera nuestras peticiones serán escuchadas.

Nombre:
E-mail:
Asunto:
Mensaje:
Más información: Activando esto expresas que deseas recibir información sobre futuras acciones.

Política de Privacidad

xMailer copyleft Isaac Hacksimov 2009-2010, licencia GPLv3, powered by Hacktivistas.net

Instalar gemas en Dreamhost

Estoy haciendo unas pequeñas pruebas con Sinatra para un pequeño proyecto personal. El caso es que al ir a instalar la gema de sinatra(y un par más que estoy usando) en dreamhost, me surgió el error de no tener permisos de escritura.

$ gem install sinatra
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /usr/lib/ruby/gems/1.8 directory.

La solución es simplemente añadir unos exports al .bash_profile


export GEM_HOME="$HOME/.gems"
export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"
export PATH="$HOME/.gems/bin:$PATH"

Y tras ejecutar source .bash_profile para que coja los cambios, ya podemos instalar nuevas gemas.

Sobre el modelo anémico y la POO

Ayer, unas horas después de leer el post de @kinisoftware, Modelos de dominio anémicos, POJOs y demás seres del lugar, me encontré una discusión en twitter a varias bandas(sitio que no es ni mucho menos el mejor para debates así... sigo echando de menos las conversaciones/discusiones que teníamos entre una micro-comunidad en jaiku, pero ese es otro tema) sobre el anti-patrón del modelo anémico.

Hablando del tema vi tuits de @kinisoftware, @albertovilches, @jmbeas, @genezeta, @jneira, @jlhuertas... y fijo que me pierdo a algunos más de gente que no sigo. Como es habitual, yo no me mojé demasiado :P. Por un lado soy un chaquetero, y por otro esta gente sabe mucho y me pueden dejar a la altura del betún en cualquier momento :D

Por resumir un poco esto del modelo anémico, viene a ser que el modelo está implementado con DTOs, cuya única responsabilidad es encapsular datos para transferirlos a otra parte(ej: de una base de datos a la vista de una app). Cosa que creo aún es bastante habitual en muchas aplicaciones que utilizan ORMs o similares(llámense Hibernate, ActiveRecord, GORM, Doctrine, MyBatis... o soluciones home-made)... Pues resulta que eso es un anti-patrón, más que nada porque por hacer eso probablemente estemos rompiendo el paradigma de programación orientada a objetos.

Recuerdo cuando me enseñaban POO(con Java) que una clase Rectangulo tenía un atributo base y otro altura con sus getters y setters y un método calculaArea() que devolvía su área(vale, y probablemente extendería de Poligono :P). Vamos, que se supone que un objeto combina estado y comportamiento, por eso veo por ejemplo hablando una clase de dominio Noticia que tiene un atributo propietario puede tener un método del estilo:

public boolean esPropiedadDe(Usuario usuario){
   return propietario.equals(usuario)
}

La cosa es que en los frameworks MVC ese tipo de lógica la he visto(y sí, también la he puesto! XD) en la capa del controlador, cuando se supone que es una capa que debe ser lo más tonta posible en cuanto a lógica de negocio (o ya puestos, tonta del todo :D, skinny controller-fat model), y con la moda de las capas de servicio con los Spring & co(Grails como una de esas víctimas colaterales) ha resultado que esa lógica se pone en la capa de servicio para evitar ponerla en el controlador y seguir dejando a las clases de dominio como DTOs(o modelos anémicos).

¿Eso quiere decir que siempre pongo la lógica en las clases de dominio?
No, pero procuro hacerlo siempre que puedo identificar responsabilidades en una clase del dominio. Aún así, en ocasiones me encuentro con lógica que pasa a alguna clase en la capa de servicio, principalmente porque no consigo identificar qué clase debería ser la responsable, afecte a varias clases de dominio o simplemente sean comportamientos que no tienen que ver con la lógica de negocio pura y dura. Por supuesto teniendo en cuenta que esas decisiones sean cosa mía :D

De todas formas, ya se sabe que en esto del desarrollo de software todo depende de muchos factores(principalmente de los gustos y costumbres de los desarrolladores) y nadie tiene LA respuesta. Eso es lo que hace más interesante el mundillo, ¿o no? :D

sort()
Viñeta de Geek And Poke, como no ;)

PD: Disculpad que os tengáis que imaginar parte del código y el spanglish rarillo en los ejemplos, el código de verdad hace tiempo que procuro escribirlo siempre en inglés :P

Goza!Hack - Hackmeeting 2010

Copio y pego del blog del hackmeeting

Goza!Hack Hackmeeting 2010

El pasado lunes 18 de octubre el CSO La Vieja Escuela, donde ya se llevaba tiempo planeando el Hackmeeting, encuentro anual de hackers y hacktivistas, fue desalojado de madrugada por la policía. Para sacarnos de allí, aprovecharon los refuerzos policiales llegados desde Barcelona, y la hora a la que los vecinos y vecinas del barrio descansaban después de una semana de las fiestas del Pilar.

El desalojo del pasado lunes 18 de octubre no desmotivó a nadie, sino que nos hizo más fuertes: diferentes colectivos participaron en una manifestación de rechazo, en la que nuestras redes se vieron las caras en la calle. No quieren enterarse de que forzarnos a salir de un lugar no detiene nada: las asociaciones de vecinos, la asamblea okupa y el hacktivismo siguen construyendo alternativas, y cuando necesitamos un lugar, lo encontramos. Salimos de La Vieja Escuela, y ahora nos encerramos en la carcel: hemos abierto las puertas de la Cárcel de República Independiente de Torrero.

No podíamos encontrar un lugar mejor. El barrio está cansado de contemplar este espacio inutilizado, cansado de las hipócritas promesas de ceder el lugar a usos vecinales, cansados de que sus proyectos de uso comunitario y social sean ignoradas por los que sólo prometen como mercancía electoral.

El nuevo espacio liberado está en la Plaza de la Memoria Histórica, aunque parezca que los que nombran las plazas padecen de amnesia. En este lugar cumplió condena todo el que pensaba diferente durante la última dictadura militar. No ubican al azar sus focos de represión. En 1917 levantaron sus rejas en el barrio de las minas de donde salieron las piedras para sus palacios.

Ningún dispositivo de control es eterno, y hoy estrenamos esta cárcel reapropiada para los vecinos con unas jornadas en las que seguir subvirtiendo el uso de la tecnología. La era digital no es sólo el paraíso del consumo que quieren vendernos, es también un escenario de resistencias digitales, de reapropiación y construcción colectiva de alternativas con la tecnología como aliada.

El Hackmeeting ha comenzado hoy, como habíamos prometido.
En estos momentos nos encontramos rehabilitando el espacio a marchas forzadas, es abrumador el trabajo que se está realizando.

No te quedes con la curiosidad, no dejes que te lo cuenten: Ven y arrima el hombro. Ven y contágiate, ven y pregunta.

Las charlas comenzarán en la tarde del viernes 22.

Bienvenidos al goza!hack.
Bienvenidos a la Cárcel de Torrero.

Zaragoza resiste,
República Insurgente de Torrero
21 de octubre de 2010.

Espero escaparme algún rato para pasar por el Goza!Hack este fin de semana, además hay varios nodos(actividades) que me parecen muy interesantes.