sábado, 23 de junio de 2012

En homenaje a Alan Turing, una máquina en Python

En homenaje a Alan Turing, en el centenario de su nacimiento, una máquina universal de Turing, implementada en Python.

El ejemplo toma una cadena de A's y B's arbitrarias y sustituye todo por A's. Cambiando las reglas de las transiciones y los símbolos usados se podría cargar cualquier máquina... Al final se produce una respuesta: Accept o Crash.

Tomada de: http://code.activestate.com/recipes/252486-turing-machine-simulator/

## {{{ http://code.activestate.com/recipes/252486/ (r1)
#!/usr/bin/env python
# (C) 2003 Ryan Phillips 
# Uses Python 3 
 
import sys

pr = sys.stdout.write

class MachineTapeException(Exception):
 """ Turing Exception Exception """
 def __init__(self, value):
  Exception.__init__(self)
  self.value = value
 def __str__(self):
  return self.value

class TuringErrorException(Exception):
 """ Turing Exception Exception """
 def __str__(self):
  return "Crash"

class TuringAcceptException(Exception):
 """ Turing Accept Exception """
 def __str__(self):
  return "Accept"

class MachineTape:
 def __init__(self, initialString=[], initialPos=0, blank="_"):
  """ The Tape uses a simple list.  It could easily be changed into a string if
      need be """
  self.tape = []
  self.pos = initialPos
  self.blank = blank
  self.initialString = initialString
  if len(initialString) > 0:
      for ch in initialString:
       self.tape.append(ch)
  else:
      self.tape.append(blank)

 def reinit(self):
  self.__init__(self.initialString)

 def move(self, check_char, changeto_char, direction):
  """ Only R, L directions are supported """
  # check to see if the character under the head is what we need
  if check_char != self.tape[self.pos]:
   raise MachineTapeException ("Tape head doesn't match head character")
  
  # at this point the head is over the same character we are looking for
  #  change the head character to the new character
  self.tape[self.pos] = changeto_char
  
  if direction == "L":
   self.move_left()
  elif direction == "R":
   self.move_right()
  else: raise MachineTapeException ("Direction is invalid")
 
 def read(self):
  """ return the character over the head """
  return self.tape[self.pos]
 
 def move_left(self):
  if self.pos <= 0: 
   self.tape.insert(-1, self.blank)
   self.pos = 0
  else:
   self.pos += -1

 def move_right(self):
  self.pos += 1
  if self.pos >= len(self.tape): self.tape.append(self.blank)
 
 def show(self):
  """ print the tape """
  for ch in self.tape:
   pr(ch)
  pr("\n"); pr(" "*self.pos + "^"); pr("\n")

"""
The program structure for the TM is created with a dictionary.
    To step algorithm:
 1. Check to see if the length of the string is zero and if we
     are in a final state
 2. If the currentstate is in the final states then raise an Accept
 3. If the currentstate is not in the program then raise an Error
 4. Check the head character
 5. If the head character is not in the program and in the current state then
     raise an Error
 6. Retrieve from the dictionary the dest_state, char_out, and movement
 7. set the current state to the new state
 8. write the tape, and move the head

Program Layout:
    [state][char_in] --> [(dest_state, char_out, movement)]
"""

class TuringMachine:
 def __init__(self, initialString, finalStates=[], blank="_"):
  self.blank = blank
  self.tape = MachineTape(initialString)
  self.fstates = finalStates
  self.program = {}
  self.initState = 0
  self.state = self.initState
  self.lenStr = len(initialString)
 
 def reinit(self):
  self.state = self.initState
  self.tape.reinit()
 
 def addTransition(self, state, char_in, dest_state, char_out, movement):
  if not self.program.has_key(state):
   self.program[state] = {}

  tup = (dest_state, char_out, movement)
  self.program[state][char_in] = tup

 def step(self):
  """ Steps 1 - 3 """
  if self.lenStr == 0 and self.state in self.fstates: raise TuringAcceptException
  if self.state in self.fstates: raise TuringAcceptException 
  if self.state not in self.program.keys(): raise TuringErrorException
  
  """ Steps 4 and 5 """
  head = self.tape.read()
  if head not in self.program[self.state].keys(): raise TuringErrorException
   
  """ Steps 6 and 7 """
  # execute transition
  (dest_state, char_out, movement) = self.program[self.state][head]
  self.state = dest_state
  try:
   """ Step 8 """
   self.tape.move(head, char_out, movement)
  except MachineTapeException, s:
   print s

 def execute(self):
  """ The TM will keep stepping forever until the TM accepts or rejects.
      This does allow for looping TM's """
  try:
   while 1:
    m.tape.show()
    m.step()
  except (TuringErrorException, TuringAcceptException), s:
   print s

