Archives for the month of: September, 2009

Hace poco más de un mes se terminaron mis vacaciones. El día 15 de Agosto ya estaba trabajando de nuevo, y como estaba muy triste por haber dejado atrás mi verano en Murcia con calor, piscina y playa… me compré un gadget. Es algo que suele funcionar cuando estás triste, un gadget nuevo siempre reaviva el alma heheh

eeepc-1005ha-stock2-hh

Se trata de un netbook. Es un Eee 1005HA de Asus, y es un lujo. Pesa poquísimo, tiene una batería de 6 celdas que dura como 5 o 6 horas, y cabe en cualquier sitio porque es de 10″. Desde que le instalé Ubuntu Netbook Remix me he enamorado de él, no especialmente por el sistema operativo sino porque me lo llevo a todas partes como si fuese un teléfono móvil. De hecho cuando voy a Barcelona en autobús, le conecto por USB mi HTC Hero y voy todo el camino navegando por internet.

Tengo que decir que pedí invitación para Jolicloud, pero lo probé y duró exactamente una hora instalado en mi ordenador. No me gusta, lo siento de verdad. Así que volví a Ubuntu Netbook Remix, que lo cierto es que está muy bien. Incluso hay quien se deshace de la interfaz que el sistema trae para los netbooks, pero a mí me gusta y la conservo.

En cuanto a las cosas que no me gustan hay una básica: la reproducción de vídeos en flash da pena. No creo que sea problema de la tarjeta gráfica, sino más bien del driver que el sistema tiene para usarla. La aceleración es una cagada: de hecho aunque glxinfo dice que el servidor gráfico tiene cargados los módulos de DRI, el uso del sistema es como si no los tuviese. Y el problema que me ocasiona esto es que no puedo conctarlo a la tele en la cocina pra ver pelis mientras ceno heheh… sé que parece una tontería, pero no lo es. En la televisión del comedor tengo un ordenador para ver películas y series en streaming, y me hubiese gustado poderlo hacer también en la cocina porque mis cenas serían mucho más amenas.

En cuanto al uso que le doy, pues es evidente que no trabajo con él. Mi trabajo diario actualmente gira entorno al desarrollo de un portal en Ruby on Rails, y programo con mi Macbook Pro conectado a un Cinema Display de 24″, usando vim con plugins para hacer tabs y para navegación de directorios. Nadie sería capaz de meter todo lo que necesito tener abierto en una pantalla de 10″. El netbook me sirve para llevarlo encima cuando voy con los amigos, para conectarme en un bar y cosas por el estilo. Y también para otra cosa… estoy escribiendo un libro.

Ya son dos personas las que lo han preguntado en este blog, y algunas más que he visto hacerlo en otros foros y páginas de noticias. Resulta que mucha gente se queja de que envía mensajes SMS y los destinatarios reciben un mensaje lleno de caracteres raros (símbolos ASCII en realidad: @, #, y cosas del estilo).
A mí personalmente no me ha pasado, pro he estado dando una vuelta y creo que he encontrado el problema: fuente 1, fuente 2, fuente 3.
Otra cosa es que no estoy del todo seguro a qué teléfonos afecta y con qué ROM’s ni versiones. De entrada se suelen quejar los usuarios de HTC Magic y HTC Hero. Es posible que a otros terminales con Android este problema no les afecte.

Se trata de lo siguiente, el problema tiene dos partes:

  • El estándar de notificación SMS admite caracteres de 7 bits, es decir todas las letras incluída la ñ, pero sin acentos. Los acentos ocupan 8 bits. Así, cuando se incluye un acento en un mensaje el teléfono cambia la codificación de todo el mensaje para adaptarla a caracteres de 8 bits. Eso significa que se pueden incluir menos caracteres en el mensaje.
    A efectos del cliente eso no es así, el cliente siempre ve las letras que le quedan en el mensaje, y una letra con acento sólo le cuenta como una letra más. Pero después la operadora parte el mensaje para enviarlo en formato de 7 bits, y si no le cabe todo en uno (160 caracteres máximo) entonces lo envía en 2 partes, o en 3, según lo que necesite.
    Habréis oído a gente quejándose de que Movistar con el iPhone cobra más caros los mensajes que contienen “ñ”. Es por el mismo motivo: la conversión de caracteres.
    El caso es que en Android, al utilizar una letra con acento éste convierte todo el mensaje a unicode de 16 bits (UTF-16). Esta parte la supongo yo, no la he leído en ningún sitio y puede que me equivoque. Quizá trabaje con UTF-8, pero yo supongo que será 16 por la forma de crecer la longitud del mensaje tan desmesurada, imagino que pensando en dar cabida a todo tipo de carcteres extraños (latinos, alemanes, etc).
    En fin, el caso es que de esta forma cada letra del mensaje, con o sin acento, pasa a ocupar 16 bits. Esto normalmente se traduciría en que cabrían sólo 10 letras en un mensaje, pero en lugar de eso el teléfono permite seguir editando para añadir tantos caracteres como se desee. El resultado final es que la operadora partirá el mensaje en trozos y lo enviará, tarificando al usuario tantos mensajes como partes haya enviado.
  • Aquí viene la segunda parte del problema. Resulta que los mensajes MMS (mensajes multimedia) son similares a los SMS (texto), pero permiten muchos más carcteres. De hecho, cuando adjuntamos una fotografía o un vídeo el teléfono y la operadora no entienden lo que es, sólo entienden los bits que se transmiten. Un mensaje MMS puede permitir más de 1000 caracteres de 7 bits, algunas operadoras incluso más de 3000. El coste de un MMS suele ser como el triple de lo que vale un SMS.
    Y esta es la raíz del problema. Cuando escribimos un mensaje que ocupa más de 2 partes Android cambia el tipo de mensaje a MMS, porque entiende que será más barato enviar un MMS que 3 o 4 partes SMS.

Juntando las dos cosas, lo que pasa es los siguiente:

  • Empezamos a escribir un mensaje
  • A medio mensaje le ponemos un acento
  • Android cambia la codificación a Unicode de 16 bits
  • Nosotros tenemos la impresión de haber escrito un mensaje normal, de unos 150 caracteres
  • Android, al cambiar la codificación de 7 bits a Unicode de 16 bits hace que la longitud del mensaje se multiplique casi por 3
  • Dada la nueva longitud, cambia el tipo de mensaje a MMS para tarificar más barato
  • La operadora finalmente envía un MMS
  • Si el que recibe el mensaje tiene un teléfono sin capacidad para recibir MMS, lo que lee es código ASCII. Es decir, esos simbolitos raros.

Y ese es el problema. Que android cambia el tipo de mensaje a MMS cuando la longitud supera las dos partes de un SMS, y el que lo recibe tiene que tener soporte para MMS o sino recibirá una ristra de basura. Espero con esto haber aclarado las dudas :-)

Por cierto, la solución es fácil: enviad mensajes sin acentos. Y no enviéis mensajes de 4 partes… ¿¿para que?? un mensaje es corto, tiene que ser corto, es como tweet.
Al que le pasan estas cosas demuestra que no entiende la filosofía del SMS (que curiosamente las operadoras describen como mensaje CORTO… por algo será).

ACTUALIZACIÓN: explicación más larga, técnica y detallada aquí (vía @androides)