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://’ . $_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.

 

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.

 

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";
                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.

 

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.

 

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.

 

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/’);

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.

 

Blogger es una de las plataformas de blogueo más popular junto con WordPress, en parte es debido a que Google está detras de ella, pero sin duda otro elemento importante es su extrema maleabilidad, claro que esto es a costa de no ofrecer una interface tan visualmente atractiva y fácil de usar como la de WordPress, que debe su gran base de usuarios a este hecho. La aproximación de Google es la clásica de la filosofía Unix, proveer el conjunto mínimo de herramientas para que sea el usuario el que determine el uso más conveniente de las mismas. Como una vez comenté en un post titualdo "Planeando el superblog", Blogger es ideal si planeamos tener decenas o centenas de miles de visitantes diarios, además de que es un servicio completamente gratuito, pero adicionalmente a la escalabilidad y alta disponibilidad heredadas de estar dentro de una de las redes más grande del mundo, ofrece tambien un posicionamiento más fácil dentro del buscador de Google, la razón es obvia.

Muy bien, por más que aceptaramos que Blogger es muy ventajoso desde el punto de vista técnico que tiene que ver eso con el hecho de querer usarlo para reemplazar a otros softwares CMS como Drupal, Joomla! o Mambo. Pues bien antes de comenzar a discutir sobre el tema echen un vistazo al website de este hostal ficticio llamado Algun Hostal, hice este website para fundamentar mi punto. Dicho website esta alojado en blogger, es más el website es un blog de blogger pero personalizado de manera extrema, tal vez la única forma de creerlo es usando su dirección blogspot http://algunhostal.blogspot.com/.

Básicamente todo blog es una página web, sólo que las páginas que lo componen están categorizadas cronológicamente, los post más nuevos se muestran al principio. Sin embargo hacer que un blog muestre el look and feel de un website cualquiera no es tal complicado, sólo bastaría con eleminar toda referencia a autor del post, fecha de publicación y limitar el número de post a ser mostrados en la página principal a sólo uno. Pero es evidente que los templates que ofrece blogger por defecto son pocos, es por ello que es bueno buscar templates para blogger en otros lugares, yo les recomiendo Btemplates, es de alli de donde tome el template que estoy usando.

Un pequeño problema es eliminar las referencia a post anterior y post previo cuando entramos a un post en particular, eso se puede evitar agregando estas líneas al template justo al final de la sección /* Content */

.feed-links {
margin-bottom: 10px;
border: none;
visibility: hidden;
}

.feed-links a {
margin-bottom: 10px;
border: none;
visibility: hidden;
}

.blog-pager {
border: none;
visibility: hidden;
}

Con el pequeño cambio anterior y usando un Widget para proveer un "Contact Form", les recomiendo Kontactr, ya tenemos un website típico a costo $0, ya que podemos usar un nombre de dominio gratuito, .cix.pe es otro de mis proyectos y tiene por objetivo ofrecer nombres de dominios gratis.

Lamentablemente Kontactr, en estos momentos sólo esta disponible en inglés, pero un amigo mio esta trabajando en un proyecto que busca clonar y extender en un widget enteramente en español las funcionalidades de Kontactr.

Como veran, con sólo unos minutos de trabajo extra es posible levantar toda una presencia Internet a costo cero, primero registrar un nombre de dominio gratis, luego crear el website en blogger y usando Google Apps, podremos tener e-mails usando nuestro propio nombre de dominio, todo por el precio más bajo que podemos pagar $0.

Actualmente estoy trabajando en un tutorial paso a paso de como obtener un website como el de "Algún Hostal", cuando lo tenga listo incluiré el link para que puedan seguirlo aquellos que deseen algo más detallado.

 

El pasado día de San Valentín, Robin Wauters publicó un artículo en TechCrunch titulado "La muerte de la ‘Web 2.0′", que ha tenido bastante eco en la blogosfera, algunos mostrando su oposición o concordancia con su análisis. La base para su afirmación de que la "Web 2.0" está muriendo es el análisis de las búsquedas de Google a través de la herramienta Google Trends, desde mi punto de vista hacer un análisis en base a lo que se muestra en Google Trends es por decir lo menos poco científico, imaginen si los médicos basaran sus diagnósticos en Google Trends para decirle a los pacientes que tienen, ciertamente a nadie se le ocurriría diagnosticar enfermedades en base a su popularidad. Aunque concuerdo en la conclusión que la "Web 2.0", es decir las redes sociales, blogs y wikis comenzaran a tener una significativa caída en los próximos meses, no comparto la lógica que emplea para llegar a ella.

