El cierre de un círculo

Si bien han estado ausentes los post del blog en estos dos últimos meses, no ha sido porque piense que ya no es “cool” bloguear (como ha sucedido con muchos compañeros que lo tomaron como una moda), mas bien que en estos últimos meses me enfoqué en terminar un pendiente, terminar mi carrera de ingeniería. algo que inicié por tomarlo relajado desde hace tres años, pero que comenzó a atormentarme en este último año.

Todo empezó como una ilusión de primeros años de secundaria, convirtiendose en meta al al final. Era bonito todo eso de los videojuegos, saber que al final una consola es una computadora, entre otras ilusiones son las que llevan a uno a pensar estudiar una carrera relacionada con estos aparatejos digitales.  No lo vi tanto como una alternativa lucrativa ante la difícil situación del país, sino mas bien como desarrollar mis vagos y casi virginales conocimientos en este interesante campo.  El principal motivador: aquella exquisita sensación de sentirse dios frente a un computador, programarla, darle algo de vida a algo inanimado. crear reglas y deshacerlas, crear mi mundo e interactuar con este.

Finalizando secundaria estaba decidido, la USAC, una universidad pública, no por que fuera la mejor (aunque hay mucho alarde al respecto), sino por ser “libre” y gratuita, entrecomillando lo libre por los exámenes de admisión.  Ingeniería era la facultad, Ciencias y Sistemas era la carrera.   Ganar bien los exámenes de ubicación me exoneró de ciertos exámenes de admisión, lo que contrastó con mis primeros dos semestres (o primer año), los cuales fueron un total fiasco, ganando en el primer año tan solo 3 cursos (de aprox 10), la mayoría del área social, y ninguno de ciencias puras y sabrosas.  A esto quisiera culpar un poco a mi irresponsabilidad  debido al consumo excesivo de videojuegos durante el primer año (te veo de reojo Chrono Cross), y a otras situaciones interpersonales al ocasionados por el choque entre un reciensalido-de-la-pubertad estudiante de Ingeniería y una virginal adolescente de 15 años del instituto colindante.  Paralelo a esto, también tuve mi primer encuentro con EL METAL.

El segundo año ya fue mejor, logre aprobar mis primeras matemáticas, un curso de física, otro de química y algunas otras asignaturas que no les tomé mucho interés. Mi consumo de videojuegos, y Metal lograban balancear perfectamente la situación “del corazón/genitales” y el estudio.  Las matemáticas ya cobraban sentido, aquel ganchito raro ya sabia que se llamaba integral, y la ciencia pura comenzaba a producirme cierta obsesión placentera. y sobre todo, logré mantener mi acostumbrado bajo perfil.

La aventura comenzaba a hacerse divertida durante el tercer año, pues, con un año académico desfasado de los de mi “promocion” ( o al menos del ideal), comenzó mi camino por cursos de ciencia computacional y monkey coding.   Supe por primera vez lo que era programar miles de lineas de código, contra el reloj.  el placer de sacrificar features por bugfixes, y  contínuo debugging en un lenguaje C bastante fuera del estándar del que me había preparado, todo era alegria y gozo, hacia lo que me gustaba, y creo que lo hacía bien. Mi rebeldía contra el “establishment” comenzaba a salir, sobre todo al respecto de editores, IDES, compiladores, y paradigmas.  sobreutilicé técnicas orientadas a objetos en código que no necesitaba tales cosas, con tal de simplificarme la abstracción. Esto contribuyó a que me bautizaran con mi apodo y el apodo de este blog, y que la gente me conociera más con ese que con mi nombre real.

Cuarto año de universidad, 2006, quizás fue la de mayor aprendizaje, no solo a nivel academico, en donde resaltaría el placer exquisito por los compiladores, los circuitos digitales y el lenguaje ensamblador, sino también a nivel personal, el desamor me invade, y mi mente comienza a encontrar refugio en el alcohol, y como consecuencia, la necesidad imperante de tener más dinero de los dos quetzales diarios de mi pasaje.  Sin embargo todavía sobreviví como méndigo de cerveza durante ese tiempo con los compañeros, y aun logre ganar los cursos en el que muchos dicen que es el segmento más complicado de la carrera… uff que alivio.

