Ensayo sobre tecnología educativa

Estándar

A estas alturas para nadie es sorpresa que profesionalmente me muevo en el mundo de la informática, computación y demás cosas con códigos, cables, botones y lucecitas. Para los menos allegados a mi quizá resulte un poco más sorpresivo que hace tiempo estuve fuertemente involucrado en el uso de las TICs (Tecnologías de la Información y Comunicación) en el ámbito educativo, especialmente en el enfoque de la educación media superior, pero esa historia será para otra ocasión si me acuerdo. 

El día de hoy les quiero compartir un ensayo escrito por Everth Torres,  un amigo y colega, quien se desempeña como asesor académico del área de formación para el trabajo en informática adscrito al Centro 210 de EMSaD (Educación Media Superior a Distancia) del COBACH (Colegio de Bachilleres de Chiapas). ¿Qué propone el ensayo? Esa explicación la dejo en manos de su autor, Everth.

Comparto con todos ustedes un ensayo sobre tecnología educativa, en el cual propongo la utilización del lenguaje de programación C++ y la librería Allegro para realizar un videojuego de la asignatura equipo de computo perteneciente al área de formación para el trabajo en informática. En lo personal es un gran reto para mi persona el programar desde cero un videojuego con temática educativa, pero estoy convencido en lograr tal cometido y ayudar a los estudiantes en la construcción de su propio conocimiento.

El argumento de la historia se basará en ayudar a nuestro protagonista llamado Benito, a encontrar dispositivos de computo en una base de operaciones secreta, para realizar el ensamble de un equipo y poder cumplir con las actividades o retos que se le presenten, como viajar en el tiempo, conocer personajes sobresalientes de la informática, etc., sus enemigos unos terroristas rusos lo tienen al asecho, intentando por todos los medios que él fracase en las misiones que le son encomendadas.

La historia es algo sencilla se realizara con gráficos en dos dimensiones, siendo una mezcla del genero de plataformas y otras tendencias que se consideren al momento de codificar el boceto, permitirán al alumno interactuar de forma agradable con este juego durante el tercer semestre, para ello se dedicarán dos horas a la semana a interactuar con él, las cinco horas restantes serán para trabajar de manera ordinaria en el aula o en la realización de prácticas de laboratorio, se aplicaran encuestas de inicio y finalización a los estudiantes participantes.

Agradezco a mi esposa y al Mtro. David Salomón Gómez Sánchez un gran amigo mio, por motivarme ambos a continuar con este ensayo, mismo que había dejando en el tintero y que pensé ya no hacerlo publico. Reciban un cordial saludo.

En fin, basta de preámbulos. Les dejo el vínculo para que puedan leer y descargar el ensayo y consideren aplicar su propuesta, ya sea en el aula o incluso de forma personal, que a nadie nos cae mal. Y si quieren ponerse en contacto con Everth por alguna duda o comentario que tengan al respecto, o simplemente conocer un poco más de su trabajo pueden encontrarlo vía Twitter como @maestritoDe5ta o en su blog: Maestrito de quinta

Ensayo: Tecnologías, educación y formación: El uso de la librería Allegro como estrategia didáctica, para el logro de aprendizajes significativos en el área de informática en los Centros EMSaD del Estado de Chiapas.

Anuncios

Haciendo hablar a Windows

Estándar

¿Que bonito es programar, no? El día de hoy les traigo una de esas cosas curiosas que podemos lograr con unas cuantas líneas de código, y que nos puede hacer quedar bien frente a nuestros amigos no tan geeks y fácilmente impresionables. Hoy les explicaré como hacer hablar a su computadora con Windows.

Tal vez parezca algo complicado, y quizá crean que terminarán escuchando una voz toda fea y robótica como las de los programas como Loquendo, pero si tienen un Windows más o menos actual obtendrán una voz bastante clara. Y lo mejor, no necesitamos descargar nada, solo necesitamos el Bloc de Notas y escribir 4 líneas de código. Sí, leyeron bien CUATRO LÍNEAS.

Es tan fácil como abrir el Bloc de notas y copiar las siguientes líneas:

Dim Mensaje, Habla
Mensaje=InputBox("Ingresa texto","Habla")
Set Habla=CreateObject("sapi.spvoice")
Habla.Speak Mensaje

Lo guardamos con el nombre que queramos con la extensión VBS, por ejemplo “habla.vbs”. Ahora simplemente daremos doble clic en el archivo que creamos, nos debe aparecer un mensaje similar al siguiente:

speak

El resto es bastante simple, escribimos el texto que queramos que diga y pulsamos aceptar. Ahora podrán hacer hablar a su computadora cuando quieran.

Ojalá que lo hayan disfrutado. Les deseo, felices trazos.

App Android: Menú Semanal

Estándar

Hace rato que no escribía en el blog sobre temas que no sean el podcast o fotografía, y parte de eso es por que la gran mayoría de los temas sobre los que me gustaría escribir se me olvidan o una vez terminado considero que serían mejor para un podcast. En fin, soy todo un caso…

Si me conocen seguramente ya saben las siguientes cuatro cosas: Vivo solo, soy algo perezoso, me encanta cocinar y mi vida es programar software. Pues bien, cuando uno vive solo no hay nadie que le haga de comer y comprar comida todos los días puede resultar bastante costoso cuando comes en proporciones mayores a las de una persona normal (#forevergordito). Así que como es obvio, uno mismo tiene que preparar su alimento, cuando eres como yo que te gusta cocinar el problema no es prepararlo, sino decidir qué preparar. Ahora, el problema aumenta cuando trabajas todo el día y tienes que hacer las compras para toda la semana durante el fin de semana. Es por eso que desarrollé esta aplicación, para facilitar el proceso de decisión.

Utilizarla es bastante sencillo, simplemente agregas al listado de platillos todos los que sabes preparar, así nunca te sugerirá nada que no sepas como cocinar — aunque por si las dudas ya incluye 7 platillos genéricos que pueden quitar o cambiar si así lo desean –. Una vez con la lista de platillos terminada puedes ir generando tantos menús como desees, si eres muy riguroso puedes tomarlo como menús fijos y puedes estar seguro de que no repetirás platillos hasta que la lista se termine, por lo que entre mas platillos tengas en la lista mas tardarás en volver a comer lo mismo. O puedes en lugar de platillos colocar lugares donde comer si también te parece una dificil decisión, por ejemplo desde el puesto de garnachas de la esquina hasta el restaurante de moda entre tus amigo. Obviamente solo te genera recomendaciones que puedes seguir religiosamente, o como yo, simplemente tomarlo como ideas para la semana y decidir en base a ellas. Les dejo unas capturas de la app, pueden dar clic en ellas para verlas en todo su esplendor:

Para instalarla solo tienen que habilitar la instalación desde fuentes desconocidas, descargar el APK en su teléfono, y ejecutarlo. Y claro pueden mandarme sus sugerencias sobre la misma.

¿Por qué hacer la App?

Esta es la primer aplicación funcional que termino fuera de las que hago para probar cosas nuevas o de las que programo para el trabajo, por lo que personalmente fue un reto interesante. La idea surgió de un script que programe al poco tiempo de llegar a la casa en que vivo actualmente, dicho script está escrito en Python y realiza la misma tarea tomando los platillos desde un archivo de texto. Esta curiosa forma de elegir cada semana mi menú, y en base a eso hacer las compras, llamó la atención de mi madre y se la comentó algunos familiares. La sorpresa fue que la respuesta de muchos fue: “ojala yo tuviera algo así” o “a mi hija le ayudaría mucho”. Lo más facil habría sido enviarles el script y asunto arreglado, pero muchos de ellos son personas completamente ajenas al mundo tecnológico así que la opción más obvia era hacerlo fácil para ellos. Así que me decidí a generar una aplicación para celular.

Retos al programarla

Cuando empecé este proyecto todo lo que había hecho era programar aplicaciones simples que mostraran una acción sencilla con un botón. El primer reto con el que me encontré era la lista de platillos, como ya comenté originalmente yo los tomaba de un archivo txt y una vez usado los enviaba a otro, sin embargo en Android eso era demasiado rebuscado, así que decidí implementar una pequeña base de datos con una sola tabla en la que tenía el platillo y su estatus (usado o sin usar).

Una vez que comprendí como generar la base de datos usando SQLite y como controlar los mismos solo me tuve que preocupar por la presentación de la misma. Y este aprendizaje terminó ayudándome para desarrollar posteriormente una aplicación más compleja usando bases de datos en el trabajo.

Otro aspecto que me dio algunos problemas fue la forma de elegir los platillos, originalmente pensaba obtener de la base de datos todos los platillos que no habían sido utilizados, ponerlos en un arreglo y seleccionar 5 de forma aleatoria, ponerlos en otro arreglo, mostrarlos en la app y actualizar su estatus en la base de datos a usado. Sin embargo la pereza me llevó a descubrir que podía obtener los 5 platillos de forma aleatoria directamente desde la base de datos y usando el mismo resultado actualizar el estatus de los mismos. Solo tenía que ejecutar una busqueda similar a la siguiente:

SELECT * FROM table ORDER BY RANDOM() LIMIT 5;

Con esta app aprendí bastante sobre el manejo de bases de datos en Android, las características de los ArrayAdapters, así como de los diferentes usos que podemos darle a los ListViews. Me llevó cerca de dos semanas programarla por ratos durante la tarde, pero aprendí mucho en el proceso. Y como creo que ya los aburrí lo dejo hasta ahí. Si alguien tiene una duda de como funciona o quiere saber más al respecto con gusto recibo sus preguntas y trataré de contestarlas lo mejor posible.

Salu2 a todos.

A 30 años del Manifiesto Hacker

Hacking Culture Bootcamp @ Waag Society
Estándar

El día de hoy se cumplen 30 años del Manifiesto Hacker, fue escrito por Loyd Blankenship — un hacker conocido como The Mentor — el 08 de enero de 1986 poco tiempo después de ser arrestado para ser publicado en la revista digital Phrack Magazine y en este breve ensayo plasma lo que muchos que estamos metidos en esto hemos sentido a lo largo de nuestra vida y continua bastante actual a la fecha. La presente es mi traducción del mismo, traté de hacerla lo más fiel a la original.

The Conscience of a Hacker (La Consciencia de un Hacker)

Otro ha sido capturado hoy, está en todos los periódicos. “Adolescente arrestado en escándalo de crimen por computadora”, “Hacker arrestado después de infiltrarse en un banco”…

“Malditos niños. Todos son iguales.”

¿Pero usted, en su psicología de tres piezas y mente tecnológica de 1950, alguna vez ha mirado detrás de los ojos de un hacker? ¿Alguna vez se ha preguntado qué lo motiva, que fuerzas lo formaron, cómo ha sido moldeado?

Yo soy un hacker, entra en mi mundo…

El mío es un mundo que comienza en la escuela… Soy más listo que los otros niños, la basura que nos enseñan me aburre…

“Maldito mediocre. Todos son iguales.”

Estoy en la secundaria o preparatoria. He escuchado a los maestros explicar por quinceava vez como reducir una fracción. Lo entiendo. “No, Srta. Smith, no le mostraré mi trabajo. Lo hice en mi cabeza…”

“Maldito niño. Probablemente lo copió. Todos son iguales.”

Hoy hice un descubrimiento. Encontré una computadora. Espera un segundo, esto es genial. Hace lo que yo quiero. Y si comete un error, es por que yo la he cagado. No porque no le agrado… O se sienta amenazada por mi… O piense que soy un engreído.. O porque no le guste enseñar y no debería estar aquí…

“Maldito niño. Todo lo que hace es estar jugando. Todos son iguales.”

Y entonces sucedió… se abrió una puerta a un mundo… corriendo a través de la línea telefónica como heroína por las venas de un adicto, un pulso electrónico es enviado, un refugio de la incompetencia del día a día es buscado… una tabla es hallada.

“Esto es… aquí es a donde pertenezco…”

Conozco a todos aquí… incluso si nunca los he visto, si nunca les he hablado, o quizá nunca vuelvo a oír de ellos… Los conozco a todos…

“Maldito niño. Ocupando otra vez la línea de teléfono. Todos son iguales.”

Puedes apostar a que todos somos iguales… a todos nos han dado cucharadas de alimento para bebés en la escuela mientras estábamos hambrientos de filete… los pedazos de carne que dejaron pasar estaban pre-masticados e insípidos. Fuimos dominados por sádicos, o ignorados por apáticos. Los pocos que tuvieron algo que enseñarnos encontraron en nosotros alumnos deseosos, pero esos poco son como gotas de agua en el desierto.

Este es ahora nuestro mundo… el mundo del electrón y el interruptor, la belleza del baudio. Hacemos uso de un servicio ya existente sin pagar lo que podría ser muy barato si no fuera administrado por glotones avaros, y nos llaman criminales. Exploramos… y nos llaman criminales. Buscamos conocimiento… y nos llaman criminales. Existimos sin color de piel, sin nacionalidad, sin creencias religiosas… y nos llaman criminales. Ustedes construyen bombas atómicas, patrocinan guerras, asesinan, engañan y nos mienten y tratan de hacernos creer que es por nuestro propio bien, aún así nosotros somos los criminales.

Sí, soy un criminal. Mi crimen es la curiosidad. Mi crimen es juzgar a las personas por lo que dicen y piensan, y no por como lucen. Mi crimen es ser más listo que ustedes, algo que nunca me perdonarán.

Soy un hacker, y este es mi manifiesto. Podrán detener a este individuo, pero no pueden detenernos a todos… después de todo, todos somos iguales.

Foto: Hacking Culture Bootcamp @ Waag Society (Sebastiaan ter Burg)

Cifrado Atbash en Python

Estándar

Algo que muy pocos saben es que soy un aficionado a todo tipo de puzzles, entre ellos obviamente a los mensajes cifrados o en código. Actualmente estoy trabajando en un proyecto personal que los involucra y del cual espero darles noticias más concretas muy pronto. Este proyecto quise empezarlo con algo bastante sencillo, en este caso el cifrado Atbash.

Atbash es un método muy común de cifrado del alfabeto hebreo. Pertenece a la llamada criptografía clásica y es un tipo de cifrado por sustitución. Se le denomina también método de espejo, pues consiste en sustituir la primera letra (álef) por la última (tav), la segunda (bet) por la penúltima (shin) y así sucesivamente. Por tanto en castellano la A será sustituida por la Z, la B por la Y, etc.

Como pueden ver es un método de cifrado muy sencillo, así que veamos el código para conseguirlo. Lo interesante es que por las características de este método el mismo script puede tanto cifrar como descifrar mensajes.

def atbash(message):
    alphabet = u'A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z a b c d e f g h i j k l m n ñ o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9'.split()
    backward = u'Z Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A z y x w v u t s r q p o ñ n m l k j i h g f e d c b a 9 8 7 6 5 4 3 2 1 0'.split()
    cipher = []
    
    for letter in message:
        if letter in alphabet:
            for i in xrange(len(alphabet)):
                if alphabet[i] == letter:
                    pos = i
            cipher.append(backward[pos])
        else:
            cipher.append(letter)
    
    newMessage = ''.join(cipher)
    return newMessage

crypt = atbash(u'Hola Mundo')
print crypt

Trataré de explicar el código de forma simple. Primero definimos la función a la cual enviaremos el mensaje, dentro de esta creamos un par de listas con el alfabeto (mayúsculas y minúsculas) y números en orden normal e inverso. También creamos una tercer lista donde iremos almacenando las letras conforme las vayamos cambiando.

Después, por cada letra en el mensaje verificamos si la letra se encuentra en nuestra lista del alfabeto. Posteriormente revisamos la lista y comparamos los elementos para determinar en qué posición de la lista se encuentra y agregamos a nuestra lista cifrada la letra correspondiente del alfabeto inverso. En el caso de que la letra no se encontrara en ninguna de nuestras listas, como es el caso de los espacios y signos de puntuación los agrega sin cambios a nuestra lista cifrada.

Terminamos la función uniendo la lista cifrada en una sola cadena de texto, la almacenamos en una variable que devolveremos. Como ven es bastante simple de entender y un buen ejercicio para los que apenas se están iniciando en la programación python.

Sin más que agregar solo me queda decirles lo siguiente: Vhkvil jfv hv wrervigzn vnerznwl ñvhzqvh hvxivglh fhznwl vhgv hxirkg. Zwróh

[Python] Comparar elementos en dos listas distintas

Estándar

Hace un par de semanas me solicitaron en el trabajo revisar si contábamos o no en el servidor con fotografías de todos los productos, las fotografías se encontraban en una carpeta especifica y tienen por nombre el código interno del producto, a simple vista parece una tarea relativamente sencilla, solo hacía falta buscar el código de cada producto en el directorio de las fotos, pero contamos con cerca de 15 mil códigos registrados y revisar de uno en uno manualmente habría llevado una eternidad, así que opté por automatizar la revisión.

Continuar leyendo