sábado, agosto 15

En busca de la herramienta perdida

adobe-fireworksHoy estaba indagando en la red sobre el diseño eficiente de  interfaces de usuario para web, móviles y otros soportes con tecnología Adobe, y he encontrado un artículo muy interesante.

Leyendo el blog de Jason Santa María me he encontrado con una interesante reflexión sobre las herramientas de Adobe, su utilidad y alcance individual, y, en concreto, sobre las asperezas de PhotoShop y la incomodidad de otras, cuyo presente y futuro parecen inciertos, como Fireworks… claro está, en el debate del diseño de interfaces para web.

Aunque el artículo no concluye en nada parecido a una conclusión, sino más bien en la mera exposición del desconcierto que provoca la existencia de herramientas tan dispares y parecidas a la vez de la casa de Adobe, igualmente os aconsejo su lectura, sobretodo si alguna vez os habéis encontrado en el dilema de tener que elegir una herramienta u otra para diseñar lo más eficientemente una IU, o por si alguna vez os ha entrado tan sana duda: ¿estaré usando la mejor herramienta para este objetivo?

Creo que en algún momento todos nos planteamos esta pregunta y pensamos en cambiarnos hacia lo que parece lo más aconsejable. Recientemente me he encontrado con este dilema, también he de deciros que no por necesidad sino por capricho.

La mitad del dia lo uso para documentarme, aprender nuevas tecnologías y tomar café de vez en cuando. Eso me ha conllevado generar una rutina para nada agotadora de adquisición de conocimientos. Y debo deciros una obviedad: nunca tienes suficiente información, pero cuánta más tienes mejoras tu capacidad de tomar decisiones acertadas y te ahorras muchos imprevistos. Y en esa tarea de búsqueda de información útil han entrado las herramientas de Adobe y su estudio. Y en ese estudio, si bien la pregunta no hubiera surgido de forma espontánea de uno mismo, surge inevitablemente durante el proceso: ¿qué herramienta es mejor en cada caso? ¿realmente qué ventajas supone usar Fireworks sobre PhotoShop, Illustrator o InDesign? ¿cuál es el alcance de cada una de ellas?

El debate no fuera tan intenso o necesario, si me permitís, si Adobe no hubiera mejorado tanto cada una de sus aplicaciones de la Creative Suite, añadiendo funcionalidades antes no existentes o presentes en aplicaciones hermanas. Esto ha provocado un alaúd de dudas sobre el debate debido principalmente a que muchas de las cosas que podemos necesitar de un programa de diseño se hallan en las cuatro aplicaciones arriba citadas, haciendo mucho más difícil la elección. Además, debido a esta acumulación de funcionalidades, tanto de dibujo vectorial como de mapa de bits, tanto de tratamiento digital de imágenes como de exportación a distintos medios o plataformas, etc. genera una necesidad que antes no teníamos los diseñadores: encontrar la herramienta más completa y olvidarse de las demás, aunque sólo sea por una cuestión de falta de tiempo.

Fijáos si esto es así que son incontables los ejemplos de diseñadores, desarrolladores, artistas, amateurs, etc. que optan por usar una aplicación para todo y la ganadora suele ser… ¿adivinan cuál? Sí, exacto, PhotoShop o la otra grande: Illustrator. Dos herramientas que, por cierto, son de gran complejidad y a muchos de sus usuarios se les caería el mundo encima si les dijeras que después de tenérselas con aplicaciones de este calibre abran la mente a otras casi tan complejas como éstas y aparentemente parecidas y mucho más limitadas que éstas en cuánto a opciones se refiere.

Gran parte del problema viene determinado por cuestiones de márketing, o así me lo parece. Adobe tiene una aplicación superestrella, que es PhotoShop, y sabe que ha sido su principal Caballo de Troya en muchas empresas y hogares de todo el mundo. Así la han nutrido versión tras versión de muchas funcionalidades específicas de otras aplicaciones especializadas en sus propias áreas, restándole protagonismo a herramientas como Fireworks (creo que la gran afectada).

Me da la impresión que hoy día mucha gente no sabe exactamente para qué sirve cada una, espero almenos que los profesionales lo sepamos… pero no sólo las que usamos, sino el resto de las aplicaciones de la Suite, para poder hacernos la primera pregunta: ¿estoy usando la mejor herramienta para este objetivo?

¿Es que en el tema de la maquetación de una página web, de su prototipaje, Fireworks no es tan bueno como otras herramientas como PhotoShop o InDesign bien usadas?

Pues sí, creo que es muchisimo mejor y que conste que para llegar a esta conclusión he tenido que documentarme mucho y probarlo un tiempo para convencerme. Pero curiosamente Fireworks está perdiendo muchos adeptos, está desapareciendo y es más: muchos profesionales no saben realmente de lo que es capaz.

Vídeo ejemplo de cómo maquetar una web rápidamente con Fireworks

Hay que achacar el desconocimiento sobre esta herramienta principalmente a los siguientes factores:

  • No hay tiempo para investigar sobre las ventajas de otras aplicaciones si no hay muy buenas razones para hacerlo.
  • Las herramientas más conocidas (PhotoShop, Illustrator) han ampliado tanto el abanico de funcionalidades que cubren algunos de los aspectos más importantes de otros programas especializados como Fireworks.
  • De forma coherente al peso e importancia de las aplicaciones estrella, éstas han ido adquiriendo un coste de compra muy elevado, lo que inhibe en la mayoría de los casos (autónomos y PIMES) la adquisición de más programas de la Suite.
  • Muy poca claridad por parte de Adobe y empresas adheridas en promocionar e informar adecuadamente sobre las Features y los Targets de los programas de la Suite: dos o tres programas a veces parecen hacer lo mismo mirando las características.
  • Se entiende una peligrosa igualdad: Especialización (Fireworks) = Limitación + Necesidad de más programas para cubrir demás necesidades, Generalización (PhotoShop) = Gran cobertura + Mejor rentabilidad de su coste.

Así es muy difícil que programas excelentes como Fireworks (que realmente lo es, el Fw CS4 es una maravilla y si te has pasado al desarrolo de aplicaciones con Flex ni te cuento) lleguen a quienes deberían usarlo.

Hay quién dirá que no hay ‘killer application’, ni ‘silver bullet’, que el artista es quién hace que la herramienta sea la perfecta, que un gran trabajo se puede hacer con cualquier herramienta si se sabe utilizar.

TOTALMENTE DE ACUERDO, PERO…

…añadiría lo siguiente: si encima es la herramienta más especializada para ese trabajo (y manteniendo la premisa de que la sabe utilizar) su productividad será mucho mayor y su satisfacción también.

Quisiera motivaros a que os informéis siempre de las bondades de todas las aplicaciones que estén pensadas para las tareas que realizáis. Después de todo este tiempo he llegado a la conclusión de que vale la pena, que no nos debe hacer reparo cambiar o almenos descubrir. Y por favor, no lo dejéis estar si veis que os cuesta usar las herramientas pasados 5 minutos, sólo intentad recordar el tiempo que os ha llevado dominar PhotoShop o Illustrator con la maestría que lo hacéis ahora y decidme si 5 minutos es tener mucha paciencia.

Para acabar, os aconsejo encarecidamente que le volváis a dar una oportunidad a Fireworks y para que no os suponga un gran quebradero de cabeza os dejo aquí algunos enlaces:

¡Hasta la próxima!

jueves, febrero 5

La ambición de Google

FireShot capture #1 - 'YouTube - YouTube de Arkrelod' - www_youtube_com Bueno, ¿qué novedad no? Que la ambición de Google parece no tener fin (y también mucha prisa) es evidente. Su carrera imparable en el desarrollo de servicios y aplicaciones que puedan abarcar acaparar todas las necesidades de los usuarios no ha llegado a su fin. De hecho, aventuro que estamos en el inicio del despegue de Google.

De acuerdo, Google ya hace años que es el buscador más usado del mundo y ha desarrollado (o comprado) prácticamente todos los servicios básicos que cualquier usuario de Internet pueda necesitar: procesador de textos, hoja de cálculo, correo electrónico, repositorio de documentos, etc. 

En estos momentos Google está mejorando sus servicios actuales, de los que hay que resaltar Google Gears, que permite ver el correo de Gmail estando offline mediante el uso inteligente de la caché de la última sesión, y añadiendo (o comprando) otros tantos…

…pero no es suficiente.

No lo es porque el propósito es demasiado ambicioso: fidelizar el máximo de usuarios a sus servicios y así conocerlos mejor (luego veremos para qué). Esto es difícil cuando tienes nichos de mercado realmente difíciles de penetrar como el de la mensajería instantánea, u otros en general en determinados continentes como el asiático o el americano (en Europa creo que se nos rifan), en los que básicamente los servicios de Microsoft y la red de AOL ganan la batalla.

