Archivo

Archive for the ‘web mushup’ Category

El ascenso del Programador Ciudadano

octubre 4, 2010 1 comentario

Con la llegada de los blogs y el nacimiento de la web 2.0 llegó lo que muchos han llamado el "periodismo ciudadano", es decir cualquiera con acceso a Internet puede crear un blog y comentar algún tema de actualidad o hacer una denuncia, sea esta fundada o no. Lógicamente los periodistas en un principio ignoraron todo este movimiento y lo llamaron chime 2.0, siete años después todo medio de prensa que se respete tiene ahora una sección de blogs, que suele ser la más leída de sus secciones web.

Muy bien desarrolladores de aplicaciones, ya sean estas de escritorio, web o de móviles, preparence que el "programador ciudadano" (en inglés Citizen Developer) ha llegado y amenaza con crear el mismo tipo de caos que crearon los peiodistas ciudadanos. Según un informe de Gartner Group publicado hace un año, se espera que para el 2014, el 25% (una de cada cuatro) aplicaciones habrá sido escrita por un programador ciudadano. Vista la actual aparición de herramientas que permiten crear aplicaciones completamente funcionales y casi sin escribir una sóla línea de código como pueden ser App Inventor, Application Craft o Appcelerator Titanium, alguien podría pensar que Gartner es muy conservativa en sus proyecciones y ese número podría ser alcanzado antes.

 Pero que es un programar ciudadano o como entiende Garnet el término, pues del documento presentado por ellos extraigo esto:

"Future citizen-developed applications will leverage IT investments below the surface, allowing IT to focus on deeper architectural concerns, while end users focus on wiring together services into business processes and workflows,” said Eric Knipp, senior research analyst at Gartner. “Furthermore, citizen development introduces the opportunity for end users to address projects that IT has never had time to get to — a vast expanse of departmental and situational projects that have lain beneath the surface"

Es decir en teoría el programador ciudadano es el usuario elevado a la categoría de desarrollador, para ello debe contar con herramientas 100% gráficas que le permitan abordar el desarrollo de aquellas aplicaciones que necesita para automatizar su labor diaria y dejar al departamento TIC a cargo sólo de la infraestructura, liberandolo del desarrollo de apliaciones pequeñas que por lo general nunca son atendidas.

Esta no es la primera vez que escucho este tipo de pronosticos, recuerdo que cuando apareción dBase II y luego dBase III, una nueva generación de "desarrolladores" apareció en las empresas, claro todos ellos con muy poca formación en los fundamentos de la programación y que dejaban mucho que desear tanto en el diseño de las aplicaciones, como en la seguridad de las mismas. Pero la masa de programadores aumentó.

Luego con la llegada de Windows y VisualBasic, otro gran número de "desarrolladores" se sumo a la mezcla. Otra vez, los mismos problemas de falta de criterios en el diseño de las estructuras internas de las aplicaciones y de los datos que daban sustento a las aplicaciones, así como muy pobres estándares de seguridad.

En fin en cierta forma, los problemas de este tipo de aplicaciones desarrolladas por usuarios con herramientas de programación fáciles de usar, estaban circunscritos a un entorno local. El desarrollador ciudadano ahora aspira a crear aplicaciones web accesibles por casi todo el mundo, así que cuando esto llegue ya me imagino explicandole a un programador ciudadano que significa "escalabilidad".

