Cómo mover el htdocs de XAMPP a Google Drive

Desde que conocí a Dropbox automáticamente me convertí en su fan. Era la primera vez que podía disponer de un servicio que en parte se parecía a lo que se conocía como iCloud-Apple Drive (pero mejor y más rápido que este) y tener mis archivos disponibles en la nube.

Desde entonces mis discos han sufrido cerca de 3 desastres por diferentes razones y de no ser por las copias guardadas en Dropbox, habría perdido por completo la mayoría o todos mis archivos importantes.

Han aparecido varios servicios muy similares a como funciona Dropbox desde entonces, como SugarSync, Skydrive, Ubuntu One, Box.com, Cubby y más reciente Google Drive. De todos me he sentido más a gusto con Dropbox y Google Drive, uso ambos.

Gracias al programa de Dropbox de referencia de amigos, logré acumular un espacio “decente”, pero la cantidad de archivos acumulados en todo este tiempo me está achicando ese espacio.

Como diseñador web, del tipo de archivos que para mí son muy importantes son los websites que desarrollo. Habitualmente reutilizo funciones de PHP, javascript y CSS-Less que me forzan a tener disponible mis trabajos. Una solución que ví para tal efecto fué usar los symbolic links de Mac en Dropbox. Así, tengo el htdocs de XAMPP de mi casa y la oficina disponibles en la nube.

Ambos folders se han vuelto enormes, especialmente el de la oficina. Lamentablemente Google Drive no soporta symbolic links, así que investigando un poco finalmente encontré la solución: Mover la ruta del localhost de XAMPP directamente a Google Drive para tener los archivos allí.

¿Cómo puedo hacer el cambio?

Requiere varios pasos, pero todos simples de replicar. Es importante entender que uso Mac, así que las rutas que mostraré son funcionales para Mac y Linux, de tener Windows deberás usar las rutas estándar de ese sistema. Otro punto a mencionar es que trabajo con virtual host, así que si no sabes como activarlo con XAMPP en Mac acá podrás leer un artículo que te puede interesar.

  1. Primero creo el folder en que guardaré mis proyectos, que en lo adelante reemplazará el htdocs de XAMPP. Mi folder se llama “sites-htdocs” y dentro de este tengo dos folders más para tener mis proyectos organizados: “casa” y “oficina”.

  2. Ahora trabajamos en los permisos para no recibir un error de falta de permisos al pretender ver el localhost a través del navegador. Seleccionamos el folder de Google Drive (/Users/miusuario/Google Drive) y llamamos la ventana de info (command+i). Luego cambio los permisos de “everyone” a “Read & Write”. Lo siento, puede sonar como una falla de seguridad dar permisos completamente abiertos, pero a menos que estemos hosteando los proyectos para la web pública y no para pruebas locales (LEASE: PRUEBAS LOCALES), esta es la única solución.

  3. Ahora editamos a “httpd.conf” del folder de XAMPP (/Applications/XAMPP/xamppfiles/etc/httpd.conf). De preferencia primero guarda una copia de ese archivo antes de editarlo. Lo abres y buscamos la línea DocumentRoot:

    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"

    En mi caso la reemplazaré así:

    DocumentRoot "/Users/miusuario/Google Drive/sites-htdocs/oficina"
  4. Ahora actualizamos el Directory en el mismo httpd.conf. Buscamos:

    <directory "/Applications/XAMPP/xamppfiles/htdocs"></directory>

    Lo reemplazamos por:

    <directory "/Users/miusuario/Google Drive/sites-htdocs/oficina"></directory>

    Guardamos y cerramos dicho archivo, ya no tenemos que tocar nada más de él.

  5. Lo siguiente será actualizar la ruta del localhost y los virtual host (de usarlos). En el folder de XAMPP abrimos el archivo “httpd-vhosts.conf” (/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf) y buscamos algo similar a lo siguiente:

    <virtualhost *:80>
     	ServerAdmin webmaster@localhost
     	DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
     	ServerName localhost
     	ErrorLog "logs/localhost"
     	CustomLog "logs/localhost" common
    </virtualhost>

    Lo reemplazamos por esto:

    <virtualhost *:80>
     	ServerAdmin webmaster@localhost
     	DocumentRoot "/Users/miusuario/Google Drive/sites-htdocs/oficina"
     	ServerName localhost
     	ErrorLog "logs/localhost"
     	CustomLog "logs/localhost" common
    </virtualhost>

    Luego deberás editar el DocumentRoot de cada proyecto de tu virtual host. Así, si tengo un proyecto con la URL “clientecool.loc” y los archivos de este se encuentran en un folder llamado “clientecool”, tendremos lo siguiente:

    <virtualhost *:80>
     	ServerAdmin webmaster@localhost
     	DocumentRoot "/Users/miusuario/Google Drive/sites-htdocs/oficina/clientecool"
     	ServerName clientecool.loc
     	ErrorLog "logs/clientecool.loc"
     	CustomLog "logs/clientecool.loc" common
    </virtualhost>

