11 de julio de 2018

PyCon 2018

Del 9 al 17 de mayo se llevó a cabo PyCon USA 2018 en la ciudad de Cleveland, Ohio, en los Estados Unidos.


Este evento reúne a más de tres millares de personas que forman parte de la comunidad de usuarios y entusiastas del lenguaje de programación Python. Programadores, científicos, educadores y aficionados se dieron cita para aprender y discutir sobre técnicas, herramientas y prácticas relacionadas con el ecosistema de Python, así como para conocer y convivir con otras personas con intereses afines.

Con Guido van Rossum (creador de Python).

En esta entrada del blog comentaré sobre los aspectos que me parecieron más relevantes de este gran evento.

La importancia de las plataformas

La primera conferencia magistral de PyCon 2018 corrió a cargo de Dan Callahan. Dan tiene seis años trabajando en la fundación Mozilla, la cual es una organización sin fines de lucro que encabeza el desarrollo de diversos productos de software libre para la web, siendo Firefox el más conocido.

Dan Callahan en su conferencia magistral
titulada “La importancia de las plataformas”.

Dan comenzó su presentación hablando de su experiencia con el uso de tecnología cuando era niño y adolescente. En la década de los ochenta y noventa aprendió a programar la computadora IBM PC Junior y la calculadora gráfica TI-82. Ambos dispositivos tenían en común que se programaban a través del lenguaje BASIC. En aquel entonces él no tuvo que decidir qué lenguaje de programación utilizar, ya que la plataforma estableció de antemano el único lenguaje disponible.

Lo anterior nos lleva la siguiente conclusión: la plataforma dicta la herramienta. Y es por eso que la plataforma es muy importante si tenemos el interés en promover alguna herramienta en particular (Python, por ejemplo).


La siguiente imagen muestra las plataformas de cómputo disponibles desde tiempo atrás, así como las que están surgiendo en épocas más recientes y las que podríamos ver en un futuro. Todas estas plataformas tienen una cosa en común: están conectadas a la web.


Lo anterior significa que la plataforma computacional más generalizada hoy y en años venideros es la web. Dado que la plataforma dicta la herramienta, ¿cuál es la herramienta (específicamente el lenguaje de programación) disponible para la web? (alerta de spoiler: lamentablemente no es Python). Para acceder a la web necesitamos usar un programa conocido como “agente web”, típicamente un navegador (por ejemplo Chrome o Firefox). Hay miles de millones de dispositivos en el mundo (desde teléfonos celulares hasta supercomputadoras) con navegadores web que soportan un solo lenguaje de programación: JavaScript.

Entonces, ¿no se puede usar Python para programar la web? Claro que se puede, pero es importante realizar algunas precisiones. La web funciona bajo una arquitectura de software conocida como “cliente-servidor”. Esto quiere decir que un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Del lado del servidor un programa puede estar escrito prácticamente en cualquier lenguaje, pero del lado cliente, como ya se mencionó, JavaScript es la única opción soportada casi de manera universal. Así pues, por ejemplo, aunque podemos correr código de Python dentro de un notebook (cuaderno) de Jupyter directamente sobre un navegador, el hecho es que dicho código realmente se ejecuta en un servidor que bien puede estar corriendo a su vez de manera local sobre la misma computadora.

Un cuaderno de Jupyter con
código de Python dentro
del navegador Firefox.

Para que Python pueda correr directamente en un navegador se requiere que éste tenga un intérprete de Python. Aunque ya se han hecho algunos intentos en este sentido (por ejemplo el proyecto Skulpt, el cual es un intérprete de Python escrito en JavaScript), Dan Callahan sugirió que el camino más viable es a través de un nuevo estándar de web llamado WebAssembly. Este estándar define un formato de código binario portable (conocido también como bytecode) que es ejecutado de manera íntegra por el navegador de manera más rápida que el código de JavaScript. La versión 1.0 de WebAssembly ya está incorporada en los cuatro principales navegadores web (Firefox, Chrome, Safari y Edge). Así mismo, ya existen también compiladores de C/C++ que producen código objeto de WebAssembly.

Lo anterior da lugar a que utilicemos la web como si fuera una plataforma computacional “convencional”. En teoría, ya se debería poder compilar el código fuente del intérprete de Python (CPython), que está escrito en lenguaje C, para que corra sobre la web. En la práctica aún hay ciertos problemas que no se pueden resolver fácilmente, ya que WebAssembly funciona con las mismas restricciones del entorno aislado (sandbox) que tiene JavaScript en el navegador (por ejemplo, no se pueden leer y/o escribir archivos arbitrarios).


Dan Callahan considera que debemos buscar una manera de combinar los mejores aspectos de la web con los elementos más sobresalientes que ofrece Python. La pregunta que lanza al público es: ¿cómo podemos llevar Python a la web en una manera en que le haga sentido a la web? Dan desconoce la respuesta, pero considera que tenemos todas las piezas que hacen falta para resolver este problema. Estamos frente a un territorio desconocido esperando a ser explorado. Depende de la comunidad de Python encontrar la solución a este formidable reto.

PyCon Charlas 

Por primera vez en PyCon USA se destinó un track completo dedicado exclusivamente a una serie de pláticas en idioma español. Esto ocurrió el día viernes 11 de mayo. PyCon Charlas fue el primer producto del programa Hatchery, el cual busca apoyar ideas innovadoras para PyCon y su comunidad.


Así fue como se justificó este nuevo evento:
Un porcentaje significativo de la población estadounidense, más del 12%, habla español y las comunidades hispanohablantes de Python en América Latina y Europa están creciendo rápidamente con una gran aceptación en conferencias y reuniones. PyCon Charlas dará visibilidad a los pythonistas hispanohablantes dándoles un espacio en la PyCon más grande del mundo para dar y recibir charlas en español.
En total hubo ocho presentaciones en esta avenida, con ponentes provenientes de Paraguay, México, Nicaragua, Colombia, Estados Unidos y Brasil. Se trataron temas muy diversos, desde ciencia de datos hasta internet de las cosas.

En las PyCon Charlas. De izquierda a derecha: 
Camila Remolina (presentadora en las PyCon Charlas),
Guido van Rossum (dictador benevolente de por vida),
Naomi Ceder (chair de las PyCon Charlas) y 

Mario Corchero 
(chair de las PyCon Charlas).

Motivando a niños de escasos recursos

Una conferencia magistral que me pareció muy conmovedora fue la que impartió Qumisha Goss. Ella trabaja en la Biblioteca Pública de Detroit y se especializa en instrucción tecnológica. Por su propia cuenta aprendió a programar en Python y está certificada como educadora de Raspberry Pi.

Qumisha Goss en su conferencia
magistral titulada “La gente y Python”.

Qumisha lleva más de tres años encargada de un proyecto en su biblioteca que busca enseñar razonamiento computacional a niños desde 6 y hasta 17 años utilizando robots y programación con Python. Tristemente, muchos de sus alumnos provienen de familias muy pobres. Aún así, hay personas que le llegan a cuestionar sobre la falta de diversidad en su salón de clase. Pero ella responde afirmando que la “diversidad” debe tomar un segundo plano cuando se tienen alumnos que pasan hambre en sus casas o que a los nueve años aún no han aprendido a leer. Los resultados de la labor de Qumisha son realmente admirables e inspiradores.

Conclusión 

Este año PyCon nos ofreció nuevamente una gran oportunidad para ponernos al corriente en todo lo relacionado con el lenguaje Python y su vibrante comunidad. Los videos (en inglés) de las conferencias y talleres están disponibles en el canal de PyCon 2018 de YouTube.



26 de marzo de 2018

Nueva certificación de Microsoft: Introducción a la programación usando Python

Actualización (noviembre de 2018): Unos meses después de que escribí esta entrada del blog tuve la oportunidad de presentar la certificación de PCAP (Certificación de Python a nivel asociado) ofrecida por el Python Institute. También escribí una entada respecto a esta experiencia, la cual complementa de manera relevante la información que se presenta a continuación.

Introducción

Una certificación profesional es un proceso por el cual una organización valida y dictamina el nivel de conocimiento y/o competencia que tiene una persona para un cierto trabajo o tarea. En el área de TI (Tecnologías de Información) las certificaciones profesionales comenzaron a popularizarse en la década de los años noventa a través de diversas empresas como Cisco, Novell, IBM, Oracle y Microsoft. Con ello cualquier individuo tiene, desde entonces, la posibilidad de ganarse las credenciales que avalan su dominio en el manejo de ciertas herramientas tecnológicas demandadas en la industria.

Fuente: www.certifiedeo.com