Durante el quinto año que estuve en la universidad, llevando cursos de 6to, 7mo y quizas alguno de octavo, intentando matar demonios mentales comienza mi decadencia academica.  Los cursos que me interesan se terminan uno a uno… y en cambio comienzan cursos más aburridos, tal contraste como cambiar Compiladores por Investigación de Operaciones o Estructuras de Datos por Analisis y Diseño… un total asco, todo se tornaba para peor, llegaba a aburrirme y a burlarme de los ingenieros mediocres casi siempre, pero en fin, tenia que salir y ganar todos esos cursos feos.   Lo mejor que podría resaltar fue mi primer encuentro con una comunidad de locos como yo, que gustaban de usar el software libre… Contrastando con lo peor, que fue la pérdida de mis dos incisivos superiores a causa del excesivo uso del alcohol y de la delincuencia en mi amado país…  Afortunadamente fue durante los diez días de empezar mi primer trabajo como desarrollador.  Casi no disfrute mis primeros sueldos pagando mis dientecitos.  Lección aprendida, me sigo embriagando pero con mas cautela.

Sexto año,  Las sombras del pasado continuan taladrando la mente, en donde el único refugio es la cerveza y el Heavy Metal.  Ya con trabajo ya no dedicaba tiempo para estudiar, y el interés por seguir la carrera estaba en su mínimo, pero ya faltaba poco para terminar la carrera, llevando cursos de 7mo y 8vo semestre, debía terminarla o morir en el intento.  Año difícil académicamente pero salió adelante, ya no me importaba salir a tiempo, lo que queria era salir, aunquesea a paso de tortuga.

Durante el séptimo año, al fin pude decir adiós a todos esos cursos feos de administracion gerencial e ingenieria de software.  Mayor decepción fue ver que el último curso de ciencia computacional que pensé disfrutaría, terminaría siendo más curso de superación personal que de inteligencia artificial… El Metal me seguía dando la paz mental necesaria como fue desde el inicio de la carrera,  hasta que al fin! se acabó.  Había terminado todos los cursos… excepto uno Maldición y Simulación 2.

Durante el octavo año en mi estancia por el sagrado edificio T3.  ya ni lo conte, no me interesó meterme a llevar un curso que detesto una vez mas durante todo un semestre, mejor decidi esperar a que la aleatoriedad me favoreciera y abrieran el curso en los muy convenientes cursos de vacaciones de junio (o interciclos como le dicen en algunas universidades mariconas)… Esa era la oportunidad y fue un sacrificio soportar al mediocre ingeniero durante ese mes. pero al finalizarlo exitosamente dije:  mision cumplida. pero aun no completada… faltaba el examen privado y la tesis que ya llevaba un año de postergada debido a mi dejadez y falta de asesor.  Fue buen año de reiniciar cuestiones personales ademas, saliendo exitoso de mis conflictos mentales y encontrando la paz mental en la que hasta la fecha es la perfecta compañía.

Durante el noveno año, decían que había que prepararse para el examen privado, estudiar durante 3 meses dia y noche como si nunca hubiera llevado la carrera.  Decidi ignorar ese “approach” y no estudie NADA, tomé la filosofía de “Si gano, es por que aprendí algo, sino aprendi nada, merezco perder y ser un mediocre”. Todo salió bien, aunque el examen no fue como lo describían los paranóicos, siempre tuvo su dificultad y requirió su esfuerzo durante el tiempo que se realizó. Exámen aprobado exitosamente y de premio me regalé un viaje al Wacken Open Air, a agradecer a los dioses del Metal la existencia de ese Heavy Metal que me acompañó durante la carrera, con miras  para terminar el siguiente año la tesis pendiente ya con dos años de atraso.

Décimo año, tocaría conseguir asesor, terminar la tesis y graduarme. Fue algo tormentoso ver como todos se graduaban y yo seguía en las mismas, pero me tranquilizaba que ya tenia mi plan hecho.   Fue fatídico que me aceptaran mi tema de tesis nuevamente, dado que llevaba tres años de antigüedad, afortunadamente el revisor de tesis se porto bien, me la acepto, terminé el capítulo faltante, afiné detalles junto con mi flamante asesor (al cual le agradezco su tiempo), y despues de un montón de odiosos trámites, la graduación, y el alivio…  Un viernes cualquiera ya era ingeniero, aunque al final me sentía igual que cuando no lo era.  quizás alargué mucho la carrera como para sentir algo especial al terminarla.

En fin aunque la carrera ya esta muy desgastada (y lamentablemente sigue desgastándose) siempre es bonito lograr metas, estoy contento de haber logrado esta, con un esfuerzo moderado y sin estresarme mucho. Aprendí, me divertí, y sobre todo conocí y compartí con mucha gente, que no solo me ayudaron en muchos casos, sino ademas forjaron la profesionalización de manera positiva (y con algunos otros contraejemplos).  Gracias Universidad de San Carlos de Guatemala, buenos catedráticos y Pueblo de Guatemala por mantenerme estos 9 años y fracción… ahora tocará devolverles lo que me dieron.