En cuánto a redes sociales lo tiene más bien difícil, la batalla está entre Facebook (140 millones de usuarios) y MySpace (253 millones) básicamente, pero hay otros paises que utilizan asiduamente (y no salen de él) otras redes: Orkut en sudamérica tiene 67 millones, Friendster en Ásia llega a los 90 millones. Google diría que no va a poder meterse en este mercado, así que lo que intentará es rodearlo.

Cuál es el verdadero objetivo a nivel empresarial de Google: ganar el mercado de la publicidad en Internet. Aunque Google Adsense parece ser usado en mayoría, está más que demostrado que su algoritmo es una patata, y que cualquier empresa que invierta en eso está tirando, en la mayoría de las ocasiones, un montón de dinero. Esto está hechando atrás muchas empresas. ¿Porqué? Porque Google no ha encontrado la forma de asegurar que el anuncio aparecerá sólo en aquellos lugares en los que accedan clientes potenciales para esa empresa, ni tampoco de asegurar altos índices de click por conversión (es decir, clicks en los anuncios que se convierten en usuarios que acceden en la página y terminan comprando o rellenando un formulario de nuestra web).

Hay varias formas de recuperar la confianza de las empresas en los servicios de publicidad: teniendo más datos de los usuarios, así los conoces mucho más y puedes adaptarte a los mismos. De ahí la creación de tantos servicios de tipo genérico…

y de ahí la creación del navegador Google Chrome

Ya con la Beta de Chrome nos la intentaron meter un poco con su polémico EULA (End User License Agreement) y cito su cláusula 11:

“Conservará los derechos de autor y cualquier otro derecho que ya posea del Contenido que envíe, publique o muestre en los Servicios o a través de ellos. Al enviar, publicar o mostrar Contenido, estará concediendo a Google una licencia permanente, internacional, irrevocable, no exclusiva y que no está sujeta a derechos de autor para reproducir, adaptar, modificar, traducir, publicar, representar y mostrar públicamente, así como para distribuir cualquier Contenido que envíe, publique o muestre en los Servicios o a través de ellos. Esta licencia se otorga con el único propósito de permitir a Google publicar, distribuir y promocionar los Servicios y puede revocarse para determinados Servicios, según lo estipulado en las Condiciones adicionales asociadas.”.

Es decir, que todo lo que hiciéramos podría usarlo Google para cualquier propósito y por ello podría usar esa información para lo que quisiera. Óbviamente, Google se excusó diciendo que había habido un error, pero el hecho es que lo intentaron… (es decir, algo me dice que fue deliberado).

El siguiente paso es colarnos el navegador por todos los sitios… Ahora lo vemos publicitado en Youtube y en otras webs de Google o relacionadas. Ambición pura…

Y también prisa. A través del blog de Navegadores me entero de un nuevo anuncio para japón de su navegador, bastante bueno. Curiosamente uno de los mercados dónde lo tienen más crudo.

No tienen aún el mercado Europeo y Americano y ya han hecho el asalto al país del Sol Naciente.

Recuperemos en un instante el hilo principal de este entrada: estamos en el inicio del despegue de Google. Estamos en la primera fase, en la que Google va desplegando uno tras otro todo su abanico de servicios y aplicaciones, en su ambición de conseguir fidelizar a millones de usuarios y obtener de ellos datos para poder mejorar aquello que le dará de comer: la publicidad.

El verdadero reto, pues, será consolidarse dentro de unos dos años quizá, cuando la euforia de sus inversores haya llegado a su cima y dónde deberá haber demostrado que es capaz de generar beneficios demostrables a sus clientes, que son las empresas que contratarán sus servicios. Si su programa de publicidad falla, si no consigue a través de todos sus esfuerzos mejorar su algoritmo, Google no tendrá nada.

Sin embargo, creo que lo conseguirá pero la cuestión es… ¿a qué precio? ¿Qué precio pagaremos como usuarios por la pérdida de nuestra privacidad?

Veo mucha ambición y mucha prisa, y me suena demasiado a las conocidas tácticas de Microsoft, cuando el mundo no era tan globalizado (jajaja, ¿no hace mucho verdad?). Servicios para todos, aplicaciones de escritorio, correo electrónico… y ahora el navegador. Ya veréis, lo próximo será que cuando Chrome tenga cerca del 70% del mercado de los navegadores crearán un lenguaje propio para desarrollar webs sólo para él (alegando lo que quieras) y así comerse el 30% restante.

Quién diría que me alegraría pensar que tenemos a Microsoft y Adobe, los únicos que le pueden parar los pies (en el sentido de evitar el monopolio en los servicios)…

