@lvbernal

Developer // Telecomunicaciones // Capoeira // Me gusta aprender de los que están cambiando vidas.

2016/10/01

Tareas automatizadas con Visual Studio Code

Visual Studio Code es el editor que uso para programar. Una de las características que más me gusta es que se pueden integrar herramientas externas utilizando tareas. Las tareas permiten ejecutar comandos para deployment, revisión de estilo, pruebas unitarias, entre otros, directamente desde el editor.

Hago muchos programas en Python, y tres tareas que siempre configuro son: run para ejecutar scripts, pep8 para revisar estilo y test para correr pruebas unitarias. Este es mi archivo tasks.json:

{
    "version": "0.1.0",
    "osx": {
        "command": "sh",
        "args": ["-c"]
    },
    "windows": {
        "command": "cmd",
        "args": ["/C"]
    },
    "isShellCommand": true,
    "suppressTaskName": true,
    "showOutput": "always",
    "tasks": [
        {
            "taskName": "run",
            "args": ["python ${file}"]
        },
        {
            "taskName": "pep8",
            "args": ["pep8 ${file}"]
        },
        {
            "taskName": "test",
            "args": ["python tests.py"]
        }
   ]
}


Como las tareas se escriben por cada proyecto, hice un snippet JSON que me permite agregarlas rápidamente:

{
     "python_tasks": {
        "prefix": "pytasks",
        "body": [
            "{",
            "    \"version\": \"0.1.0\",",
            "    \"osx\": {",
            "        \"command\": \"sh\",",
            "        \"args\": [\"-c\"]",
            "    },",
            "    \"windows\": {",
            "        \"command\": \"cmd\",",
            "        \"args\": [\"/C\"]",
            "    },",
            "    \"isShellCommand\": true,",
            "    \"suppressTaskName\": true,",
            "    \"showOutput\": \"always\",",
            "    \"tasks\": [",
            "        {",
            "            \"taskName\": \"run\",",
            "            \"args\": [\"python $\\{file\\}\"]",
            "        },",
            "        {",
            "            \"taskName\": \"pep8\",",
            "            \"args\": [\"pep8 $\\{file\\}\"]",
            "        },",
            "        {",
            "            \"taskName\": \"test\",",
            "            \"args\": [\"python tests.py\"]",
            "        }",
            "   ]",
            "}"
        ],
        "description": "Creates python tasks"
    }
}


Hay muchas formas de personalizar Visual Studio Code y cientos de extensiones ya desarrolladas.

2015/02/15

Convierta Visual Studio en el mejor IDE para Python con PTVS

Python Tools for Visual Studio (PTVS) es una herramienta que hace parte del Azure Machine Learning Group que nos permite extender el IDE para hacer scripts y otros proyectos en Python. Incluye intellisense, debugging, virtualenv, testing y templates para Bottle, Django, Flask e integración con Azure. En este post exploraremos algunas de sus características.

La plantilla para proyectos web con Django tiene Bootstrap integrado.

Plantillas de proyectos incluidas en PTVS.

Todo desarrollador debe manejar adecuadamente su entorno de ejecución y ser muy cuidadoso en la instalación de paquetes, porque si tiene varios paquetes en entornos distintos pueden presentarse errores de cross threading. Yo utilizo la distribución Anaconda que ya tiene un grupo de paquetes para análisis de datos y computación científica, dos campos en los que se utiliza mucho Python. Sin embargo, es común tener dos o más intérpretes instalados. PTVS permite crear entornos virtuales (virtualenv) independientes por proyecto para evitar conflictos entre versiones de paquetes instalados globalmente; así se dividen los entornos de desarrollo y ejecución, algo similar a lo que se logra con Vagrant.

Cada que se crea un nuevo proyecto, PTVS se encarga de construir el entorno virtual y de instalar los paquetes.

Entornos de desarrollo y de ejecución.
Creación automática de un entorno de ejecución en la carpeta del proyecto.

Para agregar paquetes se utiliza el menú contextual o se edita el archivo requirements.txt, Visual Studio se encarga de ejecutar los comandos para instalarlos.

Agregar paquetes con pip.

Archivo de requerimientos.

Una vez creado el proyecto, se pueden correr el debugger y las pruebas unitarias.

Integración del debugger.
Integración de pruebas unitarias.

También es posible ejecutar funciones directamente en la consola, siempre dentro del entorno virtual.

Consola de Python en Visual Studio



Otras características incluyen el formato de código siguiendo el PEP 8, profiling (análisis de rendimiento) y refactoring. Para más información pueden revisar la documentación. 

PTVS convierte a Visual Studio en el mejor IDE para Python... ¡y es compatible con Visual Studio Community Edition!

2014/11/04

Programas de relacionamiento Microsoft

En el segundo semestre de 2006, Sergio Victorio, uno de los integrantes del equipo de relacionamiento académico y divulgación de nuevas tecnologías de Microsoft Colombia llegó a la Universidad Icesi junto a Roberto Erazo, un estudiante de la Universidad del Cauca para presentarnos los programas de relacionamiento académico y el concurso Imagine Cup. En la reunión todo era motivante: el viaje a India a la final mundial de IC2006, el programa de Microsoft Student Partners (MSP), las reuniones de integración en las oficinas de Microsoft, las técnicas para aprender rápidamente nuevas tecnologías, los vouchers de certificación, el acceso a software original de forma gratuita, las oportunidades laborales, entre otras. Yo era un estudiante de 6º semestre de Ingeniería Telemática y me gustaba mucho el desarrollo de software, así que no dudé en apostar por esa oportunidad.

En el segundo semestre de 2014, 8 años después y ante un público modesto típico de las últimas semanas de clase en la universidad (aunque más grande que el de esa época), era yo el que estaba sentado en el banquillo. Mi intervención fue rápida pero me ayudó a reflexionar sobre este tiempo y me motivó a escribir este post. Ya había escrito sobre mi participación en el concurso entre 2007 y 2011, pero no había hablado del resto de experiencias.

En 2007 ya era un MSP; un estudiante que recibía de primera mano información sobre nuevas tecnologías y herramientas de desarrollo muchos meses antes de que estuvieran disponibles oficialmente. Daba charlas, organizaba eventos, me invitaban a eventos y lo mejor de todo: aprendía mucho. Siendo MSP conocí grandes amigos con los que aún tengo contacto y gané dos cosas fundamentales para mi vida profesional: la habilidad para hablar en público y mi gusto por las aplicaciones móviles.

MSP Summit. Amal era la única mujer ese año, así que tuvo un puesto privilegiado.
La primera la obtuve a la fuerza cuando tuve que hacer la presentación en la final nacional de Imagine Cup 2008. Por alguna razón siempre me había "salvado" de las exposiciones en público tanto en el colegio como en la universidad, pero esa vez me tocaba empezar la presentación de mi grupo frente a un jurado de 8 personas totalmente desconocidas, en otra ciudad y en el marco del concurso internacional de tecnología más prestigioso que existe. Nos preparamos mucho, tanto que los tips que aprendí aún los comparto con estudiantes que van a presentar sus proyectos de grado. Recuerdo que las profesoras decidieron que debía empezar yo porque mi voz gruesa iba a despertar al auditorio por si nos tocaba de últimos... ¡y funcionó!. Después de eso podía manejar cualquier audiencia.

Mi gusto por las aplicaciones móviles empezó unos meses antes mientras desarrollaba EcoSoft, una plataforma que permitía hacer denuncias sobre delitos ambientales utilizando celulares. Ninguno en el equipo había desarrollado una aplicación móvil y decidí aceptar el reto. Construí una app para Windows Mobile 6 que enviaba mensajes de texto hacia un servidor que los procesaba y mostraba reportes. Vaya si eso influyó en mi vida profesional: al siguiente semestre me inscribí en el curso de Aplicaciones Móviles y hoy soy el profesor del mismo.

EcoSoft: mi primera app.

Sobre las oportunidades laborales puedo decir que en 2009 hice mi práctica profesional en empresa propia aprovechando el beneficio BizSpark, que ofrece 3 años de software gratuito y apoyo a emprendedores. No continué con esa iniciativa y las razones dan para otro post largo, pero al terminar mi práctica tuve tres ofertas: de Microsoft, de Ingergrupo (el socio de negocios de Microsoft más grande del país) y de la Universidad Icesi. Es evidente cuál de las 3 elegí y estoy muy satisfecho de mi decisión, porque me ha permitido crecer profesionalmente mientras hago lo que más me gusta, que es aprender y compartir mi conocimiento.

En 2009 me gradué y empecé otra etapa. Con el programa de Microsoft Community Specialists (MCS) pude participar en eventos más grandes como los TechDays y la gira de Windows Phone, que me han llevado por Cali, Popayán, Bucaramanga, Barranquilla y Bogotá, para compartir mi conocimiento sobre Aplicaciones Móviles y Computación en la Nube con audiencias profesionales.

En Bucaramanga con el equipo de MCS.
Por supuesto hay cosas que no han salido tan bien. Debo confesar que hasta ahora no tengo ninguna certificación; que la peor presentación que he hecho fue durante un JoomlaDay, ese día no funcionó nada; que desde que empecé mi maestría en 2012 dejé un tanto abandonado el programa; y que por mi trabajo ahora manejo más Python que C#. Las buenas noticias son que ya terminé la maestría, que soy el nuevo encargado del programa de relacionamiento Microsoft-Icesi desde la Facultad de Ingeniería (el mismo rol que desempeñaban mis profesoras cuando yo era MSP), que participaré nuevamente como tutor en Imagine Cup y que la presentación que hice me dejó aún más motivado porque caí en cuenta que sólo me falta alcanzar una de las cosas que me engancharon en 2006: ser un Most Valuable Professional (MVP).

No queda más que agradecerles a todos los que me han acompañado durante estos años, tanto en Icesi como en DPE de Microsoft Colombia, e invitar a los estudiantes a que aprovechen estos programas de relacionamiento, les aseguro que no se van a arrepentir.