Id y enseñad a todos.

Cantinfleando…

Erase una vez una tarde de Sábado, en la cual la energia eléctrica dejó de fluir por un momento a travez de los circuitos de mi ordenador, efectivamente se habia ido la luz como se le dice vulgarmente, y, dado que las circunstancias me han convertido en un ser dependiente del flujo de electrones, me quede sin algo productivo que hacer, en las penumbras recorde que aún tenía carga en mi reproductor Titan (coloquialmente llamado iTan, barato y fiel amigo por año y medio) de quinta categoria, Lo encendí a ver que escuchaba… y dado que todo el dia la habia pasado escuchando heavy, tal como lo hago todos los dias, queria escuchar algo diferente… mis opciones era o sintonizar las radios reguetoneras, que invaden el espectro de radiofrecuencias del país, lo cual obviamente no era opcion, o revisar si habia algo mejor en ese pequeño aparato…

Cual fue mi sorpresa de encontrarme de nuevo con unas grabaciones de voz que habia realizado hace ya mas de un año y que daba por perdidas, dichas grabaciones testificaban de una manera elocuente la frustración de un alumno desesperado quien por recibir una buena charla acerca de tecnologías de telecomunicación en un curso relacionado con el tema,  recibió en cambio, una charla graciosa en los primeros 5 minutos por su contenido “Sientifico”, y bastante desesperante por lo mismo, luego de ese lapso de tiempo. Dicho todo esto, al regresar el flujo eléctrico por la circuiteria de su ordenador, decidió dar a conocer a la humanidad el nivel de cátedra de curso por medio de la grabacion anteriormente mencionada… y esto fue lo que escucho…

NOTA: Favor escuchar el sig, video si y sólo si se esta preparado para recibir un bombardeo de informacion en 10 minutos magistrales…

PD. El autor se reserva el nombre del curso (aunque es obvio por el contexto del sig video), el período en el que fue dado, y el catedrático (¿?), pero seguro quienes han recibido clases con él sabran de quien se trata.

Los ánimos sistemicos…

Sin afán de hacerle competencia al Failblog.org, y sin tener ganas de escribir mucho, revisando fotos viejas en mi celular, recorde que habia tomado una a los famosos “ranchitos” de la facultad de Ingenieria USAC, el cual tiene el siguiente mensaje de optimismo que dice asi:

Mensaje optimista en los ranchitos

Mensaje optimista en los ranchitoss

– Vamos a Pizar

– Semana (22-28) 220809 Maldita!! [tridente]

Seguramente quien escribio ese mensaje le estaban calificando Compiladores 2 …

Mis proyectos de sistemas en la USAC parte VI: Compiladores 1…

Que ironía, se me olvidó colocar el curso que auxilio en la universidad,  Introducción a los lenguajes y Compiladores 1.  Y si lenguajes era introductorio a éste, éste a su vez, es introductorio a la yuca de Compiladores 2 como lo describí anteriormente.  Lamentablemente, como tanto el auxiliar de ese curso, como el ingeniero, no sabian ni rosca, me tocó a mi estudiar por mi cuenta, mas por mi gusto que por ganarlo. y así fue. a continuación publico los únicos 2 proyectos que se realizaron.

1. Strim.

Un proyecto que la verdad, estaba bastante fácil, se trataba de un simple “concatenador” y “repetidor” de cadenas. el cual la mayor complicación era ponerse de acuerdo con el auxiliar para saber qué era lo que querían.  Desarrollado en C usando Flex y Bison, recuerdo cómo los demás compañeros aún no usaban la característica de atributos sintetizados, haciendoles más dificil la elaboración del mismo. El codigo esta en:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/COMPI1-proy1-strim/ strim

2. Godzilla.

Bueno, aquí las cosas se empezaron a complicar, me rifaba entre hacer bien éste proyecto y dejar mediocre el de estructuras que estaba haciendo paralelamente… y así fue, me enfoqué más en este proyecto, el que consistía en un mini motor de un subconjunto de PHP, además que debía renderizar el HTML generado.  Desarrollado también en C++ usando QT 3 como framework, y Flex y Bison para el analizador léxico y sintáctico respectivamente, y enfocado desde su concepción a ser compilable y ejecutable tanto en Windows como en Unix.  Recuerdo aún que la mayor complicación de éste era el desarrollo de los ciclos, el cual, con un poco de autoaprendizaje de representaciones intermedias y árboles de sintaxis abstractas,  se simplificó y optimizó bastante la implementación de dicho lenguaje.  El código esta en:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/COMPI1-proy2-godzilla/ godzilla

Bueno, eso fue compiladores 1, con un primer proyecto trivial, y el segundo no trivial… bastante parecido al semestre actual (enero-junio 2009) en este sentido. Un curso en el cual conocí la Biblia de los compiladores, el magnífico Libro del Dragón, y una introducción a lo que para muchos se convertiría en su peor pesadilla.

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows

Mis proyectos de sistemas en la USAC parte V: Compiladores 2…

Y luego de la trabada que fue Compiladores 1, Estructuras de Datos, y Organización Computacional.  se deja venir el 6to semestre con muchas más trabadas, solo que ésta vez exponenciales… y no tanto por los cursos de sistemas, sino tambien por Investigación de Operaciones… un curso en donde el que sepa llevar la subjetividad de Vinicio Monzón, el ingeniero que dá el curso, hasta en su auxiliar se puede convertir (sino vean a Patricio AKA César Rojas), pero bueno, ya mucho hablar de basura, y vamos a lo que me incumbe, publicar los proyectos del que, para muchos, es el curso más difícil de la carrera (aunque a mi me haya costado mas la investigacion de operaciones), no tanto por su contenido teórico, sino por la extensión y dificultad de sus proyectos de programación. Me refiero a Organización de Lenguajes y Compiladores 2.   Se realizaron 2 proyectos en este curso cuando lo lleve ya hace algunos años, los cuales son:

1. VMW:

Un proyecto de supuesta máquina virtual, el nombre haciendo alución al VMWare y a los autos BMW., que consiste en un generador de analizadores léxicos, junto con un generador de analizadores LALR que además debe evaluar código embebido, en un lenguaje parecido a php, el cual a la vez teníamos que interpretar con un parser hecho por nosotros mismos también, todo esto obviamente en el lenguaje JAVA con el cual la escuela de sistemas se matrimonió desde el 2006… la verdad considero que fue el proyecto más trabajoso de la carrera (dado que el que más me costó fue el 2do de estructuras, el de los grafos), y eso que fue trabajado en parejas (con mr. chucho, el cual se dedico solamente al módulo de generación de analizadores léxicos, y la GUI, de los cuales el codigo no esta disponible por sus licencias restrictivas).  Bueno, el proyecto fue publicado previamente en este blog, y está mejor descrito en el siguiente URL, desde donde se puede bajar tambien:

https://objektblog.wordpress.com/2007/07/10/proyecto-generador-de-analizadores-lalr-en-java/

2.  EvilGCC

Supuestamente las siglas significaban Erik’s Visual Intermediate Language Generator and Compiler Collection (todavia me acuerdo), y consistia en un compilador básico de 3 lenguajes de programación (Java, C++, y Pascal) a código de 3 direcciones, aunque en realidad soportaba un subconjunto muy reducido de las construcciones de éstos.  También hecho en Java bajo NetBeans.  De lo que más me acuerdo es lo asustado que estaba respecto a que también debíamos implementar un optimizador del código de 3 direcciones generado, y que al final, era la parte más facil del proyecto, haciendo verdadero el dicho que dice El que se ahueva pierda…  El código esta aquí

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/java/COMPI2-PROY2-evilgcc/

Bueno, este fue el curso por los que muchos compañeros se han ido de la carrera, otros han intentado olvidar en el alcohol los traumas psicológicos que le ocasionó tanta gramática…  La verdad el mayor problema que vi yo fue el maldito JLex y Cup… habiendo tantos generadores de analizadores… por qué teniamos que usar lo peor?

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows

Mis proyectos de sistemas en la USAC parte IV: Lenguajes Formales…

Se me olvidaba un curso de 4to semestre, paralelo a IPC2, uno de los que enseñan lo que es desvelarse echando punta, Lenguajes formales, impartido por el mismísimo Satán.  Era un curso introductorio a Compiladores, y por lo tanto, a nivel de éstos en cuanto a extensión y dificultad en sus proyectos, aunque con menor magnitud obviamente…  Aquí se realizaban 3 proyectos, los cuales se enfocaban en usar 3 diferentes lenguajes para comprobar 3 diferentes paradigmas supuestamente.

1. StaticS:

Éste realizaba cálculos de estadística descriptiva, leyendo un archivo de texto en donde estaba los datos, y sacándolos en un bonito HTML Éste proyecto fue desarrollado en otro lenguaje que destesto,  Pascal;  Quérian obligarme tal y como lo hicieron en IPC 1 a usar el Turbo Pascal, pero no pudieron, mi subversión me llevó a programarlo en Linux usando Free Pascal, un compilador libre y gratuito de Pascal, que tenía muchas más características que el raquítico compilador de Borland. El proyecto se encuentra aqui:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/pascal/LFP-proy1-StaticS/ statics

2. O-tell-O

Era el primer proyecto de la U que desarrollaba en Java, y como subversivo en cuanto a compiladores, lo desarollé en Netbeans mientras la mayoría prefería usar el Borland JBuilder (Cual era las gana de usar herramientas de Borland me pregunto yo?) ,  Éste proyecto no era más que el jueguito de otello, reversi, o como le quieran llamar, obviamente sin IA ni nada de eso, dado que no daba tiempo para implementarlo.  A continuación el código:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/java/LFP-proy2-OTELLO/ otello

3. Conjuntivity:

El primer proyecto en el que tuve contacto con un parser verdadero, que tuve que desarrollar a pata con la poca teoria que tenía de parsers recursivos descendentes.  La verdad fue el que me hizo crecer mi expectación por los compiladores, a pesar de ser desarrollado en otro lenguaje que destesto, el Visual Basic .NET. Obviamente, aqui no pude ser tan subversivo, pues para esa época no me quería arriesgar a desarrollarlo en Mono por cuestion de tiempo. no quedó de otra que echar mano del Visual Studio .NET 2002 (el mas buggy de todos) y desarrollarlo.  La solución se encuentra aquí:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/vb.net/LFP-proy3-Conjuntivity/ conjuntivity

Esos fueron los proyectos de Lenguajes, en los próximos posts estaré de regreso en el 5to semestre, publicando los de Compiladores 1…

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows

Mis proyectos de sistemas en la USAC parte II: Progra 2…

Bueno, luego del exitoso post anterior (de donde jodidos), tambien he publicado los proyectos desarrollados en el curso de Introducción a la Programación 2… en un semestre donde se comenzaban a complicar las cosas pues habia que llevar varios cursos no triviales como Fisica 2 o Lenguajes formales.  La progra 2 de aquellos tiempos era un poco diferente a la de ahora, pues antes se daba solamente temas de persistencia en archivos, OOP,   Memoria dinámica (punteros, listas y todo eso), un poco de análisis y diseño (unico tema que persistió en la progra 2 de ahora), y conceptos básicos de redes… y lo que se programaba se hacia en C ++.

Y aunque seguían con su necedad de obligarnos a programar en el asquerosisimo borland C++, me importó un comino y empecé a hacerlo en un compilador mucho más superior y que cumple estándares… GCC, desarrollandolos dentro de algo que es más que un IDE… EMACS, y sobre un sistema operativo tambien superior, Linux. además que daba primera vez uso de un sistema básico de versionamiento, el CVS.  Y para cuando tenian que calificarmelo en windows que hacia? pues como los proyectos eran básicamente en consola, no me costo mucho portarlos a Windows usando el compilador MingW.  Bueno, a continuación un trio de proyectos inútiles cuya única finalidad era didáctica (bueno, quiza tambien tenia de finalidad trabarnos, pero al menos no lo lograron conmigo):

1. FIRST (FIfa Rating SysTem)

Continúan los nombres estúpidos, para un proyecto tambien estúpido, supuestamente era un calculador de posiciones y punteos para torneos de la FIFA,  lo más difícil era entenderle bien la ambiguedad del enunciado que la mera programación en sí.  Éste proyecto tenía que hacer uso de archivos no recuerdo para qué, pero lo que si recuerdo es que sacaba estadísticas.

svn checkout  http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/IPC2-proy1/ first

2. MOTHELL:

Este supuestamente era una administración de hoteleria o algo así, en donde se debía poner en práctica los conceptos de OOP que supuestamente habian enseñado.  Tiene estructura parecida al anterior, pues fue hecho por el mismo mortal con las mismas herramientas… ahh, e incluye su Makefile para una facil compilacion.

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/IPC2-proy2/src/ mothell

3.  Libra:

El último y más trabajoso proyecto (aunque la verdad estaba bastante facil) que consiste en Mantenimientos para libros de una biblioteca, administrando también préstamos y todo es en colas. En éste se tendría que utilizar ya estructuras de memoria dinámicas como pilas, listas y colas, y además, usar full OOP.  Aqui empezaba a meter mano a los TDAs, además de usar la característica de Templates de C++ para no andar reescribiendo un TDA para cada tipo de dato. Compila bajo GCC e incluye makefile tambien.

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/IPC2-proy3/ libra

Bueno, esto fue IPC2, un curso “comodín” en donde metían cualquier tema que les diera la gana dar.  con proyectos que quizá eran los más fáciles de la carrera media vez se dominara de antemano la OOP (algo dificil para la mayoria, dado que se aprendia en progra 1 en el paradigma top down)…

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows