El verano del código (3)

+1
0
-1

La primera conclusión de este verano del código que es que necesitaría seis o siete veranos del código más para poner en marcha la aplicación que tenía pensada. Los gráficos, la estructura de las clases y la de los XML que vertebran la aplicación, la interfaz de usuario, la ayuda en línea, la página web de referencia, hay multitud de aspectos que es necesario tener en cuenta para que la aplicación sea realmente útil. Por tanto, me temo que el resultado final será más una prueba de concepto que una aplicación realmente utilizable, aunque estoy intentando que la aplicación tenga desde la primera versión que publique una utilidad real.

Muchos de los aspectos que me hubiera gustado abordar en un principio, se han ido quedando fuera o, en todo caso, habrá que retrasarlos para versiones posteriores. Probablemente, la ausencia que más lamento es la del formato .ogg (o en su defecto, el mp3), que hubiera hecho que la parte musical fuera más útil, porque actualmente el programa maneja únicamente los formato predeterminados de Java, es decir, archivos .aiff y .wav, que resultan extremadamente poco eficientes por el elevado consumo de memoria que ocasionan y que me han hecho desistir de incluir con el programa una selección de música Creative Commons que hubiera hecho que la experiencia fuera mucho más interesante. También he tenido que admitir que se queden fuera los gráficos tridimensionales (Blender y jMonkey darían por sí sólos para un buen número de veranos del código). Tampoco siquiera podré incluir las interesantes animaciones bidimensionales que proporciona Synfig Studio, una herramienta de la que he visto resultados totalmente asombrosos.

La parte gráfica, por tanto, la realizaré con Inkscape, una aplicación que había ignorado equivocadamente y que me ha impresionado tanto por su facilidad de manejo como por su potencia. Jugueteando un poco con ella, he hecho una primera portada para la página web de OpenFitness, que he colocado en:

http://www.antakirasoftware.com/openfitness/

Antakira Software es el nombre de una compañía de software ficticia, con la que fantaseábamos mi hermano y yo cuando teníamos quince años y programábamos juegos para nuestro querido ZX Spectrum ¡! Nunca llegamos a terminar ninguno de los juegos que empezamos pero, afortunadamente, Internet ahora permite publicar ideas de manera más fácil que nunca.

Comentarios

Imagen de furtaxi

Te pasó lo mismo que a mí con inkspace. Solía usar Gimp para mis cosillas, con la ayuda de escáner, porque no tengo una habilidad especialmente buena para el dibujo a mano alzada, pero, una vez, necesité un gráfico vectorial, lo instalé, y lo utilicé, sin recurrir a la ayuda, ni a ningún tutorial.

Sólo, paseando por los menús, o poniendo el puntero encima de los botones. Facilísimo,

Claro, tampoco es que fuera un gráfico extremadamente complejo ... pero solucioné en minutos la carencia.

Respecto al JAVA... Si te obliga a prescindir de tantas herramientas... yo prescindiría de él, y me iría a otro lenguaje de programación más versátil.

Siempre se podría compilar para diferentes arquitecturas, al igual que OpenOffice o VLC, por ejemplo, y poner los enlaces en ésa página de curioso e inspirado nombre que habéis puesto en marcha.

Antakira... suena a manga/anime. Un grafismo japonés, estaría acorde y beneficioso con ello, visto desde el punto de vista del marketing.

Mi web : www.vigovideo.es
Buscar es más rápido que esperar una respuesta.

Imagen de granadajose

La verdad es que el que más solía utilizar es KolourPaint, que es sencillo pero completo. Últimamente utilizo cada vez más Inkscape y Gimp, y la verdad es que me están impresionando.

Respecto a las limitaciones de Java, bueno, en los demás lenguajes es casi peor. Uno de las cosas que más merecería la pena mejorar en Ubuntu son los entornos integrados de desarrollo, porque no existe ninguno que sea realmente bueno. Netbeans y Eclipse son buenos, pero son multiplataforma y no están especialmente adaptados a Ubuntu. Hay otros IDEs que realmente merecen la pena, como por ejemplo Geany (mi favorito) y también he escuchado hablar muy bien de CodeBlocks, pero tienen el problema de que no son nada cómodos cuando quieres integrar una interfaz de usuario, funciones multimedia o un motor gráfico (CodeBlocks tiene varias plantillas, pero personalmente no me han funcionado). Siempre he pensado que un buen IDE específico para Ubuntu sería un gran avance, ya que atraería más desarrolladores y, por tanto, también más usuarios que encontrarían una mayor variedad de software. En el fondo de todo, supongo, se encuentra la decisión de basar Ubuntu en Python que, a pesar de ser un lenguaje interesante y tener una licencia muy atractiva, parece un poco limitado para crear programas con una excelente experiencia para el usuario. Además, al tener que diseñarse la interfaz de usuario en otro programa (Glade), es necesario escribir manualmente un código que, por otra parte, es mayormente mecánico. Francamente, hubiera preferido que se hubiera escogido Java o incluso C++ como base para Ubuntu, pero supongo que hay razones técnicas o de patentes que se me escapan y que motivaron esta elección.

Me ha resultado muy curioso la asociación con Japón del nombre Antakira. En realidad es el nombre antiguo de Antequera (primera Antakira y luego Antikaria), una ciudad de Málaga donde nacimos, pero realmente sería curioso utilizar una imaginería japonesa...

Imagen de Goyo

Siempre he pensado que un buen IDE específico para Ubuntu sería un gran avance, ya que atraería más desarrolladores

¿Qué clase de desarrollador se sentiría atraído por un IDE específico para Ubuntu y por qué razón?

En el fondo de todo, supongo, se encuentra la decisión de basar Ubuntu en Python

Me parece que te han engañado, Ubuntu no está basado en Python.

que, a pesar de ser un lenguaje interesante y tener una licencia muy atractiva, parece un poco limitado para crear programas con una excelente experiencia para el usuario.

Lógico, tratándose de un lenguaje interpretado y con tipos de datos dinámicos. Pero tú puedes usar el lenguaje que más rabia te de, no entiendo de qué te quejas.

Además, al tener que diseñarse la interfaz de usuario en otro programa (Glade)

Esto no tiene nada que ver con Python. Glade es una herramienta específica (y opcional, no obligatoria) para escribir interfaces en GTK. No tienes que usar python para escribir interfaces en GTK ni tienes que usar GTK para escribir interfaces en Python, solo es una combinación entre muchas que son posibles. Tú puedes elegir la combinación que prefieras.

, es necesario escribir manualmente un código que, por otra parte, es mayormente mecánico.

Sí, una línea para crear una instancia de Builder, otra para cargar el archivo con la definición de la interfaz y otra para conectar las señales con los métodos. Para desanimar al desarrollador más pintado.

Imagen de granadajose

¿Qué clase de desarrollador se sentiría atraído por un IDE específico para Ubuntu y por qué razón?

Cualquiera que tuviera instalado Ubuntu y quisiera crear un programa para resolver una necesidad específica sin tener conocimientos avanzados de programación. Este tipo de programas son muy interesantes, porque si se fomenta y facilita que desarrolladores de otros ámbitos creen programas, dichos programas podrán interesar a otros profesionales que no conozcan Ubuntu. Por ejemplo, si un ingeniero con conocimientos básicos de programación crea un programa de cálculo de estructuras, dicho programa será un aliciente para otros compañeros de profesión. Por el contrario, si lo crea en Mac o en Windows, puede ser lo contrario, un obstáculo a la hora de migrar a Ubuntu.

Para estos desarrolladores (entre los que me incluyo, ya que no tengo formación específica en programación), cuanto más se simplifiquen las labores mecánicas de la programación y más puedan centrarse en la parte aplicada del desarrollo, tanto mejor. Muchas empresas se han dado cuenta de los beneficios que ocasiona tener un SDK cómodo y potente (por ejemplo, Google con Android y Sony con PS3) y miman cada vez más a los desarrolladores.

Me parece que te han engañado, Ubuntu no está basado en Python.

Tal vez la situación haya cambiado. En el «Libro oficial de Ubuntu» se puede leer literalmente como aspecto básico del sistema operativo «un fuerte enfoque en Python como único lenguaje de programación a través del cual el sistema completo se pudiera construir y ampliar». (Esta cita aparece en inglés en »http://book.opensourceproject.org.cn/distrib/ubuntu/official/opensource/...»).

Sí, una línea para crear una instancia de Builder, otra para cargar el archivo con la definición de la interfaz y otra para conectar las señales con los métodos. Para desanimar al desarrollador más pintado.

Entiendo que consideres que el proceso es sencillo, pero para alguien que no domina esas técnicas de programación, la descripción resulta un tanto críptica. En NetBeans (afortunadamente disponible en Ubuntu), por ejemplo basta con arrastrar un botón al sitio donde quieres colocarlo, hacer clic con el botón derecho y elegir «Eventos -> Acción» y se hace todo automáticamente y sólo tienes que escribir el código que quieres que se ejecute al hacer clic en el botón. Es más sencillo, ¿no?

Lamento si has entendido mi entrada anterior como un algún tipo de ataque a Ubuntu, porque realmente no pretendía serlo. Me encanta este sistema operativo y me gustaría que fuera el más utilizado del mundo. Cuando he intentado crear programas para este sistema operativo, por ejemplo, en los juegos, que creo que es un campo donde hay mucho que decir en Linux, normalmente me he encontrado problemas que me han desanimado y que, lamentablemente, no aparecen en otras plataformas. No creo que sea un problema mío en exclusiva y con frecuencia al buscar información para resolver algún problema, me he encontrado con muchos comentarios de experiencias similares a la mía, de gente desanimada ante la dificultad de crear incluso programas sencillos. También es cierto que la situación está mejorando y que cada vez resulta más fácil crear programas para Ubuntu.

Con la «guerra» entre la Apple Store y el Android Market se ha visto claramente la importancia de las aplicaciones a la hora de que un usuario elija una plataforma en lugar otra, por no hablar de la importancia que han adquirido las exclusivas en las consolas de videojeugos. Muchas de las 200.000 aplicaciones de las que presume el Apple Store no son desarrollos costosos de estudios de software con un montón de personal, sino aplicaciones sencillas creadas por un único desarrollador en un plazo de tiempo muy limitado y que, sin embargo, resultan muy atractivas para el usuario que las utiliza. Ciertamente, con Ubuntu no es difícil crear aplicaciones, pero también es cierto que podría ser mucho más fácil. Iniciativas similares al App Inventor (http://appinventor.googlelabs.com/about/) podrían darle un gran impulso a Ubuntu, atraer nuevos usuarios y retener a los existentes. Hay grandes aplicaciones en Ubuntu/Linux, pero la mayoría (LibreOffice, Gimp, Firefox, Blender) son multiplataforma y, por tanto, no son un factor que haga que un usuario decida por Ubuntu/Linux por encima de otra plataforma. ¿No sería interesante crear una plataforma de desarrollo de aplicaciones que estuviera optimizada para Linux y que fueran los usuarios de otras plataformas los que tuvieran que usar aplicaciones no optimizadas para su sistema operativo? Tal vez para proyectos grandes no sea una opción, pero para proyectos pequeños podría ser un importante avance.

Bueno, ¿realmente has llegado leyendo hasta aquí? Al final creo que me he alargado más de lo que quería. Sólo decirte que me ha gustado mucho leer tus opiniones y que si sabes Java y se te ocurre como utilizar el JMF para leer archivos .mp3 sería de gran ayuda, porque el método que figura en (http://www.morgenstille.at/blog/how-to-play-a-mp3-file-in-java-simple-an...) sencillamente no funciona. Aparte de eso, si tienes tiempo, ¿qué lenguajes de programación utilizas?, ¿sabes de algún IDE para crear interfaces de usuario para Linux que no sea NetBeans/Eclipse?, ¿has utilizado alguna vez un motor 3D? Me encantaría programar en C++ o C nativamente para Ubuntu, pero lo de crear las interfaces de usuario programáticamente se me da fatal.

Imagen de Goyo

Cualquiera que tuviera instalado Ubuntu y quisiera crear un programa para resolver una necesidad específica sin tener conocimientos avanzados de programación.

Pues no lo entiendo. Me parece que un usuario así se sentiría atraído por herramientas que no requieran conocimientos avanzados avanzados de programación, aunque no sean específicas para Ubuntu. Por el contrario no se sentiría atraído por herramientas que requieren conocimientos avanzados de programación, incluso si son específicas para Ubuntu.

«un fuerte enfoque en Python como único lenguaje de programación a través del cual el sistema completo se pudiera construir y ampliar»

La verdad es que no sé cómo interpretar esa declaración. Sí sé que el lenguaje preferido (aunque no el único) en los desarrollos propios de Canonical es Python, pero yo no expresaría eso diciendo que Ubuntu está basado en Python.

Entiendo que consideres que el proceso es sencillo, pero para alguien que no domina esas técnicas de programación, la descripción resulta un tanto críptica.

La descripción no sé, pero escribir ese código es muy sencillo, es siempre lo mismo y no concibo que pueda ser un problema para alguien capaz de escribir un programa de cálculo de estructuras.

En NetBeans (afortunadamente disponible en Ubuntu), por ejemplo basta con arrastrar un botón al sitio donde quieres colocarlo, hacer clic con el botón derecho y elegir «Eventos -> Acción» y se hace todo automáticamente y sólo tienes que escribir el código que quieres que se ejecute al hacer clic en el botón. Es más sencillo, ¿no?

Para mí no. Pero para quien le parezca que sí, ahí está netbeans.

si sabes Java y se te ocurre como utilizar el JMF para leer archivos .mp3 sería de gran ayuda

No tengo idea. Con Python podrías usar gstreamer...

Aparte de eso, si tienes tiempo, ¿qué lenguajes de programación utilizas?

Desde hace mucho tiempo solo Python.

¿sabes de algún IDE para crear interfaces de usuario para Linux que no sea NetBeans/Eclipse?, ¿has utilizado alguna vez un motor 3D? Me encantaría programar en C++ o C nativamente para Ubuntu, pero lo de crear las interfaces de usuario programáticamente se me da fatal.

Prácticamente solo he usado Glade y también un poco Qt4Designer, pero más bien a la fuerza. Últimamente me he pasado a Tkinter, que aunque es más feo es más sencillo de usar, y por lo que estoy descubriendo estoy en desacuerdo con los que dicen que no escala bien. Además quita quebraderos de cabeza (sobre todo a la hora de instalar y usar los programas en Windows) porque Tkinter es parte de la distribución estándar de python. No conozco un diseñador de interfaces para Tkinter, pero las dibujo en un papel y luego escribo el código. Realmente no hay diferencia, únicamente es menos motivador porque hasta que no has escrito todo no ves la interfaz en la pantalla.

¿No lleva code-blocks un diseñador de interfaces integrado? También Anjuta se supone que se integra con Glade.

De motores 3D nada de nada.

Imagen de granadajose

Bueno, de cálculo de estructuras no sé en realidad de ningún caso, pero por ejemplo, personalmente, estoy haciendo una aplicación de revisión de traducciones que, a pesar de no ser muy fácil de programar, me resulta de bastante ayuda en el trabajo.

Hay muchas aplicaciones que son fáciles de programar y sin embargo son muy útiles. Por ejemplo, en los móviles son muy populares las aplicaciones que te permiten marcar con el GPS la posición de tu coche para poder encontrarlo después (muy útil cuando lo dejas en los aparcamientos gigantescos de algunas grandes superficies). Es una idea fácil y sencilla de realizar que, sin embargo, es muy práctica.

Respecto a lo de la reproducción del mp3, seguiré buscando. A ver si también le doy una nueva oportunidad a Code:Blocks, que ya ha pasado bastante tiempo desde que lo probé por última vez.