O3D: 3D en la web por Google

No conocía esta tecnología de Google que permite crear 3D en la web. O3D pretende ser el estándar para desarrollo 3D en la web. Los ejemplos que ofrecen son verdaderamente asombrosos, y para usarlo tan sólo es necesario instalar un plugin.
Para los que nos dedicamos al desarrollo web no creo que esto nos vaya a ser de utilidad, aunque nunca se sabe. Si estás interesado, un bueno punto de comienzo es el tutorial que os paso.

An Introduction to Google’s O3D

Web of Data

Interesante artículo sobre el futuro de la web y el cambio de pensamiento entre la WWW como una web de ficheros y la Web of Data, como una web de datos y relaciones.
El concepto es sencillo de entender, mientras que la WWW se basa en ficheros y enlaces entre unos y otros, la Web of Data, basada en Graph Database (diferentes a las base de datos relacionales ya que se basan en nodos, propiedades y relaciones entre nodos), donde los datos se almacenan en nodos, y estos puede relacionarse de forma muy variada y sencilla entre ellos.
www_vs_web_data.png
Viendo que las aplicaciones sociales (Twitter, Facebook, …) se basan en datos (usuarios, mensajes) y sus relaciones (updates, followers, …), es lógico pensar en este tipo de base de datos (Graph DB) que en la base de datos relacional. Aunque claro, al ser algo un tanto nuevo, quizás no existan alternativas potentes y el problema está en el escalado y el rendimiento.
La presentación es muy interesante y las bases de datos que indican (neo4j…) pueden estar muy bien para organizar estructura tipo nodo (yo ya tengo un ejemplo para probar).
Graph Databases and the Future of Large-Scale Knowledge Management
Vía / High Scalability

Impresiones sobre el desarrollo web en España

Mientras que algunos de los que nos dedicamos al desarrollo web estamos cansados de oír hablar de la web2.0, otros que pertenecen al mismo mundo laboral ni saben qué es, ni les importa. El desarrollo web en España es como un iceberg, lo que se ve es nada comparado con lo que está debajo del agua.

Leyendo blogs sobre desarrollo web, parece que todo el mundo sabe, usa u opina sobre jQuery, frameworks, Ajax, JSON, RIA, estándares, usabilidad o el reciente cloud computing. Pero realmente somos una minoría los que estamos interesados en estos temas. Cada día aparecen proyectos web2.0 de los que se habla durante meses, evangelizadores de lo-que-sea 2.0 nos cansan los oídos sobre qué es lo que se hace o lo que se debe hacer y cuál es el futuro inminente. Pero realmente estos proyectos son un pequeño porcentaje y el adoctrinamiento 2.0 no cala hondo en la realidad laboral española.

Entonces, ¿qué es lo que pasa? Pues sinceramente, no tengo ni idea, ni creo estar capacitado para exponer la realidad de lo que ocurre. Tan solo tengo algunas ideas, pensamientos o suposiciones sobre cuales pueden ser algunos de los motivos que pueden causar la apatía 2.0.

Es un trabajo

Lo que para algunos es un entretenimiento, una pasión o un vicio, para la gran mayoría es sólo un trabajo. Muchos de lo que se dedican a este trabajo lo hacen porque “no había de lo suyo”: muchos químicos, matemáticos, biólogos… trabajan en una profesión que no les gusta, pero que desgraciadamente es de lo único que había trabajo cuando salieron de la universidad. Además hay que sumar el hecho de que los españoles tenemos una actitud negativa ante el trabajo: el que sea una obligación, se pague mal o se explote a la gente, son motivos suficientes para que muchos hagan lo justo en su jornada laboral, y eso implica no esforzarse un poco más en aprender.

Más de lo mismo

Me acuerdo que hace años, cuando cambié de proyecto, los antiguos compañeros me preguntaron qué tal el proyecto nuevo, y mi respuesta fue: “más de lo mismo, navegador → JSP → bean → BD → HTML”.

Si nos ponemos a pensar, casi todos los proyectos web que se realizan son muy parecidos: hacer consulta a la BD y mostrar datos. Esto provoca que la creación de páginas web sea algo muy monótono y mecanizado, donde la novedad suele escasear, por lo que la necesidad de aprender algo nuevo no abunda, ya que con los conocimientos básicos que se tienen, se puede hacer cualquier aplicación.

El copy/paste mató a la 2.0 star

Si al hecho de que la gente no está motivada o a lo de que es más de lo mismo, le añadimos el uso discriminado de copy/paste, nos encontramos con la situación de que la gente lo único que hace la mayor parte de su tiempo es copiar un html/script/css anterior, modificarlo para que te funcione y pasar al siguiente tema, y en muchos casos sin saber exactamente qué es lo que está cambiando.

En Java es muy típico encontrarte a personas que llevan años usándolo y que no se saben de memoria el public static void main(String args[]). ¿Para que sabérselo de memoria si siempre usan un script anterior para crear uno nuevo?. Yo personalmente no me sé de memoria el <!DOCTYPE html PUBLIC … > y no creo que me lo vaya a aprender en la vida (ni ganas que tengo).