…y sino tiempo al tiempo.

miércoles, enero 14

Times goes by: Windows Live & MeOnLAN

Mucha gente utiliza Windows Live Mesenger o alguno de sus servicios relacionados: hablamos de los Spaces o los grupos. El otro día quise probar este mundo de aplicaciones web que tanto tiempo había dejado en el olvido.

image Aún recuerdo la primera versión de Hotmail, por ahí el ‘96 (cuando aún ni era de la Microsoft), con una franja azul a un lado y un simple formulario para entrar en el correo. Tosco, lento, aunque el más rápido en aquella época. Entonces accedíamos a él con NetScape (algunos aún con Mosaic) por www.hotmail.com, no como ahora que casi nunca vamos directamente poniendo la URL en el navegador, sino pinchando en un botón des del messenger. Por aquella época no había messenger evidentemente, éste no llegó hasta el ‘99 y realmente no se empezó a usar por aquí hasta el ‘00, así que yo chateaba por MS-DOS con comandos a través de telnet.

Recuerdo que iba a la biblioteca del campus de Terrassa, a la sala de ordenadores. Debía tener unos 13 años (año ‘96) cuando empezé a chatear y también fue cuando empezé a usar el correo electrónico. Viví el principio de Internet, tal y cómo lo entendemos ahora, aquí en España (Internet existe, como lo conocemos hoy día, des del año 1989 con la creación de la World Wide Web y el lenguaje HTML por parte del CERN, y no llegó este servicio a España hasta el ‘94).

Si por ahí hay alguna que no pudo crear la cuenta julia@hotmail.com o rosa@hotmail.com, le pido disculpas. Creé esas cuentas para hacerme pasar por tía en alguno de esos chats XDDD pero en fin, que esa es otra historia (supongo que con el tiempo quedaron libres, como comprenderéis yo ni me acuerdo de las contraseñas que puse hace 12 años en esas cuentas!).

En fin, que ha llovido mucho desde ese entonces. Microsoft ha ido comprando servicios y más servicios, y los ha ido integrando en MSN. Lo cierto es que hoy da gusto ver la evolución que han sufrido todas estas aplicaciones web y de hecho quisiera aplaudirlo, por bien del progreso técnico en la red.

¿Y a qué viene a cuento todo esto? Pues que me he descargado la última versión de lo que ahora se llama Windows Live Messenger y de paso también la aplicación Writer que viene con el paquete. Lo que me ha atraído de Writer es que puedo escribir en cualquiera de mis blogs des del mismo sitio. Se le da las claves de acceso a los blogs y… ¡listo! Te dispone un procesador de textos ligero ‘ala’ Word y ¡ala! Tengo que decir que está bastante bien. Mucho mejor que otras cosas que había probado hasta ahora como algún plug-in de Firefox o uno de los forks de Firefox como Flock, en teoría pensado para hacernos la vida más fácil a los blogueros.

De Microsoft se pueden decir muchas cosas, pero yo que algo sé del mundo de la informática me atrevo decir que es una de esas pocas empresas que hacen escuela. Aunque sea el primero en criticarla es el faro que nos guía a las demás, es un ejemplo en vida de lo que es una empresa profesional de desarrollo de aplicaciones. Es digna de admiración.

Así como un futbolista se inspira en dioses como Maradona, Pelé o Di Stefano, un informático necesita de una referencia mundial, y esa referencia es Microsoft, Apple, IBM, Cisco, HP, Adobe, etc. De Microsoft se puede decir mucho, pero es un ejemplo de perseverancia, de márketing, de soporte al cliente, de workflow, de management, de muchas cosas.

Sólo queda esperar a ver cómo acabará la adjudicación de cuota de mercado en Internet de los grandes: MSN, Facebook y los servicios de Google, entre otros. Pura curiosidad (y que nos afecta más de lo que parece).

¡Un abrazo y… buen año! (jeje, si se me permite)

viernes, octubre 17

Reportajes de Vídeo y Foto con DISTAIM MEDIA



Saludos amigos,

hoy me complace escribiros en este blog para hablar de la nueva web de DISTAIM MEDIA de la cual soy uno de los colaboradores. No sólo porque haya participado en el desarrollo del sitio web, que de momento es una mera presentación de la actividad que Distaim Media realiza, sino también porque quería daros a conocer a un grupo de profesionales del mundo de la fotografía y el vídeo.

Distaim Media se orienta a particulares y a empresas, y tienen en su haber muchos servicios que seguro que harán las delicias de muchos.