Lo que es inevitable es que el programador ciudadano llegue y lo cambie todo, los factores que lo traeran al mundo TIC, son cuatro:

  • Personalización en masa: El programador ciudadano sabe cómo personalizar una solución a sus propias necesidades y preferencias. Piense en su cuenta de facebook, lo más probable es que usted ha tomado todos los componentes de Facebook (o sus partners) y ha compuesto una página que ofrezca una solución que satisfaga sus necesidades e intereses personales. En una sola plataforma hay 500 millones de soluciones facebook diferentes – ¡todos creados por los programadores de los ciudadanos!
  • Computación en la nube: En los viejos tiempos que se necesitan para instalar y configurar tus propios servidores y bases de datos, así como la infraestructura de red, incluso antes de que pudiera empezar a pensar en la aplicación real que se va a construir. Con la disponibilidad de recursos en todas partes de la nube que hay hoy en día, un programador ciudadano se pueda concentrarse en la funcionalidad empresarial que desee para la aplicación que planea desarrollar y no tener que preocuparce acerca de la versión de la base de datos es necesario instalar. Un gran libro que ayuda a comprender el impacto de la computación en la nube antes de que fuera llamada computación en nube fue  "The Big Switch" por Nicalas Carr.
  • Los cambios en la demografía: Como resultado de la jubilación de los baby boomers, y la maduración de los "nativos digitales" significa que la fuerza de trabajo  espera una tecnología para el consumismo de la misma tecnología, por lo tanto no es una tendencia de estas personas a "es sólo trabajo", es su forma de vida.
  • La evolución de herramientas: Como consecuencia de la mejora continua de las herramientas de desarrollo y su facilidad de uso, los programadores ciudadanos pueden crear aplicaciones de negocio cada vez más complejas sin tener que depender de los siempre escasos recursos del departamento TIC.

Así que si eres programador o tienes una empresa que se dedica sólo al desarrollo de aplicaciones, preparate porque vas a descubrir que sintieron los periodistas y los periódicos con la llegada de la web 2.0. Y los que son cyberdelincuentes, estarán de plácemes con la proliferación de aplicaciones de pobre diseño y peor seguridad.

Usando Google Spreadsheet como base de datos

febrero 23, 2010 1 comentario

Google ofrece un API para poder manipular directamente el contenido de sus hojas de cálculo en Google Docs, si reparamos en los detalles y la posibilidad de que pueden ser grabas, actualizadas, borradas y recuperadas filas específicas de una hoja de cálculo en particular, pues resulta evidente de que sería posible utilizar dicho API para usar las hojas de cálculo de Google Docs como un sencillo motor de base de datos.

Buscando encontré en el blog "farinspace web" una librería de PHP que permite manipular fácilmente hojas de cálculo de Google Docs, el nombre es Google_Spreadsheet, aunque no es muy imaginativo refleja claramente su finalidad. Luego se me ocurrió usarlo para una aplicación de ejemplo el clásico guessbook, pero eso requeriría la administración de login y perfiles, entonces se me ocurrió mezclarlo (hacer un mushup) con Facebook Connect. De esa forma la administración de la identidad se hace con el Facebook Connect y el registro de los comentarios se haría usando Google SpreadSheet. En pocas palabras lo único que se tiene localmente es el programa, todo los datos estarían en la red.

He preparado un pequeño server virtual con el ejemplo, que puede ser accedido en este URL. El código listo para desempaquetar y usar puede ser descargado desde este otro URL. Lo único que necesita hacer para probarlo es decargarlo en un server con soporte de PHP 5.2 o superior, tener una cuenta en Google Docs y registrar su aplicación en Facebook (más detalles sobre como registrar una aplicación en Facebook pueden ser contradas aquí). Con las credenciales del caso debe editar el archivo "config.php" de la siguiente manera:

<?

  $api_key  = "abcdefghijklmnopqrstuv0987654321"; <- API Key de Facebook
  $secret   = "1234567890abcdefghijklmnopqrstuv"; <- Secret word de FB
  $username = "user@gmail.com";             <- Usuario Google Docs
  $password = "123456";                      <- Password usuario Google Docs

?>

Con esos sencillos cambios debería de funcionar el script que pongo a disposición. Ojo esto es una prueba de concepto, no está cuidada la estética, y todo el código son dos scripts PHP monolíticos. Es decir este script tiene propósito educativo y no recomiendo su uso en entornos de producción.

Los detalles sobre Facebook Connect pueden ser revisados en la wiki de Facebook, por simplicidad en este post me limitaré a enfocarme en el uso de la librería Google Spreadsheet, en caso de que alguien esté interesado en un tutorial detallado sobre Facebook Connect, pues haganmelo saber en los comentarios, si veo que hay suficiente interés dedicaré un tiempo a escribir uno.

A revisar entonces el código de "index.php" que nos permite leer datos desde una hoja de cálculo de Google Docs.

En esta parte inicializamos el objeto $ss (spreadsheet), e indicamos que deseamos usar la hoja de cálculo "comentarios" y la página "Sheet1", es importante tener presente que los nombres son case-sensitive:

(…)
    $ss = new Google_Spreadsheet($username,$password);
    $ss->useSpreadsheet("comentarios");
    $ss->useWorksheet("Sheet1");
(…)

En esta parte asignamos a la variable $rows, todas las filas que tengan un campo "id" mayor que cero, dado que usaremos la función time() para general el campo "id", este es un número entero mayor que cero siempre. Luego con la función sizeof() obtenemos el número de filas que han sido leídas y usaremos la variable $start para acceder a ellos desde el último insertado:

(…)
    $rows = $ss->getRows("id>0");
    $size = sizeof($rows);
    $start = $size – 1;
    $count = 0;
(…)

Usamos el bucle while() para leer los diez últimos elementos del array que la función getRows() nos provee y los representamos a través de una tabla:

(…)
    echo ‘<hr>Diez &uacute;ltimos comentarios:<br /><br />’;
    echo ‘<table>’;
    while(($start>=0) && ($count<10)) {
         $row = $rows[$start];
        
         $nombre = $row[‘nombre’];
         $apellido = $row[‘apellido’];
         $avatar = $row[‘avatar’];
         $comment = $row[‘comment’];
         echo ‘<tr><td valign="top">’ . ‘<img src="’ . $avatar . ‘"><br />’ . $nombre . ‘<br />’ . $apellido . ‘<br /></td>’;
         echo ‘<td valign="top" width="300">’ . $comment . ‘</td></tr>’;
          –$start;
          ++$count;
    }
    echo ‘</table>’;
(…)

Como veran el algoritomo es bastante sencillo y sólo nos muestra los últimos 10 comentarios dejados en el guessbook. Ahora si queremos dejar comentarios debemos estar logueados, para ello se debe disponer de una cuenta válida en Facebook.

El script que agrega una fila a la hoja de cálculo de Facebook se llama "addrow.php" y para asegurarnos de que no puede ser usado directamente por alguien, lo primero que hace dicho script es ver si el usuario está logueado en Facebook, de estarlo lee los siguientes datos de su perfil: $nombre, $apellido, $avatar (la foto). Si no está logueado es redirigido a "index.php".

Finalmente si el usuario esta logueado y ha enviado un comentario, entonces el siguiente código se ejecuta:

(…)
      $ss = new Google_Spreadsheet($username,$password);
      $ss->useSpreadsheet("comentarios");
      $row = array (
                  "id" => time(),
                  "nombre" => $nombre,
                  "apellido" => $apellido,
                  "avatar" => $avatar,
                  "comment" => $comment
             );

      if ($ss->addRow($row)) {
         /* Si se puede agregar la fila exitosamente regresa a la pagina principal */
         $url = ‘http://&#8217; . $_SERVER[‘SERVER_NAME’] . "/index.php";
         header("Location: $url") ;
      } else {
         /* Si se produce un error, nos alerta del mismo */
         echo "Error, lo sentimos pero su comentario no ha podido ser grabado.\n";
      }     
(…)

Es decir creamos un objeto $ss, especificamos con que hoja de cálculo deseamos trabajar con la función userSpreadsheet() y con la función addRow() podemos escribir el contenido del array $row en la hoja de cálculo llamada "comentarios", de ser exitosa dicha operación somos redirigidos a "index.php", caso contrario se nos presenta un mensaje de error para darnos a saber de que por alguna razón el registro no pudo ser grabado en la hoja de cálculo.

Este tipo de solución es útil por ejemplo si deseamos utilizar Google App Engine con PHP. Como comenté el año pasado es posible usar PHP en App Engine a través del servlet Quercus. Sin embargo no se puede acceder directamente a BigTable desde una aplicación PHP implementada de esta manera, pero la libreria "Google SpreadSheet", debería de funcionar sin problemas en Quercus. Existen varias otros posibles escenarios en donde este tipo de soluciones serían utiles como por ejemplo hosting gratuitos o sencillamente formularios web que llenan directamente una hoja de cálculo que luego puede ser compartida por los empleados de la compañía.

Si alguien utiliza este tipo de solución en algún proyecto le agradecería que nos lo haga saber en los comentarios.

La guerra por la supremacía en la web

febrero 16, 2010 2 comentarios

En las últimas semanas nos han querido vender la idea de una guerra entre Apple y Google, que el blog Gigaom resume en una infografía bastante interesante o la rivalidad entre Microsoft y Google por dominar el mercado de los buscadores, que también ha llenado las líneas de innumerables posts. Son las batallas que la gran mayoría piensa definirán al nuevo rey del sector TIC. Es sin embargo la furiosa rivalidad entre Google y Facebook, la que durante los próximos años, según mi criterio, cambiará el panorama de las TIC de manera irreversible.

Microsoft, Apple, Intel, Nokia o Motorola, son todas corporaciones preparadas para luchar en un entorno industrial, donde la idea es producir en grandes volúmenes. Sin embargo grandes volúmenes de producción requieren grandes volúmenes de consumo, de no ser así el dinero invertido en la producción no puede ser recuperado. Un fenómeno externo al sector TIC como lo ha sido el credit crunch de finales del 2008, ha transformado la mentalidad y ahora menos significa más. El éxito en ventas de las netbooks y de las laptops de menos de $500 son una expresión de que el mercado se ha vuelto bastante sensible al precio. Es esa la razón por la cual el Nexus One, no se ha vendido tan bien como el iPhone o el Droid, básicamente porque a $530 cada unidad sin contrato, está muy lejos del bolsillo del consumidor promedio americano en estos momentos.

En este nuevo mundo de escaso crédito, donde la maximización del poder de compra de cada dólar es la regla para sobrevivir, computadoras con múltiples núcleos o inmensas pantallas, son el equivalente a los SUV. Representan una elevada inversión incial y un alto costo de operación, para satisfacer una elemental necesidad de transporte. Pero cuando se trata de reducir costos, los CIO están ahora también evaluando no sólo el costo de los PCs en los escritorios, sino también los software que estos utilizan. Ya se cuestiona la necesidad de procesadores de texto, debido al hecho de que la mayor cantidad de veces se utilizan para producir documentos que son atachados a correos electrónicos, esto debido a las políticas de ahorro en suministros como papel y tinta para impresora.

El que viene será un mundo diferente al que conocemos, un lugar donde la busqueda de la eficiencia en cada eslabón de la cadena será un requisito para sobrevir, por lo tanto y como consecuencia de lo anterior, la tercerización de servicios jugará un rol central en las estrategias de reducción de costos. ¿Por qué Google y Facebook iniciaran una batalla para determinar quien se quedará con un mercado así?

En los últimos días una serie de noticias han removido las bases de lo que pensábamos eran las redes sociales, primero fue Facebook que anunció que crearía un servicio de correo eletrónico, luego Google presentó Buzz, que añadía capacidades sociales a Gmail, a costa se crear mucha ansieadad en sus usuarios respecto a la privacidad. Casi inmediatamente Google activó Webfinger para sus cuentas de gmail, que también son las cuentas que tienen Buzz. Webfinger es un protocolo que permite usar direcciones de correo para acceder a nuestros perfiles y servir de identidades digitales.

¿Por qué todo lo anterior es importante?, la respuesta es sencilla, aquel que controle las identidades digitales en la web será el nuevo rey del sector. Es por ello que Facebook ha firmado un acuerdo con AOL para permitir que los usuarios de Facebook y del mensajero instantáneo de AOL puedan chatear juntos. Es por ello que que Google está decididamente apoyando oAuth. En un mundo en donde todo servicio relacionado a las TIC se accederá a través de la web y de forma pay-as-you-go (pre-pago), la importancia de una identidad única e interoperatividad entre servicios será el factor clave. Es decir el proceso de login en todo servicio ofrecido en la web se volverá un commodity.

Permitanme explicarles el problema con un ejemplo, supongan que Uds. que son el CIO de una gran empresa con miles de PCs, ¿por qué sería complicado una migración a Google Docs?, pues si se consigue o se programa la herramienta para mover toda la "legacy data" de manera automática al nuevo servicio o se contrata a alguien para que haga eso, no debería revestir mayores inconvenientes. Sin embargo el gran problema de ese tipo de migraciones es la administración de contraseñas (identidades) a dicha escala. El otro problema es que una vez dentro de la red de Google, sería también otra inversión millonaria moverse hacia otra alternativa, digamos Zoho, y el costo estaría también en la administración de las contraseñas (identidades). Por el contrario, si los sysadmin no tienen que lidiar con la administración de las contraseñas y sólo necesitaran saber los "usernames", que se convertirian en las identidades digitales de los usuarios, el trabajo se simplificaría enormemente.

