Mostrando entradas con la etiqueta aprendizaje. Mostrar todas las entradas
Mostrando entradas con la etiqueta aprendizaje. Mostrar todas las entradas

lunes, 1 de enero de 2018

Primera entrada del 2018

Hoy es 1ro de Enero y comienza un nuevo año. Como cada año, es interesante y divertido verse en el espejo y plantearse ciertas metas para el año que comienza. Apartando los deseos típicos de salud, felicidad y prosperidad, hay muchas cosas que podemos trabajar para alcanzar y que podemos intentar definir más concretamente. Hoy, quisiera compartir algunas de las metas que tengo para este año 2018.

Set course for an awesome 2018... Engage!

La primera y principal meta es la más abstracta: procurar continuar aprendiendo, creciendo, mejorando, siendo fiel a mi mismo y a todas las personas que me rodean. Estos últimos años los he visto llenarse de una cantidad abrumadora, y siempre creciente, de éxitos y buenas experiencias. He sentido mucho cariño y mucho apoyo, y he crecido muchísimo como persona (a sabiendas que aún me falta muchísimo más por crecer y aprender). Como mi primera y más importante meta está el seguir con la actitud positiva ante la vida, agradeciendo siempre cada cosa genial e intentando regresar toda esa felicidad al mundo, con intereses.

De forma un tanto más concreta, entre muchas otras, éstas son algunas de mis metas para el 2018:

  • Volver a entrenar equipos para los maratones de programación ACM-ICPC (en especial a quienes se los debo desde el año pasado y que no fue posible por diferentes razones).
  • Preparar mucho más material de apoyo para las materias que dicto, de tal forma de dejar un banco mucho mayor de información y de recursos para que la gente aprenda y salga mejor. Una meta que tengo es comenzar a crear versiones grabadas de las clases (no grabado de una clase presencial, sino más bien diseñado especialmente para ese formato).
  • Aprender mucho más sobre el lado pragmático de mi carrera, de la verdadera ingeniería/arquitectura de software. Es algo que he dejado olvidado en mis años de vida puramente académica y es un conocimiento sumamente útil, interesante e importante.
  • Retomar la escritura, uno de mis pasatiempos favoritos por mucho. En particular, tengo como meta completar una novela que tengo guardada en mi mente desde hace años: Dualidad. A finales del 2016 e inicios del 2017 comencé a escribirla e incluso avancé considerablemente (aunque no tanto como hubiera querido). Me gustaría retomar ese proyecto, pero reiniciado con una perspectiva diferente y un poco más experimentada (con el tiempo uno lee más, escribe más y se va moldeando la identidad creativa).
  • Continuar compartiendo en eventos nacionales e internacionales, conociendo a muchas nuevas personas y esparciendo el amor por nuestra bonita carrera: la computación. Eventos como los maratones de programación, las JOINCIC, la EVI, los coloquios y demás que permiten un intercambio increíble de ideas y experiencias. Honestamente, asistir a estos eventos son de mis cosas favoritas en el año.
Quizá no suene muy ambicioso, pero son metas que sé que puedo lograr con trabajo, esfuerzo y buena disposición. Por supuesto, hay muchas otras cosas que quiero lograr pero creo que es importante saber distinguir entre los deseos y las metas, entre lo abstracto y lo concreto. Todos deseamos estar sanos, ser felices, ser amados, tener solvencia económica y buena reputación, pero es es algo que viene con el tiempo y que es producto de lo que hacemos y lo que nos proponemos. Es imposible proponerse ser feliz, pero si podemos hacer cosas que nos hagan felices en el proceso.

Y esto era lo que quería compartir hoy, primera entrada del 2018, ansioso por enfrentar todas las aventuras, sorpresas y alegrías que este nuevo año trae consigo. ¡Gracias por leer y feliz año 2018! Hasta una próxima entrada. Bytes. :)

domingo, 10 de diciembre de 2017

Don't Panic!

A la hora de programar, uno de los errores más comunes en los que se puede caer es el de rendirse prematuramente y entrar en pánico: relegar el funcionamiento de nuestras ideas a la suerte y cambiar pequeñas cosas progresivamente, en intentos mecánicos y poco planificados, con la esperanza de que esa "magia oscura" que reina sobre los programas, finalmente comprenda lo que queremos decirle y la computadora haga lo que debe.

Hmm, súmale uno...
Bueno, no, réstale uno...
¿Y si cambiamos el menor por menor o igual?
¿...o mejor por mayor o igual?
¿...o mejor por un no igual?

Una vez aceptamos la verdad, resolver cualquier problema se hace mucho más sencillo y natural. El secreto es elemental y, sin embargo, completamente elusivo en nuestros primeros años como programadores: no hay tal cosa como la magia oscura. Todo lo que un programa hace es consecuencia lógica de aquello que escribimos, con reglas bien establecidas y concretas que podemos seguir meticulosamente, si tenemos la disposición y la paciencia para hacerlo.

Por esto, la mejor metodología a seguir cuando se programa es la de planificar antes de echar la primera línea de código, entender lo que se está haciendo e investigar cuando hayan dudas. En resumen: no entrar en pánico. Incluso las tecnologías que podrían parecer más extrañas se fundamentan en ideas y reglas básicas que pueden entenderse con calma y detenimiento.

En una época en la que la información es completamente ubicua, no tiene sentido estancarse al intentar entender un problema. Con tanta gente que programa, ha de haber al menos otra persona que se ha topado con un problema similar. ¡Ojo! Esto no quiere decir que en internet estará la solución exacta al problema, ni que se resolverá con un simple copy+paste (no suele funcionar así e, incluso si funcionara, de nada sirve arreglar un problema si no se entiende cómo se arregló, pues nos estamos condenando a repetirnos y a caer en los mismos problemas).

Una de las mayores fortalezas que puede desarrollar un programador es el reconocimiento de patrones. Y no me refiero a la técnica relativa al aprendizaje de máquina, sino a reconocer patrones en lo que hacemos y saber aprovechar esos patrones para ayudarnos a hacer nuestro trabajo. Muchas veces, las ideas se repiten y son aplicables a una gran cantidad de tecnologías y aplicaciones. Por eso, debe ser prioridad de cualquier programador aprender todo lo que pueda, sobre todo lo que pueda. Cuanto más experiencia tengamos, más fácil será reconocer patrones en las herramientas que usamos y los problemas que resolvemos.

Aunque parezca material de charla motivacional, el trasfondo es muy cierto e importante. He visto pasar mucho que la gente se hunde en sus propias inseguridades, temerosos de detenerse, pensar, entender y actuar. No me considero alguien particularmente brillante o talentoso, pero en la medida de lo posible intento no entrar en pánico. Todo problema que surge en nuestras vidas como programadores tiene una explicación y, en la mayoría de los casos, la solución está en nosotros mismos; sólo hace falta ser perseverantes, investigar y no conformarse con resolver sin entender lo que estamos haciendo. Con el tiempo, los patrones se harán evidentes y podremos resolver más y más problemas. ¡Es un ciclo de aprendizaje que crece y se realimenta a si mismo! Y todo comienza con no entrar en pánico. :)

Gracias por leer, hasta una próxima entrada. :D

sábado, 9 de septiembre de 2017

La formalidad

Todos los que me conocen bien saben que soy alérgico a las formalidades sociales que se imponen al lenguaje, la vestimenta y a el trato en general. Soy fiel creyente de que el respeto se gana con amistad, confianza y humildad, no con intimidación o distancia. No digo que toda expresión de formalidad sea negativa, pues existen personas que disfrutan de ser formales y lo han adoptado a su personalidad. Pero, para quienes no estamos en esa misma onda, las expectativas comunes son absolutamente innecesarias.

Ola, ke ase?

El lenguaje es una construcción completa muy rica, versátil y útil. El surgimiento de frases con mayor o menor grado de formalidad es común en una gran cantidad de lenguas (con orígenes diferentes), por lo que es natural pensar que clasificar a las personas y dirigirse a ellas de forma distinta, dependiendo de su clasificación, es algo instintivo de la especie humana. Sin embargo, en especial en el Castellano, las frases formales suelen ser mucho más largas, secas y carentes de emotividad. Mucho de la comunicación se pierde en el proceso. Frases como "Ante todo reciba usted un cordial saludo" son aburridas e impersonales. Mucho mejor es "¡Hola! ¿Cómo has estado?". En vez de decir que se envía un saludo cordial, ¿no es mejor enviar el saludo cordial directamente?

Me gusta creer que la gran mayoría de las personas que conozco son gente buena vibra, con quienes puede haber uno o más puntos que haga nacer amistades. ¿Y qué es un amigo sino una casualidad de tiempo y espacio? Todo el mundo tiene cosas geniales que compartir, si se está dispuesto a verlas y a compartirse uno mismo a cambio. Parte de esta filosofía, es que me niego a llamar a la gente por su título (ingeniero, licenciado, doctor, etc.), profesión (profesor, director, etc.) o incluso su apellido. Sólo llamo a las personas por algo distinto a su nombre cuando explícitamente me piden hacerlo y se convierten en excepciones a la regla. Además, muy rara vez "ustedeo" a las personas. Sólo lo hago cuando recién conozco a una persona, veo es de carácter tradicionalista y que, de no comenzar el contacto formalmente, podría verse confundida por el exceso de "confianza" de buenas primeras. Pero, a las pocas interacciones, no hay a quien no le hable de "tú" y por primer nombre, sean profesores, jefes, celebridades o cualquier otra persona.

Una parte importante de mi personalidad, aunque no suelo hacer énfasis en ello, es mi forma de vestir. Si me han visto regularmente, sabrán que mi elección usual de vestimenta es jeans y una franela, junto con una camisa manga corta encima. Esto lo hago de forma completamente intencional y consciente. No sólo me gusta en apariencia, sino que envía un mensaje importante: apertura. Soy una persona muy abierta a establecer nuevos contactos, a discutir nuevas ideas y a emprender nuevos proyectos; y no me considero más ni menos por hacerlo. Me gusta vestir de forma sencilla, alineado con como soy y mostrando al mundo que estoy abierto a recibirlo. ¿Siempre me visto así? Claro que no. Hay salvadas ocasiones que merecen la camisa manga larga cerrada y los pantalones de vestir (fiestas elegantes o cenas especiales) y en tales ocasiones elegantes, me gusta vestir elegantemente. Sin embargo, en mi día a día, prefiero mi propio estilo: sencillo, abierto y lo mejor combinado posible.