if __name__ == "__main__":
    # machine to convert a string of A's and B's to
    # all A's and accept
    m = TuringMachine("ABBABB", [1])

    m.addTransition(0,'A',0,'A','R')
    m.addTransition(0,'B',0,'A','R')
    m.addTransition(0,'_',1,'_','L')

    # run the TM
    m.execute()
## end of http://code.activestate.com/recipes/252486/ }}}

martes, 19 de junio de 2012

Entorno No Integrado de Desarrollo (UDE)

Casi todos los desarrolladores que conozco acostumbran utilizar herramientas pesadas para hacer su trabajo.


Una de dichas herramientas, el IDE (entorno de desarrollo integrado) suele ser un programa grande que incluye en un sólo paquete las herramientas más comunes que un desarrollador puede llegar a necesitar.


Ese es el problema: asumir que el desarrollador VA a necesitar las herramientas, cuando en realidad sólo PUEDE que las necesite.


Por esa razón, tiene un tiempo ya que no utilizo IDEs para mi trabajo. O como leí alguna vez, utilizo un entorno NoIntegrado de Desarrollo (Unintegrated Development Environment).


Armar un entorno así no es nada difícil, y sólo requiere de un conocimiento concisio de las herramientas que en realidad tiene a su disposición un programador para hacer su trabajo, según el sistema sobre el que trabaje.




El primer elemento, el editor de texto, debe ser una herramienta sencilla y a la vez eficaz, que haga bien su trabajo. Suele ser una herramienta muy especializada, y aunque para muchos pueda parecer trivial, la realidad es que es la más importante de todas. Ideal que cuente con resaltado de sintaxis, y si es posible, integración con algunas de las otras herramientas (lo que haría del editor de textos, para efectos prácticos, un mini-IDE, pero eso es otro asunto). En gustos se rompen géneros, los hay para entornos gráficos de escritorio como para entornos de consola. Mi favorito, Emacs, tiene la posibilidad de integrarse con muchísimas herramientas más, además de poder ser programado y extendido (usando Lisp) para hacer mejor las labores que un editor de textos potente (propio de un programador) debe realizar. Claro, también está vim, gedit, en windows está notepad++, y un largo etcétera...


Anexo al editor de textos, no viene nada mal alguna herramienta para búsqueda de declaraciones, para localizar fácilmente los encabezados y declaraciones de funciones, clases y demás bichos que viven en un programa común. En Unix existen ctags y etags, que generan un pequeño archivo con las referencias para localizar estas declaraciones y que puede integrarse fácilmente a Emacs o vim.


Dependiendo el lenguaje de programación utilizado, por supuesto que se tiene que tener el compilador o intérprete adecuado al lenguaje en cuestión. Incluso los IDEs dependen de esta herramienta externa, pues los lenguajes de programación son algo tan vasto, que incluye librerías y extensiones por sí mismas, e incluirlas en un mismo paquete ya sería una exageración para el de por sí exagerado tamaño de los IDEs. No entraré en detalles de esta herramienta, ya que depende siempre del lenguaje en cuestión el tener el compilador o intérprete y las librerías adecuadas correctamente instaladas para su uso.


Y si el desarrollo que se está haciendo implica alguna plataforma específica, por ejemplo web, además se requerirá de algún entorno de desarrollo bien armado que incluya un servidor web, con cgi bien configurado, de forma que no sólo se escriba texto, sino que también se puedan hacer las pruebas adecuadas accediendo, por lo menos, a http://localhost , es decir a la propia máquina. Lo mismo aplica para motores de bases de datos y cualquier otro recurso del que haga uso el proyecto en el que se esté trabajando.