¿Por qué usar a Google Drive y no Dropbox?

Admito que prefiero Dropbox en vez de Drive, pero hay una muy fuerte razón para esta elección: Los precios anuales de drive son muchísimo más económicos que los de Dropbox.

Actualmente dispongo de 6.5GB en Dropbox y de estos me quedan disponibles 41.7% en poco más 5 años que lo vengo usando. No necesito pagar por la enorme cantidad de 100GB ($99.00) de Dropbox si con 25GB ($29.88) de Drive me resulta más que suficiente por el momento. Además, de necesitar los 100GB, el plan de Drive ($59.88) sigue siendo más económico que Dropbox. Los números no fallan.

¿Qué tablet Android me conviene?

Este año está marcado por las tablets. A diferencia de años anteriores los compradores se han inclinado más a ese tipo de gadgets y no es para menos, la disponibilidad de modelos de menos de US$100.00 con buena configuración es cada vez más amplia.

Yo estoy a la búsqueda de uno de esos modelos, caracterizados por tener ICS preinstalados, entre 4GB u 8GB de memoria flash, 512MB de RAM, 1.2Mhz-1.5Mhz y pantalla capacitiva. Algunos traen mini-HDMI, sensor de movimiento y giroscopio. Buenas características, pero ¿estás seguro que es eso lo que necesitas?

Primero hay que entender algo: Si eres adulto, no eres “tech savvy” o “geek” y no ves la tablet como otra cosa más allá que un ebook reader, no es para ti.

Muchas tablets Android son de fabricantes chinos desconocidos, por lo que la calidad de las piezas de fabricación y/o condiciones al momento de recibir la unidad pueden no ser confiables. En casos así lo ideal siempre será buscar opiniones de otros compradores porque hablan de lo bueno, lo malo y hasta de esas pequeñas cosas que le dan valor al equipo. Si una tablet no tiene opiniones, mejor no inventar.

Pero leer las opiniones es un caso confuso porque muchos usuarios con poca experiencia en el uso de Android dejan comentarios que en muchas ocasiones se alejan de la realidad que pueda encontrar otro comprador. Hay unidades que pueden llegar defectuosas, lo que se puede considerar como “normal”, pero si un usuario se queja que el wi-fi es débil, la calidad de los colores son malos, suena mal o la pantalla tiene poca sensibilidad, entonces debemos “sacarlos con pinzas” porque muchos son primerizos con un Android.

Es el caso de cierto fulano que antes de comprar un modelo de gama baja (US$95.00, que luego devolvió) era dueño de la primera generación de un iPad con la que lo comparaba. Está más que claro las ventajas del iPad como la calidad de su pantalla, duración de batería y audio contra los modelos Android de gama baja, entonces, ¿cómo rayos ese estúpido pretendió comparar?

Lo preferible es tomar un poco más en serio opiniones como el tiempo de duración de carga de la batería o el cargador de estos, que son elementos claves. Si se daña el cargador, reemplazarlo en muchos casos se vuelve tedioso y hasta imposible dependiendo del fabricante. Lamentablemente la mayoría de las tablets se cargan con un cargador y no con el mini-USB como sí los móviles.

Ahora, ¿por qué digo que si eres adulto y no eres “tech savvy” o “geek” un Android no es para ti? Porque los niños son más adaptables a los cambios y si frente a sí tienen un modelo de estos, no notarán las ventajas técnicas que sí tienen otros modelos más costosos. Simple.