¿Por qué decido escribir sobre esto? Este blog lo abrí como un desahogo, cuando estaba en las etapas finales de mi tesis de maestría y no podía con la enorme presión que el trabajo me ponía. Desde ese entonces, sigo usando este blog como un desahogo: una especie de "diario público". Agradezco mucho a quienes se han tomado el tiempo de leerlo, pero es cierto que mucho de lo que escribo no son más que desahogos de la vida cotidiana. Escribo hoy esta entrada, para recordarme a mí mismo quién soy. Hace no mucho casi permito que alguien cambiara mi forma de ser completamente, pero finalmente el destino no quiso que tal transformación se llevara a cabo. Por difícil que fuera, debo agradecer a la vida y al destino por recordarme quién soy y todo lo que puedo lograr creyendo en lo que soy (es cursi, pero es cierto).

Éste ha sido sin duda uno de los años más exitosos de mi carrera, repleto de nuevas experiencias, contactos y oportunidades. Logré llegar a donde estoy siendo fiel a mi mismo, a mis creencias y a mis principios. Estoy muy feliz de haberme dado cuenta a tiempo, aunque tal realización fuera forzada y abrupta. Y bueno, esto es lo que quería compartir por ahora. Si estás entre los que lee estas locuras ocasionales, ¡gracias por la compañía digital! Hasta la próxima entrada. :)

miércoles, 6 de septiembre de 2017

Se solicita un giratiempos

Tenía muchísimo tiempo sin escribir en este blog. De hecho, creo que es la primera publicación del año y es que este 2017 ha sido un año bastante movido, repleto de trabajo, experiencias, éxitos y fracasos. ¡Ha sido toda una aventura!

Uno de estos por favor y gracias. :)

Hoy escribo porque busco quien pueda prestarme un giratiempo en buen estado (de los que aparecen en los libros de Harry Potter - pero no un juguete, sino uno de verdad). Es abrumadora la cantidad de cosas y proyectos que tengo en mente y que, agregado a la enorme cantidad de cosas que ya hago, se convierte en algo muy ambicoso. ¡Pero no con un giratiempos! xD Seguramente no soy el único, pero me identifiqué completamente con Hermione cuando quiso asistir a más cursos de los que hubiera podido, ya que soy así. Confieso que en mis estudios de pregrado y postgrado vi créditos de más e incluso entré a varias materias como oyente. La verdad, me encanta aprender y compartir.

¡Y lo que hago me encanta! Me siento sumamente dichoso de estar donde estoy y de todas las personas con las que he compartido éste año. En particular, en lo profesional ha sido uno de los años más exitoso de mi carrera y, sin duda, uno de los más emocionantes. Y aún así tengo muchos más proyectos y objetivos en mente.

Como un ejercicio mental, quisiera aprovechar este espacio para presentarlos. ¿Qué cosas me gustaría hacer?

  • Escribir libros sobre temas que conozco, para compartir mi corta experiencia con el mundo y colaborar con el registro del conocimiento de la humanidad.
  • Escribir libros de ficción, dejando fluir esa vena artística que siempre ha estado latente. Tengo algunos trabajos a medio lograr (o mucho menos incluso), pero quisiera poder dedicar mucho más tiempo a esto.
  • Crear videos que sean públicamente disponibles, con los temas que manejo de computación. Eso podría servir para apoyar los cursos en la universidad y para extender la audiencia, para que más personas puedan aprovecharlos e incluso mejorarlos.
  • Retomar los cómics que hacía hace un tiempo. No hay nada tan bonito como regalar una sonrisa a una persona que ni siquiera está al lado tuyo. Intentar dar felicidad al mundo, aunque sea con algunos chistes gallos, siempre me llenó de dicha.
  • ¡Leer más! Por falta de tiempo no he leído tanto como he querido últimamente. Solía leer un par de libros al mes y, lamentablemente, eso ya no se cumple.
  • Hacer cursos en muchísimas disciplinas, de computación, de física, de matemáticas, de filosofía, de todo lo interesante y fascinante que el mundo provee.
  • Aprender y practicar idiomas. Hablo de forma casi nativa el Inglés (ya que viví en Estados Unidos cuando era niño), pero no es suficiente. El mundo está lleno de gente fascinante y mientras más idiomas uno sepa, más oportunidades tiene de compartir ese mundo. Hace un tiempo aprendí las bases de Portugués (completé el árbol de Duolingo), pero fue a un nivel tan básico que aún no lo considero aprendido como tal.
  • Aprender mucho más sobre el lado industrial de mi carrera: de desarrollo, arquitectura de software, herramientas modernas, etc. Este objetivo lo he ido logrando poco a poco, especialmente durante este año, pero aún me queda muchísimo por aprender.
  • Involucrar a muchas más personas y universidades del país en los maratones de programación. Esparcir la pasión por nuestra carrera, por aprender y por ser cada día mejores.
  • Viajar y conocer el mundo, sus personajes, sus paisajes y sus enseñanzas.
¡Y hay mucho más! Esto es tan sólo una pequeña muestra de una lista que crece con cada día que pasa. Entonces, ¿alguien tiene ese giratiempo para que me lo preste? xD Gracias por leer, hasta una próxima entrada. :)

viernes, 24 de junio de 2016

El camino del bien

Una de las materias que doy en la USB es Lenguajes de Programación I, en donde se discuten las diferentes características de un lenguaje de programación de forma tanto general (conceptos abstractos) como específica (ejemplos concretos con lenguajes existentes). Es una materia sumamente entretenida, tanto de impartir como de escuchar, y es central al conocimiento de todo buen profesional de la computación.

¡El poderoso camino del bien! :D

Esta ya es la tercera vez que he dado esta materia, con una separación de 2 años entre cada ocasión. La última vez, fue en Enero del 2014. Ese trimestre, como muchos recordamos, fue el trimestre de las marchas y las guarimbas. El trimestre se extendió, durando casi medio año. Sin embargo, durante el mismo preferí aprovechar el tiempo para crear material que ayudara a las personas a prepararse mejor para la materia. Fue así como creé una serie de guías, sobre alcances y asociaciones, composición de máquinas (diagramas de T), iteradores y recursión de cola. Estas guías se caracterizaban por contener una sección llamada "El camino del bien", que mostraba procesos paso a paso para resolver problemas relacionados al contenido que cubrían.

El trimestre en que fueron creadas las guías, el grueso del salón salió muy bien. Me dijeron además, que las guías les habían ayudado mucho a prepararse. Esto me llenó de alegría y me inspiró para hacer otras guías en otras materias, como Traductores e Interpretadores, Algoritmos I y II, etc. Aún en trimestres posteriores he escuchado de personas que se han beneficiado de estudiar usando estas guías. ¡Pero hace falta más!

Como proyecto personal, quisiera crear una serie de guías de nombre "El camino del bien" (en honor a esas primeras guías del curso de Lenguajes de Programación I). Estas guías cubrirían una gran parte de la carrera, al nivel que pudiera manejar alguien con un conocimiento bastante limitado (como es mi caso). La idea de crear estas guías cumpliría varios objetivos puntuales:
  • Ayudar a las personas a preparase mejor y a comprender mejor esta genial área del conocimiento que es la computación.
  • Dejar material de apoyo que sirva como base para dictar cursos de alta calidad.
  • Apoyar el aprendizaje de personas que no dominan completamente el idioma Inglés, sirviendo como una primera referencia que luego podría profundizarse con otro material.
  • Reforzar los conocimientos propios. ¡Enseñar es aprender dos veces! :D
  • Inspirar a otras personas a seguir iniciativas similares y juntos aumentar la cantidad de material y conocimiento disponibles.

Este es un proyecto en el cual quiero trabajar desde hace un tiempo, aunque confieso que no he conseguido el tiempo para hacerlo. Aún así, un buen amigo y profesor una vez me dijo: "La diferencia entre 'sería fino que existiera' y 'existe', es el momento en el que decides hacer algo al respecto" y definitivamente, eso haré. Tengo como objetivo a corto plazo comenzar a escribir algunas guías. Sin embargo, aún estoy decidiendo sobre cuál tema. ¡Cualquier recomendación es bienvenida!

Las guías no serían exhaustivas, claro está. Sería arrogante pensar que puedo explicar todo mejor que cualquier otra persona. La idea de las guías sería sentar una base y luego hacer referencia a material más profundo disponible en línea.

Y bueno, éste es uno de tantos proyectos que me encantaría llevar a cabo y es lo que quería compartir por ahora. ¡Hasta una próxima entrada! Sigan siempre el camino del bien. :D

jueves, 23 de junio de 2016

Mayo y Junio. ¡Wow!

Este último par de meses me tiene sin palabras (aunque irónicamente esté escribiendo usándolas, jajaja). Y es que Mayo y Junio han sido tan excelentes que poco puedo creerlo. Este par de meses viajé al otro lado del mundo, conocí a mucha gente genial con quienes compartí lo que me apasiona y hasta gané un premio inesperado. Estoy sumamente agradecido por todo y motivado a continuar trabajando lo que me encanta.

Coleado con los organizadores de las JOINCIC, jajaja. ¡Pura gente genial! :D

El mundial:

Hace ya un poco más de un mes, se celebró la final mundial de los maratones de programación ACM-ICPC, en nada menos que Tailandia. Desde que el genial equipo RAM clasificó, la mayor preocupación fue la de cómo llegar hasta el otro lado del mundo a participar. Los gastos de hospedaje, comida e incluso entretenimiento los cubriría ACM, pero los pasajes debíamos conseguirlos nosotros.

