Ha llegado MavenCharts.com

Git dice que hice el primer commit en el repositorio el dia 2 de diciembre de 2009. Sin embargo la idea se me ocurrió hace 3 años. Aquello de que el día a día no te deja, retrasó el proyecto hasta hace poco. La unica manera de poderlo llevar hacia adelante ha sido dedicarme a ello exclusivamente, primero en solitario y luego con un equipo de desarrolladores vocacionales como el que somos ahora. Oscar se unió al proyecto hace unos 3 meses y Dani todavía no ha hecho el mes. Curso a curso he ido pagando el alquiler y las facturas para ponerlo todo en este desarrollo. Se ha llevado a cabo usando Test Driven Development al 100% en el backend. Para el frontend, no hemos hecho tests automaticos del javascript. Realmente es el mejor código que he escrito en mi vida. Y estamos tranquilos de que podemos hacer cambios con velocidad sin perder estabilidad. Menos mal, porque Google App Engine lo pone muy dificil.

Cuando empecé a escribir código en diciembre, planeaba tener lista la version que ha salido ahora, en abril. O sea que nos hemos retrasado 3 meses, practicamente el doble de la previsión. Calculo que trabajando sobre un sistema SQL tradicional y un servidor web como Apache, hubiesemos de verdad terminado en abril o mayo a más tardar. Realmente desarrollar sobre GAE ha sido un dolor. En primer lugar porque es NoSQL y eso significa que tienes que aprender a acceder a datos de otra manera. Tienes que pensar diferente. En segundo lugar, porque el Datastore (la base de datos) tiene tal cantidad de restricciones que hacer consultas medio complejas es muy muy complejo. Las consultas del buscador de MavenCharts son complicadas sin duda. Esto ha hecho que haya más tests de integración de los que hubiesen sido deseables.
Por otro lado, cargar la base de datos con las poblaciones de España tambien ha sido complejo. Primero habia que buscar los datos, tratarlos y subirlos. Los tenemos georeferenciados vía google maps para las nuevas funciones en las que estamos trabajando. Eso también llevó su trabajo.
GAE no te permite hacer ningun request que dure mas de 30 segundos, lo interrumpe con un error 500. Entonces te las tienes que ingeniar para dividir la tarea. Menos mal que hemos usado python y los scripts se hacen rápido porque hemos automatizado mil cosas de ese tipo. Para subir datos no puedes hacer un dump de SQL, todo lo que tienes es CSVs, que puedes subir si te programas las clases que los saben interpretar. Te lo tienes que hacer todo tu.
Otro problema importante es que el entorno de desarrollo de GAE en el pc local no es igual que el de la nube, y los tests de integracion que te van bien en local, luego arriba petan por falta de indices en la BD y cosas asi. Gracias a WebDriver, el cual hemos manejado desde Java, hemos podido automatizar las pruebas de integracion mas intensivas y complicadas.

El otro gran problema que nos supuso 3 semanas de retraso y unas 1500 lineas de código tiradas a la basura, fue el de la gestion de cache de datos. GAE te permita usar memcache. La gran pregunta es... ¿cómo gestionas la cache cuando tienes datos que actualizar? Despues de intentar mil cosas hemos adoptado la politica de Google, es decir, el buscador no refresca los datos inmediatamente sino que necesita unas horas. En nuestro caso unas 24 horas. Francamente es lo más optimo que se puede hacer. Todo lo demas, no escala. Realmente no vale con usar GAE para que tu aplicacion escale, sino que tienes que tener en cuenta mil cosas mas, y pensar que, cada peticion a la web, podria ser arrancada en una instancia distinta, en un servidor distinto, y si tenias un singleton por ahí, tienes un gran problema. Todo esto lo hemos ido aprendiendo a bofetadas. Menos mal que nuestras baterias de tests estaban ahí, porque sino, el caos nos hubiera ganado.

Finalmente, como todo el mundo sabe, la maquetación ha sido muy dura por aquello de que cada nequipo_mavenavegador (sobre todo Internet Explorer) pinta las cosas como quiere. Hemos cometido el error de dejar toda la maquetacion para el final pensando que seria sencilla, y no lo ha sido. En lo sucesivo iremos armando las pantallas a medida que el backend esté hecho. De hecho ahora hay que darle un gran refactoring a las css, pero al menos ya se ve bien en casi todos los sitios.

En la foto teneis al equipo de MavenCharts 1.0. En desarrollo, Oscar Moreno, Dani Latorre y un servidor. En diseño Lucas Carmona, Carlos Sosa y Pedro Gracia. En QA tenemos a Dácil a la cabeza de un grupo de amigos y colaboradores.

Ya tenemos la web internacionalizada y todo listo para soportar más paises e idiomas, asi que en las próximas semanas vamos a intentar salir en EEUU y en varios paises europeos, a la par que ir abriendo más funcionalidad. Hay ya cientos de lineas de codigo esperando a ser puestas en produccion 🙂

Nos hacen falta 4 buenos desarrolladores pero por desgracia todavia no hay pelas para contratar. Ojala podamos seguir creciendo pronto.

Tenemos mucha ilusión y estamos poniendo mucho esfuerzo en este proyecto. Cualquier feedback es bienvenido. Gracias a todos los que lo habeis retuiteado y lo comentais en facebook.

Seguimos trabajando 🙂

http://www.MavenCharts.com

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.
  • http://legnita.wordpress.com Angel Agueda

    ¡Enhorabuena! Mis mejores deseos.

  • http://carlosble.com Carlos Ble

    Muchas gracias Angel! 🙂

  • Alberto

    Hola Carlos,

    felicidades por la iniciativa!!
    Seguro que han sido meses de intenso y duro trabajo hasta dar a luz al pequeñín!

    Respecto al nombre “Maven Charts” en un principio pensé que era algún tipo de herramienta para desarrolladores, es especial relacionada con Java… Supongo de todas que solo corres peligro de confusión con frikis como nosotros…

    Enhorabuena!

  • http://kinisoftware.lacoctelera.net kinisoftware

    Felicidades!! Me alegro un montón que vayáis consiguiendo sacar proyectos propios, tenemos que pasar a ser nuestros propios clientes y crear ideas rentables (eso te lo digo yo que no tengo ni idea xD).
    A seguir trabajando como hasta ahora que seguro solo salen cosas buenas 😉

    Un abrazo

  • arreche

    Has dicho: “Realmente es el mejor código que he escrito en mi vida” ¿Dónde podemos ver ese código?

    ¡Felicidades!

  • Teresa

    Mucha suerte! Le iremos haciendo toda la publicidad que se pueda, seguro que es un éxito.

  • http://www.navegapolis.net Juan Palacio

    ¡Enhorabuena! y los mejores deseos.

  • Alvaro Garcia Loaisa

    Enhorabuena Carlos!
    Estoy seguro de que el proyecto al final sera famoso 😉 y intentaremos hacer toda la publicidad de el que podamos.

  • http://carlosble.com Carlos Ble

    Muchisimas gracias a todos de verdad. Gracias por el animo y por las pruebas que habeis hecho.

    Maven en ingles significa experto. Estuvimos alrededor de 2 semanas, tal vez 80 horas invertidas en buscar un nombre. Todos los que nos gustaban los revendian como poco a 3000 dolares. Probamos hasta con nombres en japones y todo cogido. Al final MavenCharts suena bien y esta libre. Nos han dicho que suena bien en ingles.

    Ya ire contando como va la cosa. El codigo logicamente es top secret, es tan facil de leer y entender que lo podria utilizar cualquiera, sobre todo leyendo los tests 🙂

    Un abrazo

  • http://najaraba.blogspot.com Joserra

    Ánimo Carlos, que esto no habrá hecho más que empezar! 🙂
    Mucha suerte!

  • http://twitter.com/rubenbpv Rubén

    Lo que daría por ver ese código y aprender de él 🙂
    Felicidades por haberte lanzado a la piscina de cabeza con este proyecto de creación propia, da gusto ver gente que se anima a dar el paso.

    Ánimo campeón! Con esfuerzo y constancia seguro que es un éxito 🙂
    Un abrazo

  • http://www.iloire.com ivan

    Hola Carlos, Dani y cia., toda la suerte en el proyecto!

    Me pregunto una cosa (la curiosidad mató al gato pero mantiene vivo al hombre :)), como es que habéis apostado desde el minuto cero por el cache cuando aún no tenéis la masa crítica de usuarios que haría rentable su uso?

    La escalabilidad de Google seguramente os dará muchas semanas o meses de crédito antes de que necesitéis de verdad este caché distribuido. Sobre todo me sorprende al haber hecho un desarrollo TDD, en el que hubiéseis podido “pegar” más o menos fácilmente una funcionalidad de cache en el momento de necesitarla, y las horas que habéis invertido en esta funcionalidad, las tendríais ahora ya invertidas en más “chicha” o funcionalidades de usuario. El uso temprano de cache ha sido motivado por el ahorro de recursos en Google y consiguiente facturación o por razones de velocidad?

    Gracias por contar la experiencia!!

    ivan

  • http://carlosble.com Carlos Ble

    Gracias a todos de nuevo 🙂

    Ivan, el datastore de App Engine es increiblemente lento. Tienes que usar memcache todo lo posible, que entre otras cosas es mas barato.
    Por otro lado, TDD no te exime de tener una arquitectura base. Nosotros hemos disenado esa base con TDD y ahora podemos quitar y poner piezas con mucha tranquilidad. De hecho estamos haciendo una release al dia, lo cual es impensable sin baterias de tests completas como las nuestras.
    Cuando intentamos ser mas optimos con el tema de cache si que nos equivocamos, pero el mecanismo basico de cache que tenemos, tenia que estar, es basico.

    Saludos 🙂

  • http://blog.ancorcruz.com Ancor Cruz

    Muchas felicidades por el lanzamiento y les deseo mucho exito con el proyecto, le he echado un vistazo y tiene muy buena pinta, ¡gran trabajo!

    Al igual que comentaban más arriba yo también pensé que se trataba de algúna herramienta pro para desarrolladores, pero debe ser por nuestras sucias mentes.

    Para el frontend te recomiendo 960 y compass:
    http://960.gs/
    http://compass-style.org/

    Es lo que usamos nosotros y da muy buenos resultado tanto en la maquetación como en la mantenibilidad del css.

    Saludos!

  • http://arturo-lab.blogspot.com/ Arturo

    Esta misma idea la tuve yo hace mucho tiempo. Una cosa es pensarla y otra ejecutar la idea. Te deseo mucha suerte.

  • http://jmbeas.iexpertos.com Jose M Beas

    Queridísimo y admiradísimo Carlos,

    Te han dicho ya tantas cosas bonitas que no se me ocurre nada más que una: “Gracias”. Muchas gracias por demostrar que hay otros caminos diferentes al de la mayoría.

    Y aunque no necesitas que te desee suerte, hombre, aunque sólo sea por si acaso… ¡mucha suerte!

    Un fuerte abrazo,
    JMB

  • http://carlosble.com Carlos Ble

    La gente piensa que una idea es lo mas importante de un proyecto, que es lo que gana, pero la idea es solo un 10%, el resto es como llevarla a cabo 🙂

    Muchas gracias por el apoyo JM! Ya he visto que quieres poner Alcobendas en el buscador y no puedes, lo estamos haciendo para proximas releases. Es muy lento el autocompletado con 22.000 poblacioes. A ver como lo arreglamos 🙂 Este GAE siempre haciendonos pensar mucho.

    Vamos a necesitar mucha suerte para que la gente use la web. Lo demas, creo que lo conseguiremos con trabajo.

    Un abrazo

  • Javier Gómez

    Enhorabuena por el proyecto. Esperamos que nos vayas contando como evoluciona el pequeñín!. Esta tipo de información, para la gente que se inicia en proyectos personales es vital. Saludos desde Barcelona.

  • http://carlosble.com Carlos Ble

    Gracias Javier,
    Ahora mismo estamos buscando inversores porque se nos acaba la gasolina. Lo que ingreso con los cursos a penas me da para pagar facturas y el marketing requiere mucho mas. Tampoco podemos mantener la plantilla, que es lo peor de todo. Vamos a empezar a buscar inversores en USA a ver que tal.
    Seguiremos informando 🙂