Déjame presentarte cuatro escenarios con características que puedes usar de referencia para comprar el tablet que mejor se adapte a ti:

  1. PREGUNTA: ¿Quieres un modelo que permita tomar fotos de buena calidad, la pantalla ofrezca colores brillantes y responda a los toques, luzca elegante, el sistema operativo sea elegante y simple de usar, que lo puedas actualizar con cierta frecuencia y tengas disponibilidad de juegos muy variados para tu hijo?
    RESPUESTA: Busca un iPad, con esos requerimientos no encontrarás nada barato.
  2. PREGUNTA: ¿Quieres una tablet que te sirva para leer ebooks y quizás tomar algunas notas?
    RESPUESTA: Busca un ereader como el Kindle, Nook u otro. Pueden tener precios similares y quizás convenga la configuración, pero son más portables.
  3. PREGUNTA: ¿Quieres una tablet económica, no tienes problemas con que el sistema operativo no se pueda actualizar, tienes experiencia usando Android, sabrías hacer rooting sin ayuda, entiendes cláramente que no puedes exigir más por el precio que estás pagando como el caso de los colores de pantalla y sonido y sin embargo, estás dispuesto a los “riesgos”?
    RESPUESTA: Eres perfecto, hay muchos modelos disponibles en el mercado. Date una vuelta por walmart.com y verás.
  4. PREGUNTA: ¿Quieres una tablet económica, que sea simple de usar, que tenga colores “perfectos”, que tenga buenas cámaras (trasera y delantera), simple de configurar y actualizar, muchas y muy variadas aplicaciones, que sea tu primer modelo?
    RESPUESTA: Vete a rascar las pelotas para otro lugar, porque esas características no son reales por el momento.

Es mentira que Android es un OS simple de usar. Antes de tener mi primer móvil con Android ya había probado tablets y móviles, pero sólo probado. Como la combinación precio-similitud a iOS me era conveniente, me incliné por uno de estos. Cuando tuve mi primer modelo en la mano, configurarlo, personalizarlo, terminó siendo un proceso bastante tedioso y confuso, por lo que un individuo que compre una tablet Android por primera vez encontrará que la línea de aprendizaje no es tan amigable como iOS.

¿Quieres una tablet Android económica? Siempre asegúrate de leer las opiniones de otros compradores del modelo que tengas en vista antes comprar. El modelo ideal con un precio bajo los US$100.00 puede tener: ICS preinstalado, 512MB de RAM, 1.2Mhz-1.5Mhz, pantalla capacitiva y quizás con IPS (no es tan común para modelos de 7″), con sensor de movimiento y giroscopio. Asegúrate que la memoria flash sea de 8GB porque entre el sistema operativo y las aplicaciones preinstaladas queda poco margen para las aplicaciones que descarguemos, así que descarta los modelos de 4GB o inferior.

En cuanto a software preinstalado lo preferible es que traiga Google Play en lugar de GetJar u otras bobadas de tiendas para apps, que no son tan completas como la de Google. Claro, siempre será posible instalar Google Play en modelos económicos que no lo traigan, pero dependerá qué tan “arriesgado” o “geek” eres.

Facebook me hace perder dinero

Una de las redes sociales más populares (si no la más popular) lo es Facebook. Hay que admitir que las empresas logran ese “engagement” que buscan para comunicarse con sus clientes. Pero, ¿es ciertamente Facebook lo que necesitan las empresas para llegar a nuevos clientes?

Ayer participamos de una reunión con una empresa muy importante del mercado financiero local. En muchas encuestas dicho cliente siempre está al tope del mercado al que se dedica y eso así porque invierte muchos recursos en mejoras técnicas internas, imagen y nuevos productos. Enfocan mucho esfuerzo en lo que la gente percibe de ellos y lo han conseguido efectivamente.

Por el tipo de negocios al que se dedica la empresa para la que trabajo, los clientes habitualmente solicitan herramientas que permitan crear y entender el perfil de quienes los siguen en las redes sociales, además de crear estrategias para captar nuevos seguidores. ¿Pero es ese el camino correcto? ¿Para qué invertir fuertes recursos en captar nuevos seguidores en las redes sociales si estos no se convierten en compradores?

Entre los primeros puntos que tocamos en la reunión fué precisamente ese. Para nuestra gran sorpresa, dicho cliente tiene y usa herramientas para entender el perfil de quienes los siguen en las redes sociales y sabe exáctamente qué tipo de perfil le conviene. Para información adicional de quien está leyendo, dicho cliente comentó: “No me interesa mucho la gente que me sigue en Facebook, esos sólo me hacen perder  dinero y no contratan ninguno de mis productos. En cambio los de TWITTER sí”.

O sea, dicho cliente ya tiene bien claro que los usuarios de Facebook no necesariamente usarán sus productos pese a que desarrollemos “cosas chulas” para atraer el interés. Esto es debido a que pese a la masividad de esa red, muchos son individuos de clase económica baja con limitada información sobre manejo financiero personal o muy jóvenes para tener un trabajo que les reporte suficientes recursos para invertir.

Una de las herramientas que caracterizan a Facebook son las aplicaciones, muy usadas en nuestro mercado para crear campañas digitales. Yo desarrollo ese tipo de aplicaciones y puedo confirmar con toda certeza lo dicho por el cliente cuando comparamos los números de visitas contra los que completan todo el proceso de uso de cualquier aplicación.

Si vemos estos ejemplos de aplicaciones que fueron exitosas en cuanto a cantidad de visitas, los números de quienes completaron todos los pasos y quienes compartieron terminan siendo magros. Estos números son el resultado de una herramienta que desarrollamos internamente y hemos ido afinando para estudiar la forma como usan los usuarios la aplicación contratada:

Comparación de visitas a Facebook apps

Bebida alcohólica A:
- Visitantes 8,855
- Completaron pasos 2,000 (22.6%)
- Compartieron 856 (19.7%)

Marca de Vehículos:
- Visitantes 1,266
- Completaron pasos 691 (54.6%)
- Compartieron 231 (18.2%)

Mercado financiero:
- Visitantes 3,962
- Completaron pasos 2,000 (50.5%)
- Compartieron 2,000 (50.5%)

Bebida alcohólica B:
- Visitantes 1,651
- Completaron pasos 1,243 (75.3%)
- Compartieron 964 (58.4%)

El número de usuarios que compartieron se saca del total de usuarios que completaron los pasos para registrarse en la aplicación y usaron el botón “Compartir” que siempre ponemos en un lugar visible.

Como ven, en términos porcentuales “Bebida alcohólica B” tuvo más éxito que los demás, sin embargo, no tuvo la gran masa de visitas que sí tuvo “Bebida alcohólica A”. Pese al éxito de visitas de “A”, el efecto que pudo tener su campaña no quedó tan bien parado como se podría creer. Lo que motiva la enorme diferencia entre los que visitan la aplicación contra los que se registran y completan los pasos no es más que la simple curiosidad. Que hayan visitado la aplicación no significa que les interese participar de esta.

Se le puede “pintar villas y castillos” al cliente diciendo el groso numérico, pero la realidad es otra. Todos esos visitantes se convirtieron en “Like”, ¿pero cuántos de esos usuarios comprarán los productos en cuestión?

Entonces, ¿es Facebook la herramienta que necesitan los departamentos de mercadeo de las empresas para lograr el famoso “engagement” que buscan? A mi modo de ver NO. Los números lo confirman y un cliente con muchos recursos a su disposición también. Facebook sólo es una herramienta más para establecer comunicación con los clientes, no para captar nuevos clientes.

Las agencias digitales, publicitarias y  departamentos de mercadeo DEBEN reenfocar y estudiar bien el perfil de a quienes dirigen sus campañas para lograr el éxito que busca el cliente y no números con éxitos ficticios como los de esta muestra.

Restar o sumar horas a una fecha

Todos en algún momento nos hemos visto en la obligación de guardar la fecha/hora de alguna transacción. Por seguridad lo preferible es hacer dicho calculo en el back-end, pero si la seguridad no es tan importante acá la herramienta que necesitas para restar o sumar horas o días a la fecha actual.

Primero la siguiente función, que nos permitirá mostrar las horas, minutos o días de la fecha con dos carácteres en vez de uno:

Number.prototype.double = function ()
{
        var nm = String(this);
        return (nm == '0') ? nm : (nm.length &lt; 2) ? '0' + nm : nm;
};
 
Number(0).double(); // Devuelve '0'
Number(3).double(); // Devuelve '03'
(32).double(); // Devuelve '32'
(589).double(); // Devuelve '589'
var n = 47; n.double(); // Devuelve '47'

OK, ahora a lo que vinimos:

function xDateTime (cnf)
{
        if (!cnf) cnf = {};
 
        var dte = new Date();
        var dteD = dte.getDate(), dteM = dte.getMonth() + 1, dteY = dte.getFullYear();
        var tme = dte.getTime(), nDte = dte.setTime(parseInt(tme + parseInt((cnf.hours ? cnf.hours : 0) * 60 * 60 * 1000)));
 
        dteD = dte.getDate().double(); dteM = dte.getMonth() + 1; dteY = dte.getFullYear();
 
        var tmeH = (dte.getHours() >= 12 ? dte.getHours()-12 : dte.getHours()).double(), tmeM = dte.getMinutes().double(), tmeS = dte.getSeconds().double();
 
        var rtn = '', rtnD = dteD + '/' + dteM + '/' + dteY, rtnT = tmeH + ':' + tmeM + ':' + tmeS + (dte.getHours() >= 12 ? 'PM' : 'AM');
        switch (cnf.type)
        {
        	case 'd':
        		rtn = rtnD;
        		break;
        	case 't':
        		rtn = rtnT;
        		break;
        	case 'dt':
        		rtn = rtnD + ' ' + rtnT;
        		break;
        	case 'td':
        		rtn = rtnT + ' ' + rtnD;
        		break;
        	default:
        		rtn = rtnD + ' ' + rtnT;
        };
        return rtn;
};

Para recibir la hora o fecha, aplicamos así:

xDateTime();
xDateTime({ type:'d' });
xDateTime({ type:'t' });
xDateTime({ type:'dt' });
xDateTime({ type:'td' });

Si necesitamos que la función devuelva una hora o fecha adelantada, aplicamos la cantidad de horas que necesitamos adelantar:

xDateTime({ hours:5 });
xDateTime({ hours:12 });
xDateTime({ hours:24 });
xDateTime({ hours:36 });
xDateTime({ hours:48 });

Similar con una fecha atrasada:

xDateTime({ hours:-24 });
xDateTime({ hours:-36 });
xDateTime({ hours:-48 });

Combinando la aplicación de los parámetros:

xDateTime({ type:'t', hours:5 });
xDateTime({ type:'d', hours:-36 });
xDateTime({ type:'d', hours:-48 });
xDateTime({ type:'dt', hours:24 });

No señores comerciantes, ustedes son los desleales

Llego a la oficina, abro Twitter pare ver qué se mueve antes de iniciar mi trabajo y encuentro el asunto caliente sobre el tema de las compras online y los comerciantes. La semana pasada comentaba con Juan Medina (@MacasoMedina) el caso que precisamente recién pasé con la compra de un equipo. Comentábamos un artículo de su autoría que recomiendo leer.

La situación sobre el tema inicia por las quejas generadas por la Asociación de Comerciantes, quienes dicen que las compras por internet les hacen competencia desleal. Lo ridículo en todo esto es considerar “competencia desleal” comprar a una tienda que ofrece los mismos productos que ellos venden.

Según la definición en Wikipedia, competencia desleal se refiere a “todas aquellas actividades de dudosa honestidad (sin necesariamente cometer un delito de fraude) que puede realizar un fabricante o vendedor para aumentar su cuota de mercado, eliminar competencia, etc”. Sugiero leer la definición completa para que tengan una idea más precisa de cuáles son las prácticas definidas como tal.

Entonces, ¿si a mi me da la gana de comprar un producto con un precio menor a US$200.00, qué derecho tienen los comerciantes a coartar mi decisión de compra? ¿Cómo pueden los comerciantes decir que es competencia desleal comprar a un vendedor que se encuentra fuera del país, que por su naturaleza vende a cualquier consumidor del planeta, no sólo de República Dominicana?

Veamos una “dulce experiencia” que me sucedió reciente y que comenté con @MacasoMedina a raíz de su artículo. Resulta que se daña el teclado inalámbrico de mi Mac y por razones técnicas reparar ese tipo de equipos resulta peor que comprar uno nuevo.

Necesitaba solucionar la situación de mi teclado, así que investigué en tres comercios locales antes de decidirme, olvidando investigar en Amazon o eBay antes de comprar. Terminé pagando RD$4,890.00, o lo que es lo mismo US$124.90 a la tasa de RD$39.15.

Me sentí angustiado luego de dar ese tarjetaso (de verdad me pesó pagarlo). Investigué en Amazon a ver de qué me perdí y como era de esperar encontré una unidad en US$69.00. Esa unidad no habría cargado costos de envío gracias al “Super Saver Shipping” de la empresa, aunque habría pagado cerca de US$8.00 a través de una empresa de recepción de paquetes local con oficinas en Miami.

Entonces, el teclado me habría costado US$77.00 en total, o lo que es lo mismo RD$3,014.55. O sea, que el comercio en cuestión me cobró RD$1,875.45 demás. ¿No es esa una suma considerable que cualquiera apreciaría ahorrarse? Lo admito, cometí un error, así que lo primero que haré la próxima ocasión que necesite comprar un equipo será revisar precios de oferta en internet. A la mierda los comerciantes locales.

Si los comerciantes se quejan de “competencia desleal” es que obviamente no están preparados para competir. Equipos como ese teclado no se fabrican localmente, así que ¿cómo considerar competencia un producto que no fabrican?. ¿Acaso pretenderán cobrarle impuestos a Amazon? (ridículo ¿verdad?).

Puedo entender que tienen pérdidas al comprar mis equipos fuera del país, pero si no están dispuestos a presentar ofertas interesantes y sus costos de venta son tan altos por culpa de los impuestos, no miren a los consumidores, miren y discutan sus problemas de costos con el gobierno, quienes son los causantes reales de todo este embrollo.

No pretendan hacer que el maldito gobierno cambie las reglas del juego en beneficio de ustedes y en contra de los intereses de los consumidores dominicanos, cuando US$200.00 máximo es un valor razonable. Ustedes son los desleales y abusadores, pujando porque el gobierno joda más aún a los consumidores, no nosotros.

Por mi parte no vuelvo a comprar localmente, si me sale más económico comprándolo en tiendas fuera del país por internet.

Texto con bordes dentados en Internet Explorer

Muestra de texto con bordes dentados en Internet Explorer

Una de las facetas de mi trabajo como diseñador web es maquetar. Es de las cosas que más disfruto… hasta que reviso mi maqueado en Internet Explorer 7-8. Si maquetas, es claro que alguna vez te tocaste en Internet Explorer 7-8 con la situación del número 25 de la izquierda en la imagen adjunta. Se presenta especialmente en títulos con puntajes altos.

Es otro de los tantos cientos de bug’s de ese desdeñable navegador y aunque no lo creas, su solución es de lo más simple: Sólo aplicamos background-color, background-image o simplemente background con algún valor.

Lamentablemente es la única solución posible. Modernizr, font-smooth (CSS3, obviamente no) ni otros pueden con él, así que si tu maquetación requiere que el título afectado tenga transparencia, deberás tener en cuenta este detalle.

Un último punto: No sirve transparent como color, así que no te hagas muchas ilusiones. ;-)

Nuestras cédulas y los servicios web dominicanos

Como desarrollador de aplicaciones para web y Facebook, mi trabajo incluye preparar formularios para captura de datos. Entre los datos solicitados por las empresas que se está volviendo erróneamente común, es la solicitud de la cédula de identificación personal, dato exclusivo, personal, que NO DEBE ENTREGARSE bajo ninguna circunstancia a nadie tal como haríamos con el número de seguridad de nuestras tarjetas de crédito.

Las empresas exigen ese dato supuestamente para confirmar la identidad y edad del usuario. En la web cualquiera puede ser cualquiera y tener cualquier edad. Se entiende la necesidad de las empresas de identificar los usuarios para evitar conflictos, pero la verdad tal cosa no justifica bajo ninguna circunstancia que tenga en su poder un dato tan importante del individuo.

Veamos el caso de Estados Unidos y su Social Security Number, que sería lo que para República Dominicana es la cédula. Quienes han rellenado formularios de concursos en Estados Unidos, confirmarán que no solicitan el social security entre los datos. ¿Para qué necesitan las empresas dominicanas el número de cédula?

Hablemos de un caso hipotético y una solución al mismo: Confirmar que soy la persona ganadora del concurso. Todo desarrollador al momento de guardar los datos del concursante en la base de datos, debe incluir un número de identificación único (ID) que habitualmente se genera de forma automática. Prefiero generar el ID combinando nombres y apellidos (o email en su caso) más un número al azar de 10 carácteres, encriptados con MD5. Eso crea un número único en nuestra base de datos.