Después de mucho hablar, realizar campañas de crowdfunding y reunir dinero, no teníamos lo suficiente para ir. Algunas oportunidades que podían ayudarnos se cayeron a último momento y llegada la semana antes del evento, todo parecía apuntar a que no podríamos asistir. Pero un grupo maravilloso de personas (que prefieren mantenerse anónimos) decidió que era injusto que no fuéramos, habiendo intentado tantas cosas y clasificado justamente. Así, decidieron apoyarnos completamente y patrocinarnos los pasajes. ¡Iríamos a Tailandia!

El viaje fue largo y cansado. 3 días de viaje hasta Tailandia: 6 vuelos, 172 horas en total. Pero ahí estábamos y todo había valido la pena. La experiencia fue alucinante. Nos reencontramos con viejas amistades e hicimos otras nuevas. ¡Participamos junto a los mejores programadores del mundo! Vimos espectáculos increíbles. Realmente, fue una experiencia sumamente enriquecedora para todos. Finalmente el equipo quedó de 115 sobre 128 equipos. No es la mejor posición, pero hay que considerar que esos 128 equipos fueron clasificados de entre más de 20.000 equipos de todo el mundo. Además, los chicos clasificaron al mundial en su primer intento, apenas en 2do año de la carrera. Ese es un logro que muchos quienes entrenamos durante toda nuestra carrera (me incluyo) no alcanzamos. ¡Son chicos admirables y estoy orgulloso de ser su entrenador!

Las 9nas JOINCIC:

Volviendo del mundial, tuve una semana para preparar la charla que daría en las JOINCIC. De entre los temas que les propuse, los chicos votaron y decidieron que querían escuchar sobre "Algoritmos y Estructuras para Videojuegos", además me pidieron dar una mesa de trabajo introductoria para los maratones de programación. ¡Que genial ser parte de otras JOINCIC!

Cuando la fecha se acercaba, hubo algunos problemas con las ponencias y me pidieron que hablara también sobre los maratones de programación y la experiencia en Tailandia. Preparé también esa charla. Luego me pidieron que hablara sobre cualquier otra cosa que quisiera y hablé sobre la relación que hay entre la lógica y la programación (sin duda, la charla más oscura de las tres, jajaja).

Disfruté muchísimo dando esas tres charlas y la mesa de trabajo. Además, tuve el gusto de ser invitado a un conversatorio sobre la actualidad de la computación en Venezuela. ¡Fue genial ser parte de todo esto! Además, muchas personas se me acercaron luego y me comentaron que les gustaron mis charlas y que se sintieron motivados por ellas. Pocas cosas te llenan tanto el alma como saber que has inspirado a alguien más. Y además hubo muchísimas charlas divertidas de otras personas. Definitivamente, el evento fue un éxito total. Compartí una genial semana con geniales personas hablando de cosas geniales. ¡Fue lo máximo! :D

La semana de la Carrera:

Una semana después de haber terminado las JOINCIC, ya estábamos en plena semana de la carrera. El CEIC siempre organiza diferentes eventos en torno a la semana, como ponencias, caimaneras y el infaltable compushow. Tuve el gusto de dar la primera ponencia de la semana, hablando sobre los maratones de programación e invitando a todos a participar. Otra excelente charla la dio la prof. Carolina Chang, sobre educación STEM. Además, la relacionó con la charla de maratones y con su actividad en robótica, lo que me pareció absolutamente brillante. :)

El Jueves se celebró el minimaratón de programación, en el que un montón de gente se animó a competir y resolver problemas. Muchos de los competidores apenas están viendo lógica y aún así hicieron un excelente trabajo. Además, se estrenaron los chicos que han venido entrenando el último año como organizadores y colaboradores. ¡Fue todo un éxito! Estoy sumamente orgulloso de todos. Lamentablemente yo no pude asistir, ya que estaba en otro compromiso, pero aún así sentí toda la buena vibra del evento. Además ese "otro compromiso" también fue un éxito total. Estaba reunido en la UNE con un grupo de profesores y estudiantes interesados en colaborar académicamente con la USB, particularmente en el área de lógica difusa aplicada. Fuimos a darles una charla y creo que quedaron muy satisfechos, lo cual me llena de alegría y motivación.

El Viernes fue el CompuShow y como siempre fue lo máximo. ¡Que buenos los videos! Y que genial toda la organización. El evento completo duró poco menos de 3 horas y aún así, fue entretenido hasta el final. También tuve la oportunidad de presentar el premio a CompuPro, que lo ganó muy merecidamente Alfredo Fanghella (se le va de las manos las intervenciones en clase de Lenguajes, jajaja). Pero lo más increíble y totalmente inesperado: ¡Gané el premio a CompuMaster! El premio que dan los estudiantes por votación al mejor profesor de la carrera. Aún no puedo creerlo. Aunque muchos años pensé en que podría decir si algún día lo ganara, con los nervios lo único que pude medio decir fue "gracias", jajaja. ¡Gracias a todos por esta gran alegría! Vale mucho más para mi de lo que se podrían imaginar.

Graduaciones:

Hace unos días tuve el gusto de asistir al acto de graduación de un gran grupo de amigos y personas increíbles. A muchos de ellos les dí clase y ahora, con el mayor orgullo, puedo llamarlos colegas. El acto fue muy emocionante; con cada nombre que sonaba y cada persona que pasaba, me llenaba un poco más de orgullo. ¡Fue genial acompañarlos en su día! <3

El día a día:

Además de los momentos notables, el día a día ha sido genial. He disfrutado muchísimo de las clases que estoy dando. Además, he compartido muchos buenos momentos con personas realmente geniales. ¡Gracias por estos dos geniales meses!

Y esta nota abrumadoramente positiva es lo que quería compartir hoy, jajaja. Gracias por leer (a quienes lo hayan hecho, jajaja) y hasta una próxima entrada. :D

martes, 5 de enero de 2016

¿Qué hay para el 2016?

Como tengo acostumbrado ya, después del post que expresa el resumen del año pasado ( ¡El grandioso 2015! ), me gusta hacer otro post con algunos objetivos y metas para el año que empieza. ¡Vamos 2016, empecemos con todo!

¡Si capitán estamos listos! xD

Este año tengo algunos objetivos concretos y otros abstractos. Primero quisiera compartir algunos de los abstractos:

  • Continuar aprendiendo a decir que no. Este último año he puesto en práctica la difícil decisión de comenzar a decir que no a proyectos, propuestas y demás. Esto, ya que me estaba hundiendo en una montaña de trabajo y estrés que terminaría por afectar mi salud mental (si es que me queda alguna, jajaja). Sin embargo, creo que aún no es suficiente. Aún tengo mucho trabajo y eso afecta las otras componentes de mi vida. Poco a poco he estado descargándome un poco de tantas cosas, pero aún falta. Y para mi, que detesto decepcionar a las personas y además me encanta enfrentar nuevos retos, lleva muchísima disciplina y determinación.
  • Para decirlo de alguna forma más bonita (o más enredada): evitar aplicar tanta fuerza en dirección a uno mismo, a objetos esféricos envueltos en una capa protectora dérmica. xD En muchos aspectos me ocurre esto, en especial en aquel que podría ser considerado el más importante (y siempre termina afectando la situación). Me cuesta mucho bajarle dos a las amistades, a las relaciones de trabajo y a todo tipo de relaciones en general. Es algo que tengo que continuar mejorando, también por mi propia salud mental, jajaja.
  • Es importante para mi cuidar un poco más mi salud. Nuevamente, no creo que pueda hacer una dieta (no tengo ese tipo de determinación, jajaja), pero si puedo controlar un poco el hambre por ansiedad (o al menos intentarlo). Además, me gustaría volver a practicar tenis de mesa con regularidad, como lo hacía en pregrado. Siempre me lo propongo, y siempre el tiempo ha sido un problema. Pero como parte del objetivo de empezar a tener más tiempo libre, una de las nuevas cosas que quiero incluir es ésta.
Además, tengo algunos objetivos concretos que me gustaría poder cumplir:
  • El año pasado aprendí (de forma muy básica) el idioma Portugues, usando la aplicación Duolingo. Este año me gustaría reforzar ese aprendizaje, en especial la parte fonética que aún la tengo débil. Además, me gustaría comenzar a aprender un nuevo idioma. Estoy pensando en retomar el aprendizaje del Alemán. No es un idioma fácil, los géneros y las conjugaciones por tiempos verbales son un dolor de cabeza, jajaja. Pero sé que podré dominarlo con suficiente tiempo y esfuerzo, aunque sea a un nivel básico y sumamente coloquial.
  • Me gustaría continuar leyendo muchos libros, de muchos diferentes géneros. En un post futuro les contaré sobre los libros que leí en el 2015 y las impresiones que me dejaron. Es interesante re-descubrir el gusto por la lectura y encontrar excelentes libros para calmar la sed de letras.
  • Quiero volver a escribir más, a dibujar más, a crear más. Con tanto trabajo, he descuidado mi lado artístico y no he dado un buen escape a la creatividad que tengo injustamente encarcelada. Por eso, quiero comenzar por al menos hacer un cómic bisemanal y al menos un cuento mensual. Además, por supuesto, de continuar escribiendo estas cosas aleatorias en este mismo blog.
  • Me propongo seguir entrenando, seguir mejorando y continuar ayudando a formar a los competidores de las competencias de programación ACM-ICPC. No sólo a los de la USB, sino a todo aquel que esté interesado en embarcarse en este divertido y retador mundo. Me gustaría fomentar el aumento de participación y de nivel en muchas más universidades venezolanas, y continuar aumentando aún más el nivel de las tradicionales. Quisiera ayudar a formar una comunidad tan o más fuerte que la de otros países, y mostrar al mundo el talento y la buena voluntad que existe entre los Venezolanos. :)
  • Uno de los más importantes objetivos concretos para este año, es el de expandir mis horizontes y buscar aprender más de otros sitios. Quizá sea un doctorado en el exterior, o quizá un trabajo en la industria (pero uno interesante, jajaja). Pero en definitiva, tengo que abrir puertas y aumentar mis experiencias. Bien es posible que eso me lleve a salir del país por algún tiempo, pero siempre sería con la esperanza de volver y aplicar todo lo que haya podido aprender.
