Llenar internet de mierda

El título del post vale más que el contenido (mis honores al maestro). De cualquier forma, venía hablar –otra vez– de programación. Pataleta, ojo.

Y es que es endemoniadamente difícil programar para el iPhone, incluso lo más básico. Vale, es cierto que soy un cafre y me he quedado en crear un elemento navegador de lo más cutre (que de hecho funciona la mitad de las veces y no sé por qué). Y que ni siquiera he podido hacer un programa que comunique con el GPS del teléfono. Entiendo que crear los ‘entornos’ y diferentes vistas está chupado pero el código es otro mundo, pero da igual.

Yo es que soy muy viejo para estas cosas. Buscar (e importar!) el framework CoreLocation desde el gestor de proyectos de Xcode, crear un montón de handlers, vistas o controladores no es lo mio. Y leer la documentación tampoco.

Pero en fin, a lo que venía: la pataleta. Es increíble la cantidad de chorradas que te puedes encontrar por el AppStore o en Cydia (en los repos de este último programa hay montones de basura, aunque muchísimas cosas interesantes también). Pensar que alguien se pasó horas programando para hacer un maravilloso programa que no hace absolutamente nada. Y lo puso en un repo, llenando internet de mierda. An hero.

Llenar internet de mierda es algo así como vengarse del reciclado del siglo 21. Inexistente por momentos (cuidado, avalancha).

En fin, que me voy a mi esquina.

¿Entonces quién mandaba?

Facebook mola. Bueno, eso no, simplemente se usa mucho. Ya sacaron su nuevo rediseño ‘en grande’ (y creo que simplificaron muchas cosas, pero cometieron el error de ‘aglutinar complicaciones’ en algunas partes de la aplicación convirtiéndola en un suplicio para el usuario final). También intentaron comprar Twitter por unos 500… millones de dólares. Casi nada.

En aquel momento se rifaban las inversiones en Facebook (incluso Microsoft invirtió en la empresa). Se valoraba en unos 15 mil millones (que tampoco es una cifra despreciable de dinero, ya podían darme una parte) y los directivos tenían ego para dar, tomar, regalar y guardar (para ahora mismo, supongo).

Bueno, en cuanto al culebrón de Twitter, como mucha gente ya sabe se quedó en la nada (por lo visto no todo es el dinero). Y por eso, Facebook decide ahora rediseñar su portada para usuarios haciendo que se parezca un poco más a Twitter, aunque con ‘el toque egocéntrico’ que siempre otorga la maravillosa red social. Ya no hay límite de amigos (venga, mañana fiesta en casa y están invitados mis 41.514 amigos del alma), puedes decir qué cosas “se te pasan por la cabeza” en ‘tiempo real’ (esto es que te enteras al momento de las actualizaciones de tus amigos, y yo que pensaba que antes ya era así), y compartir enlaces y demás contenidos con mayor facilidad.

En otras palabras, convertir la portada en un egómetro en tiempo real. Te puedes encontrar con las fotos del verano de tu compañera de clase –la fea– del año pasado, la fiesta entrepreneur de ese tipo tan guay al que le gusta hacer de deejay o, por qué no, a algún naturalmente pervertido que te cuenta –tal cual– qué se le está pasando por la cabeza (¿qué cabeza?) ahora mismo. Ah, también puedes filtrar y ver sólo las perversiones de tus compañeros del colegio. O de la Universidad.

Las opiniones sobre este cambio (fusilada de concepto descarada y mal hecha intentando imitar a Twitter) son bastante variadas. Por lo visto yo no soy el único que (sorprendentemente) tiene otras cosas que hacer a parte de estar atento al lifestream de Facebook. De todas formas, ni a los empleados les gusta el diseño. A Zuckerberg le importa un pepino lo que digan, yo ya estoy cansado (venga, que les queda poco para descubrir la no-competencia con las redes sociales locales), y a los usuarios habituales de Facebook les molesta (o más bien, no les gusta nada): tanto cambio cansa y no es para menos si se trata de malgastar ego.

Estupidez integral

Sé de gente que es más inútil que girar el cuadrado del Tetris.

Yago Rosa

¡Oh! ¡No! ¡Qué he hecho!

Por cierto, Madrid está lleno de vacas y los barrios pijos de peces gordos. Y tal y como está el patio, nos vamos a tener que recordar una vez más que aunque todos los cumpleaños no son siempre felices, mejor dejar de protestar y preocuparnos si entonamos el (un)Happy Birthday (tú yúu…).

Cosa de la SGAE o no, mejor no tapices una vaca con una canción popular. Ni utilices una partitura para cubrir el suelo si quieres pintar el techo, mejor usa La Razón. Es por vuestro bien, si no queréis joder una vaca.

