format internet:

…please wait (48% completed)…

Archive for the ‘internet’ Category

Los problemas del desarrollo web en España resumidos en senado.es

Posted by javier ramirez on November 12, 2012

disclaimer: he escrito este artículo después de navegar quince minutos por la web del Senado. No pretende ser un análisis exhaustivo de sus deficiencias. La mayor parte de los desastres que describo se corresponden a la sección de la web y del buscador (responsabilidad de VASS y GFI). La parte del pequeño Senado correspondiente a Ibermatica está algo mejor resuelta, aunque también presenta deficiencias.

Vaya por delante que 500,000 euros para una web compleja no me parece un precio excesivo. Pagar alrededor de 100,000 euros anuales por desarrollador es algo que entra dentro de lo normal, por lo que una web compleja que necesite de cinco desarrolladores durante un año va a estar en ese rango de precio. Si además la web incluye mantenimiento o necesita de cosas sofisticadas como gestión de documentos o un canal de streaming de video, el coste es normal que suba. Si la oferta también incluye los gastos de alojamiento y mantenimiento, me puede llegar a parecer incluso un precio bastante ajustado.

¿He dicho más de 100,000 euros por desarrollador al año? Sí. Exactamente. Es lo que cuesta contratar un buen servicio. Unos 50 euros la hora. De hecho, es bastante habitual encontrar precios por encima de ese rango, aunque también es habitual encontrar precios bastante más baratos. No conozco a ninguna consultora de las grandes en España que cobre ese dinero por sus desarrolladores, sino que el rango está más bien alrededor de los 20 euros (siempre se colocan perfiles de “más nivel” como jefes de proyecto o arquitectos que sí se venden por 50 euros la hora o incluso más caros, pero el grueso del equipo se factura a precio de saldo).

Cuando haces las cuentas, le quitas la seguridad social, el beneficio de la empresa, una pequeña reserva por trabajador para posibles indemnizaciones e imprevistos… nos queda que un desarrollador web que trabaje en una consultora, difícilmente va a poder cobrar más de 20000-25000 euros. Y si quiere ganar más, tendrá que dejar de desarrollar software y dedicarse a hacer tareas de gestión (arquitecto, jefe de equipo…) o comerciales (preventa, evangelista…). No hay nada malo en hacer tareas de gestión o comerciales, pero sí hay un problema en dejar que la gente que está construyendo tu software sea gente con poca experiencia o con una motivación baja. Por muy buenos jefes que tengas, si los desarrolladores no entienden el contexto de lo que están haciendo, el resultado va a ser subóptimo en el mejor de los casos, o desastroso como en el caso de la web del Senado.

El problema en España es que pensamos que cualquiera puede hacer una web. Como pintar una página HTML es lo más sencillo del mundo, tiramos a lo más barato y nos ahorramos un dinero pensando lo listos que somos. Y como no queremos pagar el dinero que vale, cuando la gente ya ha aprendido y tiene experiencia, se pasa a puestos de gestión donde van a poder ganar más dinero que le permita lujos tales como independizarse o incluso tener un hijo, con lo que los desarrollos los acaban haciendo siempre o la gente que acaba de terminar la universidad o los refugiados de otras carreras que se meten en la informática porque les dan un curso y con eso ya pueden hacer una web.

Hay más problemas que ese, por supuesto. Como el hecho de que para presentar una oferta a una administración pública te pidan unas condiciones imposibles de cumplir para cualquier PYME, o que a las grandes consultoras no les duela a veces hacer ofertas aún perdiendo dinero porque saben que ellas se lo pueden permitir.

El resultado de todo esto, es que las Administraciones públicas y las empresas grandes en España, con honrosas excepciones, tienen unas webs que dan vergüenza porque el desarrollo se lo han hecho estas empresas en las que la gente que realmente sabe está en puestos de gestión, y los pobres a los que les toca hacer el desarrollo hacen lo que pueden con los plazos imposibles que les piden, la poca experiencia que tienen, y las condiciones laborales de risa que les ofrecen.

Hablar es gratis, me diréis.. queremos pruebas.. no hay problema. Con la chapuza de web del Senado que se ha lanzado hoy veréis muy fácilmente de lo que os hablo. Independientemente de que el precio no me parece desorbitado, la web me parece desastrosa.

A simple vista, es una página web que funciona. El diseño no es ni mejor ni peor que el de muchas otras webs que hay por ahí. A mí personalmente se me antoja algo viejo para una web moderna, y el tamaño de letra me parece minúsculo, considerando especialmente que la web se autoproclama accesible, pero no soy experto en usabilidad así que no me quiero meter en esa guerra. En la guerra que sí me voy a meter es en la de las cosas que en un vistazo rápido están mal, aunque a simple vista un no profesional no se daría cuenta.