Y bueno, estos son mis objetivos (al menos los que ahorita se me ocurren). Estoy seguro que con el pasar de los días, nuevos objetivos se sumarán a las nuevas experiencias y se reinventarán por si mismos. ¡Gracias por continuar compartiendo conmigo! Hasta una próxima entrada. n_n

sábado, 28 de noviembre de 2015

El tercer piso

Hace poco menos de una semana que tuve la dicha, una vez más, de darle una vuelta entera al sol. ¡Cumplí años! Y no cualquier cumpleaños. ¡Finalmente he cumplido... los veintidiez! No bueno, ahora en serio, finalmente he alcanzado el temible tres-cero.

¡De veintidiez añitos! :D

Ahora me despido de mis veintialgos, una época que pasé íntegramente en la Universidad Simón Bolívar (salvo por los 8 meses que pasé en la empresa Smartmatic trabajando). Fue una época de mucho aprendizaje y de duros cambios, pero sin duda también la mejor época de mi vida. Estos años me vieron transformarme de un niño a un adulto, de lo que era a lo que soy. Me vi convertirme poco a poco en aquel a quien hoy conocen y no podría estar más agradecido con el tiempo que ha pasado.

La década pasada descubrí mi gran pasión, que es enseñar. Además, descubrí que realmente me gusta mucho la computación y la matemática. Pude formarme como un profesional, bastante íntegro hasta donde mi propio criterio puede discernir. Me gusta aprender de muchas cosas y me cuesta mucho decir que no a nuevos proyectos. Esta década realmente me definió profesionalmente. Aprendí de muchas áreas, incluso tuve la dicha de competir en diferentes eventos relacionados con la carrera. En resumen, Confucio estaría orgulloso cuando dijo: "escoge un oficio que te guste y no tendrás que trabajar un sólo día".

Mas no sólo en lo profesional he crecido, sino también en lo personal. He conocido a muchas maravillosas personas esta década. Algunas se mantienen, otras ya se han ido, pero todas han dejado su huella en mi persona. He tenido amigos, parejas, mentores y todos ellos me han enseñado algo invaluable. Agradezco cada uno de los momentos compartidos; incluso aquellos que no son tan bonitos. Agradezco cada momento pasado, pues cada uno me ha llevado a ser lo que soy hoy.

Un excelente discurso de grado que escuché recientemente expresaba algo como: "no estén orgullosos sólo de sus éxitos, sino también de sus fracasos. Después de todo, son sus fracasos los que realmente han hecho de ustedes lo que son y los han formado como vencedores". Esa idea me encanta y la comparto completamente. Esta década no ha sido toda felicidad, sino de hecho bastante accidentada. Muy pocos saben que detrás de una sonrisa constante siempre se oculta un mundo de complejidad. Los pocos que lo saben, podrían constatarlo. Pero no me arrepiento. Todo ese dolor que en algún momento pude experimentar es parte de mi, es parte de lo que soy, y definitivamente, será parte de lo que seré. Más aún, toda la felicidad, alegría y optimismo que decidí tomar como filosofía personal de vida me continuará guiando siempre.

Bueno, esto es lo que quería compartir por ahora. De frente ante el tercer piso, a ver que aventuras depara esta nueva década. ¡Hasta una próxima entrada! :D

jueves, 15 de octubre de 2015

Ni ciencia, ni tecnología, sino todo lo contrario

Desde que inicié mi carrera, he estado en una disyuntiva que me ha acompañado a lo largo de mi crecimiento como persona y como profesional; y ésta trata de saber si soy más del tipo técnico o del tipo científico. Me gustan actividades que involucran cada tipo y no me gustan tanto otras, que pertenecen a ambas igualmente. Entonces, ¿cómo me identifico?

Hmm...

A lo largo de mis estudios de pregrado, siempre quise convencerme a mi mismo que era del tipo científico. Despreciaba de asuntos puramente prácticos, e intentaba aprender más y más sobre ciencias avanzadas en computación. Sin embargo, siempre me ha molestado el empirismo científico. Y aunque respeto su utilidad, no me siento cómodo aplicándolo y razonando sobre él. Siempre he preferido las análisis formales y precisos, que no dependen de estadísticas y suposiciones.

Además siempre me ha gustado programar. El detalle, es que no me gusta programar cualquier cosa. Las aplicaciones web, móviles, etc., no me llaman la atención. Las tecnologías nuevas normalmente me tienen sin cuidado. Sé manejar una buena cantidad de lenguajes de programación, pero las herramientas industriales construidas alrededor a estos me son ajenas. Los programas que me gusta implementar son de problemas algorítmicos retadores, o de soluciones elegantes a problemas conocidos. En otras palabras, me gusta jugar con la programación. La veo como un arte, una forma de expresión, un gusto absolutamente puro.

Me gusta programar, y me gusta el pensamiento científico, pero nunca me sentí completamente cómodo siendo de un sólo tipo; cosa que usualmente no veo en otros colegas. Conozco gente que es sumamente práctica (que incluso puede usar conocimiento científico en aras de mayor practicidad) y conozco gente sumamente científica (que incluso puede hacer uso de herramientas computacionales prácticas para apoyar sus experimentos). Pero yo no logro identificarme con ninguno de estos grupos.

Continué con esta disyuntiva, y conocí nuevas ciencias, nuevas herramientas y nuevos tipos de pensamiento. Conocí a personas con pensamientos divergentes e ideas innovadoras. Comencé a leer un poco más sobre diferentes temas y eventualmente me di cuenta... No me identifico con el tipo científico, ni con el tipo técnico, por que no pertenezco realmente a ninguno de estos grupos. Soy una persona que pone en duda todo lo que aprende; que le apasiona tomar cualquier tema y hacer preguntas, y más preguntas, y quizá luego más preguntas; que prefiere el pensamiento abstracto y detallado incluso sobre las cosas más básicas. He comprendido, que mi tipo de personalidad y llamado intelectual, va más hacia la filosofía.

¿Ahh? ¿Filosofía? Así es, pero no la filosofía poética que en bonitas palabras revela poco más que edificios sobre cimientos de arena. Más bien de la filosofía formal, entendida como un proceso estricto de razonamiento cuya repercusión pudiera ser elevada, pero de formas mundanas. La aplicación racional del pensamiento a los temas más diversos, y también a todos los temas, agrupados, abstraídos. Me he sentido más cómodo hablando y pensando sobre este tipo de temas. Y me he dado cuenta que siempre ha sido así. Reviso las cosas viejas que he escrito y es consistente con esto. Además siempre me ha gustado más plantear las preguntas, o incluso plantear soluciones abstractas, que realmente implementar una solución o medirla.

Ahora que he entendido esto, no estoy seguro de qué seguiría. Posiblemente busque hacer un PhD eventualmente, pero con énfasis en el "Ph" (por Philosophy) y no tanto en la componente científica. Además, quiero continuar leyendo y aprendiendo sobre diferentes corrientes de pensamiento, para eventualmente consolidar la mía propia. Ahorita estoy leyendo a Descartes (que me parece genial). El siguiente en la lista es Kant (considerándome inclinado hacia el racionalismo, leer la crítica de la razón pura me parece necesario para consolidar una posición integral y bien informada).

Y bueno, este pequeño descubrimiento personal es lo que quería compartir por ahora. Los dejo hasta una próxima entrada. :D

martes, 18 de agosto de 2015

Training Camp Argentina

Hace ya un par de semanas que estoy de vuelta en Venezuela. De regreso de dos semanas que fueron testigo de un increíble viaje. Un inolvidable evento en donde conocí a excelentes personas a la que les apasiona programar y resolver problemas, y en donde pudimos juntos aprender y mejorar con la ayuda de excelentes guías, más allá de cualquier expectativa. Dos semanas que estuvimos en el Training Camp de Argentina, para las competencias de programación ACM-ICPC.

El último día, foto final con casi todo el mundo. :)

Hace alrededor de 3 meses, la USB participó en la final mundial de los maratones de programación ACM-ICPC, en Marruecos. Ahí conocimos a bastante gente chévere y compartimos nuestra pasión por resolver problemas difíciles e interesantes. De este evento, con la ayuda de nuestro director de sede (Trino Gómez), obtuvimos una invitación especial para el campamento de entrenamiento "Training Camp Argentina", que se celebraría en Julio de 2015. En un principio iba a ir un sólo equipo con integrantes mixtos (de diferentes universidades), pero finalmente fuimos invitados un equipo de la USB y un equipo de la UCV (y yo, como coach de ambos equipos).

Y así empezó la aventura. ¿Cómo podríamos ir? No es secreto para nadie que a los Venezolanos nos cuesta salir del país por el motivo del control de divisas. ¿Cómo resolveríamos? Ya habíamos tenido la experiencia después de Marruecos de conseguir pasajes económicos, siempre y cuando se tratara de asuntos académicos y una vez más pudimos contar con esa gran ayuda. Pero aún quedaba el hospedaje, la comida, el transporte dentro de Argentina, etc. Esperanzados, lanzamos una campaña de recolección de fondos por internet y el resultado fue abrumador. El gran corazón y disposición para ayudar de tantas personas es algo que aún me conmueve y agradezco enormemente. Logramos recolectar suficiente para nuestros gastos allá. ¡De verdad, muchísimas gracias a todos!

El campamento fue en la ciudad de Bahía Blanca (a unas divertidas 11 horas en autobús desde Buenos Aires). Es una ciudad bastante pequeña y tranquila, pero con un tímido encanto. El día que llegamos hacía 0°, lo cual es una experiencia divertida para quienes venimos de un país tropical. A mi particularmente ME ENCANTA el frío y no podría haber sido más feliz a esa temperatura (la gente allá nos cuenta que en verano puede alcanzar casi los 50°; ya he vivido esas temperaturas y no juegan, jajaja).

En Bahía Blanca paseamos y conocimos un poco, pero principalmente y más importante: El campamento. Todo el evento fue en la facultad de agronomía de la Universidad Nacional del Sur (sip, agronomía... y sip, tenían monstruos de computadores allá, jajaja). Cada día llegábamos a las 9:00am. y teníamos entre 3 y 4 horas de clases y discusiones, el almuerzo (que abrieron un kiosko que vendía comida bastante buena por un muy accesible costo) y finalmente un simulacro de competencia de 4 a 5 horas, para salir a eso de las 7:00pm. Fue INTENSO, pero también muy divertido y enriquecedor. Además, la organización del evento fue impecable. Todo estuvo siempre en su lugar y los anfitriones estaban más que dispuestos a ayudar siempre. De verdad, han ganado mi admiración y respeto por tan excelente trabajo y por ser además excelentes personas a la vez.

Las primeras clases fueron bastante básicas, pero fueron aumentando el nivel poco a poco. Los problemas en los simulacros de competencia eran bien serios. Algunos días fueron más sencillos que otros, pero siempre lograba hacer sólo entre 3 y 6 problemas (de 10 a 11 que había diariamente) y pocos de ellos eran sencillos. Fue realmente divertido y me sirvió mucho para quitarme el óxido y volver a estar en forma de competidor. Como entrenador de los equipos de la USB es mi responsabilidad continuar aprendiendo y mejorando, para poder ser un mejor apoyo para ellos y que cada vez más demos una buena competencia en el mundo.

Conmigo fueron dos equipos. Uno de la USB llamado RAM (Rubmary, Augusto y Mathías) y uno de la UCV llamado NPI-Complete (Rodolfo, Samuel y Germán). Ambos equipos aprovecharon muchísimo el campamento y quedaron en buenas posiciones, considerando el nivel de los equipos restantes en el campamento (habían muy buenos equipos de todas partes de latino-américa). Estoy sumamente orgulloso de ambos equipos y del excelente papel que hicieron durante el campamento, tanto en lo técnico como en lo personal. ¡Bravo! :D

Los últimos dos días decidimos (los de RAM y yo) regresar a Buenos Aires y pasear un poco. Buenos Aires es posiblemente mi ciudad favorita en el mundo y las veces que he tenido la oportunidad de visitarla siempre termino más y más enamorado de ella. En dos días recorrimos mucho de la parte turística de la ciudad y caminamos como si no hubiera un mañana, jeje. De verdad fue una muy genial experiencia, que culminó en la visita de mi local favorito: Antares, hogar de la mejor cerveza que he probado en mi vida. Todas son excelentes, casi sin comparación, pero la Indian Pale Ale de Antares es la campeona incuestionable para mi, tan excelente como la recuerdo. <3

Y bueno, esto fue un resumen muy resumido de este genial viaje y que quería compartir por acá. ¡Gracias por leer! Y espero seguir contándoles de experiencias geniales como ésta, mientras seguimos creciendo y mejorando. ¡Hasta una próxima entrada! :D

lunes, 15 de junio de 2015

Achievement Unlocked: MBA

Los que tienen tiempo conociéndome habrán leído el título de este post y habrán pensado: "Ahh? WTF?" Y efectivamente, es algo que podría parecer extraño pero es cierto. En los últimos tiempos he llevado casi en secreto uno proyecto alterno, entre tantos, y éste en particular finalmente ha rendido sus frutos. La pasada semana finalmente arribó a mi casa un sobre con otro gran éxito, del cual estoy sumamente orgulloso. Llegó la hora de salir del closet académico... xD Ahora también soy un "Master in Business Administration".

Long live the Business Cat! xD

Hace un par de años, en el Maratón Superregional Sudamericano de Programación del 2013 (para clasificar al mundial 2014), el equipo FTL (conformado por Alejandro Flores, Simón Castillo y Wilmer Bandres) se hizo ganador del título de campeón de Venezuela (aunque lamentablemente no clasificamos ese año al mundial en Ekaterinburgo, Rusia). Sin embargo, había un patrocinador fuera de lo común en este evento. Este patrocinador era la escuela de la Sociedad de Altos Estudios Jurídicos y Empresariales Euroamericanos, o SAEJEE. Esta es una academia Española de estudios empresariales que atiende estudiantes internacionales de manera online. Y como premio al primer lugar, dieron una beca para maestría completa a los miembros del equipo (incluido el coach). El equipo no pudo aprovechar la oferta en el momento, ya que no se habían graduado aún y les faltaba aún algo de tiempo para hacerlo. Pero, muy agradecido con el equipo, yo si pude aprovecharlo.

Y así comenzó uno de los más grandes proyectos alternos que he manejado a la par con mi día a día: estudiar una maestría en administración de empresas. Para ser preciso, el programa que tomé era conducente al título de "MBA en creación de empresas". Luego me fue explicado que en realidad esto corresponde a dos títulos: "MBA" y "MBA en creación de empresas" como tal.

Tomé los primeros cursos y asistí a los diversos foros. Eventualmente el trabajo no me dejó continuar estudiando y tuve que dejar los cursos a medias. Sin embargo, fui contactado por el personal académico de SAEJEE, quienes me aseguraron que lo que había hecho hasta el momento era suficiente para el primer título (el de MBA) y que si decidiera luego retomar los estudios podría sacar el siguiente (el de MBA en creación de empresas). Y así es como ahora cuento con la alegría de tener un título universitario más. Ya el tercero, por ahora. :)

Los cursos del MBA son muy autocontenidos, lo que implica que realmente no hace falta un conocimiento previo. Sin embargo, si debo decir que son muy impersonales. El material es terriblemente extenso (aunque interesante) y no hay contacto humano realmente, salvo en los foros. Sin embargo, el contenido de los cursos es muy completo e interesante, con muchísimos ejemplos que clarifican los conceptos presentados. Además, los foros ofrecen una excelente manera de conocer a otras personas interesadas en el área y de discutir sobre tópicos importantes en liderazgo, manejo de empresas, responsabilidad social, etc. Ha sido realmente una experiencia diferente y enriquecedora.

¿Y que hago yo estudiando esto? Bueno, primero que nada, ninguna oportunidad debe ser desperdiciada nunca y mucho menos una tan grande como la de recibir un título internacional de grado de maestría. Y aunque ustedes no lo crean, ¡estos temas realmente me interesan! Siempre me ha interesado el tema del mercadeo y de cómo llevar una marca a ser percibida como necesaria y distinguida (en especial la parte psicológica me parece realmente fascinante). Además, mucho de administrar empresas tiene que ver con saber ser líder, entender a tu equipo y ser un solucionador de problemas. Ese tipo de comportamiento va muy en onda con lo que al menos intento ser cada día, más un apoyo que una barrera, siempre que me es posible.

En fin, este post es para poner a la luz pública este proyecto que tuve en secreto durante poco más de un año y que, con orgullo, puedo considerar ahora un gran éxito. Siempre, y cada día más, estoy agradecido por todas las oportunidades que he recibido, los éxitos que he cosechado y la gente genial que he conocido. ¡Gracias por leerme! Nos vemos (leemos) en una próxima entrada. :D

sábado, 28 de marzo de 2015

¡Un nuevo idioma: Portugués!

Hoy tuve el gusto de conquistar un nuevo éxito: Terminé el curso completo de Portugués (desde Español) en Duolingo. ¡Qué alegría!

\m/ ¡Ohh yeah! \m/

Desde Noviembre del año pasado me dispuse a aprender Portugués. ¿Por qué? Bueno, ningún conocimiento es en vano y me encanta aprender. Quizá haya alguna otra razón más pragmática, pero si tales razones en verdad existieran preferiría mantenerlas privadas por los momentos, jajaja. Y por supuesto, el primer lugar que busqué para aprenderlo fue la excelente y divertida página para aprender nuevos lenguajes: Duolingo.


Ya en Duolingo había intentado aprender Alemán y Francés (ambas desde Inglés), pero confieso que no pude avanzar mucho más allá de la primeras lecciones, quizá por falta de motivación y de tiempo. Aunque haber terminado este lenguaje me da nuevas energías para retomarlos o incluso alguno nuevo. Creo que Alemán podría ser una buena elección para un próximo proyecto. :)

Claro, incluso habiendo terminado el árbol completo de Duolingo estoy en un nivel muy básico de Portugués. Estoy seguro que podría desenvolverme con bastante trabajo en un entorno donde se hable el lenguaje, pero ni cerca de ser fluido. Sin embargo, me parece que es un excelente inicio. Además, el Portugués como lenguaje es muy similar al Español. Aprenderlo fue relativamente natural, aunque si hay algunas cosas extrañas, palabras difíciles y gramática peculiar (por ejemplo, nuestro verbo haber es usualmente sustituido por tener en Portugués). Entre algunas de las diferencias divertidas está que lo que en Español es ancho, en Portugués es largo; mientras que lo que en Español es largo, en Portugués es longo. xD

Y bueno, sólo quería compartir con ustedes mi alegría del día al completar este pequeño éxito. ¡Estoy muy contento de seguir aprendiendo nuevas cosas y maneras de pensar! Hasta una próxima entrada.

martes, 3 de marzo de 2015

Cómo Programar

¡Me encanta programar! Es una de las cosas que más me divierte y me llena de mi carrera. Programar es una actividad que involucra tanto la creatividad, como la habilidad técnica y hacerlo bien puede potenciar incluso múltiples regiones de la mente.

¡Programar siempre es emocionante! :D

Sin embargo, quienes me han visto programar sabrán que yo suelo programar "extraño".

¿Cómo así?

Yo puedo pasar horas sólo viendo la computadora o incluso estar aparentemente procrastinando por la web, pero eventualmente abro el editor y básicamente escupo todo el código en cuestión de minutos. Algunos confunden la procrastinación con flojera, pero es muy al contrario. Cuando parezco estar haciendo nada, en realidad estoy pensando y planificando como voy a programar lo que necesito: las estructuras que hacen falta, algoritmos eficientes y patrones reutilizables de otras cosas que ya haya hecho. De repente, sale todo ese código y la gente se queda sorprendida con la velocidad en la que se me ocurrió todo. Pero la verdad, es que no hay realmente ninguna velocidad extravagante involucrada. Sólo una metodología de pensamiento diferente, donde primero se diseña y luego se programa. :)

La gente de Sistemas de Información, a pesar de sus documentos infinitos (los cuales, hay que confesar, contienen mayormente información inútil), tienen sin embargo un concepto acertado: Para programar bien, primero hay que planificar. Lamentablemente esto se enseña en torno a requerimientos y, en menor medida, a herramientas y patrones. Pero realmente no se enseña a planificar y diseñar soluciones con tipos de datos y algoritmos adecuados. Se enseña muy bien a tener claro lo que se desea hacer, pero muy poco se ahonda en tener claro cómo hacerlo.

Por todo esto, quisiera compartir con ustedes cuales son las reglas fundamentales en mi proceso al programar (al menos en la mayoría de los casos):
  • Regla fundamental No. 1: No echar ni un caracter de código, hasta haber planificado la estructura y funcionamiento básico del programa. Esto ahorra muchísimo trabajo al final, en especial de refactorizaciones constantes. Al principio no se verán resultados tangibles, pero cuando comiencen a aparecer será tan veloz que parecerá algo mágico, jajaja.
  • Regla fundamental No. 2: Los lenguajes y herramientas son diversos por algo. Cada problema tiene diferentes características y diferentes herramientas pueden ser mejores o peores en determinados momentos. Es importante conocer y dominar varias formas de pensar y resolver problemas para así poder seleccionar la más adecuada en cada situación. Por poner un ejemplo, creo que nadie duda que hacer una aplicación web en C sería un dolor de cabeza, pero para programar sistemas de operación pocos lenguajes se le comparan. ¿A su vez, cómo sería programar un sistema de operación en un lenguaje como Ruby? Cada herramienta tiene su dominio y por esto es importante saber distinguir entre ellos.
  • Regla fundamental No. 3: Pensar a futuro. Este es un hábito difícil de adquirir, pero sumamente útil si se domina. La verdadera parte complicada al programar está en diseñar la solución. Una vez el diseño de estructuras y algoritmos está completo, efectivamente programar la solución es en verdad un trabajo mecánico. Como tal, consume muy poco procesamiento mental realmente. Por lo tanto, es posible (aunque repito, difícil en un principio) seguir planificando a futuro mientras se programa lo que ya está planificado. Algo así como el pipeline del procesador que mientras ejecuta una instrucción ya interpreta la siguiente. Esto hace que la programación sea un poco más fluida y rápida. Además mantiene la mente activa y evita los peligros de contraer flojera crónica entre "sprints" de implementación.
  • Regla fundamental No. 4: ¡Reutilización por siempre! Y no sólo me refiero a reutilización de código, sino también de procesos mentales. Muchos problemas son parecidos o tienen componentes parecidas entre si. Aunque finalmente el código no sea el mismo (por una u otra razón), el proceso mental que llevó a solucionar un problema puede llevar a solucionar otro. Por ejemplo, si se pasó un par de días resolviendo una conexión entre una aplicación web y una base de datos de forma eficiente, el mismo proceso puede reutilizarse si en algún momento se debe conectar eficientemente una aplicación móvil a una base de datos local (a pesar de que muy posiblemente, el código sea bastante diferente).
  • Regla fundamental No. 5: Nunca perder la práctica. Es importante mantenerse programando y no únicamente en un área específico. Se debe intentar explorar nuevas áreas sin descuidar aquellas que ya se han explorado antes. Por ejemplo, a un programador web deberían poder asignarle un trabajo de bajo nivel (implementar un driver, por ejemplo) y no debería ser el fin del mundo para él, sino sólo un reto más a superar y una nueva oportunidad para aprender y practicar algo diferente.
Las tres primeras reglas fundamentales, potenciadas con la cuarta y la quinta, hacen que un programador luzca como un verdadero mago. Después de unos minutos pensando en un problema complejo, puede producir código muy rápido que lo soluciona. Y muy posiblemente, código eficiente, reutilizable y hasta seguro. Todo depende de cuanta experiencia se tenga. Como ejemplo personal, estoy claro que al programar en un lenguaje funcional (como Haskell) puedo llegar a hacerlo sumamente rápido. Pero eso no es más que una mezcla de pasión y experiencia. Eso no me hace más inteligente que nadie, ni mucho menos. Estoy totalmente seguro que todos y cada uno son mejores que yo en algo. Pero finalmente, creo honestamente que la experticia en cualquier herramienta o dominio siempre puede lograrse no más que siguiendo estas 5 reglas fundamentales.

Todas estas reglas dependen claro, de una que es incluso más fundamental y básica:

  • Regla fundamental No. 0: No puedes escribir un programa para resolver un problema que no entiendes. Es sumamente nocivo intentar resolver un problema, cuando no se tiene claro cuál es siquiera el problema que se necesita resolver. Esto, lamentablemente, es más que común por los tiempos apresurados de producción en la industria de la computación. Sin embargo, debe evitarse a toda costa. Lo primero que debe asegurarse siempre es haber entendido el problema, luego entender cómo resolverlo, luego con que herramientas y sólo entonces se debe echar manos a la obra e implementar. (gracias a Ernesto Hernandez-Novich por el comentario que inspiró esta regla adicional).
Y bueno, esto quería compartir con ustedes hoy. Éste es mi extraño método y debo decir que muchas veces me ha funcionado bastante bien (aunque puede ser terrible cuando hay deadlines cercanos involucrados, pero ese es otro cuento, jajaja). Cualquier comentario, como siempre, es más que bienvenido. ¡Hasta una próxima entrada! :D

sábado, 10 de enero de 2015

Sobre Docencia y Didáctica

¡Me encanta dar clases! En verdad es mi mayor pasión y satisfacción. Y la verdad es que no sólo es dar la clase, sino el poder compartir, ayudar, aprender y, por supuesto, hacer nuevos y geniales amigos en el proceso. :)

¡Y todos tenemos algo que enseñar! :D

Ya tengo el gusto de haber sido profesor durante 3 años, ayudante académico 3 años más y preparador durante mi pregrado, por unos 4 años (seh, ya estoy ancianito, jajaja). En ese tiempo he intentado ir mejorando poco a poco, aprendiendo a ser mejor docente y persona. Aún me queda muchísimo por aprender y mejorar, pero hoy quisiera compartir algunas de las cosas que he aprendido y que intento aplicar siempre que puedo.

  • El centro es el estudiante, no el profesor: Puede llegar a ser tentador hacer alarde de lo que uno ha aprendido e intentar exaltar la propia imagen. Pero esto está mal. ¡Muy mal! Un buen docente no es el que logra mostrar lo grande que es él, sino lo grande que pueden llegar a ser sus estudiantes. No se trata de enseñar para impresionar, sino de enseñar para motivar e inspirar.
  • El respeto ayuda a aprender, pero más aún la confianza: Desde siempre he estado en contra de la tradicional y socialmente arraigada "distancia alumno/profesor". En parte, por eso no me gusta que me digan profesor, profe, o cualquier otro "título" impersonal. Es verdad que en un salón donde el profesor es magnánimo e intocable, el aprendizaje puede darse bien. Pero sólo eso, sólo "bien".

    Pienso que si el profesor se presenta como sólo una persona más, con sus fallas y ganas de aprender, se crea un ambiente de confianza que es mucho más propicio para un aprendizaje excelente. ¿Quién no ha tenido pena de preguntar algo en clase? Pero... ¿Y si no se sintiera como una clase? ¿Y si más bien fuera como un grupo de personas estudiando y discutiendo? Las dudas fluyen mucho más libremente y se aprende con mayor gusto. Además, la recompensa es poder aprender mucho más en cambio de las personas a las que enseñas e incluso, muchas veces, llegar a hacer buenas amistades.
  • Ser positivo siempre es preferible: Al encontrar fallas en el conocimiento de una persona, no es correcto ni útil atacarlo por esas fallas. Al contrario, es preferible concentrarse en lo que tiene bien y reforzarlo, llevando poco a poco aquello que no se entiende bien hasta el punto en que es asimilado naturalmente y con gusto.

    Esto no quiere decir que no se pueda decir que alguien esté mal en su conocimiento, sino cuidar la forma de decirlo. Cosas como "Si no sabes de X tópico entonces realmente no sabes nada" o "Si sólo sabes manejar Y concepto, entonces eres un mediocre". Actitudes que lamentablemente he visto pasar frecuentemente y en muchos contextos. ¿No es preferible hacer ver las relaciones de ese X tópico que se considera importante, con lo que la persona ya conoce y maneja, o incluso con lo que le gusta? Incluso si toma tiempo y no pareciera ser fácil, al final todo está relacionado. Honestamente, creo nunca, NUNCA, se debe ser despectivo con el conocimiento ajeno, pues eso bloquea por completo la oportunidad de aprendizaje futuro.
  • Saber hallar el balance entre el "como" y el "para qué": Inevitablemente (y afortunadamente), existen personas de mentalidad práctica y personas de mentalidad metódica. Sin embargo, en el balance entre ambas está el potencial para un mayor aprendizaje. Si se es demasiado práctico, y sólo se muestran las aplicaciones de un concepto, lucirá como un mágico agitar de manos y ningún conocimiento será realmente transmitido. A la vez, si se es demasiado metódico y se intenta mostrar cada detalle teórico necesario antes de pasar a las aplicaciones, el proceso se hará tedioso y aburrido, perdiendo el foco fácilmente y dejando de transmitir conocimiento igualmente.

    Creo que en el balance está la respuesta. Saber mostrar los detalles más fundamentales, sin dejar a un lado aplicaciones tempranas que hagan interesante y motivador lo que se enseña.
  • Complementar con material adicional. no-exhaustivo: No todo el mundo aprende a la misma velocidad y siempre habrá quienes capten inmediatamente en clase y quienes tardan un poco más. Es importante que la información que se enseñe esté respaldada en algún medio persistente, de la manera más didáctica posible. Pero con cuidado... El material no debe ser exhaustivo, o hará completamente aburrida y redundante la clase. Debe funcionar como un método para recordar y reforzar, no como un reemplazo. Sólo se debe poner detalle en los conceptos más difíciles o importantes. Además, es bueno que ese material incluya adicionales a lo que se haya dado en clase, para mantener la lectura interesante (aunque sean sólo hechos de cultura general, totalmente tangentes y sin evaluación).
  • Compartir las huellas: Siempre que esté en poder y decisión de uno, los parciales/tareas/proyectos de cada período deberían ser publicados y disponibles para el futuro. Esto ayuda a los estudiantes actuales de la materia a ver sus fallas. Pero, más importantemente, ayuda a futuros estudiantes a poder practicar y prepararse. Claro, esas evaluaciones ahora no serán reutilizables y se tendrá que trabajar mucho más en crear más y más evaluaciones originales. Pero ese es problema (o más bien gusto, para algunos) del profesor, no del estudiante. Y vale la pena sacrificar esa comodidad por ayudarlos a ellos a aprovechar mejor el curso y aprender más.

    Podría decirse que no es necesario, ya que con que estudien todo el material es suficiente y no necesitan de exámenes modelo para practicar. ¡Pero eso es falso! Un parcial no es sólo reflejo del contenido de una materia, sino de la manera en que el profesor entiende esa materia. Aunque intente hacerse lo más objetivamente posible, siempre habrán cuestiones de estilo particulares de cada profesor. Es buena idea ayudarlos a practicar, a entender lo que esperas de ellos, para que puedan concentrar su esfuerzo en eso. Poco a poco se refina el estilo hacia lo que se considere más importante y eso es criterio de cada profesor, pero hay que darles la oportunidad de prepararse en todo caso.
  • Dudar siempre de lo establecido: No quedarse con lo estipulado o tradicional en cada curso. Dudar de todo lo que se supone que debes enseñar y buscar siempre mejores maneras de hacerlo. Incluso si uno se equivoca, será un gran avance. Nada daño tanto el avance conjunto de la humanidad como el enfoque conservador de la enseñanza. ¡Siempre hay que buscar nuevas ideas, nuevos métodos y nuevas estrategias!

Hay muchas otras cosas sobre las cuales podría conversar acá, pero creo que ya está bastante tl;dr, jajaja. Seguir este tipo de didáctica no es fácil y toma mucho más esfuerzo y tiempo de lo que podría parecer. ¡Pero al final la recompensa es enorme!

Me han dicho que pongo demasiado esfuerzo en esto de la docencia y que debería concentrarme en otras cosas, como publicar artículos de investigación y subir en el escalafón académico (cosa para la cual la USB te presiona increíblemente), pero mis reales metas lo contradicen. La investigación es chévere, pero nada me motiva como lo hace la docencia. Poco a poco he tenido que ir soltando otros compromisos, para poder volver a concentrarme en enseñar. El año pasado hubo cursos que no atendí como les era justo, por estar muy ocupado. ¡Pero no se repetirá! Tengo que dar prioridad a lo que realmente me mueve y en donde soy más útil. Me han dicho también "es que no se puede ser papá de todo el mundo" y estoy totalmente de acuerdo... Prefiero ser su amigo y como un buen amigo, preocuparme por que estén bien y que les vaya de la mejor manera posible en sus vidas. Creo que la mejor manera de ponerse uno primero es pensando en los demás y siempre buscar de que formas puedes ayudar a otros.

Y bueno, esto es lo que quería compartir hoy. Un poco de lo que he visto y aprendido en estos años. Quizá esté equivocado y aprenda en el futuro otros caminos, pero me gustaría pensar que las cosas van bien y que puedo seguir reforzando este estilo extraño de enseñar que me encanta. ¡Hasta una próxima entrada! :D

domingo, 4 de enero de 2015

¡Para el 2015!

¡Ajá! Este es mi primer post del 2015 en el blog y quisiera comenzar por plantear algunos de los objetivos y metas personales que tengo para este año que empieza.

Here... we... go!!!

Antes que nada, en este post: ( Graciabale: 2013... ¡Palante Marik: 2014! ) me planteé algunas metas para el año 2014 y me gustaría ver que tal me fue con eso, jajaja.
  • Y bueno... ¡La meta más grande fue cumplida! Pude graduarme de la maestría finalmente. :D 
  • Logré publicar un minipaper en CoNCISa, junto con Jesús Ravelo, del cual honestamente estoy sumamente orgulloso. Además, con Leonid Tineo y José Ángel Labbad logramos mandar un capítulo a revisión para el libro "Handbook of Research on Innovative Database Query Processing Techniques". Y otro capitulo viene en camino, si nos da tiempo de culminarlo, jeje.
  • Leí unos cuantos libros buenos, pero la verdad es que ni cerca de la meta de "un buen libro al més". El trabajo me alcanzó y me dejó sin mucho tiempo libre (lamentablemente y afortunadamente a la vez, pues he aprendido muchísimo igual).
  • Sobre la comida sana... Bueno... XD En realidad comencé el año bastante bien e incluso luego, ha sido considerablemente mejor que en otros años. Sin embargo, confieso que hubo un tiempo en que caí en una de comer gorditamente casi todos los días (por alguna u otra razón, jajaja).
  • Realmente no me enfoque en aprender nuevos lenguajes de programación per sé. Ni Perl ni Python, aunque si comencé a reentrenar para las competencias de programación afinando mis conocimientos en C++ (lenguaje que no me gusta en lo absoluto, pero que es indudablemente adecuado en el contexto de estas competencias y que tenía personalmente como un punto débil).
  • El año pasado hice un gran total de... cero cursos en Courera... Realmente no pude, con todo el trabajo que he tenido. Estoy inscrito en algunos cursos que comienzan pronto. Veamos si puedo hacer alguno de ellos, jeje,
Bien, lo más importante fue cumplido, aunque hubo otras cosas que no tanto. Igual el 2014 fue un año sumamente exitoso, más allá incluso de las metas que me había propuesto. ¡Estoy sumamente satisfecho y orgulloso! :D

Ahora con lo nuevo, los proyectos y metas para este 2015:
  • Creo que la meta más importante que tengo para este año es aún un proyecto oculto, pero que va por muy buen camino. Podría representar un cambio muy grande en mi vida y es algo que me entusiasma muchísimo. Después de que ocurra lo que debe ocurrir, seguramente compartiré muchos más detalles por acá.
  • En este momento tengo a mi cargo 4 proyectos de grado (6 tesistas) y un importantísimo objetivo para el 2015 es que puedan culminar exitosamente sus trabajos de grado y satisfagan (o quizá incluso excedan) las altísimas expectativas que tengo con ellos. Estoy realmente entusiasmado con estos proyectos, pues creo que ayudarán muchísimo a futuros estudiantes y profesionales de la computación.
  • Igual que el año pasado, tengo como meta hacer algunos cursos interesantes en Coursera y seguir aprendiendo. Además, tengo la meta de aprender uno o dos idiomas de forma básica, usando la excelente herramienta: Duolingo. Actualmente estoy aprendiendo Portugués (because of reasons). Luego retomaré seguramente Alemán. ¿Y de ahí, quién sabe? Cualquier circunstancia es una buena razón para seguir aprendiendo. Además, hablar diferentes idiomas expande el pensamiento como nada y desdobla la imaginación.
  • Comenzaré a entrenar, en algún tiempo libre que consiga, para volver a ponerme en forma con las competencias de programación. De esta manera, estaré más a la altura del excelente equipo con el que participaremos en el mundial en Marruecos. Además, así podré ayudar más a los geniales equipos y personas que están entrenando actualmente para hacerse mejores.
  • Creo que renovaré la meta de empezar a comer sano. Eso incluye menos postres y menos chucherías entre comidas. De nuevo, de ninguna manera pienso hacer dieta (no sirvo para ese tipo de régimen, jajaja), pero si le bajaré dos a la comida gordita.
  • Apartando todo, hay situaciones que superar y otras que afianzar. Ya el final del año pasado se dieron pasos importantes (aunque parezcan imperceptibles) para eso y todo va muy bien. :)
  • Una importante meta que tengo para este año y una que sin duda será una de las más difíciles de cumplir: Aprender a decir que no... Estoy hundido en una montaña de trabajo (y todo realmente interesante). Y es que cada vez que alguien me ofrece un proyecto, de inmediato comienzo a maquinar como sería trabajar en él y todas las cosas que aprendería o en las que podría colaborar. Sin embargo, tengo que comenzar a dejar pasar algunas oportunidades, para concentrarme en las oportunidades ya tomadas. Seguiré estando en muchos proyectos y cosas interesantes, pero deberá ser una cantidad mucho más controlada y razonable. Quizá pronto escriba algún otro post explicando por que esto es tan difícil realmente para mi, pero el cambio es sin duda necesario.
Bien, creo que estos son mis objetivos para este año, al menos en primera instancia. Estoy seguro que este año me sorprenderá con muchas otras cosas geniales. :D

Y esto era lo que quería compartir con ustedes hoy. Creo que escribir las metas del año, a pesar de que ya uno mismo las conozca o que se cumplan finalmente o no, ayuda a colocarlo a uno en perspectiva para evaluar todo lo que se ha logrado y su futuro cercano. ¡Veamos que depara este 2015; estoy seguro que será legendario! Hasta una próxima entrada queridos lectores ocasionales. :P

martes, 14 de octubre de 2014

De aprender y enseñar

Como muchos que me conocen saben, me encanta mi carrera y me apasiona aprender siempre nuevas cosas y mejorar día a día. Pero hay una cosa que me mueve más que nada en el mundo: enseñar, compartir, ayudar a otros a crecer. Creo que en cada persona existe un potencial enorme de grandeza. Poder ser aunque sea una pequeña parte de lo que impulse a una persona a encontrar esa grandeza es un orgullo y un privilegio sin duda. Es la fuerza que me mueve y mi propósito de vida. :)

No podía dejar pasar este chiste malo, jajaja.

Desde que comencé a estudiar mi carrera, siempre me he preocupado por contribuir (de la mejor manera que mi limitada experiencia me permitiera) en ayudar a los demás y mejorar mi carrera. Fui preparador la mayor parte de mi pregrado y luego de eso, ayudante académico y finalmente profesor. Hasta donde la voz y el voto me permitieron en cada etapa, siempre intenté proponer nuevas herramientas que motivaran a aprender. Intentar mostrar un poco eso que siento al aprender algo nuevo, de la inspiración y el descubrimiento, para que otros puedan contagiarse quizá un poco y seguir aprendiendo y descubriendo por su cuenta.

Es por todo esto que muchas veces actúo como actúo. Soy el "profesor niño", aquel al que se confunde con un estudiante más si no fuera por la cara de viejo, jajaja. Muchos profesores creen que el camino al aprendizaje es a través del respeto y la distancia. ¡No estoy de acuerdo! Honestamente, creo que el mejor camino al aprendizaje es a través de la confianza, el humor y la automotivación constante. No sólo se crea el ambiente para que los demás aprendan más fácilmente, sino que a cambio terminas aprendiendo muchísimo más de tus estudiantes, tanto académica como personalmente.

Las responsabilidades de un profesor en una universidad, lamentablemente, no están centradas en la docencia y en la formación de los futuros gigantes. En cambio, está centrada en el descubrimiento y diseminación de nuevas ideas a través de la investigación. A pesar de que es algo que también me gusta y por lo que tengo un respeto enorme, no es realmente lo que me apasiona y es respecto a este único atributo que se mide la valía de un profesor e incluso de una universidad. He visto estudiantes de diferentes universidades que se enorgullecen al ver los rankings de universidades y ver sus propias casas en la delantera. Pero ese ranking lamentablemente no tiene nada que ver con la calidad de sus egresados, sino con la cantidad de publicaciones realizadas por profesores adscritos a ellas.

Creo que debería existir la figura del profesor docente, que pueda dedicarse a enseñar y no tanto a investigar. Así mismo la del profesor investigador, que sea justamente lo contrario. Conozco profesores a los que no les gusta enseñar, pero que son excelentes investigadores y eso es lo que les motiva. Eso está muy bien y tienen la suerte de vivir en un mundo donde ese talento es dado mayor importancia, pero deberían existir alternativas a ese filosofía. A su vez debería existir alguna medida, aunque sea difusa, de la calidad docente de una universidad (existen clasificaciones culturalmente aceptadas, pero ninguna formal o basada en argumentos sólidos). Y no lo digo por el reconocimiento involucrado, sino para que aquellos a los que nos apasiona enseñar tengamos la libertad de centrar nuestro trabajo y energía en justamente eso.

Y bueno, cuando comencé a escribir sobre esta entrada, en realidad se trataba de otra cosa pero me desvié, jajaja. Tengo en planes (aunque sin fecha de inicio estipulada) volver a estudiar mi carrera completa por cuenta propia y afinar los detalles que no comprendí por completo. De hecho, he estado haciendo eso ya por algún tiempo. Durante mis estudios, siempre que una materia me gustaba pero no la comprendía completamente hacía lo posible por dar la preparaduría en algún momento. Eso me pasó con una de mis materias favoritas: Traductores e Interpretadores. ¡Esa materia me encantó! Pero a duras penas la pasé (51/100 like a boss, jajaja). Y me fijé comprenderla, enseñándola. Y así fue. :)

¿Cómo planeo repasar mi carrera ahora? Leyendo más que todo, pero con un objetivo concreto en mente: Realizar un repositorio de guías y ejemplos de cada cosa que repase. De esa manera, no sólo aprenderé con mayor profundidad, sino que dejaré algo para que los demás puedan apoyarse en su aprendizaje también. Es un proyecto personal de gran escala y para el cual lamentablemente no cuento con tiempo ahora, pero me encantaría comenzarlo lo más pronto posible.

Y bueno, esto era lo que quería compartir por ahora con ustedes. Solamente un desahogo personal. Cuento con la suerte y el honor de pertenecer a grupos de investigación conformado por algunas de las mejores personas y docentes que conozco, lo cual ha hecho todo muy divertido e interesante. Pero siempre me hace falta ese algo extra especial. El brillo en la mirada de una persona que no sólo acaba de comprender algo, sino que disfrutó aprenderlo y está listo para utilizarlo en su vida. El agradecimiento sincero, aunque sea tácito, de quien halló su vocación y camino en parte con tu ayuda. Ese rincón en el corazón de todas las personas que compartieron contigo y con quienes lograste crecer mutuamente. Son cosas como esa a las que no se les puede poner precio y llenan la vida de color (seh, momento cursi del día patrocinado por Ricardo, jajaja). Hasta una próxima entrada y gracias por seguir leyendo estas locuras ocasionales. n_n

jueves, 14 de agosto de 2014

Discreto, Funcional, Implacable...

Como algunos ya saben, desde hace un tiempo he estado interesado en aprovechar las facilidades que trae un lenguaje funcional puro en la enseñanza de las matemáticas discretas. La primera entrada al respecto en este blog está aquí: ( Discretamente hablando: Haskell ). En esta ocasión quiero continuar con esa discusión, planteando una implementación directa del primer tema que se toca en el curso de Estructuras Discretas III de la USB: Los números enteros.

Like a sir, indeed!

Para este curso se usan las muy completas guías que realizó el profesor Yriarte (disponibles en: http://ldc.usb.ve/~yriarte/d2index.html). Que plantean muchos de los conceptos y propiedades importantes en un lenguaje fácil de entender (además que esté en Español, lo cual ayuda mucho a quien no maneja del todo el Inglés). Sin embargo, creo que se puede ir mucho más allá de una guía estática y convertirlo en una ayuda interactiva y flexible mediante el uso de un lenguaje como Haskell.

¿Por qué Haskell? Porque es un lenguaje funcional puro, de muy alto nivel, en el que las definiciones matemáticas abstractas son casi directamente plasmables de forma clara y compacta. Además, el sistema de tipos estático ayuda en gran medida a la correcta definición de las funciones y los tipos de interés. ¿Por que no algo más especializado como Coq o Idris? (Excelente sugerencia de Manuel Gómez en la entrada anterior) Las únicas razones válidas hasta el momento: tiempo y falta de experiencia. Estos lenguajes/herramientas tienen sistemas de tipo mucho más elaborados y rigurosos que permitirían mucha más confianza en las definiciones hechas. Incluso, permitirían la elaboración de pruebas simbólicas en el contexto del mismo lenguaje (ver: Idris: verifying a monoid). Sin embargo, explorar las capacidades de estos lenguajes y de como acotarlas a un nivel que sea a la vez correcto, pedagógico y práctico, es algo que tomaría tiempo y por tanto estaría sujeto a una próxima iteración de cambios.

Antes de comenzar con los temas correspondientes a Estructuras Discretas III, hacen falta algunos preliminares (idealmente, ya se hubiera usado un lenguaje como Haskell al menos en Estructuras Discretas II, pero no es el caso en esta ocasión). En particular: lo que quiere decir poder hacer aritmética sobre un tipo determinado y el tipo de los números naturales. Nótese que hablo de tipos en vez de conjuntos. ¡Esa es una de las principales ventajas del enfoque funcional! Se desliga de la fundamentación en conjuntos (heterogénea y complicada) a una fundamentación en tipos (homogénea y constructiva). Para una discusión mucho más elaborada de esto basta ver cualquier libro de teoría de tipos básica y empezar a notar todas las ventajas. Teorías de tipos más complejas dan aún más comodidades, a expensas de claridad en la presentación y por tanto se intentará mantener la presentación lo más sencilla posible (por ejemplo, la igualdad será considerada una proposición, no un tipo como es costumbre en teoría de tipos).

A continuación un archivo Haskell con la implementación de los preliminares necesarios hasta el momento:


A continuación un archivo Haskell con la implementación de los números naturales como números de Church:


Una vez se han establecido los preliminares, se puede comenzar a tocar temas de Estructuras Discretas III. La primera guía de Yriarte (ver: Capítulo Uno) se trata de los números enteros. En particular, la sección 1.2 los define y plantea algunas propiedades sobre los mismos. A continuación un archivo Haskell con la implementación de los números enteros, según la guía antes mencionada:


Es notable como poco a poco aumenta el nivel de abstracción hasta el punto que, en la definición de la función valor absoluto (abs), la implementación interna y complicada de números enteros se vuelve completamente transparente. ¡Esta es la belleza de una teoría constructiva!

Desventajas: Hay una inconsistencia entre la definición formal de los números enteros y la que plantea el tipo en Haskell. Los enteros son clases de equivalencia (conjunto cociente del producto N x N con respecto a la relación planteada en la ecuación 1.1). En Haskell, son tratados simplemente como miembros del producto N x N. Esto por varias razones: La guía tiene la misma inconsistencia con respecto a la definición, pues plantea las propiedades y definiciones posteriores en términos de N x N y no del conjunto cociente. Pero la más importante de las razones sería que realmente no encuentro una manera fácil e intuitiva de construir un tipo que corresponda a clases de equivalencia, sin entrar en temas muy oscuros como para una materia introductoria. (Se aceptan sugerencias en este punto).

A través de las definiciones en Haskell se puede notar una falta de estandarización en los nombres. Por ejemplo, a veces las variables son x, y, z... otras son m, n, p... y otras son a, b, c... sin motivo aparente.  Estas son importadas directamente de la guía, para no chocar con los nombres ahí utilizados. Además, algunas proposiciones son "propiedades" y otras son "teoremas". Ambas son demostrables a partir de las definiciones dadas. ¿Por qué la distinción? Ese tipo de detalles y muchas otras cosas más que me parece que faltan me hacen pensar que quizá sea más interesante, en vez de implementar un apoyo a las guían que ya existen, hacer un reboot y reescribir las guías desde un punto de vista funcional. ¡Quizá hasta un libro! Independiente del curso y general para cualquiera interesado en hacer matemáticas discretas desde un punto de vista funcional. Hasta les tengo el nombre ya (hint: el título de esta entrada es un spoiler). Se llamaría "Discreto, Funcional, Implacable..." y me imagino que la portada sería algo como un James Bond sosteniendo un arma que en realidad es un lambda. Pero esos ya son detalles no tan importantes (aunque divertidos. XD).

¿Qué opinan? ¿Va por buen camino? Gracias a muchos comentarios de diversas personas la cosa ha ido tomando forma. Me gustaría seguir recibiendo opiniones con respecto a esto para enriquecerlo y terminar con una propuesta sólida, implementable y divertida. ¡Muchas gracias a todos los que han ayudado (y a los que ayudarán. XD)!

Hasta una próxima entrada. :)