De la mano del proceso de compilación y lanzamiento para pruebas (o incluso a producción o 'deploy') del proyecto en que se esté trabajando, está la herramienta de generación y automatización de código. Compilar todo un proyecto puede ser un proceso complejo que incluya no solamente generar el código objeto (o como se llame en el lenguaje en particular que se use) de un archivo modificado, sino también puede haber dependencias entre los otros archivos, generación de código (por ejemplo para analizadores léxicos y gramaticales), producción de archivos de otros tipos (imágenes, documentación, etc.) que dependan directamente de otros archivos del proyecto. ¿Cómo hacer la vida sencilla a un desarrollador ante esta complejidad? La herramienta por antonomasia es make, que aunque se originó para proyectos en lenguaje C, es tan potente que puede ser usado para prácticamente cualquier proyecto de cualquier lenguaje, e incluso para cualquier otro proyecto que no sea de programación pero que requiera de la producción de archivos con base en dependencias.


Hablando del deploy, incluso este puede automatizarse de manera eficiente. Depende mucho del entorno en que el proyecto vaya a ser lanzado. Pensando por ejemplo en un proyecto web, si se cuenta con acceso SSH o FTP al servidor en donde será lanzado, se puede utilizar rsync. Algunos utilizan el versionador para estas labores, pero yo no lo recomiendo. Un versionador además de que incluye archivos ajenos al proyecto final ya lanzado, tiene un propósito específico. Recuerda: no uses un desarmador como martillo. Otros proyectos se lanzan en otros entornos o con otras condiciones. La idea en sí es encontrar las herramientas adecuadas que permitan estos procesos de manera sencilla, eficiente y precisa. Incluso simplemente copiar y pegar archivos puede servir, pero si se puede contar con una herramienta más avanzada (que mantenga por ejemplo un log del proceso del deploy, con capacidades de deshacer y revertir el proceso en casos de emergencia), mejor. Aquí, como en los otros casos, aplica también el principio básico de que, si no se cuentan con las herramientas adecuadas, habrá que crearlas. Por algo somos programadores, y por lo menos para el caso del deploy, algunos scripts en bash, sql, python y demás pueden bastar para lo que se requiere. 


Una de las herramientas más útiles que conozco para el desarrollo es el versionador. Con un versionador se puede, como su nombre lo indica, mantener versiones del código de un proyecto. ¿Para qué mantener versiones del código si de todas maneras lo que importa es el producto final? Por mil razones: a veces el desarrollo toma un camino que ya no agrada (porque funciona mal o porque cambian los objetivos) y es bueno poder regresar a una versión del código que no incluya esos últimos cambios; organizar equipos de desarrollo es muchísimo más fácil (en varios órdenes de magnitud) usando versionadores que administrándose como se pueda y dejando que todos hagan lo que deseen; los versionadores proporcionan la posibilidad de ramificar el desarrollo, dirigiéndolo hacia distintos objetivos cada rama, y posteriormente unificarlas de regreso, con los distintos desarrollos ya hechos de manera independiente. Hay muchos versionadores, pero los que valen la pena hoy en día son los llamados distribuidos, como Git (mi favorito) o Mercurial.


Y ¿qué desarrollo está completo sin un ciclo de depuración de errores? Alguna vez leí un artículo donde se mencionaba que el proceso de depuración (o debuggeo) conlleva cerca del 80% del tiempo de desarrollo de un proyecto. Así que más vale agarrarle el gusto a esta etapa del desarrollo, que está embebida dentro de todo el proceso, no es que vaya a encontrarse en algún lugar específico, al inicio o al final. Y se puede depurar haciendo simples prints de mensajes a consola, pero es mejor utilizar un debugger simbólico, como el que los IDEs acostumbran incluir. Claro está, dependiendo el lenguaje de programación usado, serán las herramientas de depuración con que se cuenten. Los proyectos en C y C++ pueden utilizar fácilmente gdb. Java cuenta con jdb. Python con pdb...


Dependiendo del lenguaje, sobre todo los interpretados, estos llegan a contar con una herramienta que a mi en lo particular me es muy útil. El shell del lenguaje donde se puede jugar libremente con el mismo, experimentar, probar cosas e investigar también. Python y Ruby, por ejemplo, tienen uno.