Jefes de proyecto o analistas “mayores”

Seamos sinceros, normalmente la gente con más interés por aprender es la gente más joven, pero lógicamente, estas personas suelen ser las que más abajo del escalafón están y sólo se dedican a hacer lo que les mandan. Si quien decide qué se debe hacer, no tiene el conocimiento sobre las novedades que hay en el desarrollo web, ¿cómo se va a propagar el uso de la web2.0?.

Cuando empecé a aprender Ajax, me fue imposible ponerlo en práctica en el proyecto en estaba, los que estaban por encima mía ni sabían qué era, ni se les podía dejar por tontos. Después de mucha lucha conseguí que al menos se hiciera usando iframes ocultos, para ellos era un adelanto, para mí un atraso.

Clientes y otros politiqueos

El cliente tiene la razón, aunque te den ganas de abrirle la cabeza con un libro de O’Reilly. Esto suele llevar a la situación de peticiones imposibles y desarrollos chapuceros.

Una aplicación web no es una aplicación de escritorio, por mucho que le pese al cliente, el cual suele pedir cosas como:

  • que toda la aplicación se vea en la pantalla, que no haya scroll vertical o que haya varias capas (normalmente frames argggg) y cada capa con su propio scroll vertical (e incluso horizontal)
  • que se pretenda que se hagan uploads automáticos de ficheros, sin que el usuario haga nada en el navegador (da igual las veces que les expliques que los navegadores no lo permiten)
  • usar flash o applets porque el navegador no permite hacer algo y el cliente se empeña
  • que sea compatible con los navegadores más antiguos del mundo (alguien lo debe tener instalado y no le apetece actualizarse). Y no me refiero al IE6, sino a versiones como IE5 o Netscape 4.7 (sufrido en mis propias carnes hace no mucho)

Sobre el politiqueo, poco que decir que no conozcamos todos. Decisiones en altas esferas nos obligan a usar productos o programas que poco favor hacen al desarrollo web, y menos aún a los desarrolladores. Estas ordenes suelen estar dadas normalmente por comerciales, que de humo y motos saben mucho, pero que de desarrollo no saben nada. Resumiendo, aquellos que no saben de desarrollo web, obligan a que se haga de tal forma, imposibilitando el camino hacia la web.20.

Negocio, negocio, negocio

Al final todo es negocio y lo que realmente importa es ganar dinero, y cuanto más dinero mejor. Esto suele conllevar varias situaciones:

  • recurrir a menos gente de la necesaria
  • reducir tiempos de entrega
  • contratar gente menos cualificada y más barata, la cual suele necesitar mucha ayuda o revisión
  • reutilizar desarrollos anteriores, aunque tengan poco que ver

Debido a esto, los desarrolladores se encuentran con que tienen poco tiempo para mucho trabajo, y las prisas no son amigas de las florituras, algo de lo que la web2.0 está llena.

Conclusiones

Está claro que todo lo dicho anteriomente no es algo generalizado, existen empresas que realizan desarrollos impresionantes, jefes amantes de la web2.0 y programadores interesados en aprender más cada día. De todas formas, al final lo que importa es que seguimos haciendo las cosas mal, bueno, mal no, pero si deprecated. Y ahora con el tema de la crisis, cuando nuestra mayor ventaja puede ser la calidad de lo que ofrecemos, nos encontramos que hacemos lo mismo que el resto de los países y en algunos casos más caro, por ejemplo la India es mucho más barata y mil veces más eficiente que nosotros.

Que nadie se sienta ofendido, porque no va dirigido a nadie este post. Y si se siente ofendido, que se ponga las pilas.

Errores comunes a la hora de optimizar

Interesantes consejos que nos ofrece Ilia Alshanetsky sobre la optimización de nuestras aplicaciones. Resumiendo el PDF de una charla que dió que ha compartido, tenemos:

  • Ten claro que va a hacer tu aplicación antes de meterte a optimizar
  • Basa tus cálculos sobre crecimiento y escalabilidad sobre datos reales, no sobre pajaras mentales de los comerciales
  • Más código no implica más lentitud, modulariza tu código para obtener mejores resultados
  • Piensa sobre el tiempo/gasto de desarrollo por ingenieros y el gasto en nuevo hardware. Esta solución no siempre es válida, ya que evitar cuellos de botella añadiendo servidores puede ser causa de mayores problemas en el futuro. Si tu código o consultas a la BD no son eficiente, es mejor optimizarlas. Para conseguir una mejora de rendimiento del 5% mejor no te molestes en optimizar el código.
  • La optimización de código puede originar fallos en otras partes de la aplicación
  • Cuidado con los includes: la compilación puede tardar más que la propia ejecución
  • Cache, preferiblemente en memoria, tanto datos recuperados de la BD como procesos que tarden en ejecutarse
  • No todo tiene que ser en tiempo real
  • Fíjate sobre todo en la base de datos, suele ser lo primero que necesita optimización
  • Usa herramientas para encontrar los cuellos de botella
  • Micro-optimizaciones no solucionarán tus problemas de rendimiento
  • Si crees que vas a crecer, la escalabilidad es más importante que la velocidad
  • No reinventes la rueda, crearte funciones que hacen lo mismo que funciones nativas de PHP es inutil

