Iphone En Uruguay

Desde el martes mi nuevo celular es un iPhone. Al igual que hice con el V3, aqui les dejo los pasos necesarios para configurarlo con ANCEL.

Estos son los pasos necesarios para desbloquearlo (gracias Jimmy!) y hacerlo andar con la tarifa plana WAP de ANCEL. No estoy seguro que sea la forma más optima de hacerlo, pero doy fe que funciona para iPhones que vienen de fábrica con firmware version 1.0.2 o 1.1.1.

1. Downgrade a 1.0.2 (solo para iPhones con firmware 1.1.1)

En mi caso el iPhone me vino con la versión 1.0.2 de firmware, por lo que no tuve que hacerle un dowgrade. Sin embargo, tengo conocidos que lo han hecho y les funcionó. Sin embargo, no conozco a nadie que haya logrado desbloquearlo con la 1.1.1 y le funcione con ANCEL.

Este paso solo es necesario para iPhones con firmware 1.1.1. El downgrade es para volverlo a la versión 1.0.2 de firmware, que es la que funciona bien con las tarjetas de ANCEL, aunque probablemente tambén haya forma de hacerlas andar con la 1.1.1 pero aún no lo he probado.

Para hacer el downgrade hay que seguir los pasos de esta página. Limitarse solo a los pasos de esa página, no seguir con los siguientes partes.

Con eso ya tenemos el iPhone con firmware 1.0.2.

2. Activar y desbloquear

Ir a esta página y seguir todos los pasos, incluyendo las siguientes partes.

3. Configurar WAP ancel

Seguir con los pasos de esta página con las siguientes modificaciones:

  • en el paso 2 cambiar el APN por "wap" en lugar de "wap.voicestream.com"
  • en el paso 3, utilizar el siguiente archivo proxy.pac:
    function FindProxyForURL(url, host)
    {
    if (isInNet(myIpAddress(), "10.0.0.0", "255.0.0.0"))
        return "PROXY 200.40.246.2:3128";
    else
        return "DIRECT";
    }

Mas adelante seguiré actualizando este artículo cuando descubra otras cosas como hacerlo andar con la versión 1.1.1, etc. Aunque en estos momentos no ando con mucho tiempo para probar nada.

Otra cosa muy útil es poderse conectar a Internet (con la laptop) utilizando la conexión del celuar. Yo logré hacerlo con el iPhone siguiendo estos pasos pero es un procedimiento muy tedioso y no da para hacerlo todos los días, como lo hacía con el V3 que me lo detectaba como módem y podía conectarme y desconectarme al toque. Para el iPhone es mucho más complicado, ya que hay que compartir la conexión WAP por wifi. Según tengo entendido, esto es asi porque Apple intencionalmente no quiere permitir hacerlo, por los acuerdos que tiene con las proveedoras. Ya publicaré mas información al respecto.

A propósito, si logran hacer andar una conexión con un celular que brinde interaz de modem (como el V3) y quieren tener un acceso a Internet menos limitado (ya que ANCEL utiliza un proxy que bloquea todos los puertos) les recomiendo seguir esta muy buena guía de Francisco Castro, donde explica como hacerlo en Debian, aunque para otros Linux es muy similar.

Email Obfuscation Techniques

Email obfuscation techniques are used to hide email address from spammers. They're used to show email addresses in web pages without the risk of exposing them to spam bots which constantly crawl the web harvesting for them.

In this article, I'll describe 3 techniques I've used to obfuscate email address.

1. Obfuscating the HTML code

This one consists in writing the email using HTML entities and (optionally) <span> tags. For example, if you want to to display the email "user@example.com" you would insert some code like this:

<span>u</span><span>s</span><span>e</span>
<span>r</span><span>@</span><span>e</span>
<span>x</span><span>a</span><span>m</span>
<span>p</span><span>l</span><span>e</span>
<span>.</span><span>c</span><span>o</span>
<span>&#109</span>

The <span> tags are optional but add an extra layer of complexity for spam bots trying to discover email address inside the page code. The advantages of this method is that the email is displayed seamlessly, in the same font as the rest of the text. However this is not a very effective method since most bots do automatic HTML entities translation on the fly removing <span> tags and HTML entities.

2. Using server side code

This one consists in using a server-side script (such as PHP) for generating an image containing the email that you want to display. This is the technique I use in my company website and is much more effective than the first one, although it doesn't display the email in the native page font, so the email will look more or less awkward depending on how different are the server font from the client browser font.

So, instead of inserting the email you would insert something like:

<img src="http://insophia.com/email.php?u=prh" />

Here is the source code of ths script I use in insophia.com (written in PHP using the GD imaging library).

As you can see, the email is not contained in the code at all since the script already knows the domain and automatically adds it. That's what makes this method so effective.

3. Using client-side (javascript) code

Finally, you can use Javascript (client side) code like the one I use in my personal contact page.

For example, if you want to display the email "user@example.com" you would insert a piece of code like this in your HTML:

<script language="javascript" type="text/javascript">
var part1 = "user";
var part2 = "example.com";
document.write(part1 + '@' + part2)
</script>

This technique is also very effective. It requires the browser to be Javascript enabled but that's probably a safe assumption these days, since most web pages requires JS to run.

Spam Is Over

It is over, but not in a traditional sense. I mean, I still receive loads of junk mail daily but they all go straight to the "Spam folder" so I never get to see them, pretty much as if I had never received them. Spam is just something I don't care anymore.

For me, it's quite clear now that Spam filters have beaten spammers, hands down. Of course you need to use a decent spam filter but, frankly, who doesn't? (when Gmail already provides an excellent one). There are also very good open source alternatives such as spamassassin and dspam, the latter which I've found extremely efficient. So, if you ask me, Spam is over. Sorry spammers, you've lost. Now let's focus on more important issues such as Net Neutrality.

Also, like I said a couple of years ago, Jabber will converge with email in the future (it's already happening with Gmail/Gtalk) so communication will require a previous "synchronization" phase between the parts where their must authorize each other, and that will hurt Spam very badly too.

Maximum Recursion Limit In Python

Today, while working on a project at Insopha, we were parsing some HTML code using BeautifulSoup for screen scraping purposes when we faced a maximum recursion depth exceeded runtime error. At first we thought it was caused by some bug in the BeautifulSoup library, but then we realized that the Python interpreter was detecting a recursion problem because of the sequence of callbacks called in the BeautifulSoup SGML parser triggered by the HTML structure which contained a lot of nested <span> tags. But it wasn't really an infinite recursion (just too many recursions) so it wasn't actually a BeautifulSoup bug.

Python comes with a default value of 1000 for maximum recursion limit but it can be changed through sys.setrecursionlimit().

So the question is: how much is safe to raise that value?. Well, Python also comes with a script to test that. Running that script (in Python 2.5) on several OS and architectures we got the following results:

  • Linux / 64 bits: 7400
  • Linux / 32 bits: 5400
  • OS X / ppc7450: 4800
  • Windows XP: 2000

Insophia Begins

Mucho he escrito y criticado en este blog sobre malapraxis en empresas como Microsoft, Antel y otras que (a mi entender) descuidan o equivocan el camino. Y lo cierto es que a todos nos gusta criticar lo que no podemos controlar. Es una forma de segura de criticar sin riesgos. Pues bien, ahora que realmente tengo la oportunidad de controlar mi propia empresa, espero no equivocarme o al menos no cometer lo mismos errores que he criticado en este blog.

Es entonces que, con mucha alegría, tengo el placer de anunciarles el lanzamiento de Insophia, una empresa que trabajará en el área de las tecnologías de la información (¡vaya sorpresa!). No hay mucho para decir que no esté en la página. Será una empresa dedicada a brindar soluciones basadas en software libre y, por lo tanto, tenemos pensado liberar todo el código del software y las herramientas que produzcamos, aún cuando las licencias que usemos no lo exijan (como la BSD), ya que no lo liberaremos por obligación sino porque realmente creemos que será beneficioso.

Actualmente somos 10 personas, aunque la mayoría son tímidos y aún no se animan a dar la cara :) Estamos trabajando en un proyecto web 2.0 grande de Europa en el cual desarrollamos en Python, un lenguaje muy potente e intuitivo que he usado anteriormente para NotiUY y mi proyecto de fin de carrera.

Como no podía ser de otra manera, Insophia también tiene su propio blog, aunque no pretende competir con VampiroZ ;)

Ah, y por si a alguien le interesa... we're hiring!.

Como Hace Plata El Software Libre

Hace mucho tiempo hacía una reseña sobre una entrevista que dió Fernando da Rosa, sobre software libre, en un programa uruguayo. De hecho, fue el primer artículo real de este blog.

Hoy tengo la felicidad de toparme nuevamente con otra entrevista brindada por Fernando da Rosa, pero esta vez a Radio Espectador donde responde muchas de las típicas interrogantes que se hace la gente que no conoce el concepto de software libre, como por ejemplo ¿cómo se hace plata con el software libre?.

Les recomiendo que la escuchen, la charla es imparcial, no tiene fanatismos, solo respuestas concretas y objetivas.

Desafortunadamente el streaming del Espectador (como software libre, al menos) deja mucho que desear, así que les dejo aquí unos links al audio de la entrevista en formatos más accesibles que RealPlayer:

Por si a alguien le interesa, estos son los comandos que utilicé para convertir el stream RealAudio de la charla a formato MP3/Ogg Vorbis:

mplayer -ao pcm:file=entrevista.wav rtsp://ms.espectador.com/audio/app_metafiles/ap070718darosa.rm
lame entrevista.wav
oggenc entrevista.wav

Gracias a Francisco Castro por facilitarme la tarea publicando el link del stream en la lista debian-uruguay.

Pueden linkear directamente al archivo desde otros blogs, el servidor tiene ancho de banda disponible y les prometo que las URLs no va a cambiar ;)

Mensajeria Instantanea Libre

Finalmente tengo mi propia dirección de mensajería instantánea Jabber (ver página de contacto) y, como era de esperar, igual a mi correo electrónico.

Así es, a partir de hoy disfruto de una cuenta Jabber en mi propio dominio, y no estoy atado a ningún proveedor de mensajería instantánea, lo cual me deja muy contento.

Hasta ahora usaba mi cuenta original de jabber.org (prh@jabber.org), la cual tenía registrada hace unos cinco años, pero que realmente empecé a usar cuando Google lanzó su Google Talk sobre Jabber, más concretamente desde que dicho servicio se hizo disponible a través de Gmail, que fue cuando la gente realmente comenzó a usarlo. Hasta entonces, la cuenta de Jabber era más una curiosidad que otra cosa. Pero, como ya lo decía hace un par de años, el protocolo Jabber se está imponiendo poco a poco como el estándar de facto para mensajería instantánea. Y, si bien Google ya dejó de ser santo de mi devoción, eso es algo por lo que todos deberíamos estarle eternamente agradecidos. De lo contrario, aún seguiríamos penosamente atados al cáncer del MSN.

Bueno, la cuestión es que ya soy felizmente libre con el e-mail, la autentificación (usando OpenID), y ahora la mensajería instantánea,

Si bien hostear tu propio servidor de Jabber puede estar fuera del alcance para algunos, ya hay servicios de hosting (como Dreamhost, entre otros) que proveen este servicio, aún en sus planes más baratos.

Y tú, ¿qué estás esperando para tener tu propia dirección personal de mensajería instantánea, independiente de cualquier proveedor?

Dynamips Simulador De Routers Cisco Para Pc

De vez en cuando uno se topa con pequeñas joyitas de software que le solucionan la vida y siente la necesidad de contarlo al mundo en su blog, porque sabe que a mucha gente le será útil el dato. Tal es el caso de dynamips, un simulador de routers cisco para PC que, junto a su frontend dynagen, hacen una pareja indispensable para el ámbito académico relacionado con routers Cisco. Y, como si esto fuera poco, ambos son software libre (GPL).

A mi al menos me ha resultado terriblemente útil para mis clases de redes en ORT y se lo recomiendo a cualquiera que trabaje con routers Cisco, tanto en el ámbito académico como en el profesional, ya que generalmente no se tienen routers Cisco de sobra para pruebas.

Les adelanto que permite "bridgear" la tarjeta de red de la propia PC a una de las interfaces ethernet del router virtual. ¡Brillante!. Lamento no haberlo encontrado antes, aunque es un proyecto bastante nuevo. Felicitaciones para su desarrollador, aunque alguien debería darle una mano con su blog ;)

Windows Es El Nuevo Dos

Algunos recordarán los primeros tiempos de Windows 95, cuando la mayoría de los programas aún corrían sobre DOS y teníamos que cruzar los dedos rogando para que se ejecutaran correctamente en una ventana de DOS. Recuerdo en particular el ProBoard (software que utilizaba para hostear mi BBS) pero también era el caso para muchos juegos legacy, como Mortal Kombat que (si mal no recuerdo) era uno de los más problemáticos debido al bendito modo protegido.

¿A qué viene todo esto?. A que tengo la impresión de que la historia se está repitiendo nuevamente, solo que ahora el rol de DOS lo ocupa Windows. Ahora es Windows el sistema operativo que se ejecuta en una ventana para poder correr juegos y otras aplicaciones no compatibles con el sistema operativo "nativo". Ya sea usando Vmware (Linux) o Parallels (Mac) el concepto es el mismo: correr Windows para poder ejecutar esa maldita aplicación que no aún no está portada.

La analogía del "modo protegido", si se quiere, también es válida en cierta forma, salvo que en lugar de aplicarse a instrucciones de hardware, se aplica a virus, troyanos y todo tipo de malware.

Reflexiones de domingo a la mañana... :)