Y así puedo seguir enumerando más herramientas. Las que ya mencioné son las que más utilizo yo, pero existen otras. Por ejemplo, perfiladores de consumo de recursos (para la labor de optimización que, recuérdese, SIEMPRE se debe hacer hasta el final, y solamente una vez que ya se midió. El perfilador sirve precisamente para este propósito), o herramientas para armar pruebas (unitarias, funcionales, de estrés). Múltiples herramientas del sistema pueden aprovecharse para el desarrollo: buscadores de textos y de archivos, herramientas de diagnóstico, documentación, etc.




El punto es, como dije al principio, conocer todas y cada una de las herramientas individuales que suelen venir empaquetadas en un IDE, y así desmenuzadas, aprovecharlas al máximo y sin la obligación de tenerlas para no usarlas, con el consecuente consumo de recursos excesivo que los IDEs plantean. ¿O a poco no es cierto que Eclipse o Netbeans llegan a alentar tu máquina muchas veces?


Y además, se tiene la GRANDÍSIMA ventaja de poder elegir. Si un editor no te gusta eliges otro, si un debugger no te satisface, probablemente existan muchos más. Yo por ejemplo, cuando desarrollo en python, no utilizo el shell y el debugger por default que se incluyen con el lenguaje. Yo utilizo, como buen fan de la consola que soy, ipython como shell y ipdb (muy relacionado con ipython) como debugger. Es cosa de buscar, probar y elegir.




¡Ah! y no quiero terminar este post sin antes mencionar otro par de detalles de los UDEs (Unintegrated Development Environments). Conforme se quiera contar con más y mejores herramientas, se dará uno cuenta que el sistema sobre el que se trabaje también hará la diferencia entre PODER elegir, y TENER que elegir. Es decir, que la libertad que se tenga entre elegir por separado las herramientas para hacer un mejor trabajo de desarrollo, depende muy directamente del sistema sobre el que se trabaje. Y en algunos sistemas desafortunadamente, tanto la cantidad y disponibilidad de herramientas es más bien escasa (tanto que en muchos sistemas así a veces no queda de otra más que usar a fuerzas o a fuerzas un IDE), pero también las interfaces de desarrollo entre el proyecto y el sistema suelen ser pobres, defectuosas, mal documentadas, nada compatibles entre versiones diferentes del mismo sistema, en fin, que hacen de la labor de desarrollo lo que en inglés se conoce coloquialmente como un 'pain in the ass'. Yo por eso prefiero trabajar en un ambiente Unix. Es mi eleccion personal, sí, pero no sólo es mía, muchos desarrolladores estarán de acuerdo conmigo que trabajar en un sistema Unix es muchísimo más productivo, y hasta relajante, que trabajando en un Windows. Y claro, al decir Unix, abarco no sólo Linux o los BSDs, incluso Mac podría caer en esta categoría, lo malo es que no todos tenemos tanto dinero para pagarnos las herramientas, y además, en mi opinión, no es tan buen sistema para desarrollar: menos documentación, creo yo que menos gente en internet ayudando, más restricciones; es un entorno que, según leí alguna vez, podría compararse con un jardín amplio, grande y bello, pero que al final tiene bardas en los límites.


Y por cierto, acabo de mencionar casi por accidente el último recurso importante: internet. ¿Qué desarrollador puede preciarse de llamarse así si no sabe dónde y cómo buscar la información y documentos, ejemplos, ayuda que necesita entre otros desarrolladores (por ejemplo en foros o sitios dedicados a la consulta como stackoverflow) y que han enfrentado problemas similares? Simplemente para conocer más herramientas que cumplan las funciones ya enlistadas y otras, internet es fundamental. Yo soy de la opinión que un desarrollador no lo es más sólo por saberse un lenguaje o una tecnología de memoria al derecho y al revés. Esa función ya la cumple internet. Lo que se necesita es muchísima creatividad, y por supuesto un conocimiento y uso adecuado de las herramientas que convengan en el momento.

martes, 12 de junio de 2012

Bienvenido a este mundo


Una entrada tomada de http://www.quaelibet.net/Ejercicios/bautizo.html , sitio que por cierto incluye otras reflexiones muy buenas que luego pondre aqui...


Por mis hijos.
Por mis nietos.
Que si se pierden,
los busques.




BIENVENIDO A ESTE MUNDO

ASÍ ESTÁ EL MUNDO


