Photo
My new moleskine on Flickr.My new moleskine

My new moleskine on Flickr.

My new moleskine

Text

Misery — Magnifica obra de teatro.

![Misery](http://nsovocal.com/wp-content/uploads/2012/02/Misery.jpg)

Mi gran error al entrar al teatro el día de hoy, fue asumir que iba a ver una obra de suspenso o terror. No se si fue el título de la obra — Misery — o el nombre “Stephen King”, no se si fue la publicidad negriroja o lo que sea que haya sido. El punto es, cuando entré al teatro el día de hoy, no esperaba para nada lo que estaba a punto de ver, y gracias a dios, no hay nada que un tipo promedio como yo odie más que dejar la televisión para ir a sentarme en una butaca a ver algo serio y deprimente.

Misery es una obra comedica en la que se relata el día a día de una pareja poco común: Annie y Paul. Paul es un escritor reconocido, Annie es su fan número uno. Cuando el destino los puso juntos tras una tormentosa noche de invierno, ninguno se esperaba las hilarantes locuras que estaban a punto de suceder, pues si algo tienen en común este loco par es su amor por los comentarios ingeniosos y jocosos ante la adversidad, porque hey, nada para curar la amputación como un buen chiste. El público ruge de risa. Ovación de pie. Hemos pasado el tiempo de nuestras vidas.

Si tuviera un comentario negativo, tendría que decir que la música era un poco lugubre y aburrida, definitivamente mataba el ambiente.

Miles de risibles mexicanos no pueden estar equivocados.

Calificación: ★★★★★★

Photo
sin título on Flickr.

sin título on Flickr.

Photo
About to be eaten. on Flickr.About to be eaten.

About to be eaten. on Flickr.

About to be eaten.

Photo
We’re gonna be the very best. Ese. on Flickr.We’re gonna be the very best. Ese.

We’re gonna be the very best. Ese. on Flickr.

We’re gonna be the very best. Ese.

Text

Mis dos centavos respecto a las reglas de “Nombres Reales”

Google+ ... ¿Todo sobre yo, eh?

Si han estado atentos al internet en estos últimos días, tal vez hayan escuchado de las “nymwars” y todo el drama alrededor del tema. Si no han estado atentos les doy un resumen rápido: Google+ empezó a borrar cuentas por violaciones de políticas en uso de nombres, lo cual empezó una gran discusión entre las personas que piensan que los pseudonimos son malos y las personas que piensan que son esenciales. Spoiler: yo soy del segundo campo. Así que si estan dispuestos a escuchar mis pequeñas opiniones respecto a la defensa de los pseudonimos, por favor, adelante.

Pseudonimos por defensa personal

Acabemos con este argumento rápido porque es el “más fuerte” para los que están a favor, pero también es uno de los que menos me gusta mencionar porque pienso que no afecta mucho las cosas. Igual es importante. El razonamiento va algo así: Hay personas que son victimas regulares de acoso o de crímenes que les ha cambiado la vida y cuando utilizan sus nombres reales en internet quedan desprotegidos y les puede causar muchos problemas. Listo, claro y sencillo. Hay poco que se pueda decir en contra de el. El problema es que afecta a una cantidad demasiado pequeña de personas como para dictar la política general, es más como caso especial que se debe manejar caso a caso. A la hora de elegir, lo más probable es que este argumento se vea reflejado como un intercambio de correos con servicio al cliente para que la persona justifique su uso de un pseudonimo, una actividad que es trivial para quienes dependen de esto y demasiado complicado para quienes solo gustan cambiarse el nombre o usar un apodo.

Eligiendo las palabras apropiadamente

La verdadera discusión está respecto a este tema: El anonimato trae mucha basura y maldad: Si una persona dice algo sabiendo que será relacionado con el/ella por el resto de sus días, seguramente lo pensará dos veces antes de escribir; En cambio, una persona anónima es como una bestia salvaje que habla en impulso sin importar lo que sea porque a final de cuentas no tiene consecuencia. Uno podría argumentar que 4chan es la prueba de esto, pero lamentablemente el argumento confunde un par de cosas:

Pseudonimo != Anonimato

Hay muchas personas que me conocen por internet, ya sea como Ogu o como Ben. Muchas de estas personas no conocen mi verdadero nombre y no les interesa. Si yo me presentara con ellos en persona les diría “Hola, soy ogu” y ellos entenderían que yo persona soy la misma entidad que conocen en línea. Tengo una reputación en línea y la verdad es que no cualquier cosa que diga me va a afectar. Independientemente de si mi nombre de usuario es mi nombre real o no.

Pseudonimo != Ser otra persona

En mi cuenta de Twitter y en mi cuenta de Facebook tengo muchas personas que no utilizan su nombre real. Incluso tengo gente que cambia su nombre seguido (a pesar de toda la oponencia que puede poner facebook). Sigo sabiendo quienes son, y lo que dicen sigue teniendo la misma relevancia hacia su persona como la ha tenido siempre. Punto. Claro, yo puedo mañana hacer otro blog con otro nombre y fingir ser otra persona. Pero también puedo ir a otra ciudad y fingir ser otra persona simplemente sin decirles quien soy: Nadie me pedirá ID.

Para siempre es mucho tiempo

Si yo grito algo a la calle ahorita o si yo le digo alguna estupidez a mis amigos, lo más probable es que en unos días (años tal vez si fue una estupidez muy grande) la mayoría lo habrá olvidado. Tal vez uno que otro no. En cambio, si ahora fuese a poner un tweet estupido (con pseudonimo o no), se va a quedar ahí para siempre. En 60 años mis nietos podrían leer las estupideces que escribía su abuelo a los veintitres. Esto no es algo que quiero. Los humanos decimos estupideces, pero los decimos bajo ciertos contextos y a ciertos grupos: los pseudonimos son una forma de aislar esto de una forma similar. Aunque siempre exista el riesgo de que me vaya a afectar algo que dije, el hecho de poder decirlo en el contexto adecuado me ayuda a alejar un poco el riesgo, o a hacer más obvio el por qué se dijo/hizo.

Deja que el usuario decida

Google y Facebook hacen buenos argumentos en como esto nos ayudará a tener relaciones sociales más relevantes en línea. Pero no se puede oblgiar a que la gente sea social, no puedes decirle: Socializa así y aquí. Es raro, se siente mal y es quitarle al usuario su decisión. Es una causa respetable, en serio lo creo, pero pienso que no debemos oblgiar a nuestros usuarios a hacer algo que no quieren, al menos no cuando se trata algo tan importante y personal como el derecho de decidir a quien le revelas tu identidad. En la vida real yo decido con quien comparto mi información real, esperaría hacer lo mismo en internet.

Text

Cambiando de Evernote a Notational Velocity + Simplenote

![Notational Velocity](http://nsovocal.com/wp-content/uploads/2011/08/nv1-460x267.jpg)

No es ningún secreto que he estado enamorado de [Evernote](http://evernote.com) desde que lanzaron hace un par de años. Es un servicio increíble que te permite sincronizar tus notas a lo largo de varios dispositivos, y no solo eso, también puedes tomar fotografías y buscar el texto contenido en ellas *(e.g. digamos que tomas una fotografía de un anuncio de un plomero que viste en la calle y la sincronizas a evernote. Cuando quieras buscar esa imágen, solo debes buscar la palabra “plomero” o algún dígito del número de teléfono. )* En verdad son una serie de características muy interesantes, y todo en un paquete sencillo de utilizar en cualquier dispositivo (en mi caso iOS, Android y OS X.)

## La relación entre Evernote y yo ##

¿Por qué querría cambiar si estoy tan enamorado del servicio? Simplemente no lo utilizaba tanto como debía. Por ejemplo, en rara ocasión utilizé las notas de imágenes o de audio, por más que me trataba de convencer que era lo más útil del servicio. La triste realidad es que mi flujo de trabajo consistía más en una serie de anotaciones pequeñas dispersas en archivos .txt en un directorio cariñosamente llamado “etc.” Todas las notas que entraban a evernote era por medio de mi teléfono o el iPod Touch, rara vez utilizaba el servicio en el escritorio porque era mucho más fácil abrir TextMate, escribir una nota y salvarla. A pesar de que tengo el pequeño elefante en la barra superior y es muy fácil darle click, seleccionar nueva nota y escribir mi nota; de alguna forma sentía más cómodo y rápido abrir un editor de texto y escribirlo.

Y aunque fueron pocas las veces que lo utilizé, esas pocas veces lo utilizé poco. Por ejemplo, veamos un poquito de mis estadísticas en Evernote:

* Número de etiquetas: 0
* Número de cuadernos: 3
* Número de cuadernos vacíos: 2
* Número de notas: 20
* Número de notas con imágen: 3
* Número de notas con imágen que no fueron solo para demostrar la funcionalidad de evernote a otras personas: 1

Bueno, ahí está. Un uso obviamente inferior que no justifica tener el programa instalado por más de dos años. Fue más como si no lo quisiera dejar para evitar herir sus sentimientos. Pero igual, la realidad es que tenía una necesidad que satisfacer respecto a mis notas, y no podía deshacerme de Evernote sin antes encontrar una solución a este problema. Fue cuando conocí [Notational Velocity](http://notational.net/).

## Notational Velocity: Sencillo, rápido y bien conectado ##

Decidí probar Notational Velocity sin muchas esperanzas (soy exceptico ante el software nuevo) y muy pronto me vi acostumbrado al flujo de busqueda/creación de este pequeñito programa. Simplemente tienes un listado de tus notas, buscas el texto/título de la que deseas y presionas “Abajo” y listo, estas viendo/editando tu nota. Si deseas hacer una nueva, escribes el título en la barra de busqueda y si no existe alguna con ese titulo la puedes crear simplemente con dar Enter. Listo. Así de rápido. Y definitivamente no miento cuando digo rápido: Notational Velocity está diseñado para buscar de forma casi inmediata una cantidad obscena de notas, y en vez de organizar con etiquetas o grupos, simplemente encuentras basado en su contenido (algo que me parece más natural.) Inmediatamente se integró a mi flujo de trabajo, ahora no lo pienso dos veces para ver o crear notas: Notational Velocity → ⌘L → Busqueda → Enter.

![La Interfaz sencilla de NV](http://nsovocal.com/wp-content/uploads/2011/08/nv2-460x267.jpg)

Ahora solo queda una cosa por solucionar: ¿Cómo voy a sincronizar todas mis notas con mis dispositivos y como acomodare el caso de uso de insertar nuevas anotaciones con Android o iOS? Notational Velocity es lo suficientemente gentil para encargarse de ello por nosotros e incluye sincronización con el servicio de [Simplenote](http://simplenoteapp.com/), lo que nos permite usar una gran variedad de aplicaciones móviles para mantener nuestras notas disponibles en todo momento. En lo personal, me he quedado con [Notational Acceleration](https://market.android.com/details?id=com.kludgenics.android.notes) para Android, que como su nombre da a entender, replica la experiencia de NV en una aplicación móvil, y lo hace bastante eficientemente. En cuanto a iOS, aún no he tenido la oportunidad de probar alguna alternativa, pero la aplicación nativa de [Simplenote](http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289429962&mt=8&ign-mpt=uo%3D6) se ve bastante prometedora.

## En cuanto a conclusiones ##

Muchas veces esperamos que este tipo de posts terminen con una oración bastante clara sobre cual de los servicios es mejor, pero en mi opinión estos dos son bastante buenos y simplemente cubren la misma necesidad para dos tipos de personas muy diferentes. Si no haz utilizado ninguna de las dos, recomiendo que les des una probada. Igual, si no estas conforme con Evernote y necesitas una alternativa, tal vez Notational Velocity sea lo que estés buscando (o vice-versa).

Text

Un vistazo rápido al futuro de abuguet

Para los que no saben, abuguet es una comunidad de videojuegos que salió de varios de nosotros que nos conocimos en [Temporada de Patos](http://temporadadepatos.net). Al principio teníamos muchas esperanzas de la comunidad, un poco inspirada en Destructoid, teníamos esperanza de que hubiera contenido divertido generado por los blogs de los usuarios, que tuvieramos una página principal divertida e informativa y unos foros activos con gente inteligente.

Obviamente eso no pasó.

Lo que si pasó es que los blogs eran muy poco utilizados, el sitio principal oscilaba entre estado zombie y ligeramente activo, nunca se concretó nada serio y toda la acción sucedía en los foros, que a diferencia de lo que anticipabamos, era un caos de personas distintas peleandose constantemente. Aunque no lo crean, bastante divertido. Luego otra cosa pasó, los foros empezaron a inundarse de “4chanidades” y muchas personas saltaron por la borda. Desde entonces el foro ha estado entre muerto y meh y todos añoramos los viejos tiempos.

## Intento fallido #1 — El muerto abuguet 2

[![Abuguet 2](http://nsovocal.com/wp-content/uploads/2011/07/abuguet2test-460x378.png)](http://nsovocal.com/?attachment_id=73)

Estos eran los días dorados de abuguet: El C-C-Combo Breaker se grababa regularmente y el flujo de personas estaba regularizandose, pensabamos que sería una buena oportunidad de hacer algo productivo y tirarle a las grandes ligas del reportaje de video juegos en español, una remodelación del sitio estaba en las cartas, reescrito para ser más rápido y más bonito.

Luego el podcast dejó de grabarse por vacaciones (utilizabamos la cabina de radio de la escuela) y cuando volvimos la cabina estaba cerrada por remodelación, y seis meses después de que la arreglaron nunca pudimos recuperarnos. El podcast valió y nos dimos cuenta que de verdad nadie tenía la stamina de hacer un trabajo serio en cuanto a poner historias en la página principal.

Pshiu. Disparo a la cabeza a abuguet 2. (Como “fun fact”, [en esta liga](http://abuguet.net/abu2) pueden ver el trabajo incompleto de abuguet 2, que la verdad estuvo muy cerca de estar terminado.)

## Intento fallido #2 — Elementos sociales

[![Muro de Abuguet](http://nsovocal.com/wp-content/uploads/2011/07/abuguetnewprofile-460x245.png)](http://nsovocal.com/?attachment_id=74)

Abuguet ha tenido un sistema de amigos desde hace rato y hasta ahorita ha sido algo inútil que simplemente está ahí. Habiendonos resignado a que toda la actividad estaría en los foros, decidimos tratar de hacer algo para mejorar la experiencia aprovechando los grupos de amigos que ya existían en los foros: incluir más funcionalidades sociales agregando una especie de “muro” a tu perfil en abuguet que te diga que hacen tus amigos en el sitio.

El problema con este sistema es que abuguet es relativamente pequeño, no hay tantos temas activos y no hay tantos miembros posteando, entonces por ahora esta funcionalidad parecía un poco innecesaria y nunca fue activada a pesar de que fue implementada. En estos momentos abuguet captura todas las acciones que haces en una base de datos, simplemente no está activado el muro.

[![Base de Datos de Updates](http://nsovocal.com/wp-content/uploads/2011/07/dbshot.png)](http://nsovocal.com/?attachment_id=75)
*no es fácil de ver en esta imágen, pero creanme que ahí se almacena todo*

Pshiu. Disparo a la cabeza de los elementos sociales.

## Nuevo abuguet y nuevas posibilidades

A pesar de todos estos intentos fallidos, la verdad es que la base de la comunidad sigue ahí y hemos seguido buscando formas de mejorarla. Recientemente, [Sau Ramirez](http://saumotions.com/), amigo y miembro de la comunidad de abuguet, decidió ayudarme a hacer un API para abuguet, esto permitiría muchas aplicaciones que se pudieran alimentar con la información que teníamos. Aunque con los cambios que vienen a abuguet este API probablemente no se utilize, habrá otro API que se conforme a lo nuevo. La idea es hacer abuguet extendible y que lo puedas consumir de distintas maneras.

¿Qué es lo nuevo en específico? Después de mucho deliberar y pensar ideas y malabarear, quise mantener el énfasis en un foro de discusión, pero con elementos que permitan controlar mejor la calidad de lo que se dice, aunque sea subjetivamente. Hasta ahorita, este wireframe y set de anotaciones es todo lo que existe al respecto:

[![Wireframe nuevo abuguet](http://nsovocal.com/wp-content/uploads/2011/07/new-abuguet-wireframe-460x383.png)](http://nsovocal.com/?attachment_id=72)

El diseño es bastante diferente a lo que tenemos ahora, pero la funcionalidad no es muy diferente al foro actual. Aunque muchas cosas se explican en las anotaciones, me gustaría pasar por algunos de las características importantes rápidamente:

* Ver todos los temas, o filtrar por foros (esto es como el comportamiento actual en que la página principal contiene todos los temas más recientes pero simplificado)
* Busqueda fácil por texto del tema o por etiquetas (ya hay busqueda en abuguet pero es secreta, solo pocos saben de ella)
* Filtrado rápido para ver los posts por tiempo o puntaje y la opción de ver solo los posts de amigos
* Dos columnas: Una con el universo entero de posts, y otra que solo contiene los posts en los que tu has participado
* Posts favoritos para fácil recuperación de los mejores temas
* Votos estilo reddit
* Opción de ignorar. Esta opción “colapsa” posts o comentarios de acuerdo a ciertas reglas: Ignorar persona, ignorar basado en puntaje e ignorar posts individualmente.

Esto es masomenos el futuro de abuguet. Espero pronto poder mostrarles un concepto de la interfaz como se verá y me gustaría saber sus opiniones al respecto y recomendaciones que quieran expresar.

Text

Groovesquid, Cocoa y MacRuby. Pequeñas lecciones aprendidas.

Hace un par de días decidí que sería buen momento de probar MacRuby y hacer una aplicación seria, algo de lo que pudiera estar orgulloso de distribuir a manos del público general. La idea, fue reimplementar un pequeño servidor que había hecho en ruby hace unos meses pero ahora más bonito y con un GUI. Quisiera compartir un poco sobre este proyecto, y unas lecciones aprendidas durante estos últimos días.

## Groovesquid.

El concepto de groovesquid es muy sencillo: un par de aplicaciones que se conectan con Grooveshark Desktop para democratizar la música en una fiesta o entorno de trabajo. La forma en que trabaja se puede resumir en unos puntos sencillos:

1. El servidor corre Grooveshark Desktop junto con Groovesquid, quien se anuncia con DNS-SD.
2. Los cotrabajadores o asistentes a la fiesta pueden cargar el cliente en su computadora o smartphone.
3. Los cotrabajadores envían canciones al playlist.
4. Todos pueden votar cuando sale una canción, si a la mayoría le gusta se queda, si no, se va y pasamos a la siguiente.

## Desarrollando un GUI con Cocoa.

Aunque llevo mucho tiempo desarrollando interfaces de usuario para aplicaciones web, esto podría bien ser el primer intento serio de hacer una aplicación de escritorio. Mi concepto fue un poco ambicioso y se veía algo así en photoshop:

[![Groovesquid Mockup](http://nsovocal.com/wp-content/uploads/2011/07/groovesquid-ui-mockup1-300x116.png)](http://nsovocal.com/wp-content/uploads/2011/07/groovesquid-ui-mockup1.png)

* Un par de etiquetas de texto (editables al hacer doble click.)
* Imagenes de fondo para texturizar.
* Un par de LEDs de status.
* Un bonito contador de usuarios conectados.

A pesar de que no son muchos elementos, ninguno de ellos hace las cosas como cocoa las hace por defecto. Revisando de nuevo la lista de asistencia, pero ahora con los problemas:

* ¿Cómo hacer que una etiqueta de texto sea editable al hacer doble click?
* ¿Cómo aplicar una imágen de fondo a una vista?
* OK, aquí no hubo mucho problema.
* ¿Cómo rendereas texto con una imágen de fondo y una de frente?

La respuesta para los que conocen cocoa es sencilla: SUBCLASES PARA TODO! WOO!

## Subclases de Cocoa con MacRuby

La integración de MacRuby con Cocoa es impresionante, hacer una subclase de un elemento base de AppKit es intuitivo y fácil. Por ejemplo, sin poco conocimiento previo de MacRuby en específico pude hacer unas clases bastante sencillas:

[ruby]
class GSTextField def mouseDown(theEvent)
if theEvent.clickCount == 2 then
self.editable = true
end
super
end
end
[/ruby]
*Campos editables.*

[ruby]
class GSTextFieldCell @@gShadow = NSShadow.alloc.init
@@gShadow.setShadowColor(NSColor.colorWithCalibratedWhite(1.0, alpha:1.0))
@@gShadow.setShadowBlurRadius(0.0)
@@gShadow.setShadowOffset(NSMakeSize(0.0,-1.0))
def drawInteriorWithFrame(cellFrame, inView:controlView)
@@gShadow.set
super
end
end
[/ruby]
*Texto con sombras.*

[ruby]
class GSView def drawRect(rect)
#set the background as transparent
image = NSImage.imageNamed(“mainbackground”)
NSColor.colorWithPatternImage(image).set
NSRectFill(bounds)
end
end
[/ruby]
*Vista con una imágen de fondo.*

En definitiva no hay mucho sofisticado sobre esto. MacRuby es una traducción tan perfecta de Cocoa (en Objective C) a Ruby como se puede hacer. Todo se comporta como uno espera de una librería ruby. Aún hay varios bugs que refinar (tuve comportamiento muy errático con las variables de instancia) pero todo se ve bastante lindo.

¿A qué pudo llegar un novato en menos de 24 horas de trabajo? ¿Que tan cerca estuvo de su imágen de photoshop original? La respuesta:

[![Groovesquid Server Screenshot](http://nsovocal.com/wp-content/uploads/2011/07/groovesquid-server-screenshot-300x122.png)](http://nsovocal.com/wp-content/uploads/2011/07/groovesquid-server-screenshot.png)

Bastante acertado en mi opinión, el cambio más notorio es la inclusión de un nuevo botón (para prender y apagar el server.)

## Pensamientos Finales

Basandose en este proyecto, debo decir que MacRuby es una oportunidad muy grande de adentrarse al entorno de Cocoa para desarollar para OS X o iOS. Cocoa no es sencillo y hay mucha documentación que leer (muy completa por cierto), pero estar utilizando un lenguaje interpretado familiar es una ventaja bastante grande. Se puede hacer mucho con muy poco. De verdad recomendado para todos aquellos desarrolladores de Mac que han utilizado Objective C pero se sienten más familiares con Ruby. Si recomiendo mucho concoer al menos la sintaxis de Obj-C para poder traducir los ejemplos y la documentación.

Hay dos desventajas muy grandes si vas a desarrollar con MacRuby, una es muy impactante en proyectos chicos y la otra en proyectos grandes. Primero: es mucho más difícil debuggear que utilizando las herramientas de Objective C. LLDB y GDB son increiblemente buenos y ambos son parte de XCode, lamentablemente no funcionarán para matar los bichos de tu lenguajillo de nivel superior y tendrás que usar herramientas inferiores, que pueden ser bastante crípticas. Segundo: Tendrás que incluir el framework de MacRuby con tu aplicación, lo que agregará unos buenos 30MB adicionales a tu aplicación (En el caso de Groovesquid, el producto final pesa 32MB. Ouch.) Aparentemente con OS X Lion y MacRuby 1.0 tendremos algunos arreglos, pero aún no sabemos que tanto vaya a ser el compromiso. Por ejemplo, MacRuby viene con OS X 10.7 pero como Framework privado, lo que significa que te puedes olvidar de distribuirlo por la App Store. Si Apple decide hacerlo público, lo cual no sería muy difícil, uno de los problemas más grandes se iría. El otro ya dependería de la integración con XCode, que esperemos vaya mejorando cada vez más.

Por ahora, seguiré experimentando con MacRuby construyendo el cliente, y quisiera compartir luego muchas otras cosas que no mencioné (especialmente sobre sockets y dnssd), pero ya será en otro momento. Esperen también proximamente el código del servidor y cliente en GitHub, abriré el código cuando tenga alguna versión que al menos cumpla con el adjetivo “funcional”. Les recomiendo que le echen un vistazo y si tienen algún proyecto sencillo en Objective-C intenten traducirlo a MacRuby.

Photo
(Taken with picplz.)

(Taken with picplz.)

Photo
Photo
Photo
My new shelf. (Taken with picplz.)

My new shelf. (Taken with picplz.)

Text

lareinafrigida:

Porque mi novio tiene un tumblr de gatos, y porque intenta ocultarlo?

 Esto y más, en el noticiero de las 7.

:3

(via lareinafrigida-deactivated20110)

Photo
(Taken with picplz.)

(Taken with picplz.)