Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Entradas sobre "comunidad":

Vídeo y diapositivas del taller de Introducción a Django

Ya está disponibles las diapositivas y el vídeo del taller de Introducción a Django que realizamos Antonio Melé (@zenxone) y Miguel Araujo (@maraujop) en el Betabeers de Octubre.

Aquí tenéis las diapositivas: Introducción a Django y Ecosistema de aplicaciones Django y apps pluggables.

Y aquí tenéis el vídeo:

Publicado por Antonio Melé el Jueves 20 d Octubre d 2011 | 16 comentarios | Categorías: comunidad, cursos, pluggables, tutorial

Taller de Introducción a Django el 17 octubre en Madrid

El próximo lunes día 17 de Ocubre realizaremos en Madrid un Taller de Introducción a Django de la mano de Betabeers. Está orientado a gente que quiere tener un primer contacto con el framework y que todavía no lo conoce mucho (o nada). Tenéis la información en la sección de formación y en el blog de de Betabeers.

Los encargados del taller seremos Miguel Araujo @maraujop, Javier Maestro @javiermaestro y Antonio Melé @zenxone.

El evento tendrá lugar el Lunes 17 de Octubre a las 19:00h en el Vivero de Empresas Puente de Vallecas - C/ La Diligencia, 9.

Todos los que queráis conocer Django estáis invitados :)

Publicado por Antonio Melé el Jueves 13 d Octubre d 2011 | 41 comentarios | Categorías: comunidad, cursos

Entrevista a Daniel Rus de Witmeet

Comenzamos una nueva categoría de artículos en los que iremos descubriendo proyectos creados con Django por la comunidad hispanohablante. Para estrenarla tenemos la suerte de entrevistar a Daniel Rus, creador de Witmeet.

Witmeet es un sitio web que permite buscar personas con las que practicar idiomas cara a cara en cualquier parte del mundo. Una vez te das de alta puedes configurar tu perfil con los idiomas que hablas y los que quieres practicar. Puedes crear tus propios witmeets eligiendo tu disponibilidad y los sitios (cafeterías u otros lugares) donde te apetezca quedar para practicar idiomas, o buscar witmeets cercanos creados por otros usuarios.

Django-es: Hemos probado Witmeet y nos parece un servicio muy útil para todos aquellos que están aprendiendo idiomas. Coméntanos, ¿cómo se te ocurrió crear Witmeet?

Como ocurre con muchas ideas, primero fue la necesidad y luego las ganas. La necesidad surgió porque quería practicar idiomas, acababa de dejar Múnich para irme a vivir a Lovaina y quería conocer gente y continuar practicando inglés y alemán. Para ganar confianza a nivel de conversación es necesario hablar, sirve de poco dominar la gramática si a duras penas la ponemos en práctica. Witmeet sirve para poner en contacto gente que quiere hablar otros idiomas y que comparte intereses, es algo así como un conector de culturas.

Dj: Explícanos cómo funciona Witmeet y qué lo diferencia de otros servicios web para practicar idiomas.

Su funcionamiento es sencillo. Una vez te has registrado puedes crear "perfiles" y "witmeets". Un "perfil" te permite definir qué idiomas hablas, qué idiomas quieres practicar y qué temas te interesan. Con los "witmeets" indicas que quieres quedar, diciendo dónde, cuándo y qué perfil quieres usar. Puedes crear varios perfiles y registrar varios witmeets dependiendo de tus intereses. Por ejemplo, puedes tener un perfil para practicar inglés técnico con temas de interés profesionales, y registrar witmeets con dicho perfil cuando asistes a eventos informáticos. Y puedes tener un perfil para practicar alemán indicando como temas de interés tus aficiones, y usarlo para registrar un witmeet en la ciudad donde vives, diciendo que te viene bien quedar los fines de semana.

Witmeet se diferencia de otras webs orientadas a practicar idiomas por varios motivos, por una lado es fácil buscar gente en cualquier parte del mundo usando el Mapa de Witmeets. Por otro lado Witmeet separa los intereses intelectuales o personales usando "perfiles", y la disposición de los usuarios a quedar usando "witmeets". El nombre de la web viene en realidad de la expresión en inglés "Willing to Meet", es decir, "deseando quedar" o "con disposición a quedar".

Dj: ¿Por qué elegiste Django para desarrollar Witmeet? ¿Habías utilizado Django anteriormente?

No, no lo había usado antes, solo había seguido el tutorial para aprender a usarlo. Este es el primer proyecto serio que hago con Django. Elegí Django porque es sencillo, rápido, extensible, esta muy bien documentado y tiene una gran comunidad de desarrolladores que mantienen vivo el proyecto. Aunque antes de usar Python y Django pasé por Ruby y Rails.

Ruby me encantó, es un lenguaje excelente, su sintaxis tiene una capacidad expresiva sorprendente, me resultó tan potente como Perl, pero con una sintaxis más refinada y atractiva. Rails fue el primer web framework que conocí y me sorprendió por su sencillez y rápidez. Luego me pasé a Python, allá por 2007 su uso crecía rápidamente y me parecía inteligente aprovechar la productividad de la comunidad Python.

Hoy en día Python y Ruby tienen un éxito equivalente en el mundo web, pero Python destaca además como lenguage de scripting en tareas de administración de sistemas, desplazando a Perl, y como lenguage para programar aplicaciones de escritorio.

Dj: ¿Qué aplicaciones pluggables usa Witmeet y por qué las elegiste?

Witmeet usa django-openid, django-redis-cache, django-mailer, simple-captcha y rosetta. Los blogs están basados en Mingus que es en realidad una mezcla de aplicaciones y poco código nativo. Y para los sitios de ayuda, que aún no he terminado de escribir, uso MoinMoin, que no tiene nada que ver con Django, pero que también esta escrito en Python.

Elegí esas aplicaciones Django porque tienen un código sencillo de entender y se mantienen al día. Aunque reconozco que uso pocas aplicaciones para la cantidad que hay y la buena pinta que tienen muchas de ellas.

Dj: ¿Hay algún snippet de código (djangosinppets.org) que te haya sido especialmente útil?

Me gusta Djangosnippets porque refresca las ideas, y a veces me ayuda a dar forma a alguna funcionalidad, aunque no he llegado a incorporar ningún de los snippets a Witmeet. Recuerdo haber probado el envío de correo asíncrono, pero finalmente empecé a usar django-mailer que resuelve ese problema concreto y proporciona otras funcionalidades bastante interesantes.

Dj: En proyectos con alta componente local como Witmeet resulta muy importante trabajar con mapas y geo-posicionamiento. ¿Cómo abarcaste estas funcionalidades? ¿Cuáles fueron los mayores retos a los que te enfrentaste?

El mayor reto durante la implementación de Witmeet ha sido la gestión de los datos geográficos. Cuando creas un witmeet se registran varias entradas en la base de datos geográficos. Posteriormente, es necesario recuperar esos datos cuando te mueves por el mapa. Es un problema de Marker Clustering.

Hay soluciones en Javascript que permiten gestionar una cantidad aceptable de markers, aunque no son válidas para sitios web con mucho tráfico y cantidades elevadas de markers. Los Marker Cluster Managers que ofrece Google en la sección de ejemplos de la API de Google Maps requieren que el servidor web devuelva todos los markers contenidos en los límites del mapa. Esto implica que si el usuario navega en el mapa a un Zoom Level pequeño, es decir, abarcando un área geográfica extensa, el servidor debe enviar al cliente los datos de todos los markers contenidos en esa superficie, lo que tiene como consecuencia que cada visita a la página del mapa produzca respuestas muy pesadas. En un sitio programado para soportar mucho tráfico y muchos markers esta solución no es aceptable.

La solución a la que he llegado con Witmeet consiste en dividir los niveles de zoom de Google Maps en 4 niveles de zoom en el servidor. Los 3 primeros, los más alejados de la superficie terrestre, no devuelven todos los markers contenidos en los límites del mapa, sino un resumen del agrupamiento de dichos markers, mientras que el último zoom level, el que está más cerca de la superficie terreste y cubre un área geográfica más pequeña, sí recibe todos los markers. De esta manera, puntos geográficos que aparecen desagregados en el zoom level 4 (el más cercano a la superficie terreste), están agrupados en niveles inferiores, es decir, a mayor altura.

La representación del modelo de datos de los niveles de zoom se puede representar como una rejilla o grid tridimensional. El grid contiene más claves, es decir, agrupamientos de markers, cuanto más cerca de la superficie esta el nivel de zoom, y contiene menos cuanto más alejado está, dado que los está agrupando y estas agrupaciones abarcan cada vez más superficie terrestre.

La mejor manera de representar este modelo de niveles de zoom es con un Gestor de Bases de Datos NoSQL, para lo cual Witmeet usa Redis. Witmeet convierte cada par latitud, longitud en un conjunto de tres claves, cada una corresponde a un Zoom Level, y Redis almacena en cada una de esas claves una referencia al witmeet que se acaba de crear. Posteriormente, cuando el usuario se mueve por el mapa, Redis permite un acceso extraordinariamente rápido a los datos de las claves almacenadas en las áreas geográficas que se estan visualizando.

Por otro lado, Redis viene con un buen conjunto de tipos de datos nativos que permiten realizar operaciones con un tiempo de respuesta mínimo. Por ejemplo, las operaciones de búsqueda de gente que habla un idioma y quiere practicar otro se realizan mediante operaciones de intersección de conjuntos de Redis. Al resultado se le puede establecer un TTL, evitando así que la operación se realice repetidamente dentro de dicho intervalo de tiempo. Redis es un componente fundamental en Witmeet y esta demostrando ser un producto estable.

Dj: ¿Qué APIs utiliza Witmeet?

Del lado del cliente Witmeet utiliza Google Maps, Google Local Search, Google Translation, Jquery, Jquery.UI, y el componente Scrollable de las Jquery-Tools de FlowPlayer. Del lado del servidor utiliza OpenID, redis-py y algunas otras APIs de paquetes Python.

Dj: ¿Algún consejo o truco en especial a la hora de trabajar con Django?

Nada en especial. Aprender a usar Django lleva implícito adoptar los principios DRY y KISS, los cuales ayudan a hacer website más sólidos y en menos tiempo. El mundo del FOSS ayuda a la expansión de aplicaciones Django cada vez más usadas y por lo tanto cada vez más estables.

Dj: Quizás lo más complicado de Witmeet sea conseguir reunir una masa crítica de usuarios para que haya suficiente oferta de idiomas a nivel local. ¿Cómo has planteado la expansión de Witmeet?

La expansión de Witmeet me la planteo con muchas dificultades. :)

Empecé el proyecto como un pasatiempo y podría convertirse en algo interesante siempre que encuentre gente con la que hacer equipo. Desde que puse en marcha la web en Septiembre he buscado gente con perfil ejecutivo capaz y solvente, pero todavía no he encontrado a nadie. Sigo buscando, pero como dice Rich Aberman en este post del Blog de WePay, es muy difícil encontrar un socio en el que confiar fuera de tu círculo de confianza.

Cubrir la distancia que llevaría a Witmeet de ser una "idea interesante" a un "proyecto rentable" es muy difícil. Tengo ideas para rentabilizar Witmeet, pero como ocurre con todas las webs de caracter social, no son realizables si primero no se alcanza una masa crítica de usuarios. La manera de alcanzarla y no morir en el intento pasa por conseguir tracción, recursos y capacidad técnica.

Los próximos ciclos de desarrollo los quiero dedicar a trabajar el SEO de Witmeet, mientras sigo buscando gente con ganas de participar, bien con desarrollo técnico, traduciendo el sitio a otros idiomas, haciendo maketing como Country/Local Managers, alimentando los blogs, escribiendo los sitios de ayuda, y dando forma al futuro a corto y medio plazo de la web.

Dj: ¿Qué funcionalidades piensas implementar en el futuro?

Tengo en mente hacer aplicaciones para Android y iPhone, la informática móvil es el mercado que más crecimiento está experimentando en la actualidad y no quiero perdérmelo. Pero antes me gustaría crear una API para Witmeet con Piston con la que poder hablar desde las aplicaciones móviles.

También quiero implementar la funcionalidad de Eventos, para lo que estoy pensando en adoptar una API de calendarios que podría ser la de Google Calendar, que me parece muy completa, aunque aún no he buscado alternativas.

Y para terminar mi carta a los Reyes Magos de las conexiones con otras APIs, me gustaría conectar Witmeet con sitios como Qype, FourSquare, Gowalla o Yelp, para extraer datos de cafeterías, restaurantes, pubs, museos, hoteles, etc. Qype ofrece un servicio muy completo en Europa occidental, mientras que Yelp o FourSquare están creciendo muy rápidamente en USA. Hay iniciativas locales casi en cada país, no hay un claro dominador, y mientras Google ofrece acceso a datos de terceros a través de Google Local Search y de la reciente Google Places. Quizás de nuevo la API de Google Places sea la mejor opción para conectar un servicio púramente consumidor de datos.

Muchas gracias por tu tiempo y mucha suerte con Witmeet. Nosotros ya estamos usándolo :)

Muchas gracias a vosotros por conectar la comunidad hispano hablante de Django y por darme la oportunidad de presentar Witmeet en este foro.

El próximo mes me traslado a vivir cerca de Londres y no puedo dejar de decir que estoy "Willing to Meet" por allí, si alguien vive cerca o pasa por allí, estaré encantado de tomar un café y tener una charla agradable: http://witmeet.com/pub/NDIw/ ;)

En próximos posts iremos conociendo otros proyectos creados por la comunidad. Si conoces alguno interesante háblanos de él.

Publicado por Antonio Melé el Martes 22 d Febrero d 2011 | 5 comentarios | Categorías: comunidad, entrevistas

DjangoCon Europe 2011

Se ha anunciado que la DjangoCon Europe 2011 tendrá lugar en Amsterdam del 6 al 10 de Junio. La conferencia será del día 6 al 8 y los días de sprint el 9 y 10 de Junio. Hay más detalles en la web oficial del evento.

Publicado por Antonio Melé el Lunes 17 d Enero d 2011 | 0 comentarios | Categorías: comunidad