Villon
Miro, a mis pies, los centelleos grises de Bouville. Con el sol, uno diría que son pedazos de cáscaras, escamas, esquirlas de hueso, guijas. Escondidos en esos escombros, minúsculos cascos de vidrio o de mica emiten de vez en cuando destellos débiles. Los regueros, las zanjas, los estrechos surcos que corren por entre las cáscaras, dentro de una hora serán calles; yo pasaré por esas calles, por entre esos muros. Esos monigotillos negros que entreveo en la calle Boulivet… dentro de una hora, yo seré uno de ellos.HausmannDesde lo alto de esta colina, me siento uno de ellos. Pero me parece que yo pertenezco a otra especie. Acabado el trabajo, salen de las oficinas, miran las casas y las plazoletas con aire satisfecho, piensan que están en "su ciudad", una "bonita ciudad burguesa".  No tienen miedo, saben que están en casa. Nunca han visto más que el agua domesticada que sale del grifo, la luz que echan las bombillas cuando le dan a la llave, los árboles mestizos, bastardos, que se sostienen con guías. Tienen comprobado, cien veces al día, que todo marcha mecánicamente, que el mundo obedece a leyes fijas e inmutables. Los cuerpos sueltos en el vacío caen a la misma velocidad, el parque cierra todos los días a las dieciséis horas en invierno, a las dieciocho en verano, el plomo funde a 335°, el último tranvía sale del ayuntamiento a las veintitrés horas cinco minutos. Es gente tranquila, un poco taciturna, que piensa en Mañana, es decir, simplemente en otro hoy; estas ciudades no tienen más que un solo día que se repite cada mañana. A penas lo emperejilan un poco los domingos. ¡Imbéciles! Me da asco pensar que voy a volver a ver esas caras espesas y tranquilas. Hacen leyes, escriben novelas populacheras, se casan, cometen la suprema estupidez de tener hijos (Jean-Paul Sartre: "La Nausée").



EN LA PUERTA

Espiritu
Y nosotros, ¿por qué le hemos pedido a la Iglesia que bautice a este niño? ¿Por si acaso? ¿Porque somos personas decentes? ¿Para que la criatura sea "como todo el mundo"? 
¿O es porque de verdad creemos que "algo tendrá el agua, cuando la bendicen"? ¿Que hay otra luz que no es la que echan las bombillas? ¿Que hay otra vida que no necesita guías para sostenerse? 
Y además, ¿para qué hemos tenido un hijo? ¿Para que vegete lo que le queda de vida? ¿Para que se pase la vida pensando tristemente en el "mañana", en ese "mañana" que no será más que otro "hoy" que se repite cada día igual? 
¿O será porque en el fondo creemos que hay un camino de vida, siempre nuevo y sorprendente, siempre distinto, abierto a la Eternidad, que este niño podrá seguir si sabemos decirle dónde está? Porque si no hay Vida Eterna, entonces, ¿para qué lo hemos traído al mundo? ¿En nombre de qué felicidad, si no es eterna e infinita? 
Si le hemos pedido a la Iglesia de Dios el bautismo para este niño, debe ser porque sabemos, o por lo menos porque sospechamos que hay un misterio en el agua, que hay un misterio en la luz, que hay un misterio en la vida que nos salva de ahogarnos en la insignificancia y en la tristeza del mundo: que hay otra senda que se sale de los trayectos trillados que no llevan a ninguna parte. 
A la puerta de la iglesia hemos pedido el bautismo para nuestro hijo. 
Y la Iglesia le ha abierto una puerta que lleva a la verdad, a la luz y a la felicidad. Pero tendremos que pasar por esa puerta delante de él y con él: tendremos que enseñarle por dónde se va, si no queremos que se pase la vida solo, descaminado y sin meta, dando vueltas sobre sí mismo y alrededor de sus problemas.


CRUZ Y CRUCES

12Dali
Le hemos hecho el signo de la cruz. Ahora tendremos que enseñarle que sus más humillantes fracasos, sus más atroces sufrimientos, tienen ya sentido. Que nunca se sufre porque sí, aunque nunca se sepa por qué se sufre. 
La Iglesia, que guarda en su corazón las huellas, la palabra y la presencia de Jesús, sabe que Él venció el fracaso, el dolor, la agonía y la muerte. Tendremos que recordarle, cuando tenga edad y urgencia de comprender, que los dolores serán para él vigilias de victoria. Difícil va a ser convencerlo, si a nosotros no nos ha convencido Dios. 
Si no nos cree, a lo mejor es que todo eso tampoco nos lo creemos nosotros: a lo mejor es que lo hemos traído aquí a la iglesia de mentira, aprovechando que, tan chiquito como es, no se puede defender. Quiera Dios que la mentira del mundo no haga de esta criatura otro payaso que se crea que puede engañar a Dios, como antes hemos intentado engañarlo nosotros y ahora estamos engañando al niño. 
Si este niño no encuentra a nadie que sea para él Iglesia, si no encuentra indicios que le hagan empezar a sospechar que pocas cosas se explican, pero que todo tiene un por qué y un para qué en el corazón de Dios; a sospechar la presencia de Jesús en los momentos de horror, entonces quizá se pregunte un día, y quizá nos pregunte a nosotros, que para qué lo trajimos al mundo, que para qué hemos fabricado otro desgraciado, otro hastiado, otro enfermo, y al final, otro cadáver. Quiera Dios que este bautizo no sea una payasada.


LOS QUE YA VEN

VanEykHemos invocado a los que ya ven, a los santos, nuestros padres en la fe. Porque la Iglesia toda ha recibido a este niño: no sólo la Iglesia que, como nosotros, sigue las huellas de Jesús, intentando descubrirlo, sino también la que ya lo ha encontrado, la que ha entrado en el Misterio, la Iglesia de los que, porque están ya con Él, con el Padre y con el Espíritu, están más cerca de nosotros que nosotros mismos. Aunque se traicione a este pequeño, aunque lo traicionemos, aunque se traicione él mismo, ellos siempre velarán por él. 
El sacerdote ha rezado para que este niño se desintoxique del pecado original: de esa adicción a la insignificancia, al egoísmo, a la mentira y al crimen con la que nacemos ya drogados por una humanidad criminal; 
…de esa estupidez congenital con que se le vuelve la espalda a Dios para adorar ídolos sedientos de sangre: dinero, poder y sensualidad; 
…de esos instintos de muerte que nos llevan a edificar infiernos para nosotros y para los demás en esta tierra que debería ser un paraíso. Y quiera Dios que no los eternicemos después, por haber perdido para siempre el sentido de la belleza, del bien y de la verdad. 
El sacerdote le ha impuesto las manos, como signo de la protección y amistad de todos los que Jesús ha salvado de ellos mismos y de Satán, y que están trabajando por construir los caminos del mundo que llevan a Dios.


EL AGUA Y LAS AGUAS

