Mal día para ser el Community Manager de Telefónica

Telefónica publicó un tweet que generó un poco de controversia, el mismo decía:

¡Argentina tiene arte en todas partes! En calles, galerías y hasta en los trenes. RT si te gusta este tipo de arte.

Para los que no lo saben, el gobierno argentino ha estado luchando contra los graffitis en el transporte publico por bastante tiempo, todo comenzó cuando un grupo de vándalos realizó éste “arte” en los trenes recién llegados de China.

Obviamente hay que entender que existen muchas posturas al respecto, y es probable que quien publicó el tweet haya sido alguien que está a favor de los graffitis, lo cual no está mal, pero no es la mejor elección publicarlo desde la cuenta de una empresa.

telefonica trenes tweet

Me mandé una macana

El lugar donde falta arte es en la infraestructura de las empresas de telefonía, o mejor dicho, hay mucho arte y pocas inversiones.

 

ORDER BY avanzado para loops con WordPress (usando WP_Query)

Todo en WordPress es sencillo, hasta que empezamos a hacer cosas mas especificas, y no es porque no tengamos las herramientas para hacerlo, sino porque muchas veces no las conocemos y terminamos escribiendo algún código ninja para salir del paso, y no digo que esté mal, pero en incontables ocasiones terminamos reinventando la rueda, y no de la mejor manera.

reinventar la rueda

Reinventando la rueda

Uno de éstos casos es cuando usamos la clase WP_Query para crear loops customizados, o como deseen llamarlos. En ésta ocasión la idea es ahondar sobre el orden de los posts que se obtienen en el Loop.

WP_Query orderby

En éste ejemplo usamos el parámetro ORDER BY, y elegimos los parámetros “author” y “title”, o sea, ordenamos primero por autor, y si hay 2 posts que tienen el mismo autor, entonces el titulo es el que “decide” el orden.

$args = array( 'orderby' => 'author title', 'order' => 'DESC' );

$query = new WP_Query($args);

El resultado de ésta query es el siguiente:

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish')  ORDER BY wp_posts.post_author,wp_posts.post_title DESC LIMIT 0, 10

Como ven, en la query generada vemos que se utilizan las columnas “post_author” y “post_title” en el ORDER BY, ésto tiene algunas limitaciones, como por ejemplo, que no se puede ordenar en forma ascendente en una columna y descendente en la otra.

Además, existen casos en lo que se requiere ordenar por día y por otra columna, por autor, por dar un ejemplo, en ése caso hay un problema, si usamos el “orderby” con el parámetro “date”, el segundo parámetro no tendría sentido (en la mayoría de los casos), ya que el parámetro “date” se corresponde con la fecha del post, que tiene incluido la hora, minutos y segundos, por lo tanto es raro que 2 posts tengan la misma fecha, aunque hay casos en los que sí, como cuando los posts fueron migrados a WordPress y los datos de la fecha estaban incompletos.

Filtro posts_orderby

Con el filtro “posts_orderby” lo que se logra es modificar la parte del ORDER_BY de la query que genera WP_Query, su uso es muy sencillo.

add_filter('posts_orderby', 'posts_orderby');

function posts_orderby($orderby_for_query) {
$orderby_for_query = "LEFT(wp_posts.post_date, 10) DESC, wp_posts.post_title ASC";
return $orderby_for_query;
}

$args = ' ';
$the_query = new WP_Query($args);
var_dump($the_query->request);

El resultado del “var_dump” es el siguiente.

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') ORDER BY LEFT(wp_posts.post_date, 10) DESC, wp_posts.post_title ASC LIMIT 0, 10

Como ven, el filtro modificó la parte del ORDER_BY con lo que añadimos en la funcion “posts_orderby”. La función LEFT, es una función de MySQL, lo que hace es obtener una subcadena de una cadena, en éste caso la idea es reducir la columna “post_date” para obtener solo la parte del año, mes y día, de ésa forma se logra orden por día, y por el otro atributo que se desee.

Si tienen varias queries, pueden “remover el filtro”, para evitar que afecte a otros loops.

remove_filter( 'posts_orderby', 'posts_orderby' );

Lo ideal, es llamar a ésta función después de crear la query.

Como aclaración, ésto también funciona en las queries por defecto de WordPress (en las que no es necesario crear una instancia de WP_Query).

Samsung participa del Ice Bucket Challenge con el S5 y nomina al iPhone 5s

El Ice Bucket Challenge es, bueno, algo raro, el objetivo es recaudar fondos para la investigación del ALS (ELA, en español), que es una enfermedad que afecta al sistema nervioso y termina provocando una parálisis. La idea es que cada persona que acepta el desafío y lo cumple, debe nominar a otras 3 personas.

Aprovechando la viralidad que tuvo todo ésto, Samsung de Inglaterra creó una publicidad en que se ve al Samsung Galaxy S5 cumpliendo el desafío, y luego de cumplirlo nomina a otros 3 smartphones, el iPhone 5s, el HTC One M8 y el Nokia Lumia 930.

El vídeo causó todo tipo de reacciones, aunque bien sabemos que YouTube es el reino de los trolls, muchos comentaristas parecían indignados con la empresa por usar ésta campaña con fines publicitarios. Por mi parte me parece una genial maniobra de publicidad, que no genera nada negativo para la causa, sino que todo lo contrario, el Ice Bucket Challenge nació para generar visibilidad, y lo está haciendo muy bien. Será cuestión de esperar si alguna de las otras empresas se suman, sería raro que Apple se quede con lo brazos cruzados.

reCAPTCHA está cambiando el rumbo

Para los que no lo saben, reCAPTCHA es un solución para combatir el SPAM y al mismo tiempo digitalizar texto, primeramente se hacia solo con libros, y dicha causa fue la que le dió gran parte de su impulso inicial, además de la facilidad de uso, por supuesto. Éste sistema nació en una facultad de Estados Unidos, y en 2009 fue comprado por Google, quien con el correr del tiempo le encontró una función que le vino como anillo al dedo a sus servicios Google Maps y Google StreetView.

Supongo los lectores mas ávidos ya se habrán dado cuenta de que es raro encontrar palabras pertenecientes a libros, y ahora la mayoría de los captchas contienen imágenes de direcciones pertenecientes a imágenes tomadas para Google StreetView.

recaptcha direcciones y numeros

Google, hay una dirección en mi captcha

En la imagen pueden ver un mezcla de ambas cosas, obviamente, con la facilidad que tiene la implementación de reCAPTCHA, nadie se va a quejar de que está ayudando a Google gratis, simplemente que la causa anterior era mucho mas noble.

También para mails

reCAPTCHA también cuenta con una versión que fue creada para proteger direcciones de correo electrónico, mediante la cual se debe resolver un captcha para poder acceder a una dirección de correo que se encuentra en una pagina, sin dudas una gran ayuda para evitar el SPAM.

Mientras tanto, sigamos colaborando con Google, después de todos, tener mapas gratis de todo el mundo no es una tarea sencilla.

 

Stackoverflow, mas allá del copy/paste

Seguramente, si alguna vez tuvieron algún problema mientras programaban, configuraban software o algo así, terminaron en Google, quien gentilmente los derivó a Stackoverflow. Aquí encontraron una pregunta con un gran numero de respuestas extensas, con explicaciones técnicas del funcionamiento de éso que buscaban, o sino, terminaron en una pregunta que aún no había sido contestada, o cuya respuesta no funcionaba. Ésta ultima es la razón por la que me registré en StackOverflow, había una respuesta, que había sido elegida como correcta y que, probablemente sin intención, estaba mal, o al menos incompleta.

logo de stackoverflow

El viaje comienza

Cuando me registro me doy cuenta de que no podía dejar un comentario al autor de la respuesta, porque necesitaba mas puntos, así que hice lo segundo que podía hacer, deje una respuesta contestándole al autor de la otra respuesta, obviamente, no pasó mucho tiempo hasta que un moderador me comunicó que no estaba siguiendo las reglas correctamente, que para eso no eran las respuestas, que use comentarios. Ok, pero no podía comentar, ésto es algo que me llamó la atención de Stackoverflow, se necesitan mas “porotos mágicos” para dejar un comentario que para escribir una respuesta, desde mi punto de vista no es muy lógico, pero desde el punto de vista de alguien que está intentando aumentar la participación de los usuarios en su sitio, tiene bastante sentido.

Finalmente, me puse a contestar todo lo que podía para llegar a ésos miseros 15 puntos, a los que finalmente llegué, pero para ése momento ya me había hecho adicto a sumar puntos, mientras tanto confirmaba  lo valiosa que es la documentación, y que debe ser leída con plena conciencia. Además, lo difícil que es leer el código de otra persona cuando no siguen ningún tipo de orden, ni siquiera estoy pidiendo un estándar, solo un poco de organización y algún comentario.

Una herramienta para aprender

Participar activamente en la comunidad tienen sus beneficios, es recomendable para aquellos que quieren aprender mas sobre un lenguaje o herramienta, a casi cualquier persona a la que le pregunten cual es la mejor manera de aprender a programar, les va a decir que es programando, llevando a cabo pequeños proyectos para utilizar su conocimiento y ponerlo en practica. Bueno, Stackoverflow es un sitio ideal para ésto, ya que van a aprender de problemas que ustedes no tuvieron, de errores ajenos, y de requerimientos muy variados, que los van a llevar a aprender algo nuevo sobre el lenguaje, framework o herramienta que les interesa.

Un modelo que vale la pena seguir

Si bien hay algunos cambios que se le pueden hacer, el modelo de puntuación de Stackoverflow con metas y placas (badges), es interesante para seguir en otras comunidades para fomentar la participación de los usuarios, por ejemplo en los foros de WordPress.org, donde por un buen tiempo me dedicaba a ayudar a aquellos que daban sus primeros pasos en Internet, pero que finalmente abandone, mas que nada por no tener una conexión a Internet consistente, gracias Claro.