Programación, literatura y otras artes menores

Archivos de la categoría ‘Software’

Un homenaje

Publicado por caente en Agosto 22, 2007

A Alejandro Revilla, lider del proyecto JPOS, JPOS es una implementación de la norma ISO 8583. JPOS es software libre, licenciado con GPLv2; está hecho en java y hasta donde he podido apreciar es una hermosa obra de ingeniería.

Aunque el trabajo que ha hecho Alejandro con JPOS es motivo suficiente para mencionarlo, el motivo de este pequeño artículo no es el código que ha escrito, sino su infinita paciencia y la enorme disposición constante para aclarar cualquier duda, ya sea por la lista jpos-users o por su correo privado. En el sitio de JPOS se vende una guía para el programador, la cual cuesta 50 usd. La guía en sí me parece insuficiente, como ya se lo hice notar, pero no obstante casi obtuve una nueva guía en un largo hilo de correos, durante el cual me respondió cada mínima pregunta, incluso cuando estas preguntas estaban respondidas en la guía(mea culpa).

En fin, muchas gracias Alejandro por tu ayuda, y enhorabuena por tu excelente trabajo.

Publicado en Programación, Software Libre | Deja un Comentario »

Sufrimientos con CADELEC

Publicado por caente en Agosto 1, 2007

Una vez conté que era feliz de ser contratado en un proyecto de software propietario, luego comenté de lo infame que estaba la biblioteca de desarrollo. Pero aun no he hablado del proyecto en sí.

El proyecto es CADELEC, y fueron los 5 meses de menor satisfacción profesional que he vivido jamás.

Antes que todo debo aclarar que cuando digo que fui contratado me refiero a que me dieron el trabajo, pues en Cuba estas cosas no se pueden hacer, o mejor dicho, se pueden, pero si el contratador hace el negocio con el gobierno y le paga el salario al gobierno, no a los trabajadores, ya luego el gobierno se encargará de pagarle a los trabajadores un salario acorde con la media del país(30 usd al mes).

Así que lo usual es que los programadores cubanos dejen sus señas en sitios de trabajo freelance con la esperanza de que alguien se fije en ellos y le ofrezcan trabajo, obviamente hablo de trabajos por encargos, a precio fijo. Además el negocio se hace de palabra, si no te pagan, o te pagan menos, tienes que joderte.

Pues bien este suizo nos encuentra a mi y a 3 programadores más, inicialmente nos hace una oferta maravillosa:

  • 100 cuc(120 usd) al mes durante la primera etapa, esta etapa consistía en estudiar… genial!!
  • 200 cuc durante la segunda etapa, la cual consistía en comenzar a dar resultados, aunque fueran modestos
  • 300 cuc al mes cuando estuviéramos a toda maquina.

Yo tocaba el cielo. Estudié como un poseso a esas infames bibliotecas, regresé al dolor de los punteros, todo con un amor y dedicación dignos del más consumado hacker. Luego el señor vino a Cuba y realmente pagó por estudiar… pero no 100 cuc, resulta que estos 100 cuc eran por trabajar 40 horas a la semana, es decir, 8 horas al día, yo solo trabajé 30, así que cobré alrededor de 60 cuc, esto no me molestó lo más mínimo, yo tengo un trabajo diurno, con el que tengo acceso a la Internet, y conocía las reglas del pago por horas.

La sorpresa vino después…

El trabajo consistía inicialmente en convertir a CADELEC en un sistema compatible con UTF-8, okey.. es una buena idea, pero el codigo… el codigo… eran miles y miles de lineas de C++, sin clases, o más bien sin las clases como deberían ser las clases; era una programación estructurada digna de un estudiante malo de secundaria en los años 80, y repito miles y miles de lineas; además codigo repetido… un verdadero asco, solo de recordar aquello me dan nauseas. También debíamos hacer que la base de datos fuera compatible con UTF-8, la base de datos en Visual FoxPro. Luego habría que agregarle nuevas funcionalidades al sistema.

Pues bien, luego de un trabajo muy intenso logramos traducir todo aquello, logramos que al menos compilara en VS 2005, que era uno de los requisitos, no habíamos logrado ejecutar el sistema pues aun faltaba el trabajo con la base de datos; pero igual estábamos convencidos que habíamos llegado a la segunda etapa, pues el resultado era evidente. Estábamos equivocados.

La segunda(o la tercera? no recuerdo bien) vez que este señor vino le dimos el código, compilaba, estábamos orgullosos, había sido una labor titánica, agobiante, absurda. Ni siquiera se nos ocurrió pensar que nos iba a pagar… 60 cuc, otra vez. No entendimos, le pedimos que nos explicara… ya habían resultados… pero entonces el amable y risueño suizo no explicó que cuando el decía resultados se refería a que el el programa corriera. Bueno, pero eso ya estaría en la tercera etapa no? No, la tercera etapa es cuando le agreguemos nuevas funcionalidades…

Luego de un silencio incómodo seguimos trabajando, pero ya la mitad del equipo habíamos decidido que no seguiríamos trabajando para él. Por suerte en esos días había aparecido un proyecto para J2ME y J2EE, así que pude largarme sin perder demasiado dinero, más bien gané.

Allí se quedaron dos amigos trabajando, no sé como les irá, no sé si habrán logrado que les pagen 300 cuc, en la pagina de CADELEC anuncian CADELEC 2007 sobre AutoCAD 2007, así que supongo que al menos terminaron el trabajo.

PD: Lo genial sería poner ejemplos de ese código maldito, pero es un software furiosamente propietario(incluso se hablo de ofuscar el código a propósito por si lo decompilaban) y prometí no hacerlo.

Publicado en Programación, Software privativo | 2 Comentarios »

Cuba y el Software libre

Publicado por caente en Febrero 22, 2007

La mayor parte de este artículo es un correo que envié a la lista linux-l de Cuba, cuando se discutía el hecho de si valía la pena que empresas cubanas se dedicaran a crear ERPs desde cero, cuando en el país existe la orientación de migrar a software libre.

La cuestión es que aunque hace tiempo se viene hablando en nuestro país de migrar al software libre, parece ser que ahora, gracias a Venezuela, se cogerá esto en serio, no obstante, además de las usuales dificultades, usuarios con desconocimiento, una gran cantidad de software escrito para Windows, todavía falta bastante para que incluso los mismos que impulsan el software libre en la isla logren desprenderse del modelo del software propietario.
El problema es que no basta usar linux, ni software libre en general, estoy seguro que aunque se haga obligatorio usar software libre en las empresas (lo cual creo que es incorrecto, mas bien se debería exigir que las empresas usen solo software legalizado, pero eso es para otro artículo) todavía faltaría la mentalidad de colocar cada desarrollo en un repositorio, ya sea nacional, internacional, o de la misma empresa, para así lograr retro-alimentación de la comunidad, no solo cubana; pero es muy probable que a la mayoría de los directivos eso de dar el código fuente, con la licencia que sea, les resultará muy difícil de aceptar. Quizás el camino más corto, o mejor, un camino más, sea crear empresas que desde sus inicios usen software libre, el problema estaría que hasta donde sé, crear una empresa nueva es bastante difícil en nuestro país, obviamente hablo de siempre de empresas estatales (recuerden que en Cuba no existen empresas privadas lo cual veo muy equivocado, pero también es para otro artículo).
La cosa es que si el gobierno definitivamente apoya al software libre, entonces automáticamente aparecerán nuevas oportunidades de negocio, y no creo que haya muchas empresas capaces de aprovechar rápidamente esta coyuntura. Y aquí entra algo como un ERP, es de mentalidad de software propietario empezar las cosas desde cero, pero una empresa nueva, fresca, suyos integrantes apuesten fuertemente por el software libre, porque lo conocen, a la hora de comenzar un proyecto, no solo un ERP, siempre buscarían lo que está hecho, y trabajarían sobre ello. Por eso pienso que además de los movimientos gubernamentales por hacer que las empresas que existen migren, tendría que existir una política de “incubación” de empresas, o pronto nos veremos inundados de empresas europeas y latinoamericanas dando soporte,cuando en nuestro país alcanza el talento.

Publicado en Cuba, Software Libre | Deja un Comentario »

Escogiendo una distribución

Publicado por caente en Enero 10, 2007

Ayer me tropecé con esto [zegeniestudios.net] es un sitio donde tras algunas preguntas sencillas te dan varias opciones de distribuciones.

Inicialmente me pareció una tontería, pero igual decidí darle una opertunidad, despues de todo siempre nos gusta hablar de nosotros mismos (de donde sino salen las guerras de software).

Estas son las distribuciones a escojer:

  • Fedora Core
  • Mandriva
  • OpenSuSE
  • Debian
  • MEPIS
  • Ubuntu
  • Kubuntu
  • Linspire
  • Xandros
  • PCLinuxOS
  • Yellowdog Linux
  • Gentoo
  • Slackware
  • Ark Linux
  • Knoppix
  • Arch Linux

Estas fueron las condiciones que puse:
Do you know what a “Linux distribution” is? Si claro
Have you successfully installed an operating system before? También
Do you know how to “partition” a hard drive? También
Which kind of installer do you prefer? Me da igual
Are you using any wireless devices? No
How would you rate your technical skills? Esta es la variable
What kind of computer are you installing on? PC de escritorio
What is the primary use of this computer? Para trabajar
Do you have a 64-bit processor? Si
How old is the computer you are installing Linux on? P IV 3 GHz, 512 Mb, hyperthreading, dual chanel
How would you rate your knowledge of linux? Esta opcion es un poco rara, teniendo en cuenta la de más arriba, pero dejemosla en que “I’ve used linux for a while now”
What desktop environment do you prefer? KDE
Do you need easy access to a lot of ready-to-run software? Si por dios que mi internet es una basura (sobre todo por el ISA Server)
Will you be installing the distribuion on a PC or a Mac? PC
Aqui preguntan que grado de atrevimiento quieres en tu distro: lo último
Does the Linux distro have to be free (gratis)? Yep
Do you want to include Live CDs in the results? No hay problemas

Estos fueron los resultados

  1. Principiante->PCLinux y Mandrivia
  2. Intermedio->Mandrivia, Kubuntu y Debian
  3. Avanzado->Debian, Kubuntu y Mandrivia
  4. Experto->Kubuntu, Mandrivia y Debian

Obviamente el orden en que estan puestas las distribuciones es el orden de prioridad.

Analicemos esto un poco:

El primero lo veo bastante lógico, nunca he visto el PCLinux, pero sí el Mandrivia, y nada, no hay mucho que decir. Sin embargo los demás están un poco extraños, si se fijan son siempre las mismas distribuciones, solo cambia el orden, para el intermedio, primero Mandrivia, luego Kubuntu (un Debian) y al final Debian en strike, pero que no había puesto yo que quería tener lo ultimo de lo ultimo? será que este señor esta pensando en el Debian 4.0, o priorizó la cantidad de software disponible. Luego el Avanzado, primero Debian!!, vaya, está bien, de hecho este podría entenderse mejor, la persona que busca distribución está escapá (o es un crack, como creo le dicen en españa) y querrá un Debian puro, quizás luego podría transigir en usar Kubuntu y con mucho amor se “rebajaría” a usar Mandrivia (pues se sabe que los hombres de pelo en pecho no usan nada que salga de una empresa). Pero el que me dejó loco es el último, que simplemente debería ser el anterior.

Bueno nada, creo esta es una buena iniciativa, pero habría que revisar las prioridades, o mejor, que antes de comenzar el test el usuario escoja sus prioridades, y en base a esto podría tener un resultado más “fiable”. Pues de hecho con la cantidad de aplicaciones que trae el Knoppix y su eficiencia, además de que es una distribución “al límite”, a mi me basta y me sobra, pues justamente es esta la que uso, y por nada del mundo lo cambio por ninguna de esas tres. Quizas por Debian 4, o por cualquier otra, pero no por el actual Kubuntu (que he probado) ni por Mandrivia (que no he probado).


Publicado en GNU/Linux | Deja un Comentario »

Entrando en el software privado

Publicado por caente en Noviembre 28, 2006

Aunque he hecho varios programas para mi empresa, estos siempre han sido sistemas internos; pero ahora me ha llegado una oferta, que he aceptado sin pensarlo dos veces, para trabajar en un sistema que sí es comercial, y que es privativo. La verdad es que no me dolió nada, y creo que debería, tanto como soy defensor del software libre, como forma de compartir el conocimiento, y pienso que la programación de codigo cerrado realmente limita el conocimiento además de que se limita a sí misma; no obstante, repito, acepté el trabajo y además me siento contento y con ganas de empezar. Y todo porque el trabajo en sí me interesa, la programación que hay que hacer, las cosas nuevas que tengo que aprender, todo eso arrincona y vence a los remilgos ideológicos.
Según me dice mi empleador no podré divulgar nada de lo que vea del código de la empresa, de hecho me van a hacer firmar un documento que me compromete a no hacerlo, y lo firmaré, pues en definitiva es su código y lo tratan como les de la gana, lo firmaré aunque me duela, y me morderé la lengua antes de decirles que quizas sea buena idea liberar el código, pues ellos tienen su modelo, y parece que les va bien.
Por otra parte, y esto es lo que no consideran mucho en los debates ideológicos, pagan bien, sí, soy un vendido, o quizás no tanto, mas bien un alquilado.
Hago mal? Me estoy prostituyendo?
No creo, eso sería un extremismo, quizás me niegue a acusarme de ninguna manera debido a esta alegría que siento por comenzar es proyecto, un proyecto que al fin me saca de los sistemas de gestión, un proyecto que me obliga a usar herramientas de microsoft, que me obliga a dejar mi amado linux por un tiempo; pero un proyecto que me hará regresar a las aréas de la programación que luego de mi tesis no pensé regresar.

Hasta que punto estamos dispuestos a sacrificar nuestro presente, nuestra satisfacción por unos ideales? Y no hablo del futuro, que para eso sí están los ideales.

Publicado en Programación, Software privativo | 1 comentario

Otras maneras de ver la libertad del software

Publicado por caente en Noviembre 23, 2006

Me encanta la filosofía del software libre, siento que es lo más parecido al modelo de la ciencia teórica, en la que los descubrimientos son de todos (ojo no me refiero a una vacuna o a una metodología de fundir un acero para que tu auto sea más competente) bueno, quizas esté siendo un poco idealista, quizás la ciencia teórica no sea tan libre que digamos, quizás solo las matemáticas, quizas aquellas ramas de la física que no implican utilidades obvias, quizás solo hable de la ciencia del siglo XIX. En definitiva hablo de un conocimiento generado por todos y utilizado por todos (amen de las pequeñas miserias humanas de las que no se libra nadie, por muy genio que se sea).

Pero entonces, llamándome a conciencia, me puse a buscar un lenguaje que cumpliera estas condiciones, no debería parecer muy dificil, está c y c++ (hablo del compilador de gnu), está python, está perl y hay muchos más, pero ojo, que hay un lío con esto de la libertad legal, sí, son libres, pero, y en lo que a mi respecta hay un inmenso pero, o peor, varios.
Antes veamos lo que hemos aceptado por software libre:
según la pagina de gnu en español
“Software Libre” se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software:

* La libertad de usar el programa, con cualquier propósito (libertad 0).
* La libertad de estudiar el funcionamiento del programa, y adaptarlo a las necesidades (libertad 1). El acceso al código fuente es una condición previa para esto.
* La libertad de distribuir copias, con lo que puede ayudar a otros (libertad 2).
* La libertad de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie. (libertad 3). De igual forma que la libertad 1 el acceso al código fuente es un requisito previo.

Inmejorable no es cierto? No se me ocurre una letra que agregar, entonces, de qué me quejo? Pues de lo siguiente:
c : Dennis Ritchie, ANSI
c++ : Bjarne Stroustrup, ANSI
perl : Larry Wall
python: Guido van Rossum
java (si al final la licencian con GPL) : JCP, Sun , James Gosling, ya ni sé.

Y cual es el problema? No sé hasta que punto Ritchie sigue con c, pues su ultimo libro es del 78, y no sé hasta que punto c se sigue desarrollando. Así que de c no hablo.
Entonces c++, me consta que Stroustrup sigue con el desarrollo de c++, me imagino que se apoyará en la comunidad, pero en definitiva él es la locomotora que nos llevará a la futura versión
Larry Wall y Guido van Rossum están en activo en sus lenguajes, muchas noticias sobre perl y python estan dadas en primera persona, algo así como que ellos son los que halan el carro.
De java ni hablar, aunque es el lenguaje que me paga los frijoles, aunque lo licencien con GPL, ya tienen sobre sí la batuta del mundo empresarial, la comunidad se limita a sugerir y crear infinidad de bibliotecas, pero el lenguaje en sí lo lleva la Sun.
Entienden de lo que hablo? A lo mejor estoy siendo exagerado, pero todos estos lenguajes tienen atrás a una persona o a una empresa. Son libres pero que pasa si Guido se muere? python seguirá, es posible, pero durante cuanto tiempo? con qué impetu? y perl? y c++?
Pero indepedientemente de todo esto, que pienso que no es determinante, usar estos lenguajes me suena como a seguir la filosofía de alguien, no de usar avances de la ciencia sino simples herramientas de la tecnología.
La cosa es que intento ver a los lenguajes de computación como lenguajes formales, intento ver la computación como parte de la metemática, que lo es, pero que no se usa de esa manera.
Todos estos lenguajes son soluciones a un nicho de problemas específico, sí, son lenguajes de proposito general, pero cada uno fue concebido para algo particular en su momento. Ninguno fue creado solo para ser un lenguaje basado, exclusivamente, en una teoría matemática.

Ya voy acabando, como muchos habrán imaginado, toda sta perorata tiene como objetivo defender a algun lenguaje,así es, a haskell y a smalltalk.

Smalltalk
Segun wikipedia
Los orígenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox Parc)…
Ah, carajo! pero aquí tambien hay autores, es que el conocimiento humano no nace por generación espontánea, la clave es lo que sigue diciendo la wiki:

…para la creación de un sistema informático orientado a la educación. El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios, proporcionando un entorno para la experimentación, creación e investigación.
Pues sí, smalltalk se inventó exclusivamente para la investigación y educación, lo cual implicó que se sintieran libres de hacer un lenguaje sin compromisos con la industria, es decir, buscaron la pureza de la POO.

Squeak
Home page
Pero de aquel smalltalk a la fecha ha llovido mucho y han surgido una gran cantidad de dialectos, de los cuales lo más parecido a mi idea inicial es el Squeak, del cual sé que Alan Kay es un gran impulsor, pero aún cuando también estuviera bajo la influencia de una persona, tiene una gran comunidad que lo apoya(sí como los lenguajes anteriores), pero en definitiva es smalltalk, y a mi entender cumple con lo de ser un lenguje que busca la pureza de la forma.

Haskell
Otra vez la wiki
En los años 1980 se constituyó un comité cuyo objetivo era crear un lenguaje funcional que reuniera las características de los múltiples lenguajes funcionales de la época, como Miranda, y resolviera la confusión creada por los múltiples lenguajes que seguían este paradigma.
Bien, ya esto suena mucho mejor, un comité, y ajustarse a la pureza de la forma, esta vez siguiendo el paradigma funcional. Y ya termino, no creo que haya más que decir, o más bien hay tanto que prefiero parar ahora, haré un análisis más profundo luego que experimente más con haskell y smalltalk.

Para terminar aclararé algo, cuando hablo de los autores no me refiero a garantizar la continuidad del lenguaje, pienso que si un lenguaje (siempre hablo de las especificaciones, no de las implementaciones) es libre, su perpetuidad está casi asegurada, así que no es eso.
Me refiero al hecho de estar atados a la visión inicial de alguien y no al común acuerdo de los interesados. Como es inevitable que toda creación humana se inicie por la visión de su o sus creadores, entonces lo ideal para mí es que esa creación esté basada, en el caso de los lenguajes de programación, en fundamentos matemáticos generales y no en las necesidades de un nicho de problemas.
Esa es la liberdad de la que hablo, de que los lenguajes se ciñan al conociminto, y si hay que hacer alguna innovación, pues hacerla, pero no a tontas y a locas, no utilizando la intuición, sino bien fundamentada en lo que es correcto, en lo que es científicamente correcto.

Publicado en Software | Deja un Comentario »