sábado, 23 de febrero de 2013

Novedades AFIP / ANMAT: WSLPG y TrazaMedV2

AFIP:


Liquidación Primaria Electrónica de Granos:


Esta en desarrollo la interfaz para el webservice WSLPG (Liquidación Primaria de Granos):
Operaciones de compraventa de granos no destinados a la siembra.
Régimen de emisión de comprobantes.
Norma conjunta Resolución General Nº 1.593 (AFIP) y Resolución Nº 456
(ex SAGPyA), Resoluciones Generales Nº 1.415, Nº 2.205 y Nº 2.485, sus respectivas modificatorias y complementarias.
Para más información ver:
Proximamente liberaremos un instalador y la documentación actualizada  (actualmente el servidor de AFIP parece no estar completamente funcional ya que devuelve '500: Error General de Aplicacion.') 

Certificados de seguridad:


Afip ha cambiado los certificados de seguridad de los servidores de producción (webservices):

Según la Especificación Técnica WSAA 1.2.2, la aplicación que consuma los webservices debe verificar el canal de comunicación seguro usando los CA (Certifiado de las Autoridades Certificantes).
Para ello se puede usar el transporte (wrapper) pycurl, usando el archivo de informacion provisto: afip_ca_info.crt (recientemente actualizado por este cambio). Más info en la documentación.

ANMAT:


Trazabilidad de Medicamentos: Especificación Técnica v2


Desde hace algunos días tenemos conocimiento y estamos trabajando en  una nueva versión del webservice de trazabilidad de medicamentos (TrazaMed), que  incluye los siguientes métodos (capacidades) nuevos:
  • SendConfirmaTransacc(..., p_ids_transac, f_operacion): Confirma la  recepción de un medicamento 
  • SendAlertaTransacc(..., p_ids_transac_ws): Alerta un medicamento,  acción contraria a “confirmar la transacción”. 
  • GetTransaccionesNoConfirmadas(...): Trae un listado de las  transacciones que no están confirmadas 
Esto se suma a SendCancelacTransacc, SendMedicamentosDHSerie y  SendMedicamentosFraccion que se habían agregado con anterioridad.

Pueden ver los nuevos cambios en la documentación:

http://www.sistemasagiles.com.ar/trac/wiki/TrazabilidadMedicamentos

Los ajustes iniciales al código fuente ya están publicados:

https://code.google.com/p/pyafipws/source/browse/trazamed.py

Según comentarios, esta nueva operatoria sería obligatoria a partir  del 1 de Marzo de 2013.

La próxima semana estaremos publicando una nueva versión de los  instaladores y ejemplos.
En cuanto tengamos más información ampliaremos comunicandolo por la lista de correo

jueves, 31 de enero de 2013

PyCon Argentina 2012: how-to y comentarios

Cerrando la organización de PyCon Argentina 2012, escribo esta entrada principalmente para sintetizar mis comentarios personales a las sedes que se han postulado para el 2013, y espero que sirva como resumen a modo de guía, por si alguno quiere organizar un evento similar (recordar que existe el reporte final y balance de la conferencia para mayor información, y pueden ver una entrada en mi blog previa sobre pyconus2012 para una perspectiva más detallada).

Objetivos: ¿PyDay o PyCon?

El principal punto es definir: ¿para que organizar una conferencia? ¿cual va a ser el público?

En principio, se puede organizar un evento "chico" por ej. un PyDay (jornada de Python de 1 día, usualmente de carácter local, sin invitados internacionales ni mucha más complicación). Esto es lo más recomendable para aquellos que nunca organizaron un evento, ya que es más informal, con menos responsabilidades y ayuda a afianzar una comunidad local con perspectivas a realizar un evento más grande.

Si bien los PyDays son muy interesantes, a mi criterio tienen ciertas limitaciones en cuanto a los recursos y posibilidades. Suelen ser una buena opción para los principiantes y aquellos que ya tienen una experiencia intermedia en el lenguaje, pero pueden no ofrecer la profundidad necesaria para los usuarios más avanzados. Por lo general, tampoco logran reunir participantes a nivel regional o nacional, siendo su ámbito de acción y posibilidades de difusión mucho más acotadas. Como además  generalmente son de 1 solo día, pueden no justificar el viaje para personas que viven lejos del evento.

Para ir un poco más allá, creo que se necesitan eventos más "grandes": por ej una PyCon (usualmente varios días de conferencias, entrenamientos y reuniones de desarrollo, para todos los niveles, desde nuevos usuarios hasta desarrolladores del lenguaje). Este tipo de evento tiene en general un carácter nacional, regional o internacional, usualmente nucleando un público más diverso (incluyendo disertantes internacionales), con mayor posibilidades y recursos. Las actividades técnicas se complementan con eventos sociales y turísticos (happy hour, fiestas, city tours, etc.)

Incluso armar eventos especiales en paralelo ayuda a traer disertantes, participantes y facilitar la organización. Por ej., este año, se armó una Jornada de PostgreSQL en paralelo a los Sprints: PgDay Argentina 2012. No solo se compartieron disertantes, sino que también un 25% de los participantes aproximadamente asistieron a ambos eventos.
Creo que es una idea bastante buena, sobre todo viendo que este año en PyCon US 2013 se organizan varios eventos en paralelo, como un PyPgDay y PyData
Tampoco habría que descartar participar en eventos mayores (conferencias de software libre o similares).

¿Por que se necesitan conferencias y entrenamientos más avanzados?


En diciembre pasado estuve en las de Jornadas de Agenda Digital, donde se planteó en un panel "Debate abierto sobre Software Libre en el Estado".
Uno de los disertantes, Jorge Linskens – Consultor quien fuera encargado de modernizar los sistemas informáticos de AFIP  – comentó que le fue posible implementar software libre porque tenia 4 "gurues de java". También señaló un caso negativo, donde la falta de soporte local hizo fracasar un proyecto, cuestionando que las ventajas del software libre se pierden si para solucionar un problema se debe contratar y traer un experto desde el exterior (con un costo de cientos de miles de dólares).
En el ámbito privado, se puede citar una búsqueda laboral de Intel, donde uno de los requisitos era la participación activa en Django, web2py, cherrypy o web.py (además de otros temas avanzados).

