Programación, literatura y otras artes menores

Archivos de la categoría ‘Programación’

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 »

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

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 »

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 »

VC++ y AutoCad

Publicado por caente en Diciembre 19, 2006

Como ya he comentado aqui, acabo de iniciarme en el software privativo como freelancer. El trabajo es con Visual Studio 2005, más específicamente con VC++ y AutoCad, utilizando la biblioteca ObjectARX, pues bien, terrible.

Llevo programado en java y usando linux por 1 año y medio, y la verdad que ya me habia olvidado un poco de los diabólicos punteros y el incomprensible Windows, pero eso no es el problema, pues en definitiva los punteros los recordé y a Windows lo aguanto con paciencia; la cosa es la manera de hacer las cosas de esta biblioteca, o se trabaja así normalmente en C++?

En java estoy acostumbrado a que si una operación puede salir mal, pues la envuelves en un try-catch y evitas que la cosa se trabe, sé que en C++ tambien existen excepciones, pero estos de autocad parece que no, cuando un método puede salir mal pues hacen que el valor de retorno sea un tipo Acad::ErrorStatus, que puede ser Acad::eOk, Acad::eDuplicatekey, o lo que sea, y si tu objetivo con dicho método es obtener la referencia a otro objeto, pues nada, vivan los punteros! le pasas un puntero como parametro y cuando termina el metodo ya tienes tu referencia, siempre verificando que el método dio un Acad::eOk, por supuesto.

Claro que esta manera de trabajar tiene sus ventajas, puedes hacer una función que segun sus operaciones devuelva un Acad::ErrorStatus, que no necesariamente tiene que ser un error. Pero estoy seguro que esto se puede lograr con un mejor diseño.

La verdad creo que en general podría aprovechar mi experiencia de java con estas bibliotecas, pero por el momento, que solo estoy aprendiendo, el codigo me sale un poco espeguetizado, y es que esta manera de trabajar casi te invita a llenar de condiciones tu codigo, mis ejercicios parecen serpientes.

Ya se que en java están los thrown, pero vamos.

Me acabo de dar cuenta que estoy poniendo a java por los cielos y a ObjectARX(VC++?, C++?) por el piso. Es dificil no hacerlo claro, tras un tiempo usando java me resulta relativamente facil pensar mejor el diseño de un programa, por sencillo que sea, mientras que con estas bibliotecas aun comienzo, ya les contaré si el futuro es tan incómodo como promete el presente o si hablé mucha basura.

Publicado en Programación | 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

La programación y la literatura

Publicado por caente en Noviembre 27, 2006

Lo primero fue un niño frente a una cumputadora en una feria tecnológica, la madre lo había llevado y a la entrada de la feria había una sala con computadoras y cada una tenía un programa gráfico, en el cual un mapa de la feria le decía al asombrado niño el nombre de cada salón que él señalaba. Luego fue el interés intinerante por las computadoras de los diferentes trabajos de la madre, siempre escribiendo tonterías en wordperfect, con tal de usar la maquina, luego fue un tablero MSX Basic y andanzas por el código simple de aquellos juguetes. Pero luego fue la beca, inicialmente un año programando con pascal para MS-DOS, pero después la música, los amigos de la farándula, la literatura. Me olvidé del ordenado desorden de la programación y me sumergí en el caos de la creación artística.

Varios años, varios exitos moderados, y al final de mi carrera (intrascendente sobre qué) una tesis sobre la optimización de paredes refracatarias, un programa que implicó la aplicación de complejos algoritmos, una aplicación que me recordó la facinación de programar, desde entonces la informática he regresado y me ha atormentado.

Pero no he podido olvidar mi pasado literario, y mi presente, que leer aun me facina, y por tanto no puedo evitar ver los paralelismos entre programar y escribir ficción, veamos:(No pienso llevar un paralelismo explícito los que programen que vean como les cuadra en su cotidianiendad.)

Cuando se escribe ficción, generalmente cuando ya se tiene algo de experiencia, lo mejor es plantear el “diseño” del relato, algo así como las metas a mediano plazo a las que se debe llegar, o como dice Thomas Mann en Doktor Faustus, refiriéndose a la manera de crear de Adrian Leverkuhn (en este caso música), que concebía la creación como una suceción de problemas.
Todos sabemos que los lenguajes de programación son lenguajes formales, es decir, lo que se quiere decir es lo que se dice, no hay ambiguedades ni contextos. Cuando intentamos escribir un relato, nuestras frases estan llenas de sentidos asumidos, que deben interpretarse debidamente gracias a los referentes que los lectores tenemos de nuestra cultura, por eso es que mientras más antigua sea una obra más notas al pie hay que leer. Pues bien, acercarnos a esa formalidad del lenguaje, a no necesitar referentes, o a necesitarlos lo menos posible, es lo que sería el santo grial de la literatura.
Un escritor está atado a reglas que intentan lograr lo de arriba, en general todas las técnicas literarias existen para que la experiencia lector-obra sea lo más íntima posible, aunque hay algunas para que lo sea lo menos posible, pero en definitiva cada escritor, por muy rebelde que sea, se amarra a unas reglas y en ese acotamiento debe crear y debe comunicarse con el lector.
Los escritores tenemos nuestros idolos, nuestras pautas, nuestros microsoft(aunque divido en las miles de editoriales que promueven la literatura fácil).
Cuando uno se inicia como escritor, escribe solo por inspiración y para la inspiración, con una idea inical generalmente débil y el unico placer que reconocemos es el de generar las palabras, sentir como se enlazan e incluso como forman ideas que nunca imaginamos, llega a ser bastante adictivo la verdad, pero cuando pasa el tiempo y nos damos cuenta que solo tenemos un inmenso portafolio lleno de ideas comenzadas y sin futuro, que nos hemos convertido en generadores de recortes… comenzamos a pensar antes de escribir, y los más dedicados logran armar el cuento o novela antes de escribir una letra y, luego, tenemos la libertad de movernos en los límites que hemos inmpuesto. Con el pasar del tiempo descubrimos que el “diseño” del relato es tan divertido como generar las palabras, o a veces más.
Quizás para muchos esto no es más que varias sandeces seguidas, pero les digo más, un cuento nunca termina, simplemente lo dejamos de arreglar, un programa nunca tiene una última versión. Los lectores siempre nos encontrarán defectos, siempre habrá quien nos idolatre, quien nos haga la guerra como amenaza para el software, para la moral, para la literatura, para el mundo empresarial. Quien llore junto a nuestras palabras, quien disfrute las nuevas facilidades de la ultima versión; siempre nos irritaremos por una crítica, nos desilusionará una alabanza. No admitiremos contribución ajena, odiaremos a quien no nos quizo ayudar, nos emocionará que un Alguien grande nos responda con una sugerencia o crítica a un trabajo o pregunta que le mandamos. O recibiremos un día la carta o correo electrónico o llamada telefónica que estábamos esperando, aunque no sabías quien la iba a hacer, o sobre qué iba a tratar, con la oferta que imaginamos será la que finalmente nos permita dedicarnos a hacer lo que más nos gusta, o recibiremos esa llamada, como la recibí yo cuando andaba por las lides de la creación literaria, y sentirán pena, porque ya la llamada que esperan cambió, ahora no debería ser una voz argentina diciendome que sí, fuiste adminitido en el Cardoso, ahora queremos otra cosa, no sabemos exactamente qué, pero sabemos soñar e imaginamos mil variantes de lo mismo, nosotros sentados frente a una computadora, programando en el mejor lenguaje y más poderoso, en un proyecto, el que sea, pero que nos emocione y facine, y de ser posible, que nos paguen bien.

Publicado en Literatura, Programación | 1 comentario

Java es gpl, pero y nosotros?

Publicado por caente en Noviembre 23, 2006