Cómo llegar hasta la página

Básicamente hay cuatro formas de llegar a una web. O le das a un enlace que alguien te ha pasado (facebook, twitter…), o escribes directamente la dirección de la web en tu browser, o la buscas en google (una gran parte de la gente siempre navega usando el buscador, no entienden que existe la barra de navegación del browser) o vas por un bookmark.

De esas cuatro opciones, TRES están rotas en este preciso momento. Si uno quiere escribir “senado.es” en su navegador, verá cómo le dice “página no encontrada” en lugar de mostrarle la home. Para poderla ver, es necesario escribir www.senado.es. Este problema es de primero de web, y es muy simple de resolver. Pero da una primera impresión de las prisas o la falta de cariño en este desarrollo.

Un problema mucho más grave. A día de hoy (aunque no por mucho tiempo) hay más de dos millones de páginas indexadas en google para el sitio del senado. Esto es bueno, de hecho es muy bueno. El problema es que esos dos millones son para la versión antigua de la web. En la versión nueva se ha cambiado el esquema de URLs, con lo que ahora todos los resultados que da google, excepto la home, han dejado de existir. Así como te lo cuento. El excelente trabajo de indexación de más de dos millones de páginas que YA existían en google, han desaparecido de la noche a la mañana porque a nadie se le ha ocurrido hacer un módulo que convierta de las URLs antiguas a las nuevas. Yo esto lo he programado antes en unos cuantos sitios y es un trabajo de unas pocas horas. El impacto es brutal.

Si alguien quiere probarlo es bien fácil. Ejecutas en google la búsqueda

site:senado.es

Y pinchas en cualquier resultado (excepto la home). Página no encontrada. Ajá.. bien. Por cierto, ya que hemos llegado a “página no encontrada”, intenta usar cualquiera de los enlaces del menú superior (cambio de idioma, contactar…) o del pie de página. ¿No puedes? Ya, ni yo. Otro detalle de primero de web que también se les ha pasado.

Obviamente si tenías un bookmark a la web, tampoco te va a funcionar por el mismo problema. Han cambiado las URLs, pero nadie se ha ocupado de redigirir las antiguas. Todo muy útil para la gente que, como yo, a veces se guarda enlaces a documentos para poderlos consultar más adelante sin buscarlos de nuevo.

Calidad del código de la página

Una vez llegamos a la página, lo primero que he hecho ha sido pasar el validador del w3c. Es una cosa que me gusta hacer siempre en las páginas porque me da una cierta medida de la calidad. Ojo, hay que tomarse los validadores como lo que son y no ser demasiado estrictos. Algunos problemas de validación son menos graves que otros y en algunos casos es imposible no tener algún error poco grave, como por ejemplo atributos extras.

En el caso de la web del senado, hay 88 errores y 44 avisos en la home. De esos errores unos cuantos son graves, como que hay input fields en zonas no permitidas (que puede hacer que algunos browsers no puedan usar los formularios) o que hay IDs duplicados (que puede complicar el desarrollo en el futuro, ya que cualquier desarrollador cuando programa una web espera que los IDs sean únicos, tal y como manda el estándar).

Si examinamos con más detalle el código fuente de la web, vemos que no se han tomado demasiadas precauciones para reducir el número de peticiones que hace la página, incluyendo al menos 12 ficheros en la cabecera. Cuando se programa un sitio en el que se espera mucho tráfico, esto debería estar mucho mejor resuelto. Además, si realmente va a haber mucho tráfico esperaría usar un CDN o cuando menos un dominio separado para los ficheros estáticos, de manera que no tenga que malgastar tráfico enviando las cookies para cada petición separada. Ya que estamos, utilizar varios subdominios estáticos me ayuda a enviar más peticiones en paralelo, haciendo que la página cargue más rápida.

Además, siguiendo con el código fuente de la página, en muchas de las páginas internas aparece javascript y css mezclado con el código HTML, lo que hace que las páginas ocupen más de lo que deberían (es decir, malgastan tráfico), hace que vayan más lentas y complica enormemente el mantenimiento en el futuro y la posibilidad de reusar código en otras partes de la web. Para ser justos, esta parte de código mezclado la he visto solo en el buscador, que es responsabilidad de GFI. Los desaguisados anteriores eran de la parte correspondiente a VASS.

Indexación en buscadores

Una parte importantísima del tráfico de un sitio llega por los buscadores. Cuando yo quiero informarme sobre algo, normalmente le pregunto a google, y luego sigo los enlaces. Me parece vital que una web en la que hay mucho contenido esté bien construída para que esos contenidos aparezcan indexados en Google/Bing y similares.

Ya hemos visto que el trabajo de indexación hecho hasta ahora con la web antigua se ha roto por completo con la nueva versión, pero ¿Está preparada para indexar bien los nuevos contenidos?

Para que una web indexe bien ha de tener estas consideraciones:

  • El código debe ser válido
  • Debe hacer buen uso de los elementos “title”, “description” y “h1”
  • La estructura ha de ser lo más semántica posible, añadiendo meta información extendida en los casos en los que se pueda (por ejemplo en el caso de las comparecencias, se puede añadir información del evento, o en el de los senadores información sobre la persona)
  • Los enlaces, las imágenes y los videos han de tener su “anchor text” o su “alt” bien definido pensando en los usuarios y, por tanto, en indexar bien
  • En un sitio multi idioma, hay que diferenciar a nivel de URL los diferentes idiomas y hay que proporcionar los enlaces canonical y alternate adecuados, para que cuando un usuario busca una página le aparezca en su buscador en el idioma más relevante para él
  • Si el sitio tiene mucho contenido, hay que proporcionar un fichero de sitemap en el que se le indica al buscador qué páginas lo componen
  • La estructura de las URLs debe ser clara

De todas estas consideraciones, la web del senado no cumple NI UNA SOLA. No solamente eso, sino que en su fichero robots.txt a día de hoy aparece una directiva en la que explícitamente se le pide a todos los buscadores que no indexen ninguna página del site, Ninguna en absoluto. Esto significa que cualquiera que busque información sobre el Senado en google va a encontrar cero referencias.

Móvil

En un mundo en el que la gente comparte enlaces via twitter/facebook/email y en el que cada vez más estos tres medios se leen en un móvil o en una tableta, me parece razonable pedir que al menos las páginas de aterrizaje estén optimizadas para estos dispositivos. No hablo de que el sitio completo sea usable por móvil, porque eso puede añadir un coste considerable, pero sí que las páginas susceptibles de ser enlazadas lo contemplen.

De hecho, Chus Pastor, la directora de Administración Pública de VASS, comentó que la web se vería en cualquier dispositivo.

Chus, ¿Has probado a verla en un móvil? Mírala tú, que a mí me da la risa.

Conclusión

Hacer una web es mucho más que saber escribir HTML y ponerle colores. Obviamente esas dos cosas son básicas, pero hay muchísimo más que has de tener en cuenta si tienes que hacerla, y aprender todo eso requiere tiempo y mucha experiencia.

¿Empezamos a ver por qué no es bueno que tu web la haga gente a la que le pagas poco dinero y, que por lo tanto, tiene poca experiencia? Ellos hacen lo mejor que saben, pero desafortunadamente no es suficiente para un sitio complejo.

Si quieres hacer una buena web, no solamente algo que “dé el pego” cuando la muestras en el browser, entonces necesitas gente que sepa lo que está haciendo. Y la informática tal cual se entiende en España provoca que esa gente abandone su carrera como desarrollador porque los sueldos y las condiciones son incompatibles con una vida digna.

Afortunadamente, hay vida más allá de las grandes consultoras donde el mundo es diferente y donde la gente se siente orgullosa de lo que hace. El reto ahora es que los grandes clientes se den cuenta de que les están timando y de que deberían exigir mucho más por su dinero. Y eso solo se conseguirá en la medida de que haya más sensibilidad hacia el trabajo de programador y más conocimiento de lo que aporta en un proyecto.

¿Son 500,000 euros muchos para hacer la web del Senado? No lo creo. Pero para el resultado obtenido, me parece un robo a mano armada.

Advertisement

Posted in development, internet, javier ramirez, SEO | Tagged: , , , , | 147 Comments »

Yo soy el programador perdido

Posted by javier ramirez on July 3, 2012

disclaimer for my international readers: this post is part of an ongoing conversation between different Spanish actors, so excuse my French ;)

Hay que ver la de trabajo que me dáis. Os da por escribir un par de posts, llega el otro y os reta a que lo debatáis, y a lo que me quiero dar cuenta me encuentro con que tengo que escribir un post para explicar dos cosas:

a) que en España hay gente capaz de liderar un proyecto con base informática tan buena como el que más
b) que es posible encontrarlos

Como me ha salido un post enorme, os pongo titulitos para que nos os perdáis. Que no se diga que no os cuido

¿ Es fácil encontrarme ?
=========================

Lo primero que he hecho al enterarme de que era tan difícil encontrar gente como yo, ha sido lógicamente preocuparme por mi SEO y me he ido a ver qué opina google.

