Programación, literatura y otras artes menores

Archivos de la categoría ‘Tecnología’

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 »

La programación y la literatura II

Publicado por caente en Julio 30, 2007

Desde hace un tiempo en España hay una fuerte polémica sobre el “intrusismo” en la informática, lo pongo entre comillas porque pienso que no existe tal cosa. No niego que hayan profesionales de otras carreras en puestos que deberían desempeñar los ingenieros informáticos, eso es real, y es real en el mundo entero, llevo dos años y medio trabajando desde que dejé la universidad, de la que me gradué de ingeniero metalúrgico, y desde entonces he sido administrador de red, programador, J’Dpto de Informática(equivalente a director de informática), y programador otra vez. Cualquiera diría que justamente eso es el intrusismo, pues obviamente el puesto de Jefe de departamento de informática, de toda una empresa, debería ser para un informático, en lo cual estoy de acuerdo, pero es que simplemente no había ninguno dispuesto a ocupar la plaza.

Pero no es eso de lo que quiero hablar, y obviamente no es eso lo que sugiere el título, el asunto es que ya una vez dije que la programación se acerca a la literatura y en este articulo quisiera hacer una analogía entre informática/informáticos y escritores/periodistas.

Un escritor dedica gran parte de su vida a escribir relatos que no sabe si alguien los querrá leer, se dedica con esmero a puliros, a que cada palabra brille justo lo necesario para que su brillo aporte al conjunto la hermosura más perfecta posible, y eso es solo la parte del oficio, además dedica mucho tiempo a buscar temas para sus relatos, temas que aunque ya se hayan tocado antes(no hay nada nuevo bajo el Sol), al menos tengan un punto de vista diferente cuando él los narre. Para un escritor la construcción de los personajes es esencial, y aunque a menudo toma prestadas características del mundo real, él intenta que esos personajes sean nuevos… En cambio los periodistas deben narrar lo que sucedió, no tienen libertad alguna para enriquecer el relato y muchas veces trabajan bajo presión, con el tiempo y los datos limitados. Deben tener cuidado de “ser políticamente correctos”, pues a diferencia de un escritor ellos se deben a su periódico(o revista o lo que sea) y deben mantener una linea.

Estoy de acuerdo a que he utilizado dos arquetipos de periodista y narrador que no necesariamente se ajustan a la realidad, pero que se acercan algo a la media y eso creo que basta para la siguiente etapa.

La analogía es la siguiente:

escritor – Ing Informático(o licenciado en Ciencias de la Computación)

periodista – informático(técnico medio, FP, intruso…)

Un ingeniero informático, uno de verdad, no uno que pasó por la universidad pero la universidad no pasó por él, quisiera estar en un gran proyecto, uno nuevo que sea un avance tecnológico importante, sino para el mundo al menos para él; quisiera que sus programas(soy programador mis disculpas a los de sistemas) estén bien diseñados, que sean eficientes(aunque eso hoy día ya no le importa a nadie, ya quisiera ver a muchos flamantes programadores de JEE con un PIII como servidor). Los otros, los periodistas de la informática, deben trabajar bajo presión, sin pensar mucho en que están haciendo, sin importar si ven que el diseño que les dieron es una estupidez, sin importar si lo que le piden no tiene sentido alguno(seguramente le da dinero a alguien…). Nadie les va a revisar el código, nadie va a mirar por encima de su hombro y ver que están programando cualquier cosa… etc.

Quizás algún ingeniero se sienta un poco ofendido… él está trabajando como un informático de letra minúscula, es cierto, sucede mucho, ¿pero es culpa de los periodistas que las novelas actuales sean en su mayoría una mierda? es posible, pero más bien creo que las editoriales no deberían aceptar obras que simplemente están mal escritas, como por ejemplo el “Código Da Vinci”, quizás con unas cuantas correcciones hubiera sido un libro más decente, pero no, lo vendieron así mismo… ¡ y fue un éxito! entonces la culpa es de los lectores… los usuarios o clientes de nuestra analogía.