Cuando le hice el cuento de la liberación de java a un amigo, bastante pragmático él, me respondió con un demoledor: “Y a nosotros en que nos beneficia esto?”
Bueno, veamos.
Casi nadie de la inmensa mayoría de los que usamos java para ganarnos la vida nos meteremos a personalizar la jvm, o las bibliotecas, hasta hace poco el jdk igual era gratis y el jre se podía distribuir con nuestras aplicaciones sin ningún problema, entonces qué?
Cuando le respondí que por lo menos pondríamos descargar el jdk de otro lugar que no fuera la sun (hasta hoy no podemos desde acá en Cuba), tuve un:”Oye pero cuba no es el mundo, y siempre estará la mula”. Vaya tipo, obviamente con estos truenos hablarle de la necesidad de la libertad y esas cosas estaría de más, desafortunadamente la conexión se le cayó y no pudimos seguir conversando, entonces decidí reflexionar un poco por acá, un poco como a gritos, un poco como si escribiera ideas en una pared que muchos ven al pasar.
Con java libre puede ser que muchas empresas, individuos, asociaciones de individuos, modifiquen la maquina virtual y/o las bibliotecas para optimizarlas en algún nicho de problemas, puede ser que aumente la comunidad de usuarios para los que el hecho de que java sea libre es muy relevante, puede ser que los desarrolladores de las implementaciones libres se enriquezcan(hablo del conocimiento) del jdk y la jvm de la sun.
Pero todo esto, en definitiva va a ser a la larga, por tanto, qué nos importa a nosotros los programadores cotidianos, para los que lo que ya está hecho es todo un océano y que además no le dedicamos demasiado tiempo a java fuera del trabajo, y que el horario laboral es para programar con urgencia, pues no tenemos la suerte de estar en una empresa innovadora, qué nos importa a nosotros la inmensas potecialidades que implica la liberación de java.
Recuerden, estamos buscando razones técnicas:
Pues nada, luego de un rato pensando no se me ocurre ninguna buena razón para alegrarnos sinceramente de que java sea libre, y no importa, el hecho de que java sea gpl implica que salió del control de la sun, es decir, la palabra java es de ellos, la taza de café igual, pero eso no es tan importante, lo que importa es que la Sun no puede llavarse java a la tumba, lo importante es que ya pertence a todos nosotros, para bien o para mal, para forks o para pasividad. No creo que sea amor al lenguaje lo que hizo que Sun hiciera esta movida, ellos son una empresa y a las empresas lo que le interesa es ganar dinero, no asegurar la posteridad de un artilugio tecnológico, pero para nosotros sí, y me refiero incluso a aquellos que no les gusta java, incluso a aquellos que no les gusta programar. Java a pasado al conocimiento humano…
Buen discurso? puede ser, buen arrobamiento, incluso me lo creí yo mismo… así que java pasó ahora al conocimiento social solo porque le firmaron un papel que lo dice así? Qué diría el principito, que tontos somos los adultos no?
Java, c++ e incluso .net, hace rato que forman parte de ese conocimiento,cada lenguaje de programación, cada nueva metodología, forman parte inmediatamente del conocimiento humano, que unos idiotas le amarren un papel que limite su uso y que hoy todos nosotros nos dejemos guiar por ese papel es otra cosa, de todas formas somos un momento en la historia, pero las ideas de estos lenguajes son libres, y llegará un momento en que estas consideraciones de libertad legal solo servirán para explicar parte de las razones por las que una tecnología avanzó o se estancó.
Que a nadie se le ocurra mencionar las patentes por aquello de que las ideas son libres, las patentes son solo otro papel, y como tal sujeto a un momento histórico, en estas circunstancias esos papeles son válidos, pero ni los gobiernos son eternos ni la formas de las ideas son eternas.
No estoy pensando que java vaya a superar a nuestra forma de vida, no soy tan pretencioso, pero si que los avances o retrocesos que implica su existencia serán aprovechados por nosotros los humanos de alguna manera, y que los papeles que hoy la atan/liberan en realidad son superfluos.
Pero, pragmáticamente, alegrémonos de que java sea libre, alegrémonos de que podamos engañar un poquito a la historia y creamos en el cuento de los papeles, java es libre, pero nosotros no, estamos encerrados en nuestra forma de vida, no importa, con dos que se quieran con uno que sea libre basta ;)

Publicado en Java | Deja un Comentario »