Se ve que google me engaña. Las estadísticas de mi página personal en google webmaster tools dicen que en el último mes ha aparecido 2500 veces en resultados de búsqueda. La gente me
encuentra buscando cosas como “web development london”, “ruby uk”, “web developer london”, “ruby on rails developer” o “web developer uk”. Incluso alguien me ha encontrado buscando “bachata logo”. Los caminos de google a veces son inescrutables, pero parece que si alguien quiere encontrar un desarrollador web/ruby en Londres, lo tiene fácil para encontrarme. Antes de mudarme aquí, vivía en Madrid y los resultados de google eran equivalentes, pero para el mercado español.

Mi página personal está, como buena cuchara de palo en casa del herrero, muy descuidada, siendo mi presencia online mucho mayor en mi twitter, mi blog, las presentaciones que tengo colgadas en slideshare, mi canal de vimeo, o mi repositorio de (escaso) código en github. Se diría que no soy tan difícil de encontrar.

Y si lo tuyo no es internet, sino que es el mundo más físico, en el último año he dado charlas en tres o cuatro eventos, y he participado como público en varios otros. En Madrid, en Londres y en otras ciudades. Algunas de estas charlas eran internacionales, en inglés. Se ve que a pesar de ser español hay gente de otros países que piensa que puedo aportarles cosas a ellos que son de países tan avanzados con sus hordas de programadores talentosos.

Al parecer hay más gente como yo porque en ASPgems, de la que soy CTO, cada vez que hemos necesitado incorporar gente al equipo, hemos tenido la suerte de encontrarla en muy poquitos días. De hecho por lo general apenas necesitamos descartar gente en entrevistas porque al parecer atraemos al tipo de gente que nos interesa y tenemos suficientes referencias de los candidatos como para no tener que andar perdiendo el tiempo en test psicotécnicos o en preguntar cuál es su mayor virtud.

Pero, ¿soy tan bueno como los programadores de USA o UK?
=========================================================

Habiendo quedado medio claro que los programadores no nos escondemos mucho y que alguien con un cierto interés lo tiene fácil para encontrarnos, parecería que afortunadamente el problema no es que yo no exista, sino que quien me busca quizás ande más perdido que el programador del título del post que lo empezó todo.

Ahora contaré posibles sitios donde buscar gente más allá de los tópicos, pero antes dejadme que cuente así rápido por qué creo que soy el programador perdido del que hablaba Enrique Dans y por qué sí creo que esa rara avis existe en España.

Tengo algunas pruebas que confirman que soy al menos tan bueno como los programadores que hay en Estados Unidos o Reino Unido (los dos países mencionados en el mensaje original)

a) frecuentemente recibo ofertas de esos dos países para incorporarme a sus equipos.Algunas de las ofertas vienen de recruiters que, angelicos, no saben ni por dónde les da el aire y que contratarían a Wally  solo por llevarse la comisión. Pero muchas otras ofertas son de gente que me conoce directamente o por referencia y que están interesados en contratarme a mí, un programador español que no existe en un mundo lleno de peligros, para su empresa.
b) gente con la que he trabajado o a la que he tenido cerca está felizmente trabajando para empresas de esas que molan como github, google, microsoft, paypal, heroku, o engine yard
c) he vivido en Nueva York y en Londres y veo lo que se mueve. Complejos cero

¿Qué hay que hacer para conseguir contratarme?
==========================================

Antes de que te cuente cómo puedes contratarme a mí o a otra gente como yo, asegúrate de estar seguro de lo que deseas. Como en todas las profesiones creativas (y aquí incluyo al equipo de ventas) trabajar con un profesional puede ser muy divertido, inspirador a veces; pero estresante y frustrante si es tu primera vez.

El artículo de @edans dice “En España, las personas de verdad capaces de convertirse en el alma de un proyecto y transformar su esencia e ideas en código, esos participantes esenciales a los que se entregan acciones para asegurar que permanecen en él, prácticamente no existen

Si voy a ser el alma de tu proyecto, convierto su esencia en código y me consideras un participiante esencial, olvídate de cosas como “el que paga manda”, “el cliente siempre tiene la razón” o “esto me lo hacen en patolandia por la mitad de precio”.

Si trabajas conmigo, prepárate para que te diga mil veces que estás equivocado, para que te rebata todas las cosas con las que no esté de acuerdo, para aceptar que algunas cosas simplemente “son así”, para que cometa errores y no pase nada porque al fin y al cabo lanzar un proyecto es lo que tiene, para que los resultados no sean exactamente como esperabas pero se le parezcan, y para muchas otras cosas a las que probablemente no estés acostumbrado.