Las empresas de software en España obviamente no quieren a artistas, no quieren a ingenieros, quieren a esclavos que le hagan cualquier cosa, pero que les de dinero. No obstante, ese software que necesariamente no puede tener la calidad que pudiera, se lo venden a alguien… ¡ y lo compra! Entonces la culpa es de los usuarios, que aceptan cualquier basura. No tengo idea de que se pudiera hacer para revertir esta situación, no vivo en España, ni siquiera vivo en el capitalismo, pero la primera idea que me viene a la mente es la hacer empresas que, brindando un mejor servicio, le hagan la competencia a las chapuceras.

Publicado en Programación | Deja un Comentario »

Adios a Google

Publicado por caente en Julio 23, 2007

Me entró la paranoia, quizás me dejé contaminar por las opiniones que medran en Internet: Google ya es demasiado grande. Hasta hace poco eso de que mi puerta a Internet fuera Google era muy “geek”, porque Google es “geek”, todos queremos trabajar para Google, bueno quizás no todos. Pero en fin , la cosa es que me di cuenta de que mi lector de RSS era el de Google, mi correo electrónico era el de Google, mi blog estaba en Google, y mi buscador era(es) el de Google, o sea, lo que busco, lo que leo, las opiniones que escribo, mi correspondencia personal y de negocios, todo en los servidores de UNA sola empresa, da igual si son geeks, si son “don’t be evil” de verdad, es demasiado monopolio sobre mí, así que me puse a buscar y encontré:

  • Inbox para el correo
  • alesti para leer mis RSS
  • WordPress para mis blogs(obviamente)
  • todavía ando buscando un buscador.

Por supuesto, reconozco que los programas de Google son exelentes, así que alguna merma de calidad he sufrido.

Inbox está bien, al igual que Gmail revisa el correo atomaticamente, pero supongo que eso no es nada del otro jueves, además que lo hace con menos… estilo, es decir con menos Ajax, además quizás es que estoy ya acostumbrado al diseño de Google, pero veo muy cargado el de Inbox, no obstante, quizás debido al menor uso de Ajax, carga más rápido(para mi el ancho de banda es algo sensible, por ejemplo el correo beta de Yahoo ni me abre). Lo que menos me gustó de la migración, aquí la culpa creo que es de Google, es que Google solo permite exportar los contactos de dos formatos: el de Google y el Outlook Express; no sé si existe algo como un cvs estadar. Aunque realmente que más me duele de no usar Gmail es no poder revisar el correo desde mi celular.

En el caso de alesti creo que gané más de lo que perdí, aunque otra vez hecho un poco de menos al diseño de Google, alesti me parece más funcional como lector de rss, y por cierto aquí no tuve problemas al importar el OPML de Google.

WordPress es uno con el que gané y perdí, pues blogger está verdaderamente bien, aunque tiene detalles que me disgustan un poco, como las etiquetas, aunque eso no lo sabia hasta que vi las categorías de WordPress, y el hecho de que se puedan escalonar. Por lo demás es más o menos lo mismo, aun tengo que cacharear un poco más. Eso sí, la importación de mis artículos de blogger a WordPress fue realmente impresionante, se ve que está diseñado para joder a la competencia…

Donde si estoy cojo es en el tema buscadores, sería genial tener acceso a un PowerSet, el cual creo que es el camino pero fuera de eso no se me ocurre nada más.

Esto claro de qué estas empresas en las que deposito ahora mi vida on-line no son ni mejores ni peores que Google, éticamente hablando, pero al menos son todas DISTINTAS, es como aquella medida de viaje: dividir el dinero en pequeñas porciones y guardarlo en diferentes lugares.

Publicado en Internet | Deja un Comentario »

Busqueda personalizada o lenguaje natural

Publicado por caente en Junio 19, 2007

Tengo dos artículos, uno es de Inside MetaEmotion y el otro de ComputerWorld.
En el de ComputerWorld se habla de lo que según Eric Schmidt puede ser el futuro de Google; habla de Google Enterprise, hoy día lo más parecido podría ser las Enterprise Solutions. Pero por sobre todo pone como el “core” de google al buscador, haciendo énfasis en la búsqueda personalizada, lo cual, por muy Eric Schmidt que sea, me parece un error y más aun el ejemplo que pone. Es decir es cierto que las mismas palabras pueden significar varias cosas, pero vamos… si yo vivo en Madrid y quiero saber si Paris is hot, entonces esta bien, pero si 5 min después quiero saber sobre la chica que está en una cárcel de Nevada?
Realmente no me parece que se deban condicionar las búsquedas al historial de la persona, y eso sin contar con el hecho de que inevitablemente se deberá guardar ese registro, y que está bien que google respete la privacidad, rectifico, que prometa que lo hará, pero si en un futuro el gobierno de EEUU les dice que muestren los datos, pero se lo dicen de verdad, no como la vez pasada, si se lo dicen con un arma en la frente… entonces todo al carajo, nuestras vidas en manos de políticos y militares…

Bueno, además de la paranoia, simplemente me parece ineficiente, se están dejando llevar por la inercia de las palabras claves, ahí es donde entra PowerSet, un buscador que aun no he podido probar, pues como dice el artículo solo es posible usarlo por invitación, pero si lo que dice el artículo es cierto, si esos resultados son similares a otras consultas… pues no hay más que hablar, ese es el camino.
Imagino que tiene desventajas, debe ser caro ese procesamiento, no tengo idea que mecanismo tendrán, si indexan(deben hacerlo supongo); debe ser dificil portarlo a otros idiomas, o quizás no. Pero de lo que sí no me cabe duda es que este es el camino, incluso el camino a la famosa web semántica, de lo que habla Eric Schmidt es simplemente un parche.

Publicado en Internet | Deja un Comentario »

Procedimiento para la creación de un proyecto con Trac© con Apache2

Publicado por caente en Mayo 11, 2007

Introducción

Trac© (http://trac.edgewall.org/) es un gestor de proyectos de software, que aunque es un poco limitado, en ciertos ambitos puede ser muy eficiente. Su característica principal es la de tratar un proyecto como una serie de metas (milestones), las que están descritas por una serie de tareas(tickets) a cumplir, son el cumplimiento de estos tickets lo que mide el porciento de cumplimiento de la meta. Existen tres tipos de tickets: tarea, defecto y mejora. Obviamente se le puede añadir un nuevo ticket a un milestone en cualquier momento.
Cada cambio a un ticket queda registrado, de manera que es incluso posible, y de hecho así lo hacen en su propio sitio, usar este historial a manera de forum, en donde los usuarios o testers dan sus opiniones sobre un defecto o tarea y el desarrollador va dando parte de los avances. Por otra parte cualquier cambio, ya sea en los tickets, o en la wiki (hay una wiki) queda registrado.
Como ya se dice arriba, Trac© cuenta con una wiki, de manera que es posible ir añadiendo contenido, de manera que el sitio del proyecto albergue gran cantidad de información sobre el mismo, lo cual puede ser muy conveniente para los usuarios.
Además Trac© está integrado con subversion, de manera que es posible hacer consultas al repositorio y ver el historial de cambios al mismo.

Instalar Trac©

Como servidor se utilizará una maquina con Debian GNU/Linux v4.0r0.
Es necesario tener instalado:

  • Apache2
  • libapache2-mod-python 3.3.1
  • postgresql 8.1
  • python-psycopg2
  • subversion
  • python-subversion
  • python 2.4.4
  • python-clearsilver
  • subversion-tools
  • trac-0.10.4

Luego de descomprimir trac se debe ejecutar:
#./setup.py install

Creación de un proyecto

Antes de crear el proyecto es necesario crear la base de datos en postgresql, así como un usuario que será el encargado de acceder a la base de datos, es posible usar un usuario para todos los proyectos o uno distinto cada vez, para este caso:
usuario:trac
contraseña:trac
base de datos: ejemplo_trac
Además es necesario tener ya creado el repositorio SVN, en este caso estará en /var/svn
Crearemos el sitio en la carpeta: /var/www/trac
#trac-admin /var/www/trac/ejemplo initenv
Ahora empieza una sesion interactiva en la que Trac© nos hace una serie de preguntas:
Project Name [My Project]> ejemplo
Database connection string [sqlite:db/trac.db]> postgres://trac:trac@localhost/ejemplo_trac
La url de la base de datos está conformada de la siguiente forma:
postgres://usuario:contraseña@url.servidor/base de datos
Repository type [svn]>
Este lo dejamos en blanco
Path to repository [/path/to/repos]> /var/svn
Este es el camino al repositorio svn que será usado.
Templates directory [/usr/share/trac/templates]>
También se deja en blanco
Si todo ha salido bien ya estará creado el proyecto y la base de datos está poblada.

Habilitar el sitio en Apache

Para que el sitio esté completamente funcional es necesario agregarle lo siguiente al fichero /etc/apache2/httpd.conf:

SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/www/trac/ejemplo
PythonOption TracUriRoot /trac/ejemplo
PythonDebug on

Luego de reiniciar el apache:
#/etc/init.d/apache2 restart

El sitio ya estará en funciones.
NOTA: El usuario www debe tener permisos de lectura y escritura en /var/www.

Creación de usuarios

Se utilizará la utenticacion de apache, para lo cual se creará la carpeta /var/www/passwds/
Luego se hará la siguiente operación:
# htpasswd -c /var/www/passwds/pass usuario_ejemplo
New password:
Re-type new password:
Adding password for user usuario_ejemplo
La opción c de htpaswd solo es necesaria para crear el fichero con las contraseñas, luego no hace falta.
Ya el usuario está creado, ahora hay que habilitar el login para el sitio, para lo cual se le añadirá lo siguiente a /etc/apache2/httpd.conf:


AuthType Basic
AuthName “ejemplo”
AuthUserFile /var/www/passwds/pass
Require valid-user

Se reinicia el apache nuevamente y listo.

NOTA: El fichero de contraseñas se hizo general en /ww/passwds/pass, pero es posible, e incluso aconsejable, crear un fichero de contraseñas para cada proyecto, solo basta con crearlo en la carpeta del sitio y poner el camino en httpd.conf.
Otorgar permisos
El nuevo usuario hereda los permisos del usuario anonymous, el cual solo puede ver todas las secciones y solo puede crear tickets, como se muestra más abajo.
Para otorgarle permisos más específicos es necesario usar trac-admin:
# trac-admin /var/www/trac/ejemplo/
Welcome to trac-admin 0.10.4
Interactive Trac administration console.
Copyright (c) 2003-2006 Edgewall Software

Type: ‘?’ or ‘help’ for help on commands.

Trac [/var/www/trac/ejemplo]>permission list

User Action
————————–
anonymous BROWSER_VIEW
anonymous CHANGESET_VIEW
anonymous FILE_VIEW
anonymous LOG_VIEW
anonymous MILESTONE_VIEW
anonymous REPORT_SQL_VIEW
anonymous REPORT_VIEW
anonymous ROADMAP_VIEW
anonymous SEARCH_VIEW
anonymous TICKET_CREATE
anonymous TICKET_MODIFY
anonymous TICKET_VIEW
anonymous TIMELINE_VIEW
anonymous WIKI_CREATE
anonymous WIKI_MODIFY
anonymous WIKI_VIEW

Available actions:
BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW,
MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY,
MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY,
REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW,
TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY,
TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE,
WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW

Aqui se ven los permisos de anonymous, y todos los permisos posibles, si se desea, por ejemplo, que el usuario pueda editar la información de los milestones, se hace lo siguiente:
Trac [/var/www/trac/ejemplo]>permission add usuario_ejemplo MILESTONE_MODIFY

Notificación por e-mail

Trac© incorpora la posibilidad de notificar por correo electronico al desarrollador implicado en un ticket, para lo cual es necesario habilitar el SMPT al sitio del proyecto, para esto es necesario modificar el fichero /var/www/trac/ejemplo/conf/trac.ini para el ejemplo.
Dentro del fichero se encuentran las siguientes lineas:
[notification]
always_notify_owner = false
always_notify_reporter = false
always_notify_updater = true
mime_encoding = base64
smtp_always_bcc =
smtp_always_cc =
smtp_default_domain =
smtp_enabled = true
smtp_from = correo@dominio
smtp_password = pass
smtp_port = 25
smtp_replyto =
smtp_server = servidor.de.correo
smtp_subject_prefix = __default__
smtp_user = usuario_correo
use_public_cc = false
use_short_addr = false
use_tls = false

Las lineas modificadas para el ejemplo están en negritas, luego de estos cambios, solo basta crear un ticket, y en la caja de texto CC poner la dirección de correo del destinatario.
El correo que recibe el desarrollador es como el siguiente:
#1: mensaje
————————+—————————————————
Reporter: jefe | Owner: miguel
Type: defect | Status: new
Priority: major | Milestone: milestone1
Component: component1 | Version: 1.0
Keywords: |
————————+—————————————————


Ticket URL:
ejemplo
My example project


Conclusiones

Esto es solo un breve tutorial para la puesta en marcha de un sitio de proyecto utilizando Trac©, el cual, aunque limitado, tiene aun más posibilidades.

Publicado en Programación | 1 comentario

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 »

El arte y la programación

Publicado por caente en Febrero 2, 2007

Hace un tiempo comparé la programación con la literatura , ahora seré algo más general.

Gracias a un amigo conocí la definición de arte de Umberto Eco, que no recuerdo literalmente, y que además está expresada en un lenguaje sumamente técnico, pero que en definitiva es algo como esto: Algo artístico es aquello donde el contenido trasciende al significado… bueno no exactamente, aquí habría que cambiar “algo” por mensaje, contenido por denotación y significado por connotación. En general esto es que un cuadro, un relato, una pieza musical llegan a ser arte cuando de alguna manera se bastan así mismas para existir…, para generar significados según por quien sean apreciados.

Como estamos en el siglo XXI usemos las definiciones de Internet:

El término arte procede del término latino ars. En la Antigüedad se consideró el arte como la pericia y habilidad en la producción de algo. Es solo a partir de finales del siglo XV, durante el renacimiento Italiano, cuando, por primera vez se hace la distinción entre el artesano y el artista (artesanía y bellas artes) y equivalentemente entre artesano, productor de obras múltiples y artista, productor de obras únicas. …
http://es.wikipedia.org/wiki/Arte

La mezcla de estas dos definiciones pueden ayudar a descubrir hasta que punto la programación puede ser artística (quede claro que hablamos de la programación en sí, de la escritura de código, no del resultado final, algo así como lo que menciona Thomas Mann su Doctor Faustus cuando dice que muchas obras musicales tienen dos formas de ser apreciadas, con los oídos y con la vista, está ultima se refiere a la partitura y solo está destinada a los conocedores o iniciados).

Entonces, que es programar? Básicamente escribir código, pero en realidad es mucho más que eso, hacer un buen programa recuerda mucho a la anécdota china del emperador, el pintor y el cangrejo:

Un día el Emperador quiso tener el dibujo más perfecto posible de un cangrejo, así que mandó a llamar al mejor dibujante del imperio y le dijo:

- Te doy una casa, sirvientes, una pensión y todas las comodidades que necesites, para que me pintes el cangrejo más perfecto que se haya dibujado jamás.

El dibujante, feliz, aceptó y se fue a su nueva casa.

Se sucedieron los días, los meses, los años, se fueron 30 años y el Emperador no tuvo noticias del pintor, cansado de esperar hizo que lo trajeran a su presencia.

- 30 años pasaron desde que te pedí el dibujo del cangrejo, mi paciencia se ha agotado y te exijo que me muestres tu trabajo.

El pintor asintió y pidió que le trajeran tinta, un pincel y papel, y en presencia del Emperador, en apenas unos instantes dibujó un cangrejo perfecto

Claro que ya quisiéramos los programadores estas condiciones, pero en general para crear un programa de calidad debemos irnos a un rincón y rumiar los requerimientos del sistema y encontrar el mejor diseño posible, para luego, poco a poco, a veces a base de prueba y error (creo que a esto último le llaman programación evolutiva), lograr que nuestro sistema se apegue lo más posible a la realidad idealizada del cangrejo.

Pero este chino era un artista?

O un artesano?

Si luego de los tantos siglos que pudieran haber pasado, alguno de nosotros se encuentra con el dibujo perfecto de un cangrejo, seguramente lo admiraríamos, seguramente quisiéramos colgarlo en una pared de nuestra casa, pero… es arte?

Según Oscar Wilde lo artístico debe ser inútil y bello, el dibujo del cangrejo sería el caso.

Regresemos a Eco, a la parte de la connotación, como interpretar esto? Yo pienso que esta connotación personalizada solo puede lograrse mediante el reconocimiento de uno mismo en la pieza artística que se contempla(o que se oye o que se ve), por ejemplo, cuando me leí “El Extranjero”, de Camus, el cinismo y la apatía del protagonista, calaron profundamente en mí, no es que quisiera ser así, ni que lo sea, pero de alguna manera me vi reflejado en este libro, no como un todo, no hablo del retrato, hablo de ver ese pedazo de vida transcurrir frente a mí, mostrándome una realidad existente y falsa al mismo tiempo, yo la hacia existir y sin embargo era falsa. Yo fui parte del relato, no porque lo leí, sino porque conjugando la lectura con mis pensamientos, con mi propia vida, le encontré un significado a la novela que la hace única para mí, y que la haría única para otra persona que la lea.

Entonces es esto, aventurémonos a soltar una definición: Arte es aquello que es capaz de conjugarse con su público para alcanzar una nueva dimensión única, y tantas como público exista.

Que les parece, y la programación?

Desafortunadamente un programa es siempre el mismo programa, quizás las condiciones en que fue creado, las condiciones en que es distribuido pueden generar sentimientos distintos y únicos, pero jamás el código mismo, el código es solamente una pieza de artesanía, nada más.

PD: No se han fijado que en todas las revistas, programas, o lo que sea siempre se dice: “Arte y Literatura”? Nunca se han preguntado por qué? Eso lo dejamos para el próximo artículo.

Publicado en Programación | 4 Comentarios »

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 »

Consideraciones sobre los IDES

Publicado por caente en Diciembre 29, 2006

Resulta que ultimamente he estado probando lenguajes de programación, aunque esta práctica tan entretenida la tuve que dejar por un tiempo. En mi breve y entretenido periplo por los lenguajes de programación, tuve la oportunidad de usar diversos ides para diversos lenguajes. Sí, soy de los que piensan que el vim es para hacer scripts pequeños, no para programar, y que un ide, o algo parecido, puede ayudar mucho, no solo a programar, sino a aprender a programar.

Conozco a más de uno que se habrá escandalizado por ese ultimo comentario, pero paciencia.

Está claro que quien comienza a programar debería hacerlo con un editor de textos y el compilador en la linea de comandos, yo lo hice, y de verdad que aprendí algo de como funciona el lenguaje, bueno, los lenguajes, pero luego, cuando la filosofía del lenguaje está más o menos asimilada, un ide nos puede ayudar a complementar un poco más nuestro aprendizaje de dicho lenguaje. Un ide normal genera código, aqui es donde viene bien haber programado a pelo, y ese codigo más o menos eficiente es nuestra herramienta, generalmente la más útil pues nos ahorra trabajo tedioso; pero además, si ya hemos estudiado como funciona el lenguaje, ese código generado sirve como escuela, a veces como muestra de buenas prácticas, a veces como lo contrario, pero siempre es una porción de codigo funcional que podemos contrastar con la que nostros hemos escrito para situaciones similares, cuando eramos unos penitentes de editor de texto+compilador.

Ahora voy a hacer un breve recuento de los IDEs que me he tropezado por ahí:

Para java

  • Eclipse, en realidad lo he usado poco, aunque hoy mismo descargué una de las “distribuciones” que se hacen aquí para programar del lado del servidor, que es a lo que me dedico, y no sé, tendré que dedicarle otro post, por lo pronto debo decir que el plugin para tomcat no me reconoció el tomcat6, pero eso puede ser cosa de configuración, nada del otro mundo.
  • NetBeans es el IDE que uso en el día a día, me ha ayudado mucho a trabajar y a aprender, lo recomiendo para quien luego de haber estudiado java quiera comenzar a producir rápidamente, pero repito, estudiar primero.
  • vim ;)

Para C++

  • DevC++, es un buen ide para programar en windows y no depender del VS, este ide usa el complidador de la gnu, es bastante amigable y con buena ayuda, además existe una versión(?) para programar visualmente utilizando las bibliotecas wxWidgets.
  • Visual Studio, si ya sé, bueno este exelente ide tiene el defecto de ser aberradamente propietario, pero esto no es una arenga política. De todas formas no lo he usado extensamente, solo un tiempo hace 1 año y medio y de mala gana, y ahora solo el plugin para ObjectARX; no obstante si me he dado cuenta que como ide automatiza mucho el trabajo, aunque el editor está un poco flojo, al menos en comparación con NetBeans y Eclipse(este ultimo dicen que tiene un editor salvaje).
  • Kdevelop, NPI

Para Haskell

  • Existe un plugin para eclipse bastante bueno, que usa la consola de eclipse. Por defecto busca la instalación del GHC, pero creo recordar que también funciona con Hugs, aunque cuando eclipse crea el proyecto hace un compilado que es el que se ejecuta cuando corremos el programa, y segun recuerdo Hugs no compila.También podemos usuarlo de manera interactiva en el intérprete, dentro de eclipse.
  • Kate, bueno esto no es un ide propiamente dicho, siendo estrictos kate no es mucho más que el criticado vim, pero tiene sus ventajas. Completamiento de codigo (más o menos), colores (para lo que sirva), una consola embebida, y ya. Bueno y guarda sesiones y esas cositas, en general es un editor de texto con esteroides.
  • Emacs, aqui estoy frito, cuando lo estuve explorando fue que me cayó el segundo trabajo y ahí quedó, ya lo recobraré.

Para python

  • Boa-constructor, un buen ide sobre todo para programar python con wxWidgets, aunque me dio sus palos, en general me pareció demasiado pesado.
  • IDLE, este me encanta, es apenas algo más que una shell, pero con muchísimos esteroides, ademas de las labores usuales de una shell, puedes crear un fichero .py y depurarlo, sí paso a paso, sí sabiendo los valores de las variables y sus tipos en cada paso; tiene auto identacion, colores, y otras cositas.

Para Smalltalk

Una aclaración, en smalltalk como tal no es que haya varios IDEs, sino varias implementaciones, y el lenguaje está muy ligado a la interfaz gráfica, además es un lenguaje que todo programador de POO debe visitar alguna vez, algo así como la meca

  • gnu-smalltalk, mi primera elección fue esta, pero la descarté rápidamente, no es que esté mal, sino que el objetivo de los creadores era usar smalltalk como un lenguaje para pequeños scripts, no lo que yo andaba buscando.
  • Smalltalk/X, una buena implementación, pero me daba unos palos brutales en ubuntu, cuando me pasé a knoppix todo bien.
  • Squeak, este me ecantó, pero debo decir que no desde el primer momento, cuando lo instalé por primera vez en ubuntu la imagen por defecto tenía un monton de dibujitos y eso, por fortuna en una lista de smalltalk alguien vino en rescate de mi complejo de adulto y me dieron esto, aqui se puede descargar una imagen más “profesional”, claro que luego de usar el squeak un poco me di cuenta que había sido una tontería mia juzgar el contenido por la apariencia, cosas de nosotros los humanos. Desafortunadamente, no le he prestado toda la atención que quisiera a smalltalk, ya veré.

Y hasta aquí mi experiencia, bueno faltan algunas cosas como el dreamweaver y el PHPEditor, pero son cosas que no pertenecen esta ultima etapa, y que tampoco me interesan demasiado, noten que no hablé de VB6 ni de C++Buider.

Mi presente no ha cambiado, sigo con Netbeans y VS, solo quisiera que algun día haskell y smalltalk paguen mis cuentas, pero por el momento es solo un sueño.

Publicado en Programación | Deja un Comentario »