¿Por qué Distaim Media? Porqué es un equipo que trabaja con herramientas de gran calidad, porque es un equipo unido que trabaja muy bien, porque tienen servicios a la carta con tarifas muy ajustadas para todo los que os podáis imaginar, porque tienen estilo, porque lo hacen con ganas, porque son modernos...

Actualmente hay que destacar sus packs especiales para Boda, pero pronto ofrecerán muchos paquetes interesantes para todas las motivaciones.

Des de aquí quiero enviar un fuerte abrazo al equipo de Distaim Media y agradecerles poder formar parte del desarrollo de su primera web. ¡Grácias!

Distaim Media

lunes, septiembre 22

Primeras impresiones de Google Chrome

Hola amigos! Muchos habréis oido hablar del último proyecto de Google (al menos que haya dado a luz): el navegador Chrome. Con este proyecto, Google se suma a la batalla de browsers que lideran Mozilla Firefox e Internet Explorer, seguidos de estupendos navegadores como Opera, Safari o Konqueror.

De entre estos navegadores es difícil determinar cuál es el mejor, pues cada uno de ellos posee virtudes que destacan sobre los demás. Vaaale, IE sale peor parado en virtudes pero tiene un rendimiento notable y una popularidad que está siendo muy difícil de desbancar (¿unos 4 años quizá?).

Personalmente, considero que Firefox, hoy por hoy, es mi navegador favorito. Y esta preferencia no se basa en el simple afecto por ser software de código abierto, o por ser la primera alternativa que tiene posibilidades de desbancar a un producto firmado por Microsoft. Sus cualidades me ofrecen mucho más que cualquier otro navegador y, lo que es más importante, me dan herramientas para hacer una navegación más útil y más provechosa para mi trabajo (el desarrollo de páginas y aplicaciones web).

Pero si bien de Firefox podría destacar sus infinitas y realmente útiles extensiones, su usabilidad, su integración con motores de búsqueda, su lector de RSS o su gestión de marcadores, también podría citar excelencias de sus competidores.

Opera es un navegador rapidísimo, en cualquier plataforma. En MAC no supera a Safari, pero lo sigue de cerca. Consume poco y es muy ágil. Es uno de los pocos que respetan los estándares al 100%.

Safari es muy rápido en MAC, posee el que para mí es el mejor motor de renderizado, con un excelente tratamiento de textos y de colores. Destacaría también su minimalismo, lo que facilita la visualización de las páginas web, priorizándola a la propia interfície del programa.

En resumen, Firefox no es el mejor navegador en todo. Para mi es el mejor porque lo encuentro muy completo y las herramientas que me ofrece me ayudan como ningún otro.

Entonces uno se pregunta: qué podrá ofrecer Chrome a todo eso? La suma de todo lo bueno de cada navegador? Se me antoja ambicioso y realmente difícil.

¿Viene para ofrecer algunas cosas interesantes, como los otros, pero sin destacar en su conjunto? ¿Es otro intento más (fallido) de convertirse en el navegador de todos?

Sea como sea, tenía que probarlo y hoy me he decidido.

Mi primera impresión es que se trata de un navegador que mejora en muchas cosas lo que sus competidores ya están haciendo. Lo que quiero decir es que no innova en absoluto, pero sus funcionalidades son exquisitas y demuestran el esmero de sus desarrolladores de intentar crear un producto mejor que parte de las experiencias de los usuarios y de las innovaciones de los otros.

Posee el minimalismo de Safari, el sistema de pestañas de todos ellos y un sistema de menús comprimido como el de IE. ¡Todo ello en el navegador más ligero que he visto en mi vida! Para que os hagáis una idea. Mi Firefox derrocha 80MB de RAM en mi PC (con varias extensiones, por supuesto), Opera 22 MB y Chrome: 12MB!!! Insuperable...

Como detalle, no querría terminar sin indicar dos características de este navegador muy interesantes. Por un lado su integración 100% con los motores de búsqueda (des de la misma barra de direcciones) y su tecnología multiproceso. Han conseguido que cada pestaña sea plenamente independiente, de forma que cuando una se colapse podremos cerrarla sin perder la estabilidad en el navegador. ¡Algo que desearía en mi Firefox!

Hay más características, pero mejor os remito a la página de Google Chrome.

¿Cómo concluir este artículo? Bien, me siento capaz de dar algún tipo de conclusión con este primer encontronazo con Google Chrome:

