Geek & Roll

La importancia del Distributed Hash Table y los Magnet Links

Cesar January 21st, 2012 ciencia, internet Haz un comentario

… O por qué el .torrent debe morir y dar paso al siguiente escalón evolutivo.

Recientemente The Pirate Bay, uno de los sitios con más cojones que existe en el planeta, anunció que relegaría el uso de archivos .torrent y se enfocaría principalmente en los llamados magnet links. Sus argumentos son muy válidos, e inmediatamente se dejaron venir olas de desinformación. Que si The Pirate Bay habían doblado las manitas y cedieron ante la presión de alguna organización. Que si SOPA. Que si PIPA. Que si es el fin del mundo como lo conocemos, o por lo menos del P2P facilitado por el protocolo Bittorrent.

Nada de eso puede estar más alejado de la verdad. Como todo, el uso de la Distributed Hash Table (DTH) y Magnet Links sobre los ya tradicionales archivos .torrent tiene sus ventajas y desventajas que es lo que precisamente vamos a explorar aquí.

Durante mis estudios de maestría, hice investigación en el tema de las redes inalámbricas de sensores (WSN por sus siglas en Inglés) y cómo múltiples dispositivos de bajo poder de procesamiento, podían colaborar para cubrir una área extensa. Esto tiene retos interesantes muy bien documentados en la literatura, pero una de las cosas que más llamó mi atención es la diseminación de datos entre los pares que forman la red. Estamos hablando de una red creada impromptu, sin infraestructura previa, que necesita compartir datos de manera continua. Tal vez definirla como una red P2P tenga sentido, pero quiero dejar al lado las connotaciones negativas que arrastra este término, similar a lo que sucede con “Pirata” o “Nazi”. Leer el resto de este post.

G&R Labs: Rocksmith (PS3)

Cesar November 21st, 2011 G&R:L, entretenimiento, gadgets 1 comentario

Rocksmith que promete ser la evolución natural de los juegos de ritmo, con una diferencia muy interesante: el gancho no son trofeos virtuales, o un 100% en la dificultad más alta. El gancho y recompensa es el aprender a tocar la guitarra.

Apenas llevo un día con el juego/tutor de guitarra y esta es mi experiencia con la versión para PS3. Lo primero que haces es meter el juego en la consola y… claro, hay que descargar una actualización. 11 MB después ya puedes ver la pantalla de inicio del juego, que incluye un video en donde se ve a una persona tocando la guitarra nota por nota empezando en un nivel muy básico y progresando hasta un nivel decente, lo cual en la vida real lleva años de práctica y dedicación. El video hace un buen trabajo en animarte a tomar el juego y dedicarle tiempo, hype si asi lo quieren.

Lo que sigue es conectar la guitarra. El paquete del juego incluye instrucciones de como es mejor conectar todo para evitar el lag, desde los pickups de la guitarra hasta las bocinas de la TV o el sistema de sonido que tengan conectados a la TV. La mejor opción es usar HDMI para el video, pero solo para el video. El audio conectarlo ya sea por cables compuestos, y de preferencia a un teatro en casa o sistema de sonido externo. En mi caso lo tengo conectado de la salida óptica del PS3 al sistema de sonido externo, y el lag es práticamente negligible.

El paquete incluye el llamado Real Tone Cable, que es el que conecta la guitarra a la consola. La longitud del cable es adecuada, y se siente bastante profesional, no como algo de juguete. Si creían que no se podía tener más periféricos, esperen a tener una guitarra real conetada a su consola. Al inicio del juego te indica que no conectes nada extra entre tu guitarra y la consola, es decir el cable debe ir directo de la guitarra al PS3. Después te pide que selecciones entre derecho o zurdo y si el headstock de tu guitarra es de 3+3 o de 6 en línea, con imágenes descriptivas por si no sabes de lo que estoy hablando.

Entonces si, viene lo bueno. Primero te dice como agarrar el pick, pero como en 2 segundos lo cual no es suficiente porque siendo un novato tienes muchas dudas sobre cual es la manera correcta de agarrarlo, o por lo menos así fue en mi caso. Luego te indica el concepto de nota, fret, nota abierta y te hace tocar un riff, que luego te das cuenta que es el famoso riff de (I can’t get no) Satisfaction por los Rolling Stones, así que si conoces la canción te emocionas porque crees que ya sabes y estas listo para rockear a lo grande.

El juego es difícil, pero así es como debe de ser. Aquí no puedes aventarte una canción sin conocerla y sacarla perfecta como en Guitar Hero o Rock Band. Recuerda que estas tocando guitarra real, así que lo mas recomendable es ir paso a paso, practicar la canción hasta que los riffs y los acordes salgan decentes y de hecho te memorices las partes, de otra manera es casi imposible improvisar y mover tu mano a los frets correspondientes.