Luego del usuario rellenar todos sus datos (excluyendo la cédula como debe ser), se le debe devolver por correo electrónico o algún panel un QR Code con el ID encriptado. De resultar ganador, deberá presentar en papel o en su móvil el QR Code para que la empresa organizadora del concurso pueda validar el ID. Naturalmente, si debe mostrar su cédula para certificar su edad, que se haga al momento de reclamar el premio, pero la empresa NO PUEDE quedarse con ese número ya que de todos modos no le servirá NI LE DEBE SERVIR PARA NADA MAS.

No existen razones para que las empresas exijan la cédula, es un dato personal y no debe compartirse. Espero que de alguna forma esta sugerencia tenga oidos, por respeto a la seguridad de los usuarios de nuestras aplicaciones.

Las aplicaciones de Facebook y nuestros datos

Muchos recordarán el caso de Zynga en el pasado reciente, la empresa de aplicaciones para juegos sociales de Facebook más exitosa de todos los tiempos, quienes fueron descubiertos pasando datos de sus usuarios a empresas. Tal hecho fué todo un escándalo (sentando un precedente), primero porque actuó ilegalmente sin los permisos de sus usuarios y por infringir leyes de confidencialidad de Estados Unidos.

Ese siempre ha sido el temor de todos, la confidencialidad de nuestros datos, pero es un tema complejo de manejar cuando estos se encuentran en manos de otros individuos. En otro post escribí sobre los errores que cometemos los usuarios acerca del tipo de datos que liberamos. En ese post dejé bastante claro que yo y sólo yo tengo el verdadero control de lo que otros conozcan de mí. ¿Quiero tener un control total de mis datos e imágenes? La respuesta es simple: Cerrar el pico, dejar de escribir cuantas pendejadas se me ocurran, dejar de publicar fotos y dejar de rellenar cuantos formularios me presenten. Simple.

En aquel post no me veía como en la situación presente. En ese momento hasta tenía cerrado mi cuenta de Facebook, pero como la naturaleza obligada de las cosas es el cambio, ahora soy desarrollador de aplicaciones sociales en Facebook. He de dejar algo bien en claro, precísamente por lo que me dedico, ahora soy más cauto que nunca al momento de suscribirme a un servicio (social o de cualquier tipo), todo dependiendo del tipo de datos solicitados.

Servicios como Facebook guardan datos que manejados apropiadamente pueden decir qué tipo de gustos tienen sus usuarios. Veamos: Toda aplicación que pida los permisos “user_likes” tendrá la capacidad de capturar todas las páginas que siguen cada usuario. Así, si Fefita sigue 4 páginas con temas dedicados a moda, los desarrolladores podrán poner banners con dicho tema de sus propios clientes en sus aplicaciones.

Otro permiso muy solicitado por los desarrolladores es el de correo electrónico (“email”). Luego de capturado este dato, si el desarrollador pasa el listado de correos a sus clientes, podrían enviar spam incontroladamente, ya que recordemos que al momento de solicitar los permisos para el correo también damos permiso al desarrollador para… lo que sea, incluyendo spam sobre moda para Fefita.

Pero volvamos a un punto clave: Los permisos que damos a las aplicaciones que aceptamos en Facebook. Para tener claro cuáles son tales permisos y lo que se obtiene con ellos, sólo tenemos que echar un vistazo a la sección de autenticaciones y permisos en el API. Sobre el uso que se dan a estos es importante destacar la ETICA de la empresa desarrolladora.

Hace unas semanas visitaba el site de una famosa empresa que se iniciaba en el pago de sus servicios a través de la web. Personalmente deseaba que ofrecieran ese método de pago, hasta el momento de ver que entre los datos solicitados se encontraba el número de cédula de identificación personal. No voy a poner en duda a la empresa en cuestión ni a la que desarrolló su sistema, pero sentí temor de apretar el botón de enviar, porque no se de qué forma puedan manejar un dato tan importante como mi cédula para entregarla tan ligeramente.

Los datos que entregamos a Facebook ya no están en nuestras manos luego de rellenado los formularios de perfiles, subidas de imágenes o aceptación de permisos. Desde ese preciso momento, nuestros datos e imágenes PERTENECEN a Facebook o a los desarrolladores de aplicaciones, ya que ambos pueden manejar nuestros datos e imágenes cómo les plazca.

Cerraré repitiendo lo dicho en párrafos anteriores: ¿Quiero tener un control total de mis datos e imágenes? La respuesta es simple: Cerrar el pico, dejar de escribir cuantas pendejadas se me ocurran, dejar de publicar fotos y dejar de rellenar cuantos formularios me presenten.