¿A qué viene todo esto? Resulta que hace unas pocas horas el identificador de cada estado en Twitter, pasó el límite de los enteros de 32bis (con signo) o sea, 2,147,483,647; a lo que le han denominado el Twitpocalypse, el problema no es con Twitter, sino con las aplicaciones que no están preparadas para enteros más grandes que dicho límite.

Twitterrific FAIL

Las «víctimas» más notables del Twitpocalypse, han sido Twitterrific para el iPhone, TwitterDeck y Destroy Twitter, estos dos últimos ya liberaron nuevas versiones corrigiendo el error y Twitterrific debe esperar el lento/ineficiente proceso de la App Store para que vemos una nueva versión.

Pero esto no se limita solo a clientes de escritorio, seguro también afectará a servicios en linea que dependan de Twitter en alguna forma. Por ejemplo en un script PHP en el que estoy trabajando, por limitar el tipo de datos que inserto a la base de datos estoy haciendo una conversión lo que obtengo de la API de Twitter:

$updateid = (int) $status->id;

El detalle está en que si PHP corre sobre una plataforma de 32bits, el máximo entero es:

$ php -r 'echo PHP_INT_MAX;'
2147483647

Mientras que en una plataforma de 64bits, será:

$ php -r 'echo PHP_INT_MAX;'
9223372036854775807

Al no a ver tenido en cuenta esta sutil diferencia, mi script se ha perdido de algunos tweets en lo que me percaté del problema, en fin gajes del oficio. Al final, lo solucioné de esta forma:

$updateid = (float)$status->id;

// o incluso podría ser:
$updateid = abs( (float)$status->id ); // solo por limitarlo más ;) 

Y claro si están guardando los tweets en alguna base de datos, hay que revisar el tipo de datos para el identificador… de preferencia que sea BIGINT si usan MySQL.

Si notan que alguna aplicación o servicio ha dejado de funcionar recientemente y sin razón alguna… ya saben que es lo que pudo haber pasado. Seguro que dentro de las próximas horas saldrán nuevas versiones… y sino, será mejor buscar alguna alternativa a la cual si le presten más atención.