Cyanogen y la vida de la batería en Android

Desde que me pasé a Android no había tenido razones de peso para modificar el software del teléfono (rootearlo,  lo que para iOS seria el Jailbreak). Mi Nexus One ya viene desbloqueado de fábrica, puedo usar cualquier SIM sin problemas; también puedo instalar cualquier aplicación que quiera, no importa si no está en el Android Market.

Con la actualización a Gingerbread (Android 2.3) todo funcionó perfecto excepto que la duración de la batería bajó considerablemente. No uso muchas aplicaciones y limito tener cosas corriendo en segundo plano, aún así no pude lograr más de 8 horas de batería aunque lo usara muy poco.

Leí que bastante gente sufría de lo mismo (aunque a otros les mejor el tiempo de batería), una solución rápida es cambiar el “Wi-Fi sleep policy” a “Never”, aunque suene que el efecto será negativo, si mejora un vida de la batería pero no dramáticamente.

Decidí probar Cyanogen porque leí muchas afirmaciones de gente diciendo que su batería les duraba días usando este ROM. Y pues este fue mi resultado:

Continue reading

Twitter, Snowflake, Números grandes y PHP

Desde que los ID’s de los estados en Twitter son mayores que la representación de enteros usando 32bits, había estado usando el tipo float para filtrar rápidamente esos valores, digamos:

$statusid = isset($_GET['statusid']) ? (float)$_GET['statusid'] : 0;

Con float se pueden tener hasta 14 dígitos sin pasar a la representación exponencial (1.xxxxxxE+NN), y como Twitter solo estaba generando ID’s de 11 dígitos, me pareció que había bastante tiempo antes de que se pasara el límite de float. Además me sirve que tenga la representación como número para comparaciones ($lastid > $firstdbid ) o para hacer cálculos sobre estos (etags).

Ahora que Twitter anda generando los ID’s con Snowflake (más información al respecto en el blog de Twitter), cada ID requiere 15 dígitos o más (53bits por ahora).

Esto no es problema si se tiene PHP a 64bits, ya que se pueden tener hasta 19 dígitos antes de alcanzar el límite. Si se tiene PHP compilado a 32bits, no queda de otra más que usar strings. Un forma rápida para filtrar los IDs tanto para 64bit y 32bit sería:

function safelongint($strint)
{
	$intval = intval($strint);
	if ( $intval == PHP_INT_MAX)
	{
		return preg_replace('/[^0-9]/','',$strint); //eliminar cualquier cosa que no sea dígito
	}
		
	return $intval;
}

Aún si los ID’s pasan el límite de los 64bits, debería usar strings automáticamente. Ya solo queda que la base de datos no tenga problemas con números tan grandes 😉 .

Actualización: Al 10 de Noviembre, Twitter ya llegó a los 17 dígitos en los ID’s… a ese paso el límite de los 64bit durará menos de lo que imaginé.

Un mejor teclado para Android

Cualquiera que ha usado un iPhone por bastante tiempo, al pasarse a Android una de las primeras diferencias que notará es la calidad del teclado (virtual); o al menos para mí, el teclado predeterminado del Android siempre me a parecido complicado de usar, uno confunde con mayor facilidad las teclas.

Lo bueno, y a diferencia del iPhone, es que en Android si se pueden instalar diferentes teclados (y no solo pieles/skins, sino con funcionalidades diferentes). Uno de los que mejor me ha funcionado en Android es el teclado del HTC Sense:

Teclado HTC Sense en Android

Continue reading

Si las telefónicas controlaran la TV por cable o el Internet

Si por las telefónicas fuera uno tendría que comprarles la televisión que ellos permiten o la PC que ellos vendan más un contrato de varios meses. En Wired hablan de las telefónicas gringas, pero en Latinoamerica no es muy diferente. Y lo que complica más la situación es que los fabricantes hagan teléfonos compatibles solo con las bandas de X proveedor :/ (y encima bloqueado).