Esto no es algo nuevo o específico, recuerdo que en 2009, en la reunión informal luego de la conferencia PgCon Brasil 2009, comentaban sobre que las empresas estatales brasileñas solo contrataban "expertos" que hubieran contribuido fehacientemente al proyecto (o sea, haber enviado correcciones o mejoras que fuesen aceptados y listados en el historial de cambios).
Siguiendo esa linea, en dicha conferencia hubo varias charlas para fomentar nuevos desarrolladores, con una Sala VIP dedicada a estos temas avanzados, tratando como hacer extensiones o lograr que te aprueben un parche (esta última, muy motivadora, sobre todo la parte de experiencia personal del autor, remarcando que el esfuerzo de contribuir al software libre al principio puede ser abrumador, pero que a la larga se aprecian sus beneficios).

Además de fomentar el crecimiento de nuevos colaboradores, eventos de capacitación más avanzados posibilitan acercar la experiencia completa relacionada al software libre a mayor numero de interesados, quienes de otra forma tendrían que ir a los países centrales para conocer, capacitarse y conectarse con la comunidad internacional (cosa que, al menos desde Argentina, es algo económicamente costoso y hasta burocrático por el tema de visas y similares).

Por último, no olvidar que eventos más abarcativos posibilitan encontrarse con personas de distintos orígenes e intereses, y se generan interesantes discusiones, charlas, talleres o reuniones de trabajo no programadas que de otra forma serían dificil de concretar.
Esto se conoce como "Hallway track" (charlas de pasillo durante los intervalos),  y es uno de las mejores oportunidades que brindan estos eventos para socializar y conocer otros pythonistas.
Tampoco olvidar otras actividades menos formales como los espacios abiertos, sala de exposición, etc., que también ayudan a conectarte con disertantes, auspiciantes y público en general.

Disertantes Internacionales


Retomando el tema anterior, en Python Brasil 2012 (y por consiguiente, en parte también para PyCon Argentina 2012), se buscaron disertantes internacionales para facilitar la formación de nuevos "core developers". Con un eje avanzado y charlas en inglés, se buscaba atraer a la conferencia a otros disertantes y participantes internacionales. 

En general, los disertantes reconocidos pueden llegar a solicitar a su empleador que les cubra el costo del pasaje (uno de los gastos principales de este tipo de eventos). Esto hay que sugerirlo con tiempo, ya que sus jefes deben evaluarlo y hacer los tramites necesarios. En estos casos debe ofrecerse un reconocimiento como sponsor o similar, y garantizar que las actividades a desarrollar van a ser relevantes y justificarán el viaje.
Puede ofrecerseles alojamiento sin cargo, sobre todo para facilitarle la jornada a a aquellos disertantes con varias actividades, pero recordar que usalmente las grandes compañias también cubren la estancia en hoteles de mayor categoría a las que puede cubrir un evento de software libre en estas latitudes, por lo que se les puede recomendar un hotel oficial al que pueden cambiarse a su cargo si asi lo desean.
Si no se consigue cubrir estos gastos, se pueden solicitar fondos a la PSF para cubrir pasajes de avión de los invitados internacionales, y se evita el papeleo para recibir la transferencia internacional (ver Financiación y Sponsors abajo).

Recordar aclarar estos temas para que no haya malos entendidos, por ej. recibimos una contestación de un posible invitado que solicitaba le cubrieramos el pasaje, estadía y comida (esto es usual en otras conferencias, pero puede ser complicado en nuestro caso). 
También aclarar que la participación es ad-honorem, o sea, no se paga por las capacitaciones (a diferencia de, por ej. PyCon US, que paga alrededor de USD $1500 por presentar un tutorial).

Los disertantes internacionales pueden llegar a pedir sus vacaciones para poder venir (incluso con sus parejas), por lo que también debería ofrecerse alternativas turísticas para hacer más atractiva y amena su estadía.

También se puede explorar un "Tour" o gira de los disertantes internacionales, que recorran los diversos países de la región, como por ej. se hizo en "Gira Ruby Sur 2011". Proyectos similares para Python incluyen el "Python African Tour"

Por último, es recomendable contestar los emails en tiempo y forma (máximo 24hs), y proveer por anticipado detalles sobre la organización general (duración de charlas, slots, alojamiento y transporte, gastos aproximados -comida, bebida, etc.-). Estas son cosas que tienen en cuenta los disertantes internacionales, y la sola falta de respuesta puede afectar la seriedad del evento y hacer que desistan de viajar hacia la conferencia.

Revisión y Selección de charlas - Diversidad 


En principio, debe armarse un Llamado a ponencias, detallando las actividades que pueden ser propuestas. En general, luego se forma  un comité de selección de charlas que evalua las propuestas, pide aprueba/rechaza las propuestas y asigna los horarios (ver Llamado a Revisores)

El problema es que generalmente se reciben más charlas de las que pueden ser ubicadas en la grilla y surgen los inconvenientes. Lo fundamental es mantener la transparencia del proceso (para evitar decisiones que pueden ser consideradas "arbitrarias"), y posibilitar a los autores que realicen las correcciones necesarias antes de que sea demasiado tarde.
Lo ideal sería recibir un paper tentativo (documento usualmente de entre 10 y 25 hojas) para asignarle expertos y evaluarlo en profundidad, pero la realidad es que esto es bastante difícil para este tipo de conferencias de software, y lamentablemente la disponibilidad de expertos es limitada. 

Por eso, creo que una buena opción seguir abriendo la selección de charlas a la comunidad (y así también aumentar la participación de los futuros asistentes al evento). Para PyCon Argentina 2012 el público pudo votar sus preferencias, pero se limito la cantidad de revisores por temor a que el proceso se salga de control (sobre todo en las reuniones). 
Quizás se debería incluso simplificar aún más el proceso de revisión, para que más gente pueda revisar las charlas y así poder mejorar la calidad antes de la votación y selección final. 
Tanto EuroPython como PythonBrasil usan un sistema de votación totalmente abierto a la comunidad.

También debe balancearse las posibilidades de la organización, recursos, disertantes internacionales, etc. Por ejemplo, en EuroPython combinan las charlas de invitados internacionales y sponsors, en adición a las propuestas seleccionadas por la comunidad.

En este sentido creo que es fundamentar seguir políticas de diversidad que aseguren la participación de los distintos grupos y proyectos, generalmente minoritarios o emergentes, para que tengan cierta visibilidad, ya que si simplemente se evalúa su popularidad, quedarían excluidos por no ser "mainstream". Esta pluralidad favorece las interconexiones y compartir experiencias para enriquecer el software libre con otros casos de uso, soluciones y puntos de vista.

Además, recordar que en general se termina decidiendo en unos pocos minutos basado en un párrafo de texto y la experiencia del autor, por lo que los autores conocidos tienen más posibilidades. Por eso puede ser interesante reservar lugares para fomentar la diversidad, por ej en PHP tek13 comentan que: "el proceso de selección es altamente competitivo. Pero También, tenemos una política para asegurar que varias de nuestras charlas sean de nuevos disertantes, o al menos sobre nuevos temas, así que no dejes que la competencia te desanime."

Una medida para 2012 fue la de limitar a una charla por autor por track -eje- (en PyCon US se limita a dos charlas en total por cada autor), buscando mayor diversidad de temas y mejor calidad (ya que preparar más de una charla o repetirla la otros años puede ser contraproducente para el autor y la conferencia).
También se deben dejar algunas charlas de respaldo, ya que a último momento puede que algunos disertantes desistan de participar, y es útil tener un pack de charlas para reemplazar los espacios vacantes. Es recomendable que estas charlas de backup sean preferentemente de disertantes locales o conocidos para que la confirmación sea rápida y evitar mayores complicaciones y demoras.

Para resumir, cito a Diana Clarke -coordinadora general de PyCon CA 2012, y creo próxima de PyCon Norteamerica 2014-: "No necesitas apegarte a un sistema de votación estricto (que usualmente refuerza el status quo). ... Si quieres que el 20% de las disertantes sean mujeres: haz que ocurra! ... Si queres que el 20% de las charlas sean academicas: haz que ocurra! ... Si haces tu tarea, buscando grandes disertantes de grupos que de otro modo son poco representados, ninguno de esos disertantes seran "indignos". Obviamente, no debes solo poner tus amigos y auspiciantes sobre el escenario,  pero debes decidir como un equipo cuales son tus metas y trabajar hacia ellas" (ver mensaje completo en la lista de Conferencias)

Financiación y Sponsors

Para aquellos que quieran organizar una evento relacionado a Python, la Python Software Fundation tiene un Programa de Subvenciones, usualmente de 5.50 dólares por participante (aunque el importe final puede ser menor). Cabe aclarar que a partir de este año, la PSF requiere que la conferencia tenga un código de conducta.

Es recomendable hacer la solicitud los antes posible, recordar que estos tramites demoran por la transferencia internacional (hicimos el pedido el 4 de abril, lo aprobaron el 30 de abril, nos notificaron el 5 de mayo, lo depositaron el 11 de septiembre y se acreditó en la cuenta el 21 de noviembre, 4 días después de la conferencia...). Incluso hubo que presentar varios comprobantes en el banco para que habiliten los fondos. Otro auspicio internacional que se inició en Agosto, termino acreditándose el 22 de enero de este año (dos meses después de la conferencia).

Para este año se usó una propuesta de auspicio segmentada y diferenciada, siguiendo las bases del llamado a sponsors de PyCon US que distingue entre empresas grandes y pequeñas (menos de 25 empleados) con un descuento del 50%. Para sponsors previos se mantuvo el precio del año anterior, con un ajuste del 25% por el aumento de costos.

Viendo las dificultades que tuvimos para cobrar los fondos de los sponsors internacionales (incluyendo comisiones bancarias importantes, gastos de notarios por certificaciones y hasta una posible retención del 35% por impuestos de EEUU), quizás sería conveniente mantener la propuesta pero limitar los descuentos solo a empresas locales, excluyendo a las multinacionales que tienen otras posibilidades y generalmente contemplan los importes internacionales para este tipo de conferencias.
La mayoría de los sponsors fueron locales (empresas de desarrollo de software buscando programadores) y hubo varios por "canje" de productos o servicios.

Si bien haber tenido varias fuentes de ingreso ayudó a tener un flujo de caja más predecible,  igualmente hubo que cubrir algunos gastos (adelanto de la filmación y hotel) con dinero propio de los organizadores, hasta que se iban acreditando los ingresos.

Organización Formal


Es un tema para tener en cuenta, sobre todo si no se tiene una organización formal (asociación, fundación o similar) para manejar los fondos y se depende de terceros.
Armar una ONG o similar también ayudaría a los temas administrativos, con metas y responsabilidades más claras, facilitando armar planes de acción más concretos y perdurables.
Se debe encontrar un balance entre las necesidades y sugerencias de la comunidad, contrastándolo con las posibilidades reales, sobre todo si se arman debates o discusiones  que pueden ser constructivos pero si no aportan recursos para llevarlo a cabo (voluntarios, tiempo, fondos, etc.), suelen convertirse en un ruido no deseable.

Se pueden explorar otras formas, ver el manual de Big Kahuna (Python Brasil) para más información sobre modelos de organización comunitario, mixto o profesional (comercial). Se puede mencionar también que PyCon US es una conferencia comunitaria producida por la Python Software Fundation (ONG sin fines de lucro), pero también hay otras como DjangoCon que son producidas por empresas privadas, pero llevadas a cabo por la comunidad.
Si para organizar se colaborará con una ONG existente dedicada a promover el software libre, ver por anticipado que no haya problemas con los posibles sponsors (PyConUSPSF).

Entrada Gratuita, Bono contribución y Becas

La mayoría de los PyDays son de entrada gratuita, pero la mayoría de las PyCons son pagas. 

Por ej., PyCon US cuesta desde USD $100 para estudiantes, aprox. USD $350 para individuos, y hasta USD $750 para empleados corporativos (entre $500 y $3750 pesos argentinos, sin contar adicionales como los tutoriales, que se pagan aparte). 
Otros eventos más cercanos como Latinoware cuestan entre R$ 70 y R$ 110 (alrededor de $300 pesos argentinos al día de hoy).  PythonBrasil[8] costó entre R$150 y R$450 (de $400 a $1200 pesos argentinos al día de hoy). Los aranceles de las 41 Jornadas Argentinas de Informática arrancaron en $160 para estudiantes, $260 para docentes y $430 para los no-socios (realizadas por una ONG sin fines de lucro y en una Universidad Pública).

PyCon Argentina 2012 fue de entrada gratuita (costo = $0) para posibilitarle el acceso a la mayor cantidad de interesados, y se implementó un bono contribución opcional que tenía importes sugeridos entre $75 y $250 pesos argentinos (USD $15 a USD $50 dependiendo del tipo de cambio), principalmente para cubrir el costo de remeras, artículos promocionales y catering.
Si bien el logramos cubrir varios temas, faltó contemplar el almuerzo de los días de tutoriales y conferencias (jueves, viernes y sábado), lo que hubiera significado incrementar el costo en $150.- (el catering es uno de los temas más caros y complicados para organizar, pero es muy beneficioso para no dispersar a los participantes y facilitarles las actividades, sin estirar los horarios de almuerzo como nos ha pasado).

Para disertantes, hubo un descuento especial del 50% (por debajo de los costos) y los sponsors obtenían acreditaciones sin cargo dependiendo del importe de patrocinio pagado.

La categoría más económica de patrocinio, alrededor de $1000 para empresas grandes y $500 para empresas pequeñas, no tuvo ningún interesado y directamente fue eliminada. Por el contrario, hubo varias cooperativas y trabajadores particulares que aportaron con el bono contribución profesional (incluso más que el importe básico sugerido).

El bono contribución no solo ayudo a poder mejorar algunos aspectos de la conferencia, sino que también brindó efectivo para poder pagar las becas y otros gastos (parte de la filmación y temas menores) mientras estábamos esperando que se acrediten los importes de los sponsors internacionales.

Respecto a las becas, para ayudar a aquellos que no podían cubrir los costos de viaje, se simplificó el trámite (ver instrucciones), con un tope de $1500. El proceso de análisis y otorgamiento se simplificó para hacerlo más rápido y expeditivo.

Para cerrar este tema, dejo una cita mencionada en un artículo periodístico: "Universidad para algunos"  Revista Veintitres del 31-1-2012: “Quienes abogan dogmáticamente por la tradicional gratuidad generalizada no están aportando efectivamente a la vigencia de una nueva situación con más igualdad en la acumulación del capital humano, por la sencilla razón de que bloquean la posibilidad de un financiamiento solidario

Sitio web

Sobre este tema no voy a profundizar, ya que pueden leer lo escrito en el reporte final (postmortem) y en el blog ("Historia y como colaborar").
Solo voy a agregar que no es un tema menor, pueden ver que el sitio de PyCon US 2011 costó en principio USD 15.000 (ver http://www.python.org/psf/records/board/resolutions/) y tampoco fue exento de inconvenientes, luego de haber intentado un primer desarrollo comunitario, para pasar a uno más comercial.
Un consejo en este punto sería tratar de balancear los requerimientos, con un diseño más profesional, pero un desarrollo comunitario perdurable en el tiempo y reutilizable en otras conferencias.
Ver nuevamente el mail de Diana Clarke (que recomienda no construir algo nuevo solo por diversión), aunque recomienda el software web symposion basado en pinax, que creo es más complejo que web2conf, hecho en web2py y más facil de usar y mantener, el cual recomiendo ya que lo venimos usando estos años  ;-)

YMMV


viernes, 9 de noviembre de 2012

PyCon Argentina 2012 es la próxima semana!

¡La conferencia de Python comienza el próximo Lunes 12, y se extiende hasta el Sábado 17!

http://ar.pycon.org/2012

Por mi parte, más allá de los temas generales, estaré coordinando una reunión de desarrollo de PyAfipWs (acérquense si están interesados en el tema de factura electrónica) y presentando un poster sobre Rad2Py.

Otras reuniones de desarrollo interesantes incluyen "Core Python"  (para colaborar con el desarrollo del lenguaje) y "web2py" (marco de trabajo web para desarrollo rápido, fácil y simple). Hay muchas más reuniones y actividades, pueden ver lista completa de Proyectos para Sprints, Pósters y Charlas Aceptadas.

Este año también hay talleres y seminarios prácticos para sumergirse más profundamente en estas tecnologías  sin perder de vista las charlas para tradicionales y charlas "extremas" mucho más enfocadas en temas particulares, junto con un eje de Ciencia para usos de Python en Educación, Ingeniería e Investigación.

Las actividades especiales incluyen una Jornada Intensiva de PostgreSQL, un SugarDay y un Desafío "Aprendiendo a programar con Python y Robots".

Por último, no se pierdan los eventos sociales, ya que son una oportunidad única de conocer otros desarrolladores e interconectarse con la comunidad, en un ambiente más informal y ameno.

La agenda completa en: http://ar.pycon.org/2012/schedule

La entrada es libre y gratuita, la inscripción online cierra hoy (http://ar.pycon.org/2012/user/register), útil para evitar demoras y contratiempos, pero igualmente podrán acercarse e inscribirse manualmente en el sitio si lo desean.

Los esperamos

martes, 18 de septiembre de 2012

Programación Python con Robots - charla abierta


Charla Abierta

“Programación Python con Robots”

Jornada Institucional - Instituto Pascal - Jueves 20 de Septiembre - desde las 18 hs

Aprender con Python es aprender con Software Libre en un ambiente de programación 
sencilla, que tiene una motivación ideal: escribir aplicaciones para el “mundo real”



Temario:

  • Conceptos básicos de programación
  • Implementación de algoritmos sencillos.
  • Introducción al lenguaje Python.
  • Primeros pasos: instalación de hardware y software
  • Funciones para manipulación del robot
  • Ejercicios básicos y demostraciones

Basado en el Proyecto de Extensión “Programando con robots y software libre” dirigido por la Lic. Claudia Banchoff, LINTI, Universidad Nacional de La Plata

Destinado a alumnos y docentes del nivel secundario y terciario



Instituto Superior Tecnológico Blaise Pascal

www.institutopascal.edu.ar

Puerto Argentino 4238
Gonzalez Catán
Provincia de Buenos Aires
Argentina

miércoles, 23 de mayo de 2012

web2py Application Development Cookbook


Hemos escrito un libro de recetas para el desarrollo de aplicaciones con web2py, el cual fue publicado por Packt Publishing en Marzo y ya está disponible para la venta, tanto en formato e-book como impreso.

Hasta el 28 de mayo, entrá a la página y participá en la encuenta y ganá 5 libros gratuitos donados por Packt:

http://web2py.com/cookbook

En dicha página también está publicado el código fuente, erratas.

La página para comprarlo en Packt Publishing es:

http://link.packtpub.com/di3Bc5

También buscamos revisores, contactame si estás interesado.

Con el anticipo de las comisiones por ventas del libro hemos consituido un fondo para continuar fomentando el desarrollo de web2py, python y el software libre.

Visión General:

  • Lleva tus habilidades de web2py al próximo nivel al sumergirte en recetas deliciosas y útiles de este "libro de cocina"
  • Aprende web2py avanzado, desde el uso de formularios a creación de reportes PDF
  • Escrito por los desarrolladores del proyecto web2py con cantidad de ejemplos para un aprendizaje comprehensivo e interesante

Tabla de Contenidos:

Detalles del libro:

  • Idioma : Íngles
  • Impresión : 364 páginas
  • Publicación : Marzo de 2012
  • ISBN : 1849515468
  • ISBN 13 : 978-1-84951-546-7
  • Autores : Mariano Reingart, Bruno Cezar Rocha, Jonathan Lundell, Pablo Martin Mulone, Michele Comitini, Richard Gordon, Massimo Di Pierro
  • Temas y Tecnologías : All Books, Cookbooks, Open Source, Python


miércoles, 28 de marzo de 2012

PyCon US 2012 ("lo que nunca te contaron...")

El siguiente texto nació como una especie de rant escrito en una madrugada de insomnio (tratando de escribirlo antes de olvidarme la mayoría de las cosas), pero ya está más depurado. Sepan disculpar los inconvenientes.

La Previa

Envío de Propuestas

Para 2011 había enviado dos propuestas, una charla sobre factura elctrónica (pdf, webservices, etc.) y un poster sobre "pyreplica" (replicación para postgresql con python). 
El poster fue aceptado, la charla no tuvo la misma suerte, pero recibí un correo de notificación explicando los motivos (resumido: la facturación es un nicho, y hay charlas mejores). Lo mismo me paso en 2009 en la primer Conferencia de Python Argentina, por lo que posiblemente la redacción de la propuesta no fue lo suficientemente clara y adecuada para este evento, dado que a mi humilde entender, la charla trataba sobre otros temas más generales como servicios web, pdf, cli/gui, rpc con otros lenguajes legados, bases de datos, etc.

Charla "Python Caveats: Fixing Broken Windows"

Para este año intenté mejorar la descripción de la charla, con un abtract abarcativo y un bosquejo detallado, citando referencias, links a código fuente, estadísticas, etc. Estaba inspirado por el cuasi-panel "Python Apesta" de PyConAr 2011.
Al día de hoy desconozco puntualmente el motivo de rechazo, pero seguramente este año hubo charlas mejores (de hecho las propuestas superaron en 4 veces la cantidad de espacio disponible para charlas).
Ver más adelante en la sección revisión algunos temas "no del todo documentados" relacionados con la selección de charlas. 
Posiblemente haga una entrada de este blog para ir refinando el tema.  

Poster "RAD2PY: platform+IDE for solid & predictable Rapid Application Development"

Basado en mi trabajo de tesis de licenciatura, prepare un poster para presentar:


Como toda la propuesta no entró en el poster principal, arme dos carteles complementarios (web2py y gui2py):



Felizmente el poster fue aceptado: https://us.pycon.org/2012/schedule/presentation/147/

El poster tenía contenidos similares a los de la charla, resumiendo las 200 hojas de investigación.
Un consejo: si desean presentar algo en PyCon, por las dudas, preparen un póster (hasta tienen más posibilidades que una charla relámpago, ver más adelante...)
Además, los posters se aprueban a medida que llegan (con una demora de 1 mes aproximadamente), por lo que es útil para solicitar una Carta de Invitación para ir tramitando la Visa.

Por el presente agradezco públicamente a JuanBC que me ayudó con la tipografía y temas de diseño (y lo más importante, diseño el logo de rad2py).

Revisión de Charlas

Como voluntario, participe en algunas etapas de la selección de charlas. 
Comenzar es sencillo, un email introductorio al Comité de Programa (indicando nombre de usuario del sitio web y una breve biografía) y te habilitan el acceso a todas las charlas, con la posibilidad de hacer comentarios y la correspondiente revisón. 

La revisión se basa en la técnica Identify the Champion, básicamente un puntaje entre +1, 0, -1, para literarmente defender u oponerse en alguna medida a cada charla. 
Traté de revisar algunas, revisar todas era físicamente imposible y además uno debería tener conocimientos en la materia, por lo que me limité a charlas de web, gui, postgresql, educación, etc.

Hasta donde recuerdo, como reglas generales, se debía priorizar proyectos reconocidos con una base de usuarios considerable, con código funcionando, documentación, etc. (de lo contrario, sugerían poster). Las charlas de comunidad fueron casi todas rechazadas (ver más adelante charlas relámpago). La biografia del autor era muy influyente (haber dado una charla previamente y ser experto en la materia era casi excluyente). Las propuestas poco detalladas serían rechazadas si el autor no contestaba los comentarios o no proveía más información (con algunas excepciones de autores reconocidos o temas puntuales).
En teoría se debía calificar respecto a la propuesta concreta, no sobre la hipotética charla que nos gustaría ver.

Si mal no recuerdo, las charlas con todos los votos negativos se descartaron directamente. Las que no tenían algún +1 quedaban en el limbo como dudosas. Las que tenían exclusivamente +1 se aceptaban casi automáticamente, pero fueron las menos (IIRC). El esquema es parecido al que se usó en PyConAr los primeros dos años.

Luego vino el thunderdome, un "campo de batalla virtual" por chat para "luchar" a favor o en contra de cada charla (generalmente divididas en grupos de a 3-4, por afinidad, donde se debía aceptar, separar y descartar las propuestas). En mi caso no pude seguir el rítmo (perdí la cuenta de la cantidad de reuniones por IRC, a veces dos por día) y no llegué a comprender del todo algunos argumentos (en ocasiones parecieran bastante intuitivos en los escasos minutos que había disponibles para tomar una decisión sobre cada charla).

Por último, quedaron algunos espacios vacantes por lo que se resucitarón algunas charlas (aquellas separadas en el thunderdome) a criterio del coordinador de programa, que solicitó previamente algunos comentarios no vinculantes.
En mi humilde opiñon, este sistema es bueno para conferencias científicas/académicas donde uno tiene el artículo (paper) por anticipado y realmente hay pares expertos. Para conferencias comunitarias, creo que es mejor un sistema de voto alternativo por preferencias ponderadas (similar al sistema de Python Brasil y PyConAr en las últimas ediciones, incluyendo en ciertos casos una consulta al público que en definitiva es el que va a ver las charlas, como en EuroPython y PyConAr). 

Asistencia Financiera

Una de las principales barreras para asistir a PyCon US es el costo de los pasajes, estadía y entrada al evento (no es gratuito). Si bien no es algo impagable, los importes y el tipo de cambio son considerables para ir desde Argentina (desde 300 dólares la inscripción individual, 190 dólares la noche de alojamiento, 150 dólares cada tutorial, 1400 dólares el pasaje de avión, sin contar los costos de tramites visa, seguros, etc.).

El año pasado, luego de completar el formulario,  dado la gran cantidad de solicitantes, me ofrecieron la entrada sin costo y 1/5 del pasaje. Finalmente luego de algunos días de espera para ver si se podía conseguir fondos adicionales, lo decliné para dejarle lugar a otra persona a la que le cierren mejor los números.

Este año me ofrecieron algo similar (esta vez incluyendo noches de alojamiento, pero solo 50% de descuento en la registración bonificada). Luego pudieron ampliar la beca un poco y gracias a que pude sacar el pasaje con anticipación (bajo una promoción) y una mejor situación financiera personal, decidí emprender el viaje.

La Conferencia

Tutoriales

Tomé dos tutoriales:
  • Faster Python Programs through Optimization
  • How to get the most out of your PyPy
Para decirlo en criollo, tuvieron gusto a poco. En el primero tuve que compilar una herramienta (otras directamente no estaban soportadas) y en lineas generales no tuvo la profundidad esperada. En el segundo, termine encontrando un bug (feature no implementado) que me imposibilitó seguir.

Parece que no fue algo aislado, el día previo ayude a una señora que tenía problemas para instalar Qt en su Mac, y luego al cruzarmela en la registración habiendo tomado el tutorial, no lo pudo instalar ni con la ayuda del instructor (por el tiempo que requiere), por lo que lo tomo con humor decidiendo que no era para ella, a lo que le recomendé wxPython como alternativa antes de Tkinter, que estaba por empezar a ver.

Seguramente tuve mala suerte al elegir tutoriales que no eran para mi, ya que luego hablando con Tatiana Alchueyr, me comento que había asistido a un tutorial que estuvo muy bueno.

WebDev Summit

De lo mejor que vi en la conferencia. Un día entero dedicado al desarrollo web, con varios paneles tratando las distintas problemáticas:

Me tocó reemplazar a Massimo Di Pierro como disertante en el panel "Factoring Code for Reuse", ya que por tema de horario él no podía asistir. Espero haber cumplido, lamentablemente mi Inglés no es perfecto pero viendo al moderador y charla informal posterior, entiendo que el mensaje llegó satisfactoriamente.

Lo interesante fue ver como web2py encara satisfactoriamente algunos temas planteados, que no fueron considerados (calculo por desconocimiento) en la mayoría de ocasiones, como el despliegue simil .WAR con un paquete todo-incluido; reuso de otros modelos/componentes intercambiable entre bibliotecas; y promoción de Python para la Web (windows, educación, diseñadores y no programadores, etc.).

Afortunadamente Massimo llegó luego del almuerzo y pudo dar una charla relámpago mencionando el modo en que web2py esta afrontando estos temas, espero que sirva para hacer de Python realmente una comunidad más diversa...

Más alla de esto, fue muy interesante la jornada, viendo un poco cual es la tendencia actual, cuales son los problemas que enfrentan otros frameworks y buscar formas de colaborar (que discutimos luego en los sprints).

Backstage, Registración y Desayuno

La noche del Jueves se realizó el armado de bolsas (todavía no entiendo como se llenaron 2000 bolsas en un par de horas, teniendo en cuenta que incluía bastantes materiales e incluso otra bolsa). No tengo la cuenta, pero todos fueron voluntarios, tanto disertantes como organizadores y participantes ayudaron por igual.


Por la mañana del viernes fue el grueso de registración (pasabas el código de barras impreso en la hoja, te entregaban otra hoja troquelada para hacer origami y armar el identificador con el colgante, a lo que se le pegaban las cintas según el tipo de participación):


Ayude en lo que pude en ambos, fue útil para conversar y conocer gente, por ej. le entregue la remera a Armin Ronacher, y de paso le pregunté si quería venir a Argentina.

El desayuno en el lugar también fue útil para charlar con gente y aprovechar mejor el día, lo que se complementaba con el almuerzo también en el lugar, donde por ej. nos juntamos con Tatiana para conversar temas de PyConAr 2012 y PythonBrasil 2012, y de casualidad me sente en la misma mesa que Brett Cannon, asique aproveche para comentarle sobre PyConAr (Ricardo Kirkner había hablado algo con él previamente).

Charlas 

El Viernes, Sábado y Domingo fue el evento principal. Más de 100 charlas llenaron el cronograma:

Apertura, Keynotes y Plenarias


La apertura fue muy entretenido, con un show de robots comandados por python (hubo una mínima demora esperando que la mayoria apague sus notebooks por la interferencia). Luego en el stand se pudo apreciar de cerca (ver abajo).

La primer keynote, Stormy Peters de Mozilla, no tuvo mucho que ver con Python pero si con la comunidad, el open source. Si mal no recuerdo, arrancó como la web influye hoy por hoy nuestras vidas, habló de no maltratar ni espantar a los nuevos usuarios, no imponer el software libre a toda costa, etc.
Para la segunda keynote estaba ayudando en la registración, pero por lo que escuche, fue más orientada a startups.

La plenaria del Sábado (David Beazley) fue mucho más interesante y orientada a python (anunciada como técnica y diabólica), pero me quedo un sabor agridulce al ver la conclusión final sobre el futuro (no quiero faltar a la verdad con mi mala memoria, les recomiendo que la vean ya que es muy llevadera, tiene el estilo de Roberto Alsina).
La plenaria del Domingo (Guido) obviamente fue 100% python, con un mensaje sobre el GIL y Android para pensar. En general, los consejos fueron interesantes, y el panorama del mundo Python creo que lo dejo en claro.

Charlas Programadas

Hubo charlas muy interesantes para mí como la de Armin Ronacher ("Code Generation in Python: Dismantling Jinja") y en menor medida, "Stop Writing Classes", "Web Server Bottlenecks And Performance Tuning", "RESTful APIs With Tastypie", "How CherryPy supports Python 2 and 3", "Spatial data and web mapping with Python", "Deep Freeze: building better stand-alone apps with Python". 
Si bien ninguna tuvo la verdad revelada (dificil para 30 o 40 minutos), me llevé consejos utiles de ellas para procesar luego con más tranquilidad (que todavía no tuve).

A la de Raymond Hettinger ("The art of subclassing") no pude entrar porque estaba llenno, pero aparentemente también fue muy buena.
Otras, como "Putting Python in PostgreSQL" y "web2py: ideas we stole and ideas we had", me fueron útiles desde otra perspectiva, mas que nada, el modo de presentación, la interacción y preguntas.


Una frase que me quedo dando vuelta fue "For the questions I warn you: I'm an architect so I don't know the details". Me pareció raro en una conferencia de este tipo (dado el tipo y descripción de charla). En estos casos, creo que tener de antemano el borrador de la presentación o un articulo/paper ayudaría a que no haya malos entendidos. 

También me llamó la atención que la mayoría de las charlas terminaban con un mensaje tipo "Tenemos un startup, estamos reclutando empleados!", algunas llegando al punto de sobrevolar los temas técnicos para directamente recomendar contratar la solución comercial que ofrecían. 
No digo que este mal, de hecho me parece útil conocer todas las opciones, solo que algunas me tomaban desprevenido.

En algunas charlas trate de ayudar como session runner, no sin los sobresaltos típicos (el disertante no aparecía en una charla, el session chair no aparecía en otra, el session runner -yo- llegaba tarde y temas menores), igualmente fue enriquecedor y sirvió para romper un poco la rutina. La "green room" donde se reunía a los disertantes antes de la charla y se los obligaba a terminar (grabar en el pendrive) y probar la charla en el proyector fue bastante útil. 

Charlas Relampago

Las charlas relámpago de 5 minutos que ví fueron muy interesante, lastima que el video de PyAr que habíamos hecho (JuanBC principalmente, con la colaboración de todos) no fue seleccionado...


Este año cambiaron las reglas y la selección en vez de ser por orden de llegada fue aleatoria (y el cronograma era bastante rígido, al punto de no poder cambiar el contenido de los slots que fueron adjudicados a otros miembros de PyAr). De haberlo sabido, quizás hubiera armado un poster o pedido  un stand comunitario. 


Particularmente no se si es el mejor método para elegir charlas relámpago, ya que las hojas se llenaban estando hasta dos días disponible sin limite práctico (o sea, se anotaron 2 o 3 veces más propuestas del tiempo disponible). Creo que de este modo se pierde un poco la mística, en cambio, limitar a 10 charlas + backups me parece que le da más entidad, obligando a preocuparse y negociar un poco más con otros disertantes y el coordinador  (salvo que falle la interfaz humana, como en este caso).

De hecho, este tema (expresado en un email de "feedback" en la lista de organización por quien escribe), sumado a que se rechazaron la mayoría de charlas de comunidad, quizás dé nacimiento a un track "comunidad" valga la redundancia, para agrupar las charlas que no cumplen los criterios de "notoriedada" y "audiencia" necesarios para las charlas generales.

Espacios Abiertos

Prácticamente me los perdí, estaban un poco alejados y no estaba muy atento a los temas que se presentaron. 
De hecho, con Massimo armamos un espacio abierto de web2py al que no asistí porque se me superpuso con una charla y al llegar ya era tarde (en realidad me olvidé...). 
Todavía me arrepiento ya que la charla no estuvo muy buena y me perdí de hablar con Guido, que estaba interesado en el depurador web (si, leíste bien, aparentemente GvR fue al OpenSpace de web2py...).

El Testing BOF lleno mucha gente, no me pude quedar porque ya estábamos cansados, pero tenían proyector y todo, también me queda como asignatura pendiente para la próxima.

Salón de Exposición

Expositores

El Viernes y Sábado armaron los stands de los expositores (Sponsors) y comunidad (PyLadies, Women Who Code, Pyramid). Eran varios stands, la disposición se asemeja mas a una evento comercial de TI (a diferencia de los eventos de software libre que he visto regionalmente).

Más allá del merchandising, no alcanzaban los intervalos para recorrerlo completamente e interiorizarse con cada Stand, lo que le aportaba mucho a la conferencia.   
Incluso cada tanto en el stand de NAO, los robot bailaban bajo la influencia pythónica:

 

(perdonen la calidad de la foto, la camara tenía problemas con poca luz, por suerte la perdí...)

Posters y Feria de Empleos

Los posters fueron otro punto fuerte de la conferencia a mi entender. Del hall de esposiciones levantaron los stands y cada uno armo su poster. Durante una hora y media la gente se mostró muy interesada en los más de 40 posters, incluso el mismo GvR recorrió algunos y converso con los expositores. 


El pizarron con mi poster (en ocasiones, flanqueado por Massimo en el poster secundario de web2py)


En el fondo se ubicó la  Feria de Empleos, un lugar con mesas para que los Sponsors pudieran realizar entrevistas laborales y hablar con los interesados.

Sprints de desarrollo

Las reuniones de desarrollo fueron otro punto considerable de la conferencia. Según los organizadores, se lograron juntar alrededor de 700 desarrolladores el primer día.

Si bien había proyectos para todos los gustos, estuve organizando un sprint de web2py, con varios interesados, principalmente:
  • Discutiendo temas surgidos del summit como gluino (un mini web2py que corre sobre flask, bottle, e incluso django) 
  • Implementando nuevos features, como el editor Ace para web2py, soporte para toscawidgets, coffeescript, etc.
  • Resolviendo algunos bugs y recibiendo feedback de los usuarios
El resultado fue positivo, si bien Massimo tuvo que partir temprano, estuvimos trabajando varios días y la interacción con otros desarrolladores fue muy buena, abriendo un camino para que el año que viene otro desarrollador de web2py tome la posta y continuemos expandiendo nuestra comunidad.


web2py sprint

Hallway track, cenas y Party Nights

Los pasillos en los intervalos fueron el mejor lugar para conocer gente, charlar y coordinar otras actividades, como las cenas y salidas (por cierto, no había muchos lugares cerca y encima casi todos cerraban a las 8pm por ser zona comercial, y como el transporte público existe y es regular -cada 1 hora-, conviente alquilar un auto o quedarse en el hotel).

También conversé con Josh Berkus (core de PostgreSQL) acerca de que quizás sea interesante armar un PgDay en paralelo/cerca de la PyCon y aprovechar speakers en común (me vino a la mente Hannu Krosing, quién fue DBAs de Skype y miembro del proyecto SkyTools: replicación + python, ha dado charlas en otras PyCons, etc).

Me encontré con usuarios de web2py de diversas partes del mundo (España/Finlandia, Brasil, India, Canada y por supuesto de EEUU). También me cruzé y con gente de Reino Unido, Austria, Singapur y otros países que ya no recuerdo.


Algunos días hubo fiesta, PyCon Party y PyLaydies. A la primera, si bien tenìa la entrada, no fui ya que estabamos reunidos con gente que no tenía entrada. A la segunda, fuimos y ahí con Massimo nos encontramos con Tatiana, donde lo invitamos a ambas conferencias.

Cerrando la reseña, en el lobby del Hyatt había un Pizarrón para grafitis lleno de mensajes, como ejercicio se puede comparar el  antes y después (¿por que es la progamación tu pasión? qbasic rules!): 


Yapa

Santa Clara esta en el medio del Silicon Valley, asique había cerca varios museos, incluyendo el de Intel (con su frase inspiradora: "Don't be encumbered by history. Go off and do something wonderful") y el Museo de la Historia de la Computadora (donde se exhibe el libro "The Mythical Man Month", referencia inicial de mi tesis y del póster):


 

También se puede observar el botón "Steal From Your Friends" de la comunidad DECUS, y un recordatorio sobre "Sharing Software and Advice", como muestras de cooperación de hace más de 50 años.

Post-Conferencia

Aprovechando que estabá alla, como mini vacaciones me tome unos días para recorrer San Francisco y los Parques Nacionales de la zona.

En el Sprint conocí a Ramiro da Luz, miembro de Python Brasil y organizador de varios eventos, asique pasamos el fin de semana conociendo California y entre las sequoias conversamos sobre Python, web2py, PyConAr, PythonBrasil, PyAr, APyB, el trabajo y la familia.

 
 

"La fiesta termino ... y todo sigue igual", es hora de arrancar con la organización de PyCon Argentina 2012, cualquier cosa nos vemos en la próxima reunión. Traje merchandizing para repartir!

YMMV

viernes, 3 de febrero de 2012

A new web2py online python debugger

I've finished a new online debugger, based on my previous work on qdb module (bdb/pdb enhancement):


In contrast with pdb, this debugger is based on a client/server model, so it should be more stable and extensible than my previous approach (a piped command line loop, see current debug.py module, a naive attempt to use pdb in a web environment, it is mostly undocumented as it requires some advanced python skills to use pdb commands without blocking the whole web2py server).
In fact, qdb is based on the python bdb debugger framework (borrowing most commands from pdb), and it comes with a CLI, a separate GUI frontend (using wxpython), and for web2py, this totally web based interface.

Although this blog post is about web2py, qdb can be used to make debuggers for other frameworks too, you can use WebDebugger as a base to make controller/views with your favourite web stack.

Currently, this web2py debug implementation uses threads (debug and web ui, automatically managed by default web2py development server) and queues to communicate between them, but this can be extended to use multiprocessing client/listeners or anything with that interface (send, recv and poll, using socket or pipes).

Download:

The web2py package with integrated debugger can be downloaded from my site:

http://www.sistemasagiles.com.ar/soft/web2py_src_debug.zip

The full source code and revisions are in my web2py repo clone in googlecode:


You can download it with mercurial: 


Also, if you have the latest trunk, you can patch it with:


(the changes are in the default branch so will not create nasty repository effects)

Brief Changelog:

web2py is great because it is small and concise, so most changes are less than 100 lines (and some were trivial):
  • added gluon.contrib.qdb , the debug backend and basic frontend
  • updated gluon.debug to create the qdb client/server debug queues and the web frontend
  • updated applications/admin/controller/debug with interact and breakpoints controllers
  • added applications/admin/views/debug/interact.html and breakpoints.html
  • updated applications/admin/views/default/edit.html to add toggle breakpoint button
  • updated applications/admin/models/menu.py to add top-level debug menu
  • updated applications/admin/js/static/ajax_editor.js (toggle breakpoints) and style.css
  • updated gluon.html.CODE and gluon.highligh to show the context relevant lines 
The full change log is available in the repository here. It took me less than 8 hours to add a debugger to web2py, very nice!

Usage:

Basic interaction (step, next, continue, return, stop, etc.), with the highlighted code, locals/globals and a interactive console to execute python statements in the debug environment.
Access it from the added "Debug" main menu button (or go to http://localhost:8000/admin/debug/interact):



To evaluate an expression, enter it in the second textarea, press enter and it will be executed in the debugger.

The result, if any, will be shown in the upper textarea. You can execute any valid python command, including python assignment statements.

To execute the current statement, press step. If you do not want to enter to functions, press next. To run the program until it finish or a breakpoint is reached, press continue. To cancel execution, press stop.


Breakpoints (including temporary and conditional ones, with hit count) can be accessed from the Breakpoints button at the main debug page (or go to http://localhost:8000/admin/debug/breakpoints):



Temporary breakpoints are deleted automatically after the first hit, and conditional breakpoints only matches if the associated python expression evaluates to True. 
Also, the breakpoint page can show the context source code according to the line number specified.

The breakpoints can also be added and removed from the edit window (new Toggle Button near back/docs, for example, in http://localhost:8000/admin/default/edit/welcome/controllers/default.py):


 


It also can debug exceptions (handled or unhandled, note the exception info and traceback). After you inspect the local or global variables, press continue so normal exception handling will be done:


  


With this changes, web2py can offer a complete online and ubiquitous Integrated Development Environment, so you don't need to learn any external tool to create web sites!

This debugger was tested this on Ubuntu and Windows XP, but it should work in mac and other linux flavours too, as it is pure-python and no third-party dependencies are required.

Future enhancements (supported by the backend, but not implemented already in the web frontend):
  • Jump to line and Run to line
  • Moving Up/down through the stack trace
  • Watch variable list (now they can be manually inspected with the interactive console)
Current drawbacks and limitations:
  • from gluon.debug import dbg;  dbg.do_debug() or dbg.set_trace() should be called from the model/controller to run under debug control (if not, normal web2py dispatch occurs, no breakpoint is honoured). UPDATE: the debugger is automatically started if debug interaction page is opened or breakpoints are set (see wsgibase web2py entry point to run controllers)
  • The debugger is threaded, so beware of apache prefork and similar (the backend supports remote debugging, but it is more trickier to set the breakpoints). This also applies to the current shell and similar tools like paste. See modwsgi Debugging Techniques (Browser Based Debugger). Anyway, I'm working in a full remote multiprocess debugger (that is supported by qdb CLI and GUI right now)
  • Secondary effects can appear if debug more than a function at a time (it will not die, but it is more difficult to follow)
  • I didn't find a way to add markers to editarea yet (ie. a red circle near the line number to indicate a breakpoint)
  • Debugging cannot be limited per application (FILTER_APPS and multi user mode cannot be enforced)
  • Compiled apps cannot be debugged as easily as non-compiled ones (breakpoints must be set manually with set_trace)
  • Some style/layout details are missing

So, if you want to try it, just set breakpoints and execute your controller to start debugging and enjoy ;-)