En mi caso tuve algunas ocaciones en las que el juego no detectaba correctamente la nota. Es decir, el juego me pedía el tercer fret de Mi (o la cuerda E para los gringos) y presionaba eso precisamente, pero el juego lo detectaba como una nota más arriba, o más abajo, lo cual hace las cosas muy frustrantes. En modo práctica pasa más seguido al grado que hace imposible pasar la práctica. Leyendo en los foros me entero que la tonalidad puede afectar, o el treble, así que intentaré moverle a todos los switches y potenciómetros de mi guitarra a ver si puedo arreglarlo. Me gustaría tener la oportunidad de probarlo con otra guitarra, a ver si el efecto es el mismo.

Cuando menos lo pensé, ya tenía 2 horas de práctica en la guitarra. Creo que Rocksmith cumple con su cometido de una manera excelente. Falta ver los resultados, pero en un par de iteraciones más, yo veo una potencial revolución en la manera en la que se enseña a tocar guitarra. Si se complementa con algo más serio como videos que muestren técnicas al tiempo que el software califica tu ejecución, creo que existe la posibilidad de lecciones interactivas que no aburran.

¿Veredicto? Si son aficionados a la guitarra, probablemente ya tengan una en su casa. Si nunca han podido dominarla y solo la tienen agarrando polvo, van a disfrutar mucho Rocksmith. No es un juego de fiesta como Guitar Hero o Rock Band, necesita tiempo y dedicación. Piensen en Rocksmith como lecciones virtuales entretenidas.

Rock on!

¿Usas una tablet? Cuentanos para que…

Cesar October 17th, 2011 opinion 13 comentarios

Desde que salió el primer iPad me hicieron y me hice yo mismo la pregunta ¿Para qué querría yo una tablet? En mi casa tengo una laptop y una desktop, y trabajo en mi oficina en casa así que siempre tengo una computadora disponible. Si me voy a la sala a ordenar los recibos del mes, para eso tengo la laptop. Si voy a enseñarles las fotos de nuestro último viaje a mis Papás, generalmente lo hago con el PS3 para poderlas ver en la TV.

Si estoy en movimiento y tengo que trabajar, para eso tengo la laptop. Si solo quiero perder algo de tiempo puedo usar mi iPhone para escuchar música, leer noticias, un juego rápido, entre otras cosas. Aquí es donde muchos podrán decir “para eso te sirve una tablet” pero no realmente. Verán, el tamaño de las tablets las hace lo suficientemente grandes para propósitos de entretenimiento, pero además las hace que llevarlas conmigo no sea automático. Tengo que planear llevarlas conmigo, hacerles lugar, lo que no sucede con el teléfono. Por eso el iPhone siempre va conmigo: es lo suficientemente chico como para llevarlo a todas partes, y suficientemente grande como para pasar un rato leyendo noticias, navegar, platicar y escuchar música. Claro, si tuviera una tablet en ese momento disponible para mi, de seguro leer noticias y navegar sería más cómodo, pero después tengo que guardarla y llevarla conmigo, lo cual no sería tan cómodo.

Una excepción a esto es en el aeropuerto. Probablemente ya llevas una maleta de mano, entonces llevar una tablet es fácil. Pero es la única que se me ocurre.

La pregunta es, si usas una tablet… ¿Cuando y para qué la usas?

Los Heroes nunca mueren. Hasta pronto Steve Jobs.

Cesar October 6th, 2011 opinion 4 comentarios

It’s time to be immortal, ’cause heroes never die.

Yo fui uno de esos niños que entraron a la primaria de 5 años, gracias a la tenacidad de mis padres al lograr que me aceptaran de esa edad, ya que cumplía los 6 años en Septiembre. A los 8 años tuve mi primera clase de computación en la escuela, y mis padres otra vez preocupados por nuestra educación, nos compraron nuestra primera computadora: Una PC con MSDOS, sin disco duro todo tenía que ser cargado por medio de floppies cada vez que se encendía.

Sin embargo, cuando iba a mi clase de computación, las computadoras eran diferentes. Eran más pequeñas y tenían una colorida manzana mordida como logo. “¿Que computadora te tocó? ¿De la manzanita?” era una pregunta típica al entrar al laboratorio. Todos querían usar las Apple, y yo pasaba horas en el intérprete de Logo tratando de crear figuras interesantes, sin saber que realmente estaba aprendiendo a programar en un dialecto de Lisp. Y esa fue mi primera aproximación a Apple como compañía, y la última por mucho tiempo.

Nunca dejé de sentir curiosidad por las computadoras, y sabía de alguna manera que sea lo que fuere que quisiera hacer con mi vida, involucraría una computadora. Seguí por el mismo camino, observando como Apple se hiciera poco más que irrelevante. En el transcurso, mi interés se movía del mundo de Windows hacia alternativas mejores, que fue como descubrí GNU/Linux allá por el ‘97 o ‘98 en un Red Hat Linux en caja, la versión 5 si mal no recuerdo. Y seguí por ese camino, volteando a ver lo que sucedía en el mundo de las alternativas a Windows.