18DaliEste líquido es agua. 
Cuando está pura 
es inodora, insípida e incolora. 
Reducida a vapor, 
bajo tensión y a alta temperatura, 
mueve los émbolos de las máquinas que, 
     [por eso, 
se denominan máquinas de vapor. 
Es buen disolvente. 
Aunque con excepciones pero de un modo 
     [general, 
disuelve todo bien, ácidos bases y sales. 
Congela a cero grados centesimales 
y hierve a 100, cuando la presión es normal. 
Fue en este líquido donde en una noche 
     [cálida de verano, 
apareció flotando el cadáver de Ofelia 
bajo una luna gomosa y blanca de camelia 
con un nenúfar en la mano. 
(Antônio Gedeão)Nos hemos acercado, con el niño, a la pila del bautismo.
"Dios ha querido servirse del agua para darles la vida a los que creen en Él".
Los que creen en Dios tienen la suerte de ver que el mundo tiene sentido, y en qué sentido va el mundo.
El agua es el elemento en el que surge la vida. Pero la vida es más, y es otra cosa que una reacción química en cadena. Los que no creen en Dios, los que no se fían de Él, van tirando: los unos, como pueden; los otros, como los dejan. Al que cree, al que se fía de Él, Dios le da la alegría de vivir en Él, con Él y para Él, por los siglos de los siglos.
De eso y de muchas otras cosas, ya se irá dando cuenta este niño, por experiencia propia, a medida que vaya creciendo en la oración.
El agua es el medio interno del hombre. Y fue también el medio interno del cuerpo de Dios hecho hombre, el agua que surgió de su costado atravesado por la lanza, y que liberó el Espíritu.
El agua es el elemento que lava las impurezas. Y fue también el agua del Jordán que le dio al Señor el sentido de su misión.
Las aguas son el horror del Diluvio, las aguas negras del abismo que ahoga, del vacío que engulle la vida y las ganas de vivir.
Pero el Espíritu de Dios, que sopla sobre las aguas del abismo, trinfa sobre el caos y el vacío. Y Jesús triunfa de la muerte resucitando.
La Iglesia nos pide que le enseñemos a este niño que se va a sumergir en las aguas, que en las aguas han quedado, para quien haya aprendido a verlas, las primeras huellas que Jesús ha dejado en la tierra.
Tenemos que enseñarle a aguzar la vista del alma para que aprenda a ver esas cosas que dan vida, y que los que están muertos en vida no han visto nunca y quizás nunca verán.
Por eso la Iglesia nos ha pedido que nos neguemos a ser muertos en vida, que renunciemos a los pequeños embustes y a la gran mentira. Que renunciemos a Satán, a sus pompas y a sus obras.



FIARSE Y CONFIAR

¿Es verdad que tenemos abiertos los ojos del alma? ¿Será verdad que los mantendremos abiertos para ayudar a nuestros hijos a que los abran? Porque es muy difícil ver con el corazón. 
¿Hemos empezado a columbrar en el cielo y en la tierra las huellas del Padre que nos ha hecho padres? 
David¿Hemos empezado a darnos cuenta de que Jesús no fue otro pobre loco que se creyó que era Dios? Porque si Jesús no es Dios, si sus discípulos nos han engañado, entonces ¿adónde iremos? ¿A qué Ídolo vamos a sacrificar? ¿A la Clase Obrera? ¿A la Nación? ¿Al Libre Mercado? ¿A Mi Yo Profundo? ¿Y a cuánta gente tendremos que matar, y cuánta gente tendremos que dejar que se muera? 
¿Creemos que María no engañó nunca a nadie, y menos a su marido? 
¿Hemos empezado a no creernos que el Señor del Mundo es el millonario o el poderoso? ¿A creer en ese Jesús de Nazaret a quien torturaron, mataron y enterraron? 
GruenesaldTres días después, el sepulcro estaba vacío. Se dio como versión oficial que sus discípulos habían robado el cadáver. Los discípulos decían que se había levantado y que estaba vivo. ¿De quién nos vamos a fiar? ¿De las autoridades de Jerusalén o de los discípulos de Jesús? 
Este niño, ¿nos verá sonreír con la gracia de Dios y la alegría del Espíritu, o nos verá siempre tristes porque no tenemos dinero, ni tiempo, ni cariño? ¿Nos verá vivir con humor y humildad, o tiesos como el que se tragó el bastón… de mando? Y cuando demos nuestra opinión sobre lo que pasa en el mundo, ¿nos iluminará el Espíritu de Dios para que juzguemos con los criterios de Jesús? 
¿Hemos empezado ya a darnos cuenta de lo que hay detrás de la puerta de la Iglesia? ¿Hemos empezado a entender que la Iglesia guarda y transmite el testimonio de la Palabra de Dios, del Cuerpo y de la Sangre del Señor y del camino único de la vida? 
¿Hemos empezado a descubrir la presencia de nuestros padres en la fe? ¿Sabemos reconocer a quienes conocen a Dios por experiencia de oración y de entrega al prójimo? 
¿Hemos reconocido la mano de Dios cuando nos ha sacado del hoyo? ¿Creemos que es posible que Dios haga santo a un sinvergüenza, porque perdona los pecados de los que quieren de verdad? 
¿Vamos a poderle explicar a este niño lo que es la resurrección de la carne? ¿Estará convencido cuando sea grande de que la alegría de vivir de los pequeños -también de los animales- no es un engaño? ¿Que hay una vida antes de la muerte, porque hay una vida ahora, siempre y por los siglos de los siglos? ¿Que no ha nacido condenado a muerte, sino invitado a disfrutar de la vida de Dios? ¿Que no lo hemos engañado trayéndolo a esta tierra? ¿Que Dios no es Dios de muertos, sino de vivos?


BAUTISMO

Hodler
Porque la Iglesia cree en sus padres, porque cree en nosotros, porque cree que guardaremos en el corazón lo que hemos visto, lo que hemos empezado a ver y lo que seguiremos viendo, el sacerdote ha sumergido simbólicamente tres veces al niño en estas aguas que son abismo de muerte, y lo ha sacado sano y salvo



en el Nombre del Padre
y del Hijo
y del Espíritu Santo.
¿O ignoráis que cuantos hemos sido bautizados en Cristo Jesús fuimos bautizados para participar en su muerte? Con Él hemos sido sepultados por el bautismo, para participar en su muerte, para que como Él resucitó de entre los muertos por la gloria del Padre, así también nosotros vivamos una vida nueva (Rm 6,3-4).

UNCIÓN

LaTourEl aceite sustenta, cura y fortalece. El perfume embellece y embalsama. Con una mezcla de aceite y de perfume, la Iglesia ha ungido a este niño para que sea sacerdote, profeta y rey. Porque desde ahora es miembro del Cuerpo de Cristo, el Ungido como sumo y definitivo Sacerdote, el más grande de los Profetas, y el único Señor del mundo. 
Como miembro de la Iglesia, este niño es sacerdote, intermediario entre los hombres que quieren poder esperar, y el Padre que los espera. 
Como miembro de la Iglesia, este niño es rey, llamado a dominar las fuerzas del mal, a conquistar la vida y a perderla si es necesario para que otros vivan. 
Este niño debe, como Jesús, pasar por el mundo haciendo el bien. Por eso lo han vestido de blanco, en signo de rectitud, de lealtad y de alegría. 
Así será vigía de la aurora, el que vela mientras otros duermen, el que espera el resplandor de la Luz, la llegada del Cristo en su gloria. Por eso nos han puesto en la mano estos cirios encendidos en el cirio pascual, testigo de la Resurrección del Señor. Ojalá recuerde, cuando ataquen la tinieblas, lo que vio en momentos de lucidez: que la guerra contra la injusticia y el dolor la ganará el Padre, no con ejércitos ni por la fuerza, sino con su Espíritu. Y que el deber del centinela es no dormirse. 
Y tú, niño, serás llamado profeta del Altísimo, pues tú irás delante del Señor para preparar sus caminos (Lc 1,76).


EL MUNDO ES ANSÍ

Virgen…El mundo, algunos días, nos parece una cosa horrible: inmenso, ciego, brutal. Nos zarandea, nos arrastra, nos mata. Sin cuidado. Heroicamente, hay que decirlo, el Hombre ha conseguido crear, en medio de la aguas frías y negras, una zona habitable, donde casi hay algo de claridad y un poco de calor; donde las personas tienen cara para mirar, manos para suavizar, corazón para querer. Pero ¡qué precaria es esta morada! A cada instante, por cada rendija, irrumpe la gran Cosa horrible, esa que está siempre ahí, separada de nosotros por un simple tabique, aunque hagamos todo lo posible para no darnos cuenta: fuego, peste, tormenta, terremoto, fuerzas morales oscuras desencadenadas, arrancan en un instante, sin consideración, lo que habíamos construido con tanto trabajo y adornado con toda nuestra inteligencia y con todo nuestro corazón. 
Dios mío, ya que mi dignidad humana me prohibe que cierre los ojos ante todo eso, como los animales y los niños; y para que no caiga en la tentación de maldecir al universo y a quien lo hizo, haced que lo adore, viéndoos escondido en él. La gran Palabra libertadora, Señor, la palabra que nos libera y al mismo tiempo nos labra, repetídmela, Señor: "Hoc est corpus meum". En verdad, la Cosa enorme y sombría, el fantasma, la tormenta, con tal que queramos, sois Vos. "Ego sum, nolite timere". Todo eso que nos horroriza en nuestras vidas, todo eso que a Vos mismo os consternó en el Huerto, son sólo, en el fondo, las Especies o Apariencias, la materia de un mismo Sacramento. 
Sólo hay que creer. Creer más y más desesperadamente, ya que la Realidad parece cada vez más amenazadora e irreductible. Y entonces, poco a poco, veremos que se sosiega, después que nos sonríe, y al final que nos toma en sus brazos más que humanos el universal Horror. 
No; no es el rígido determinismo de la Materia y de las grandes cifras: son las flexibles ombinaciones del Espíritu las que dan su consistencia al universo. El inmenso azar y la inmensa ceguera del mundo no son más que una ilusión para aquel que cree. "Fides, substantia rerum" 
(Pierre Teilhard de Chardin: "Le milieu divin").