Common Optimization Mistakes

Vía / iBlog – Ilia Alshanetsky

Editor de .htaccess online

Buena herramienta que nos permite crear ficheros .htacces de forma online, muy útil para aquellos que no tienen conocimientos de Apache pero que necesitan modificar el .htaccess.
Mediante diferentes opciones y formularios, nos permite rellenar los datos necesarios para que nos vaya devolviendo el .htaccess final. Este editor nos facilita la labor a la hora de: no permitir el acceso a ficheros, autenticacion, páginas de error, páginas por defecto, redirecciones y restricción de accesos.
.htaccess Editor

Lista de herramientas para generar datos de prueba

Una de los grandes problemas con los que nos podemos enfrentar a la hora de desarrollar una aplicación web es que el rendimiento en las etapas iniciales no es similar a cuando hay muchos datos y muchos usuarios concurrentes. Para los usuarios se pueden hacer pruebas de estrés, pero para el volumen de datos que debe manejar la base de datos hay que rellenar las tablas con datos de prueba. Para ello, este listado puede sernos bastante útil:

  • GenerateData: para mí uno de los mejores, y del que ya hablé hace tiempo.
  • DBMonster: para generar datos aleatorios en la base de datos. Muy completo pero algo más complejo.
  • CSV Data Generator: basado en Ruby genera ficheros CSV.
  • Datagenerator: este me ha gustado bastante, es sencillo y no por ello simple. Permite introducir datos en Mysql, Firebird, Interbase, MSSQL, Oracle, SQLite y PostgreSQL.

En el post original mencionan otros, pero no me han llegado a gustar.

Test (Sample) Data Generators

Comparativas de licencias opensource

Seguro que a alguno le pasa como a mí que se pierde entre tanta licencia. Si formas parte de mi grupo, te vendrá bien esta comparativa sobre licencias opensource que se basa en 4 preguntas:

  • ¿Puedo darle mi nombre al trabajo derivado?
  • ¿Debería el trabajo derivado continuar siendo opensource?
  • ¿Puedo cambiar el tipo de licencia del trabajo derivado?
  • ¿Puedo vender el trabajo derivado?

Los tipos de licencia que comenta son:

Open Source licenses comparison table

SUP: Simple Update Protocol

SUP (Simple Update Protocol) es un sistema que permite a las webs que ofrecen contenidos avisar a los consumidores de sus feeds de qué feeds han sido modificados. Esto permite que no se tenga que comprobar los feeds cada poco tiempo para saber si se actualiza el feed o no (como hace Google Reader) o tener que enviar pings a muchos servicios.
SUP trabaja con ids (SUP-ID) que representan cada feed, el “consumidor” de feeds deberá almacenar los ids, acceder a una URL que ofrece los SUP-IDs actualizados y así saber cual de los feeds que le interesa debe actualizar.
SUP es cacheable, ocupa muy poco y no expone información comprometida como usernames o URL privadas. Muy útil para webs de blogs, microblogging, … pero no tiene sentido para blogs propios.
Simple Update Protocol
Gracias JL por el aviso

Native Client: tecnología de Google para ejecutar código nativo en tu navegador

Google está trabajando en una tecnología que permitirá a los desarrolladores web ejecutar código nativo en el propio ordenador del cliente, pudiendo así aprovechar toda la capacidad de la cpu del cliente, la cual está ahora limitada por el navegador. Lógicamente no se trataría de algo permisivo, sino que tendría limitaciones para evitar ejecutar código maligno.
Es necesario instalar un plugin para que funcione el cliente en nuestro navegador (yo lo he hecho para Firefox, ni idea de si funciona para otro navegador). Si tenéis instalado Firefox en otro directorio distinto al “por defecto”, deberéis modificar el archivo firefoxinstall.py e indicar la ruta correcta en la variable PLUGINDIR (línea 203 para Windows).
Los ejemplos que se ven son bastante atractivos: quake, mandelbrot, … Veremos a ver qué éxito tiene esta tecnología, aunque sinceramente, a veces se pretenden hacer muchas cosas vía web. Además, Java ya permite más o menos lo que pretenden, ¿no?, ¿es esto su propia versión de los Java applets y de Adobe Air?
Native Client

Social Web: clon de Digg, Meneame o Reddit en PHP y MySQL

Social Web CMS es un sistema de noticias social al estilo de Digg o Menéame que está desarrollado en PHP y MySQL y que nos permite crear nuestro clon de forma sencilla.
Permite la inserción de artículos por parte de los usuarios, votar los artículos, realizar comentarios, valorar los comentarios, buscar contenidos, obtener feeds para secciones, categorías y usuarios, disponer de perfiles, mensajes privados … Además dispone de una administración que permite gestionar el anti-spam, bloquear URLs, importar RSS, …
Social Web CMS