De pronto y sin mayor aviso (por lo menos a mi), comencé a ver una marea de productos provenientes de Cupertino. Lo primero que captó mi atención fueron las feas (para mi gusto) iMacs e iBooks con el mouse menos ergonómico de la historia. Unas venían con Mac OS 9, un sistema operativo inferior en todos los sentidos a mi querido GNU/Linux (sus “novedades” incluían una herramienta para actualizaciones del OS y soporte multiusuario, cuando GNU/Linux y especialmente Debian lo había tenído desde el día con con APT/Synaptic y su herencia de ser un clon de Unix), pero otras venían con algo nuevo que nunca había visto antes: OSX. Mi curiosidad era demasiada, y cada que me encontraba uno de estos cascos de motociclista de colores, tenía que detenerme a usarlas por un rato. Pero no era por el hardware, sino por el software.

Ya había yo tenido un “acercamiento” a lo que sería OS X, en la forma de Litestep y OpenStep. Antes de dar el salto definitivo a GNU/Linux, probé varios reemplazos para el shell de Windows al mismo tiempo que trataba de pasar el mayor rato posible en GNU/Linux. Uno de tantos reemplazos para el shell era Litestep, inspirado en AfterStep a su vez inspirado de NeXSTEP, el Papá de OS X. Pero OS X era una bestia completamente diferente: una interfaz gráfica con aceleración gráfica, transparencias, efectos de escritorio, todo muchísimo antes que cualquiera lo viera en el escritorio sino hasta varios años después. No solo eran efectos bonitos (bueno, algunos si), había otros que en realidad te ayudaban a ser más productivo (léase exposé). La nueva interfaz gráfica pegó fuerte, y sus efectos se sintieron en otros campos. Windows comenzó a tomar nota aunque reaccionó demasiado tarde, y no se diga la comunidad Open Source, que se pavoneaban con orgullo al salir Compiz (un manejador de ventanas que utiliza OpenGL para aceleración gráfica).

¿Yo? yo solo envidiaba a aquellos con una Mac, y no por la interfaz o por el OS, sino porque podían utilizar un aparato que yo realmente deseaba: un iPod. En aquel entonces una exclusiva para Macs. Es por estas fechas cuando sale el video de 50 Cent “P.I.M.P.” en donde el iPod primera generación recibe tanto tiempo de cámara como el artista. Cuando el iPod estuvo disponible con compatibilidad para Windows (y de manera extraoficial en GNU/Linux), fue cuando volví a usar algún producto de la manzana de manera diaria. Un iPod Nano, segunda generación. Nunca tocó iTunes, y el estilo pragmático de administrar la librería de música de Amarok y/o GTKPod hicieron que nunca extrañara a iTunes.

Siempre me ha gustado experimentar con diferentes sistemas operativos, lo cual me llevó a usar cuanta distribución de GNU/Linux me encontrara en mi camino, desde Red Hat y Mandrake hasta Linux From Scratch. Inclusive algunos BSDs como FreeBSD y NetBSD. Cuando Apple hiciera la transición hacia intel y salieron los primeros hackintosh, sabía que tenía que probarlo. En la maestría sobraban personas que gustan de los productos de Apple, lo cual hizo mi transición hacia OSX86 más sencilla.

Después ocurrió algo que lo cambiaría todo. Si bien el iPod fue toda una revelación, el iPhone cambió las reglas del juego en muchos niveles. Fue la primera vez que sentí lo que otros fanboys sentían con cuanto producto Apple salía de la fábrica de sueños de Cupertino. No fui de los primeros en comprar uno, y de hecho me retrase tanto en comprar el mio que para ese entonces el firmware ya estaba en su versión 1.2 por lo que tuve que aguantarme una pequeña eternidad para poder usarlo como teléfono, y no iPod glorificado.

Todavía recuerdo las palabras que le dije a un amigo, sentados en un restaurante de Ensenada: “Esto lo cambia todo. Es tener Internet en la palma de tu mano” y eso que todavía no se podían instalar aplicaciones de terceros de manera oficial. En ese tiempo “la API era la Web” la cosa más ridícula que había escuchado decir a Steve Jobs. Aquí le faltó visión, o mi propia falta de visión no me permitió ver que ese era el plan desde el inicio. Sea como sea, el iPhone fue el dispositivo que me hizo voltear a ver a Apple de nuevo.

No fue fácil, de hecho su ecosistema cerrado es un gran punto negativo. Pero gracias a la comunidad del jailbreak, es un poco más manejable. Al ver los equipos actuales con Android, superiores en todos los aspectos técnicos, batallar con las animaciones y el despliegue de gráficos confirma la eterna apuesta de Apple de controlar tanto el hardware como el software.

Mi relación con los productos de Apple nunca fue de ciego fanatismo, o deseo incontrolable. Cuando todos morían por Aqua yo deseaba la simplicidad de Gnome 2. Cuando las iMacs y iBooks estaban de moda, yo pasaba mi tiempo libre construyendo mis propias computadoras e instalándones cuanto sistema operativo se cruzara en mi camino. Pero todo este tiempo he admirado el trabajo de una persona que tuvo la visión de llevar una computadora personal a todos los hogares… siempre y cuando tengan los USD $2500 para comprar una MacBook Pro.

El ingenio y las pelotas para llevar tus ideas a cabo siempre va a ser motivo de gran admiración en mi libro. Y por esta razón no puedo más que lamentar la pérdida, y admirar los logros a lo largo de la vida de Steve Jobs.

Falso proxy, o como ver That Metal Show desde fuera de USA

Cesar August 29th, 2011 browsers, internet, tips 6 comentarios

Esta es la situación: Domingo por la tarde, nada que ver en la TV. Me entero que That Metal Show tiene un episodio con Tony Iommi, pero el stream no se puede ver a menos que te encuentres en Estados Unidos. ¿Como saben que no estoy en Estados Unidos? con tu IP, que puede ser geolocalizada. El player de Flash que utilizan en el sitio obtiene tu IP, lo busca en una base de datos y determina que no, no estas en Estados Unidos, así que te quedas sin That Metal Show.

La solución a esto es, obviamente, tener una IP de Estados Unidos. ¿Pero como podemos obtener una? Una posible solución es un servidor proxy dentro de Estados Unidos. El servidor proxy pedirá el contenido por nosotros y nos lo reenviará. Sin embargo estos servicios generalmente tienen un costo. Antes estaba hotspotshield, pero ahora los players (por lo menos el que usan en VH1) saben como detectar cuando se está usando un proxy y no nos entrega nuestra dosis semanal de Heavy Metal.

¿Cómo lo detectan? les presento al encabezado X-Forwarded-For. Este encabezado normalmente lo agrega un servidor proxy, para decirle a los sitios Web la IP original que pidió el contenido. Seguramente el programador de player checa si viene el encabezado y de ser así, de ahí obtiene el IP, lo revisa y determina que estas fuera de los Estados Unidos. No Streaming For You!

¿Que hacemos? Si pudiéramos modificar nuestra petición para incluir dicho encabezado, y que el encabezado en vez de reportar nuestro IP real, reportara un IP dentro de Estados Unidos, con eso sería suficiente. El player al ver que viene el encabezado tomaría esa IP en vez de la original, y sería una IP de Estados Unidos.

Gracias a Firefox y un plugin llamado Modify Headers, lo anterior es bastante posible y funciona. La potencia de Firefox al descubierto: podrá ser más lento que Chrome, pero sus extensiones son más potentes. Instalamos la extensión, la abrimos y agregamos un nuevo filtro:

  • Action: add
  • Header name: X-Forwarded-For
  • Header value: cualquier IP de Estados Unidos. P.Ej. 8.8.8.8

Mientras tengamos la ventana de modify headers abierta, podremos ahora visitar el sitio de That Metal Show y verificar que nos entrega el stream sin problemas. Si queremos hacer esto permanente, simplemente vamos al tab de Options y seleccionamos Always On, aunque no lo recomiendo. Lo mejor es solo activarlo cuando queramos ver el stream.

Otra vez Firefox y sus extensiones al rescate. Eso me recuerda por qué siempre tengo Chrome y Firefox instalados, y aunque uso Chrome para navegación del día a día, Firefox no ha sido desplazado del todo y me preocupo por mantenerlo actualizado. En mi mente Internet Explorer, Chrome y Firefox son como los tres sistemas operativos principales:

  • Internet Explorer es como Windows: En sus versiones anteriores hasta vergüenza te debería de dar usarlo, aunque ha ido mejorando poco a poco y su versión más nueva no está del todo mal. Aún así, lo uso por necesidad y no por gusto.
  • Chrome es como OSX: Sexy y rápido. Todo un trend setter. Cuando salió todos admiraron su interfaz de usuario, y ahora los otros navegadores están implementando esos mismos conceptos. Aunque ya que pasa el efecto WOW de su interfaz, te das cuenta que le hacen falta cosas que lo hagan más personalizable y extiendan sus capacidades.
  • Firefox es como GNU/Linux: No es el más bonito definitivamente, pero es muy potente. La elección de los geeks, con extensiones que te permiten modificar cada parte del navegador a tu antojo y hacer tan simple o complejo como tu decidas. El poder está en tus manos.

El Natural Scrolling de Mac OS Lion

Axel August 3rd, 2011 sistemas operativos 6 comentarios

troll-leon

Quise esperarme a utilizar Mac OS Lion por un día para poder experimentar o sufrir en carne propia el Natural Scrolling, una característica del sistema operativo que invierte la dirección del desplazamiento en las ventanas. Estas son mis ideas al respecto:

Me parece que el ese patrón de uso tiene sentido cuando haces scroll tocando la pantalla, como en iOS, por que el feedback visual y táctil se alinean perfectamente (tocar la “página” y empujarla hacia arriba o hacia abajo), pero cuando lo hacemos a distancia, aún cuando estemos usando el trackpad multi-touch de Apple, no es así.

Tenemos más de cuarenta años haciendo scroll utilizando las barras de desplazamiento de las ventanas en prácticamente todos los sistemas operativos con entorno gráfico, por lo que es natural que cuando se adoptaron otros métodos de interacción como la scroll wheel en el mouse común se haya seguido el mismo patron de interacción.

Apple se está peleando con ese patrón. Podría parecer (y esa fue mi opinión inicial) que el natural scrolling es una característica traida por moda y capricho de iOS al sistema operativo de escritorio, pero la cosa no es tan simple:

Lion incluye gestos multi-touch para desplazarse entre los escritorios virtuales (que en el sistema operativo se alinean horizontalmente) y para pasar de página o diapositiva en cualquier medio que lo permita (PDF, slideshows, etc.) en los que curiosamente lo natural, contrario al scrolling “tradicional” (en mi experiencia como usuario) es arrastrar en la dirección en los que queremos que se mueva el contenido de la pantalla, es decir, para ver el escritorio de la derecha, “empujamos” el escritorio actual hacia la izquierda (piensa en las interfaces de Minority Report).

¿Por qué el scroll vertical se siente ridículo y el pase horizontal de páginas se siente natural (o al revés con natural scrolling desactivado)? Por la sencilla razón de que para lo segundo no tenemos suficientes experiencias previas, es algo relativamente nuevo para nuestro cerebro.

¿Entonces? ¿Está Apple introduciendo por capricho la característica en Mac OS? ¿Está tratando de corregir el “error cognitivo” en sus usuarios, en tiempos en los que ya no es necesario arrastrar con el puntero las barras de desplazamiento, en pos de abrir el camino a nuevas formas de interacción?

Con respecto a las preguntas anteriores solamente podemos opinar. En mi caso, me puedo imaginar a un grupo de trabajo de user experience tomando la decisión de sacrificar temporalmente la experiencia en el scrolling a cambio de obtener congruencia en el comportamiento de las dos características que menciono en este artículo, sobre todo por el bien del camino futuro en el área de la interacción.

Sin embargo yo desactivé el natural scrolling y decidí chutarme el pase de páginas y de escritorios “al revés”. Terco que es uno.

¿Tú qué opinas?

Mi top 5 de apps para instalar después de hacer jailbreak (iOS)

Cesar July 5th, 2011 aplicaciones 1 comentario

Después de cambiar mi trusty old BlackBerry 8520, pasar por un periodo de luto y adaptación a un iPhone, puedo decir que aún no me encuentro tan satisfecho con la experiencia de uso del día a día de un iPhone comparado con una BlackBerry, inclusive una tan antigua como la 8520. No nos engañemos, el iPhone hace casi todo de manera muy superior a una BlackBerry, sólo por mencionar unos ejemplos:

  • Navegación Web
  • Instalación de aplicaciones
  • Reproducción de música y videos
  • Juegos

En todas esas áreas, el iPhone le patea el trasero a cualquier BlackBerry. Pero hay una área en la que no, y da la casualidad que es crítica para lo que un teléfono (o un smartphone) fue creado: comunicarse. El sistema de notificaciones del iPhone es mas feo que un carro por abajo, y eso es crítico para una buena experiencia de usuario al estarse comunicando. Una BlackBerry podrá ser más fea, sentirse más lenta, un pain in the ass para navegar y prácticamente no tener juegos disponibles, además que su App World es tan malo como pegarle a Jesucristo en cuaresma, pero su sistema de notificaciones y la manera en la que todo se concentra en un solo lugar, es lo que hace que la experiencia al comunicarse simplemente funcione. Tengo mis esperanzas puestas en iOS 5 para que arregle el patético intento de notificaciones, y POR FAVOR, eliminen o por lo menos pongan la opción de no mostrar en la pantalla principal, centrado y con negritas cuando alguien te manda un SMS.

Véanlo de esta manera: un iPhone es una computadora de bolsillo que resulta tener un componente para hablar por teléfono. Una BlackBerry es un teléfono con soporte para aplicaciones y centrado en el email, lo que lo hace técnicamente un smartphone.

Pero hay algo que se puede hacer al respecto que sólo esperar a que Apple arregle todo, y en el proceso hacerle algunas modificaciones a nuestro iPhone para mejorar la experiencia del usuario. Este es mi top 5 de aplicaciones para instalar después de hacerle jailbreak al iPhone.

  1. Activator: control centralizado para usar distintos botones, gestos, movimientos y demás. Con este programa puedes controlar por ejemplo que al presionar y mantener el botón de sleep (el de arriba) se prenda el led de la cámara para usarlo como linterna, o lo que tu quieras. Trae varias categorias, por ejemplo gestos en cualquier lugar, gestos en la pantalla de inicio, en la pantalla de lock, etc. Si alguna vez has pensado “sería bueno que cuando estoy en X y le pico Y, se ejecute Z” entonces esta aplicación es para ti.
  2. SBSettings: reemplazo para todos los programitas tipo switch que habilitan / deshabilitan servicios. Te agrega una capa que puedes activar haciendo slide en la barra de status, desde donde puedes controlar el 3G, el modo avión, bluetooth, el brillo de la pantalla, la conexión de datos, el My3G o MyWi (mas sobre estas dos aplicaciones a continuación), los procesos que se encuentran corriendo en tu iPhone, el daemon ssh, SnapTap (también más sobre esto a continuación) y la red WiFi, además te dice tu IP y ya nomás falta que te de los buenos días. La neta es que Apple debería copiarse esto pero ya.
  3. Call Delete: ¿ya ven como Apple son bien puritanos? Seguramente no incluyeron manera de borrar llamadas individuales del log porque… ¿Quienes son los que quieren borrar llamadas individiales? Seguramente solo maridos infieles o gente con malas intenciones. En el iPhone o borras todas las llamadas, o las dejas todas. Pero no más, con Call Delete puedes borrar aquellas llamadas que no quieras que otros vean. Instálenlo ya aún si no piensan poner el cuerno, porque es una funcionalidad que debería estar ahí en primer lugar.
  4. Mark Read: Otra flagrante omisión por parte de Apple. Resulta que no hay manera, no can’t do, de marcar todos los correos recibidos como leídos. Instala este programa para poder hacer algo que parece obvio, pero no lo trae de fábrica.
  5. MobileNotifier: Solo por esto, Apple debería de fomentar el jailbreak. MobileNotifier agrega notificaciones que no apestan. No solo no apestan, sino que son muy buenas. Tanto que Apple contrató al programador de esta aplicación para que lo implementara de manera oficial, y es lo que veremos en iOS 5.

Ese es mi top 5, pero hay otras que vale la pena mencionarlas rápidamente: My3G te permite usar 3G en cualquier aplicación no solo en las que quiera Apple, MyWi te permite compartir tu conexión 3G ya sea por medio de un hotspot WiFi, por cable o por bluetooth, SnapTap te permite usar el botón de subir volumen como obturador para la cámara pero sólo funciona con la aplicación oficial y no con Camera+ y finalmente WeBe++ que te permite usar el iPhone como control de PlayStation 3.

Moralidad, privacidad y el porque puedo.

Renuncia: el artículo en cuestión es de opinión personal, y nada tiene que ver con mi empleador. Me deslindo de toda responsabilidad que directa o indirectamente se quisiera imputar como resultado de lo aquí plasmado.

Con todo el revuelo en la Web sobre los ataques perpetrados por los distintos grupos como Anonymous, LulzSec y más recientemente TeamPoison, una pregunta se me viene a la mente: ¿Es razón suficiente el poder hacerlo, para llevarlo a cabo?

Estos antigrupos operan bajo la premisa que debido a la poca atención a la seguridad de los sitios de distintas organizaciones, ellos pueden entrar y robar información. Algunos lo esconden bajo una máscara de activismo (Anonymous), otros lo hacen solo por diversión (LulzSec) y otros por venganza (TeamPoison). El fin justifica los medios.

Aún cuando estos actos nos hayan afectado directamente – como puede ser el caso de algun usuario de la PlayStation Network del que pudieran haber obtenido sus datos de tarjeta de crédito – no tenemos que ir tan lejos para ver actos similares mucho más cercanos a nuestra vida diaria, con el potencial de afectarnos más profundamente. Uno de estos actos puede ser por ejemplo el uso de redes inalámbricas a las cuales no tenemos acceso, o el escuchar tráfico de red que no fue destinado a nosotros. Ambas posibilidades muy reales y relativamente fáciles de lograr, con repercusiones potencialmente graves. ¿Es que la poca atención a la seguridad, o el completo desconocimiento de cómo funciona nos hace vulnerables a todo tipo de ataques que atentan contra nuestra privacidad?