A cambio, la flexibilidad funcionará en los dos sentidos: renunciaré a veces a la mejor solución técnica porque es importante salir en una fecha determinada o porque resulta que es super importante cambiar algo porque hay un inversor/partner que se ha encaprichado con eso, me preocuparé de cómo va tu analítica y de si los usuarios tienen algún problema usando el site, y te daré herramientas para que puedas desarrollar el área de negocio tanto como sea posible. No pasa nada, ya hemos jugado antes a esto y sabemos de qué va. No hace falta que me cuentes lo difícil que es tener una empresa; yo ya voy por mi segunda.

Si acepto estar en tu proyecto, el proyecto pasa a ser nuestro. Y me da igual que yo sea contratado, subcontratado, socio, freelance, contribuidor desinteresado en un proyecto open source o cualquier modalidad que se te ocurra. Si decido dedicar mi tiempo y mi esfuerzo a un proyecto, ese proyecto pasa a ser también mío. No estoy hablando en términos económicos, sino en términos de “compromiso emocional”. Si no me dejas que me sienta parte del proyecto, no creo que me quede mucho tiempo alrededor.

Ah, y búscame amiguitos que sean tan buenos como yo.. a ver si vas a pretender que sea el único que sabe y me apañe con cinco becarios encontrados por infojobs. A la gente buena le gusta rodearse de gente buena. Y le gusta tener su tiempo para sus cosas y compartir lo que sabe y aprender de otros y muchas otras cosas que ya te irás dando cuenta.. mantén una mentalidad abierta.

¿sigues queriendo encontrarme? perfecto.. te cuento cómo

Sí, quiero. ¿Dónde te encuentro? 
==========================

Estoy trabajando, gracias. ¿No te pensarás que un programador así tiene problemas para encontrar un buen trabajo, no? Entonces.. ¿qué haces buscando en infojobs? Es posible que ocasionalmente haya alguien bueno trabajando listado ahí (con un cv de los años 80), pero yo a día de hoy no conozco a nadie que encaje en la definición de buen programador que esté desempleado en contra de su voluntad. Ha pasado mucho desde el crash de las punto com; esto no es 2001 y nadie se acuerda de Terra o Teknoland. Infojobs no te va a ayudar a buscar el profesional que necesitas.

Hay gente buena trabajando en infinidad de sitios. Leyendo los comentarios de la gente que responde a estos posts parecería que solo hay vida inteligente en las empresas pequeñas, los freelances o las startups con nombres de dominio super guapos. Es verdad, en algunos de esos sitios hay gente buena (y gente apestosa, como en todas partes). Sin ir más lejos conozco gente excepcional en empresas tan denostadas como Indra. Yo mismo antes de montar mi antigua empresa, abandonarla e irme a mi empresa actual, pasé algún tiempo trabajando en empresas de servicios en las que hay gente tan buena como en cualquier otra.

Lo que pasa es que esa gente ya no está trabajando de programador porque no les dejan. Están en puestos de preventa, I+D, jefes de proyecto, arquitecto software, evangelizador, developer advocate.. lo que pone en la tarjeta es distinto, pero la pasión por un buen reto es la misma. No dejes que los prejuicios te hagan creer que no hay gente buena en las empresas grandes. Solo es que están más escondidos detrás de sus corbatas ;)

Entiendo que, a no ser que tengas contactos, es difícil ir empresa por empresa y buscar a la gente buena. Tengo buenas noticias para ti. A la gente buena le gusta estar al día. A algunos de ellos incluso les gusta relacionarse con otra gente de vez en cuando (a otros les gustaría, pero tienen menos tiempo). Los sitios más obvios para encontrar gente a la que le gusta su trabajo son las listas, grupos y foros de internet. Lo bonito de esto, es que TODOS los grupos y listas de correo aparecen en google. Solamente necesitas saber lo que buscas.

Si necesitas hacer un proyecto web, las tecnologías más habituales a día de hoy son Ruby on Rails, Javascript, PHP/Drupal y Python/Django. Hay otras tecnologías, pero en una startup moderna lo más probable es que tu proyecto sea en Ruby on Rails o PHP y siempre con parte de JavaScript. Ahora vete a google y busca la lista de correo de esa tecnología en tu país. O mejor todavía, busca el grupo de gente que se junta en tu ciudad. Vete a google y busca “Grupo de Ruby on Rails en Madrid”. Envía un correo a la lista o acude a la siguiente reunión y cuéntales tu problema. Si la tecnología no es la más adecuada seguramente puedan orientarte hacia otra mejor.

Solo ten en cuenta que estás hablando con gente inteligente y que no les va a gustar si mandas mails del tipo “empresa multinacional líder busca…” o “proyecto super secreto que solo te contaré tras firmar un NDA”. Esos mails van al mismo sitio al que van los de “compre v1agra” o “cambia tu contraseña de paypa1”. Y sigue la famosa norma de no vestirte ni mejor ni peor que tu público. Si vas a una reunión de gente que va en camiseta, no vayas con gemelos o será más difícil que se te acerquen. ¿O acaso te pensabas que los prejuicios son siempre de la gente con traje a la que va vestida de perroflauta? :p

Si aún así no encuentras al programador que buscas, ponte en contacto conmigo que te digo yo dónde lo puedes buscar.

Y si en vez de un programador, lo que quieres es una empresa que sea tu socio tecnológico y te lleve el desarrollo, mándale un mail a nuestro CEO (el señor grande que salía hablando en el debate10), que estará encantado de echarte una mano.. y yo también.

Posted in aspgems, debate10, development, internet, javier ramirez, off topic | 61 Comments »

SEO for developers

Posted by javier ramirez on March 10, 2010

As a web developer, my work involves much more than just coding; many times I find myself covering topics such as user experience, scalability, reliability of the system, or metrics and analytics to track the acceptance of a site.

SEO is left many times on the hands of the marketing team, but there are many technical aspects that are important in order to make a site appealing both for visitors and searchbots. Since web technologies (and search engines) evolve quickly, if you want to have a good site you need to keep posted about the latest developments. Sadly, there are a lots of materials based on outdated information and there are many myths and legends around the topic

I have been following closely the status of web crawling and indexing for some years, and we have been applying with success many of the practices I’ve learned to improve the sites of some clients. None of these practices involved links from external sites or bought traffic, just a better structure and changes of the contents and the sites’ internals.

Since we want to follow these practices in all the projects we are taking, I decided to prepare an internal training session for the ASPgems’ development team.

Here are the slides for my presentation. Even if they are not as good without the explanation (sorry, no video this time), I hope you’ll find them useful. UPDATE: video -in Spanish- has been uploaded to the media page of my blog.

This material is published under a Creative Commons NonCommercial-Attribution-ShareAlike license 2.5

If you find it interesting or if you are going to use it for any purposes, I’d appreciate an e-mail to jramirez@formatinternet.com

Posted in development, internet, javier ramirez, SEO, sites | Tagged: , , , , , | 10 Comments »

IE cache for Ajax requests

Posted by javier ramirez on January 14, 2010

A few days ago I ran into an issue that is now obvious but took me a while to figure out. I was programming a chat client and everything was working fine in Firefox and Chrome, but when I tested it on IE (6 and 8) things were not looking so good.

This chat is following the polling pattern, issuing an Ajax call every three seconds to check for any updates and receiving a JSON array with the pending messages, if any. Using prototype.js the code to call the javascript function every three seconds is this

new PeriodicalExecuter(Aspchat.chatRemotePoll, 3);

On IE the chat was initialized properly, the first call to the remote server was working fine, but the periodical poller was not issuing any further calls. At first I thought the problem was on PeriodicalExecuter, but after a bit of debugging I could see “Aspchat.chatRemotePoll” was being called, but the Ajax call inside was apparently ignored.

To make things more interesting, I could see some other Ajax requests were working fine (for example, the one to send messages or to update the user list).

Comparing the requests that were successfully sent with the ones that were ignored, I could see the difference. In the working requests I was using POST (the default when using prototype) but in the ignored calls I was using GET.

Once I saw this, it was easy to diagnose what the problem was. IE was caching the GET requests, even when using AJAX. To be honest, this time I will not even blame IE, since I understand a GET request is subject to cache. In this case, I would even say I prefer the IE behaviour over that of Firefox and Chrome.

There are basically three things you can do to prevent this kind of behaviour:

  • The easy way out would be to convert my GET request to a POST one. Alas, I didn’t want to do it because in this case I was being RESTful and I was using the same URL for two different actions. When calling “/aspchat/messages” via GET I’m asking for new messages, but when calling via POST I’m sending a new message to the channel.
  • Set HTTP headers to control client cache
  • Make the request unique by adding a timestamp (or similar) to the URL

The solution I like the best is the one with HTTP headers, so I just went to my poller action (which by the way is managed via a Rails metal middleware) and added the Cache-Control: no-cache header. Just to be really sure, I also added the timestamp for extra security.

The prototype for the Ajax call with the timestamp looks like this

new Ajax.Request('/aspchat/messages', {
           parameters: {timestamp:new Date().getTime()}, //we need this to avoid IE caching of the AJAX get
           method: 'get',
           onSuccess: function(transport){
               Aspchat.displayChatMessages(eval(transport.responseText));  //pass the JSON array to displayChatMessages
                         }
       });