Por otro lado tampoco creo de que estemos expectando la llegada de la Web 3.0, como el autor del blog "De Color Naranja", expresa en su post "Web 2.0 ¿Muerte o Evolución?". Estamos a punto de ver las consecuencias del Credit Crunch en Internet y especialmente en la web. En dos artículos que han llamado mi atención aparecidos en The Wall Street Journal, uno titulado "El Shock del futuro para los anuncios en Internet" y el otro "Se enfría el mercado de los anuncios web locales", se presentan cifras a mi modo de ver alarmantes para todos aquellos que tenemos un Startup que ha basado su plan de negocios en la publicidad online. La conclusión a que llegan ambos artículos periodísticos es la misma, no habra más crecimiento de publicidad en-línea, claro a los periódicos y TV les ira peor, pero a diferencia de los medios de difusión masivos tradicionales, las barreras de entrada para la Web 2.0 son tan bajas que cualquiera puede entrar a ella sin inversión inicial y con una razonable expectativa de hacer algunos dólares en tiempos de crisis, lo cual genera una avalancha diaria de nuevos empresarios 2.0. Sin embargo a más crecen las redes sociales, el blogging y el microblogging, disminuye la porción del pastel publicitario que le corresponde a cada uno de los miembros de la Web 2.0, tan simple como eso.

Además debido a la recesión de escala mundial que enfrentamos, observaremos una deflación generalizada, pues todo el mundo desea reducir su margen para capturar los poco dólares que hay en el mercado, esto por ejemplo ha hecho que Walmart, tal vez una de los pocos gigantes que se están beneficiandose de la crisis, haya tenido que reducir sus proyecciones de beneficio, pues ha tenido que recortar aún más sus margenes para poder seguir atrayendo clientes. Esto significa claramente que las empresas que deseen sobrevivir en este entorno deberán de aplicar una reducción en los costos radical y como resultado de esto el sector publicitario sentirá la pegada muy pronto.

Así como Lively, que ha sido el primer proyecto de Google en ser cancelado, vendran muchas más reducciones de gastos a todo nivel, tanto en Google como en todas las empresas cuyo mercado es el web. Como resultado de lo anterior las Startup que no tengan un plan de negocio basado en suscripción podrán tener problemas de caja graves para seguir operando durante el 2010. Esta crisis seguirá con nosotros probablemente hasta el 2011 o 2012.

Otro giro radical que veo como resultado de la generalización de la crisis económica a todos los sectores de la economía, es que las nuevas Startup, ya no buscaran desarrollar infraestructura propia, sino que usaran soluciones Cloud Computing como Amazon EC2 o Google AppEngine. Lo cual traerá como consecuencia la consolidación en grandes centros de datos, no me extrañaría ver en 5 años sólo 4 o 5 grandes proveedores de Cloud Computing que controlen el 90% del mercado. Es más no me extrañaría ver migraciones de empresas establecidas y con infraestructura propia, reescribiendo porciones de sus aplicaciones para correr en la nube.

La Web 2.0 como la conocemos, con contenido producido por los usuarios poco a poco ira desapareciendo, conforme el tiempo libre de la mayoría de los usuarios desaparezca, porque en tiempos de crisis hay que trabajar mucho más para conseguir la misma cantidad de dinero. Por otro lado la web cada vez se parecerá más a los medios masivos como la TV o las revistas (se volverá un medio de evación y no de afirmación) y el interés ya no estará centrado tanto en "¿qué estas haciendo?", pues los estándares de vida habrán caido tanto en los próximos años, que todos sabremos que las vidas de nuestros amigos son igual de angustiosas que las nuestras y justamente ya no se querra oir más malas noticias. Por el contrario podremos ver que en Internet se popularizaran formas de evadir la realidad como juegos en línea, especialmente de rol, donde se puedan asumir identidades imposibles de tener en la vida real, y estos se volveran más populares conforme la crisis se vaya profundizando. No descarto tampoco que haya un auge de los casinos en línea donde los desesperados, especialmente si se concreta una plataforma de micropago seguna y universal, trataran de revertir su destino en una mano de póquer.

La web en latinoamérica retrocederá pronunciadamente, conforme en los hogares se reduzcan todos los gastos no indispensables y el dinero para ir a chatear o subir fotos a Hi5 en una cabina Internet tenga que ser usado para poner pan en la mesa. Menos usuarios significa logicamente que estos servicios serán menos atractivos para poner anuncios en ellos. Recordemos que finalmente lo que venden estos sitios sociales son una audiencia, si esta decae, lo mismo sucederá con sus anunciantes, probablemente las redes más pequeñas terminarán siendo absorvidas por otras más grandes.

Es decir creo que la Web 2.0 (la web social) como la conocemos actualmente, sera transformada radicalmente por la presente recesión mundial, pero esta no evolucionará hacia una Web 3.0, sino por el contrario podríamos decir que hara una regresión y podría convertirse en una Web 1.5, juegos en grupo, pero contenido generado por los medios tradicionales, de la forma tradicional.