Actividades Aceptadas
Nota: El listado de actividades es provisorio, próximamente será actualizado con las charlas plenarias, paneles y talleres
¡Quedate conectado con PyConAr para más info y novedades!.
Keynote
The State of Django
Jacob Kaplan Moss (Django)
bio
45min Nivel Intermedio
Categorias:
"Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
Django 1.0 was released in September 2008. This release marks a major turning point in Django's development; a real maturation of the project. Join the lead developers of Django as they discuss what's new in Django 1.0, cover the Django 1.1 release (currently scheduled for a few weeks before PyCon), and discuss the project's future."
Unladen Swallow
Collin Winter (Google)
bio
45min Nivel Intermedio
Categorias:
"An optimization branch of CPython, intended to be fully compatible and significantly faster.
We want to make Python faster, but we also want to make it easy for large, well-established applications to switch to Unladen Swallow.
1. Produce a version of Python at least 5x faster than CPython. 2. Python application performance should be stable. 3. Maintain source-level compatibility with CPython applications. 4. Maintain source-level compatibility with CPython extension modules. 5. We do not want to maintain a Python implementation forever; we view our work as a branch, not a fork. "
Panel
Panel: Traduciendo Aplicaciones, Bibliotecas y Documentación
Alejandro J. Cura (PyAr)
bio
"alecu" el hombre de los múltiples sombreros, se sacó la galera de programación ante Python cuando lo conoció en el '96. Tiene 33 años, es programador autodidacta desde los 12, y dirige la consultora Vortech. Entre conejos y palomas en su galera encontramos también al equipo argentino que fue premiado con un primer y segundo puesto en varias ediciones de la competencia internacional PyWeek. alecu suele dar charlas sobre dicha competencia, sobre la biblioteca PyGame y sobre desarrollo en Python para OLPC en eventos nacionales y también fue invitado a exponer en PyCon 2007 en Dallas, EEUU y en EuroPython 2007 en Vilnius, Lituania. Hace muy poquito alecu se calzó también un bombín de papá para recibir a Amelia.
45min Nivel Intermedio (Sábado 05 11:00 Sala Auditorio Raymond Hettinger)
Categorias:
Varios miembros de Python Argentina participan activamente en la traducción al castellano de aplicaciones hechas en Python, de bibliotecas hechas con Python y de documentos tales como Manuales y Tutoriales. En este panel se presentarán estos proyectos de traducción y las herramientas y técnicas utilizadas.
En este panel participarán un representante de la traducción de cada uno de estos proyectos:
* el Libro de Django
* el Tutorial de Python
* la Documentación de PyGame
* Django
* Trac
* Plone
* y yo, que hago las veces de coordinador del panel.
Se tratarán los siguientes temas:
* herramientas usadas para traducir, y experiencias usando esas herramientas
* que modismos se usan para las palabras técnicas o guías de estilo
* Castellano de España vs. Castellano Rioplatense vs. Castellano Latinoamericano.
* estado de la traducción de cada proyecto
* versiones de traducciones vs. versiones de upstream
* visión a futuro
Los panelistas confirmados a la fecha son:
* Roberto Allende
* Hugo Ruscitti
* Leonardo G. De Luca
* Manuel Kaufmann
* Manuel Muradás
PyQt + wxPython + PyGtk: una comparación parcial y balanceada
Roberto Alsina (Net Managers)
bio
Roberto Alsina es un programador amateur, administrador de sistemas de profesión, y actualmente socio en Net Managers SRL, una empresa de sistemas y consultoría que utiliza exclusivamente software libre. Durante varios años formó parte del proyecto KDE, usa Python hace mucho tiempo, y ha escrito varios tutoriales y dado charlas sobre PyQt.
45min Nivel Intermedio (Sábado 05 10:00 Sala Auditorio Guido van Rossum)
Categorias:
En esta charla se mostrarán ejemplos de las diferencias entre PyQt y otros toolkits de interfaz gráfica, como wxPython y PyGTK.
Se alentará la discusión con programadores que conozcan las alternativas, creando un ambiente de sano y productivo debate.
Partiendo de una sencilla aplicación ejemplo, se mostrarán 3 aspectos importantes en el
desarrollo:
1. Creación de interfaces "correctas"
=====================================
Hoy en día una interfaz gráfica necesita cumplir con muchas normas y criterios de "buenas
prácticas" Espaciado, soporte para localización e internacionalización, adaptación a
los estándares específicos de cada plataforma.
Es trabajo del toolkit de interfaz gráfica hacer que esto sea lo más sencillo e
indoloro posible. En esta parte de la charla se mostrarán algunas de las diferencias
entre Glade, Designer y Boa Constructor.
2. Riqueza de la interfaz
=========================
¿Hay algo que se pueda hacer con un toolkit y sea imposible con otro?
¿Hay algo que sea **mucho** más fácil con uno que con otro?
En esta sección de la charla veremos que "ladrillos" nos dá cada toolkit para la
construcción de la interfaz, cuales faltan, cuales son mucho mejores en un caso que en otro.
3. Miscelánea
=============
Licenciamiento. Soporte multi-plataforma. Velocidad. Tamaño del "ejecutable".
Todos factores que pueden ser importantes para decidir cuál elegir.
-------------------
Intento dar esta charla en conjunto con una o dos personas más, que sean
expertos en wxPython o PyGTK, a fin de que si bien sea una visión parcial,
sea una visión balanceada.
Charla
"Py qué??? ...no me vengan con cosas raras" - Agrupando docentes inquietos
Javier Castrillo (Gleducar, PyAr)
bio
Javier Castrillo es docente desde 1993 en la rama de adultos y Formación Profesional de la Pcia. de Buenos Aires, especializado en educación popular. Desde hace unos años coordina la migración a software libre de 20 Centros de FP de la provincia. Programador autodidacta, pasó por Pascal, Basic, PHP, C hasta que conoció Python y allí encontró su lenguaje ideal. Desde el año pasado dicta cursos de Python en el CFP N° 401 de Vicente López, siendo la primera experiencia de este tipo en la provincia de Buenos Aires.
45min Nivel Principiante (Viernes 04 15:00 Sala Auditorio Raymond Hettinger)
Categorias: case study, community, education
Sobre la experiencia de una escuela oficial de la Provincia de Buenos Aires, que implementó cursos de programación usando Python, se analizará la implementación de Python en la escuela pública y su impacto comunitario.
"Py qué??? Yo soy maestro... no me vengan con cosas raras"
==========================================================
(Motivando docentes inquietos)
------------------------------
La 'Escuela de Oficios San Cayetano '
, dependiente del Centro de Formación Profesional 401 de
Vicente López, ha implementado en sus carreras oficiales, la enseñanza de Programación
usando exclusivamente el lenguaje Python.
Luego de su segundo año de implementación, como responsable del proyecto y docente del mismo,
quiero compartir con la comunidad Pythonera esta experiencia y animar a otros docentes de
todas las ramas de la educación a seguir este camino y a mejorar lo realizado.
Luego de estos primeros dos años, lo que era un simple curso de programación ha tomado
dimensiones inesperadas que pueden ser analizadas desde diversos ángulos:
* Técnico
* Libertario
* Social
* Comunitario
* Personal y de pertenencia
Además, como corolario, hay una pata importante y totalmente inesperada, que es el nuevo
horizonte que se plantea a través del proyecto inicial, con una cantidad de proyectos hijos
que surgieron naturalmente y que están en marcha.
Espero que esta síntesis sea demostrativa de lo que queremos expresar. Muchas gracias a los
organizadores por permitir presentar esta propuesta, y sepan que más allá de su aprobación
o no para el evento, pueden contar con nosotros para lo que consideren necesario.
Armando un sitio Plone en 30 minutos (la versión en vivo)
Emanuel Sartor (Menttes)
bio
Emanuel Sartor egresó como Analista en Computación en la Universidad Nacional de Córdoba en el año 2003. Es cofundador de Menttes (menttes.com), una empresa de desarrollo de software y consultoría informática completamente basada en Software Libre. Sus roles principales en la empresa son: la gestión de proyectos, el entrenamiento y el desarrollo de aplicaciones web. En cuanto al desarrollo, se dedica principalmente a la construcción de aplicaciones web usando Plone, y en menor medida usando Pylons y Django. Tiene una activa participación en la comunidad Plone: es miembro y cofundador del grupo de usuarios de Plone del Cono Sur; ha publicado extensiones para Plone y ha colaborado con la difusión de Plone en numerosos eventos de comunidad.
45min Nivel Intermedio (Viernes 04 12:00 Sala Auditorio Guido van Rossum)
Categorias: agile, cms, framework, plone, web, zope
En esta charla se mostrará cómo producir un sitio Plone en 30 minutos tratando de ilustrar algunas de las actividades centrales de la utilización y el desarrollo Plone tales como el agregado de nuevas funcionalidades, personalización de la apariencia gráfica y configuración de roles y permisos; finalizando con la puesta en producción y administración del contenido.
Introducción
============
Plone es un flexible y poderoso sistema de gestión de contenido web desarrollado sobre Zope, un framework web escrito en Python. Por su fácil instalación y alto nivel de usabilidad es a menudo una de las opciones predilectas de usuarios no técnicos que desean gestionar contenido a través de la web. A su vez Plone es utilizado como una plataforma para desarrollar aplicaciones web centradas en contenido. Éstas caractéristicas hacen de Plone un alternativa muy atractiva tanto para gestores de contenido como para desarrolladores de aplicaciones.
Dos de las principales características de Plone son, por un lado las facilidades que provee para definir distintos niveles de acceso al contenido, ya sea para consulta o edición; y por otro, la flexbilidad para adaptarse a un flujo de trabajo específico. Gracias a esto, distintos tipos de organizaciones como ONGs, PyMEs, grandes empresas, organizaciones educativas o gubernamentales, lo utilizan como su herramienta principal de colaboración, con una instalación por defecto o modificándolo para adecuarlo a sus necesidades.
La charla
=========
En esta charla se construirá una intranet utilizando la instalación por defecto de Plone y agregando nuevas funcionalidades en distintas etapas. Para culminar con un sitio on-line que podrá ser accedido por todos los participantes.
La charla será dictada por 3 personas, cada una de las cuales se enfocará en un tema específico del desarrollo propuesto.
Temario
--------
* Brevísima introducción a Plone y definición del sitio a desarrollar
* ¿Qué soluciona la instalación por defecto y qué nos falta?
* Selección e integración de módulos de terceros
* Personalización de la apariencia gráfica
* Configuración del entorno de producción
* Conclusión
Behind the scenes: Python bytecode
Matías Bordese (PyAr)
bio
Matías Bordese es Licenciado en Ciencias de la Computación de la Universidad Nacional de Córdoba. En los últimos 4 años ha estado desarrollando en Python y tecnologías relacionadas, tanto profesionalmente como en proyectos particulares, siempre interesado en aprender cosas nuevas.
45min Nivel Intermedio (Sábado 05 15:00 Sala Auditorio Guido van Rossum)
Categorias: case study, core, security, windows
El código Python se compila a una representación interna en bytes (o bytecode) que el intérprete luego ejecuta. Python ofrece un tipo interno para trabajar con el bytecode, los code objects. En esta charla se presenta brevemente la estructura de los archivos compilados de Python (.pyc), cómo obtener el bytecode, y finalmente algunos experimentos y herramientas para jugar con code objects.
Outline.
--------
- Python bytecode: de py a pyc
- Compilar código (compile[1] -python builtin-)
- Estructura de los archivos .pyc
- Presentación de los módulos marshall[2] y dis[3]
- Obtener code objects
- Ejecutar code objects (eval, exec)
- Desensamblar code objects
- Experimentos:
- byteplay[4]: manipulando code objects
- bytecodeAssembler[5]: creando code objects
- decompyle[6]: de pyc a py
- Caso de estudio: haciendo un poco de ingeniería inversa sobre un "crackme"[7] simple
- Extraer el code object de un exe compilado con py2exe
- Desensamblar y entender el programa
- Generar el serial válido
[1] http://docs.python.org/library/functions.html#compile
[2] http://docs.python.org/library/dis.html
[3] http://docs.python.org/library/marshal.html
[4] http://code.google.com/p/byteplay/
[5] http://peak.telecommunity.com/DevCenter/BytecodeAssembler
[6] http://sourceforge.net/projects/decompyle
[7] http://en.wikipedia.org/wiki/Crackme
Byte Twiddling: Optimizando el manejo de (muuuuchos) bytes
Alejandro J. Cura (PyAr)
bio
"alecu" el hombre de los múltiples sombreros, se sacó la galera de programación ante Python cuando lo conoció en el '96. Tiene 33 años, es programador autodidacta desde los 12, y dirige la consultora Vortech. Entre conejos y palomas en su galera encontramos también al equipo argentino que fue premiado con un primer y segundo puesto en varias ediciones de la competencia internacional PyWeek. alecu suele dar charlas sobre dicha competencia, sobre la biblioteca PyGame y sobre desarrollo en Python para OLPC en eventos nacionales y también fue invitado a exponer en PyCon 2007 en Dallas, EEUU y en EuroPython 2007 en Vilnius, Lituania. Hace muy poquito alecu se calzó también un bombín de papá para recibir a Amelia.
45min Nivel Intermedio (Viernes 04 11:00 Sala Auditorio MSA)
Categorias: extensions, graphics, optimization, sound
La manera más obvia de manipular secuencias de bytes en Python casi nunca es la que procesa los datos de la forma más rápida. Para evitar caer en la pérdida de tiempo de programador que supone codificar un módulo en C, presentaremos en esta charla algunas de las técnicas que permiten operar de forma óptima sobre secuencias de bytes (que representan imágenes, sonidos y coordenadas), tanto de la biblioteca standard de Python como de algunas extensiones comunes como son NumPy, Imaging y PyOpenGL.
Temario
-------
* bytes, bytes, bytes
* Caso 1: Bustrofedón
* Algunos conceptos básicos
* tipos de datos
* endianness
* stdlib: struct.pack
* stdlib: array
* numpy
* Python Imaging Library
* tipos de datos: Bits per pixel
* Caso 2: Optimizando tinysynth
* stdlib: wave y audioop
* tipos de datos: sample width y sample rate
* PyGame: surfarray
* PyGame: sndarray
* Caso 3: Partículas con numpy
* OpenGL
* vertex arrays
* tipos de datos
* display lists
* Al pasar: ctypes
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Roberto Allende (Menttes, Plone Foundation, PyAr, PloneConoSur, FSFLA)
bio
Roberto Allende es Director Comercial en Menttes, empresa dedicada a proveer servicios de consultoría, desarrollo y entrenamiento en Python, Zope y Plone. Realiza actividades de entrenamiento y divulgación de Python, Plone y Software Libre. Es embajador de Plone Foundation para Hispanoamérica, Cofundador y administrador de Plone Cono Sur, contacto para América del Sur del proyecto PloneGov, realiza contribuciones en el proyecto Communes Plone y es miembro de la Plone Foundation. Ha participado como orador en múltiples conferencias internacionales, incluyendo PyCon (Chicago, 2009), FISL (Porto Alegre 2008, 2007), Jornadas Regionales de Software Libre (Córdoba 2007, Rosario 2006), PloneConf (Napoli, 2007) entre otras.
45min Nivel Intermedio (Sábado 05 10:00 Sala Auditorio MSA)
Categorias: django, framework, googleappengine, plone, pylons, turbogears, web, zope
Plone es un excelente sistema de gestión de contenidos. Recientemente ha sido elegido como el mejor CMS no-PHP en un popular concurso anual. A pesar de esto, muchos desarrolladores web de Python encuentran complejo a Zope, el framework con el que esta desarrollado el CMS.
Ahora, ¿qué tal si pudieras usar Plone solo como un gestor de contenidos y tu framework favorito, cualquiera sea, para implementar un front-end de forma transparente, obteniendo una configuración basada sobre una aplicación probada y de bajo mantenimiento, como backend siendo libre para escribir tu propia aplicación, usando el poder y flexibilidad de tu framework web?
En esta charla, se mostrarán ejemplos realizados con un par de productos de terceros de Plone y front-ends en varios frameworks.
Plone es un excelente sistema de gestión de contenidos. Recientemente ha sido elegido como el mejor CMS no-PHP en un popular concurso anual. A pesar de esto, muchos desarrolladores web de Python encuentran complejo a Zope, el framework con el que esta desarrollado el CMS.
Ahora, que tal si pudieras usar Plone solo como un gestor de contenidos y tu framework favorito, cualquiera sea, para implementar un front end de forma transparente, obteniendo una configuración basada sobre una aplicación probada y de bajo mantenimiento, como backend siendo libre para escribir tu propia aplicación, usando el poder y flexibilidad de tu framework web.
En esta charla, se mostrarán ejemplos realizados con un par de productos de terceros de Plone y fronts ends en varios frameworks.
Esta charla esta basada en dos trabajos presentados en Pycon 2009 EEUU: `A winning combination: Plone as a CMS, your favorite Python web framework as a frontend `_ por Carlos de la Guardia. Y la Lighting talk "Plyne", por Roberto Allende.
Temario
=======
1. Motivacion
2. Introducción a ContentMirrors
3. Configuración e instalación
4. Ejemplo usando Django y Pylons
5. Ejemplo usando GoogleAppEngine
6. Otras implementaciones
Cómo colaborar con Python
Manuel Kaufmann (PyAr)
bio
Manuel Kaufmann es estudiante en Ing. de Información de la UTN en Santa Fe. Actualmente trabaja en el Ministerio de Innovación y Cultura de la Provincia de Santa Fe, en la Sectorial de Informática como administrador de sistemas y desarrollando un sistema de cuentas para una empresa extranjera.Pertenece a la comunidad de Python Argentina y participa también en algunos grupos de Software Libre.Su blog es:
http://humitos.wordpress.com
45min Nivel Principiante (Viernes 04 14:00 Sala Auditorio Raymond Hettinger)
Categorias: community, documentation, language
La idea principal de esta charla es animar a la gente a buscar, reportar y corregir bugs de Python en general, como así también de algún framework. Aunque parezca algo de extremada complejidad, corregir un bug puede ser tan sencillo como cambiar una única palabra, pero este simple cambio ayudará a mucha gente con un esfuerzo mínimo de nuestra parte.
Comenzaremos hablando un poco de Python, de qué es un bug y cómo se encuentran. Lo que se
necesita saber antes de comenzar, y dónde obtener ayuda para este procedimiento si es que
nos quedamos bloqueados a la mitad del mismo.
Haremos el camino típico de corrección de un bug, esto es, la descarga del código fuente, la
lectura de la documentación necesaria, los cambios en los lugares correctos y finalmente el
envío del parche *solucionador* :)
A medida que recorremos este camino explicaremos cada uno de los pasos detalladamente mostrando
los problemas típicos y con los que me he encontrado yo a la hora de intentar solucionar un
bug.
Finalmente se dejará un espacio para preguntas y para que el público cuente experiencias
personales en este tema y se intentará incentivar a todos los presentes a que participen de
este proceso.
*Documentación*:
* Paper explicativo: http://ar.pycon.org/common/2009/talkdata/2009/public/Paper_Como_colaborar_con_Python.pdf
* Bugs tracker: http://bugs.python.org/
* Buscador de bugs: http://www.taniquetil.com.ar/cgi-bin/pytickets.py
Cómo no morir de inanición trabajando con Software Libre
Leandro Monk (Gcoop)
bio
Leandro Monk es fundador de gcoop, la primera cooperativa de trabajo de Software Libre. Además, lleva años usándolo, difundiéndolo y ayudando en su desarrollo. Es miembro de CaFeLUG (Grupo de Usuarios de Software Libre de Capital Federal), USLA (Usuarios de Software Libre de Argentina) y PyAr (Python Argentina)
45min Nivel Principiante (Viernes 04 10:00 Sala Auditorio Raymond Hettinger)
Categorias: advocacy, community, political
En esta charla desarrollaremos las ventajas que tiene trabajar con Software Libre. Por que es conocimiento nos sirve a largo plazo. Y cómo, gracias al SL, podemos lograr el gran sueño, con poco podemos ganar mucho.
¿Qué es el Software Libre?
¿Por qué es el Software Libre?
¿Cómo se come con el Software Libre?
En esta charla desarrollaremos las ventajas que tiene trabajar con Software Libre.
Por que es conocimiento nos sirve a largo plazo.
Y como, gracias al SL, podemos lograr el gran sueño, con poco podemos ganar mucho.
Desarrollo de aplicaciones Python utilizando buildout y virtualenv
Juan Díaz (PyAr, Menttes)
bio
Juan A. Díaz es entusiasta del Software Libre y Debian en particular, estudiante de Ciencias de la Computación de FaMAF, UNC, sysadmin y programador Python.
45min Nivel Intermedio (Sábado 05 15:00 Sala Auditorio Raymond Hettinger)
Categorias: development, extensions, packaging
"Herramientas para desarrollar en Python y no romper los huevos." Buildout es una herramienta para administrar, a través de un archivo de configuración declaratoria, las partes y componentes de un desarrollo con Python. Dichas partes no están limitadas a componentes o código Python. Por medio de esta herramienta podemos lograr fácilmente un entorno de desarrollo que maneja automáticamente las dependencias necesarias para que cualquier colaborador pueda integrarse rápidamente al proceso de desarrollo.
Subtitulo: Herramientas para desarrollar en Python y no romper los huevos
Querés participar en un proyecto, probar algún aplicación nueva o invitar a otros a que participen del desarrollo de tu proyecto pero...
* Estas cansado de tener que instalar cantidades indecentes de dependencias para poder empezar a utilizar la aplicación o ver código que te interesa probar?
* Te desalienta el hecho de tener que preguntar o responder infinitas veces cuales son los pasos a seguir para instalar todas las dependencias de un proyecto?
* Te resulta tedioso tener que mantener un INSTALL.txt con la lista de librerías, y los pasos necesarios para repetir el ambiente de desarrollo ?
Para solucionarte la vida llego Buildout, un sistema que te permite fácilmente automatizar todas las instancias del proceso de desarrollo, donde las dependencias se manejan automagicamente instalando todas las partes necesarias, correr scripts de configuración, aplicar parches, todo lo que necesitas para desarrollar y no perder el tiempo.
En esta charla vamos a repasar el proceso de desarrollo de una aplicación Python, generar el ambiente de desarrollo y terminar con un huevo Python (Python egg) listo para ser subido al índice de paquetes de Python (http://www.python.org/pypi) para que cualquiera pueda instalarlo y simplemente usarlo.
-----
Buildout (http://www.buildout.org/) es una herramienta para administrar, a través de un archivo de configuración declaratoria, las partes y componentes de un desarrollo con Python. Dichas partes no están limitadas a componentes o código Python. Por medio de esta herramienta podemos lograr fácilmente un entorno de desarrollo que maneja automáticamente las dependencias necesarias para que cualquier colaborador pueda integrarse rápidamente al proceso de desarrollo.
Una de las mejores cualidades de Buildout es que este puede extender sus funcionalidades por medio de recetas que realizan tareas especificas como ser la instalación de nuevos componentes que descarga automáticamente del índice de paquetes de Python (http://www.python.org/pypi)
Temario.
* Python tiene Huevos!!!
* Eggs, PATH y PYTHONPATH
* setuptools y virtualenv
* Que es buildout?
* Syntaxis
* Recipes
* Linea de comandos.
* Pinnig, test y más.
Desarrollo tecnológico con Python: ciencia y tecnología a nuestro alcance
Alfonso de la Guarda Reyes (Centro Open Source, Perú)
bio
Comunicador Social con 25 años de experiencia en Tecnología informática. Director del Centro Open Source y Gerente de Investigación y Desarrollo de ICTEC SAC. Se dedica a implementar soluciones LINUX y FLOSS a diversas instituciones y empresas, así como ser invitado a diversos eventos sobre FLOSS. Tiene un especial interés por la investigación y desarrollo en diversas áreas que van desde las aplicaciones para negocios con Business Intelligence (con licencia GPL) hasta proyectos de simulación integrados con electrónica. Aperturó el primer Centro de Investigación y Desarrollo Independiente de Tecnologías FLOSS de América Latina (Centro Open Source) y es consultor tecnológico de la Dirección de Desarrollo Tecnológico del Ejército.
45min Nivel Principiante (Viernes 04 11:00 Sala Auditorio Raymond Hettinger)
Categorias: artificial intelligence, blender, development, electronics, gis, science, simulation
En la charla se presentará la aplicación práctica de Python dentro del Ejército Peruano, en áreas que van desde electrónica, pasando por simuladores hasta sistemas geo-referenciados. La idea es mostrar al público el potencial que tiene este lenguaje de programación en comparación con soluciones propietarias, pero -por sobre todo- resaltar su simplicidad y potencialidad. Forma parte también de la exposición la integración particular de Python con Blender para la generación de un simulador de tiro empleando el Game Engine. Aunque el tiempo puede resultar corto, se tocará lo referente a inversión de tiempo y dinero en la investigación, así como la reutilización de proyectos previamente existentes, los cuales facilitan la generación de un proyecto maduro y modular. Para generar más dinamismo, se hará uso de vídeos, fotos y código FLOSS para efectos explicativos, incluyendo algunos de difusión militar.
En la charla se presentará la aplicación práctica de Python dentro del Ejército Peruano, en áreas que van desde electrónica, pasando por simuladores hasta sistemas geo-referenciados. La idea es mostrar al público el potencial que tiene este lenguaje de programación en comparación con soluciones propietarias, pero -por sobre todo- resaltar su simplicidad y potencialidad.
Forma parte también de la exposición la integración particular de Python con Blender para la generación de un simulador de tiro empleando el Game Engine. Aunque el tiempo puede resultar corto, se tocará lo referente a inversión de tiempo y dinero en la investigación, así como la reutilización de proyectos previamente existentes, los cuales facilitan la generación de un proyecto maduro y modular. Para generar más dinamismo, se hará uso de vídeos, fotos y código FLOSS para efectos explicativos, incluyendo algunos de difusión militar. Para mayor información referirse a: http://alfonsodg.blogspot.com/ o http://alfonsodg.wordpress.com/
Nivel de la Charla: Introductorio
Tipo de Público: Público en general, organismos públicos, fuerzas armadas
Conocimientos Previos: Preferiblemente en ingeniería o ciencias de la computación
Tags: python ciencia tecnología desarrollo blender game engine
Teléfonos: (511)4722198 ó (511)991935157
Ciudad de Residencia: Lima-Perú
Emesene 2, un cliente de mensajeria multiplataforma
Mariano Guerra (PyAr, emesene)
bio
Mariano Guerra nació en 1985 en Córdoba, y es estudiante de Ingeniería en Sistemas de Información en la UTN-FRC. Es programador de Python desde 2006. Actualmente está realizando una pasantía en Intel ASDC y es miembro del Centro de Innovación Open Source. Es el creador de emesene www.emesene.org.
45min Nivel Principiante (Sábado 05 11:00 Sala Auditorio Guido van Rossum)
Categorias: community, gtk, gui, im, jabber, msn, network
En esta charla se hará un repaso por la historia, diseño, implementación y experiencia en el desarrollo de emesene y e3.
Emesene es un cliente libre multiplataforma de mensajería instantánea con soporte para las redes MSN y Jabber. e3 es una biblioteca para abstraer múltiples protocolos con implementaciones para redes MSN y Jabber (gracias al uso de la biblioteca xmpppy).
Tanto emesene como e3 están completamente escritos en Python.
En la presente charla se verán las nuevas características, tales como soporte para extensiones y plugins que permiten modificar y extender el aspecto y comportamiento del cliente y un ejemplo de un bot sencillo con soporte para MSN y Jabber.
Nota a los autores: lo deberia hacer mas especifico de python?
si es asi no tendria problemas, pero dado que es para nivel inicial
me parece que un overview esta bien
Introducción
============
* Que es emesene?
descripción de características, estado, licencia, screenshots mostrando funcionalidad
* Que es e3?
descripción de características, estado, licencia, protocolos que soporta
* Breve reseña histórica
como nació y evoluciono desde sus primeras versiones hasta el estado actual, porque otro cliente de MSN?
* Experiencia con la comunidad
como comenzó el contacto con la comunidad, contribuciones, forma de trabajo
* Lecciones aprendidas
que haría y no haría de empezar el proyecto de nuevo
Diseño e implementación
=======================
* Estructura de la aplicación
estructura de los módulos y APIS
* Extensiones
que son?, para que se usan?, ejemplos
* Abstracción del protocolo
API, características, beneficios
Ejemplos
========
* Plugin y extensión para modificar el aspecto y comportamiento de emesene
ejemplo básico de una extensión que modifica un componente de la interfaz y un plugin que agrega una característica
* bot básico con soporte para Jabber y MSN
un bot que se conecta y permite interactuar a través de comandos
Entendiendo Unicode
Facundo Batista (PyAr)
bio
Facundo Batista es Ingeniero Electrónico de la Universidad Nacional de La Matanza, con un Master en Ingeniería de la Innovación en la Universidad de Bologna, Italia.Trabajó en Movistar (antes Unifón) durante seis años, en el área de Administración de Redes Celulares, luego fue Jefe de Desarrollo en CycleLogic por un año y medio, Arquitecto de Soluciones en Ericsson Argentina, en la parte Multimedia, y ahora es Senior Software Developer en Canonical, programando Python en el equipo de Online Services.Fue profesor en la Universidad de La Matanza y en diversas instituciones secundarias y terciarias. También posee una amplia experiencia como analista de sistemas y programador, tanto freelance como bajo contrato, en diversos sistemas en múltiples plataformas y lenguajes.Siguiendo en el ámbito de la programación, ama Python, habiéndose convertido en Desarrollador Oficial del lenguaje y miembro de la Python Software Foundation, fundando luego Python Argentina. Fue invitado como expositor a numerosas conferencias nacionales e internacionales y dictó cursos de Python en universidades, ámbitos terciarios, y para particulares y empresas (más info:
http://www.taniquetil.com.ar/facundo/cursoPython.html).
45min Nivel Intermedio (Sábado 05 09:00 Sala Auditorio Guido van Rossum)
Categorias: core
La charla muestra de forma teórica/práctica qué son Unicode, las planillas de códigos, los caracteres, y las codificaciones, entra en detalle en las distintas codificaciones, para saber cómo usarlas, ejemplifica las reglas de oro para utilizar Unicode en nuestros programas, y termina mostrando algunas funciones útiles para el manejo de esa tecnología.
Pueden ver la charla completa acá:
http://tools.assembla.com/svn/homedevel/presents/unicode.odp
Entrenando a tu reptil favorito: aprendizaje por refuerzo en Python
Ricardo Kirkner (PyAr)
bio
Ricardo es Licenciado en Cs. de la Computación. Se recibió en 2007 en la Facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires.Sus intereses académicos se centran en la inteligencia artificial, específicamente en el aprendizaje por refuerzo.Actualmente trabaja desarrollando software en Python.
45min Nivel Intermedio (Sábado 05 09:00 Sala Auditorio Raymond Hettinger)
Categorias: artificial intelligence, case study, community
En esta charla se pretende dar una introducción a una de las ramas de la inteligencia artificial llamada "aprendizaje por refuerzo" (reinforcement learning). Se mostrarán algunas aplicaciones prácticas mediante una biblioteca de aprendizaje por refuerzo desarrollada enteramente en Python (reply).
Intro
------
Breve introducción a la inteligencia artificial, comentando los distintos enfoques
del aprendizaje automático en particular.
Aprendizaje por Refuerzo
--------------------------
Mayor incapié en esta rama en particular del aprendizaje automático.
Reply
-------
- Introducción a la librería de aprendizaje por refuerzo reply,
desarrollada enteramente en python.
- Por qué reply? Argumentos de por qué crear una nueva librería de aprendizaje.
- Por qué aprendizaje por refuerzo?
- Por qué inteligencia artificial?
- Próximos pasos
Demo
-----
Algunos ejemplos de aplicaciones desarrolladas con reply.
Q&A
----
Escribí menos código, pensá como un (buen) matemático
Gustavo Carmona (FCEYN - UBA)
bio
Gustavo Carmona es estudiante de Ciencias de la Computación en la Facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires.
45min Nivel Principiante (Sábado 05 09:00 Sala Auditorio MSA)
Categorias: concurrency, games development, math
La charla va a mostrar algunos problemas que un programador puede encontrar en su lugar de trabajo y una manera de resolverlos, si pensamos como un matemático. Veremos ejemplos de cruzamientos de listas de e-mails, mostrar datos provenientes de un archivo de texto o base de datos y volcarlos ordenadamente a una página web. Ejemplos de computación gráfica y números complejos. Si te preguntás ¿qué tiene de matemática?, veremos operaciones con conjuntos, congruencia y números complejos. No se necesitan conocimientos previos, solo ganas de aprender.
La idea que tuvimos entre un profesor de matemática de exactas y un alumno
(Cs. de la computación), es mostrar algunas herramientas matemáticas que se ven
en una casa de estudio y compartirlas con programadores juniors y freelance,
que no acceden a la educación universitaria.
Además de compartir conocimiento, deseamos mostrar a los oyentes lo bien que se llevan
python, un matemático y un programador.
Extendiendo PostgreSQL con PlPython
Mariano Reingart (Sistemas Ágiles)
bio
Mariano Reingart es analista programador freelance, docente y miembro del grupo de usuarios de Python de Argentina y de PostgreSQL Argentina. Es desarrollador de proyectos de Software Libre tales como PyReplica (replicación PostgreSQL) y PyAfip (factura electrónica). Cuenta con más de 10 años de experiencia en desarrollo e implementación de sistemas con VB, PHP, Python, PostgreSQL, tanto en Windows como en Linux, en PyMEs de diversos rubros. Actualmente también desarrolla actividades de consultoría y capacitación para empresas y organizaciones del sector.
http://linkedin.com/in/reingart
45min Nivel Intermedio (Viernes 04 14:00 Sala Auditorio MSA)
Categorias: case study, databases
PostgreSQL es el motor de bases de datos Objeto-Relacional más avanzado y potente del software libre.
Sumado a su excelente estabilidad, integridad y concurrencia, otra de las características sobresalientes del motor es la posibilidad de programarlo, creando funciones del usuario (stored procedures), embebiendo código de distintos lenguajes dentro del motor, entre ellos PlPython (Python Procedural Language)
Se introducirán los temas básicos y un caso de estudio real basado en sincronización de bases de datos remotas independientes.
PostgreSQL es el motor de bases de datos Objeto-Relacional más avanzado y potente del software libre.
Sumado a su excelente estabilidad, integridad y concurrencia, otra de las características sobresalientes del motor es la posibilidad de programarlo, creando funciones del usuario (stored procedures), embebiendo código de distintos lenguajes dentro del motor, entre ellos PlPython (Python Procedural Language)
Se introducirán los temas básicos y un casos de estudio real:
* Introducción. Conceptos básicos: funciones, disparadores, lenguajes procedurales.
* Instalación. Linux y Windows. Diferencias entre versiones.
* Funciones Básicas. Ejemplos: normalización de direcciones, calculo de coordenadas, etc.
* Funciones Avanzadas (tipos compuestos, múltiples filas o 'set-of', acceso a la base de datos)
* Disparadores (triggers)
* Consideraciones generales. Seguridad y rendimiento.
* Caso de estudio: PyReplica, replicación avanzada (sincronización de bases de datos remotas independientes, multiples sucursales, etc.)
Más información:
* PlPython en ArPUG: http://www.arpug.com.ar/trac/wiki/PlPython
* PlPython en PyAr: http://python.org.ar/pyar/PlPython
* PyReplica: http://www.nsis.com.ar/public/wiki/PyReplicaEs
Borrador:
=========
Diapositivas tentativas:
------------------------
1. Introducción. Conceptos básicos
2. Funciones: Parámetros de entrada y salida. Valores devueltos. Tipos: volátiles, estables e inmutables. Costo. Uso de NULL (estricto)
3. Disparadores. Diferencias con una función normal. Datos antiguos y nuevos. Modificación de datos o rechazos. Disparadores BEFORE (antes) o AFTER (despues)
4. Lenguajes procedurales. Lenguajes core (incluidos por defecto) y lenguajes externos. PlPgSQL, PlPerl, PlTcl, PlPython, PlPhp, etc.
5. Instalación de PlPython. Linux (debian). Windows. Diferencias entre versiones de PostgreSQL 8.x y Python 2.x
6. Funciones Básicas.
7. Ejemplos: normalización de direcciones, calculo de coordenadas, digito verificador, etc.
8. Tipos avanzados. Recibir y devolver tipos compuestos
9. SET-OF. Recibir y devolver conjuntos de filas ('set-of')
10. Acceso a la base de datos. Consultas simples. Planes de ejecución. Mensajes al servidor (debug, info, notice, error)
11. Disparadores (triggers). Parámetros de creación. Diccionarios new y old. Modificación de datos o rechazos
12. Seguridad. Lenguajes confiados y no confiados.
13. Rendimiento. Comparación de velocidad entre PlPgSQL, C y PlPython
14. Caso de estudio 1: PyReplica: Sincronización de servidores de respaldo y balance de carga
15. Caso de estudio 2: PyReplica: Sincronización de bases de datos remotas independientes.
16. Caso de estudio 3: PyReplica: Sincronización de multiples sucursales
Tiempos:
--------
Aproximadamente 2 minutos por slide, reservando 15 minutos para comentarios sobre los ejemplos, casos de estudio y preguntas generales.
Referencias:
============
Sobre PostgreSQL y PlPython:
----------------------------
* http://www.postgresql.org/docs/8.3/interactive/plpython.html
* http://www.arpug.com.ar/trac/wiki/PlPython: traducción y ejemplos
* http://python.org.ar/pyar/PlPython: traducción y ejemplos
Sobre PyReplica:
----------------
* http://www.nsis.com.ar/public/wiki/PyReplicaEs: documentación básica
* https://docs.google.com/Presentation?id=dd9bm82g_19gb36zrgz&hl=en: presentación para los PgDay 2008 y 2009, y la Flisol 2009
from wiimote import fun
Juan Manuel Schillaci (Lanux)
bio
Juan Manuel Schillaci es un desarrollador Python radicado en la zona sur del Gran Buenos Aires y uno de los fundadores de Lanux (grupo de Usuarios de GNU/Linux de Lanús). Trabajó en el proyecto de informatización de hospitales porteños con Python y como consultor de tecnologías libres en la Cancillería Argentina. Actualmente trabaja como Full Time Developer en Globant y desarrollando FileZaar
http://filezaar.com.ar.
45min Nivel Intermedio (Sábado 05 11:00 Sala Auditorio MSA)
Categorias: development, games development
La charla intenta dar a conocer técnicamente el dispositivo Wiimote (que se encuentra en las consolas de Wii de Nintendo). Cómo implementarlo en Python, conocer las bibliotecas disponibles, ejemplos, juegos y desarrollos multimedia y 3d que se están llevando a cabo por los disertantes usando Python como lenguaje de desarrollo.
from wiimote import fun
=======================
La idea es dar a conocer a través de la charla las diferentes maneras y usos que existen en
python para usar un Wiimote. Cada item/slide es complementado con ejemplos teórico prácticos,
no solo de código sino de implementaciones ya realizadas, a modo investigativo, aportando
además material visual, como la implementación de una batería virtual, lapiz "multitouch", y
varías otras aplicaciones multimedia. El tiempo promedio de cada Slide es de 4 minutos,
extendiendose en algunos casos en cada ejemplo práctico, de acuerdo al interés.
A continuación, una descripción detallada de cada slide:
Slide 1
=======
from wiimote import fun
-----------------------
Experimentando con un wii-remote en Python"
**Autores**
-----------
Chr - chr@lanux.org.ar
Ska - ska@lanux.org.ar
Karucha - karucha@lanux.org.ar
Slide 2
=======
Wii-Mote
--------
Que es?
Como se usa?
Acelerometro,(Imagen)
Cámara IR, (Imagen)
Botones, (Imagen)
Slide 3
=======
Acelerómetro
-------------
Parámetros
(Mostrar ejemplo)
Slide 4
=======
Cámara IR
----------
Parámetros
(Mostrar ejemplo)
Slide 5
=======
Botones
---------
Parámetros
(Mostrar ejemplo)
Slide 6
=======
Integración con Python
----------------------
Librería libcwiid
Librería WMD
Librería Pywii (PIC)
Slide 7
=======
Usabilidad vs Performance
-------------------------
libcwiid vs WMD
C vs Python
Slide 8
=======
libcwiid
--------
(Mostrar ejemplo - wii_test.py)
Slide 9
=======
WMD
---
(Mostrar ejempo wm_gui)
Slide 10
========
y Ahora que?
------------
**Pruebas realizadas en Lanux:**
--------------------------------
Bateria(Ejemplo de batería realizada en lanux)
Control Remoto(Wiimote dentro de un media center como Boxee o XBMC)
Otras aplicaciones posibles (Domótica)
Slide 11
========
Achuras Experience
------------------
http://www.achurasexperience.com.ar
Que es?
Cómo se penso el juego del Zapo?
Mostramos implentación lograda
(Mostrar Juego desarollado)
Slide 12
========
Lanux - PyAr
------------
Reuniones
Proyectos
http://www.lanux.org.ar
http://www.python.com.ar
Slide 13
========
Gracias!!
Preguntas!
Hackeando MIDI con Python
Anthony Lenton (PyAr)
bio
Ingeniero electrónico y analista en computación de la Universidad Nacional de Córdoba, y profesor de música del Conservatorio Provincial de Música de Córdoba. Dedica sus días a tocar en Python para su trabajo de desarrollador web en Canonical, y a programar un poco el piano en sus ratos libres.
45min Nivel Intermedio (Sábado 05 12:00 Sala Auditorio MSA)
Categorias: development, sound
Las bibliotecas Python para manejo de dispositivos MIDI saben ser una surtida jungla de soluciones obsoletas, incompletas o indocumentadas.
En esta charla motivacional veremos lo fácil que es hablar con un dispositivo MIDI valiéndonos de poco más que la biblioteca estándard, para no tener que esperar más por la herramienta definitiva que solucione nuestros problemas; y con suerte te irás queriendo probar estas cosas en tu casa.
Temario
=======
* El hardware, el dispositivo, el protocolo
* Cómo tomar los eventos de entrada y reproducirlos en la computadora
* Grabando MIDI en... algún formato.
* Cómo controlar nuestro instrumento
* Visualización de datos: Más informativo, o más estético
* Mi teclado como teclado: Usando dispositivos MIDI para controlar otras cosas.
* Si queda tiempo: Algunos filtros interesantes, y ayudas para el intérprete.
Hacking Django, mismo framework, distintos paradigmas
Nubis Bruno (Woobiz)
bio
Nubis es un programador entusiasta, investigador informal y promotor del software libre. Desarrolla aplicaciones para internet desde joven y es fundador de Woobiz, un estudio web cuya misión es desarrollar el tipo de software que sirve de puente para llevar las buenas ideas a la gente que las aprovecha.
45min Nivel Avanzado (Viernes 04 15:00 Sala Auditorio Guido van Rossum)
Categorias: django, web
Django es un conjunto de herramientas completo y muy extensible. Principalmente se lo ve como una herramienta para hacer aplicaciones web con un patrón MVC (o MTV). En esta charla vamos extenderlo para hacer aplicaciones web con otros paradigmas menos convencionales, sin desaprovechar el resto de las herramientas que provee. En particular vamos a hacer aplicaciones que usen: XML-RPC, views con lógica lineal, Comet (Server Pushing) y eventos full-dúplex sobre http.
Esta charla esta basada en otra que di, con un nombre similar, en el "Python Day en Santa Fe 2008".
Los principales cambios para quien vio aquella, son:
* El approach a 'COMET' yendo a la implementación estable en vez de la mas experimental.
* El agregado de una nueva sección sobre 'eventos full-dúplex sobre Http'.
* Los slides serian menos y mas gráficos.
* Los ejemplos son mas entretenidos.
Las duraciones que tengo planeadas son:
* Intro: 5mins
* XML-RPC: 15 mins
* Views con lógica lineal: 20 minutos
* Comet: 20 minutos
* Eventos full dúplex: 15 minutos
* Preguntas 15 minutos, aunque algunas preguntas también se responden en cada experimento.
Por eso preferiría disponer de dos bloques de 45 minutos, de corrido o con un break en el medio.
Alternativamente podría dar solo una charla de 45 minutos con 2 experimentos, o 4 charlas muy cortas una con cada experimento.
Outline
=======
Por que experimentar en django?
-------------------------------
* Porque las API's son muy estables, y los cambios en ellas bien documentados.
* Muchos puntos de extensión con API's y protocolos simples, django es un conjunto de herramientas independientes.
* Nuestro experimento tiene la posibilidad de llegar algo estable en producción.
XML-RPC: Que es?
----------------
* Llamar procedimientos en un server remoto usando xml sobre Http.
* Permitimos a terceros mejorarnos y/o sindicarnos de modo seguro.
* Mas diversidad de clientes.
* Permite dividir un webapp muy grande en distintos 'aspectos', corriendo en varios servers, desarrolladas por equipos distintos.
XML-RPC: Implementación
-----------------------
* Se publican métodos en un server HTTP.
* Se acceden desde clientes XML-RPC.
* Tenemos django-xmlrpc.
* Un view codifica-decodifica los pedidos y respuestas, ni una linea de xml.
* Colgamos ese view en alguna url
* Mapeamos funciones a servicios
* Las funciones no reciben el request
* http://code.google.com/p/django-xmlrpc/
XML-RPC: Demostración
---------------------
Vemos una pequeña aplicación parecida a twitter donde los usuarios publican contenidos con un cliente XML-RPC.
Views con lógica linear: Que son?
---------------------------------
* Lógica simple, fácil de seguir.
* Pueden suspender su ejecución y requerir mas datos de parte del usuario.
* Mantienen estado del server entre requests.
* Parecido a Seaside, UncommonWeb.
Views con lógica linear: Implementación?
----------------------------------------
* Es mas fácil con 'continuations'
* Casi cualquier mecanismo que relacione un usuario con un estado sirve.
* Puede tener mas o menos features.
* En python:
* co-rutinas (desde python 2.5)
* tasklets de stackless python. (pickleables)
* request = yield HttpResponse()
* Mantenemos el estado en memoria.
* Para balancear necesitamos soporte de sticky sessions.
* http://www.apsis.ch/pound o LVS
Views con lógica linear: Demostración
-------------------------------------
Vemos algunos ejemplos de menor a mayor complejidad, siendo el ultimo un juego de 'piedra papel o tijera'.
COMET: Que es?
--------------
* El termino engloba las técnicas que crean un canal de baja latencia desde el server al cliente.
* Nos permite hacer Chats, Notificaciones en tiempo real, juegos multiplayer.
* Las implementaciones de menor latencia suelen ser menos compatibles entre browsers.
COMET: Implementación
---------------------
* El método mas usado es el de 'long pooling', que retrasa un response hasta que haya datos.
* Views sirven HttpResponse con generador.
* Yield vacio hasta que haya datos.
* Cuando hay datos enviamos y StopIteration()
* El cliente pide, espera, recibe, pide, espera...
* Modificar la sesión no funciona mágicamente, porque ya corrieron los métodos de los middlewares.
COMET: Demostración
-------------------
Vemos un chat 'live' y un juego de pong multijugador en los que podrían participar los asistentes.
Eventos Full-Dúplex sobre HTTP: Que son?
----------------------------------------
* Abstrae la comunicación entre nuestros clientes y servers.
* Nos ayuda a definir un API clara entre nuestro código cliente y el código del servidor.
* En el cliente escuchamos eventos del server, y disparamos eventos al server.
* En el server escuchamos eventos del cliente y disparamos eventos al cliente.
* Similar en espíritu al protocolo Bayeux.
Eventos Full-Dúplex sobre HTTP: Implementación
----------------------------------------------
* En el cliente:
* Un objeto javascript sirve de proxy con el server.
* Disparamos eventos cuyo 'tipo' es un string y sus datos un objeto javascript.
* Asignamos handlers a los eventos disparados por el server.
* En el server:
* Un objeto python es el proxy con el cliente.
* Disparamos eventos cuyo tipo es un string y sus datos un diccionario.
* Asignamos handlers a los eventos disparados por el cliente. Además de los datos del cliente reciben el request.
* Para lograr baja latencia en los eventos desde el server hacia el cliente usamos comet.
Eventos Full-Dúplex sobre HTTP: Demostración
--------------------------------------------
Vemos la implementación de la librería cliente y servidor, y un juego de 'batalla naval' como ejemplo.
Aclaraciones
------------
* Es técnicamente posible utilizar estos paradigmas con django.
* El predominante en django sigue y probablemente siga siendo el MTV (MVC)
* Stateful views esta mejor en seaside o uncommonweb.
Preguntas
---------
Sesión de preguntas y respuestas.
Introducción a Django
Manuel Kaufmann (PyAr)
bio
Manuel Kaufmann es estudiante en Ing. de Información de la UTN en Santa Fe. Actualmente trabaja en el Ministerio de Innovación y Cultura de la Provincia de Santa Fe, en la Sectorial de Informática como administrador de sistemas y desarrollando un sistema de cuentas para una empresa extranjera.Pertenece a la comunidad de Python Argentina y participa también en algunos grupos de Software Libre.Su blog es:
http://humitos.wordpress.com
45min Nivel Principiante (Viernes 04 11:00 Sala Auditorio Guido van Rossum)
Categorias: django, web
La idea principal de esta charla es despertar la curiosidad de los asistentes, que quizás vengan de otros lenguajes de desarrollo web para mostrarles una de las nuevas tecnologías en este ámbito y lo sencillo que es utilizarla.
El desarrollo de la charla consiste en una breve introducción a los conceptos básicos de Django, como el diseño MVC, explicando cada uno de estos conceptos y cómo se aplican a Django; los archivos de configuración, para saber dónde buscar qué en los distintos momentos del desarrollo; crear una aplicación, configurar una base de datos, etc.
A medida que se va avanzando en estos conceptos se mostrará cómo se puede crear un blog muy simple, en el cual se podrán crear y listar posts, se mostrará el entorno de administración de Django y sus operaciones básicas, concluyendo en un espacio para preguntas.
Esta charla está basada en el estudio personal de Django y lo simple que me fue aprenderlo. Es por eso que me surgió la idea de mostrar lo potente que es Django, mostrando los conceptos básico del mismo y poder transmitirlo a la gente que no tiene conocimiento sobre el desarrollo web en general.
La idea principal de esta charla es despertar una curiosidad a los asistentes, que quizás vengan de otros lenguajes de desarrollo web para mostrarles una de las nuevas tecnologías en esta ámbito y lo sencillo que es utilizarla.
----
El desarrollo de la charla consiste en una breve introducción a los conceptos básicos
de Django, como el diseño MVC, explicando cada uno de estos conceptos y cómo se aplican
a Django; los archivos de configuración, para saber dónde buscar qué en los distintos
momentos del desarrollo; crear una aplicación, configurar una base de datos, etc.
A medida que se va avanzando en estos conceptos se mostrará como se puede crear un blog
muy simple, en el cual se podrán crear post y listar posts, se mostrará el entorno de
administración de Django y sus operaciones básicas, concluyendo en un espacio para
preguntas.
*Documentación*
* El libro de Django:
* Traducción al español: http://trac.usla.org.ar/proyectos/django-book/
* Original: http://djangobook.com/en/1.0/
* Sitio oficial: http://www.djangoproject.com/
* Sitio español: http://django.es/
Introducción a Python
Facundo Batista (PyAr)
bio
Facundo Batista es Ingeniero Electrónico de la Universidad Nacional de La Matanza, con un Master en Ingeniería de la Innovación en la Universidad de Bologna, Italia.Trabajó en Movistar (antes Unifón) durante seis años, en el área de Administración de Redes Celulares, luego fue Jefe de Desarrollo en CycleLogic por un año y medio, Arquitecto de Soluciones en Ericsson Argentina, en la parte Multimedia, y ahora es Senior Software Developer en Canonical, programando Python en el equipo de Online Services.Fue profesor en la Universidad de La Matanza y en diversas instituciones secundarias y terciarias. También posee una amplia experiencia como analista de sistemas y programador, tanto freelance como bajo contrato, en diversos sistemas en múltiples plataformas y lenguajes.Siguiendo en el ámbito de la programación, ama Python, habiéndose convertido en Desarrollador Oficial del lenguaje y miembro de la Python Software Foundation, fundando luego Python Argentina. Fue invitado como expositor a numerosas conferencias nacionales e internacionales y dictó cursos de Python en universidades, ámbitos terciarios, y para particulares y empresas (más info:
http://www.taniquetil.com.ar/facundo/cursoPython.html).
45min Nivel Principiante (Viernes 04 10:00 Sala Auditorio Guido van Rossum)
Categorias: advocacy
Esta charla se orienta a programadores, principiantes o avanzados, que desean conocer este lenguaje, de manera de aprender sus principios básicos. Se presentan las características generales del lenguaje y su biblioteca estándar, su parte social, y se recorren los tipos de datos, los controles de flujo, y las diversas maneras de encapsular código, terminando con algunos detalles que muestran la expresividad, sencillez y poder de Python.
Pueden ver la charla en:
http://tools.assembla.com/svn/homedevel/presents/intropython.odp
IronPython - Corriendo en .NET y dentro de los browsers
Martín Salias (Southworks)
bio
Martín Salias es Arquitecto de Software en Southworks, donde trabaja principalmente para clientes corporativos en el exterior. Lleva más de 25 años trabajando en desarrollo, y ha participado en proyectos en varios países de América y Europa, y en organizaciones de todo tipo y tamaño. Es orador habitual en eventos de desarrollo de software, miembro de la Agile Alliance, y Microsoft MVP.
45min Nivel Intermedio (Sábado 05 15:00 Sala Auditorio MSA)
Categorias: language, net
IronPython es una implementación abierta de Python sobre el framework .NET. Este proyecto, liderado por Jim Hugunin (autor también de Jython) aprovecha todas las capacidades estándares de .NET y corre también en MONO, la implementación abierta del framework. Entre otras características, IronPython puede correr dentro de los browsers, a través de Silverlight, un plugin multiplataforma que contiene el core del framework .NET. También puede utilizar tanto la biblioteca estandard de Python como las propias de .NET, y brinda interoperabilidad con otros lenguajes .NET como C#, lo que está favoreciendo su utilización como un lenguaje embebido de scripting.
IronPython - Corriendo en .NET y dentro de los browsers
=======================================================
En esta sesión recorreremos:
- El origen de IronPython
- Versión inicial y premisas de la implementación
- Surgimiento del Dynamic Language Runtime
- Versión actual
- Python en Silverlight
- Python como lenguaje embebido en aplicaciones .NET
Mostraremos abundantes ejemplos de código, como:
- Algunas partes seleccionadas de los fuentes de IronPython en C#
- Ejemplos de Python consumiendo librerías .NET (incluyendo Winforms y WPF)
- Ejemplos de Python utilizando XAML para la construcción de interfaces Silverlight
- Ejemplos de Python embebido como scripting desde C#
Juegos educativos con PyGame
Alejandro J. Cura (PyAr)
bio
"alecu" el hombre de los múltiples sombreros, se sacó la galera de programación ante Python cuando lo conoció en el '96. Tiene 33 años, es programador autodidacta desde los 12, y dirige la consultora Vortech. Entre conejos y palomas en su galera encontramos también al equipo argentino que fue premiado con un primer y segundo puesto en varias ediciones de la competencia internacional PyWeek. alecu suele dar charlas sobre dicha competencia, sobre la biblioteca PyGame y sobre desarrollo en Python para OLPC en eventos nacionales y también fue invitado a exponer en PyCon 2007 en Dallas, EEUU y en EuroPython 2007 en Vilnius, Lituania. Hace muy poquito alecu se calzó también un bombín de papá para recibir a Amelia.
45min Nivel Principiante (Viernes 04 14:00 Sala Auditorio Guido van Rossum)
Categorias: education, games, games development
Mostraremos cómo hacer juegos y actividades educativas sencillas, usando Python y la biblioteca PyGame. Para esto nos basaremos en Falabracman, un juego educativo hecho en 30 horas, y ganador del OLPC Game Jam 2008 en Porto Alegre.
La biblioteca pygame es una herramienta ideal para hacer juegos y actividades educativas
sencillas, debido a su elegante diseño, su estabilidad y portabilidad.
En esta charla mostraremos como hacer una actividad educativa desde cero con pygame,
basandonos en el ejemplo de Falabracman, un juego educativo para la olpc hecho en 30 horas gracias a Python y PyGame.
Contenidos:
* Que es pygame?
* Porque usar pygame?
* Para que se usa?
* Competiciones
* Nuestros juegos
* Modulos Pygame
* Bucle básico
* Eventos comunes
* Teclas
* Dibujando
* Sprites y grupos
* Reloj
* Movimientos
* Colisiones
* Sonidos
* Links
* Preguntas
Multiprocesamiento en Python
Claudio Freire (Livra)
bio
Claudio es un programador de Buenos Aires, Argentina. Estuvo trabajando intensamente con Python en Livra por más de dos años a la fecha, y ha aplicado Python a todo tipo de tareas, desde
game scripting (vegastrike) a aplicaciones web, e incluso minería de datos específicamente para Livra (
http://livra.com/).
45min Nivel Avanzado (Sábado 05 14:00 Sala Auditorio Guido van Rossum)
Categorias: concurrency
Tomar ventaja del multiprocesamiento de los sistemas modernos en sus varias formas es todo un reto. Esta charla revisará las varias técnicas disponibles a los desarrolladores, y las lecciones aprendidas mediante la experiencia ganada al enfrentar estos problemas en Livra.com, notoriamente, una manera de conseguir concurrencia real utilizando multithreading y CPython, junto con formas de comunicación interproceso eficientes cuando multithreading simplemente no es suficiente.
First an important note: the following is in spanish since the talk
has been prepared in spanish and just now (at the submission form) is
when everything seems to be in english. It will be absolutely no problem
if it has to be translated, either what is submitted in engligh to spanish
or the outline to english, just ask.
Edition note: After reading all other proposals, which are in spanish, everything
but this notice has been translated to spanish.
Outline
=======
* Objetivos ( < 1-2 min )
* Aprovechar al 100% los multicore modernos con Python
* Abrirse a la posibilidad de escalar a multi-nodo (clusters)
* Mantener la facilidad de desarrollo característica de Python
* Multiprocesamiento ¿qué es? ( 2 min )
* Multiprocesamiento ¿qué no es? ( < 1 min )
* Formas de multiprocesamiento ( 1 min )
* Multiproceso
* Multithreading
* Detalles sobre multiproceso ( 2 min )
* Detalles sobre multithreading ( 2 min )
* Multithreading en python
* threading
* ¿WTF? ¿Por qué threading no logra concurrencia? ( 2 min )
* GIL ( 4 min )
* ¿Para qué sirven los threads entonces en python? ( < 1 min )
* ¿Opciones?
* Otras implementaciones ( < 2 min, sólo se mencionan )
* PyPy, Jython
* Multiproceso ( 3 min, después se entra en detalle )
* fork, multiprocessing, XML-RPC, MPI
* Multithreading con concurrencia ( nada, teaser )
* Pyrex + with nogil
* Pros y cons ( 10 min, detalles de pros y cons de cada técnica )
* Multiprocessing
* XML-RPC
* Pyrex + with nogil
* MPI
* Ejemplos de Pyrex ( 4 min, pasada rápida sobre algunos ejemplos )
* Esquemas Híbridos
* Memoria compartida entre procesos ( 10 min, detalles sobre cómo compartir memoria entre procesos, es lo mejor de ambos mundos, threading y multiprocessing )
* mmap permite compartir memoria entre procesos, no solo threads
* Resistir la tentación de usar pickle, struct, y marshal
* Uso pyrex en cambio
* Lockless message queues
* Buffers compartidos
* Lookup tables compartidos
* Proxy Pool
* Ejemplos
* Conclusión ( nada, y consultas )
* Ningún método es la panacea universal
* Cada problema tiene su truco
* Cada truco su punto fuerte y su punto débil
* “embrace pyrex”
* El GIL existe por una razón
Tiempos: La charla lleva exactamente 45 minutos, luego hay que agregar tiempo para consultas.
Si es necesario que los 45 minutos sean incluyendo las consultas, se puede ver de recortar los tiempos.
Pycasa inside: PyGTK on Glade
Natalia Beatriz Bidart (PyAr)
bio
Natalia es Licenciada en Cs. de la Computación. Se recibió en 2007 en la Facultad de Matemática, Astronomía y Física de la Universidad Nacional de Córdoba. Trabaja haciendo principalmente desarrollos de software, usando metodologías ágiles. Ama Python, admira Eiffel, y respeta C. Natalia es además instructora de Yoga, da clases en la facultad, y le encanta cantar (o algo parecido).
45min Nivel Intermedio (Viernes 04 15:00 Sala Auditorio MSA)
Categorias: case study, community, desktop, gtk, gui, ide, interfaces, photos
Pycasa es una aplicación de escritorio que permite administrar álbumes de fotos Picasa. Está escrita en Python y utiliza PyGTK y Glade para la construcción de su GUI. En esta charla mostraremos cómo se construye una interfaz gráfica GTK usando Glade, y cómo se usa PyGTK para darle vida a esa interfaz mediante Python. Nos centraremos en el manejo de tree/grid stores, haciendo hincapié en la versatilidad del patrón MVC; en visibilidad y sensibilidad de widgets, y en uso de pixbufs para mostrar imágenes.
Pycasa[1] es una aplicación de escritorio que permite administrar álbumes de fotos Picasa[2]. Está escrita en Python y utiliza PyGTK[3] y Glade[4] para la construcción de su GUI.
En esta charla mostraremos cómo se construye una interfaz gráfica GTK[5] usando Glade, y cómo se usa PyGTK para darle vida a esa interfaz mediante Python.
Nos centraremos en el manejo de tree/grid stores, haciendo hincapié en la versatilidad del patrón MVC; en visibilidad y sensibilidad de widgets, y en uso de pixbufs para mostrar imágenes.
[1] http://pycasa.com.ar
[2] http://picasa.google.com
[3] http://www.pygtk.org/
[4] http://glade.gnome.org/
[5] http://www.gtk.org/
----
Outline
=======
La charla estará basada en la charla original "PyGTK usando Glade",
pero esta vez los contenidos serán un poco más avanzados, por lo cual se asumirá
algo de conocimiento de Glade, PyGTK y Python.
Se contará con una interfaz a medio hacer basada en Pycasa, y se la completará
durante la charla para mostrar cómo utilizar widgets "interesantes" como lo son
los tree/grid stores, imágenes compuestas usando pixbufs, y cómo jugar con la
visibilidad y sensibilidad de los widgets en general.
Slides
------
*(poco detalle)*
#. Intro
#. Glade en todo su esplendor. Arrancamos con una interfaz a medio hacer.
#. Usando IconViews y más de un modelo... viva MVC!
#. Jugando con la visibilidad y sensibilidad de los widgets
#. Agregando imágenes. Pixbufs: escalas, composiciones.
Referencias
===========
* La aplicación a usar como caso de estudio: http://pycasa.com.ar
* Los servicios de google que son wrapeados por Pycasa: http://picasa.google.com
* Los bindings de Python para GTK: http://www.pygtk.org/
* El constructor de interfaces Glade: http://glade.gnome.org/
* El widget set para GUIs: http://www.gtk.org/
Python 3000
Facundo Batista (PyAr)
bio
Facundo Batista es Ingeniero Electrónico de la Universidad Nacional de La Matanza, con un Master en Ingeniería de la Innovación en la Universidad de Bologna, Italia.Trabajó en Movistar (antes Unifón) durante seis años, en el área de Administración de Redes Celulares, luego fue Jefe de Desarrollo en CycleLogic por un año y medio, Arquitecto de Soluciones en Ericsson Argentina, en la parte Multimedia, y ahora es Senior Software Developer en Canonical, programando Python en el equipo de Online Services.Fue profesor en la Universidad de La Matanza y en diversas instituciones secundarias y terciarias. También posee una amplia experiencia como analista de sistemas y programador, tanto freelance como bajo contrato, en diversos sistemas en múltiples plataformas y lenguajes.Siguiendo en el ámbito de la programación, ama Python, habiéndose convertido en Desarrollador Oficial del lenguaje y miembro de la Python Software Foundation, fundando luego Python Argentina. Fue invitado como expositor a numerosas conferencias nacionales e internacionales y dictó cursos de Python en universidades, ámbitos terciarios, y para particulares y empresas (más info:
http://www.taniquetil.com.ar/facundo/cursoPython.html).
45min Nivel Intermedio (Sábado 05 12:00 Sala Auditorio Guido van Rossum)
Categorias: language
Esta charla presenta la evolución de Python, la versión 3 del lenguaje (a.k.a. Python 3000), y explica las razones por las cuales se planeó y ejecutó esta evolución. Además de las nuevas características del lenguaje y mejoras generales se detallan los cambios que presentarán problemas de compatibilidad, y las estrategias para migrar de la rama actual (Python 2) a esta nueva versión: cómo y cuando migrar, y qué herramientas tendremos como ayuda.
La charla se separa en tres partes bien definidas.
- ¿Por qué? Aquí se explican las razones para que Python 3000 exista como versión
disruptiva, y no como parte de la evolución pausada del lenguaje.
- Diferencias: Esto es un detalle de las principales (y no tanto) diferencias que
hay entre Py2 y Py3.
- Migración: Acá contaré cómo es el proceso de migración recomendado, y pautas a
seguir para terminar pasando a esta nueva versión
Python como un lenguaje de hacking
Andrés Riancho (Bonsai - Information Security)
bio
Andrés Riancho es investigador en seguridad informática y fundador de Bonsai, donde se desempeña principalmente en las tareas de Penetration Testing y Vulnerability Research. En el campo de la investigación, Andrés ha descubierto vulnerabilidades críticas en appliances IPS de 3com e ISS; y ha contribuido con la investigación sobre SAP realizada por su anterior empleador.Su foco principal siempre ha sido la seguridad en las aplicaciones web, y en esta área ha desarrollado el software w3af, Web Application Attack and Audit Framework, el cual es utilizado ampliamente por penetration testers y consultores de seguridad. Andrés ha hablado y dictado trainings en numerosas conferencias de seguridad alrededor del mundo, tales como OWASP (Polonia), CONFidence (Polonia), OWASP World C0n (USA), CanSecWest (Canada), T2 (Finland) y ekoparty (Buenos Aires).Andrés fundó Bonsai en 2009 para continuar con la investigación sobre detección y explotación automatizada de vulnerabilidades en aplicaciones web.
45min Nivel Intermedio (Viernes 04 10:00 Sala Auditorio MSA)
Categorias: security
En esta charla se presentará una serie de herramientas de seguridad informática que están desarrolladas en Python, analizándose de una manera técnica y detallada la implementación de las mismas.
Algunas de las herramientas que se analizarán son Peach Fuzzer, scapy y w3af - Web Application Attack and Audit Framework. Para las mismas se introducirá al asistente en la funcionalidad principal de la herramienta, su arquitectura básica, y una serie de interesantes conceptos utilizados por el desarrollador para su implementación.
La presentación va a tener el siguiente temario:
- Porque Python como lenguaje de Hacking?
- Herramientas de seguridad informática que utilizan Python
- Peach
* Funcionalidad principal
* Presentación de arquitectura, plugins, etc.
* Demo
* Análisis del XML fuzzer incluido en Peach. Detalle sobre generadores.
- Scapy
* Funcionalidad principal
* Presentación de arquitectura, plugins, etc.
* Demo: Envio de paquetes
* Demo: Sniffing de paquetes
* Análisis de arquitectura.
* Detalles sobre hooking con libpcap y libnet.
- w3af
* Funcionalidad principal
* Presentación de arquitectura, plugins, etc.
* Demo: Envio de requests HTTP
* Demo: Clustering basado en funciones definidas por el usuario
* Análisis de arquitectura.
* Detalles sobre compilación "on the fly" de funciones.
- Conclusiones
Python en la Web Semántica
Santiago Coffey (Popego)
bio
Santiago Coffey es Ingeniero Informático egresado del ITBA con casi 2 años de experiencia en Python. Anteriormente ha programado aplicaciones muy diversas en C y Java y algunos proyectos web en PHP. Actualmente es desarrollador web de Popego, un emprendimiento argentino que construye tecnologías de inteligencia artificial orientadas a descubrir los intereses de los usuarios en base al contenido semántico de su actividad en la web. También ha sido auxiliar docente en el ITBA, en materias como Robótica y Organización Básica de la Computadora. Algunos proyectos personales actuales incluyen un juego MMORPG, una aplicación web de juegos de ingenio y bibliotecas utilitarias para desarrollo web, en todos los casos en Python.
45min Nivel Intermedio (Sábado 05 10:00 Sala Auditorio Raymond Hettinger)
Categorias: artificial intelligence, web, webservices
Esta charla tiene por objetivo discutir los patrones de diseño de la web 2.0 y las nuevas tendencias de la web semántica. Los 12 patrones que dirigen la presentación son: Information sharing, User-centered design, MVC architecture, Participation & collaboration, Social networking, Search & recommendation engines, Folksonomy, Community & collective intelligence, Inter-operability & data portability, Rich user experience, Separation of content and presentation, Web as a platform (ubiquity).
Junto con esto se presentan brevemente algunos frameworks y módulos de Python que permiten el desarrollo de este tipo de aplicaciones web. Asimismo, se muestran ejemplos de consumo de APIs de servicios web populares (JSON, XML, feeds y HTML scraping) y un ejemplo de procesamiento de contenido a través de herramientas semánticas.
Introducción
------------
Para empezar, se plantea que la evolución de Internet en los últimos años se debió a una nueva generación de desarrollo y diseño web denominada "web 2.0".
El objetivo de la charla es discutir 12 patrones fundamentales que caracterizan esta nueva forma de hacer la web y, asimismo, introducir nuevas tendencias que se vislumbran en una futura generación de la web, en particular para lo que se conoce como "web semántica".
12 patrones
-----------
*NOTA: Por razones de tiempo, se ha reducido la parte de ejemplos técnicos.*
#. Information Sharing
* Web 1.0: Internet como fuente de información
* Web 2.0: Internet como fuente y sumidero de información
* Web 3.0: Web = Users + Web applications & services + Semantic web
#. User-centered design
* Web 1.0: Centrado en recursos
* Web 2.0: Centrado en usuarios
* Ejemplo: Flickr, YouTube
* Python 3.0: "Batteries included" (la biblioteca estándar provee suficientes herramientas para desarrollo web)
* Python Modules: "Swiss Army Knife" (módulos y frameworks web para desarrollo web a alto nivel en muchas áreas)
#. MVC architecture
* Web 1.0: Sitio web = Repositorio de páginas estáticas
* Web 2.0: Aplicación web: multi-capa (MVC), con estado
* Web frameworks: Django, Pylons, TurboGears, Google App Engine, etc.
* Alternative DBMS: memcachedb, HBase+Thrift, flat files (CSV), BerkeleyDB, Map Reduce
#. Participation & collaboration
* Web 1.0: Publicación individual
* Web 2.0: Edición colaborativa
* Ejemplo: Wikipedia, blogs con comentarios (Blogger, Wordpress)
#. Social networking
* Web 1.0: Red de computadoras
* Web 2.0: Red de amigos
* Ejemplo: Facebook, Twitter
#. Search & recommendation engines
* Web 1.0: Navegar todo para descubrir
* Web 2.0: Encontrar sólo lo que interesa
* Ejemplo: Last.fm recommendation engine
* ¿Qué hace una web semántica? Integración de datos, Definición de ontologías, Análisis semántico, Agregado de información
* ¿Cuál es la misión de una web semántica? Ejemplos de problemas concretos a resolver
* Mini-demo de Meaningtool http://www.meaningtool.com
#. Folksonomy
* Web 1.0: Taxonomy (hierarchical classification)
* Web 2.0: Folksonomy (collaborative tagging)
* Ejemplo: del.icio.us
#. Community & collective intelligence
* Web 1.0: Construir portales
* Web 2.0: Construir comunidades
* Ejemplo: Digg, StumbleUpon
#. Inter-operability & data portability
* Web 1.0: Web crawlers/spiders (HTML scraping)
* Web 2.0: Web syndication, widgets, open APIs, aggregation
* Ejemplos de APIs de servicios web populares: Twitter (JSON), blogs (Atom/RSS feed), YouTube (GData), ejemplos de HTML Scraping (microformats)
#. Rich user experience
* Web 1.0: Interacción por formularios (con recarga de página)
* Web 2.0: Client-side scripting con interacción asincrónica (AJAX)
* Ejemplo: Gmail y otros servicios de webmail como Rich Internet Applications
#. Separation of content and presentation
* Web 1.0: Cluttered HTML
* Web 2.0: Separation of Structure & content + Presentation + Client-side scripting
* Ejemplo: http://www.csszengarden.com
#. Web as a platform (ubiquity)
* Web 1.0: Proprietary specificactions, Platform dependence, Browser wars
* Web 2.0: Web standards, device independence, cross-platform design
* The Web is the Platform. The Web is everywhere (ubiquity)
* ¿Web = AI = Robot? Discusión de similitudes
* Ejemplo: Wolfram Alpha
Conclusiones
------------
* Web como AI
* Misión de la Web Semántica: Agregar valor a la información
* ¿Tecnología? No, patrones
Python y ciencia: Una fórmula exitosa
Sebastián Bassi (Genes Digitales)
bio
Sebastian Bassi es Diplomado en ciencia y tecnología de la Universidad Nacional de Quilmes. Es fundador de Genes Digitales, responsable de DNALinux, autor del libro "Python for Bioinformatics" y participante del proyecto de secuenciación del genoma mitocondrial del tomate junto con el INTA-Castelar.
45min Nivel Principiante (Viernes 04 12:00 Sala Auditorio MSA)
Categorias: advocacy, biology, education, science, university
Se mostrará por qué Python es un lenguaje con características ideales para ser usado en un ámbito científico. Python es un lenguaje maduro que cuenta con bibliotecas aptas para ser usadas en diversas áreas como matemática, química, biología molecular. La charla estará orientada a mostrar ejemplos de uso real haciendo hincapié en la bioinformática, área de trabajo del disertante. Al respecto se mostrará cómo Python es usado en la secuenciación del genoma de la mitocondria del tomate.
Python y ciencia: Una fórmula exitosa
=====================================
Se dará una introducción a los lenguajes de programación utilizados tradicionalmente en ciencia, las caracteristicas fundamentales de Python y como encaja en el esquema del trabajo cientifico actual. La introducción a Python estará basada en una versión adaptada a la impartida en la catedra de "Introducción a la programación" para la carrera "Tecnicatura en programación" de la UNQ. Otro material del cual estará basada la presentación es mi trabajo "A Primer on Python for Life Science Researchers" publicado en PLoS Comput Biol 3(11):e199. doi:10.1371/journal.pcbi.0030199 y el artículo "Python all a scientist needs" de Julius B. Lucks presentada en Pycon 2008 y disponible en http://preview.tinyurl.com/64ozd3.
La charla estará enfocada a aplicaciones fisicas, matematicas y biologicas, con ejemplos mayoritariamente relacionados con la bioinformática. El objetivo es proveer a la audiencia de fundamentos para que puedan tomar una decisión informada al respecto de la elección de un lenguaje de programación para aplicaciones en ciencia. La presentación será con ejemplos y ejecución de código en vivo usando Crunchy (http://crunchy.sourceforge.net).
Rich Internet Applications con Python
Mariano Guerra (PyAr, emesene)
bio
Mariano Guerra nació en 1985 en Córdoba, y es estudiante de Ingeniería en Sistemas de Información en la UTN-FRC. Es programador de Python desde 2006. Actualmente está realizando una pasantía en Intel ASDC y es miembro del Centro de Innovación Open Source. Es el creador de emesene www.emesene.org.
45min Nivel Intermedio (Sábado 05 14:00 Sala Auditorio Raymond Hettinger)
Categorias: ajax, language, network, rest, web
En esta charla se explicará cómo hacer Rich Internet Applications (o web 2.0) utilizando Python para definir una API REST que será consumida por Javascript en el cliente con la ayuda de Jquery, para producir aplicaciones con alta interacción y responsividad.
Se detallará la estructura básica de una aplicación y algunos patrones utilizados, y se presentará el framework uhttp para la creación de APIs REST, sus características y algunos ejemplos.
Por último se verá un ejemplo completo de una aplicación de gestión de tareas para ilustrar los conceptos expuestos durante la charla.
Rich Internet Applications
==========================
* Que son?
* Ejemplos
REST
====
* Evolución
* Características
* Conceptos
* Comparación con Web Services SOAP
JSON
====
* Características
* Ejemplos
* Soporte en python
uhttp (libreria para el desarrollo de APIs REST)
================================================
* Características
* Ejemplos de uso
* Comparación con otros frameworks (webpy, juno etc.)
* Próximas features
Demo (gestión de tareas)
========================
* Estructura
* Definición de la API
* Modelo (SQLAlchemy)
* Consumiendo REST desde Javascript
* Interfaz gráfica con Jquery
Taint Mode en Python, cómo encontrar vulnerabilidades mediante el uso de variables manchadas
Juan José Conti (PyAr)
bio
Nacido en Carlos Pellegrini (Santa Fe) en 1984, Juan José Conti es Ingeniero en Sistemas de Información egresado de la Universidad Tecnológica Nacional, Facultad Regional Santa Fe. Durante los últimos 10 años ha participado de distintos grupos y eventos de Software Libre en Argentina. Utiliza Python desde el año 2005 y hoy lo elige como su lenguaje de cabecera en actividades laborales, académicas y recreativas.
45min Nivel Intermedio (Sábado 05 12:00 Sala Auditorio Raymond Hettinger)
Categorias: security
Taint Mode es una característica implementada en algunos lenguajes con el objetivo de prevenir que usuarios malintencionados alteren entradas al sistema para lograr la ejecución de comandos no permitidos u otros tipos de ataques. En esta charla se introducen los conceptos básicos de Taint Mode y se discute la forma de implementarlo en Python mediante el uso de decoradores. Se muestra una implementación concreta y se analizan sus resultados.
Taint Mode en Python, cómo encontrar vulnerabilidades mediante el uso de variables manchadas
============================================================================================
Me encuentro estudiando estos temas como parte de mi reciente actividad de investigación en la universidad. Me gustaría dar esta charla como una forma de generar debate sobre el tema e intercambiar ideas con la comunidad.
Utilicé el siguiente texto para comentar estas ideas con algunos compañeros en la universidad, lo agrego aquí por que meparece apropiado para la evaluación de la charla.
Introducción
------------
Constantemente estamos utilizando programas de computadoras; muchas veces sin ser conscientes de que lo estamos haciendo o sin preguntarnos sobre los elementos que se tuvieron en cuenta para su construcción.
Los desarrolladores están tan ocupados implementando nuevas funcionalidades o arreglando errores que muchas veces no se detienen a pensar en los problemas de seguridad que puede tener su producto.
Las amenazas se multiplican cuando las aplicaciones funcionan a través de redes inseguras, como es el caso de las populares y modernas aplicaciones web a través de Internet.
La forma de dotar a las aplicaciones de mayor seguridad es corrigiendo las vulnerabilidades presentes. Si bien la forma más ampliamente utilizada de llevar a cabo esta empresa es mediante la revisión manual, esta estrategia es muy costosa, consume tiempo y es propensa a fallas.
Otra alternativa es utilizar herramientas automatizadas.
El modelo de las manchas
------------------------
Todo valor que ingresa a un programa desde una fuente no confiable, es considerado un valor manchado. Decimos que una variable está manchada si aloja o referencia a un valor machado.
Estas manchas se propagan por el programa mediante operaciones como la asignación o la concatenación. Si una variable manchada es concatenada con una variable limpia, entonces el resultado también está manchado.
``nuevo_manchado = limpio + manchado``
Una función limpiadora es aquella que convierte un valor manchado en un valor limpio.
``limpio = limpiadora(manchado)``
Los valores manchados no deben ser utilizados para generar respuestas para los clientes o construir comandos a ser utilizados contra servicios externos al programa, como los provistos por el sistema operativo, motores de bases de datos o el mismo intérprete. Generalizamos estos componentes como sumideros sensibles y establecemos que:
Si un valor manchado alcanza un sumidero sensible, entonces existe una vulnerabilidad en el programa.
De lo anterior se deduce que los valores manchados deben ser limpiados antes de que el flujo del programa los lleve hacia un sumidero sensible.
Esto es correcto, pero debemos cuestionarnos: ¿son todas las manchas iguales? ¿Una función limpiadora puede quitar todas las manchas de un valor? ¿Son todos los sumideros sensibles al mismo tipo de mancha? No.
* Un valor puede tener más de un tipo de mancha.
* Una función limpiadora, por lo general, limpia un solo tipo de mancha.
* Un sumidero sensible lo es a al menos un solo tipo de mancha.
Cuando un valor ingresa al programa, no sabemos que manchas tiene ¿Debe un desarrollador aplicar todas las funciones limpiadoras a cada valor que procede de una fuente no confiable? No toda función limpiadora es apropiada para procesar todos los valores manchados e incluso hacerlo consumiría recursos en forma innecesaria.
Una mejor estrategia es, dado un tipo de mancha determinado, aplicar una función limpiadora de esta mancha solo a aquellos valores que alcanzarán un sumidero sensible a la mancha en cuestión.
Vulnerabilidades
----------------
Cada tipo de mancha se corresponde con un tipo de vulnerabilidad existente.
El modelo de las manchas puede abarcar a la mayoría de las vulnerabilidades que hoy en día tienen los programas de computadora. Ya dijimos que los desarrolladores están ocupados en tareas que les son más urgentes que analizar problemas de seguridad; muchas veces no conocen los distintos tipos de vulnerabilidades que puede contener su programa y cómo a través de estos distintos recursos pueden ser afectados.
Una solución a este problema es la utilización de herramientas automatizadas para detectar casos en los que un valor manchado con una vulnerabilidad alcanza un sumidero sensible a la misma.
Una desventaja de estas herramientas es que son dependientes del lenguaje de programación que se utilice.
Existen dos tipos de herramientas, las estáticas y las dinámicas. Las primeras realizan la detección analizando el código fuente del programa, sin ejecutarlo. Las segundas monitorean el comportamiento de un programa ante distintas entradas.
Implementación
--------------
He implementado un módulo de usuario en Python que permita a un desarrollador marcar distintos elementos de su programa como entradas no confiables, funciones limpiadoras y sumideros sensibles:
http://svn.juanjoconti.com.ar/dyntaint/
Actualmente sigo trabajando en el mismo con el objetivo de mejorarlo e integrarlo con distintos frameworks con el objetivo de reducir el tiempo de set up necesario para utilizar la herramienta. Este es claramente uno de los objetivos más importantes y difíciles de alcanzar.
Twisted para seres humanos
Lucio Torre (PyAr)
bio
Lucio Torre es programador en Python desde 2001 y viene programando desde ~1985 (C=64 basic, sí). El largo recorrido de C, asm, smalltalk, lisp y demás yerbas termina en Python como herramienta predilecta. Participó en roles de programador y gerenciamiento en proyectos de varias escalas y en varias industrias como por ejemplo telecomunicaciones y medicina. Es autor de cocos2d, disertante en múltiples conferencias de software nacionales e internacionales y miembro de PyAr desde los primeros días.
45min Nivel Intermedio (Sábado 05 14:00 Sala Auditorio MSA)
Categorias: twisted
La idea es poder contar un poco qué es twisted, cómo se usa y tratar de eliminar los principales bloqueos que tiene la gente al empezar a programar con este framework. Salida de la experiencia de ver a mucha gente odiar a twisted al acercarse por primera vez, intentaré eliminar los problemas que le surgen al principiante.
No es un tutorial de todos los features que tiene twisted ni un how-to completo, sino más bien algo enfocado en ser de utilidad en la manera de pensar el problema al momento de encarar una aplicación en twisted.
Esto es un acercamiento a los temas que contendra la charla, que sara pulido, extendido y/o recortado segun se encuentre necesario al terminarla.
* Twisted: Que es?
* Ejemplo: Echo client and server.
* Modelo asincronico
* Codigo Bloqueante
* Resultados diferidos
* Deferreds, callbacks y errbacks
* Expresion de patrones de codigo usando deferreds:
- encadenamientos y llamas a funcion
- loops
- excepciones y errbacks
- syncronizacion diferida
- etc
* Trabajando con threads.
* El reactor:
- conectando cosas al reactor
¿Sueñan las serpientes electrónicas?
Fernando Russ (Core Security Technologies)
bio
Fernando Russ es investigador Sr. en Corelabs, el equipo de investigación de Core Security Technologies. Anteriormente se desempeñó como desarrollador Sr. en el equipo de Core Impact, una herramienta para hacer penetration testing. Tiene más de 10 años de experiencia como desarrollador y 8 en el campo de la seguridad informática. Se encuentra finalizando su licenciatura en sistemas. Nació en Trelew, Chubut, Argentina en el año 1978.
45min Nivel Avanzado (Viernes 04 12:00 Sala Auditorio Raymond Hettinger)
Categorias: cloud computing, continuations, core, development, extensions, framework, language, optimization, parsing
Con la proliferación de servicios de cloud-computing se han vuelto comunes los ambientes de ejecución limitados, acotando la potencia del software implementable y forzando un modelo de ejecución no continuo (lineal/imperativa). En esta charla presentaremos una implementación tentativa de continuations en pure-python, y mostraremos algunos de los problemas y sus soluciones que encontramos desarrollando este framework.
Outline
=======
- Outline
- Introduccion al problema
- Restaurando la ejecucion
- CPython[1]
- Implementando continuations[2] en pure-python
- Problemas y soluciones
- El framework
- Elgunas aplicaciones
- El futuro
- Preguntas
Referencias
===========
[1] `CPython `_
[2] `Continuations en Wikipedia `_
Nota: El detalle, biografía y fecha/hora asignada se completan automáticamente a medida que los autores actualizan y confirman dichos datos.