Hasta hace relativamente poco había tan solo un puñado de certificaciones relacionadas con Python, las cuales se podían obtener después de tomar uno o varios cursos presenciales o en línea (por el ejemplo los cursos ofrecidos por la Universidad de Illinois a través de la O’Reilly School of Technology) o presentando un examen no supervisado por Internet (como los ofrecidos por la empresa Brainbench). Sin embargo, no existía una certificación de Python que tuviera un amplio reconocimiento en la industria a nivel mundial. Por decir, algo equivalente a la certificación de Sun Microsystems/Oracle para el lenguaje Java o la certificación de Ruby ofrecida por la Ruby Association. Al parecer esta situación está cambiando a partir de hace unos meses.


El recién creado Python Institute anunció que está preparando dos certificaciones de tipo vendor-neutral (independientes de proveedor). El primero y más básico es el Python Certified Associate Programmer (PCAP), que será liberado supuestamente en este mismo mes (marzo de 2018). El segundo y más avanzado es el Python Certified Professional Programmer (PCPP), el cual está programado para ofrecerse a partir de julio de 2018. PCAP no tiene requisitos previos, pero, como es de esperarse, para ser PCPP primero se tiene que ser PCAP. Cada una de estas certificaciones se obtendrá pasando un examen supervisado en alguno de los más de cinco mil centros autorizados de evaluación Pearson VUE localizados alrededor del mundo. El costo anunciado de estos dos exámenes es de $295.00 USD, con la posibilidad de obtener un descuento del 50% si se toman los cursos en línea correspondientes, los cuales no tienen costo.

Otra opción para certificarse en Python apareció apenas en agosto de 2017. 98-381 “Introducción a la programación usando Python” es la clave y el nombre del nuevo examen ofrecido por Microsoft. Conviene mencionar que además de esta certificación, Microsoft recientemente ha hecho un esfuerzo encomiable para apoyar al lenguaje Python y a su comunidad. Por ejemplo, Python ahora corre en Visual Studio 2017, Visual Studio Code y el Subsistema de Windows para Linux; así mismo, Azure (el servicio de cómputo en la nube de Microsoft) permite crear Jupyter Notebooks (documentos que contienen código fuente, ecuaciones, visualizaciones y texto explicativo) de forma gratuita.

Fuente: www.microsoft.com

Desde el año 2000 he obtenido más de una decena de certificaciones profesionales, principalmente relacionadas con la plataforma Java. La verdad es que me gusta el desafío que representa obtener una certificación en algún área de mi interés. Así que cuando me enteré de que Microsoft estaba ofreciendo una certificación con Python no pude mas que sentirme intrigado y decidí aceptar el reto.

Meme generado en: imgflip.com

En lo que resta de esta entrada del blog comentaré los detalles más importantes de la nueva certificación de Microsoft así como mi experiencia personal presentando este examen.

Información general sobre el examen

NOTA: La información que se presenta a continuación fue recopilada durante los meses de febrero y marzo de 2018. Algunos datos podrían diferir en el futuro. Recomiendo consultar el sitio oficial de Microsoft para obtener la información actualizada.

El examen 98-381 (Introducción a la programación usando Python) está basado en la versión 3.6 (o superior) de Python y va dirigido en particular al siguiente público:
  • Profesionales de TI
  • Desarrolladores de software
  • Trabajadores de la información (information workers)
El sitio oficial además agrega esto:
Los candidatos a este examen deben poder reconocer y escribir de forma sintácticamente correcta código de Python, reconocer tipos de datos compatibles con Python y poder reconocer y escribir código de Python que resuelva lógicamente un problema concreto.

Se espera que los candidatos hayan tenido, como mínimo, clases y/o experiencia práctica de aproximadamente 100 horas con el lenguaje de programación Python, estén familiarizados con sus funciones y capacidades, y comprendan cómo escribir, depurar y mantener código de Python bien formado y documentado.
Específicamente se evalúan las siguientes habilidades:
  • Realizar operaciones usando tipos de datos y operadores.
  • Controlar el flujo con decisiones y ciclos.
  • Realizar operaciones de entrada y salida.
  • Documentar y estructurar código.
  • Diagnosticar problemas y gestionar errores.
  • Realizar operaciones usando módulos y herramientas.
En mi trabajo como profesor en el Tecnológico de Monterrey he impartido varias veces el curso de Fundamentos de programación usando Python, en el que cubrimos una gran porción de los temas mencionados arriba. Así que la mayor parte del contenido del examen ya lo manejaba bastante bien. Solo tuve que concentrarme en estudiar la parte del API de Python, específicamente los módulo math, datetime, io, sys, os, os.path y random. En total le habré dedicado unas tres o cuatro horas de estudio.

Al acreditar el examen 98-381 se obtiene la certificación MTA (Microsoft Technology Associate). Su costo varía según el país. Para México y otros países de Latinoamérica el costo del examen es de $62.00 USD. En Estados Unidos el examen cuesta $127.00 USD. El costo del examen en España y otros países de la Unión Europea es de €127.00 EUR. El examen se lleva a cabo por computadora y es necesario acudir a un centro de evaluación autorizado de Pearson VUE o Certipoint para presentarlo.

Distintivo (badge) MTA
(Microsoft Technology Associate)

El examen se ofrece en varios idiomas, incluyendo inglés y español. Yo hice mi examen en inglés, pues me inquieta la idea de no poder entender completamente las traducciones que luego se emplean para ciertos términos técnicos. Por ejemplo, en el mismo sitio en español de Microsoft usan la palabra “operarios” como traducción de operators en inglés. Sin embargo, la mayoría de la gente de habla hispana usamos el término “operadores”. De forma similar, yo uso el término “operaciones de rebanadas” como traducción de slicing operations, pero en el sitio de Microsoft le llaman “operaciones de troceado”. No dudo que otros autores traduzcan estos y otros términos de manera muy distinta. Para no tener que estar adivinando, prefiero presentar este tipo de exámenes siempre en inglés.

Fuente: www.trialinteractive.com

El estilo de las preguntas del examen es variado. Hay una serie de videos (en inglés) en los que se muestran todos los posibles tipos de pregunta. A mí principalmente me tocaron preguntas de opción múltiple o de arrastrar y soltar. En total, el examen consta de 40 preguntas, las cuales se deben responder en 45 minutos como máximo. Esto significa que se tiene, en promedio, un poco más de un minuto para responder cada pregunta. Estoy acostumbrado a terminar este tipo de exámenes con bastante tiempo de sobra, incluso alcanzo a repasar con relativa calma todas mis respuestas antes de darlo por terminado. Pero esta vez no fue así. Por primera vez no alcancé a terminar un examen de certificación en el tiempo designado. Me quedé sin poder responder las últimas dos preguntas.

Fuente: naturalsociety.com

Debo confesar que durante la recta final del examen comencé a sentirme agobiado y con dudas sobre mi capacidad para concluirlo de manera exitosa. Afortunadamente, todo salió bien al final. Se requieren 70 de un total de 100 puntos para pasar el examen. En mi caso obtuve 90 puntos, así que logré acreditarlo con bastante holgura, aún a pesar del par de preguntas que me faltaron responder.

El resultado del examen está disponible inmediatamente al terminar, el cual se proporciona en forma de un reporte como el que se muestra a continuación:


El reporte muestra el desempeño de cada una de las seis habilidades evaluadas en el examen usando barras horizontales. El desempeño es mejor entre más larga sea la barra.

Una vez acreditado el examen, el sitio de certificación de Microsoft proporciona la opción de descargar en formato electrónico el certificado correspondiente.

Certificado de MTA

Y a final de cuentas, ¿conviene certificarse?

El tema de las certificaciones en TI puede llegar a ser controvertido. Los detractores de las certificaciones consideran que éstas son solo un negocio para las compañías que las emiten, que no garantizan que alguien realmente domina el material examinado, y que la experiencia práctica obtenida en el trabajo y/o proyectos FOSS (software libre y de código abierto) es mucho más valiosa. A mi parecer estas críticas son bastante válidas, pero hay que considerarlas en su justa dimensión, pues de otra forma podríamos caer en el error de usarlas también en contra de cualquier esquema de educación formal.

El sitio de Microsoft enuncia las siguientes motivaciones para obtener una certificación profesional en el área de TI:
Las certificaciones le proporcionan una ventaja profesional al ser una prueba respaldada y mundialmente reconocida por la industria del dominio de unas habilidades, demostrando su capacidad y voluntad para aceptar las nuevas tecnologías. Verifique sus habilidades, consiga más oportunidades.
Para un joven recién graduado de una carrera profesional, alguien que posiblemente tenga poca o nula experiencia laboral, una certificación puede ser un factor importante para diferenciarse de otros candidatos a un mismo puesto de trabajo. Sin embargo, para alguien que ya tiene varios años de experiencia trabajando en la industria, las certificaciones pueden ser irrelevantes, aunque esto también depende del área de especialidad. Por ejemplo, las certificaciones en el área de seguridad, redes y administración de proyectos son más trascendentes que las del área de programación. El siguiente artículo (en inglés) escrito por Bob Violino hace una reflexión interesante sobre todo este asunto: The real dirt on programming certifications.

Para mí, en lo particular, las certificaciones han sido un medio para el desafío y la superación personal. Con ellas he podido validar y complementar mis habilidades y conocimientos, ya que me han motivado a prepararme en temas particulares que de otra forma difícilmente hubiera revisado por mi cuenta. Considero que las certificaciones han sido una buena inversión de mis recursos.

Fuente: emojiisland.com

31 de diciembre de 2017

4° Congreso Internacional de Innovación Educativa

Del 11 al 13 de diciembre de 2017 se llevó a cabo en la ciudad de Monterrey, Nuevo León, México, el 4° Congreso Internacional de Innovación Educativa (CIIE). Este congreso tiene como objetivo principal que los participantes conozcan las tendencias y prácticas que están revolucionando la educación en el mundo. Esta edición del congreso logró juntar a más de tres mil profesores de 17 países.

Fuente: observatorio.itesm.mx

En el marco de este congreso tuve la oportunidad de fungir como coordinador de un panel titulado “Enseñando a programar usando el lenguaje Python”. Este es su resumen:
El lenguaje de programación Python se ha popularizado en el ámbito educativo en años recientes. Guo (2014) reportó que 8 de las 10 universidades más importantes en el área de ciencia de la computación en los Estados Unidos están actualmente utilizando Python en sus cursos de introducción a la programación. Algunos profesores del Tecnológico de Monterrey también están usando este lenguaje para enseñar a programar a sus estudiantes de diversas carreras profesionales, desde aquellas en el área de TI e ingeniería hasta las de arte y medios digitales. Este panel tiene como intención permitir a varios de estos profesores compartir sus experiencias y reflexiones en el uso de Python en los cursos de Fundamentos de programación (Tc1014) y Solución de problemas con programación (Tc1017). Python provee muchas ventajas como primer lenguaje de programación: tiene una sintaxis y semántica sencilla y consistente, viene con “baterías incluidas” (extensa biblioteca estándar), su naturaleza interactiva lo hace ideal para llevar a cabo experimentación y desarrollo rápido, es software libre y corre en múltiples plataformas (Windows, macOS y Linux). Sin embargo, Python no es un lenguaje perfecto, por lo que también abordaremos en este panel algunas de sus fallas y limitaciones.
El panel estuvo conformado, además de mí, por los siguientes cuatro destacados profesores del Tecnológico de Monterrey:
  • Alma Patricia Chávez Cervantes (Campus Estado de México)
  • Irma María García Barranco (Campus Estado de México)
  • Kenneth William Bauer (Campus Guadalajara)
  • Eduardo Daniel Juárez Pineda (Campus Querétaro)

Los integrantes del panel “Enseñando a programar usando el
lenguaje Python”. Atrás: Patricia Chávez y Ken Bauer. En frente:
Irma García, Ariel Ortiz y Eduardo Juárez.

En el panel se discutieron las ventajas y desventajas que tiene Python como primer lenguaje para enseñar a programar y cómo se compara con otros lenguajes (por ejemplo C, C++ o Java). Así mismo, se presentaron ejemplos de cómo se puede utilizar Python y bibliotecas de terceros para resolver problemas de dominios variados, como son: cómputo científico e ingenieril, procesamiento de medios y programación de microcontroladores. Finalmente, se compartieron experiencias, sugerencias, prácticas y recursos que seguramente resultarán útiles a otros maestros interesados en adoptar Python en sus clases.

Fuente: www.ezlearning.co.uk

El panel fue recibido de manera bastante favorable por el público asistente, compuesto por más de una veintena de personas. En particular, varios profesores de nivel preparatoria se mostraron muy interesados en los temas tratados.


Se pueden consultar las siguientes ligas para encontrar más información sobre este panel y el CIIE 2017 en general: