Es preciso que adquieras un don precioso... es preciso que aprendas a leer.
-- Marianela, Benito Pérez Galdós
sábado, 14 de abril de 2012
Presentación en sociedad de Nela
El próximo martes haré una presentación pública de Nela, en el marco de la entrega del Premio Local del VI Concurso Universitario de Software Libre (CUSL).
Si estás -o conoces a alguien- interesado en el aprendizaje de la lectoescritura Braille en niños con deficiencia visual, quedas invitado.
Martes 17 de abril, a las 19:00.
Salón de Actos La Colmena, Centro de Incubación Empresarial de Milla Digital (Avenida de la Autonomía, 7 - Zaragoza).
jueves, 12 de abril de 2012
Introducción a Nela
He preparado un documento de introducción a Nela, que explica el método de enseñanza de la lecto-escritura usado y el manejo del programa.
La versión 0.3.0 de Nela, disponible en el área de descargas, implementa ya prácticamente todas las funcionalidades imprescindibles :-) Quedan muchos sonidos e imágenes por añadir, así como diversos detalles, pero creo que la única funcionalidad importante que falta es el guardar las sesiones de usuario. Si te gustaría aprender el código Braille sin esfuerzo, deberías probarlo.
La próxima semana presentaremos la aplicación al personal de la delegación local de la ONCE, para que lo prueben y nos den su opinión, sugerencias, etc.
La versión 0.3.0 de Nela, disponible en el área de descargas, implementa ya prácticamente todas las funcionalidades imprescindibles :-) Quedan muchos sonidos e imágenes por añadir, así como diversos detalles, pero creo que la única funcionalidad importante que falta es el guardar las sesiones de usuario. Si te gustaría aprender el código Braille sin esfuerzo, deberías probarlo.
La próxima semana presentaremos la aplicación al personal de la delegación local de la ONCE, para que lo prueben y nos den su opinión, sugerencias, etc.
sábado, 7 de abril de 2012
ARASAAC, un proyecto automutilado (aclaraciones sobre Creative Commons, uso no comercial y copyleft)
ARASAAC es el Portal Aragonés de la Comunicación Aumentativa y Alternativa. Su objetivo es ofrecer recursos gráficos y materiales para facilitar la comunicación de aquellas personas con algún tipo de dificultad en este área.
Este proyecto ha sido financiado con fondos públicos del Departamento de Industria e Innovación del Gobierno de Aragón, y forma parte del Plan de Actuaciones del Centro Aragonés de Tecnologías para la Educación (CATEDU), centro dependiente del Departamento de Educación, Universidad, Cultura y Deporte del Gobierno de Aragón.
Suena bien, ¿verdad? A la hora de la verdad, su alcance queda bastante reducido.
Veamos algunos ejemplos de cómo este proyecto se pone palos en las ruedas, limitando la repercusión que podría llegar a tener:
Q.- Estoy haciendo un programa libre (licencia GNU GPL) para niños autistas. ¿Puedo usar los pictogramas de ARASAAC?
A.- No.
Q.- Soy colaborador de la Wikipedia. ¿Puedo utilizar las imágenes de ARASAAC para ilustrar un artículo?
A.- No.
Q.- Soy un investigador de la Universidad de Zaragoza, y estoy escribiendo un paper para una revista internacional. ¿Puedo utilizar los materiales de ARASAAC en él?
A.- No.
Q.- Soy padre de un niño con necesidades especiales, y tengo un blog gratuito en wordpress.com donde cuento mi experiencia, para ayudar a otros padres. ¿Puedo incluir dibujos de ARASAAC?
A.- No.
Q.- Soy un centro formativo que paga sus impuestos en Aragón. ¿Puedo poner una fotografía de ARASAAC en mi página web?
A.- No.
Y así podríamos seguir con más y más ejemplos.
¿A qué se debe que un proyecto tan interesante sea tan poco útil en la práctica? A un mala selección de la licencia, corta de miras. Los materiales de ARASAAC, por sus objetivos y financiación, deberían ser conocimiento libre.
El conocimiento libre se define por las siguientes características (equivalentes a las cuatro libertades esenciales del software libre):
Mucha gente pone que su web «tiene licencia CC», sin explicitar cuál de ellas. Otros utilizan licencias CC que no permiten el uso comercial ni hacer obras derivadas, por lo que no son mucho mejores que el copyright tradicional. Incluso hay quien utiliza el término copyleft para obras que no sólo no son copyleft, sino que ni siquiera son libres.
La libertad 0 implica que el conocimiento libre pueda distribuirse comercialmente o no, sin tener que pedir permiso a nadie. Así que los materiales que se distribuyen con condiciones de uso que no permitan su utilización comercial, no son libres (en particular, las licencias CC by-nc, CC by-nc-sa y CC by-nc-nd no son libres).
La libertad 1 implica que materiales distribuidos en formatos no modificables no sean libres si no van acompañados de sus archivos fuente (a partir de los cuales fueron generados).
La libertad 2 implica que esos materiales que dicen ser, por ejemplo, fotocopiables en ciertos ámbitos (por ejemplo, el educativo), y sólo en esos ámbitos, no sean libres.
La libertad 3 implica que los materiales que se distribuyen con condiciones de uso que no permitan generar obras derivadas, no sean libres (por ejemplo, las licencias CC by-nd y CC by-nc-nd no son libres).
Además de libre, una obra puede ser Copyleft. Copyleft significa que las condiciones de uso de una obra derivada deben mantener las mismas libertades de la obra original, sin ninguna restricción adicional. De este modo, cualquier obra que derive de una obra copyleft, ha de ser necesariamente libre.
Es necesario estar bien informado de todo esto para ser conscientes de las restricciones que imponen a nuestras obras la licencia que elijamos.
Como se puede observar, de todas las licencias Creative Commons sólo dos son libres: las licencias Reconocimiento (libre sin copyleft) y Reconocimiento-Compartir Igual (libre con copyleft), en sus versiones 3.0 o superior.
Ahora ya lo sabes: las licencias «sólo para uso no comercial» no son libres, ¡no las uses!
P.S.- Si alguien puede convencer a ARASAAC de que cambien su licencia, los niños con visión reducida que usen mi programa se lo agradecerán.
Si no, no pasa nada: en vez de usar y promocionar los recursos financiados con mis impuestos, usaré los de Open Clip Art, que están en el dominio público.
Este proyecto ha sido financiado con fondos públicos del Departamento de Industria e Innovación del Gobierno de Aragón, y forma parte del Plan de Actuaciones del Centro Aragonés de Tecnologías para la Educación (CATEDU), centro dependiente del Departamento de Educación, Universidad, Cultura y Deporte del Gobierno de Aragón.
Suena bien, ¿verdad? A la hora de la verdad, su alcance queda bastante reducido.
Veamos algunos ejemplos de cómo este proyecto se pone palos en las ruedas, limitando la repercusión que podría llegar a tener:
Q.- Estoy haciendo un programa libre (licencia GNU GPL) para niños autistas. ¿Puedo usar los pictogramas de ARASAAC?
A.- No.
Q.- Soy colaborador de la Wikipedia. ¿Puedo utilizar las imágenes de ARASAAC para ilustrar un artículo?
A.- No.
Q.- Soy un investigador de la Universidad de Zaragoza, y estoy escribiendo un paper para una revista internacional. ¿Puedo utilizar los materiales de ARASAAC en él?
A.- No.
Q.- Soy padre de un niño con necesidades especiales, y tengo un blog gratuito en wordpress.com donde cuento mi experiencia, para ayudar a otros padres. ¿Puedo incluir dibujos de ARASAAC?
A.- No.
Q.- Soy un centro formativo que paga sus impuestos en Aragón. ¿Puedo poner una fotografía de ARASAAC en mi página web?
A.- No.
Y así podríamos seguir con más y más ejemplos.
¿A qué se debe que un proyecto tan interesante sea tan poco útil en la práctica? A un mala selección de la licencia, corta de miras. Los materiales de ARASAAC, por sus objetivos y financiación, deberían ser conocimiento libre.
- Puede ser libremente adquirido y libremente usado, con cualquier propósito y sin necesitar permiso de nadie.
- Puede adaptarse libremente a las necesidades del adquisidor. El acceso a una fuente modificable del conocimiento es una precondición para ello.
- Puede compartirse libremente con los demás.
- Es tal que puede mejorarse y sus versiones adaptadas y mejoradas pueden compartirse libremente con los demás, para que así se beneficie la comunidad entera. El acceso a una fuente modificable del conocimiento es una precondición para ello.
Mucha gente pone que su web «tiene licencia CC», sin explicitar cuál de ellas. Otros utilizan licencias CC que no permiten el uso comercial ni hacer obras derivadas, por lo que no son mucho mejores que el copyright tradicional. Incluso hay quien utiliza el término copyleft para obras que no sólo no son copyleft, sino que ni siquiera son libres.
La libertad 0 implica que el conocimiento libre pueda distribuirse comercialmente o no, sin tener que pedir permiso a nadie. Así que los materiales que se distribuyen con condiciones de uso que no permitan su utilización comercial, no son libres (en particular, las licencias CC by-nc, CC by-nc-sa y CC by-nc-nd no son libres).
La libertad 1 implica que materiales distribuidos en formatos no modificables no sean libres si no van acompañados de sus archivos fuente (a partir de los cuales fueron generados).
La libertad 2 implica que esos materiales que dicen ser, por ejemplo, fotocopiables en ciertos ámbitos (por ejemplo, el educativo), y sólo en esos ámbitos, no sean libres.
La libertad 3 implica que los materiales que se distribuyen con condiciones de uso que no permitan generar obras derivadas, no sean libres (por ejemplo, las licencias CC by-nd y CC by-nc-nd no son libres).
Además de libre, una obra puede ser Copyleft. Copyleft significa que las condiciones de uso de una obra derivada deben mantener las mismas libertades de la obra original, sin ninguna restricción adicional. De este modo, cualquier obra que derive de una obra copyleft, ha de ser necesariamente libre.
Es necesario estar bien informado de todo esto para ser conscientes de las restricciones que imponen a nuestras obras la licencia que elijamos.
Como se puede observar, de todas las licencias Creative Commons sólo dos son libres: las licencias Reconocimiento (libre sin copyleft) y Reconocimiento-Compartir Igual (libre con copyleft), en sus versiones 3.0 o superior.
Ahora ya lo sabes: las licencias «sólo para uso no comercial» no son libres, ¡no las uses!
P.S.- Si alguien puede convencer a ARASAAC de que cambien su licencia, los niños con visión reducida que usen mi programa se lo agradecerán.
Si no, no pasa nada: en vez de usar y promocionar los recursos financiados con mis impuestos, usaré los de Open Clip Art, que están en el dominio público.
viernes, 30 de marzo de 2012
Icono y propiedades del programa
Todo programa que se precie debe tener un icono identificativo, y proclamar con orgullo el nombre de su creador.
El primer paso ha sido preparar un icono para nela. He tomado el excelente icono que hizo Nuno Pinheiro para Akregator, y lo he destrozado un poco mediante mis pésimas habilidades con Inkscape.
Tras exportar el diseño vectorial a varios PNG en distintos tamaños, los he agrupado en un fichero en formato .ico de MS Windows. Para que el ejecutable ostente este icono, hay que crear un fichero de recursos (Resource Compiler, .rc), que contenga una línea como ésta:
IDI_ICON1 ICON DISCARDABLE "nela.ico"
Esto es lo que vemos en la versión 0.0.3 de nela:
Por último, la Oficina de Software Libre de la Universidad de Zaragoza ha tenido la amabilidad de realizarme una pequeña entrevista sobre este proyecto.
El primer paso ha sido preparar un icono para nela. He tomado el excelente icono que hizo Nuno Pinheiro para Akregator, y lo he destrozado un poco mediante mis pésimas habilidades con Inkscape.
Tras exportar el diseño vectorial a varios PNG en distintos tamaños, los he agrupado en un fichero en formato .ico de MS Windows. Para que el ejecutable ostente este icono, hay que crear un fichero de recursos (Resource Compiler, .rc), que contenga una línea como ésta:
IDI_ICON1 ICON DISCARDABLE "nela.ico"
Por último, se incluye este script en el fichero de proyecto añadiendo la línea
win32:RC_FILE = nela.rc
En Mac OS X los iconos van en formato ICNS, y se incluyen en el fichero del proyecto con
mac {
ICON = nela.icns
}
En Unix se puede utilizar el formato PNG sin más, pero habrá que colocarlos en el sitio adecuado (por ejemplo /usr/share/icons) al instalar. En la página web de Qt se pueden obtener más detalles de cómo establecer el icono de la aplicación.
Volviendo a Windows, podemos aprovechar el script de definición de recursos para incluir información sobre nuestro programa (descripción, versión, empresa...). Esta información se ve en la solapa «Detalles» de las propiedades del ejecutable, o simplemente al pasar el ratón por encima. En esta página se puede encontrar información sobre los distintos campos de VERSIONINFO.
Esto es lo que vemos en la versión 0.0.3 de nela:
Por último, la Oficina de Software Libre de la Universidad de Zaragoza ha tenido la amabilidad de realizarme una pequeña entrevista sobre este proyecto.
martes, 27 de marzo de 2012
Disponible el primer prototipo
Tradicionalmente, la metodología de desarrollo de software ha sido el modelo en cascada:
El desarrollo se encuentra dividido en fases claramente determinadas, y no se pasa a una fase hasta haber finalizado con la anterior. Muy bonito en teoría, pero nada realista en la práctica.
En el mundo del Software Libre, el proceso de desarrollo de software es muy diferente, tendiéndose a usar metodologías iterativas para el desarrollo rápido de aplicaciones (RAD) en cualquiera de sus variantes, destacando quizás los métodos ágiles como la programación extrema, y Scrum como sistema de gestión de proyectos.
TL;DR se puede resumir en el lema publica pronto, publica con frecuencia, escucha a tus usuarios.
El desarrollo se lleva a cabo como una serie de miniproyectos denominados iteraciones. Cada iteración tiene sus actividades de análisis de requisitos, diseño, implementación y pruebas, y el resultado de cada una es un sistema incompleto, pero ejecutable y probado. No son prototipos experimentales a descartar, sino un subconjunto del sistema final, con calidad de producción.
Así pues, se empieza por las funcionalidades de mayor riesgo y mayor importancia para el usuario. Con el feedback de éste, se va estabilizando la arquitectura y añadiendo nuevas características.
Siguiendo esta filosofía, tengo el placer de anunciar la versión 0.0.1 de nela. Obviamente hace poca cosa, pero como comienzo ya es interesante. Es capaz de reconocer las teclas pulsadas en la máquina Perkins virtual (teclas SDF JKL). Funciona tanto en MS Windows como en GNU/Linux, en inglés y en castellano (detecta el idioma del sistema).
El desarrollo se encuentra dividido en fases claramente determinadas, y no se pasa a una fase hasta haber finalizado con la anterior. Muy bonito en teoría, pero nada realista en la práctica.
En el mundo del Software Libre, el proceso de desarrollo de software es muy diferente, tendiéndose a usar metodologías iterativas para el desarrollo rápido de aplicaciones (RAD) en cualquiera de sus variantes, destacando quizás los métodos ágiles como la programación extrema, y Scrum como sistema de gestión de proyectos.
TL;DR se puede resumir en el lema publica pronto, publica con frecuencia, escucha a tus usuarios.
El desarrollo se lleva a cabo como una serie de miniproyectos denominados iteraciones. Cada iteración tiene sus actividades de análisis de requisitos, diseño, implementación y pruebas, y el resultado de cada una es un sistema incompleto, pero ejecutable y probado. No son prototipos experimentales a descartar, sino un subconjunto del sistema final, con calidad de producción.
Así pues, se empieza por las funcionalidades de mayor riesgo y mayor importancia para el usuario. Con el feedback de éste, se va estabilizando la arquitectura y añadiendo nuevas características.
Siguiendo esta filosofía, tengo el placer de anunciar la versión 0.0.1 de nela. Obviamente hace poca cosa, pero como comienzo ya es interesante. Es capaz de reconocer las teclas pulsadas en la máquina Perkins virtual (teclas SDF JKL). Funciona tanto en MS Windows como en GNU/Linux, en inglés y en castellano (detecta el idioma del sistema).
martes, 20 de marzo de 2012
Primer paso: Aprender C++
De cara a desarrollar nela, la primera decisión fue elegir el lenguaje de programación a emplear. En la carrera sólo hemos aprendido Ada95, Java y algo de C y PHP. Java es útil para desarrollar programas multiplataforma, pero las aplicaciones gráficas desarrolladas con Swing se ven extrañas en todos los sistemas operativos. Para evitar este problema, posiblemente la mejor opción sea usar las bibliotecas Qt de Nokia (hay otras, como usar GTK o wxWidgets).
Como lenguaje tenemos Python y C++. Python es un excelente lenguaje, y además fácil de aprender, pero es interpretado, con las ventajas y desventajas que conlleva. C++ es un lenguaje mucho más grande y complicado, pero con enorme peso. Buena parte de las aplicaciones que usamos (desde el navegador a la suite ofimática) están escritas en él. Qt se desarrolló pensando en este lenguaje (aunque también se puede usar con Python), por lo que la mayor parte de la documentación se refiere a él.
En el mercado hay centenares de libros sobre C++, entre los que he seleccionado unos pocos guiándome principalmente por las reseñas de la Association of C and C++ Users (aquí podéis ver algunos de los mejores, en distintos niveles). Los agraciados son:
Los dos últimos son libros larguísimos que cubren todos los aspectos del lenguaje, y C++ es inmenso. Mucho más de lo que necesito.
El segundo usa una biblioteca ad-hoc, lo que no me acaba de convencer. Accelerated C++ es una obra mucho más reconocida, y no utiliza ninguna biblioteca extraña. Eso sí, el título es muy adecuado: avanza a un ritmo frenético, lo que lo hace muy exigente con el lector. De hecho, compré este libro hace un tiempo, y lo he empezado dos o tres veces, sin llegar nunca finalizarlo, a pesar de que mientras tanto he aprendido Java y principios de OOP en la carrera. Además, buena parte del libro se centra en las características de la Standard Template Library, que al programar con Qt no es necesaria, porque se solapan.
Finalmente, me he decantado por A Complete Guide to Programming in C++. Escrito de forma muy clara, creo que podría ser aprovechado incluso por chavales de instituto sin ningún conocimiento de programación. Se dedica a la parte central del lenguaje, sin adentrarse excesivamente en la STL. Y a pesar de su tamaño, es fácilmente digerible.
Así que en los últimos meses me he dedicado aprender C++ con este libro, complementado con otro del que os hablaré el próximo día...
Como lenguaje tenemos Python y C++. Python es un excelente lenguaje, y además fácil de aprender, pero es interpretado, con las ventajas y desventajas que conlleva. C++ es un lenguaje mucho más grande y complicado, pero con enorme peso. Buena parte de las aplicaciones que usamos (desde el navegador a la suite ofimática) están escritas en él. Qt se desarrolló pensando en este lenguaje (aunque también se puede usar con Python), por lo que la mayor parte de la documentación se refiere a él.
En el mercado hay centenares de libros sobre C++, entre los que he seleccionado unos pocos guiándome principalmente por las reseñas de la Association of C and C++ Users (aquí podéis ver algunos de los mejores, en distintos niveles). Los agraciados son:
- You Can Do It- A beginner’s introduction to Computer Programming! de Francis Glassborow y Roberta Allen
- You Can Program in C++ de Francis Glassborow
- Accelerated C++ de Andrew Koenig y Barbara Moo
- A Complete Guide to Programming in C++ de Ulla Kirch-Prinz y Peter Prinz.
- Thinking in C++ de Bruce Eckel
- C++ Primer 4th ed de Stanley B Lippman, Josee Lajoie y Barbara E Moo
Los dos últimos son libros larguísimos que cubren todos los aspectos del lenguaje, y C++ es inmenso. Mucho más de lo que necesito.
El segundo usa una biblioteca ad-hoc, lo que no me acaba de convencer. Accelerated C++ es una obra mucho más reconocida, y no utiliza ninguna biblioteca extraña. Eso sí, el título es muy adecuado: avanza a un ritmo frenético, lo que lo hace muy exigente con el lector. De hecho, compré este libro hace un tiempo, y lo he empezado dos o tres veces, sin llegar nunca finalizarlo, a pesar de que mientras tanto he aprendido Java y principios de OOP en la carrera. Además, buena parte del libro se centra en las características de la Standard Template Library, que al programar con Qt no es necesaria, porque se solapan.
Finalmente, me he decantado por A Complete Guide to Programming in C++. Escrito de forma muy clara, creo que podría ser aprovechado incluso por chavales de instituto sin ningún conocimiento de programación. Se dedica a la parte central del lenguaje, sin adentrarse excesivamente en la STL. Y a pesar de su tamaño, es fácilmente digerible.
Así que en los últimos meses me he dedicado aprender C++ con este libro, complementado con otro del que os hablaré el próximo día...
domingo, 18 de marzo de 2012
Presentación del proyecto Nela
Este proyecto consiste en la creación de un entrenador software, con la intención de ayudar al aprendizaje del código Braille a los niños con discapacidad visual.
Usando el teclado del PC como si fuera una máquina Perkins, se irá introduciendo al niño a los puntos del cajetín Braille, los números, letras, sílabas y palabras, siguiendo un orden pedagógicamente adecuado y reforzando las que presenten mayor dificultad.
Una fuente de inspiración es el programa Cantaletras, si bien nela estará centrado en una única tarea (enseñanza del Braille), escalonada en numerosos niveles y haciendo énfasis en la usabilidad.
Usando el teclado del PC como si fuera una máquina Perkins, se irá introduciendo al niño a los puntos del cajetín Braille, los números, letras, sílabas y palabras, siguiendo un orden pedagógicamente adecuado y reforzando las que presenten mayor dificultad.
Una fuente de inspiración es el programa Cantaletras, si bien nela estará centrado en una única tarea (enseñanza del Braille), escalonada en numerosos niveles y haciendo énfasis en la usabilidad.
Además, y gracias a basarse en las bibliotecas Qt de Nokia, confío en conseguir que nela sea multiplataforma y funcione tanto sobre Microsoft Windows como GNU/Linux y Mac OS X.
Suscribirse a:
Entradas (Atom)