Es un navegador que ha venido para quedarse. Ha sido ejecutado con brillantez y exquisidez. Aún le falta mucho como para ofrecer lo que muchos usuarios como yo necesitamos, pero sin duda puede desbancar a aquellos que, aunque con brillantes características, no han conseguido imponerse del todo: por supuesto hablo de navegadores como Opera o Konqueror. Y hay motivos para creer que pronto lo hará si en breve, tal y como dicen, acepta extensiones para Google Chrome

Veremos lo que ocurre, pero Google Chrome aún ni es el mejor navegador ni es una mera anécdota. Captará rápidamente usuarios y pronto estará compitiendo con los grandes. A partir de ahí, veremos como progresan!

No quiero marcharme sin referirme a un divertido artículo de Moisés (traducción de un artículo en WebAIM) sobre la historia de los navegadores, los distintos motores de renderizado que han ido creando para ser mejores que sus rivales y la evolución que ha tenido lugar en el nombre de agente de usuario de todos ellos a lo largo del tiempo (¡para troncharse!)

Saludos amigos y hasta pronto!

domingo, agosto 3

Gelati per pasare il caldo



De momento no ha sido un verano de sol y playa, ni de setas y panorámicas multicolores, tampoco lo ha sido de lujo y excesos. Ha sido un verano tocado por el sabor agridulce del deber, el toque amargo del sur de francia pero también de la calidez de la piel de mi musa y la alegría de sus tiernas comisuras hábilmente cinceladas en su rosada palidez. Esta vez tocó Florencia, de nuevo, pero con gelato incluido en el menú. Esta vez no se olvidó de mis caprichos en la ciudad más bonita de Italia.

Estoy de vuelta con todos, esperando dejaros de nuevo pronto siempre para poder volver, a espera de un agosto mejor: más radiante, más azul, más relajado y menos 'caldo' (en todo caso cálido, o 'calurós').

Un abrazo y... stay online!

miércoles, julio 9

iPhone 3G

hola amigos, hoy os escribo desde mi iPod touch.

Tengo que reconoceros qué cuesta un poco acostumbrarse a este teclado. Es bastante bueno para SMS, pero para escribir textos largos como este requiere un poco de práctica.

A pesar de ello me está convenciendo para cogerme el nuevo iPhone 3G, que llega a españa el próximo 11 de julio.

Y esto es todo amigos, la próxima entrada des del teclado convencional XD

Más info en la vodeoguía del iPhone

lunes, junio 23

PDO: my next step

Todos los programadores que nos tomamos seriamente nuestro trabajo usamos un framework u otro, bien programado por terceros (prado, mojavi, symphony, cake, 'framework-la-leche', etc.) o a manita, como es mi caso. Está bastante extendido el uso del patrón MVC (Modelo - Vista - Controlador) y por motivos obvios. Este patrón de diseño no es ninguna bala de plata, pero es un buen punto de partida.

Parte de la filosofía del patrón MVC consiste en encapsular el acceso a datos (nuestro DAO - Data Access Object) en la capa Modelo. De esa forma, el Controlador ignora el origen de los datos y el procedimiento de obtenerlos, sólo tiene que pedirlo al Modelo. Esta filosofía permite distribuir código y reutilizarlo de una forma bastante eficiente, accesible y controlada.

En mi caso, la capa Modelo hace uso de ADODB para acceder a los datos, algo que en su día consideré bastante inteligente. ADODB es una librería que nos permite trabajar en un nivel de abstracción sobre la fuente de los datos y trabajar indistintamente con diferentes DBMS (DataBase Management System). Es una buena opción si queremos tener un framework muy versátil, uno que no tenga que sufrir cambio alguno para adaptarlo a distintos requerimientos de software (lo cuál no sólo es deseable sino exigible para una herramienta tan básica de desarrollo).

ADODB es lento en la mayoría de los casos, a pesar de todas sus optimizaciones, y es debido a su propia naturaleza: es una librería PHP, no está integrada al intérprete.

Con la llegada (y parece que al final se va estableciendo) de PHP 5 disponemos de una librería parecida e integrada al intérprete y por este motivo es mucho más rápida: se trata de PDO.

Mi siguiente paso es integrarla al framework pero no me va a resultar fácil:
  • Para empezar debo renunciar a la compatibilidad con PHP 4, y eso significa que tengo que abrir una nueva vía de desarrollo para el framework porque tengo clientes con PHP 4 en sus servidores, así que este nuevo framework no me va a servir en todos los proyectos.

  • PDO me permite capturar todos los datos de una consulta en un array, al igual que ADODB, pero estaría bien aprovechar PDO para incrementar la velocidad y reducir el coste de cada proceso si aprovecho la posibilidad de capturar los resultados con el conocido 'fetch()'.

  • Ese cambio en el modo de trabajar aceleraría los scripts muchísimo porque no sólo estaría usando una librería mucho más rápida sino optimizaríamos el coste en las transacciones.