(Oh, venga, otra vez me irrito con los cuadraditos del tetris y el amiguito Teddy… que ha insultando a un tal Dans… ¿quién es eDans?)

El perfeccionista de mierda

(…) la cultura del “perfeccionista de mierda“, en la cual todo error o falta de usabilidad es subsanado con prioridad UNO antes de programar nuevas características

Marcos Besteiro

Pues va a ser que me siento identificado, sí. Pero tampoco está tan mal, al menos incita a encontrar nuevas formas de hacer las cosas (superarse? bueno, depende, muahaha…). ¿Mejor que estar parado, no? Vale, todo depende de como se haga.

Existir y ser de carne y circuitos

Es obvio. Lo que era Internet hace 10, 15, o incluso 20 años, no tiene absolutamente nada que ver con lo que es hoy. Una red de comunicación diseñada con fines científicos se ha convertido en un gran contenedor de relaciones entre personales reales, completamente ajenas a la definición de Internet pese a tratarse de grandes consumidores del contenido presente en “la telaraña” como a algunos les gusta llamar este lugar, que a ojos de otros sólo se trata (poéticamente hablando) de muchos ceros y muchos unos.

Internet es un lugar para despotricar sobre películas y compatir pornografía. Esto lo dicen “Jay” y “Silent Bob”. ¿Cómico? Por qué no. Aunque no deja de ser una caricatura sobre el desarrollo ‘a futuro’ de Internet y por ende “su propia decadencia”.

Pero lo cierto es que Internet no tiene forma, o yo no la veo y soy un cegato. Tampoco se trata de una nebulosa, aunque el concepto de “nube” no es tan descabellado: estamos explotados (y si no nosotros, nuestra propia identidad más real que virtualmente reflejada) por los cuatro lados del mundo y la liamos parda cuando algo se viene abajo.

Y mientras unos discuten sobre la propia identidad, y de la propia persona –real– que busca discernir entre él y su autómata, otros saborean la guinda del postre de esta cargada discusión, adelantándose a una generación que por lo visto jamás pasará el test de Turing.

Ca-Captcha

Cómo hacer un Captcha y que te salga una mierda tal cual: RapidShare. Pero hablemos de humanos y más exactamente de personas: algunas no saben contar. Y eso hace que nuestras propias conclusiones nos terminen asustando. Pero nos terminamos aclarando, aunque sea erróneamente: no podemos usar captchas por que nunca serán completamente fiables, no podemos contarnos según cookies ni tampoco por IPs, ni siquiera por ordenadores. Al fin y al cabo, no somos personas. Aren’t we?

Y hablando de medir, hay que ir con mucho cuidado. No vaya a ser que el ego se nos vuelva más salvaje de lo que debería y pase que un diario nacional que se la mide con el New York Times.

Ahora me voy a mi esquina, a reflexionar sobre lo que hemos hecho.

Mejorando lo mejorable

- Mejorando aquícerca (aquicerca.mobi), presentado por aquí

Por una parte, ‘detalles’: el CSS y el JavaScript ahora están comprimidos, asi que se debería notar cierta mejoría, sobre todo al usarlo con GPRS/3G, aunque –pese a todo– las librerías de Google Maps son muy pesadas (necesarias aunque sólo use una ínfima parte –el geocoder–). La salida de AJAX, por cierto, está comprimida por GZIP y pasa por un buffer, así que se queda menos ‘pillado’ cuando se busca un lugar. Y ya no es necesario hacer scroll para ocultar la barra de direcciones, puesto que se oculta automágicamente cuando no es necesaria.

Y en cuanto a lo importante: al ver los resultados, hay un icono de teléfono delante del nombre del lugar y un icono de mapa delante de la calle. Si es posible mostrar un mapa, la calle se vuelve ‘clicable’ y el icono de mapa está a todo color. Si está disponible el número de teléfono del lugar, se puede pinchar encima del nombre y el iPhone preguntará si se desea llamar. Sin embargo, cuando no es posible llamar o ver el mapa, los iconos se transparentan (y no hay enlace).

Luego, la otra novedad, y la más gorda: mapas, mapas, mapas. Aunque tampoco es un misterio… Al pinchar encima de la calle se muestra un callejero de Google Maps adaptado para móviles. Está preparado para ocupar toda la pantalla –ocultando la barra de direcciones– y cambia de orientación al girar el teléfono. Y tiene una imagen de carga muy clásica (plan AJAX). Luego, lo obvio: dos globitos. Uno rojo que indica la posición del usuario y uno verde que indica la posición del lugar seleccionado. Y para cerrar, basta con tocar el mapa.

Aquí cerca

