Entrevista a Rafa ‘TheFull’ Carmona

Esta entrada se publicó originalmente en Harbour Magazine, mi publicación sobre el lenguaje de programación Harbour.

Una de las secciones de Harbour Magazine son las entrevistas con programadores destacados de la comunidad Harbour, pretendiendo así dar visibilidad a las personas que participan activamente en el desarrollo y difusión del lenguaje Harbour. Las entrevistas se realizan y se publican en el idioma del entrevistado.

Para mi primera entrevista he elegido a Rafa Carmona, también conocido como TheFull en el mundo de la programación. Tengo el placer de conocerlo personalmente y tengo que decir que es un tipo jovial y afable, con quien puedes hablar en profundidad de temas de programación, pero además siempre tiene un hueco para hacerte reir y pasarlo bien.

Rafa tiene un blog personal donde publica muchos artículos de programación enhttp://xthefull.blogspot.com.es/

Rafa, soy José Luis de Novelda, en Alicante. Estoy empezando una publicación en Medium sobre Harbour que he llanado Harbour Advisor y la tienes en https://medium.com/harbour-magazine. La publicación esta abierta a colaboraciones, si quieres publicar algo tan solo tienes que crear una cuenta en Medium y escribirme para que te añada como escritor de la publicación.

Lamentablemente, casi no tengo tiempo material , pues tengo un nene de 16 meses que me consume todo el tiempo. Te contesto, porque ya se durmió , jejeje.

Así, si quieres coger de mi blog material que ido escribiendo, te doy permiso para ello, faltaría más 😉

Hice hace un poco el tema de los threads para Harbour, por si es de interés.

Explícanos un poco tu bio, donde vives y a qué te dedicas profesionalmente.

Rafa Carmona

Vivo en un pueblo pequeño, Bigues i Riells, donde un sitio es muy conocido, Sant Miquel del Fai, aunque trabajo en Barcelona Capital.

Desde hace más de 10 años trabajo en Tesipro Solutions, y me dedico a la programación de software para hoteles, sobretodo a nivel del BackEnd, realizando interface de diversos fabricantes, desde llaves , tarificadores, y actualmente estamos en fase de test en un hotel real, de una cadena hotelera muy importante en España, de un CheckIn Express, realizado en Harbour.

Anteriormente, trabajaba en Roscas de Precisión, si , era tornero especializado en Tornillo SinFin, y realicé todo el software de la empresa, desde la facturación hasta la gestión mecánica, pero la espalda , hernia, dijo que no podía seguir ahí. ;-(

Para los que no te conozcan, coméntanos cuál es tu relación con la comunidad Harbour. ¿Cómo participas y qué opinas de ella ?

La verdad es que la comunidad de Harbour es simplemente maravillosa. Actualmente, sigo el desarrollo de Viktor 3.4, y la oficial 3.2. Tanto Prezmeck como Viktor han dado un salto de calidad increíble al proyecto, además de ser muy muy buenos maestros.

Mi último aporte fue para la versión 3.4, xmlToHash() que te permite convertir un xml en un hash , y recorrerlo sin tener que saber nada de nodes, tree, iter, y demás historias 😉

Lo necesitaba para mi webservices, así que lo programé y lo doné a la comunidad, un pequeño aporte; “De bien nacido es ser agradecido”

https://github.com/vszakats/harbour-core/blob/master/contrib/hbmxml/tests/tohash.prg

Te aseguro que si usas XML, esto te quitará horas y horas de programar, jajajaja.

¿ Cómo empezaste en Harbour y en qué momento decidiste usarlo profesionalmente ?

Empecé a usar Harbour cuando empecé a crear t-gtk. Gracias desde aquí a Giancarlo Niccolai que me animó a pelearme con la gtk.

Todavía me acuerdo cuando tenía que bajarme desde el CVS de xHarbour con el modem, aquello era eterno. 😉

Después, cuando vimos que Clipper con Fivewin ya no daba para más, decidimos dar el salto a 32 bits.

¿ Qué tipo de software haces ? ¿ De qué desarrollo tuyo te sientes más orgulloso ? ¿ Puedes mandarnos un pantallazo de tu desarrollo ?

Generalmente realizo con Harbour software de BackEnd, pues es el único que nos permite trabajar tanto con DBFs como con SQL Server.

Umm.. es como decirle a un padre cual de los hijos es al que más quieres;

El proyecto T-Gtk, una GUI Libre multiplataforma, la cantidad de horas invertidas no se paga con dinero. jajaja

https://sourceforge.net/projects/t-gtk/

Formulario realizado con T-Gtk

Actualmente estoy inmerso en un WebServices realizado en Harbour que es como una navaja suiza, hace de todo 😉 Lo que se ve , lo da el httpd de Harbour, y es rápido , muy rápido, por decir unas cifras, tenemos 21 hoteles haciendo mas de 50.000 peticiones al día desde diversos puntos, contra SQL Server, y no se ha caído ni una sola vez, y eso desde hace meses.

Y el programa de cálculos de mi antigua empresa, realizado completamente en T-Gtk , y MariaDB, y que es multiplataforma.

http://xthefull.blogspot.com.es/2014/03/software-maquinas-herramientas.html

¿ Utilizas algún GUI en tus desarrollos ? ¿ Cual de ellos ?

Pues hoy en día no uso ya interfaz gráfico, porque como ya dije, estoy en la parte del BackEnd.

Cuentanos cual es tu entorno de desarrollo y qué herramientas de programaciónes utilizas.

Sublime Text 2, con el soporte que hicimos básicamente mi buen amigo Joaquim Ferrer ,yo, y otros amigos.

https://github.com/rafathefull/harbour

El mejor control de versiones, Git, y hbmk2 para compilar, eso es todo.

¿ Qué echas de menos en Harbour o en su comunidad ? ¿ Qué te gustaría que tuviera Harbour ?

Quizás a nivel de núcleo, la participación de más gente, no es bueno que solo 2 personas lleven todo, aunque también es cierto, que el nivel es tan tan alto, que es difícil encontrar un perfil como esos 2 monstruos que he nombrado anteriormente.

Más soporte para el mundo Web, sobretodo , meterle soporte a Apache sería brutal! Nos guste o no, hoy en día , y el futuro, para la web y los dispositivos móviles.

Además, el nivel de comunidad veo que se está produciendo un estancamiento en las noticias, soporte, etc, en los distintos grupos. Lo que pasa es que se ha diversificado en muchos grupos distintos, en temas de GUI, pero que mantienen un denominador común que es Harbour, pero no están interconectados entre ellos, eso es un handicap, bajo mi humilde opinión.

¿ Conoces otros entornos de programación aparte de Harbour ? ¿ Qué tipo de desarrollos has hecho en otros entornos ?

Pues también estoy ahora liado con Android, estamos haciendo un prototipo de comandera, y veremos que tal se porta, de momento se están cumpliendo las expectativas, aunque lo tengamos que rehacer una y otra vez hasta que quede perfecto en cuanto a rendimiento y optimizaciones, soy bastante maniático en el tema de rendimiento.

También en su día me puse con Delphi, hasta realice un tarificador por puerto serie! Sin tener ni idea de Pascal.

También he estado haciendo pruebas con Python, la verdad es que me gusta su sencillez.

Y lo que me gustaría es aprender Haskell, programación funcional, pero no tengo tiempo ;-(

Muchas gracias por tu atención Rafa, un saludo.

Muchas gracias a tí por esta iniciativa.

Desde aquí solo dar las gracias a todos los amigos que a lo largo de estos años he conocido gracias a Harbour.

  • Mi buen amigo Joaquim Ferrer, a las duras y a las maduras, seguimos en la brecha!
  • Master Rene Flores, mi maestro de Fivewin, aunque ahora se haya ido con la fuerza a otro lado 😉
  • Master Antono Linares, gracias por hacerme disfrutar otra vez por la programación, un tio cojonudo!
  • A mis amigos de Sevilla, Manu Exposito, un tio con un corazón que no cabe en el planeta, y a Calero, “viva er Betis!”
  • A Capel, a Miguel Angel Marchuet , a mis amigos de Venezuela, Riztan , Daniel, a los amigos Argentinos, Uruguayos, etc..

Siento no nombrar a todos, estaría todo la noche ;-), a todos ellos, gracias por compartir vuestro tiempo en ayudar a los demás, aunque sea solo a = a +1 , eso siempre suma, como diría nuestro buen amigo Paco García.

Ah!! Se me olvidaba, AIBA LA HOSTIA PUES, Felix Pablo, otro tío con un corazón enorme.Harbour Magazine

Publication about Harbour programming language

Bienvenidos a Harbour Magazine

Esta entrada se publicó originalmente en Harbour Magazine, mi publicación sobre el lenguaje de programación Harbour.

Hubo una vez un lenguaje de programación llamado Clipper que, a principios de los 90, era un lenguaje ampliamente extendido. Su compatibilidad con los archivos en formato DBF, su facilidad de uso y capacidad para generar ejecutables que distribuir sin runtimes era muy valorada entre los programadores. Fue, sin duda, uno de los principales lenguajes de programación de la primera época de los PC. En aquellos años hubo una publicación llamada Clipper Advisor que contaba todas las novedades del lenguaje, informaba de otros productos relacionados y servía de nexo de unión a la comunidad de programadores.

Los cambios de propietario del lenguaje unida a la llegada de Windows y los entornos gráficos supusieron un declive del lenguaje, que no evolucionó durante muchos años. El compilador Harbour ha permitido seguir usando la sintaxis de Clipper, añadiendo al mismo tiempo nuevas funcionalidades para hacer de él de nuevo un lenguaje moderno.

En este nuevo contexto, Harbour Magazine nace con la finalidad de servir de medio de comunicación de la comunidad de programadores Harbour, mostrando las bondades del lenguaje, las distintas herramientas disponibles para realizar aplicaciones en entorno gráfico, los programas hechos con estas herramientas y los profesionales que las desarrollan. Para mostrar que la comunidad de programadores Harbour sigue existiendo y estando activa.

Harbour Magazine es una publicación que admite colaboraciones. Si tienes algo que contar relacionado con Harbour por favor contacta con nosotros y te explicaremos la manera de publicarlo.

negresbetanics.com 2.0

En las últimas semanas he estado trabajando en una nueva versión de la web de mi comparsa, Negres Betànics de Novelda. Hice una primera web para la comparsa en el año 2008, pero por varios motivos esta web no se mantuvo y tuve que rehacerla desde cero. La web está hecha con WordPress con los siguientes elementos:

  • Versión free del tema Make
  • Yakanda Instagram, un plugin que permite mostrar imágenes de Instagram de un usuario o que tengan un determinado hashtag. En la web se muestran las imágenes que tienen el hashtag #negresbetanics
  • Cookie law info, un plugin para avisar del uso de cookies en la web.
  • Contact form 7, un plugin para poder incluir un formulario de contacto en la web.

www.negresbetanics.com

En la nueva web hemos querido dar importancia a las filás de la comparsa así como a las capitanías para que los visitantes se puedan hacer una idea de la vistosidad de nuestra fiesta. Muchas de las fotos mostradas en la web son de nuestro comparsista y fotográfo Antonio López.

el año sin pantalones – crítica del libro

Hace unas semanas escribí una entrada sobre el libro El año sin pantalones donde decía que iba a ser una de mis lecturas de verano. Ya he terminado de leerlo y la verdad es que el libro me ha defraudado un poco. Sinceramente esperaba más de este libro. Esta entrada es una opinión personal sobre el libro.

El libro va contando el devenir de un grupo de trabajo de WordPress liderado por Scott Berkun que es el autor del libro. Ese liderazgo queda un tanto difuso, puesto que al tratarse de un grupo de trabajo distribuido fisicamente los problemas que se encuentran son distintos a los de un grupo equipo que trabaja fisicamente junto. La verdad es que apenas cuenta en qué consistió ese liderazgo ni los problemas que encontró ni cómo los resolvió. Sobre el funcionamiento de Automattic cuenta que la empresa funciona mediante grupos de trabajo orientados a funcionalidades de WordPress. Hay unas directrices generales que establece el CEO de la empresa, y luego cada grupo de trabajo es autónomo para desarrollar estas directrices. El funcionamiento de los grupos de trabajo consiste en hacer desarrollos cortos, en ciclos de dos semanas, y liberar rápido. Los principales canales de comunicación dentro de la empresa son el IRC y los P2 que son unos blog donde cualquiera puede publicar. Todas las conversaciones de IRC y entradas de P2 se almacenan y se pueden consultar por cualquier empleado, incluidas las del CEO de la empresa.

Uno de los temas que más me ha gustado es cuando habla de funcionalidades de las aplicaciones y dice que lo importante no es una funcionalidad en si, sino la manera en que esa funcionalidad se diseña para que el usuario la pueda utilizar, y que es una mala idea dejar el diseñó del interfaz una funcionalidad para el final, cuando ya tienes el código hecho. Esto es algo que yo siempre hago en mis programas: antes de programar una nueva funcionalidad tener bien detallado cual va a ser el interfaz de la misma.

El libro tiene pasajes totalmente prescindibles, como todo el episodio del viaje del equipo de trabajo a Grecia. Para mi gusto hay mucho relleno en el libro, de las 250 páginas que tiene el libro se puede contar lo mismo en bastante menos espacio. No es un libro donde se adentre en temas de liderazgo ni de dirección de grupos de trabajo ni de nada, sino que va contando una historia y dando pinceladas de esto y de aquello, pero poco más.

Un libro prescindible desde mi punto de vista, salvo para fanboys de WordPress.

clase TTagEver para FivewinHarbour

Una funcionalidad que quería implementar en el Puchero es la gestión de dietas y tolerancias de las recetas. Es decir que para cada receta se pueda poner si es adecuada para gente con colesterol, celíacos, o para dietas de puntos, Dunkan o lo que sea. Esto supone que cada receta podía llevar asociadas múltiples dietas y la verdad es que no tenía claro cómo hacerlo. Muchas veces lo principal no es la funcionalidad sino como se implementa esta funcionalidad lo que hace que esta sea aceptada por los usuarios o no.

El caso es que dándole vueltas a la cabeza recordé el sistema de etiquetado de documentos que usa Evernote. Algo así:

En FWH hay una clase llamada TTagCloud que podía servirme como base. Esta clase la hizo Francisco García Fernández, que creo que es un gran creador de controles para FWH y además un buen amigo mio. Estuve varias semanas dándole vueltas al control sin conseguir avances significativos, hasta que me puse en contacto con Paco para pedirle ayuda. Paco en un par de días hizo el control, y ahora en el Puchero tengo hecha la implementación de las dietas de esta manera.

Aspecto de la clase TTagEver

La clase desarrollada por Paco está disponible en el siguiente repositorio de GitHub: https://github.com/JoseluisSanchez/TTagEver

Mil gracias Paco.

el año sin pantalones

Portada del libro

Estoy leyendo ‘El año sin pantalones: WordPress.com y el futuro del trabajo‘ de Scott Berkun en la edición en español que ha publicado la editorial Anaya Multimedia. El libro cuenta en primera persona un año de trabajo del autor, Scott Berkun, en Automattic, la empresa desarrolladora del sistema de gestión de contenidos WordPress y propietaria del sitio WordPress.com que aloja este blog.

Reconozco que me gusta este tipo de libros donde se cuenta en primera persona experiencias relacionadas con la gestión de proyectos, y creo que hay pocos libros de estos en español donde la empresa en cuestión sea una empresa de informática. Aunque apenas llevo leida una tercera parte del libro, creo que es un libro recomendable para conocer por dentro el funcionamiento de una empresa de tecnología y la forma en que trabajan. El autor del libro es un conocido escritor sobre gestión de proyectos informáticos, pero Automattic funciona de una manera totalmente distribuida. El contacto entre los trabajadores es virtual a través de IRC, apenas hay correos entre ellos ni tampoco unas directrices claras por parte de la dirección de la empresa. Este es el entorno, o la cultura como dice el autor, en que tiene que desarrollar su trabajo.

El libro tiene mucha parte superflua, no es un libro de gestión de proyectos al uso sino casi más un diario sobre el año de trabajo donde el autor inserta sus reflexiones sobre temas como liderazgo, trabajo en equipo y demás. Creo que es un lujo leer de primera mano como funciona una funciona una empresa como Automattic y la manera en que se organizan los grupos de trabajo dentro de ella.

colossus es ahora LGPL

Tenía una deuda pendiente con Colossus, mi programa de gestión de contraseñas. Hasta ahora el programa utilizaba un sistema propio de encriptación cuya fiabilidad no podía garantizar al 100{72666422441995bc206cebb09a3b9c56aa12b76eccf4cf2e7f1cb3f90410eb4e}. Sin embargo Colossus es el programa que más utilizo de los mios, dado que lo uso practicamente a diario. Así que hace unos meses tomé la decisión de reprogramarlo por completo, basándome en las siguientes especificaciones:

  1. Abandonar mi sistema de encriptación y utilizar el RDD de ADS para Harbour que proporciona encriptación a nivel de fichero .dbf.
  2. El programa debería permitir trabajar con múltiples ficheros de contraseñas, para lo cual debería realizar los procesos de creación, apertura y cierre de ficheros de claves.
  3. Cada fichero de claves sería autocontenido, con lo cual no podría tener fichero de materias separado. Esto supone que la lista de materias la iba a tener que crear con las materias existentes en el fichero de claves.
  4. Por último, para intentar minimizar la existencia de errores en el programa, liberaría el código del mismo con licencia GPL 3 permitiendo que otros programadores revisaran el código y pudieran corregir errores.

Hoy, después de varios meses de trabajo y de pruebas del programa presento Colossus 6.0. Lo primero que tengo que decir es que esta versión del programa no es compatible con las versiones anteriores del mismo, ni puede leer ficheros de contraseñas de versiones anteriores del programa. La única manera de introducir las contraseñas de una versión anterior del programa en la versión 6.00 es introduciendo a mano de nuevo las contraseñas.

Como todavía no tengo claro el tema de subir el código del programa a Github o similares, dejo un enlace al código del programa. Agradecería enormemente comentarios con recomendaciones de un cliente de Github para Windows. En breve publicaré un instalador en la web de alanit, pero el fichero ZIP con los fuentes lleva el ejecutable y todos los archivos necesarios para funcionar.

Colossus 6.0 con fuentes

Las siguientes instrucciones están en el fichero leeme.txt incluido en el ZIP de descarga.


Esta aplicación requiere Borland C, Harbour y FivewinHarbour para compilarse. Yo uso FWH 12.04 y la versión correspondiente de Harbour empaquetada por Fivetech. Para compilar el programa hay que hacer lo siguiente:

* Ejecutar brc.bat que crea el fichero de recursos colossus.res
* Ejecutar **make cls1204** que compila los fuentes y crea el ejecutable

El archivo de compilación es cls1204.mak y el archivo de enlazado es cls1204.bc. Las rutas de los compiladores y librerias que uso son las siguientes:

* HBDIR=c:\fivetech\hb1206
* BCDIR=c:\bcc582
* FWDIR=c:\fivetech\fwh1204

Mi editor es HippoEdit (http://www.hipoedit.com) y el archivo colossus.heprj es el archivo de proyecto para ese editor.

La estructura de carpetas de la aplicación es la siguiente:

\ contiene los archivos de compilación y enlazado, así como las DLL necesarias para ejecutar el programa.
---\ch contiene los archivos de preprocesador de las librerias que utilizo
---\obj carpeta donde se depositan los objetos de la compilación
---\prg carpeta con los fuentes. No se incluyen report.prg, rpreview.prg ni image2pdf.prg por ser propietarios.
---\res carpeta de recursos. Editar siempre cls.rc puesto que colossus.rc se construye con brc.bat
---\lib contiene una copia de librerias no incluidas en FWH y que utilizo en la aplicación.

Para cualquier consulta escribirme a joseluis@alanit.com

Novelda, junio de 2014.
José Luis Sánchez Navarro

Al arrancar el programa presenta el siguiente aspecto:

Colossus 6.0 - ventana principal
Colossus 6.0 – ventana principal

La barra de iconos principal nos permite la creación, apertura y cierre de ficheros de contraseñas, configurar el programa y la rejilla de claves, visitar mi sitio web, mostrar el ‘acerca de…’ y salir del programa.
Lo primero que debemos hacer es crear un fichero de claves dado que en la instalación el programa no incorpora ningún fichero de claves. Pulsamos el botón de la carpeta negra con el signo + y el programa muestra el siguiente formulario:

Este formulario nos permite crear un fichero de claves en la ubicación que queramos y especificar la contraseña del mismo. Una vez creado el fichero el programa nos dice si queremos usar este fichero de claves, si le decimos que sí nos pide la contraseña del mismo y nos presenta el contenido del fichero de claves que estará vacio.

Colossus 6.0 - ventana de fichero de claves
Colossus 6.0 – ventana de fichero de claves

Cuando el programa abre un fichero de claves muestra varios elementos nuevos:

  1. La ruta y nombre del archivo de claves en la barra de título del programa.
  2. Una barra lateral de acciones que nos permitirá operar con el fichero de claves abierto.
  3. Una rejilla de datos con las claves del fichero de claves.

En la barra de acciones hay un primer bloque de acciones que nos permite crear una nueva clave, modificar la clave seleccionada, borrar la clave seleccionada, buscar claves e imprimir listados de las claves del fichero. El formulario de edición de una clave es el siguiente:

Colossus 6.0 - Formulario de edición de contraseñas
Colossus 6.0 – Formulario de edición de contraseñas

El formulario de edición de claves es similar al de versiones anteriores del programa pero incorpora autocompletado en el campo de materia.
La siguiente acción en la barra de acciones de claves es la gestión de la tabla de materias. Como dije al principio, el programa unicamente guarda el fichero de claves y crea cada vez la tabla de materias con las materias existentes en las claves. Esto supone que si se dan de alta materias directamente en la tabla de materias pero no se asigna esa materia a ninguna clave, la materia se perderá al cerrar el fichero de claves puesto que las materias no se guardan separadas de las claves. Por esto es conveniente dar de alta las materias al dar de alta las claves.
Las siguientes acciones en la barra de acciones permiten copiar el usuario de la clave al portapapeles, copiar la clave al portapapeles y ver el contenido del portapapeles. A continuación viene la opción de cambiar la contraseña del fichero de claves. Esta acción se realiza a través del siguiente formulario:

La siguiente acción tiene por etiqueta Salir pero no sale del programa, sino que cierra el fichero de claves abierto.

De vuelta a la barra de iconos principal, la opción de configuración del programa muestra las siguientes opciones:

Colossus 6.0 - cambio de contraseña del fichero de claves.
Colossus 6.0 – cambio de contraseña del fichero de claves.

El formulario de configuración de la rejilla de claves es el mismo que utilizo en mis otros programas:

Colossus 6.0 - Configuración de la rejilla de claves.
Colossus 6.0 – Configuración de la rejilla de claves.

Python 101: taller de programación con Python para chavales.

A raiz del curso de Python de Coursera me planteé la posibilidad de impartir un curso de Python para chavales. Yo lo pasé muy bien en el curso, y me pareció que el enfoque del curso basado en juegos es lo suficientemente atractivo para que se pueda impartir un curso similar a alumnos de 3º y 4º de ESO, es decir chicos y chicas de 14 y 15 años. Estuve preparando lo que podría ser un guión, me fui al colegio donde cursan estudios mis hijos y planteé mi idea. El equipo directivo dió el visto bueno y nos pusimos manos a la obra. El planteamiento fue hacer un taller de programación para alumnos de 3º y 4º de ESO, fuera del horario escolar y que fuera totalmente voluntario además de gratuito. Estuve presentando el taller a los chavales, contando cuales eran los objetivos del taller y la manera de enseñarles a programar y abrimos un periodo para que los chavales se apuntaran al curso. La respuesta de los alumnos fue buena, a pesar de ser una actividad que ha planteado en Enero cuando muchos alumnos ya tienen organizadas actividades extraescolares y que se imparte cuando terminan las clases.

Así que he dado el salto de alumno a profesor en pocos meses, y estoy impartiendo un taller de programación con Python en el colegio San José de Cluny de Novelda. Llevamos 4 sesiones donde hemos visto una introducción al entorno CodeSkulptor, operadores matemáticos, variables, operadores lógicos, sentencias condicionales y funciones. La semana que viene comenzaremos a hacer el juego de ‘Piedra, papel, tijera, lagarto, Spock’, y espero que podamos llegar a hacer alguno de los juegos interactivos del curso de Coursera.

Aunque llevamos sólo cuatro sesiones del taller, son suficientes para sacar una serie de conclusiones. La primera es que a esa edad ya hay chavales interesados en la programación, y que merece la pena el esfuerzo de preparar algo como lo que estoy haciendo. La segunda es que a los chavales les cuesta asimilar ciertos conceptos, y creo que está relacionado con la falta de desarrollo de la capacidad de abstracción a esas edades. La tercera es que es muy difícil explicar algo a un grupo de adolescentes. Es muy distinto dar clase en la universidad que en un colegio, realmente hay que valorar más lo que hacen todos los días los profesores por nuestros hijos.

Por último, creo el concepto ampliamente extendido de que los chavales son buenos con la tecnología es bastante falso. Los chavales andan bastante perdidos con los ordenadores, pero posiblemente menos que la mayoría de los padres. De ahí el pensamiento de muchos padres que creen que sus hijos son unos auténticos fenómenos, cuando lo único que hacen los chavales es jugar y poco más. Me he acordado de un post que leí hace tiempo titulado Kids can’t use computers.. and this is why it should worry you y con el que estoy totalmente de acuerdo. Pero la culpa no es de los chavales, es de un sistema educativo que deja mucho que desear en la enseñanza de la tecnología.

an introduction to interactive programming in Python

El pasado mes de Octubre comencé el curso An Introduction to Interactive Programming in Python que la Universidad de Rice ofrece a través de Coursera. El curso es una introducción a la programación con Python basada en el desarrollo de juegos sencillos. De las 9 semanas que dura el curso conseguí llegar hasta la semana 7, y tuve que abandonar en ese punto el curso por falta de tiempo.

Como valoración global el curso me ha encantado. No soy un novato programando, pero mis conocimientos de Python eran muy superficiales. Con este curso los he mejorado, y sobre todo me he divertido. Hacía años que no disfrutaba tanto con un curso de programación, y esto ha sido posible gracias al enfoque del curso, que consiste en módulos semanales donde se explica lo necesario para que el alumno pueda realizar un pequeño proyecto de programación. De esta manera se consigue una alta motivación pues el alumno va viendo sus progresos semanalmente. Los proyectos son programas de dificultad baja o media, que se pueden completar con menos de 200 lineas de código, y que están detallados con procedimientos paso a paso que minimizan las dificultades de realización de los mismos. El único inconveniente es el idioma, a veces me costó entender qué tenía que hacer pero más por dificultades con el inglés que por la complejidad de la tarea a realizar.

Para el desarrollo del curso se utiliza la herramienta CodeSkulptor, que es un intérprete Python que se ejecuta en una ventana de navegador web, con lo que el alumno no tiene que instalar nada en su PC para seguir el curso. Además se utiliza un modulo llamado SimpleGUI que se ejecuta internamente en CodeSkulptor y que ofrece la posibilidad de realizar aplicaciones interactivas de manera sencilla. Este módulo es sencillo pero las posibilidades que ofrece para desarrollar aplicaciones gráficas sencillas son enormes.

Como dije antes, el curso está organizado por bloques semanales, cada uno con una serie de videos explicativos, ejercicios y un miniproyecto que se debe entregar puntualmente. El contenido de las 7 primeras semanas del curso fue el siguiente:

  1. Comentarios, literales, expresiones aritméticas, operadores, variables. Miniproyecto: ‘Queremos un shrubbery!’
  2. Funciones, indentación, expresiones aritméticas, módulos, expresiones y operadores lógicos, instrucciones condicionales. Miniproyecto: ‘Piedra, papel, tijera, lagarto, spock’.
  3. Programación dirigida por eventos, variables locales y globales, SimpleGUI, botones, campos de entrada. Miniproyecto: ‘Adivina el número’.
  4. Canvas y dibujo, operaciones con cadenas, dibujo de texto, timers. Miniproyecto: ‘Parar el cronómetro’.
  5. Listas, puntos y vectores, distancias, colisiones y reflexiones, eventos de teclado, control de posición, control de velocidad, datos mutables e inmutables. Miniproyecto: ‘Pong’.
  6. Eventos de ratón, métodos de listas, iteración, diccionarios, carga y dibujo de imágenes. Miniproyecto: ‘Memory’.
  7. Objetos y clases, trabajar con objetos, imágenes troceadas. Miniproyecto: ‘Blackjack’.

De las dos últimas semanas, lo único que se es que el juego a desarrollar era una versión simplificada del juego clásico de asteroides, y me dio mucha pena abandonar el curso en ese punto.

Para poder hacer los proyectos en mi PC sin tener que usar CodeSkulptor me instalé, aparte del intérprete de Python, las librerías PyGame y SimpleGUICS2PyGame. Esta última es una implementación de la versión de SimpleGUI que usa CodeSkulptor en local. Algunos de los programas que he realizado son los siguientes:

  • Parar el cronómetro, hecho con 83 lineas de código.
  • Pong, hecho con 138 lineas de código.
  • Memory, hecho con 82 lineas de código.
  • Blackjack, hecho con 220 lineas de código.

Mi recomendación del curso es total, tanto para programadores que quieran comenzar con Python como para novatos en la disciplina. El curso está muy bien desarrollado, mantiene la motivación del alumno y permite aprender los fundamentos del lenguaje de una manera muy divertida. El curso te deja con ganas de aprender más sobre Python y de usar lo aprendido para hacerte tus propios programas, como este ahorcado que he hecho con 78 lineas de código. Python es un lenguaje impresionante.

alanit
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.