May 11, 2012
Virtualización es un concepto que “está de moda”, pues es un término de moda junto al concepto de consolidación, que ha encontrado tierra fertil en los recursos de CPU y memoria que cuentan los equipos actuales. No obstante ello, virtualización es un concepto que se remonta a los orígenes de la computación, cuando los recursos eran escasos (para los estándares actuales) y más aún, existen diferentes paradigmas para virtualizar que traerán mejoras a la hora de implantar soluciones. Conocerlos y aplicar la solución adecuada a nuestras necesidades es lo que es lo que busca esta presentación. Bajo licenciamiento de Software Libre se desarrollan varios software que atienden a uno u otro paradigma, de forma que el administador del datacenter puede optar entre varias soluciones. Y lo mejor de todo, puede ser el puntapié inicial para llevar nuestro datacenter a una infraestructura de nube…. si, también con herramientas de Software Libre.
Público Objetivo: Administradores de centros de datos, gerentes en el área de tecnologías de la información, técnicos en informática.
Requisitos: Conocimiento en redes, sistemas operativos.
Conferencia dictada en:
- 11 may 2012 – Avanza 2012 – Complejo torre de las Comunicaciones, Montevideo, Uruguay
by rodolfo at May 11, 2012 05:26 PM
May 10, 2012
El software encuentra protección legal en la legislación sobre Derechos de Autor, lo que convierte al software en una obra para la Ley, y no es producto, como se suele tratar en el mercado. El software como obra tiene algunas características que lo hacen particular frente a otras obras que también están protegidas por Derechos de Autor. Mientras la Ley otorga protección, el Licenciamiento define las particulares condiciones en que una obra sale del dominio del autor, para llegar al dominio del consumidor, del usuario. Las particulares características del software como obra producen concecuencias directas en el usuario cuando éste adquiere distintos tipos de licenciamiento. Por otro lado, la creatividad como actividad humana encuentra un incentivo en esas condiciones que quedan limitadas por la Ley y los Licenciamientos.
Público Objetivo: Personas vinculadas con los Derechos de Autor (autores, distribuidores, editores, etc.), abogados, desarrolladores de software, distribuidores de software, tomadores de decisión para incorporación de software. Futuros desarrolladores o ingenieros de software.
Requisitos: No.
Conferencia dictada en:
- 10 may 2012 – Avanza 2012 – Complejo torre de las Comunicaciones, Montevideo, Uruguay
by rodolfo at May 10, 2012 05:23 PM

Durante los días 9, 10 y 11 de mayo se realiza el evento Avanza2012, Conferencia Internacional de Software Libre y Código Abierto en el centro de exposiciones de ANTEL.
En el evento estaré presentando dos temáticas:
El evento está organizado por Antel, la empresa estatal de comunicaciones, lo que a mi entender le da una relevancia importante, pues es la primera vez que un organismo estatal encara un evento de Software Libre.
Personalmente me permitirá volverme a encontrar Maddog y otros amigos y conocer a más gente que le pone el hombro a esto del Software Libre, de todos los cuales siempre aprendo.
Dejo algunos enlaces a videos:


by rodolfo at May 10, 2012 01:47 PM
May 07, 2012

Agenda
El mes de mayo viene lleno de eventos interesantes en Montevideo, así que la agenda está bastante completita:
Meetups
En primer lugar tenemos esta semana el meetup de Ruby, el martes 8. Enseguida, el jueves 10 de mayo el reunión mensual del grupo MySQL. Ambos meetups se vienen con todo, con una buena concurrencia y excelentes presentaciones hasta ahora, además de buenas oportunidades para conocer gente del medio y tomar cerveza.
Conferencia Internacional de Software Libre y Código Abierto
Antel organiza una conferencia internacional de Software Libre con expositores interesantes. De destacar la presencia del famoso Jon “maddog” Hall.
EduJAM!
El viernes 11 y sábado 12 en el Complejo de las Telecomunicaciones se realiza el eduJAM. Sigan el enlace por más información, pero básicamente: El principal objetivo del encuentro es fortalecer la comunidad de desarrolladores de software educativo libre, especialmente en América del Sur pero también con el objetivo de incrementar los esfuerzos de colaboración con el resto del mundo.
Montevideo Comics
El fin de semana del 19 y 20 de mayo se realiza la edición del décimo aniversario de Montevideo Comics en el Complejo Cultural Plaza. En breve publico la agenda completa. Al igual que otros años, la oportunidad perfecta para ver qué está pasando en materia de cómics a nivel nacional y regional, entre otras frikadas.
Espero no haberme olvidado de nada… Mes movido Mayo 
by Fernando at May 07, 2012 11:00 AM
May 05, 2012

Ruby Meetup
Se acerca el segundo martes de Mayo, día de Ruby Meetup en Montevideo. Vale la pena recordar que NO ES NECESARIO SABER RUBY para acercarse:
La excusa es que entre todos nos pongamos un poco al día sobre distintas técnicas, herramientas, metodologías y lo que se nos ocurra. Aprender. Enseñar. Pero primordialmente: conocernos entre todos.
Para este martes ya somos 18 anotados. Si están interesados en ir, anótense en la página del meetup, así los contamos para la pizza y cerveza 
La vez pasada estuvo muy buena, hubo bastante gente. Esta vez parece que Marcos Albe (conocido también por ser co-organizador de los MySQL Meetups) va a dar una charla sobre optimización para ORMs en Ruby On Rails 
Fecha:
Martes 8 de Mayo – 19:30 horas
Lugar:
CoworkingMVD (via Cubox)
Bulevar España 2529, esquina Libertad (mapa)
by Fernando at May 05, 2012 05:57 PM
May 04, 2012

Mozilla Developer Network Hack Day Montevideo 2012
El martes 24 se realizó el MDN Hack Day Montevideo 2012 en Café la diaria. El evento fue auspiciado por Mozilla, Cubox, la diaria y BlueVia.
Antes que nada, quiero aclarar que me reconozco fanboy de Mozilla, Firefox, y todo lo que hacen por la web. Podrán imaginar mi entusiasmo ante la visita de los Mozillianos y la realización de este evento. Pido disculpas si el post desborda en subjetividad 
Llegué con Diego (“el jefe”) a café la diaria bastante temprano. Cubox participó de la organización, así que estuvimos a eso de las 17:00 para llevar algunas cosas y ver en qué ayudar.
Ahí estaba Havi Hoffman, a quien habíamos tenido el gusto de conocer más temprano en nuestro Coworking. Havi trabaja en Mozilla Labs y WebFWD, y mantiente la cuenta @mozlabs.
También estaba Shezmeen Prasad, Developer Events Manager de Mozilla. Ambas armando el registro y preparando todo para recibir a los asistentes. Pasados pocos minutos ya empezó a caer gente, a quienes se les recibía con stickers de Mozilla MDN y Firefox Aurora.
Dan Mills fue el primer orador y dió su charla en español. El título de su charla fue How to make passwords on your site a thing of the past. En ella presentó una nueva iniciativa de Mozilla para la identidad de los usuarios en la web: Mozilla Persona.
Este sistema se conocía anteriormente como BrowserID, que pasó a ser ahora el nombre del protocolo de cara a los desarrolladores.

Mozilla Persona
Es un sistema muy interesante que pretende resolver varios problemas. Desde el punto de vista de los desarrolladores, evitarles reimplementar un sistema de autenticación en sus aplicaciones. Desde el punto de vista del usuario, evitarles tener que recordar nuevos nombres de usuario, así como no depender de servicios de terceros (Twitter, Facebook Connect, Google Accounts, etc.) para iniciar sesiones en distintos sitios. Lo único que se necesita es una dirección de correo electrónico válida.
El sistema vendría implementado nativo en Firefox, y la idea es que los navegadores que quieran lo implementen. Por el momento, si no se encuentra la característica en el navegador, usa un modal por JavaScript compatible con cualquier navegador para iniciar la sesión.
Desde el punto de vista de la privacidad, no tendremos que andar pasando más nuestra información desde un servicio a otro, sin saber con qué fin se usa.
Voy a seguir con atención Mozilla Persona. Resulta muy interesante, y espero se vaya implementando en cuantas plataformas y sitios sea posible. En estos momentos pueden probar esta nueva funcionalidad en los comentarios de este blog. Instalé el plugin Mozilla BrowserID para que se puedan dejar comentarios con Persona 
Pueden leer más al respecto en los siguientes enlaces:
La siguiente charla la dió Shane Caraveo sobre Mozilla Marketplace, un mercado de aplicaciones web. La idea es crear un ecosistema abierto para desarrolladores y consumidores, incluyendo un mercado operado por Mozilla. Está basado en estándares web como HTML5, CSS y JavaScript junto a APIs diseñados por Mozilla.

Mozilla Marketplace
Se busca evitar el desarrollo nativo para las plataformas propietarias (privativas) como son Android, iOS o Windows. Aplicaciones HTML5 aseguran la libertad de los desarrolladores y usuarios así como la compatibilidad a lo largo de las distintas plataformas. Mozilla comparte la idea de que la web es algo universal, abierta y estándar, competitiva y mayor que cualquier proveedor.
En la presentación, Shane hizo una demostración donde ejecutaba aplicaciones web de un borrador funcional del mercado. Incluso mostró como una aplicación se instalaba desde el mercado web, y se ejecutaba como una aplicación más del sistema.
También espero que prospere esta gran iniciativa. Si bien ya existen varios mercados del estilo, cada uno es cerrado en su plataforma. Es importante ser conciente de los objetivos de cada uno, creado por empresas con fines comerciales y no por una fundación sin fines de lucro como Mozilla. Ojalá de acá a un tiempo las Apps de tecnologías estándar de Mozilla ocupen una parte importante del mercado, permitiendo el crecimiento de opciones más sanas para los desarrolladores y consumidores.
La siguiente presentación estuvo a cargo de Andres Leonardo Martinez Ortiz. Representante de BlueVia, comentó sobre el programa para desarrolladores de BlueVia: platforma e iniciativas. BlueVia provee una serie de APIs implementadas para interactuar por ejemplo con el envío de SMS aunque no está orientado exclusivamente al mercado de móviles.

SUPPORT ALL THE RESOLUTIONS!!1!
La cuarta charla de la noche estuvo a cargo de Nicolás Barrera, colega cuboxer conocido en Internet como DrummerHead. Drummer es diseñador de aplicaciones y desarrollador front-end en Cubox, y nos habló sobre Diseño Web Responsivo.
El DWR (como lo voy a llamar en lo que queda de este post) se adapta a la pantalla del usuario, sin importar el tamaño o dispositivo, permitiendo una navegación y accesibilidad coherente a lo largo de las distintas formas de acceder a él (espero haberme expresado bien, no he dormido mucho…).
En la presentación explicó y demostró cómo implementar un diseño así de cero. Comentó el tag meta viewport para decirle a los navegadores móviles cómo comportarse, explica layout fluído, porcentajes a ems, y Media Queries.
Después de esto, fuimos invitados con unas pizzas, y hubo un breve intervalo para aprovechar a conversar, alimentarse y tomar algo en la barra del café la diaria.
A la vuelta de la comida, se dió lugar a las Lightning Talks. Las Lightning talks son charlas de unos poco minutos. Hubo un pizarrón durante todo el evento para anotar charlas que los asistentes quisieran dar.

Mozilla Dev Derby
Álvaro Mouriño fue el primero en presentar, y nos habló del Mozilla Dev Derby. Se trata de un concurso de Mozilla para crear demos de lo que se puede hacer con tecnologías web abiertas. Cada mes se decide un nuevo tema (actualmente hay uno de Websockets) y se eligen 3 ganadores. Los premios son un teléfono Android, un bolso para laptop y una camiseta de MDN. Álvaro ya ha participado de esta iniciativa, y ganó el segundo premio en el mes de Octubre de 2011.
Después pasó a hablar Evan Henshaw-Plath (“el otro jefe”), que habló sobre Software Libre. De como todo lo usamos y es muy fácil desarrollarlo y colaborar en el desarrollo de software libre. También comentó como en Cubox desarrollamos mucho software libre 
El siguiente orador fui yo…
Mi charla se titula La web como herramienta social. Hacía mucho tiempo que no hablaba en público así que estaba un poco nervioso, pero creo que fue bastante bien. El objetivo de la charla fue intentar generar conciencia en los programadores hacia la web como herramienta de cambio social. Los 3 frentes que considero importante en esto son el Software Libre, la Web Abierta y los Datos Abiertos.
Así expliqué qué significa cada uno de estos 3 conceptos y las ventajas que trae desarrollar teniéndolos como objetivo y pilares. Me explayé más en la parte de Datos Abiertos, que es con la que vengo más involucrado desde Desarrollando América Latina, en parte buscando más adeptos para desarrollar en base a datos abiertos.
Para armar la presentación usé ShowOff, que no conocía hasta el día antes de tener que dar la charla
Es algo así como un motor de presentaciones armado en una aplicación web sobre Sinatra. Está muy bueno y práctico.

Boot to Gecko
Para cerrar el evento, pasó a presentar Robert Nyman con JavaScript APIs – The Web is the Platform. La charla arrancó bastante divertida, Robert se presentó como Sueco y comentó algunas particularidades de la gente de Suecia.
Mostró bastante código y comentó sobre nuevas tecnologías web en las que se está trabajando en Mozilla: Fullscreen API (pantalla completa desde JavaScript), acceso a cámaras, WebRTC (capacidad de comunicación en tiempo real a través de APIs JavaScript), Pointer Lock API, IndexedDB, Battery API.
Otro proyecto bien interesante en el que se viene trabajando es Boot To Gecko (B2G). Es un sistema operativo completo e independiente para la web abierta.
Está formado por Gaia – la interfaz de usuario escrita completamente en HTML, CSS y JavaScript. Su interacción con el sistema operativo se realiza a través de Open Web APIs implementados por Gecko. Gecko es el runtime de aplicación, implementando los estándares abiertos para HTML, CSS y JS. El sistema operativo a mas bajo nivel se denomina Gonk, un kernel linux con una capa de abstracción HAL y varias bibliotecas open source.
Gonk es como una mini-distribución de linux, y es un port más al que apunta Gecko, así como hay un Gecko para OS X, y uno para Android. Al tener control sobre Gonk, B2G expone interfaces a Gecko que no son accesibles en otros sistemas. Por ejemplo el acceso a la pila de telefonía y pantalla.
También entre otras cosas hizo mención a Firefox Aurora.

Firefox Aurora
Aurora es la versión pre-beta de Firefox. En estos momentos corresponde a lo que eventualmente será Firefox 14. Desde el evento instalé Aurora en mi computadora con ArchLinux y la verdad que funciona muy bien. Noté una mejora en la reproducción de videos HTML 5, además de no haber sufrido ninguna explosión del navegador hasta ahora y en general lo siento mas rápido en todo.
También comentar que los plugins siguen funcionando de lo mas bien. Solo tuve que instalar una versión alfa de Firebug (1.10a7) porque la 1.9 no funcionaba bien.
El objetivo de este build de Firefox es tener un primer vistazo a las nuevas herramientas de desarrollo, características de seguridad y nuevas tecnologías HTML5 y web en general.
Y así terminó un excelente evento de la mano de Mozilla y demás organizadores. Para mi fue un honor ser parte del evento tanto dando una charla junto a gente tan genial (que está haciendo cosas tan increíbles por el progreso de la web), como ayudando con la organización y difusión.
Quedamos todos muy contentos y agradecidos de haber tenido a los Mozillianos por estos lados, y los esperamos para una próxima visita 
by Fernando at May 04, 2012 12:00 PM
May 02, 2012

WordPress
Además de List Category Posts, también desarrollé el plugin para WordPress UserAgent-Spy. Es el plugin que uso para mostrar los navegadores, sistemas operativos y dispositivos de los usuarios en los comentarios.
Hacía tiempo que quería retomar su desarrollo, pero siempre lo iba dejando de lado por otras cosas. Finalmente me decidí y volví a él. Tengo que admitir que me costó bastante.
En primer lugar, al igual que List Category Posts, este plugin empezó de un script super básico a crecer poco a poco. El modelo de crecimiento fue al estilo “monstruo de Frankestein”, donde iba metiéndole código por un lado y por otro para alcanzar distintas funcionalidades. El resultado final fue obviamente el esperado: ¡UN MONSTRUO!

Frankenstein WordPress
Mirar el código de hace un buen tiempo me hizo pensar que o bien he aprendido mucho en este tiempo, o era un programador horrible en ese momento. En verdad no son mutuamente excluyentes, así que puedo aceptar que ambas afirmaciones son ciertas. Si bien ahora sigo pensando que hay miles de mejoras para hacerle al código, aprolijé bastante por todos lados.
También intenté documentar un poco más. No entendía mi propio código, y tenía ganas de agarrar la máquina del tiempo, buscarme en el momento en que escribí esas cosas, y pegarme una patada voladora atrás de la oreja.
En fin, después de un buen rato de pelea, salió a la luz UserAgent-Spy 1.2. Para el usuario final hay pocos cambios:
- Ahora detecta dispositivos Apple, Blackberry y HTC. Al haber retomado, espero poder agregar más dispositivos e información en breve.
- Detecta PCLinuxOS. Solo porque quería agregar al menos un sistema operativo más. PCLinuxOS está mencionado en los comentarios de la página del plugin, así que lo agregué.
Los cambios más importantes están a nivel de código, ahora se entiende un poco más. Por otro lado, voy a hacer lo mismo que hice con List Category Posts: continuar el desarrollo en GitHub.
Como plataforma para desarrollo colaborativo de software open source, GitHub es la solución ideal. Ya he recibido Pull Requests de otros usuarios en LCP, y el sistema de tickets para bugs, pedidos de nuevas características, etc. es muy bueno. Así que de ahora en más voy a llevar el desarrollo desde ahí, exportando versiones nuevas al repositorio SVN de WordPress.
Comentario aparte: que viejo se siente Subversion.
Se sintió bastante raro ver que la última modificación al código había sido en enero del 2010. No parece haber pasado tanto tiempo. El plugin ya tiene 4 años de desarrollado, y desde entonces siempre estuvo instalado acá en Picando Código y otros de mis blogs. Por eso no me hubiera imaginado que pasaría tanto tiempo sin actualizarlo, y más importante, que volvería a meterle mano. Pero ahora que “volví a la programacíon” mi idea es no dejarlo tan abandonado nuevamente.
Si quieren ayudarme con el desarrollo del plugin, pueden usarlo, probar navegadores, sistemas operativos y dispositivos distintos que no sean detectados, e informarme. Cualquier aporte de código también es bienvenido, y esto resulta mucho mas fácil teniéndolo en GitHub. Espero tener nuevas versiones más seguido, y no que la próxima actualizarlo sea en 2014 
by Fernando at May 02, 2012 12:00 PM
April 26, 2012
Difundo información del eduJAM! 2012, un evento bastante interesante enfocado a desarrolladores:

eduJAM! 2012
Será los días Viernes 11 y Sábado 12 de Mayo en Montevideo en el Complejo de las Telecomunicaciones de ANTEL
El principal objetivo del encuentro es fortalecer la comunidad de desarrolladores de software educativo libre, especialmente en América del Sur pero también con el objetivo de incrementar los esfuerzos de colaboración con el resto del mundo. El encuentro pretende juntar desarrolladores relacionados con la plataforma Sugar y despliegues basados en el modelo OLPC, pero también otras plataformas y despliegues que usen software educativo libre, para intercambiar conocimientos, discutir estrategias, planificar proyectos y “hacking” generalizado.
Objetivos Principales
- Foco en desarrolladores: No nos desentendemos de los aspectos educacionales, pero como desarrolladores enfrentamos grandes desafíos específicos y este summit será una instancia de trabajo y de reflexión.
- Trascender OLPC y Sugar: La comunidad de desarrolladores va más alla de OLPC y Sugar, y esta podría ser una oportunidad de acercarnos con “organizaciones no-olpc”.
- Foco en America del Sur: comunicarnos con desarrolladores de todo el mundo que puedan asistir al evento y en conjunto podamos generar soluciones de manera colaborativa.
A quién está dirigido
- Programadores de Sugar
- Programadores de SW libre educativo en general
- Equipos técnicos de deployments
- Todos los que hacen posible el proceso de desarrollo: project managers, artistas y productores de iconografías para software o comunidad, testers, traductores
- Docentes interesados en promover nexos entre los aspectos educativos y la comunidad de desarrolladores.
- Estudiantes y todo aquel que quiera participar activamente de esta comunidad abierta.
Lugar del Encuentro: Complejo de las Telecomunicaciones de ANTEL
Paraguay y Panamá, Montevideo, Uruguay.
También es importante agregar que este año estará enmarcado en la Semana del 1 a 1, la cual tendrá también las siguientes actividades:
a) Apropiación y Desarrollo: Modelos 1 a 1 – Organizado Flor de Ceibo - Lunes 7 y Martes 8 de mayo: EL evento se propone discutir la experiencia de Uruguay en torno al uso de TIC a partir de la implementación del modelo 1 a 1 en la educación y en ámbitos comunitarios. Reunirá diversos actores nacionales e internacionales vinculando investigación y experiencias innovadoras en la temática.
b) CONOZCO URUGUAY _ organizado por RAP CEIBAL – Miércoles 9 y Jueves 10 de mayo: Los asistentes también tendrán la oportunidad de conocer un conjunto de actividades adicionales en diferentes partes del país para conocer de cerca la experiencia CEIBAL en las escuelas públicas. El evento será del tipo visita a algunas escuelas que nos abrirán las puertas para mostrarnos experiencias de trabajo e interacutarán con los visitantes para poder compartir unas horas juntos.
c) Entrega de Premios “Terrón 2012″ – el Sábado 12 de Mayo: Premio de estímulo y reconocimiento a programadores y comunidad en general que han aportado al crecimiento de la plataforma Sugar.
De este modo, estamos promoviendo un espacio de cohesión para la comunidad de desarrolladores de software libre educativo, con especial énfasis en la plataforma Sugar y sus derivados, como también en otros ámbitos.
Por último pero no menos importante, los días después del encuentro, desde el 13 y 14 de Mayo, se llevará a cabo el “Sugar Code Sprint”, un encuentro de desarrolladores donde se trabajará en la programación de algunas de las necesidades técnicas más importantes y urgentes que se planteen en el encuentro.
Ante cualquier inquietud, no dude en escribirnos a: edujam@googlegroups.comen donde la comisión de organización del evento le responderá a la brevedad.
Mas información e inscripciones, en nuestro sitio web http://edujam2012.ceibaljam.org/
Contactos:
E-Mail: edujam@googlegroups.com
Facebook: http://www.facebook.com/Edujam2012/
Twitter: https://twitter.com/#!/EduJam2012/
by Fernando at April 26, 2012 12:00 PM
April 25, 2012

El próximo sábado estaré en el CERP de Rivera con varios amigos en otra instancia de FLISOL, como todos los años desde su primera edición.
Este año las sedes serán Montevideo, Paysandú, Rivera, Salto y Tacuarembó.
La información sobre cada una de las sedes la pueden ver en los enlaces correspondientes. En el caso de Rivera:
Fecha, Lugar y Horario:
Sábado 28 de Abril de 2012.
Centro Regional de Profesores del Norte. Ruta 5 KM 495,5.
De 14 a 19hs.
Actividades:
Se realizarán instalaciones, distribución de material y CD’s con distintas distribuciones de GNU/Linux.
Charlas:
Software Libre y Educación (Fernando da Rosa).
Redes Intra-Aula y SL (José Mignone).
Introducción a la Programación Python (Diego Roselli).
Servidores en la Nube (Rodolfo Pilas).
Interconexión con otras sedes (a confirmar).
Contacto: Juan Viera en el CERP del Norte. Teléfono: 4622 0717.
Lo más importante es que va a ser otra oportunidad más de continuar difundiendo a lo largo y ancho del país lo que es el Software Libre, además de pasar una jornada con amigos desde hace muchos años como lo son José, Diego y Rodolfo.
by fedaro at April 25, 2012 11:33 PM
RSpec permite ver la salida en la línea de comando con formateadores personalizados. Éstos reciben mensajes en eventos como example_group_started, example_passed, y example_failed.
Cuando puedo uso Nyan Cat Formatter, un formateador con Nyan Cat que va dejando un camino de arcoiris a medida que se ejecutan los tests. Señala con asteriscos rojos los ejemplos que fallan y con signos de + los specs pendientes.
Funciona con RSpec 1.3 y RSpec 2.

Nyan Cat Formatter
Es mucho más divertido mirar al Nyan Cat y todos estos colores que los asteriscos verdes que deja por defecto RSpec.
Para usarlo por defecto en mi proyecto Rails, agregué la gema “nyan-cat-formatter” a mi ambiente de test y creé el archivo .rspec con esta información:
--colour
--format NyanCatFormatter
by Fernando at April 25, 2012 12:00 PM
April 20, 2012
Humble Bundle presenta un nuevo paquete de videojuegos para PC con Mac OS X, GNU/Linux y Windows al precio que elijas. En esta ocasión se trata del debut mundial de la aventura gráfica “point and click” Botanicula del estudio Amanita Design.

Humble Botanicula Debut
Otros dos juegos de aventura gráfica de Amanita Design se incluyen en el paquete: Samorost 2, presente en el primer Humble Indie Bundle y Machinarium, que también estuvo en el Humble Indie Bundle 2. Pagando un precio mayor al promedio, también recibimos la película Kooky -con dirección de arte de Jakob Dvorský, fundador del estudio Amanita- y Windosill!, un juego de puzzles y arte de Vectorpark.
Las condiciones:
- Paga lo que quieras.
- Los juegos son multiplataforma: funcionan en Mac, Windows y Linux.
- Puedes donar a la caridad: Uno elige cómo dividir el pago entre los desarrolladores, Humble Bundle y World Land Trust, una caridad de conservación del hábitat.
- Los juegos NO TIENEN DRM.

Humble Botanicula Debut
Les dejo el video presentación, con un poco de gameplay. ¡Visiten Humble Bundle para comprar su paquete!
by Fernando at April 20, 2012 01:41 PM
April 19, 2012
El próximo sábado 21 estaré participando en el Seminario Archívese (inaugurado hoy, 19 de marzo) en el Centro de Exposiciones del Subte Municipal y que se realiza en conjunto con una muestra colectiva de más de 100 obras de distintos artistas.

En la oportunidad integraré una mesa con el varios docentes Seminario Taller Análisis de la Comunicación presentando el trabajo realizado en los sitios web:
Desde ya están todos invitados.
by rodolfo at April 19, 2012 11:29 PM
Ya está disponible la agenda del evento de Mozilla Developer Network en Montevideo. Voy a estar participando con una charla titulada “Cambio social a través de la web”.

Mozilla Developer Network Hack Day Montevideo 2012
Información:
Fecha: 24 de abril de 2012
Ubicación: Cafe la Diaria, Soriano 770 ( http://g.co/maps/h9gnj )
Agenda:
17:30: Apertura de puertas, inscripciones para lightning talks
18:15: Introducción
18:30: How to make passwords on your site a thing of the past – Dan Mills @thunder
19:00: Going Social – new Social APIs in the browser Shane Caraveo @mixedpuppy
19:30: BlueVia developers program: platform and initiatives – Andres Leonardo Martinez Ortiz @davilagrau
20:00: Responsive Web Design – Nicolas Barrera @DrummerHead (Cubox)
20:30: break
20:45: lightning talks
21:00: Social Change through the web – Fernando Briano @picandocodigo
21:30: JavaScript APIs – The web is the platform – Robert Nyman @robertnyman
22:00: Cierre, premios y cerveza
Pueden inscribirse al evento en eventioz. ¡Nos vemos ahí!
by Fernando at April 19, 2012 06:40 PM
April 13, 2012

Ruby Meetup
El martes pasado se realizó el Ruby Meetup Montevideo. Organizado por Cubox, la invitación estaba abierta para desarrolladores de cualquier tecnología, sin importar el conocimiento que tuvieran de Ruby.
Pueden ver algunas fotos y leer al respecto en el post que escribí en el blog de Cubox: Cubox brings back Ruby meetups to Montevideo.
Hubo muy buena asistencia, de 29 inscriptos creo que fueron todos. Había gente que conocía Ruby desde hace muy poco, lo que no impidió (asumo) que se llevaran algo de la reunión.
El evento arrancó en la sala de reuniones del Coworking con elCuervo haciendo una presentación de Cuba, un microframework para desarrollo web en Ruby. Es un framework bien minimalista, podemos probarlo haciendo algo tan básico como esto:
index.rb
require 'cuba'
Cuba.define do
on root do
res.write "Hola mundo"
end
endconfig.ru
require "./index"
run Cuba
Paso siguiente ejecutar rackup y ver el resultado en localhost:9292.
Cuervo mostró algunos ejemplos más, y se comentó que se puede usar sistema de templates, seguridad, etc. También compartió cuba-sugar, una gema que desarrolló para proveer de azúcar sintáctico a Cuba.
Terminada la charla técnica, mudamos el evento al garage y el patio. Había cerveza y refrescos, y al rato llegaron las pizzas. Una excelente oportunidad para conocer gente del ambiente, aprender algo, compartir conocimientos y saber en qué andan los demás.
La reunión se va a realizar los segundos martes de cada mes. Los invito a visitar el sitio de Ruby Meetup y registrarse para futuros eventos de la comunidad.
by Fernando at April 13, 2012 12:00 PM
April 09, 2012

Controladores - La C en MVC
Los controladores son el pegamento entre la lógica de negocios y las vistas en el patrón de diseño MVC – Model, View, Controller.
Cuando el ruteo de Rails determiná qué controlador va a usar para un pedido, nuestro controlador se va a encargar de darle sentido a este pedido y devolver una salida correspondiente.
Cada controlador es una clase Ruby que hereda de la clase de Rails ApplicationController.
Métodos y Acciones
El ruteo determina qué controlador y acción debe ejecutar. Rails crea una instancia del controlador y ejecuta el método con el mismo nombre de la acción correspondiente.
Capitán Obvio dice: Solo los métodos públicos de un Controlador son ejecutables como acción.
Buena práctica: Bajar la visibilidad de los métodos que no son creados con la intención de ser acciones como métodos auxiliares o filtros.
Parámetros
Desde el controlador podemos acceder a todos los parámetros enviados en el pedido HTTP. Los dos tipos de parámetros son:
- Query String Parameters – Los enviados a través de la URL (lo que está en la URL después del signo “?”).
- Post Data – Información de un pedido POST HTTP, generalmente enviado desde un form html.
Ambos tipos de parámetros están disponibles a través del hash params.
El hash params puede contener Arrays y Hashes:
Array
GET /clients?ids[]=1&ids[]=2&ids[]=3
> params[:id] = ["1", "2", "3"]
Hash
<form method="post">
<input type="text" name="client[name]" value="Acme" />
<input type="text" name="client[phone]" value="8881234" />
</form>
> params[:client] {
"name" => "Acme",
"phone" => "8881234"
}El objeto params es de la clase HashWithIndifferentAccess de Active Support, una clase totalmente imprescindible cuya función es permitir escribit params[:key] y params['key'] y obtener el mismo valor por ambas claves…
Parámetros JSON y XML
Rails convierte automáticamente los parámetros JSON y XML al hash params.
Ejemplo JSON:
{ "company": { "name": "acme", "address": "Lo que sea" } }
>params[:company] { :name => “acme”, “address” => “Lo que sea” }Omitir elemento raíz de JSON/XML:
En initializers – config.wrap.parameters = on
En controlador – wrap_parameters
Ruteando parámetros
En el hash params siempre encontramos las llaves :controller y :action pero deberíamos acceder a ellos con :controller_name y :action_name.
match 'clients/:status' => 'cliens#index', :foo => "bar"
GET /clients/active
> params[:status] = "active"
params[:foo] = "bar"
Sesiones
Las aplicaciones web tienen una sesión por cada usuario en la que se pueden guardar pequeñas cantidades de información que será persistida entre pedidos.
La sesión está disponible únicamente en el Controlador y la Vista. Se puede usar uno de varios mecanismos:
- ActionDispatch::Session::cookieStore – Guarda todo del lado del cliente
- ActiveRecord::SessionStore – Guarda la información en la base de datos usando ActiveRecord
- ActionDispatch::Session::CacheStore – Guarda la información en la cache de Rails
- ActionDispatch::Session::MemCacheStore – Guarda la información en un clúster memcache (implementación legacy, usar CacheStore en su lugar)
Todos los mecanismos de guardado de sesión usan una cookie para guardar un ID único para cada sesión (obligatorio usar una cookie, Rails no permite pasar el id de sesión a través de la URL).
Cookie Store
Guarda el id y la información en la cookie. Todos los otros mecanismos guardan el id y la información se obtiene con ese id buscando en el servidor. Es muy lviano, no requiere configuración. La información de la cookie está firmada pero no encriptada, Rails no la aceptará si ha sido editada.
Permite 4Kb de información. No debería guardar objetos complejos (como instancias de modelos).
ActionDispatch::Session::CacheStore
Para casos en los que la sesión de usuario no necesita guardar información crítica o no se necesita por períodos largos de tiempo. Usa la implementación de caché de tu aplicación para guardar sesiones.
Ventaja: Usar estructura actual de caché.
Desventaja: las sesiones serán efímeras, podrían desaparecer.
Archivo:
config/initializers/session_store.rb
- Cambiar el mecanismo de almacenamiento de sesión.
- Establecer la llave de sesión (nombre de la cookie)
- Pasar una llave de dominio para especificar el nombre de dominio para la cookie
Establecer una clave secreta para el firmado de la información de sesión – config/initializers/secret_token.rb
Accediendo a la sesión
En los Controladores se puede acceder a la sesión a través de metódos de instancia de sesión.
Las sesiones se cargan de manera “lazy”, no serán cargadas a menos que accedamos a ellas.
Los valores de la sesión se guardan usando pares clave valor como en un hash.
En el controlador:
def current_user
@current_user ||= session[:current_user_id] &&
User.find_by_id(session[:current_user_id]
endGuardando valores:
def create
if user = User.authenticate(params[:username], params[:password])
session[:current_user_id] = user.id
redirect_to root_url
end
endPara eliminar algo de la sesión, simplemente asignamos el valor nil a la clave. Para reiniciar toda la sesión, usamos el método reset_session.
Flash
El flash es una parte especial de la sesión que desaparece con cada request. Ejemplo:
def destroy
session[:user_id] = nil
flash[:notice] = "Has cerrado sesión"
redirect...
También es posible asignar mensajes flash en redirecciones:
redirect_to root_url, :notice => "Has cerrado sesión correctamente"
flash.keep mantiene el valor para otro request.
flash.now Accede a los valores en el mismo request.
Cookies

Cookies
Las cookies (o galletitas) son pequeñas cantidades de información del lado del cliente que es persistida a través de pedidos y sesiones.
cookies – Funciona como un hash:
cookies[:commenter_name] = @comment.name
...
cookies.delete(:commenter_name)
Observar que para borrar el valor de una sesión, se asignaba nil a la clave. En el caso de las cookies, se debe usar cookies.delete(:llave)
Conclusión
Voy a dejar por acá este primer post sobre Controladores en Rails. Si les interesa ir siguiendo este tema, a esta altura deberían entender el flujo de un request en un controlador, y por qué y cómo guardar información en la sesión o con cookies.
Hay más para ver sobre los controladores: filtros, los objetos request y response y algo de seguridad básica. Pero lo dejo para la próxima entrega de “Apuntes Rails” 
by Fernando at April 09, 2012 11:00 AM
April 06, 2012

Mozilla
La gira de Mozilla Developer Network (MDN) se nos acerca 
Estoy muy contento de poder comentar que la gente de Mozilla visitará nuestras ciudades de Buenos Aires, Montevideo, São Paulo y Santiago difundiendo su mensaje: La Web es la plataforma. Sí, Mozilla, los creadores de nuestros amados Firefox, Thunderbird y responsables de gran parte de la evolución de la web en los últimos años, se van a dar una vuelta por acá.
Les dejo una traducción del anuncio publicado en el blog de Mozilla Hacks por Havi Hoffman:
La gira MDN de primavera continua con un viaje al otoño en el Conosur – la región más sureña de Sudamérica. Nos dirigimos al sur para participar de MozCamp, una reunión de la comunidad Mozilla Hispano, y para conocer desarrolladores en Buenos Aires, Argentina; Montevideo, Uruguay; São Paulo, Brasil; y Santiago, Chile. Presentaremos algunos nuevos proyectos emocionantes de Mozilla como Boot-to-Gecko (B2G), Apps, Persona, y WebFWD y mostraremos algo de nuestro trabajo en herramientas para desarrolladores, Firefox y el SDK de Add-ons. Nos gustaría pasar tiempo programando con desarrolladores web y compartiendo la vision de Mozilla de la Web abierta y centrada en el usuario.
Nuestro mensaje: La Web es la plataforma y está construída de tecnologías abiertas. Aprende cómo puedes colaborar con MDN en documentación agnóstica de navegador para la Web como un todo, o contribuir a la misión Mozilla e iniciativas Open Source a través de código y evangelización. Hay muchas, muchas formas de involucrarse.
Si eres un desarrollador, diseñador, escritor de documentación, tecnologista, emprendedor, o entusiasta del open source en Buenos Aires, Montevideo, São Paulo o Santiago, estas invitado a registrate, pasar y compartir lo que estás trabajando. Si simplemente tienes curiosidad de conocer Mozillianos o quieres aprender más sobre nuestro trabajo, nos encantaría conocerte. Nunca olvides que la Web está hecha de todos, para todos (original en español).
Buenos Aires
Viernes, 20 de Abril: En Buenos Aires, nos hemos aliado con Mozilla Hispano, el grupo de Hacks/Hackers de Buenos Aires y Blue Via para un evento de un día el Viernes 20 de abril en el hotel NH City & Tower en el corazón de la ciudad. Abriremos con charlas cortas sobre HTML5 y amigos, APIs Javascript, el SDK de Add-ons, herramientas de desarrolladores, y nuestras ofertas más nuevas: Apps y Persona.
El registro para el MDN Hack Day, Bs As 2012 está abierto y todavía tenemos espacio. Por favor regístrate aquí.
Montevideo, Uruguay
Martes, 24 de Abril: Damos puntapié inicial a nuestra gira torbellino de 3 ciudades del sur en 5 días, con una noche de desarrolladores en la capital de Uruguay, Montevideo. Estamos agradecidos por la amable hospitalidad de la gente de La Diaria, un periódico de noticias innovador con una fuerte presencia web y un lugar maravilloso y popular en la comunidad de tecnología y negocios de Uruguay. También un gran agradecimiento al equipo de Cubox, una tienda de desarrollo de software que mira hacia el futuro, y está “disponible para la genialidad”, y han estado definitivamente geniales y disponibles en guiarnos a los Norteamericanos en cómo armar una noche de desarrolladores desde la lejana Mountain View, a más de 10 mil kilómetros de distancia. Se unen al equipo de MDN para hablar en Montevideo: Dan Mills (@thunder), líder de producto para Persona; Shane Caraveo (@mixedpuppy) de Mozilla Labs; y Andrés Leonardo Martínez Ortíz de BlueVia, un sponsor del MDN Hack Day Tour en Montevideo y Santiago, así como Buenos Aires. Vamanos!
Ya está abierto el registro para el Montevideo MDN Hack Day Developer Evening.
São Paulo, Brasil
Jueves, 26 de Abril: Robert Nyman (@robertnyman), evangelista técnico de Mozilla de Suecia (¡no Suiza!) visitará São Paulo, Brasil para representar al MDN en un evento nocturno organizado por el miembro de la comunidad Mozilla, desarrollador de software de Caelum y todo terreno Paulo Silveira (@paulo_caelum) el jueves 26 de abril. La charla de Robert se titula “JavaScript APIs – The web is the platform” y describirá cómo HTML5, Boot-toGecko, y otros nuevos APIs inspiran una nueva era de desarrollo innovador en la Web abierta. Muchas gracias a Paulo y el equipo de Caelum por ser anfitriones del evento en su auditorio, y hacer que Robert se sienta bienvenido en São Paulo.
El registro está abierto para el São Paulo MDN Hack Day Developer Evening, organizado por Caelum.
Santiago, Chile
Sábado, 28 de Abril: Cerramos la la gira MDN Hack Day del Conosur el sábado de tarde con una noche de desarrolladores en Santiago, Chile, alojada y organizada por Jano González (@janogonzalez) en la Escuela de Economía y Negocios – Universidad de Chile. Esta vez se nos unirá Hernán Colmeiro (@peregrinogris), interno de Firefox y evangelista de Jetpack; así como Shane Caraveo, Robert Nyman y como siempre el único Shezmeen Prasad, quien se asegura que todo esté perfecto.
El registro está abierto para la Santiago MDN Hack Day Developer Evening.

Se vienen los Mozillianos
Créditos de la foto: Websites and Technology Evangelism team por Nitot.
Hagamos sentir bienvenidos a los Mozillianos del Norte durante su estadía por nuestro barrio, y aprovechemos esta oportunidad para aprender, conectarnos y dar a conocer el talento que tenemos por acá. ¡Nos vemos ahí!
by Fernando at April 06, 2012 05:40 PM

Rails Guides
He estado estudiando bastante de las Rails Guides últimamente. Mi kit de estudio sigue siendo tan primitivo como cuando iba al liceo: un cuaderno de papel y una lapicera, además del material de estudio (en este caso Internet).
Estoy abierto a sugerencias de métodos más modernos. Debería probar sacar apuntes en un editor de texto directamente en la computadora, pero evitando la tentación de copiar y pegar texto…
El tema es que pienso compartir mis apuntes por acá. La idea es que al tener que pasar esos apuntes a un post prolijo en el blog, no solo vuelvo a estudiar sino que quede explicado de la mejor manera posible. Así, no solo comparto el conocimiento, sino que lo afirmo en mi cabeza. También queda abierta la discusión sobre los temas estudiados en los comentarios. Por último, es un registro para cuando quiera repasar algún concepto ya adquirido.
Ya había leído varias partes de la guía Rails hace un buen tiempo, pero siempre a modo de “hobby” (lo que venía siendo Ruby para mí hasta que me puse en serio con eso). Así que arranqué de cero con el objetivo de leer toda la guía (requisito también en mi trabajo).
La guía asume un poco de conocimiento de Ruby, y algunos requisitos de software en nuestra computadora que no voy a comentar por acá. Tampoco voy a seguir un orden exacto, hay cosas que se pueden ir leyendo independientemente de otras. Pero cualquier duda la pueden dejar en los comentarios que con gusto intentaré contestar.

Apuntes Rails
Introducción a Rails
La guía contempla la versión 3.2.3 de Rails. Para dejar una “definición” de lo que es Rails, tiro un apunte:
Rails es un framework de desarrollo de aplicaciones web.
En teoría sigue el patrón de diseño MVC, pero he oído fundamentos para creer que no es tan así (otro tema…). En fin, sigamos asumiendo que es así. El patrón MVC consta básicamente de:
Modelo – La representación de la información, los datos. Define las reglas para manipular la información (lógica de negocios).
Vista – Anoté “UI”, o interfaz de usuario. Es cómo vamos a mostrar la información
Controladores – El pegamento entre los modelos y las vistas. Procesa los requests entrantes en la aplicación. Interroga a los modelos para obtener información y le pasa datos a la vista.
Es un patrón de uso bastante común en otras tecnologías y lenguajes, así que asumo que la mayoría de las personas que hayan trabajado en proyectos web lo conocen. Y si no es así, tienen un concepto para ir conociendo 
Componentes de Rails
Rails tiene muchos componentes internos encargados de cada aspecto de la aplicación web. Es bueno tener una idea de qué hace cada uno, aunque en su momento la guía profundiza según tema.
- Action Pack – Gema que contiene:
- Action Controller – Procesa los requests, extrae los parámetros, despacha a acciones. Servicios que provee: manejo de sesión, renderización de plantillas, gestión de redireccionamiento.
- Action View – Puede crear HTML y XML por defecto, gestiona renderización de plantillas, AJAX incluido.
- Action Dispatch – Maneja el ruteo de los pedidos web.
- Action Mailer – Servicios de correo electrónico.
- Active Model – Interfaz entre Action Pack y el ORM.
- Active Record – Base para los modelos en Rails. Provee:
- Independencia de la base de datos.
- Funcionalidad CRUD.
- Capacidades avanzadas para buscar.
- Relaciones entre modelos.
- Active Resource – Conexión entre los objetos de negocio y servicios web que siguen los principios REST. Mapea recursos basados en web a objetos locales con semántica CRUD.
- Active Support – Clases utilitarias y extensiones a bibliotecas estándard Ruby.
- Railties – Código central de Rails que construye nuevas aplicaciones y junta todos los frameworks y plugins.
REST
Para comprender Rails (y básicamente tener una idea de cómo se desarrolla para web actualmente), hay que tener un concepto de REST – Representational State Transfer (Transferencia de Estado Representacional). Es una forma de construir software, y pueden leer más en Wikipedia.
Pero a modo de resumen, Rails nos dice esto:
- Usar identificadores de recursos como URL para representar recursos.
- Transferir representaciones del estado de ese recurso entre componentes de sistema.
Por ejemplo el siguiente request HTTP:
DELETE /books/14
Es un recurso de libro con el id 14, y la acción borrar.
Aplicación Rails
No voy a pasar por el proceso de crear una primera aplicación. Lo mejor para esto es abrir la Guía de Rails y empezar a crear una aplicación por cuenta propia siguiendo los pasos y aplicando los conocimientos.
Cierro el post con un poco de música. Un tema de Rancid del discazo “And Out Come The Wolves”:
Rancid – RUBY Soho
En próximos posts seguiré digiriendo y publicando apuntes de otras partes de la guía Rails.
by Fernando at April 06, 2012 12:00 PM
April 05, 2012
Hace unos días Phoronix anunció la disponibilidad del cliente para GNU/Linux del juego Trine 2. Sin embargo, Frozenbyte el estudio encargado de su desarrollo no había hecho ningún anuncio. En su sitio web no encontrábamos noticias al respecto.
De todas formas, si entrábamos al sitio oficial de Trine 2 para comprarlo, un widget nos mostraba la posibilidad de comprarlo con unos íconos de Apple y Tux. El widget pertenece a la Humble Store, en versión beta, un sistema de compra de juegos de Humble Bundle. Explicado todo esto, les comento que hace un par de días pude comprar Trine 2 para GNU/Linux. Y luego fue anunciado oficialmente en el blog de la empresa.

Trine 2 - Humble Store
Comenté sobre Trine cuando hablé de Frozenbyte el año pasado. El juego se puso para pre-venta en octubre, y se prometió una versión para GNU/Linux para este año.
Sobre Trine 2
Es un juego de plataformas, acción y puzzles. Podemos jugar con uno de tres personajes con distintas características cada uno: Amadeus el mago, con la habilidad de materializar objetos sólidos de la nada y el poder de levitar objetos. Pontius el caballero, el guerrero, equipado con un escudo capaz de manipular su entorno físico, espada y martillo. Zoya la ladrona, armada de arco y flecha y un gancho que le permite escalar y alcanzar lugares de altura.
Al tener habilidades tan distintas, los personajes nos permiten alcanzar ciertos lugares o vencer ciertos enemigos de maneras distintas. El juego cuenta con muchos puzzles basados en física, teniendo que manipular fuego, agua, magia y la gravedad para alcanzar distintos objetivos.
Esta secuela trae un nuevo modo cooperativo disponible online o local. También podemos salvar la partida en cualquier momento. También incluye muchos ítems coleccionables escondidos y los populares “Achievements” o logros para aumentar el valor de volver a jugarlo.
Los gráficos están mejorados ampliamente, y ya tuve algún encuentro con nuevos puzzles sumamente interesantes. Es accesible para todo tipo de jugadores, y está disponible en muchas plataformas: Playstation 3, Xbox 360, Mac, Linux y Windows. Su precio es de U$S 14.99 y U$S 24.99 la edición para coleccionistas que incluye el artbook y soundtrack.
El video presentación:
Les recomiendo adquirir el juego, y quedo a la espera para alguna partida cooperativa con otro(s) jugador(es) 
by Fernando at April 05, 2012 05:18 PM
April 03, 2012

Foto por @cuerbot
Como comentaba en Nuevo Camino, hace un mes empecé a trabajar en Cubox. Esto me llevó a tener que aprender muchas cosas nuevas, encontrarme con una forma y ambiente de trabajo totalmente distinto, etc.
Por esto, podría decir que estoy aprendiendo cosas nuevas prácticamente todo el tiempo. Además, tengo mucho por estudiar y aprender todavía para acercarme al nivel del resto del equipo.
Creo que para un programador trabajar con gente que sabe mucho más que uno es ideal: tenemos de quién aprender. A su vez, estar en una situación desafiante a nivel técnico resulta inspirador (al menos en mi caso).
Hacía tiempo que no me llevaba un problema a casa en la cabeza, y lo resolvía al día siguiente tras haberlo masticado. Al no estar en la zona de confort, me siento en una mejora constante como desarrollador (inspirado en la filosofía Kanban aprendida a través de Scrum).
En fin, todo esto viene a que tengo ganas de “volver a las raíces” con el blog. En un principio el blog era un reflejo de lo que iba progresando y trabajando en programación. Cuando conocía algo nuevo (por muy básico o simple que resultara) lo dejaba publicado acá para tener como referencia en el futuro. En verdad siempre intenté seguir esa tendencia, pero a veces la rutina, y la falta de desafíos en el trabajo me volvió apático. Si bien siempre buscaba algo interesante para publicar, no era lo mismo.
A partir de ahora, voy a intentar volver a la tendencia de publicar siempre los nuevos conocimientos que vaya adquiriendo. Estoy estudiando y viendo mucho sobre Ruby y Rails particularmente. Pero también metodologías, buenas prácticas, y demás. Capaz que publico cosas bastante básicas como cosas super específicas sobre cómo resolver un problema o simplemente ideas. Esto me va a ayudar a fijar los conocimientos, compartirlos con otra gente, y de repente recibir información relevante de gente con más experiencia. Cumplir el objetivo por el que me hice un blog en primer lugar digamos 
Una de las primeras cosas que tengo que terminar es de estudiar por completo Rails. Ya estoy trabajando en un proyecto hecho en Rails, así que me estoy dando un poco la cabeza contra la pared. Pero cada golpe es un aprendizaje. Así que seguramente vaya publicando mis apuntes sobre lo que vaya leyendo de Rails.
No tengo pensado mantener una periodicidad específica, pero voy a intentar postear siempre que encuentre algo útil y me pueda servir para más adelante.
by Fernando at April 03, 2012 12:00 PM

Hola, mi nombre es Fernando
Estimados lectores, por la presente extiendo a ustedes la invitación a la reunión mensual del grupo Ruby Uruguay.
La invitación está abierta a desarrolladores de todo tipo, NO ES NECESARIO QUE SEPAN RUBY.
La idea es juntarse a conversar y conocerse, hablar sobre las cosas que anda haciendo cada uno -tanto Ruby como tecnologías asociadas- y tomar algo. El grupo piensa empezar a reunirse los segundos martes de cada mes.
Así que si saben Ruby, si no saben pero les interesa conocer más, si tienen conocimientos para compartir, o simplemente quieren conocer gente en el ambiente del desarrollo web local, acérquense a la reunión 
Fecha:
Martes 10 de Abril – 19:30 horas
Lugar:
CoworkingMVD (via Cubox)
Bulevar España 2529, esquina Libertad (mapa)
Visiten el sitio del grupo Ruby, y anótense para el evento si quieren asistir:
Si alguien tiene alguna charla para dar, está bueno, y si no se dará un ambiente de conversación nomás para saber en qué anda cada uno, y cómo aprender más de ruby y las tecnologías en las que trabajamos (o tenemos ganas de trabajar).
Por favor confirmen asistencia en meetup.com así podemos hacer estimaciones de cuántos seremos.
¡Nos vemos ahí!
by Fernando at April 03, 2012 11:00 AM

Rails
Una gema de Rails que tuve que usar recientemente es
ActsAsList. Esta extensión de Rails provee la capacidad de clasificar y ordenar objetos en una lista.
La clase con esta necesidad específica debe tener una columna position (posición) definida como Integer en la tabla de base de datos mapeada.
Es bastante sencilla de usar, pueden agregar a su Gemfile la gema:
gem 'acts_as_list'
Voy a mostrar un ejemplo bastante sencillo en Rails a efectos de explicar el concepto. Tenemos una aplicación Rails con dos modelos: Book y Bookshelf. Generamos los modelos correspondientes:
$ rails generate model Bookshelf name:string
$ rails generate model Book title:string author:string description:text position:integer bookshelf:references
Y mandamos a generar las tablas:
$ rake db:migrate
Editamos el código de app/models/bookshelf.rb para agregar el orden:
class Bookshelf < ActiveRecord::Base
has_many :books, :order => 'position'
end
Y el libro:
class Book < ActiveRecord::Base
belongs_to :book_shelf
acts_as_list :scope => :bookshelf
end
Hecho esto ya estamos en condiciones de tener una Bookshelf con una colección de libros, y manipular el orden de los libros dentro de esta colección a través del índice “position”. Podemos probar el código en la consola de Rails con:
$ rails console
Empezamos por crear un bookshelf para guardar nuestros libros:
bookshelf = Bookshelf.new(:name => "My bookshelf")
Hecho esto, creamos algunos libros asignándoles nuestro objeto bookshelf:
> book1 = Book.new(:title => "1984", :author => "George Orwell", :description => "Dystopian future", :bookshelf => bookshelf)
> book2 = Book.new(:title => "A princess of Mars", :author => "Edgar Rice Burroughs", :description => "John Carter is in this book", :bookshelf => bookshelf)
> book3 = Book.new(:title => "Ready Player One", :author => "Ernest Cline", :description => "Online virtual world / videogame", :bookshelf => bookshelf)
> book4 = Book.new(:title => "Foundation", :author => "Isac Aasimov", :description => "Blow-your-mind-Sci-fi", :bookshelf => bookshelf)
Ya armada la estructura y guardada podemos ver que los libros tienen su posición según fueron siendo guardados:
> bookshelf.books
Book Load (0.3ms) SELECT "books".* FROM "books" WHERE "books"."bookshelf_id" = 1 ORDER BY position
=> [#<Book id: 1, title: "1984", author: "George Orwell", description: "Dystopian future", position: 1, bookshelf_id: 1, created_at: "2012-04-03 02:46:36", updated_at: "2012-04-03 02:46:36">,
#<Book id: 2, title: "A princess of Mars", author: "Edgar Rice Burroughs", description: "John Carter is in this book", position: 2, bookshelf_id: 1, created_at: "2012-04-03 02:46:38", updated_at: "2012-04-03 02:46:38">,
#<Book id: 3, title: "Ready Player One", author: "Ernest Cline", description: "Online virtual world / videogame", position: 3, bookshelf_id: 1, created_at: "2012-04-03 02:46:40", updated_at: "2012-04-03 02:46:40">,
#<Book id: 4, title: "Foundation", author: "Isac Aasimov", description: "Blow-your-mind-Sci-fi", position: 4, bookshelf_id: 1, created_at: "2012-04-03 02:46:42", updated_at: "2012-04-03 02:46:42">]
El cuarto libro por ejemplo, podemos moverlo a la primera posición, y tras recargar los objetos, vemos que automáticamente los demás libros sumarán una posición más:
> book4.position
=> 4
> book4.move_to_top #Mover a la primera posición
(0.1ms) begin transaction
SQL (0.3ms) UPDATE "books" SET position = (position + 1) WHERE ("books"."bookshelf_id" = 1 AND position < 4)
(0.3ms) UPDATE "books" SET "position" = 1, "updated_at" = '2012-04-03 02:47:55.303110' WHERE "books"."id" = 4
(105.5ms) commit transaction
=> true
> book4.position
=> 1Podemos comprobar las posiciones de los demás libros:
book1.position
=> 2
> book2.position
=> 3
Y mover un libro al final de la lista:
> book2.move_to_bottom
(0.1ms) begin transaction
SQL (0.3ms) UPDATE "books" SET position = (position - 1) WHERE ("books"."bookshelf_id" = 1 AND position > 3)
Book Load (0.3ms) SELECT "books".* FROM "books" WHERE ("books"."bookshelf_id" = 1 AND id != 2) ORDER BY position DESC LIMIT 1
(0.3ms) UPDATE "books" SET "position" = 4, "updated_at" = '2012-04-03 02:50:13.740681' WHERE "books"."id" = 2
(107.7ms) commit transaction
=> true
> book2 = Book.find 2
Book Load (0.2ms) SELECT "books".* FROM "books" WHERE "books"."id" = ? LIMIT 1 [["id", 2]]
=> #<Book id: 2, title: "A princess of Mars", author: "Edgar Rice Burroughs", description: "John Carter is in this book", position: 4, bookshelf_id: 1, created_at: "2012-04-03 02:46:38", updated_at: "2012-04-03 02:50:13">
> book2.position
=> 4Y la posición final de todos los libros quedó:
> bookshelf.books
Book Load (0.3ms) SELECT "books".* FROM "books" WHERE "books"."bookshelf_id" = 1 ORDER BY position
=> [#<Book id: 4, title: "Foundation", author: "Isac Aasimov", description: "Blow-your-mind-Sci-fi", position: 1, bookshelf_id: 1, created_at: "2012-04-03 02:46:42", updated_at: "2012-04-03 02:47:55">,
#<Book id: 1, title: "1984", author: "George Orwell", description: "Dystopian future", position: 2, bookshelf_id: 1, created_at: "2012-04-03 02:46:36", updated_at: "2012-04-03 02:46:36">,
#<Book id: 3, title: "Ready Player One", author: "Ernest Cline", description: "Online virtual world / videogame", position: 3, bookshelf_id: 1, created_at: "2012-04-03 02:46:40", updated_at: "2012-04-03 02:46:40">,
#<Book id: 2, title: "A princess of Mars", author: "Edgar Rice Burroughs", description: "John Carter is in this book", position: 4, bookshelf_id: 1, created_at: "2012-04-03 02:46:38", updated_at: "2012-04-03 02:50:13">]
Una herramienta bastante útil con otros métodos como move_higher, move_lower, y más que pueden leer en el código fuente. Si quieren leer más al respecto visiten acts_as_list.
by Fernando at April 03, 2012 03:33 AM
March 21, 2012
Seguramente todos conocen a esta altura Stack Exchange, la red de sitios de preguntas y respuestas útiles iniciado por Joel Spolsky y Jeff Atwood con StackOverflow. Uno de los sitios nacidos de esta red es WordPress Answers.

WordPress Answers
Empecé a usar StackOverflow en la época en que salió como beta. Más adelante, con su éxito, vinieron más sitios de preguntas y respuestas. En un momento, se creó Area 51, un lugar donde los usuarios podían proponer sitios de temas específicos para implementar el sistema de StackOverflow.
En algún momento alguien propuso un sitio de preguntas y respuestas sobre WordPress. El sistema es así: Se propone un sitio, y se entra en etapa de “definición”. Ahí los usuarios definen el perfil, y proponen preguntas de ejemplo. Cuando 10 preguntas obtienen 10 votos la propuesta se considera “definida”. En ese momento entra la etapa de “Compromiso”. Cierta cantidad de gente se compromete a usar un sitio hasta que entra en etapa beta y se empieza a usar.
Este sitio de preguntas de WordPress fue mi primer “compromiso” cumplido en Area 51. Como usuario y desarrollador de plugins de WordPress (noticia de último momento, el blog Picando Código es gestionado con WordPress) estuve atento y colaboré bastante en los primeros momentos del portal. Más adelante incluso moví el soporte de plugins de WordPress para ahí al tener una comunidad mucho mayor de desarrolladores y entusiastas que pueden responder una pregunta o ayudar a resolver un problema.
Hace un tiempo recibí un correo de WordPress Answers felicitándome por mi participación en el sitio, y pidiendo mis datos para enviarme un regalo.
Esta semana recibí el paquete en cuestión, con una camiseta y algunos stickers. No todos los días se recibe una carta firmada por Joel Spolsky 
As a top user on wordpress.stackexchange.com, you go out of your way to help your peers. Influential community members like you set the tone for everyone else. Thanks for everything you do.

Regalos de WordPress Answers
Muchas gracias a la gente de StackExchange. Espero poder continuar aportando a estas comunidades 
Los invito a formar parte de la comunidad de WordPress Answers y StackExchange.

by Fernando at March 21, 2012 12:00 PM
March 20, 2012
El año pasado tuve una época en que me interesé bastante en el tema de la programación funcional. Uno de los principales responsables es Gabriel Claramunt, antiguo colega de oficina y evangelista de Scala (y/o programación funcional en general). Además de Scala con Gabriel he tenido la oportunidad de conversar sobre varios lenguajes de este paradigma.
Descubrí que resolver los problemas con este paradigma es divertido gracias a Ruby. Ruby incluye bloques, procks y lambdas, todo “funcional”. Cuando empecé con Ruby, de a poco me fui viendo expuesto a estos nuevos términos, y esta nueva forma de pensar. Mucho antes había aprendido algunas básicas incluso en IRC recuerdo que estuve hablando del tema y aprendiendo. Pero nunca pasó más que eso.
Buscando especializarme un poco en Ruby, estuve leyendo al respecto para entender de qué se trataba la cosa. Hubo un artículo que me “arruinó la cabeza”:
Understanding Ruby Blocks, Procs and Lambdas
En este post se explica bastante bien con ejemplos qué es cada cosa. Me arruinó la cabeza en el sentido en que me llevó a pensar que había un mundo entero de código por escribir con lo aprendido, y era muy entretenido.

We need to go deeper
No satisfecho con ese post salí a buscar más. Mi razonamiento fue el siguiente: Los elementos de programación funcional que incluye Ruby lo hacen bastante poderoso. Pero, al estar acostumbrado a otros lenguajes, todavía no entré en el modo “esto lo podría hacer funcionalmente” en mi cabeza y aprovecharlos del todo. Por eso, decidí escarbar un poco más.
Esto me llevó a programación funcional en su estado más puro: Haskell. Aprendiendo un poco de Haskell, seguramente podría hacer mucho mejor uso de las características de programación funcional. A todo esto habría que sumarle que los lenguajes funcionales son cada vez más usados y siempre es bueno tener una herramienta más en el cinturón (bati-cinturón o cinturón de herramientas, como prefieran) a la hora de resolver un problema.

Learn You a Haskell for Great Good!
En fin, mi estudio de Haskell me llevó hasta el libro “Learn You a Haskell for Great Good!: A Beginner’s Guide
“. Este libro puede ser comprado en papel o leído online.
Se los recomiendo si como yo quieren agarrar conceptos de programación funcional. Empezamos con GHCi, el compilador de Haskell que incluye un modo interactivo que permite interactuar interactivamente con scripts. Interactivamente.
Prelude> :set prompt "picandocodigo>"
picandocodigo> 37 + 5
42
picandocodigo>"Hola" ++ " " ++ "mundo"
"Hola mundo"
picandocodigo>[1..16]
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
picandocodigo>take 7 (cycle["Ruby", "Haskell", "Scala"])
["Ruby","Haskell","Scala","Ruby","Haskell","Scala","Ruby"]
Es bastante fácil de digerir, y didáctico como todo buen libro de programación. En algún momento seguiré con él para aprender un poco más (ya está agregado a mi wishlist de Amazon para posible compra futura
).
Otro libro interesante que también agregué a mi lista fue The Little Schemer – 4th Edition
. También fue recomendado por Gabriel (incluso me prestó la versión impresa unos días). Este libro intenta enseñar a pensar de manera recursiva de manera bastante particular. Usa diálogos graciosos y sencillos para que el lector se familiarice con los conceptos de Scheme.
En los comentarios Bob agrega este enlace:
http://www.fing.edu.uy/inco/cursos/progfunc/pmwiki/field.php/Materiales/Teorico
Se trata de material teórico de la materia Programación Funcional del Instituto de Computación en Facultad de Ingeniería.
Todo esto fue parte de lo que anduve leyendo y dejo los links acá para compartirlos y tenerlos como referencia. Me queda mucho por leer y mucho código por escribir. Pero está muy interesante y divertido de estudiar. En mi nuevo trabajo voy a estar aprendiendo y usando Ruby, así que iré mejorando por ese lado. Pero también estoy con ganas de armar algún proyecto en Scala – el nuevo Java-, lenguaje del cual también he leído bastante y dedicaré otro post en algún momento.
by Fernando at March 20, 2012 10:00 AM
Nos encontramos ante la onceava entrega de los Humble Indie Bundle: #1, #2, Frozenbyte, #3, Frozen Synapse, Voxatron Debut, Introversion, #4, Android y Mojam. The Humble Bundle for Android 2 incluye 5 juegos al precio que elijamos para GNU/Linux, Android, Mac OS y Windows.

The Humble Bundle for Android 2
El paquete incluye 5 juegos que debutan para teléfonos y tablets Android:

Swords and Soldiers
Swords & Soldiers es un juego de estrategia de desplazamiento lateral que debuta en plataformas GNU/Linux y Android. Tiene una jugabilidad balanceada perfecta para jugadores que buscan una experiencia de estrategia divertida y casual.

Zenbound 2
Zen Bound 2 es un innovador juego de rompecabezas de meditación que desafía las convenciones. A los jugadores se les da una figura de madera que debe ser envuelta en cordel a través de un proceso de rotación creativa.

Canabalt
Canabalt es un juego de plataformas que involucra correr a través de una ciudad durante una invasión extraterrestre saltando de techo en techo.

Cogs
Cogs es un alabado juego de rompecabeza en 3D que le da al jugador estructuras mecánicas que necesitan ser reparadas para funcionar correctamente.

Avadon
Avadon: The Black Fortress es la saga RPG de fantasía de Spiderweb Software de Jeff Vogel, un estudio independiente conocido por las experiencias extensas y complicadas tramas.
También recibimos con nuestra compra la banda sonora oficial de cada juego.
Las condiciones siguen siendo las mismas que en los bundles anteriores:
- Elegir cuánto pagar, para obtener Swords & Soldiers hay que pagar más que el promedio – U$S 6.14 en este momento.
- Multiplataforma, ahora más que nunca agregándole a GNU/Linux, Mac y Windows el sistema operativo Android.
- Sin DRM, podemos instalar los juegos en cuantos dispositivos se nos antoje, sin protección anti-copia, sin validación, etc.
- Donar a la caridad, podemos personalizar nuestro pago y dividir la suma entre los desarrolladores, el Humble Bundle y Child’s Play o the Electronic Frontier Foundation.
- Claves de Steam, quienes usen este sistema, pueden pedir claves de Steam para descargarlos desde ahí.
El video presentación muestra algo de gameplay de los cinco juegos. Aunque las voces (sobretodo la imitación barata de Arnold Schwarzenegger) ya se están volviendo viejas. Espero que elijan mejores campañas para futuros videos:
Vengo comprando todos los bundles que han salido. Esto de que apoyen GNU/Linux como plataforma ha hecho que mi biblioteca de juegos haya aumentado bastante.
Un tema no menor que seguramente resuelvan es el control de versiones de juegos instalados. Si uno de los desarrolladores del primer Bundle lanza una actualización de su juego, no tengo cómo enterarme. Debería ir al sitio de descarga y fijarme. Sé que han salido actualizaciones -por ejemplo de los juegos de Puppy Games- pero me entero por Twitter o algún sitio web.
Ya veremos cómo evoluciona el Humble Bundle a medida que sigan creciendo en popularidad e infraestructura

The Humble Bundle for Android 2
Mientras pensamos un poco en esto, los invito a pasar por el sitio web de Humble Bundle y pagar el precio que elijan por estos 5 juegos.
by Fernando at March 20, 2012 01:16 AM
March 19, 2012
El 17 de febrero de 2012 fue mi último día trabajando en Globant Montevideo. Me encontraron en LinkedIn, y empecé a trabajar ahí en julio de 2010 cuando éramos menos de 20 personas. Al irme habían más de 200 empleados en la oficina. Por ese lado fue una experiencia nueva: estar en una empresa grande, multinacional, y ver crecer las oficinas desde un principio. Como en todos los trabajos, me voy de Globant con más amigos de los que tenía antes.
El 5 de marzo empecé una nueva etapa laboral en Cubox. Empecé a transitar un nuevo camino donde las cosas se hacen de manera bastante distinta. Si leen este blog seguido en algún momento han leído el nombre “Cubox”. La empresa colabora mucho en la comunidad de desarrollo, tanto a nivel local como internacional. Han sido organizadores de RubyConf Uruguay y Desarrollando América Latina, además de participar en varios otros eventos.

Cubox - Available for awesomeness
Evan Henshaw-Plath -fundador de Cubox- ha dado varias conferencias importantes como La Cultura Ruby, Conferencia sobre Datos Abiertos y la historia secreta de Twitter, Lean Startups y más. Otros miembros del equipo Cubox han dado charlas en conferencias internacionales en Argentina, Chile, España, Brasil, Alemania, Japón, India y Ucrania.
Las oficinas se encuentran en el primer espacio de Coworking de Montevideo. Compartimos lugar con otras empresas y freelancers de varias partes del mundo. Además el Coworking ha sido sede de varias reuniones, charlas y encuentros como Desarrollando América Latina, el último MySQL Meetup, y más.
Todo esto ha hecho que Cubox haya estado en mi radar por un tiempo. Hasta que finalmente se alinearon los planetas y se dieron todas las condiciones para que empezara a trabajar con ellos. La cultura de Cubox es bastante importante, se relaciona mucho con la cultura hacker de la que hablaba Eric Raymond. La empresa se formó con desarrolladores de la comunidad Ruby local y el espacio de coworking.
La entrevista para ser parte del equipo es bastante particular e interesante. En primera instancia, somos entrevistados por varios miembros del equipo que van pasando uno a la vez. Las preguntas no fueron tanto técnicas del estilo “¿Cuál es la diferencia entre un StringBuilder y un StringBuffer?” o “Del 1 al 10 cómo te puntuarías en X lenguage?”. Hubo preguntas de conocimiento sí, pero más generales. También hubo un puzzle para poner a prueba la capacidad de resolución y razonamiento a la hora de enfrentarse a un problema. Otros no fueron más que charlas informales sobre distintos aspectos del mundo del desarrollo de software.
La segunda etapa consta de unos días de Pair Programming con los integrantes del equipo. Creo que es la forma más efectiva que he probado hasta ahora de contratar a un programador. Se podría decir que “ideal”. Además, la empresa abraza las metodologías ágiles, desarrollo orientado a tests (TDD) y se especializa en tecnologías web como Ruby, JavaScript, Go, HTML 5 y más.
Llevo dos semanas trabajando en Cubox y ya he tenido la oportunidad de aprender mucho. El ambiente es muy bueno, y el nivel técnico del equipo muy alto. Creo que su cultura está muy alineada a la cultura que me he formado como desarrollador. Esto no es coincidencia o una opinión personal, cuando me fui de Globant varios compañeros adivinaron que mi próximo destino era Cubox.
La empresa nos alienta a desarrollar software libre, mantenernos al tanto con la tecnología que usamos y crear código de alta calidad. Acá pueden ver algunos de los productos de Cubox, varios de ellos Software Libre. Uno de los productos surgidos de la empresa es Webrocket, proyecto en el cual estuve trabajando estos primeros días implementando un cliente en Java.
Así que este es el camino que voy a recorrer a partir de ahora. ¿Cómo cambia esto al blog? Por una parte se me ocurren muchas cosas nuevas para escribir al estar aprendiendo cosas nuevas todo el tiempo. Además, seguramente esté publicando entradas por el blog de Cubox también. El viejo blog estaba alojado en WordPress y lo migramos a Octopress. Podría dedicarle un post a Octopress, es tan interesante que incluso pensé en migrar Picando Código a ese sistema. Pero lo veo más factible para algún proyecto nuevo. Este blog ya lleva mucho con WordPress 
Así que esas son las noticias. Como con cada cambiazo grande, el blog sufrió un poco teniendo pocas actualizaciones al tener la cabeza en otras cosas. Pero a medida que todo se vaya acomodando, voy a volver a postear por acá con más cosas nuevas para compartir.
Por cierto, en Cubox estamos buscando programadores que quieran trabajar con nosotros. Visiten este enlace para conocer más, saber qué se busca y convencerse de entrar en contacto 
by Fernando at March 19, 2012 11:00 AM
El fin de semana pasado por fín miré la película Hugo. Es una peli muy entretenida y disfrutable. Los vestuarios, escenarios, efectos especiales, actuaciones y demás son espectaculares. No voy a hacer una reseña completa de la película, para eso les recomiendo se pasen por: Multiverseros – Hugo (2011)
La historia se desarrolla a principios del sigo 20 (¿ya dije que la ambientación es excelente?) en París. Hugo -gracias a las enseñanzas de su padre- tiene un talento especial para “reparar cosas”. Esto me hizo pensar: “Así eran los hackers del 1900, reparaban cosas”. Por medio de un autómata Hugo termina conectado a George Méliès, un antiguo ilusionista y cineasta.
Aparte de la trama principal, me interesó mucho el homenaje a la realización de películas en sí. George Méliès fue de los primeros en usar efectos especiales en sus películas. Y se muestran imágenes de cómo trabajaba en su estudio, explotando entonces la verdadera creatividad. Hoy en día mi percepción general es que el abuso de efectos digitales baratos lleva a que los realizadores sean menos creativos en general. Bueno, mi post sobre películas para ver en 2012 muestra que la gran mayoría son re-makes o basadas en obras de otros medios, así que no se puede pedir mucha creatividad en estos días…
Hugo por suerte es una de las excepciones al caso que comento en el sentido de la creatividad. Con efectos especiales modernos se logra una película interesante, y se mantiene ese homenaje al cine como manifestación artística. De lo que más me atrapó creo -aparte de una excelente ambientación (ah, ya lo dije…)- fue tener esa muestra de cómo se hacía cine en esos tiempos y lo que se generaba.

The Invention of Hugo Cabret
La obra está basada en el libro “The Invention of Hugo Cabret”, que también resulta bastante especial. Se trata de un libro de ficción histórica, por lo que está inspirado en la verdadera historia de George Méliès. Fue escrito e ilustrado por Brian Selznick quien lo describe como una novela, libro de fotos, novela gráfica, folioscopio y película combinados.
Méliès tuvo algún autómata en la vida real y terminó trabajando en una cabina de juguetes en una estación de trenes de París. Durante su carrera cinematográfica dirigió la friolera de 555 películas (entre 1896 y 1914). La mayoría se perdieron en el tiempo, habiendo disponibles unos 200 actualmente.
Muchos conocerán el trabajo de Méliès aunque sea indirectamente. Decir que fue pionero de los efectos especiales implica que mucho de lo que vemos en las películas actuales no existiría de no haber sido por él.
Una de sus obras más conocidas (que aparece con bastante protagonismo en la película) es Le Voyage dans la lune – El viaje a la Luna. Esta película está levemente basada en “De la Tierra a la Luna” de Julio Verne y “Los primeros hombres en la Luna” de H. G. Wells. Fue la primera película de ciencia ficción de la historia y se encuentra en el dominio público. Me pareció un video interesante para estrenar el tag video en el blog:
Tu navegador no soporta el tag html5 video. Por favor actualizate…
Hay muchas otras películas de Méliès para ver y disfrutar. Son mudas, muchas en blanco y negro (las que son a color fueron pintadas a mano cuadro por cuadro), y sencillas, pero vale la pena darles una mirada.
by Fernando at March 19, 2012 10:00 AM
March 16, 2012
EL pasado año en la lista de correo del Hackspace Montevideo HSM, Dklight informo de la existencia de controladores para pantallas de notebooks quemadas, y justo se me había quemado hacia poco la mía…
Me puse a buscar información,
primero desarmar toda la notebook para saber específicamente que modelo de pantalla tenia la misma para así saber a ciencia cierta si me serviría la controladora, luego de verificado esto el modelo de pantalla era B170PW03 v.4.
Sabiendo esto comenze a buscar entonces una controladora para esta y encontre en ebay la misma, el modelo es R.RM5251 LCD Controller Board Kit, la encargue y pasados unos días ya tengo la pantalla funcionando.
Les dejo un video mostrando el funcionamiento.
by Sanux at March 16, 2012 10:13 AM
March 09, 2012

Fundación Ciudadano Inteligente
Les presento un nuevo y muy interesante proyecto de los hermanos chilenos de Fundación Ciudadano Inteligente: Del Dicho Al Hecho. Otro excelente ejemplo de cómo la tecnología puede ayudar a la ciudadanía a obtener transparencia en sus gobiernos.
Comunicado de Prensa
- La Fundación Ciudadano Inteligente (FCI), con motivo del cumplimiento de dos años de Gobierno, acaba lanzar un nuevo sitio que fiscaliza el cumplimiento de las promesas del Programa de Gobierno del Presidente Sebastián Piñera en materia legislativa.
- Navegando por www.deldichoalhecho.cl se puede encontrar el estudio realizado por esta ONG chilena, que trabaja para fomentar la participación ciudadana y la actividad pública.
Marzo de 2012. La ONG Ciudadano Inteligente elaboró un estudio que determina la congruencia entre el comportamiento legislativo del Ejecutivo y las promesas contenidas en el Programa de Gobierno del Presidente Sebastián Piñera.
La investigación se puede ver directamente en www.deldichoalhecho.cl y entre las principales conclusiones se puede señalar que el Programa de Gobierno tiene un cumplimiento de 24,4% en materia legislativa.
Otra de las conclusiones relevantes obtenidas por FCI es la llamada “agenda alternativa”, donde podemos apreciar que el 69% de los proyectos de ley ingresados al Congreso por el Ejecutivo no tienen relación con el cumplimiento de alguna de las promesas contenidas en el Programa de Gobierno, lo que demuestra que no necesariamente éste ha significado una carta de navegación en materia legislativa. Este 69% excluye los proyectos de ley relacionados con la reconstrucción, los que representan el 8% del total de proyectos ingresados al Congreso en estos dos años de Gobierno.
Al mismo tiempo, el estudio concluye que la administración Piñera ha ingresado al Congreso un 28% más de proyectos de ley que el gobierno de Michelle Bachelet en sus dos primeros años de mandato.

Del dicho al hecho
La metodología
La Fundación Ciudadano Inteligente trabajó durante seis meses en desarrollar este estudio con un equipo de trabajo de sociólogos y cientistas políticos especializados en temas legislativos. Se revisaron los proyectos de ley relacionados con las promesas contenidas en el programa de Gobierno y se evaluaron según dos indicadores: Estado de avance y Concordancia entre promesa y proyecto. A cada indicador se le asignó un valor de 50% en la evaluación que se realizó en los proyectos de ley. Cada promesa obtuvo así un porcentaje de cumplimiento, para luego sacar un promedio según área. Para elaborar el estudio se consideraron datos hasta el 31 de enero del 2012.
Promesas por áreas
Las áreas con un índice de cumplimiento superior al 50%, es decir, en estado ‘Avanzado’, son: Ciencia y Tecnología, Telecomunicaciones, Mercado Transparente, Tercera Edad, Democracia, Cultura y Patrimonio, Pobreza y Potencia Agroalimentaria. 16 áreas presentan un estado de avance inferior al 50%, y 13 áreas no presentan avance en materia legislativa.
Esas 13 áreas son Innovación y emprendimiento; infraestructura; transporte público; educación superior; salud; vivienda y ciudad; pensiones; discapacidad; sistema judicial; relaciones internacionales; infancia; derechos humanos; y deporte, donde no se han presentado proyectos de ley que busquen el cumplimiento de las promesas del Programa de Gobierno.
Por otro lado, en un tema tan controvertido como educación, se hicieron 11 promesas en el Programa de Gobierno que implicaban iniciativas de ley, además de tres promesas del mismo tipo en educación superior, porque ambas fueron tratadas como áreas separadas. El estudio de FCI señala que en educación se enviaron al Congreso seis proyectos de ley, siendo el más relevante el proyecto Sobre Calidad y Equidad de la Educación. Sin embargo, en educación superior no se envió ningún proyecto que tuviera relación con las promesas, probablemente porque las prioridades cambiaron ante la irrupción del movimiento estudiantil.
Precisamente como una manera de reaccionar al movimiento estudiantil se enviaron tres proyectos de ley, principalmente sobre los créditos universitarios y la creación de la Superintendencia de Educación Superior. Medidas que no estaban contempladas dentro de las promesas del Programa de Gobierno.
Citas
Felipe Heusser, Presidente Ejecutivo de la Fundación Ciudadano Inteligente comenta, “Como hemos constatado en este estudio, un 69% de los proyectos de ley ingresados por el Ejecutivo al Congreso corresponden a la Agenda Alternativa, lo que, más allá de evaluar la pertinencia de estos proyectos, nos invita a reflexionar sobre cómo vincular lo prometido en campaña con lo que se hace durante la gestión, es decir, a que se establezca una relación proporcional entre lo dicho y lo hecho”
Manuel Arís, Director de Vota inteligente de la Fundación Ciudadano Inteligente comenta, “Más allá de la calificación de bueno o malo del 24% de cumplimiento, en lo que tenemos que avanzar es que los futuros candidatos a elecciones, de cualquier tipo, elaboren sus programas de gobierno con la intención real de implementarlos cuando hayan sido elegidos, para que los ciudadanos mejoremos la confianza en los políticos y dejemos atrás la idea de que los políticos se olvidan de sus promesas cuando llegan al poder”
Web (Para mayor información)
www.deldichoalhecho.cl
by Fernando at March 09, 2012 11:50 AM
March 06, 2012
Una de las cosas que me ayudó en mis años de niño cuándo mis padres me mandaron a aprender el idioma inglés fue darme cuenta que el castellano resultaba mucho más difícil de aprender para un angloparlante (y ese ya lo sabía). En aquellos momentos las estructuras sintáxticas y los verbos en inglés me parecieron de una simplicidad pasmosa, frente a los complicados tiempos verbales del castellano y las excepciones que trataba de entender escribiéndolas en mis cuadernos de Idioma Español.
Estos días ha estado circulando en Google+ y en Twitter un video realizado por Juan Andrés y Nicolás Ospina sobre las dificultades de hablar español, inclusive luego de haberlo aprendido (jas!)
Qué difícil es hablar el español,
porque todo lo que dices tiene otra definición.
Qué difícil entender el español,
Yo ya me doy por vencido, para mi país me voy.
by rodolfo at March 06, 2012 01:34 AM
March 02, 2012
Comparto con ustedes la información de un evento interesante en Montevideo:
Conferencia a cargo de Evan Henshaw-Plath (@rabble), co-creador de Twitter.
Hacker y Troublemaker. Fundador del equipo técnico de indymedia.org. Ingeniero a cargo en odeo.com, compañía que creó Twitter.
Trabajó en Yahoo & Co, donde creó el grupo de desarroladores Ruby. Fundador de la consultora Cubox.
En la diaria lo publicitan con:
Imaginate todo lo que te puede decir en 120 minutos uno de los que hicieron que millones nos digamos todo en 140 caracteres.
Fecha: Lunes 5 de marzo a las 19:00 horas
Lugar: Café la diaria – Soriano 770, esquina Florida, Montevideo
Inscripción:
http://ladiaria.com.uy/eventos/
by Fernando at March 02, 2012 06:13 PM
Este año trae muchas películas interesantes para ir a ver al cine o conseguir en alguna bahía pirata por internet. Nada muy original desde Hollywood como es de esperarse. De hecho todas las películas hollywoodenses que voy a listar (excepto una) son basadas en un libro o cómic, precuelas, secuelas o remakes:
John Carter
Película épica de ciencia ficción basada en el personaje escrito por Edgar Rice Burroughs en varias novelas. También incursionó el mundo de los cómics escrito y dibujado por el hijo de ERB John Coleman Burroughs. No he tenido el gusto de leer sus obras todavía, pero la película tiene una pinta impresionante, y he leído muy buenas cosas sobre la saga:
Estreno: 9 de Marzo
Wrath Of The Titans
La secuela de Clash Of The Titans de 2010. Si bien la primera no estuvo muy buena, esta se ve muy bien, con muchas criaturas mitológicas nuevas y acción a granel. Me imagino una película que para disfrutar hay que verla en un buen cine. Ah, y está Qui-Gon Jinn como Zeus 
Estreno: 30 de Marzo
The Three Stooges
Hollywood se está quedando sin ideas… Un remake de los Tres Chiflados que lleva años en producción, finalmente logró filmarse y será estrenado en unos meses. Mi primer impresión fue negativa, nadie podría recrear la esencia del grupo original y llevarla con éxito al cine y modernizar a los personajes. Pero tras ver el trailer y la genial interpretación de Curly por Will Sasso, creo que la película puede ser bastante divertida:
Estreno: 13 de Abril
The Avengers
Un proyecto que se viene gestando en los estudios Marvel desde hace un buen tiempo. La primer señal la obtuvimos en Iron Man en 2008. De ese entonces comentaba:
Supuestamente más adelante tendremos la salida de la película de Thor y el Capitán América. Y ya tenemos películas de Hulk y Iron Man. ¿Estará Marvel preparándonos para la saga de super héroes más espectacular de todos los tiempos llevada al cine? ¿Sería ésto posible? Son solo suposiciones, pero lo que es seguro es que de alguna manera, Los Vengadores, estarán presentes en Iron Man 2.
Y acá estamos, 4 años después, esperando ansiosamente el estreno de The Avengers. Este grupo de superhéroes es uno de los que más he leído en cómics, y sus títulos son de los más presentes en mi colección de cómics. Más allá de mi fanatismo por los cómics, los trailers son espectaculares, y han levantado mucha expectativa hacia la película. Seguramente será la película del año.
El guión se perfila al estilo del universo Ultimate de Marvel. Hasta ahora sabemos seguro que estarán Bruce Banner y Hulk, Thor, Capitán América, Iron Man, Hawkeye (ya visto en Thor), Black Widow y Nick Fury. Lo que queda pendiente, y espero nos sorprenda durante la película, es la aparición de Henry Pym (Ant-Man) y Janet Van Dyne (Wasp). Estos dos personajes siempre fueron parte del equipo original de Avengers, así que aunque sea por un cameo, o mención, espero verlos en la película.
Ahora, los trailers, que ya he visto montones de veces esperando el día del estreno. Ya he sacado varias suposiciones a partir de estas imágenes, pero lo dejo para un post sobre la película después de verla 
El segundo trailer se titula “Avengers Assemble”, el nombre de la película en Reino Unido:
Día Avengers: 4 de Mayo
Men In Black 3
La primera película de Men In Black salió en 1997. Mi padre me regaló la versión original en VHS en esa época, así que la miré y disfruté muchas veces. No alcancé a mirar Men In Black 2, y por lo que me han comentado, no me pierdo de nada. De todas formas, es una película a tener en cuenta esta temporada de cine.
Esta versión incuye – además de la dosis necesaria de vida extraterrestre en la tierra – viajes en el tiempo y los secretos del universo que K nunca le contó a J.
Les dejo el trailer con un comentario fuera de tema, ¿está Richard Stallman joven y rubio en la película?
Estreno: 25 de Mayo
Prometheus
Película de ciencia ficción del director Ridley Scott. Se trata de una precuela de la película Alien. Por lo visto hasta ahora en los trailers, parece que va a valer la pena ir a verla al cine:
Estreno: 8 de Junio
Brave
Una nueva película de Pixar no puede faltar en la lista de “Películas para ver”. Animación generada por computadora en 3D en un largometraje de fantasía y aventura en las Tierras Altas de Escocia. La única película proveniente de Hollywood que listo y no es precuela, basada en un libro, ni nada de eso.
Estreno: 22 de Junio
The Amazing Spider-man
Tras la derrota emocional que significó la trilogía de Sam Raimi sobre Spiderman, me costó mucho entrarle a este nuevo reboot. “Reboot” como en “tiran por la borda todo lo acontecido hasta ahora, y hacen borrón y cuenta nueva”. Bien por Sony, no había nada mejor que hacer por la mencionada trilogía.
En un principio me molestaba bastante la premisa de volver a contar la historia de Spider-man en el cine. Creo que el cine basado en personajes de historietas ya maduró lo suficiente como para no tener que contar el origen de cada uno en la primer película. Aparentemente no va a ser tan así, y como era de esperarse se tomaron algunas “libertades creativas” en el guión, pasando por arriba parte de lo que ya se escribió en cómics. Por lo menos parece que las telas de araña no salen de la piel de Peter Parker…
Tampoco me convencía mucho Andrew Garfield como Peter Parker, pero después de verlo representando a Spider-man, le tengo un poco más de fe. En verdad no quería saber nada de esta película hasta que ví el siguiente trailer y concluí que seguramente no va a ser tan mala como las anteriores:
Estreno: 3 de Julio
The Dark Knight Rises
Vuelve el Caballero de la noche, en la conclusión a la serie de Christopher Nolan. Seguramente una de las películas más importantes del género en 2012, siendo el cierre de lo que ha sido seguramente la mejor interpretación audiovisual de Batman hasta el momento. Los detalles del guión se vienen guardando muy secretamente, lo que hace que en internet pululen rumores sobre la trama por todos lados.
Personalmente disfruté mucho las entregas anteriores. Pero si bien va a ser un peliculón, creo que se va a ver opacada por la otra película de superhéroes que mencioné…
Estreno: 20 de Julio
Iron Sky
Ya comenté sobre Iron Sky en una entrada anterior. Si bien me encantaría tener la oportunidad de verla en una sala de cine, probablemente me tenga que conformar con descargarla de internet cuando esté disponible.
The Hobbit: An unexpected Journey
Esta película estuvo mucho tiempo en “development hell”: período en el que una película se ve atrapada en desarrollo y puede o no ser producida algún día. Por suerte para nosotros se concretó. Cuenta nuevamente con la dirección de Peter Jackson y el regreso de varios de los actores principales de la trilogía de El Señor de los Anillos.
El libro de Tolkien está siendo adaptado en dos películas, siendo ésta seguida por The Hobbit: There and Back Again, que se estrenaría el año que viene. Si bien leí la trilogía de El Señor de los Anillos, tengo pendiente leer El Hobbit. Veremos si llego a leerlo antes del estreno de la película.
Bilbo Bolsón será interpretado por Martin Freeman, también conocido como Arthur Dent en la película de La guía del Autoestopista Intergaláctico. Ian McKellen volverá a ser Gandalf, Andy Serkis como Gollum, Elijah Wood como Frodo (¿Frodo? ¿Esto no era antes de Frodo?) y Orlando Bloom como Legolas, entre otros.
Estreno: 14 de Diciembre
God Bless America
No recuerdo cómo llegué al trailer de esta película pero me resultó excelente la trama. Se trata de una sátira política con humor negro. Tras ser diagnosticado con un tumor cerebral, Frank decide suicidarse mientras mira TV. Pero al ver un reality show en la TV, decide salir a matar gente y librar al mundo de la gente molesta, particularmente estrellas de reality shows de la TV. En su mente, Frank solo mata a gente que “merece morir”.
A algunos les puede resultar un poco fuerte. A mí me asustó, porque parecía que alguien había leído mi mente y creado una película con lo que enconró ahí… Seguro no soy el único que piensa en usar un lanzallamas cada vez que es expuesto a la idiotez absoluta que emiten los canales de televisión. No haría mal tener un Frank por estos lados que se encargue de toda esa manga de invertebrados que aparecen a diario en la televisión uruguaya y argentina que conforman la pseudo farándula (vomité un poco en mi boca con solo tener que pensar en este término).
En fin, no se lo tomen muy en serio. ¿Quienes son esos tipos con túnicas blancas golpeando en mi puerta junto a un oficial de policía? Hospital Psiquiátrico…
Estreno mundial: 6 de Abril (ya fue mostrada en el Festival de Cine Internacional de Toronto en 2011)
¿Qué película falta?
Listé todas las películas que tenía en mente. Pero a lo mejor falta alguna. Probablemente la ceguera generada por el fanatismo con Avengers me haya hecho olvidar alguna más que valga la pena ver.
En fin, si tienen alguna otra película que crean valga la pena ver, o quieren discutir en los comentarios, los invito a participar del post.
by Fernando at March 02, 2012 03:33 PM
February 29, 2012

Internet es una red de redes de alcance mundial, es la primera vez en su historia que la humanidad tiene un foro donde encontrarse y compartir información globalmente, y si bien en algunos países se han implantado diversas formas de censura, también es claro que se han encontrado formas de evadirla. Ha sido y es un elemento que sirve para aumentar la participación social en temas de interés común.
Tal vez lo anterior sea el principal motivo de reacción contra los proyectos de ley:
SOPA (Stop Online Piracy Act, “To promote prosperity, creativity, entrepreneurship, and innovation by combating the theft of U.S. property, and for other purposes.” —H.R. 3261) y
PIPA (PROTECT IP Act, Preventing Real Online Threats to Economic Creativity and Theft of Intellectual Property Act)
de muchos actores asociados con Internet, que van desde organizaciones de defensa de los derechos humanos u organismos principalmente técnicos como LACNIC hasta empresas como Google o Facebook, pasando por Wikipedia. LACNIC, Registro de Direcciones de Internet Para América Latina y Caribe, es la organización responsable de la asignación y administración de las Direcciones IP y recursos relacionados (Números Autónomos y Resolución Inversa) para la región de América Latina y el Caribe y es uno de los 5 Registros Regionales de Internet en el mundo. Con sede en Montevideo, Uruguay.
Es claro que si desapareciera Internet, se acabaría el problema de violación de los derechos de autor a través de ella. En esa situación hipotética los que lucran con los derechos de autor verían retornar las ganancias del pasado muchas veces poco compartidas con quienes les confiaron sus obras. Basta recordar el triste final, desde el punto de vista económico, de algunos de nuestros principales músicos, por no hablar de otras áreas.
También es claro que hay que proteger los derechos de autor, tenemos que defender a nuestros creadores y eso pasa por muchos planos además de controlar las copias ilegales, tal vez la discusión generada, con relación a Internet, sirva para que el tema se trate más globalmente y no solo desde el punto de vista de los que tienen el derecho contractual de vender las copias. Tampoco se puede poner en un mismo lugar a todas las empresas, inclusive algunas han sido creadas por los propios autores tratando de modificar una situación que, en muchos casos, ha sido de una gran asimetría entre ellos y algunas empresas editoriales.
Pero por supuesto que apagar Internet sería un grave error, que afectaría negativamente a nuestra sociedad de muchísimas formas, además de ser algo prácticamente imposible, dado que el interruptor no se encuentran en ningún lado. Pero la red de redes sí tiene algunos aspectos que se pueden dañar tomando algunas medidas, al punto de hacerle perder esa característica de foro de alcance mundial que la singulariza.
Y justamente lo que vamos a tratar de explicar en este artículo es que la aplicación de leyes como SOPA y PIPA no solo no solucionarían el problema de difusión de copias ilegales, menos aún a nivel doméstico, sino que además generarían un grave daño a Internet como la conocemos hoy en día. Voy a referirme a ambos proyectos como un todo, dado que comparten la misma filosofía y ya han sido descartados antes de ser presentados para su votación gracias a la reacción que generaron. A pesar de lo cual, como veremos más adelante, han sido anunciados nuevos embates de proyectos similares a futuro, por lo cual es importante comprender lo que puede ocurrir de prosperar iniciativas de este tipo.
Mi primer contacto con el tema fue un interesante artículo escrito por tres profesores universitarios; Mark Lemley, David S. Levine, & David G. Post, publicado el 19 de diciembre del año pasado en la Stanford Law Review, titulado “Don’t Break the Internet”, que se podría traducir como “ No rompamos Internet” o “No destruyamos Internet” y se refería justamente a ambos proyectos de ley. Según dicho artículo “Ambos proyectos presentan graves problemas constitucionales y podrían tener consecuencias desastrosas para la estabilidad y seguridad del sistema de direcciones de Internet, para el principio de interconectividad que ha impulsado el extraordinario crecimiento de Internet y para la libertad de expresión.”
¿A qué se debe la reacción de estos profesores universitarios?, de acuerdo a dichos proyectos bastaría que un fiscal federal alegara que un sitio viola los derechos de autor para disparar una serie de acciones sin que el afectado pudiera frenarlas, las acciones principales serían las siguientes:
1) Todos los sitios con sede en EEUU, tendrían prohibido resolver dicha dirección, o sea guiar al número IP correspondiente a dicho sitio web.
2) Se prohibiría a los sistemas de pago por Internet trabajar con dichos sitios, a los buscadores indexar su contenido y tampoco se podría realizar publicidad en ellos.
3) Por otra parte las empresas de alojamiento deberían controlar los sitios web y dar de baja aquellos que incluyan medidas de elusión tendientes a sortear las barreras de la censura.
Lo primero ataca claramente un problema de tipo legal con una solución que compromete la infraestructura técnica de Internet, creando graves problemas a dicha infraestructura. Por otra parte esas medidas técnicas podrían generar que se empezaran a utilizar medios alternativos a los actuales ( sistema de DNS ) para llegar a los sitios web. Todo lo cual llevaría a una pérdida de la homogeneidad y simplicidad existente actualmente en Internet, complicaría su funcionamiento y tal vez llevaría a la creación de una Internet subterránea donde se seguirían difundiendo contenidos ilegales de una manera menos visible. Resultando todo más complicado y sin beneficio alguno, a mediano plazo, para el fin propuesto. Es más, podría generarse un daño irreparable a la unidad de Internet, fraccionando la misma en diversos planos.
En cuanto a lo segundo, bastaría la comunicación del fiscal o en este caso de la empresa dueña de los derechos de autor, para que los sistemas de pago actualmente en uso de Internet, tuvieran una semana de plazo para tomar las medidas técnicas destinadas a evitar que se puedan realizar transacciones de pago con el sitio en cuestión, sin necesidad ni siquiera de avisar al titular del sitio o permitirle realizar descargos.
Eso haría posible la creación de listas negras de sitios web por parte de las grandes empresas del sector que inclusive podrían llegar a evitar la aparición de compañías emergentes acusándolas por cualquier motivo de violar los derechos de autor, eso ya ha ocurrido en otros ámbitos, como el del software, pero en este caso las empresas tendrían una ventaja, de acuerdo a la ley propuesta, los proveedores de servicios serían inmunes a las demandas de los clientes dados de baja, dado que, frente a la reclamación de una empresa por violación de derechos de autor, se consideraría que han actuado de buena fe.
Imaginemos ahora a una empresa cualquiera que injustamente se ve exiliada de Internet por la aplicación de estas leyes. ¿ Cuánto dinero en juicios le podría costar probar su inocencia en los tribunales de EEUU para poder volver a funcionar ?. En el caso de pequeños emprendimientos es claro que difícilmente podrían solventar dicho proceso.
El tercer punto tendría como resultado frenar desarrollos innovadores en la web creados para evitar la censura en países que hoy en día utilizan diversos mecanismos de censura sobre Internet. Esto es debido a que SOPA y PIPA utilizarían justamente, para evitar la difusión de los sitios que supuestamente violan derechos de autor, mecanismos similares. Eso implicaría abrir la puerta a la censura en la web por diversos motivos, pero censura al fin y al cabo. Poniendo fuera de la ley y atando de manos a los que han desarrollado software y/o instalado servidores destinados a eludir la censura en países donde no se permite la libertad de expresión. Lo cual atentaría justamente con la existencia de Internet como un foro mundial donde toda la humanidad se encuentra y se expresa en libertad.
Gracias a la gran reacción de muchos actores, tal vez el más notorio Wikipedia, que fue apagada por un día entero en su versión en inglés, se logró frenar el tratamiento de ambos proyectos en el Congreso de los Estados Unidos. De todas maneras, podemos leer en el sitio web del promotor de la ley PIPA, el senador Patrick Leahy, lo siguiente:
“El día vendrá cuando los Senadores que forzaron esta retirada, miraran atrás y se darán cuenta que tuvieron una reacción instintiva ante un problema monumental. En algún lugar de China hoy en día, en Rusia hoy en día, y en muchos otros países que no respetan la propiedad intelectual estadounidense, criminales que no hacen más que vender sus productos falsificados y robados de contenido estadounidense ven hoy con aire de suficiencia como el Senado de Estados Unidos decidió que no valía la pena debatir la forma de detener a los criminales que en el extranjero agotan nuestra economía”.
Luego hace referencia a que espera en el correr de este año presentar un nuevo proyecto de ley en el mismo sentido, evitando los problemas que suscitaron críticas en el proyecto anterior.
Es claro que su interés es evitar que desde EEUU se acceda a contenidos de servidores en el exterior, lo cual finalmente puede terminar sirviendo para avalar la censura realizada desde China a sitios en otros países.
Casualmente el artículo antes mencionado “No destruyamos Internet”, escrito un mes antes que el texto anterior de Patrick Leahy, terminaba diciendo:
“Sería no sólo irónico, sino trágico, unir a los Estados Unidos a las filas de estos regímenes represivos y restrictivos, levantar nuestras propias “paredes virtuales” para evitar que la gente tenga acceso a porciones de la red de redes. La aprobación de estos proyectos de ley pondrá en peligro nuestra capacidad de defender el principio de una Internet única y global, una Internet que tiene el mismo aspecto y permite la comunicación libre y sin restricciones entre los usuarios ubicados en Boston, Bucarest, y Buenos Aires, libre de cualquier censura impuesta a nivel local. Como tal, puede representar la mayor amenaza a la Internet en su historia.”
También LACNIC el organismo responsable de la asignación de direcciones IP en América Latina y el Caribe se manifestó y en su sitio web se puede leer lo siguiente sobre las leyes SOPA y PIPA: “La oposición generalizada a estas iniciativas por parte del ecosistema de Internet a nivel mundial ha determinado que por el momento estas hayan sido pospuestas, pero es muy probable que iniciativas similares con nombres distintos sigan siendo impulsadas en el Congreso de los Estados Unidos.
El Directorio de LACNIC emitió una declaración para dejar en claro la posición a sus asociados y la comunidad, en la que manifiesta su profunda preocupación por la potencial aprobación de estas iniciativas.
El eje central de la preocupación radica en que esos proyectos de ley habilitan de forma unilateral el bloqueo o filtrado de DNS (Domain Name System) con el objetivo de proteger Derechos de Propiedad Intelectual. Raúl Echeberría, Director Ejecutivo de LACNIC señaló que “es natural que se procure combatir ilícitos pero el impacto colateral que este tipo de iniciativas tiene va mucho más allá del ilícito que se busca combatir, además de que será global y afectará tanto a empresas, mediante sobrecostos importantes, como a usuarios en su libertad de expresión en toda la red”. Echeberría consideró desproporcionadas las posibles sanciones que se incluyen en esas leyes en relación al tema que se intenta solucionar.
Ambas iniciativas eliminan las garantías del debido proceso, ya que la sola presunción del delito, activa el filtrado y bloqueo que se dispondrán a partir de esta normativa. SOPA obliga a bloquear los servicios de cualquier página web que esté bajo investigación del Departamento de Justicia estadounidense por haber publicado material bajo derechos de autor, sin importar el lugar donde se encuentre radicado ese dominio. Oscar Messano, Presidente del Directorio de LACNIC se refirió a ello: “Se está intentando solucionar mediante mecanismos técnicos un problema que no es técnico sino político y legal, y se lo hace afectando al ecosistema de Internet a nivel global”.
A pesar de lo que plantean los promotores de los proyectos SOPA y PIPA, EEUU no está tan indefenso al momento de perseguir a los que permiten la difusión de contenidos ilegales, recientemente fue cerrado el sitio Megaupload, y fueron procesados varios de sus integrantes, pero además lo ocurrido con Megaupload sirve de ejemplo para entender, como en este mundo globalizado, una ley de EEUU se puede aplicar y perjudicar a personas honestas residentes fuera de EEUU, en el número de Búsqueda del 26 de enero se puede leer lo siguiente con relación al cierre de Megaupload: “ … Yo era cliente del repositorio y lo usaba para publicar videojuegos de mi autoría. Por tanto, la acción del FBI atacó directamente mi propiedad privada, mi libertad de expresión y la libertad de información de los demás. Por supuesto, soy apenas un dígito en más de un millón de usuarios registrados y obviamente muchos millones más de descargadores. …” Firma Esc. Diego Chijane.
Lo cual demuestra además que si el FBI no pudo discernir para separar contenidos legales de ilegales, mal lo puede hacer el responsable de brindar servicios de alojamiento. Es claro que la sanción a futuro de leyes similares a SOPA y PIPA perjudicaría no solo el funcionamiento de Internet y la libertad en la red de redes sino que además actuaría como traba para el funcionamiento de muchos negocios actuales en Internet, dado que el financiamiento de los sitios se vería perjudicado por el miedo a los cierres sin siquiera posibilidad de audiencia previa.
Entonces ¿cuál es la solución al problema de la violación de los derechos de autor?. Tal vez haya que cambiar el modelo de negocios basado en la venta de copias. Pero ese es otro tema, pendiente sin duda, pero otro tema. Alguien dijo una vez “denme la libertad de expresión y todo lo demás vendrá por añadidura” pues bien, no matemos la libertad en Internet, la promesa es que el mundo, gracias a ella, reciba todo lo demás por añadidura.
by fedaro at February 29, 2012 11:10 AM
February 26, 2012
Navegando por la web en el día de hoy me encontré con 2 proyectos que me parecieron fantásticos!
El primero fue Mozilla Drumbeat, sitio de la organización Mozilla que nuclea varios proyectos muy interesantes, dentro de los cuales se encuentra la Peer 2 Peer University, proyecto educativo online que le veo mucho futuro.
Me pueden encontrar como sanux en ambos sitios, nos vemos ahí!
by Sanux at February 26, 2012 07:16 AM
February 23, 2012

Perdidos en el Eter
El lunes estuve de invitado por MaGnUs en el programa de radio Perdidos en el Eter:
Desde 2003, Perdidos En El Éter ha sido un programa radial (por momentos online, y por momentos en radio tradicional) dedicado a los comics y temas afines, como la ciencia ficción, los juegos de rol y la animación. Todos sazonado con buena musica y con mucho humor. Los programas estan para bajar o escuchar online, con una frecuencia mensual, y tenemos un programa satelite semanal en vivo online, Nerdinastía.
Ya está disponible Perdidos en el Eter # 139 donde fui invitado a hablar del cómic Irredeemable. MaGnus, Peter Parker – del blog MVD1138 – y yo tuvimos una Mesa Nerdona sobre Alan Moore y su rechazo a Before Watchmen, donde toqué un poco de oído pero algo opiné.
MaGnUs presentó un segmento sobre la novelista infantil y juvenil Enid Blyton. Personalmente no conocía su obra, pero su historia y biografía son bastante interesantes.
Peter presentó una nota de la serie de TV Carnivàle, una serie que conocía de vista nomás, pero resultó bastante interesante. Habrá que mirarla, sabiendo que quedó inconclusa.
También escuchamos buena música. Personalmente llevé un tema de Gogo Squat, del EP Sueño Lúcido que pueden escuchar online y descargar en gogosquat.com.
Agradezco a MaGnUs por la invitación. Además de haberme divertido durante la grabación del programa fue una experiencia interesante. Hablamos de temas importantes como pueden ver, y ese tipo de conversaciones siempre son muy entretenidas, más con gente que sabe mucho de cómics 
Es distinto el tema de expresarme a través del blog donde tengo tiempo de pensar lo que voy a decir, y puedo borrar y reescribirlo cuantas veces quiera a hablar frente a un micrófono. Es mas espontáneo, y si bien uno más o menos tiene pensado de qué va a hablar, es todo muy improvisado.
¡Espero que lo escuchen y sigan atentos a Perdidos en el Eter!
Pueden descargar el programa desde Sendspace o Mediafire. También visiten Dónde escucharlo en el blog para ver varias formas de escucharlo (en radio e internet).
by Fernando at February 23, 2012 12:00 PM
February 22, 2012

Perl
Hace unas cuantas noches tuve un sueño bastante raro y específico. Soñé que debía programar algún tipo de aplicación web. Fue uno de esos sueños que uno recuerda más tarde, y no está seguro si lo soñó o realmente pasó.
Lo más raro es que de todo el sueño lo que más me acuerdo es de una característica en particular del proyecto que tenía que programar: tenía que usar Perl. No recuerdo mucho más del sueño, salvo algunas imágenes sueltas.
Creo que cada vez que soñamos, se trata de un ser de otra dimensión intentando comunicarnos algo a través de un canal cósmico de comunicación cuyo receptor en nuestro cerebro solo se encuentra abierto al dormir. Los paquetes transmiten generalmente mensajes que alterarán nuestro destino en busca de una vida más iluminada y llena de sabiduría…
No, mentira, los sueños deben ser alucinaciones causadas por reacciones al azar en nuestro cerebro mientras dormimos. Freud creía que eran una expresión simbólica de deseos frustrados que han sido relegados al inconsciente. Así que hagámosle caso a Don Sigmund y usémoslo como excusa para jugar con Perl, ya que es lo que mi inconsciente quiere… Acá algunos dirían que sí, que hay que ser medio inconsciente para querer programar en Perl por gusto, pero resulta divertido.
Iniciando la aventura comencé por recordar algunos posts sobre Perl en el blog. Lo bueno de tener un blog es que puedo repasar fácilmente anécdotas anteriores de cómo me enfrenté a algún lenguaje. En el caso de Perl, lo hice en aprendiendo Perl en 2009. También recuerdo Dedicado a los programadores… sobretodo a los de Perl, que fue un post de grilix bastante interesante por esa época.
Mojolicious: El desarrollo web puede ser divertido de nuevo

mojolicious
Llegué a Mojolicious hace un buen tiempo por un post en Reddit. Siempre lo tuve pendiente de probar, me llamaba mucho la atención la idea de un framework web moderno para Perl. El sitio web es divertido, y tiene unicornios y arcoiris en el encabezado…
Allá por los primeros días de la web, mucha gente aprendía Perl por una maravillosa biblioteca Perl llamada CGI. Era lo suficientemente simple para comenzar sin saber mucho sobre el lenguaje y lo suficientemente poderosa para seguir andando, aprender haciendo era muy divertido. Mientras que la mayoría de las técnicas usadas son anticuadas, la idea no lo es. Mojolicius es un nuevo intento de implementar esta idea usando tecnología de punta.
Así se nos presenta Mojolicius. Ahora que conozco un poco de Sinatra, puedo decir que Mojolicious es bastante similar.
Es un framework web con rutas RESTful, plugins, templates a lo Perl, manejo de sesión, cookies firmadas, framework de testing, servidor de archivos estáticos, i18n, soporte unicode de primera clase y más. Prometen una API pura en Perl con orientación a objetos, portable y sin magia escondida, con Perl 5.10 como único requerimiento. También incluye entre otras cosas parser JSON y HTML5 con soporte para selector CSS 3.

mojolicious: web development can be fun again
La instalación es tan sencilla como esto:
sudo sh -c "curl -L cpanmin.us | perl - Mojolicious"
El sitio de Mojolicious cuenta con una documentación bastante extensa y detallada. También es imperdible la sección de Screencasts Mojocasts.
Es bastante fácil arrancar con alguna aplicación sencilla. Tras unos minutos pude armar algo como esto:
El código:
use Mojolicious::Lite;
use strict;
use warnings;
get '/' => sub{
my $self = shift;
$self->render('index');
};
get '/:name' => sub{
my $self = shift;
my $name = $self->param('name');
#Pasar a mayúsculas el nombre:
$name =~ s/\b([a-z])(\w+)\b/\u$1$2/g;
$self->render('hello');
};
app->start;
__DATA__
@@ layouts/wrapper.html.ep
<div class="wrapper" style="width: 500px; background: #000; color: #fff; padding: 20px; border-radius: 15px;">
<h1><%= title %></h1>
<%= content %></div>
<div class="footer" style="float: right">
<small>Powered by <a href="http://mojolicio.us" title="Mojolicious">Mojolicious</a></small>
</div>
@@ index.html.ep
% title 'Bienvenido';
% layout 'wrapper';
Hola, ingresa tu nombre en la URL después de la barra /
@@ hello.html.ep
% title 'Saludo';
% layout 'wrapper';
Hola <%= $name %>Subí el código en un gist en github, supongo que en algún momento lo retomaré para seguir probando Mojolicius.
Para repasar un poco la sintaxis y particularidades de Perl, el sitio recomienda: Learn Perl in about 2 hours 30 minutes. Está enfocado a personas que no están muy afín de la documentación oficial de Perl, aprenden nuevos lenguajes mas rápido con “axioma y ejemplo”, y ya saben programar en términos generales y no les importa Perl más que lo necesario para realizar el trabajo.
Después de más de 2 años sin volver a tocar Perl, es como si nunca lo hubiera visto en mi vida. Así que vino bien mirar algunas cosas para lo que siguió. De todas formas no he profundizado mucho todavía, pero mi intención es que este post sea una excusa para seguir estudiando Perl en el futuro.
by Fernando at February 22, 2012 09:30 AM
Algunas noticias interesantes de Debian que comparto con ustedes extraídas de su newsletter oficial.

Debian Lenny
¡Adios Lenny!
Debian 5 Lenny no recibirá más soporte a partir de ahora. Debian Lenny fue de las versiones de Debian que más seguí en el blog. Desde el anuncio de Lenny, la espera a setiembre de 2008, la fecha más realista hasta su lanzamiento oficial, Debian Lenny me acompañó por mucho tiempo.
Como “homenaje”, dejo una lista de algunas entradas en el blog sobre Debian Lenny:
Hace un año del lanzamiento de Debian 6.0 Squeeze y casi tres años del lanzamiento de Debian Lenny. El proyecto Debian está orgulloso de haber brindado soporte por tanto tiempo incluso un año después de lanzada la nueva versión.

Debian GNU/Hurd
Debian GNU/Hurd
Ah, el Hurd, el núcleo de sistema operativo del que tanto me gusta hablar. El port de Debian – Debian GNU/Hurd – ha tenido algunos logros interesantes. CD’s de instalación: El instalador de Debian incluye soporte para una interfaz gráfica. Pueden encontrar imágenes en CD y DVD en este enlace. También hay una imagen pronta para QEMU por acá.
Se hizo la presentación “GNU/Hurd, aka. Extensibility from the Ground” con buena respuesta del público en la GNU Hackers Meeting en Paris. Pueden descargar la presentación y el video.
Para el lanzamiento de Wheezy, se quiere lograr un preview tecnológico de GNU/Hurd así como lo hay para kFreeBSD (el port de Debian con el kernel de Free BSD). Ya se tiene un 70% de paquetes de Debian migrados a Hurd. El 30% restante están esperando a que otros paquetes estén disponibles o están fallando por alguna razón. Algunos paquetes importantes que ya están disponibles son Iceweasel, Abiword y Gnumeric.
En cuanto a soporte de hardware, se está trabajando en una capa DDE para integrar drivers de Linux 2.6 en procesos del espacio de usuario. El soporte para tarjetas de red está funcionando básicamente en hardware real, y tiene un overhead bastante bajo. El proyecto hermano Arch Hurd (Ah, qué lindo que entre comunidades de Debian y ArchLinux se traten de “hermanos”
) lanzó un LiveCD con algo de DDE integrado de modo experimental para permitir el uso de drivers de Linux en Hurd.

Debian Wheezy
Concurso de arte para Wheezy
Por último comentarles que está abierto el llamado para diseñar el arte de Debian 7. El look & feel es una parte importante del sistema operativo, y Debian está llamando a diseñadores que quieran contribuir al diseño gráfico del siguiente Sistema Operativo Universal. Hay más info por acá.
Espero que veamos más entradas en este concurso. Sinceramente no me gustó para nada el arte ganador de Debian 6, con un tema espacial. Resultó demasiado infantil para mi gusto, pero bueno, es totalmente subjetivo. Ya veremos con qué nos sorprende la comunidad esta vez.
Hay más novedades, pueden leer el resto de las noticias en Debian Project News.
by Fernando at February 22, 2012 09:00 AM
February 21, 2012

NVIDIA - ArchLinux
Hace un tiempo adquirí un segundo monitor. Tengo una placa de video Nvidia GeForce GT 430. Esta placa tiene una salida Dual Link DVI-I (así como también Dual Link HDMI), lo que permite conectar simultáneamente dos monitoresa la placa. También podemos conectar un monitor a la salida DVI, y otro a la salida VGA.
Al momento de conectar los dos monitores, llegó el momento de configurarlos. Siempre que se quiere configurar algo nuevo en ArchLinux, el mejor lugar para empezar es su wiki. En lo que respecta a múltiples monitores nos dice que tenemos que configurar el archivo:
/etc/X11/xorg.conf.d/10-monitor.conf
No se preocupen si no tienen este archivo creado, pueden hacerlo manualmente y funciona. Ahí hay que agregar por cada monitor una entrada Monitor, Device y Screen Section y la sección ServerLayout que los gestiona.
También hay que saber que Nvidia soporta dos modos para múltiples monitores: Xinerama y Twinview. En primer lugar usé Xinerama, pero esto tiene una desventaja. El driver de Nvidia no soporta la la extensión Composite con Xinerama activado. Composite es lo que usan Compiz, Kwin y otros manejadores de ventana para hacer los efectos que tanto nos gustan. Además hay que decir que el rendimiento del manejador de ventanas es mayor con Composite activado.
Visto esto, intenté usar Twinview. Al principio tenía un problema: cada pantalla trabataba el entorno de escritorio de manera independiente. Esto quiere decir que no podía mover ventanas de un monitor a otro, y se sentía como dos ambientes diferentes. Si ejecutaba una aplicación a la derecha, no podía moverla a la izquierda, etc.
Toqueteando un poco las configuraciones encontré que sí estaba soportado esto de compartir ventanas entre dos monitores. Básicamente tenemos dos “escritorios” pero podemos pasar ventanas de uno a otro. En verdad cada escritorio tiene una representación en cada pantalla. Así también, cada uno tiene sus paneles y fondo de escritorio independiente.
En mi caso agregué un panel a cada uno. También agregué un gestor de tareas y lo configuré para que solo muestre aplicaciones de ese escritorio y de esa pantalla. Les dejo una captura de pantalla de cómo se ven los dos monitores. El de la izquierda tiene una resolución de 1440×900 y el de la derecha 1366×768:

Archlinux 2 monitores
Juegos a pantalla completa con dos monitores
Hasta acá todo venía bien de bien, pero surgió un problema a la hora de jugar. Muchos juegos agarran toda la pantalla para el modo de pantalla completa. Esto lo hace bastante incómodo, porque tenemos un desfasaje de unos centímetros en el medio de la pantalla, en la separación física de los dos monitores.

Shank - 2 monitores sin MetaModes
La solución que encontré tras investigar un poco son los Metamodes:
Los MetaModos son “contenedores” que guardan información sobre qué modo debería ser usado en cada dispositivo en cualquier momento dado. Incluso si solo una pantalla está en uso, el driver de X NVIDIA siempre usa un Metamodo para encapsular la información del modo por dispositivo de pantalla, para que pueda soportar dinámicamente la habilitación de TwinView.
En la sintaxis de MetaModos, los modos están separados por comas, y varios MetaModos se separan por punto y coma. Por ejemplo:
nombre modo 0, nombre modo 1; nombre modo 2, nombre modo 3;
Poner NULL en uno de los MetaModos hace que al entrar en esa resolución en una de las pantallas, la otra se apague, quedando solamente esa activa. Como quería jugar los juegos a pantalla completa en mi monitor de 1440×900, escribí lo siguiente:
Option "MetaModes" "1440x900,1366x768; 1440x900,NULL"
Con las teclas Ctrl Alt +, cambiamos de un meta modo a otro. De todas formas, algunos juegos intentan usar la resolución del metamodo y la placa automáticamente apaga el monitor que sobra:

Shank - 2 monitores con MetaModes
Dejo la configuración de mi archivo 10-monitor.conf en /etc/X11/xorg.conf.d como referencia:
Section "ServerLayout"
Identifier "DualScreen"
Screen 0 "Screen0"
Screen 1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
# Option "Xinerama" "1" #To move windows between screens
Option "TwinView" "1"
EndSection
Section "Monitor"
Identifier "Monitor0"
Option "Enable" "true"
EndSection
Section "Monitor"
Identifier "Monitor1"
Option "Enable" "true"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
Screen 0
Option "MetaModes" "1440x900,1366x768; 1440x900,NULL"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "1"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "TwinView" "1"
SubSection "Display"
Depth 24
EndSubSection
EndSection
by Fernando at February 21, 2012 09:00 AM
February 17, 2012
Los videojuegos de estudios independientes están en pleno auge, y el nombre Humble Bundle ya resulta conocido en este ecosistema. Como ya lo he mencionado, la gente de Wolfire Games ha revolucionado el mercado de los videojuegos gracias a sus paquetes Humble Bundle. Otra empresa conocida para todos los que estén atentos a esta nueva corriente de videojuegos es Mojang, responsables del increíble, inigualable, incomparable Minecraft. Qué mejor que juntar ambas iniciativas en una sola:

Humble Bundle Mojam
Por este fin de semana, Mojang va a estar creando un juego nuevo en vivo, y donará TODO el dinero recaudado a la caridad. Es un game jam donde se creará un videojuego en 60 horas. Con cada donación recibiremos una copia del juego y acceso al streaming en vivo. Es de esperar que cumplan con las características de versiones anteriores del bundle: multiplataforma y sin DRM.

Catacomb Snatch
En el blog de Mojang se realizó una encuesta para definir el género y estética del juego, y tras más de 100.000 votos se llegó a un juego de estrategia en tiempo real con estilo steampunk egipcio.
Repito que en esta versión del bundle todas las donaciones van a la caridad. Los desarrolladores no cobran nada de lo donado. Las caridades elegidas son Child’s Play, Electronic Frontier Foundation, American Red Cross, y por primera vez en un Humble Bundle charity:water, una organización sin fines de lucro que lleva agua limpia y potable a gente en naciones en desarrollo.
Oxeye Game Studio, un estudio de videojuegos con el cual Mojang trabaja en colaboración, decidió también aportar otro juego. En el anuncio del jam en el blog de Mojang, comentaron respecto a la votación del género: “Por supuesto, siempre quisiste jugar un Simulador de Citas Shoot Em’ Up con un tema de Candy Land en la Segunda Guerra Mundial”. Oxeye se inspiró en esto probablemente, ya que su juego sera un Dungeon Crawler Beat ‘em Up en una era Post-apocalíptica de la Segunda Guerra Mundial 
Mojang estará entregando otros premios durante el fin de semana, y habrán sesiones de preguntas y respuestas a través del live stream. Las cuentas en twitter @mojangteam y @notch así como @OxeyeGames van actualizando el estado del evento.

Humble Bundle Mojam
A medida que estén disponibles, se irán subiendo los builds a la página de descarga de Humble Bundle. El juego de Mojang ya va tomando forma y esto se está viendo en la transmisión. Veremos cómo evoluciona esto y qué tal los resultados finales 
Dense una vuelta por Humble Bundle, y donen lo que consideren suficiente para la beneficencia, y no solo conseguirán acceso a estos juegos una vez que estén terminados, sino que podrán ir observando cómo se van creando.
ACTUALIZACIÓN: Wolfire Games se unió al Jam y también está trabajando en un juego del mismo género que Mojang llamado The Broadside Express. El juego en el que está trabajando Oxeye tomó su temática del segundo puesto en las encuestas que hizo Mojang. Todavía no hay builds para Linux de ninguno de los juegos, pero ya estarán disponibles para probar los juegos…
by Fernando at February 17, 2012 10:05 PM
February 15, 2012

Sinatra
Sigo agregando herramientas al baticinturón Ruby. En este caso, estuve jugando un rato con Sinatra: un DSL para crear aplicaciones web rápido y con esfuerzo mínimo. Se trata de una biblioteca de aplicaciones web open source escrita en Ruby.
Empezar es tan fácil como escribir el siguiente código:
#holamundo.rb
require 'sinatra'
get '/' do
'Hola mundo!'
end
Hecho esto instalamos la gema:
Y lo ejecutamos:
ruby -rubgems holamundo.rb
INFO WEBrick 1.3.1
INFO ruby 1.9.3 (2011-10-30) [x86_64-linux]
== Sinatra/1.3.2 has taken the stage on 4567 for development with backup from WEBrick
Con estos sencillos pasos ya tenemos una primera aplicación corriendo con Sinatra, y podemos verla en http://localhost:4567/. Hasta acá encontramos un framework sencillo, bastante liviano, y que sirve para proveer algo medio rápido a través de la web. Es una alternativa a otros tantos frameworks web en Ruby.
Comparándolo con Rails (para compararlo con algo, porque Rails es lo que más hemos oído nombrar del mundillo Ruby), no tiene mucho que ver. No sigue un modelo MVC, y no incluye librerías para vistas, base de datos, etc. Se concentra únicamente en crear aplicaciones web modulares con poco esfuerzo.
Esto no lo transforma en un framework con pocas capacidades. Al haber tantas opciones en el mundo Ruby, podemos usar de todo para crear una aplicación web compleja con varias funcionalidades delegando la responsabilidad a la biblioteca correspondiente.
Sinatra + Haml + Sass

Sinatra + Haml + Sass
Hace poco usé Sinatra de manera “profesional” por primera vez. Resultó super útil para crear una página web sencilla usando lo aprendido sobre HAML y Sass. Para empezar creé el archivo index.rb para la aplicación, y configuro haml y sass:
require 'sinatra'
require 'sass'
get '/stylesheet.css' do
content_type 'text/css', :charset => 'utf-8'
scss :stylesheet
end
get '/' do
haml :home, :layout => :index
end
La primer parte hace que Sinatra use Sass para el estilo css. Al principio tuve algunos problemas con las rutas siguiendo las guías de Sinatra. Pero era tarde en la noche y ya había estado todo el día escribiendo Haml y Sass, así que estaba medio dormido. El archivo de hoja de estilo Sass: stylesheet.scss lo creé en un directorio views. Ahí también puse las vistas. Estas rutas son configurables.
La segunda parte, le está diciendo a Sinatra que sirva el archivo Haml home.haml, con el layout index. Hasta ahora el proyecto se ve así:
/
Gemfile
index.rb
views/
stylesheet.scss
index.haml - Archivo con el layout
home.haml
Con esto ya podemos armar un sitio simple y algo dinámico al contar con el layout. Para definir dónde va a ir el contenido en el layout, usamos yield como en Rails (creo que en Rails también es así…).
Deploy de aplicación Sinatra en Heroku

Heroku
Sinatra está basado en Rack, y Heroku
soporta aplicaciones basadas en frameworks basados en Rack 
Para ejecutar la aplicación en Heroku necesitamos un Gemfile y un config.ru en el directorio raíz. El archivo config.ru es bastante simple:
require './index'
run Sinatra::Application
Y el Gemfile:
source 'http://rubygems.org'
gem 'rack'
gem 'sinatra'
gem 'haml'
gem 'sass'
Podemos probar que funciona ejecutando:
bundle install
rackup -p 9292 config.ru
Si esto funcionó, no queda más que crear la aplicación en Heroku y darle push con git.
El combo Sinatra, Haml, Sass y Heroku me resultó una maravilla. No sé si es por estar acostumbrado a programar Java, pero generalmente hay que configurar tanto que uno está esperando que explote todo cuando se hace el deploy. Siguiendo la documentación de Sinatra y Heroku, pude dejar funcionando el sitio web con relativamente poco esfuerzo.
Obviamente esto es apenas la punta del iceberg. Sinatra se usa en sitios como Heroku, Github y EngineYard. Y hay muchos proyectos en la vuelta basados en Sinatra.
Mi próximo proyecto con Sinatra es convertir mi página personal de Rails a Sinatra. Usar Rails fue un despropósito, y en su momento lo hice por no conocer otra opción, ahora sí la conozco 
by Fernando at February 15, 2012 12:00 PM
Mientras las corporaciones dominen a la sociedad y escriban las leyes, cada avance en la tecnología es una oportunidad para ellos para restringir aún más a sus usuarios.
Richard Stallman

Gran Hermano
Esto es la Ley de Stallman que publican en el sitio web de GNU. Con la evolución de los medios de comunicación y las computadoras cada vez más presentes en la vida de la gente, los ideales que viene defendiendo Richard Stallman desde hace más de 25 años se hacen cada vez más relevantes. En OsNews hace un tiempo publicaron el artículo “Richard Stallman was right all along” (lectura recomendada) que trata este tema.
El público en general siempre lo tildó como un fanático paranoico cuya visión ha sido nublada por lo extremo y radical de sus ideales. Sacrifica la conveniencia en el uso de una computadora en favor de su libertad. No usa un teléfono móvil porque sería muy fácil rastrearlo. Esto último se ha vuelto relevante a medida que han saltado casos de aplicaciones o sistemas operativos móviles que envían información del usuario a las compañías.
El Software Libre se centra en tener control sobre la tecnología que usamos en nuestras casas, escuelas y negocios, donde las computadoras trabajan para el beneficio individual y comunal, no para la compañías de software privativo o gobiernos que pueden buscar restringir y monitorearnos.
Si les interesa informarse más al respecto les dejo unos enlaces relacionados:
- Free Software Foundation
La fundación fundada por Stallman, defensora de los ideales del Software Libre, trabaja por la adopción del software libre y los formatos multimedia libres, organiza campañas activista contra las amenazas a la libertad del usuario como Windows, iPhone y OS X de Apple, el DRM en la música, libros digitales y películas y patentes de software.
Tienen respresentación en FSF América Latina y FSF Europa. - Electronic Frontier Foundation
La primer línea de defensa contra las amenazas a la libertad del usuario en Internet. Defiende la libertad de expresión, privacidad, innovación y derechos de los consumidores en cada batalla donde se involucran los derechos digitales.
by Fernando at February 15, 2012 11:00 AM