Lo comenté en el post ‘A muerte con el mapa‘. Y la idea era bastante sencilla: traducir una ubicación a posición geográfica (reverse geocoding, que era uno de los temas que traté) y después buscar –por texto libre– cerca de esa ubicación.

Pues bien: se llama ‘aquícerca‘ (aquicerca.mobi) y está diseñado para usarse desde un iPhone/iPod Touch, sobre todo para cuando se está en movimiento (por ejemplo, cafés cerca de la parada de Metro en la que me encuentro). Cierto que para el iPhone ya existe Google Maps (y con el GPS!), pero en este caso uso el API de 11870.com que a mi parecer es bastante mejor… o lo prefiero.

Del lado técnico: usa el API de 11870, el API de Google Maps, MagpieRSS para parsear la salida del API de 11870 (no sé por qué pero SimpleXML se volvía tonto al parsear la salida RSS del API de 11870, era imposible conseguir los atributos geográficos o la calle), jQuery para la interacción con el usuaro (AJAX, bloqueo de formularios, transiciones entre páginas) y PHP del lado servidor (se limita a recibir la respuesta del Geocoder –que se ejecuta del lado del cliente, para evitar el capado de queries que tiene esta parte de Google Maps–, genera los formularios y devuelve los resultados de la búsqueda en 11870.com).

Como el navegador del iPhone de por sí es lentorro, está casi todo en AJAX para evitar cargar nuevas páginas. Por lo tanto, incluso para volver al estado inicial (tocando el logo) no se vuelve a pedir la página, simplemente se restaura por medio de JavaScript –y con unas transiciones mu chulas, hay que decirlo–.

Pese a que no hay ningún mapa que se muestre, usa el API de Google Maps para los módulos de geocoding, como comentaba en otro post. Se hace todo por medio de JavaScript (lo que inicialmente pensaba hacer del lado del servidor), y la verdad es que es bastante más rápido que procesar todo por PHP, sobre todo cuando se trata de enviar y recibir datos por 3G.

Mientras tanto, Miquel (gafeman) ha sacado su versión móvil para comil.us (lo comenta por aquí). La versión móvil suya es bastante más completa: usa Static Maps e incluye las fotos, aunque está limitado a unas búsquedas predefinidas (y saber a qué distancia estás del lugar) pero el mapa es una gran idea (y creo que en mi caso tampoco estaría mal tener un mapa del tipo “estás aquí, el lugar tal está aquí”). Y bueno, también por si quieres más de 5 posibilidades, claro (seguimos hablando de versiones móviles…).

La aplicación está preparada para usarse tanto en vertical como en horizontal (chorrada obvia) pero se maneja muy bien en vertical (no pierdes libertad de movimientos, con el pulgar va bien). Se puede añadir a la pantalla principal del iPhone/iPod touch apretando el botón inferior de + y seleccionando “Añadir a pantalla de inicio”, y ‘automágicamente’ aparecerá una bonita taza de café en vuestra lista de aplicaciones.

Por cierto, sí, el diseño: es CSS muy sencillo (a la par de cutre), el icono proviene de un maravilloso set de 128 iconos de WeFunction. Merece darse una vuelta por su blog, tienen trabajos incréibles.

La tipografía del título es la Alte Haas Grotesk, una sans-serif bastante agradable a la vista.

Asi que si tienes un iPhone o un iPod touch, ¿por qué no probarlo?, si hasta puede que te quede espacio en la pantalla principal para poner la bonita taza de café de aquícerca.mobi :-) .

Software libre y empresas

Mucha gente y especialmente muchas empresas no quieren software libre. Quieren software con responsables que estén obligados a dar respuestas y proveer soluciones.

Dado que la respuesta tradicional en foros de software libre (me la han dicho miles de veces y yo la he dicho docenas) cuando alguien se queja de como funciona algo o pide una mejora es “pues ahí está el código fuente, anda y búscate la vida y lo compartes con nosotros luego”) no es tan útil como mucha de esta gente piensa, pues el software libre pierde de calle.

eduo, en un comentario en un post de fotomaf

Dificilmente podría haberlo acertado más. Hoy en día, la mayoría de empresas que recurren a sistemas cerrados (la gran mayoría de veces pertenecientes Microsoft) para sus infraestructuras, y así derivar el soporte (o cabeza de turco, si hay algún problema), lo hacen ‘premiando’ las arcas de grandes empresas, dejando atrá  la gran mayoría de veces el funcionamiento ópitmo del servico prestado (más vale echarle la culpa alguien de que no funcione, que el hecho de que funcione bien sin poder echarle la culpa a alguien).

Típico.

A muerte con el mapa

Soy una leyenda. Me refiero a que posiblemente sea la persona más torpe a la hora de desplazarse que puede haber a este lado de tierra. Ni con el GPS del iPhone (sí, tengo un iPhone desde hace poco), ni con las indicaciones de Google Maps. Ni siquiera con las indicaciones por las que voy mendigando…