Ahí se me plantea mi dilema, la relación MV cambia ligeramente.

Digamos que en M ejecutaría la consulta y la capturaríamos para recorrer los resultados. ¿Pero quién recorre los resultados? ¿El Controlador o el Modelo?

Si lo hacemos en el modelo, tengo que tratar los datos en él y esa parte del proceso debería estar en el Controlador que es quién debe saber para qué quiere los datos y qué hacer antes de enviárselos a la capa Vista.

Si lo hago en el Controlador, significa que éste conoce el modo mediante el cuál se accede a los datos y cómo estan estructurados en la base de datos, algo incompatible con la filosofía de este patrón de diseño.

Tengo la opción de crear objetos con métodos dinámicos que capturen el 'RecordSet' y lo recorran, éste sería llamado contínuamente por el Controlador y así podríamos encapsularlo todo un poco más y reutilizarlo... pero eso conlleva más tiempo de proceso y todo lo que habíamos ganado en el uso de PDO se pierde con el coste de la creación de métodos dinámicos.

Le estoy dando vueltas al tema y aún tengo que encontrarle la solución definitiva. ¿Alguien ya ha pasado por esto?

Por cierto, el desarrollo de la rama PHP 4 termina este agosto, así que a ver si los desarrolladores y las empresas de servicios de alojamiento se ponen las pilas que ya vamos para PHP 6.

¡Saludos dragonfálicos!

sábado, junio 21

Table-layout : A wrong straightforward method!

Si sois desarrolladores de páginas web os habréis encontrado con el pequeño (pero determinante) dilema de tener que maquetar la web, de un modo u otro. La interfície de usuario es el 99,99% de una web para el usuario que os visita, el 100% para el diseñador que os pasa el trabajo y menos del 10% del trabajo para una aplicación seria, puramente funcional.

Supongamos por un momento que lo que yo creo es la simple y llana realidad: los proyectos se planifican mal, el presupuesto no es tan elevado como os gustaría y hay que priorizar para cumplir plazos. Admitidlo: la mayoría de vosotros va a sacrificar la exactitud y excelencia del diseño por la perfección de las funcionalidades (y admitámoslo también: no van a ser muy perfectas).

El Cliente 'C' ha aprobado el proyecto y empieza el desarrollo. El programador 'P' tarde o temprano debe encargarse de convertir el diseño en código que, tratado y renderizado, transforme en web, con contenidos generados dinámicamente, lo que antes estaba en formato .fh[0-9], .ai o, a las malas, .psd o, peores, .jpg.

Si el diseño es sencillo, o nulo, no habrá problema. Pero la vida real depara sorpresas: es muy complejo, los datos no estan alineados, hay un montón de motivos, fondos, imágenes y texto que flotan, annexan y superponen de una forma compleja. No, no todo los solucionaremos con capas vertical u horizontalmente alineadas... va a ser peor.

Y ante eso, 'P' se rinde y opta por usar el método a priori más directo: las tablas.

Incluso aquellos que sepan de CSS, terminan rindiéndose por una aparente practicidad. Si me habéis seguido hasta aquí, y habéis empezado a fruncir el ceño... sí, es una aparente practicidad.

Esta opinión, podría generar muchos debates y seguramente terminaríamos pensando exactamente lo mismo que al principio. Al no poder haceros una demostración en vivo, bajo vuestro ojo crítico, es difícil ser contundente. Pero con este y otros artículos pretendo, almenos, haceros dudar y lo haré con obviedades:

Obviedad 1: Las tablas permiten ordenar datos y otra información (caso de la web) saltándose el flujo de renderizado por defecto (de arriba a abajo), permitiendo la ubicación de un sinfín de datos uno al lado de otro (en columnas) en vez de uno debajo del otro (por defecto).

Obviedad 2: Las tablas estan formadas por celdas, todas las celdas de una misma columna deben hacer el mismo ancho y todas las celdas de una misma fila deben hacerlo con el alto.

Obviedad 3:
Existe la posibilidad de hacer celdas que tengan el mismo ancho que una o más columnas de filas anteriores y posteriores, pero coincidiendo en límites con ese número de columnas, y lo mismo con las filas haciendo celdas que su alto se corresponda a más de una fila.

Obviedad 4: Las tablas son cuadrículas perfectas

Obviedad 5: Entre celdas no es posible ubicar contenido sin hacer trampas (y eso ya no es un método directo).

Obviedad 6: Debido a que el diseño difícilmente va a ser tan cuadriculado vamos a tener que trocear el diseño para encajarlo en una estructura rígida y cuadriculada como la que una tabla nos ofrece.

Obviedad 7: conseguir hacer todo el montaje es complicado pero modificarlo es un infierno: un cambio de un solo pixel (la banda esa negra es un poco más alta y el texto tiene que estar un poco más abajo pero esa columna de al lado podría solaparse con la imagen que hay más a la derecha...) puede desencajarnos ¡por completo! la estructura.

Obviedad 8: el código de una tabla es difícil de leer en cuánto el diseño se complica un poco, cuando hace tiempo que has aparcado el desarrollo... bastante molesto.

Obviedad 9: los programas de edición web WYSIWIG (Dreamweaver, Expression, NVU, FrontPage...) no ayudan mucho, cuesta mucho modificar una estructura ya hecha y el programa termina generando código que te destroza la estructura. Al final no sabes ni qué estás tocando ni qué ha pasado para que todo se haya ido al traste.

Obviedad 10: Las alturas o anchuras de las celdas quedan determinadas por múltiples factores: altura o ancho de contenido, ancho o alto establecido en alguna de las celdas cabecera o de la misma columna o hilera... etc. Encontrar el atributo, propiedad o lo que sea que nos impida obtener lo que queremos puede ser un quebradero de cabeza.

Obviedad 11: La dificultad de modificar sus atributos también se aplica al CSS. Varias propiedades de las celdas de una tabla no pueden ser modificadas mediante CSS. Comprobad sino qué frustrado es intentar establer la alineación vertical, el relleno o espaciado entre celdas, entre otras cosas.

Obviedad 12: Las tablas sirven para tabular datos, no para maquetar la página. Para usuarios que usen programas que reproducen con voz los contenidos de una web, la experiencia puede ser perturbadora: puede no tener el más mínimo sentido.

Obviedad 13: La web deja de tener significado semántico en la mayoría de los casos, la maquetación puede habernos obligado a poner frases indivisibles en distintas celdas para que queden como el diseñador había pensado.

Obviedad 14:
La capacidad de cambiar dinámicamente los contenidos de la web con Ajax puede haberse visto muy mermada, por la complejidad de la estructura.

Obviedad 15: ¿Cambia el diseño? ¡Cambia tu código! ... ¡TOTALMENTE!

Compárame eso a:

C-oye, ese fondo no podría estar un poquito más arriba de lo que está ahora.
P-Sí, claro: background-position left -1px;
C-¿Y esa caja? La podemos superponer sobre la otra?
P-Por supuesto: position:absolute;margin-left:-20px;


por poner posibles situaciones.

LAS TABLAS SÓLO SON ÚTILES PARA TABULAR DATOS. POR LO DEMÁS, SÓLO PERMITEN UNA COSA: PONER COSAS EN COLUMNAS ADEMÁS DE UNA DEBAJO DE LA OTRA...¡PERO ESTO TAMBIÉN LO HACES CON CSS! ¡Y CON MUCHAS MÁS OPCIONES!


Las webs son mucho más complejas que cosas una al lado de la otra o debajo de la otra... para esto CSS es mucho más flexible.

Sigo sin convencerte, ¿verdad? Crees que se va más rápido. Eso es sencillamente porque no te has acostumbrado a utilizar CSS para estos casos. Puedo asegurarte que suficientes conocimientos de CSS se va más rápido, se reducen horas de desarrollo y tienes muchas más opciones. Las tablas son muy limitadas, y no nos alejan del desarrollo de hace 10 años.

¿Que no? proponed retos...

jueves, mayo 22

Vida real : capítulo II

Tras derrochar un montón de horas en reuniones con un posible cliente, de redactar un avance, un ante-proyecto, el proyecto definitivo, documentación variada más los respectivos correos electrónicos, después de gastarte en llamadas de teléfono todo lo que podrías gastar en alcohol para las penas, después de meses de creer que lo tienes todo atado y bien convencido... el cliente termina anulándolo todo en el último momento sin apenas explicación.

El suicidio no es una opción. Levanta la cabeza hijo y anda un poco más allá a ver si encuentras otro pozo de agua en medio del desierto. Sí, sí, lo otro era un espejismo, sólo estaba en tu mente... Anda y cómete una galletita, no llores.