Es por ello que tanto Facebook y Google, desean ser su única solución para su identidad en línea, ya que cotrolando el punto de validación en la web, pueden controlar todo el mercado de SaaS (Software as a Service). Sólo el servir de intermediario de micro-pago reportaría miles de millones de dólares anuales sin tener que asumir casi ningún riesgo. El premio es muy jugoso como para no tomarlo en serio y las únicas dos empresas, por el momento, que están tratando de conseguir el control de ese estratégico punto son Facebook y Google.

Usando el API de bit.ly con CodeIgniter

febrero 15, 2010 1 comentario

Como habrán notado soy un fanático de CodeIgniter, un framework ligero, fácil de aprender, seguro y flexible que permite el desarrollo rápido de aplicacione web usando PHP. Esa es la razón por la cual lo uso para implementar muchas de las ideas que expono a lo largo del presente blog.

Pero, la razón de éste mini-tutorial de cómo usar el API de bit.ly, que es un servicio de redución de URL, es justamente por que he visto que Mashable, ahora muestra un numerito sobre el botón para hacer buzz de sus posts. Estuve leyendo la documentación del API de Google Buzz, con la clara intención de duplicar dicha funcionalidad en mi blog y lamentablemente encontré que no es posible encontrar el número de "buzzeadas" que un determinado website ha recibido. Al menos por el momento esa información no es accesible a través del API de Buzz. Entonces, ¿cómo han resuelto el problema la gente de Mashable?, acaso tienen un trato secreto con Google para usar funciones no documentadas que sólo han sido reveladas a ellos, a cambio de buena prensa. Pues la respuesta es menos paranoica. y ciertamente más propensa a errores. Mashable no está contando el número de veces que un artículo ha sido compartido en buzz, sino el número de clicks sobre un link de bit.ly. Una solución simple, aunque de cuestionable eficacia.

Bueno, ahora que ya sabemos el por qué, veamos el cómo.

Para poder usar el API de bit.ly dentro de CodeIgniter debemos de descargar la librería bitly-api-library-codeigniter, que está alojada dentro de los repositorios de proyectos Open Source de Google. Adicionalmente debemos crear una cuenta en bit.ly ya que con ella podremos obtener un API Key, necesaria para usar el API.

Luego de que descompacte el archivo zip que contiene la librería Bitly.php, la debemos colocar en system/application/libraries/,  luego editamos el archivo system/application/config/autoload.php y denemos agregar esta línea:

$autoload[‘libraries’] = array(‘Bitly’);

Ahora ya podemos usar la librería en nuestra aplicación. Supongamos que el nombre de usuario que registró en bit.ly es "usuarioprueba"  y que la clave (key) del API que  obtiene de bit.ly es "R_0da49e0a9118ff35f52f629d2d71bf07", entonces un ejemplo muy sencillo para obtener la estadística de cuantos clicks ha recibido un terminado enlace sería el siguiente:

<?php

class Stat extends Controller {

        function Stat()
        {
                parent::Controller();
        }

        function index()
        {
                $this->bitly->setKey(‘usuarioprueba’,
                                     ‘R_0da49e0a9118ff35f52f629d2d71bf07’);
                $URL = "http://bit.ly/14H1OB&quot;;
                list($protocol, $empty, $bitly, $hash)=split("/", $URL);
                $result   = $this->bitly->stats($hash);
                echo "<PRE>";
                print_r($result);
                echo "</PRE>";
        }
}

?>

Observer que estoy usando la función split de PHP para poder obtener sólo la última parte del URL, que es la que necesita el API para retornarnos la estadística del número de clicks que ha recibido el enlace. El resultado de la ejecución exitosa del código anterior sería este:

Array
(
    [clicks] => 6
    [hash] => 3VpSVv
    [referrers] => Array
        (
            [] => Array
                (
                    [direct] => 6
                )

        )

    [userClicks] => 2
    [userHash] => 14H1OB
    [userReferrers] => Array
        (
            [] => Array
                (
                    [direct] => 1
                )

        )

)

Como podrán observar, el valor que nos interesaría para implementar el contador de buzz es "clicks". Sumando esto a lo que ya he comentado en el post  "Si Mashable puede, ¿por qué yo no?" y un poco de JavaScript sería posible hacer un widget como el que está usando actualmente Mashable.

Agregando un poco de interacción social

enero 12, 2010 Deja un comentario

UPDATE: He tenido que retirar la barra de Google Friend Connect, debido a que los usuarios con Internet Explorer 6 han reportado problemas con la misma. Debido a que una cantidad considerable de usuario aún por una razón u otra deben seguir conservando sus IE6, he decido temporalmente suspender el script de Google Friend Connect.

Dado que la única forma de ser escuchado es formar comunidades y escuchar lo que otros tienen que decir, es que he comenzado a agregar algunos gadgets al blog que me permitiran establecer un mejor contacto con sus lectores. En realidad es algo que debí haber hecho hace mucho tiempo pero tal vez la noticia de que Google ha desarrollado plugins de Google Friends Connect específicos para Drupal y Joomla, tal vez los CMS más populares hoy en día, me hizo caer en la cuenta de que el uso de las redes sociales no está limitado a comentar fotos de la última fiesta o videos de gatos tocando un piano, sino que permtien establecer un diálogo fluído entre todos los miembros de una comunidad, en este caso particular es la comunidad generada alrededor de los contenidos que con mi mejor esfuerzo puedo poner en este blog.

Adicionalmente a los botones que permiten retweetear los posts o compartirlos con nuestros amigos en facebook, que agregue hace pocas semanas. Hoy he sumado dos widgets más que pienso podrían mejorar las capacidades de socialización del blog. El primero es la "Barra Social" de Google Friend Connect que permitirá a los usuarios que tienen una cuenta en Google poder unirse a la comunidad con el perfil que ya tienen registrado en Google y comentar los posts que les parezcan más importantes. El otro widget es el ya famoso formspring.me, que permite recibir preguntas de Uds. ya sea de forma anónima o no, a las cuales intentaré dar una respuesta lo antes posible.

Agregar estos widgets incrementa un poco la latencia de la página, pero el tiempo adicional para ver la página esta claramente compensado por el aumento de la interactividad del blog. Como siempre lo hago evaluaré si estos cambios realmente han traído más beneficios que problemas y como siempre corregiré lo que haya que corregir.

Gracias por seguir leyendo mi blog, esperando que estos cambios sean bien recibidos de su parte les deseo que esta sea una semana productiva y excitante para Uds.

Categorías:Web 2.0, web mushup

Aplicaciones Twitter con CodeIgniter

enero 2, 2010 3 comentarios

Luego de haber estado estudiando el API de Facebook y como desarrollar aplicaciones utilizando CodeIgniter, al cual le dedique no hace mucho un post. Estuve estudiando ahora el API de Twitter y como integrarlo con CodeIgniter, para ello utilicé la librería desarrollada por Elliot Haughin. Realmente la librería es muy fácil de utilizar, y como se especifica claramente en la documentación de la librería es vital para que esta funcione hacer dos cosas:

  1. Editar el archivo system/application/config/config.php y en la declaración de la variable "$config[‘uri_protocol’]", reemplazar el valor "AUTO" que esta por defecto por el valor "PATH_INFO".
  2. En el mismo archivo anterior system/application/config/config.php debemos agregar el caracter "?" a los caracteres permitidos, eso se hace a través de la variable "$config[‘permitted_uri_chars’]".

La aplicación de prueba que he desarrollado y que puede ser vista en http://www.volkanrivera.com/twitterapp/, es en realidad muy simple, se basa en los famosos tests que aparecían en el extinto semanario "Monos y Monadas", pero nos permite ilustar algunas ventajas respecto de las aplicaciones Twitter con respecto a las aplicaciones Facebook. Hasta el momento estas son las que he encontrado yo:

  1. Las aplicaciones Twitter pueden correr en URLs propios, en los cuales tenemos todo el espacio para desarrollar el diseño que querramos además de que podemos ubicar nuestra propia publicidad contextual, en el ejemplo se ha colocado AdSense, en el lugar que más nos beneficie. En las aplicaciones Facebook, en las cuales estamos dentro de Facebook, nuestro espacio esta restringido al iFrame que nos asigna Facebook, aunque es posible colocar AdSense tambien.
  2. Es posible sólo efectual la validación del usuario y luego cerrar la sesion twitter controlando al usuario a través de nuestras propias variables de sesión. Es decir luego de que hemos validado a través del protocolo oAuth, no necesitamos a Twitter hasta que nuestro usuario haga un logout o cierre el navegador, lo cual haría que la sesion en CodeIgniter se cerrara.

Sin embargo en cualquiera de los casos, si utilizamos Facebook o Twitter para autenticar a los usuarios de nuestra aplicación o servicio, tenemos el inconveniente de que si dichos servicios están caídos, algo que suele pasar frecuentemente con Twitter, nuestros usuarios no podrían autenticarse. Pero por otro lado también hay sus ventajas, entre ellas una identidad única y consistente a través de toda la web, además de acceso a datos demográficos (especialmente en Facebook), que nos permiten personalizar de una manera que hace apenas 5 años pensabamos no era posible.

Me pregunto que tan factible sería el desarrollo de un juego de rol multijugador, utilizando Twitter para la interacción de los mismos, una de las principales ventajas de utilizar Twitter para esto es que los jugadores podrían seguir interactuando incluso desde sus celulares.

Categorías:OpenSource, Web 2.0, web mushup

Aplicaciones Facebook usando CodeIgniter

diciembre 22, 2009 2 comentarios

Según InternetNews, para el 2010 habrá un aumento en la demanda de programadores PHP. Tal vez sea en parte porque el lenguaje esta alcanzando su madurez. Pero desde mi punto de vista, una de las principales razones es el hecho de que si se desea desarrollar aplicaciones para Facebook, la red social de mayor proyección en estos momentos, la forma más natural de hacerlo es utilizando PHP.

Programar aplicaciones para Facebook es sencillo, la documentación que provee dicha red social en su sección para desarrolladores es clara. Sin embargo embarcarnos un proyecto que sea un poco más complejo que un simple juego flash sin el uso de un framework puede resultar una experiencia bastante desagradable. En teoría dado que usamos PHP para desarrollar las aplicaciones, cualquier framework para este lenguaje como CakePHP, CodeIgniter o Zend Framework debería ser de utilidad, sin embargo aquellos que siguen este blog sabrán que soy un fan de CodeIgniter y por lo tanto es que me interesé en como hacer funcionar CodeIgniter con el API de Facebook.

Debo confesar que encontrar la información no fue fácil, la mayor parte de ella no esta actualizada y en muchos casos la información se encuentra segmentada entre diversas páginas web. Las dos páginas sobre las que me basé para desarrollar una aplicación de prueba han sido estas:

Facebook & CodeIgniter – Definitive Guide
Facebook Connect CodeIgniter Library

La aplicación de prueba que he desarrollado consiste en una simple página de bienvenida que muestra su nombre, la fotografía que utiliza como avatar en Facebook y los avatares de sus cinco primeros contactos. El resultado final puede ser probado (si tiene una cuenta en facebook) desde el siguiente URL:

http://apps.facebook.com/mycifbapp/

El código completo de la aplicación ejemplo puede ser descargado en formato zip haciendo click aquí.

Solo debe descomprimirlo y editar el archivo ./myfbapp/system/application/config/constants.php y editar estas líneas:

define(‘FB_API_KEY’, ‘1234567890abcdef1234567890abcdef’);
define(‘FB_SECRET’,  ‘1234567890abcdef1234567890abcdef’);
define(‘APPLICATION_URL’, ‘http://apps.facebook.com/mi_applicacion/&#8217;);

Debe reemplazar los valores apropiados que obtendrá luego de registrar su aplicación en Facebook.

Para poder usar este ejemplo Ud. necesita:

  • Un servidor web accesible desde Internet.
  • Soporte para PHP 5.2 (al menos).

Espero que éste ejemplo les ayude a iniciar el desarrollo de sus propias aplicaciones Facebook, a la vez que espero sus comentarios para poder mejorar o aclarar algún aspecto que no haya quedado claro.

Categorías:Internet, PHP, Web 2.0, web mushup