Algo muy típico por ejemplo, es el llamado sniffing. Por cuenta propia, el recibir paquetes en tránsito por la red es algo muy valioso para analizar problemas de red, detectar usuarios maliciosos dentro de la red, o intentos de intrusión desde fuera, o inclusive para depurar protocolos de red en desarrollo. Sin embargo, como toda herramienta puede usarse para fines cuestionables, como podría ser capturar información sensitiva en tránsito. ¿Y que información sensitiva se podría capturar? Básicamente cualquiera que se genere en un protocolo de texto plano:

  • FTP
  • Telnet
  • POP3 (correo electrónico)
  • Y la mayoría de los protocolos de mensajería instantánea populares

No hay que ser un hacker de élite para capturar paquetes en tránsito de alguno de estos protocolos y, por ejemplo, leer conversaciones ajenas y privadas por MSN. Peor aún, están los que se creen hacker por descargar una aplicación que te permite capturar los paquetes, filtrarlos y presentarlos en un formato listo para ser consumido. Hay aplicaciones en el mercado que inclusive concentran toda esta información y la guardan o la envían a un repositorio central, efectivamente espiando a los usuarios de la red. Todo esto es accesible, literalmente, a unos cuantos click de distancia.

Claro que una vez que sabemos el peligro, a nosotros como usuarios nos parece inclusive estúpido no protegernos ante el peligro latente. ¿Pero y los que no saben? ¿Es nuestro deber como usuarios de la red conocer los detalles de la implementación de los protocolos de las aplicaciones que usamos? ¡Si yo solo quería chatear un rato con mis amigos!

Dejando a un lado operaciones militares y cuestiones de seguridad nacional, todos los seres humanos tenemos el derecho a la privacidad. Que un individuo atente contra este derecho, por ejemplo instalando un sniffer y espiando conversaciones ajenas me parece un acto despreciable. Que una entidad (llámese empresa, gobierno, organización o persona en posición de autoridad, entre otras) quiera combatir fuego contra fuego, apaciguar el impacto de un atentado contra su privacidad, a su vez atentando contra la privacidad de otros y justificando sus acciones bajo el lema de “tu me hiciste, yo te hago”, no solo es despreciable, es ventajoso, poco efectivo y potencialmente ilegal (no se sobre este punto, no soy abogado).

Es cierto que transmitir datos por un canal inseguro sin encriptación, abre la puerta a que otros escuchen. Sería como el equivalente de hablar con otra persona y esperar que la gente a nuestro alrededor no escuche lo que decimos. El problema es que en el mundo de las charlas por Internet se nos ofrece un falso sentido de privacidad, y la falta de ella no es tan clara como en el mundo real. Cuando estamos conversando con alguien en una ventana de MSN, por ejemplo, todo parece indicar que los mensajes son uno a uno y nadie más puede leerlos. La ilusión es como estar en un espacio físico privado donde nadie puede escuchar (o leer) lo que decimos. Pero la realidad es otra, la realidad es como comunicarnos enviando mensajes en un trozo de papel que pasa por varias manos antes de llegar a su destino, y esperar que nadie lea los mensajes mientras el papel es entregado a su destinatario. Solo hace falta que una de las personas que lleva el mensaje dirija su atención al papel mientras lo lleva a su destino para perder nuestra privacidad.

Afortunadamente hay cosas que podemos hacer para proteger nuestra privacidad, más allá de esperar a vivir en un mundo ideal en donde nadie use su conocimiento y herramientas de manera irresponsable. El proyecto Tor nos ofrece una excelente manera de protegernos y mantener nuestro anonimato, evitando que otros lean nuestras conversaciones, descubran nuestra localización o sepan nuestros hábitos de navegación por la Web aún cuando capturen nuestros paquetes en tránsito. Como usuarios es nuestro derecho poder hacer lo necesario para proteger nuestra privacidad, y los profesionales de las TI tienen en sus manos la responsabilidad de proteger este derecho de sus usuarios, y proveer un ambiente seguro y/o educar a sus usuarios en los límites de esta falsa privacidad.

Ahora yo les hago una pregunta: Si te encuentras en una situación en el mundo real, en donde al hablar con otra persona te das cuenta que hay otros escuchando tu conversación privada, ¿que haces?

  1. ¿Tomas las medidas necesarias para continuar tu conversación en privado (como por ejemplo irte a un lugar más privado)?
  2. ¿O será que en vez de eso, te pones a escuchar las conversaciones de los demás, esperando que eso resuelva tu problema de privacidad?

iPad gratis

ipadOk, nadie está regalando iPads; pero hoy caí en cuenta que cada vez que voy a la oficina me compro –y termino– una botella de agua que cuesta $12.50 y pensé en la banalidad que es comprar agua embotellada. En esos raros momentos de sensatez anti-consumista a veces me pongo a hacer números:

$12.50 x 2 x 5 = $125 pesos a la semana

$125 x 52 = $6,500 al año

Justo lo que cuesta la iPad 2. Claro que en la vida no podemos esperar que todo sea predecible. Están los días que no voy a la oficina, vacaciones y así. Por otro lado sólo estoy contando los días entre semana y no estoy contando los 50 centavos que el OXXO te retiene (a veces preguntan si los quieres donar). Ya contando todas las variables, creo que seguimos quedando cerca. Por lo tanto (aunque no es viable para todos):

Llevar tu propia agua = iPad gratis

troll

Cómo no programar una encuesta Web

Cesar May 22nd, 2011 programacion, tips 3 comentarios

Frecuentemente me encuentro con sitios que deciden atraer más visitantes, creando concursos en donde la gente vota por su participante favorito. No hay nada de malo con eso, sólo que son fácilmente abusadas si no se tiene cuidado al programarlos. Al final podemos tener un ganador que no fue la elección popular, sino el más hábil con los bits.

Supongamos que hay una encuesta para votar por la flor más bella del ejido, y tenemos a las siguientes candidatas:
La Flor Mas Bella del Ejido

De izquierda a derecha las numeramos como Flor 1, 2, 3 ,4, 5 y 6.

El programador del sitio se siente muy confiado, ya que guarda una cookie en el navegador para identificar de manera única a los usuarios y evitar que voten repetido. Empieza la votación y por alguna razón la flor #3 va en la última posición, pero esta flor tiene amigos que le saben a eso de las computadoras y les pide algo de ayuda. Lo que hacen los amigos de la flor #3 es lo siguiente (en PHP):

function xrun($email,$name){

//set POST variables
$url = ‘http://www.laflormasbelladelejido.com.mx/votar.php’;
$fields = array(
‘Nombre’=>$name,
‘Email’=>$email,
‘Voto7′=>’VOTO POR LA FLOR #3′
);

$fields_string =”";

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.’=’.$value.’&'; }
rtrim($fields_string,’&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

}

Lo que hace el script anterior es enviar un HTTP POST a la URL de votación, previa preparación de las variables que espera la forma. Esto es muy fácil saberlo utilizando Firebug por ejemplo, o la consola para desarrolladores de Chrome. Para enviar el POST, están utilizando curl que es la neta del planeta cuando se trata de transferir datos por medio de HTTP, en este caso los datos del voto.

Pero ejecutar el script manualmente para aumentar el número de votos por la flor #3 es muy tedioso, así que los emprendedores amigos de esta pobre flor decidieron llevarlo un paso más alla:

$nombres = file_get_contents(”nombres.txt”);
$correos = file_get_contents(”correos.txt”);
$nom = split(”\n”,$nombres);
$ema = split(”\n”,$correos);
$r = count($nom);

for($x=0;$x<$r;$x++){

if($ema[$x] && $nom[$x]){
xrun( $ema[$x], $nom[$x]);
}

}

Ahora basado en un archivo de nombres y correos, se van a enviar tantos votos como nombres existan en el archivo. Este pedazo de código se puede mejorar muchísimo, por ejemplo sólo enviar tantos votos como pares nombre – correo existan, en vez de basarse en el número de nombres. Otra posibilidad es enviar votos en un ciclo pero restringido en tiempo, es decir simular que ha pasado cierto tiempo entre voto y voto, para que no sea tan obvio que es un programa y no gente real la que está votando.

Y ya con eso la flor más bella del ejido es la #3, como podemos verla en la imagen tan contentota.

¿Y la cookie? Obviamente se la pasa por el arco del triunfo. El problema es que el programador supuso que los votos siempre vendrían del navegador, es decir confió de la entrada del usuario. ¿Y cual es la primera regla de la seguridad programación Web?

  1. Desconfía en la entrada del usuario.

Lo repetiremos de nuevo solo para asegurarnos de que quedó claro:

  1. Desconfía en la entrada del usuario.

Así es, desconfía de la entrada del usuario. Desconfía como desconfías del que te quiere vender un tiempo compartido, o del informe de gobierno.

¿Qué podemos hacer para evitarlo?
Lo más obvio es guardar la IP, pero eso deja por fuera a muchísimas personas que se conectan usando NAT. Me explico: en una casa puede que existan 3 personas que comparten una conexión a Internet. Estas tres personas quieren votar por la flor mas bella del ejido, pero la persona 1 ya se les adelantó y su IP fue guardado en el servidor del sitio por lo que al querer votar la persona 2 ya no puede, le aparece un mensaje que su voto ya fue registrado. La decisión de qué hacer dependerá de que tan flexible y seguro necesitamos que sea la encuesta.

Si se esta votando por la flor mas bella del ejido, probablemente sea suficiente con guardar la IP por 30 minutos o más y validar contra eso. Si se está votando por el presidente de un país, probablemente sea necesario un poco más de seguridad.

Posts anteriores