As an extra ball, you can see how I’m using the onSuccess callback to interpret the JSON I’m receiving from the server.

Now you cannot say you didn’t know your AJAX requests could be cached. Let’s be careful out there.

Posted in 1771, development, internet, javier ramirez, ruby on rails | Tagged: , , , , , | 15 Comments »

Pasting code into vi

Posted by javier ramirez on October 5, 2009

Every time I try to paste a big chunk of code into vi, it gets all messed up because of the autoindent. Each line gets indented taking the previous one as a reference, so when I try to paste something like..


global $wp_query;
parse_str($args, $r);
if (!isset($r['current'])) $r['current'] = -1;
if (!isset($r['show_all_parents'])) $r['show_all_parents'] = 0;
if (!isset($r['show_root'])) $r['show_root'] = 0;
if (!isset($r['list_tag'])) $r['show_root'] = 1;

..what I really get is..


global $wp_query;
  parse_str($args, $r);
    if (!isset($r['current'])) $r['current'] = -1;
      if (!isset($r['show_all_parents'])) $r['show_all_parents'] = 0;
        if (!isset($r['show_root'])) $r['show_root'] = 0;
          if (!isset($r['list_tag'])) $r['show_root'] = 1;

..and that’s no good. Fortunately the solution is really simple. Just enter command mode and write

:set paste

Now you can paste in all its glory. When you are done, you can get back to normal with

:set nopaste

So now you don’t have any excuses left to write original code. Get out there and copy the whole internet before I format it!!!

Posted in development, internet, javier ramirez, ubuntu | 10 Comments »

it’s not the framework, it’s you

Posted by javier ramirez on July 21, 2009

I’m getting tired already of the hype about Ruby on Rails and how it is better than any other framework past, present or future.

Sure Rails is a cute piece of software, and Ruby is a gorgeous language (supposing you are into programming languages, that is), but if you take a critical look at Rails, you could just say it’s another MVC framework.. Big deal.. And with some coupling issues between the layers too, which are fortunately being targeted on Rails 3.

Moreover, if you take a look at some of its components they could frankly be better. ActiveRecord, for example, is a wrapper ORM, which is implicitly tying you to the physical database layer, with one class per table, as opposed to a mapper ORM such as DataMapper or Hibernate. And the principle of least surprise is kind of a joke when it comes to some of the ActionView helpers and the parameters you have to pass along.

Still, as we like to say around here “Ruby on Rails mola infinito”, and it’s right now my favourite framework for non trivial web applications.

So.. what makes this framework so special? Is it only the absence of configuration and the sensible defaults? Would we sell ourselves for a couple of parlor tricks like those? Surely not.. specially with so many frameworks providing already sensible defaults. Come on, even in Java you can kind of forget about writing so much XML code if you make proper use of annotations and the like. No, it has to be something else.

Ruby on Rails has something that transcends the framework itself. It has you. The Mighty Developer. The Early Adopter. The Status Quo Challenger. The so-called Community —whatever that means.

Bottom line is, when I get together with people working with Rails, they are always in search of the holy grail of web development —or the nearest tavern, whatever comes first.. you have to love that kind of pragmatism. We like to break our assumptions, to learn new things and forget about the ones we already know.

We embrace Rails *today* but we are willing to embrace any other tool as long as we like it better. Do you remember the months before the Merb-Rails love affair? Half the Rails developers I know were already making eyes at Merb without the slightest hint of shame.

And by challenging the system, we are obliged to keep learning… and to find new ways to build the web. And instead of trying to make a carbon copy of what we did before, we like to start anew, because that’s where the fun is.

Sure you can argue this attitude is not the exclusive property of the Rails community. And I would second you on that based on theory.. but in practice, I have seen other some other communities lack this need of challenging. Maybe it’s because they have maturity models and certifications and black belts and whatnot…. And maybe having so many constraints is killing creativity; but fact is in some environments trying to take a step forward is seen as something odd, not desirable.

Rails will pass —or not— but as long as we keep alive the spirit of embracing change, we are entitled to be on the fun side of web development.

So, if you ask me, that’s the secret ingredient of Rails. Sure the language and the framework are cool, but the real power of Ruby on Rails is you.. and me.

update: please read the comments, since I was a bit ambiguous in the post and some points needed further explanation :)

Posted in internet, javier ramirez, madrid, ruby, ruby on rails | Tagged: , , , , , | 10 Comments »

it’s the end of the e-world as we know it

Posted by javier ramirez on July 7, 2009

Five years

I’ve been working for companies that didn’t last for so long. I’ve never been working in a company for so long come to think of it ;). I had best friends that didn’t last for so long either and I’ve seen plenty of marriages finishing much earlier than that.

Living on the world we live, it’s hard to remember exactly how it was five years ago. I’d say I was still using a landline for internet access. And I was sharing the 54K connection using a proxy.. how uncool is that? ;)

A bit over five years ago, gmail was launched.. More than five years later, gmail is finally removing the “beta” tag.

http://googleblog.blogspot.com/2009/07/google-apps-is-out-of-beta-yes-really.html

And I feel fine

Posted in internet, javier ramirez | Tagged: , , | Leave a Comment »

Speaking about JRuby on Rails at the Sun Open Communities Forum

Posted by javier ramirez on June 9, 2009

I’ve been invited to speak about JRuby on Rails at the Sun Open Communities Forum. This event is the evolution of the former editions of OpenJavaDay/OpenSolarisDay, revamped to include more Open Source communities.

Apart from the predictable “all-things-java” sessions, this year there are some interesting labs and talks about MySQL Scalability, REST, AJAX, the cloud, development frameworks and different languages running on the JVM.

Most of the talks, including mine, will be delivered in Spanish, but there will be some in English too.

My session will be

JRuby on Rails. Ruby on Rails on the JVM

And the excerpt I’ve sent for the talk goes something like this

Ruby is a dynamic programming language with a focus on simplicity and productivity. Ruby on Rails is a web framework optimized for programmer happiness and sustainable productivity. The JVM is one of the world’s most heavily-optimized pieces of software. The combination of these three elements provides a superb platform for building web applications.

In my session I will explain the highlights of Ruby, how Ruby on Rails has changed the rules of web development, and how JRuby allows for the integration of Ruby (on Rails) and Java.

Inscription is free and if you cannot attend, there will be live streaming as well. Notice you also have to inscribe (checking the “Lo seguiré por internet” radio button) if you want to watch the streaming.

Posted in conferences, development, internet, javier ramirez, jruby, madrid, madridonrails, ruby, ruby on rails | 1 Comment »

UTF-8 al fin se consolida como el encoding líder en la web

Posted by javier ramirez on May 5, 2008

Veo en el blog de google que al fin UTF-8 es el encoding más usado en la web. Más que ASCII, más que ISO-8859-XXX, y muchísimo más que SJIS o GBXXXX (esto me ha sorprendido bastante).

Parece que al fin se va decantando hacia UTF-8 la balanza del encoding, a pesar del inconveniente que para algunos idiomas supone usar Unicode (un carácter en Japonés, Coreano o Chino ocupa tres bytes en UTF-8, mientras que un carácter en Inglés/ASCII ocupa solo uno, por lo que se necesita tres veces más espacio de almacenamiento y ancho de banda).

Sin duda una buena noticia en el complicado y semi-artesanal mundo de la internacionalización de aplicaciones.


encoding trends according to google

searchwords: UTF-8, encoding, google, i18n, javier ramirez

Posted in development, internet, javier ramirez | Tagged: , , , , , | Leave a Comment »

madrid-rb el grupo de ruby (y ruby on rails) de madrid

Posted by javier ramirez on April 22, 2008

Después de unos meses de silencio por overflow de actividades extraescolares, voy a intentar retomar el blog… aunque veremos lo que dura porque dentro de un par de días empiezo a dar clases otra vez.

Aprovecho la ocasión para anunciar la creación de madrid-rb, el grupo de ruby de madrid. Queremos organizarnos un poco y retomar las quedadas que se hacían hace tiempo, pero dándoles un carácter mensual. En concreto el último jueves de cada mes.

La idea es vernos, hacer comunidad, buscar puntos de encuentro comunes, dar alguna charlita ligera, juntarnos para hackear un poco y quizás crear alguna gema o algún plugin… y usarlo como excusa para salir un jueves al mes :p

La primera cita es este mismo jueves, a las 19:30, en el Starbucks de la calle Génova 4 en madrid.

El grupo se está organizando a través de este grupo de google. Además también tenemos un grupo creado en working with rails.

Y, lo anunciaré en la quedada del jueves, pero lo voy dejando ya por aquí, me han aprobado un proyecto en rubyforge para que podamos dejar el código que vayamos haciendo. Como puedes subir tus páginas estáticas y rubyforge mola, llevo idea de proponerlo para subir la home del grupo ahí.

Si no quieres perderte ninguna cita, hay disponible un calendario al que te puedes suscribir.

searchwords: madridrb, madrid, quedada, rubyforge, google groups

Posted in conferences, development, internet, javier ramirez, madrid, madridrb, ruby, ruby on rails | Tagged: , , , | 1 Comment »