Vale, odio los mapas. Y soy una verdadera mierda a la hora de situarme, tengo el don de liarla siempre. Mi madre me lo dice, ’sólo tú puedes hacerlo hijo’. No se equivoca. ¿Debería sentirme orgulloso o preocuparme por ello, doctor?

Pero no es mi vida de lo que vengo a hablar, por quién me habéis tomado… Es que he vuelto a enfadarme con Google Maps. Bueno, ahora mismo no, pero sí hace unos meses y ahora que he retomado un poco el jugueteo con el API de Google Maps, es como tomarse mal una CocaCola. Vuelve y jode mucho.

Al turrón. Desde hace relativamente poco (bueno, ya hace bastante que está implementado) se puede usar el API de reverse geocoding desde JavaScript. Es sencillo: creas un nuevo objeto en plan geocoder = new GClientGeocoder(); y llamas a la función getLocations del mismo objeto.

Por dar un ejemplo:

geocoder = new GClientGeocoder();
geocoder.getLocations(latlng, function(addresses) {
if(addresses.Status.code != 200) {
alert("Ubicación no reconocida");
} else {
if(typeof(addresses.Placemark[0].AddressDetails.Country.
\
AdministrativeArea.SubAdministrativeArea.Locality.PostalCode) == "undefined") {
alert("No hemos podido obtener el código postal de este área, con lo que es posible que los resultados de tus búsquedas sean inexactos");
} else {
cp = addresses.Placemark[0].AddressDetails.Country. \

AdministrativeArea.SubAdministrativeArea.Locality.PostalCode. \
PostalCodeNumber;
};
};
);

(Nota mental: vaya pesadilla poner código en WordPress… Donde hay un \ hay que volver a juntar el código (quitando espacios, claro))

Todo este código asume que ya tienes un objeto llamado “latlng” que contiene las coordenadas de Latitud y Longitud que quieres convertir a código postal en este caso. Crear el objeto LatLng es muy fácil: latlng = new GLatLng(latitud, longitud);.

Aunque así parezca fácil, obtener la información reversa no es nada fácil, entre otras por que cambia el resultado si estás haciendo un reverse de un lugar en España, Alemania, Francia o Estados Unidos (jerarquía e informaciones algo diferentes). Por aquí hay un ejemplo básico de qué resultados da el Reverse Geocoding en XML.

Desde JavaScript, es algo así: del objeto se saca un array, matriz, tupla, quillostoquéeh de ‘PlaceMark’. Aquí asumimos el primero que es teóricamente el más preciso si no es el único. Dentro tenemos “AddressDetails”. Dentro de esto, “Country”. Dentro de “Country”, llega “AdministrativeArea”. Dentro “SubAdministrativeArea”. Dentro, “PostalCode”. Y ahí, finalmente, “PostalCodeNumber”.

Pese a que todo esto es y parece una pesadilla, obtener la dirección sin más se puede conseguir de una forma un poco más sencilla: addresses.Placemark[0].address;

Y repitiéndome de otras veces, esto no deja de ser una chuleta. Tamaño XL, pero sí… lo es.

Voy a ver si me pongo a hacer una aplicación sencillita para el iPhone, con el API de 11870. Mi idea era simplemente rellenar una “posición actual” con texto libre, pasarlo a coordenadas y pasarlo a reverso para confirmar en limpio (por código postal y dirección) la inserción realizada. Una vez ahí, un formulario de búsqueda libre que simplemente deje buscar a una distancia de nuestra posición actual (el API de 11870 permite búsquedas geográficas, la verdad es que mola un montón).

Voy a ver si no me pierdo demasiado (y de nuevo) con el GeoCoding. No es lugar para desorientados.

(Nota de pie: Sí, estoy copiando un poco –mucho– a Gafeman y su Comil.us, que por cierto, funciona genial y está muy bien –si no lo has hecho, échale un ojo–… pero le tengo ganas al API de Google Maps y a la de 11870, sólo sea por programar un poco para la plataforma webapp-móvil y exprimir al máximo el API JavaScript de Google Maps sin usar los propios mapas).

Para el futuro

Otro tanto de furilo, compañía y La Coctelera. Acaban de sacar su último proyecto llamado “Las cinco del día“. Cinco noticias, un amago de resumen del día. Según dicen, lo que tendría sentido recordar dentro de 50 años. Me recuerda bastante a 20palabras, que como otros proyectos web se extinguió (a estas alturas del juego, caballeros, sabemos que nada es para siempre). Promete y mucho. A ver qué nos da, que eso es otra cosa. ¡Suerte!