Monday, July 14, 2014

Just Not Today


“Just not today”


Being that I’m approaching 52 and at the persistent nagging from my wife and daughters -I accepted visiting the doctor for the first time to get a routine physical as well as all the other lab tests of rigor. Can’t complain about Dr. Bonilla. What a nice guy. It was actually a pleasant experience. However, among other tests, he insisted that I get a routine colonoscopy to screen for early stage of colon cancer. It’s an age thing –as he put it.

Of course I feel so well and so healthy I decided I wouldn’t. Thank you for the gracious advice –doc- you are a nice guy but that applies only to regular-overweight- overindulged-sedentary-unlucky people, not me. Really; that’s for people whose reward for their success in business and life in general are long lunch hours with generous slabs of red meat downed with beer and whiskey followed by an overdose of sugary treats. That’s people who command respect from their oversized throne just by the sheer size of their bellies. As you can already tell, I’m an exceptionally healthy human specimen. So I didn’t bother.

I changed my mind while bicycle riding along the northern California Mountains and listening a tale about a close friend whose mother has been diagnosed with terminal colon cancer at age 58. This is a type of cancer that can easily be detected and cured if caught on time. He was right. Only fools argue with reason. I’m no fool.

As prep for a colonoscopy you are required to stop eating two nights before the procedure as well as most foods I regularly eat up to three days before. I knew I’d have a hard time sustaining my active life style using only “clear” apple juice as fuel, which is not even available in its purest form anywhere. The apple juice you find on the supermarket is what my father used to call “agua-‘e-piringa”. The one crucial prep-step was drinking 64 ounces of the most disgusting liquid laxative plus an over dose of other purgative pills. Gee –what are these people thinking!

I don’t think the prep-sheet instructions take into consideration that some patients don’t require that much laxative to “clean” their colon or patients whose stomach isn’t equipped to manage that type of stress. I considered not following the instructions –abort the pre-process all together – Cntrl-Alt-Del; but my wife insisted that I did comply with the written instructions. Again, can’t argue with reason, can you? So I followed these prep instructions to the t; 4 pills followed by 8 oz of that utmost disgusting arsenic-like and metallic testing laxative every 15 minutes.

As it is, I’ve never been able to freely just eat anything or in great quantities without experiencing nausea or stomach discomfort. Swallowing that entire excessive amount of laxatives caused –as expected- stomach pain and nausea. Now that my stomach has simply shutdown, I couldn’t even drink water all while emptying my bowls every 5 minutes even though there was nothing to evacuate but clear- yellowish water time after time.

That night I went to bed not even feeling hungry only to wakeup at 2AM with an almost unbearable stomachache. At 2:30AM dizzy, in pain, and totally drenched in sweat I decided to go to the ER. I concluded; this can’t be normal. Sweat was poring down my weaken body as in a sauna but felt cold at the same time. As much as I tried; while totally undressed but with the urgency of someone who is trying to escape death itself, I made feeble attempts to walk to the car with Nancy’s help who was to drive me to the ER; I didn’t make it out the door without collapsing to the ground.

By the time her 911 call brought the paramedics home, I was nude and completely gone laying in a pool of sweat. I faintly recall being tied to a stretcher inside the ambulance, my naked body shaking uncontrollably, soaked in sweat, my right arm plugged to an IV as well as many other cords attached all over my almost dead body. I think I was being asked why was I shaking and sweating like this –duh.

Once at the ER, I realized you could die of colon cancer or you could die while prepping in order to catch the cancer before it kills you. As my father used to say when death was looking for but couldn’t find the bold-headed Wensislao: “como no encuentro a wensislao; me llevo este cocopelao” –meaning fate will always find you.

With open arms I was ready to meet with my father that morning, but it wasn’t to be. Not today. By 5am I was completely recovered and ready for that senseless colonoscopy. Still could not eat or drink until after the procedure, but somehow – perhaps the IV’s magic- I felt almost normal –considering I have just cheated death.




As it turned out, the colonoscopy procedure itself only revealed what I already knew; that I’m in perfect health and just for the love of humanity and as long as it ever becomes possible, I may offer –as a donation- my colon once I ever do meet with my father and his father forever more. Yeap -that’s how good my colon is according to the good doctor –just not today. 

Saturday, February 18, 2012

Building rddads.lib:

Given a choice of SQL engine to use when building apps from any xbase language, I just can’t think why would anyone choose any other than Sybase’s ADS. I base my assertion on the premise that the apps being built are commercial-multi-user-complex-real-life systems to be used by many users concurrently and on the fact that ADS is the only SQL that is also ISAM.

As xbase programmers we are used to working with indexed dbf tables where a file pointer moves to a specific location granting access to a specific record. Dbf tables and indexes are so simple to manage, we never think on the need to have a DBA on-site or any sort of special maintenance rituals to keep our database healthy. The beauty of ADS is that you get to keep all that while adding SQL to the equation. Certain data operations are better performed with SQL while others are better suited for ISAM. With ADS you are not restricted to just SQL or just ISAM. You have both.

There is, however, one caveat; albeit ADS’s documentation is extensive and very complete, there is close to zero documentation aimed at the xbase programmer. I think the one question I find most often on the forums is how to build Harbour’s replaceable database driver (rddads.lib) for a particular version of ADS. Some times I wonder how many people have been turned off after not being able to even start testing the free ADS local server version. So, let’s start by showing how to build rddads.lib for (x)Harbour for a particular ADS version.

What is ace32, why do I need it and why does it change:

Advantage Client Engine (Ace32.dll) is Sybase’ API to ADS. We will be calling many of these external functions from our Harbour apps. In order for the Linker to resolve references to external functions, like the ones in ace32.dll, we must provide a .lib file format of the .dll file that contains the actual functions as part of our link script. ACE32 is distributed by Sybase and it can be found after installing Data Architect in “c:\program files\Advantage 10.0\ARC\ace32.dll” or after installing the Advantage SDK available for download at http://devzone.advantagedatabase.com.

Each C compiler has its own utility to create a .lib from a .dll. With Borland C++, the most widely used C compiler in the community, that utility is called "implib.exe" and it can be found on \bin directory of the BCC compiler. To create the actual .lib file implib is executed like this: Implib ace32.lib ace32.dll. The command will generate ace32.lib from ace32.dll. Once the .lib file has been created, it must be linked to the application that makes use of the dynamic linked library functions. With the commercial version of xharbour (xhb builder), you need to link ads.lib which is provided in the /lib directory. With the non-commercial version, link ace32.lib as well as rddads.lib which is located in /contrib/rdd_ads.

What you will need to build your own rddads.lib and why:

From time to time Sybase will release a new update of ADS that requires newer clients. While older clients are always compatible with newer servers the opposite is not true. It should be noted that it is not always desirable to stay with old clients. Newer servers introduce new functionality and services that are only available with the corresponding new client. Thus, it may be necessary to build different versions of the ADS libs (rddads.lib and ace32.lib) to be linked to the Harbour application depending on the ADS server and client being targeted. To build rddads.lib the developer needs to acquire ace.h for the ADS version for which the .lib is to be created i.e. (ADS version 7, 8, 9...). This file can be found on the Advantage SDK which is available for download from the advantage client engine link found in http://devzone.advantagedatabase.com or in the \rdd_ads directory inside \xharbour\contrib directory. Please note that the SDK will also contain ace32.dll which we need to create ace32.lib. Ace.h is the only version specific file to be used when building rddads.lib. It is crucial that the correct ace.h is used and it should be the one that corresponds to the advantage .dll files and ADS version being targeted.

Building rddads.lib:

More than once the Harbour project developers have changed the method necessary to build an ADS version specific rddads.lib. At this point I take for granted that the reader is using more recent versions of the compiler; e.i. 2009 or newer. I will reserve for a later post how to build rddads.lib for older versions of the compiler.

Starting with version 1.2 of the xharbour compiler, the Harbour project developers have put a new system in place to automatically get everything set up in order to build \xharbour\lib\rddads.lib as well as ads32.lib for any specific version and it works quite well. Let me just say that it represents a huge improvement over previous methods. It requires acesdk directory for the specific ADS version. Acesdk is installed from aceapi.exe which can be downloaded from the advantage devzone as noted previously.

Once acdsdk has been installed, set the environmental variable HB_DIR_ADS to the directory that contains the SDK files:

C:\xharbour\contrib\rddasd>set HB_DIR_ADS=c:\ads8\acesdk

Now execute the batch file for the C compiler being used with your applications and the newly created rddads.lib and ace32.lib necessary to be linked to your Harbour apps will be found in c:\xharbour\lib. Note that the batch files used to build the lib file are written for specific compilers (make_b32.bat for Borland c++, make_vc.bat for MS Visual c). You might have to edit the makefile (makefile.bc for Borland c++ or makefile.vc for MS Visual c) to make sure the paths are correct.

Distributing an Advantage Enabled Application

Include the files below with your distribution of a Windows Harbour Advantage client application:

ace32.dll: Advantage Client Engine DLL. This .dll contains the core Advantage Windows client functionality.

adsloc32.dll: Advantage Local Server DLL. This .dll contains the core local server functionality. This file is not necessary if using the Advantage Database Server only.

adslocal.cfg: Advantage Local Server configuration file. This file is only necessary if using the Advantage Local Server and you wish to use Local Server settings other than the default.

ansi.chr: This file is needed for ANSI language support with the Advantage Local Server. This file may only be necessary if using non-English ANSI character sets with the Advantage Local Server.

axcws32.dll: Advantage remote communication library used when accessing data via the Advantage Database Server -Remote as well as Internet connections. This file is not necessary if using the Advantage Local Server only.

extend.chr: This file is needed for international OEM language support with the Advantage Local Server. This file is only necessary if using non-USA OEM character sets with the Advantage Local Server.

Remote, Internet, Local Advantage Connections

If you are wondering what is the difference between Remote, Internet, and Local servers, read this section. I borrow some of it from the ADS help files. The help files are available from ARC or from http://devzone.advantagedatabase.com (and it is quite good).

With Advantage there are three different ways to connect to data:

  1. . Advantage Local Server (ALS).
  2. . Advantage Database Server in a two tier mode (Client-Server).
  3. . Advantage Internet Server (AIS).

AIS: Advantage can establish a secure connection between remote locations through basic Internet connections. Using an Advantage Internet connection provides both encryption and compression. When the connection is done via the Internet then it is referred to as an Advantage Internet Server (AIS) connection (**not a remote connection as logically you might conclude**). This requires configuring an Internet port and opening that port within the firewall at the server end as well as the client's end. With the Advantage Internet Server, a developer can have a truly Internet-enabled application without any code changes. This simple, non-HTML solution is incorporated into the Advantage Database Server so that the Internet can be used as its own virtual private network. Be advised that Internet connections tend to be slower than a regular LAN connection, thus certain ways to display data might need to be avoided.

Remote: Do not confuse the term "Advantage Remote Connection" with an internet connection to the data on the server. With ADS, a Remote connection is really the LAN connection to an actual ADS server, i.e. a two tier -Client-Server system connecting via tcp or udp without the use of the Internet. When using Remote connections, there is no need to share the data directory that contains the actual dbf/adt tables for an Advantage enabled application to access this data. This is one of the security features of ADS using server-side aliasing which we will discuss on the later part of this document.

The Advantage Database Server is the key to improved database performance in network environments. The server acts as an intelligent controller that reduces competition for resources and off-loads much of the work normally performed by each client workstation. It is responsible for all database access, including all reading and writing of data, and lock management. Working with the network operating system, the Advantage Database Server processes data requests and returns the information to the network clients.

The Advantage Database Server supports the NetWare, Windows, and Linux operating systems. The Advantage Database Server for NetWare is implemented as a NetWare Loadable Module (NLM). The Advantage Database Server for Windows operates as a Windows Service. The Advantage Database Server for Linux runs as Linux daemon service. The Remote and AIS client code used by an Harbour client application compiled to run under Windows is axcws32.dll. The Remote and AIS code used by an Harbour client application compiled to run under Linux is a shared object named libads.so.

ALS: The Advantage Local Server allows Advantage applications access to data files located locally, in shared environments, or in peer-to-peer environments. The Advantage Local Server is a non-client/server solution and can be used to access data on the local computer or on a shared file server that is not running the Advantage Database Server service.

The Advantage Local Server is called directly by the Advantage Client Engine, both of which exist as either Windows DLLs or Linux shared objects. If the data files exist on a local workstation, no network connection is necessary nor is network communication used between the Advantage client and the Advantage Local Server.

There is no cost for the Advantage Local Server. The Advantage Local Server is installed with all Advantage Windows and Linux client products (which are also free). With ALS you may develop applications for single and multi-user environments and distribute them royalty-free.

The Windows version of the Advantage Local Server (ALS) is a DLL named ADSLOC32.DLL. The Linux version of the Advantage Local Server is a shared object named libadsloc.so. The Advantage Local Server allows both single-user and multiple-user access to data files. Note however that the Advantage Local Server file that is installed with Advantage client products contains a physical limitation such that only five or fewer users can concurrently access any table.

One drawback of ALS is the lack of "transaction processing". A second drawback is the fact that the ALS "client" works in the same thread with the ALS "server", waiting one for another as it would if the data was stored locally on the client machine. In this scenario the server only acts as a file sharing disk to multiple workstations pulling data across the network. But then again, this is exactly how any other Harbour RDD works.

What makes ALS very attractive is that you may distribute your application to smaller customers without the ADS server and when the customer grows in the number of users, or requires greater security and speed, or cannot tolerate the possibility of data/index corruption due to a workstation unexpected crash, then for a small price you may deploy the ADS remote server while not even having to recompile your application.

In my next posts I will show some of the advantages of ADS over any other native xbase RDD and how to start taking advantage of it.


Reinaldo.

Friday, July 02, 2010

Did you learn anything?


It is Saturday morning, car packed with bike and race items, I take off with my wife to the beautiful city of St. Petersburg, FL. I’ve raced here the past three years. Keep telling my wife how much she is going to love this venue. Great organization, great people, the best pre-race expo, great water front, gourmet restaurants, nice clean city with modern construction and roads. How could anyone not love it? I figure the only risk is wanting to stay.
It is the day before the race and perhaps I’m understating it by saying: ill faint beau! --it’s a God-dam beautiful day (and i never use such language). I feel so fine -I already know I’m going to have the best possible race I’m capable of. Driving along the way I’m distracted by the day’s bright colors and pleasing scenes while pointing out the beauty of this flat-bare-wet-lands. I’m reminded of the Genesis. It’s no wonder how God felt proud after creation.
We might have been 25 miles from St. Pete when I first thought of taking a peek at the state of the gas tank. There is a bright yellow warning dot light up next to the gauge all the way down. We are on empty. The car computer estimated enough gas to drive 7 more miles. The navigation system showed that we were about to enter into what seemed like a long-never-ending bridge leading into St. Pete. Quickly maneuvered off the highway in search of gas. My eyes fixed on the dashboard computer readout while the countdown to a shuttle take off was underway --7 miles, 6 miles, 5 miles... nothing. 

With my heart pounding and 1 mile worth of gas I found myself in the middle of a Florida ghost town. I never knew that place only seen in movies really existed. Barefooted little kids playing and running around wearing only their underwear. I approach a couple of lonely Mexicans migrant workers sitting under a blue tarp. Apprehensive at first ---I ask for gas. I eventually manage to solve the problem. It was just a matter of throwing a little money mixed with some Spanish to it and we were back in business.
All the while I kept thinking --I’m not going to let anything ruin this trip. As a matter of fact, somehow I sort of enjoyed the whole experience. Yes, my wife was a little disappointed at me and I can’t blame her. But she was also rather amused by the new discovery of this Florida ghost town. She later thought that we should have taken photographs of the place.
Finally at St. Petersburg, proudly, I announce: “You see?”. It feels good to be alive. I’m thankful to have the opportunity to breath this magnificent air. I want to take it all in. “Let me take you to a restaurant by the sea... enjoy the best gourmet food money can buy... you’ll soon forget we ran out of gas”. “Waiter... bring me a plate of your best pasta and a glass of wine”. There is no denying I’m a frugal person. But I also like to enjoy the finest things in life at the appropriate times.
The food arrives. Its appearance is not what I expected. The pasta sauce was absolutely horrendous and the chicken was burnt black just like a piece of charcoal. The waiter comes back, --dares to ask: --”how is the food?” --my wife looks at me, frustration written all over her face. “Well... it is terrible” --I modestly admit. We ended up ordering another plate... 20 minutes later and it turns out the burger and fries were really good on this joint. “You see? ... this is what I call great American gourmet food” :-)
Back at the car the parking meter was a few minutes overdue. In this wonderful-well-managed city, five minutes of overdue parking meter comes with a request for $25.00 in a greeting card attached to the windshield. I had already decided not to let anything ruin my trip. I feel happy to be alive, it is great to be breathing this air and it is a beautiful day on a beautiful place. I will consider the $25 as my small contribution to this advanced society.
A few days before, when booking a hotel, I soon learn that there was nothing available at the race venue. It is the age of information so it didn’t take much effort to find the nearest inn with a room untaken. “Let me take you to the hotel, dear. You’ll feel fresh and rested in the morning”. The age of information also comes with some misleading or sometimes omitted caveats --room is right in front of a busy highway in a not so nice part of town. She is a little tormented feeling insecure.
So the room doesn’t smell very well... but so what. I’m not going to let any of this ruin this trip to this beautiful location. This highly valued geographic area is one of those places most people watch on TV and only dream of visiting in person. I’m going to enjoy it to the fullest. Again, I’m really not disturbed at all by any of this. Actually I’m somewhat amused.
You never really get used to the street noise, but by 3 am, when finally falling into a light sleep there is a knock on the door. It is a woman’s voice: “I’m your neighbor... I’m on the room next to yours... please open the door... I just want to ask you a question...”. I get up, walk towards the door --and again: “open the door you’ll see I don’t have a weapon”. It takes a second to register --did she just said “WEAPON”? I don’t remember the last time I had heard that word used in a sentence that did not include a brand of very fast bicycle wheels.
I usually carry a sleeping pill when traveling. It is to be used only in case of emergency. I’ve had this one stashed on my travel bag for almost a year. I reached for the pill -swallowed it whole --went back to bed. Next morning my wife wakes me up. Good thing she couldn’t sleep at all keeping watch. I was knocked-out cold and would’ve surely missed the race start.
We hurried up to the venue. I soon found myself in front of the beach about to press on the red button on my wristwatch. BOOM! --race starts. I have a great swim. Off to the bike. It is windy, but I’m feeling so fine, I can’t seem to get tired no matter how hard I try. My legs felt like pistons on a wild-mad-race-car that won’t stop for nothing. The front wheel looks like it’s flying and the disc echoes that distinctive whooh-whooh. I’m on top of the world passing slower riders all alone the route. I’m inspired. It is a good time to be alive. It is also the first time I wear these beautiful LG

carbon tri-shoes. I can feel my toe is scraped pretty bad from the constant sliding back and forth. I’ve heard how no one really has two identical feet. Obviously the shoes are too big for my right foot. But this is wartime and I’m not letting the hammer down; ...surely not for some minor discomfort.
I start the run and considering the windy conditions, I’ve done well so far, but by mile 1 I realize how I just couldn’t take a step with my right foot. My toe was bleeding pretty badly and it hurts like crazy inside my racing flats. My usual macho-style running without socks is not working this day. This time is more like red-blooded stupid and painful running without socks. But I wasn’t going to let any of this ruin this trip and much less this race at this beautiful venue. I’m a problem solver. I mean, that’s what I do for a living. Took my right shoe off and ran barefooted shoe-in-hand. At the finish line, my foot was bleeding evenly, --on the top as well as the bottom. Still, I felt a deep sense of well being, of happiness, --content with the world, with the people, and with being alive, with having the opportunity and great fortune of being part of the greatest race on earth. Thankful for the great health I’m enjoying and the experience as a whole. I’ll take it whichever way it comes. I want it --and I want more.
It was time to head back. We had walked for a while when I realized that I could not remember even getting up that morning, much less where I had parked the car. I thought long and hard... “Are you sure I drove the car this morning?” --She smiles and makes fun of me thinking that I was only joking. But she can’t hide her frustration. She tends to worry. I soon learned that the only thing I could remember, for the love of God, from that morning, starts after jumping in the water. I could almost say I woke up swimming. But then, who setup transition for me that morning? How is this possible? I’m I getting that old? Is it Alzheimer? “But this is never happened to me before...” I feel confused. It is an enigma that I still can’t explain.
We walked for hours. Couldn’t find the car. Stopped for coffee and some rest. Took a few pictures of birds while sipping coffee. Walked again. We saw the good part of town and learned the bad part of town with the homeless, empty lots, sad people and beggars as well. I finally decided to take her somewhere safe while I searched for the car on the bike. Could not find a “safe” enough place where she would feel at ease. But a spot near the beach simply had to do.
Tired and battered by winds, day turned to dusk. I had tried different strategies; north-south, east-west, riding into every single high-rise, low-rise, flat-rise and any-rise parking place when I finally found my car. It seemed lonely and sad and disappointed just as she did. ...And I don’t blame them.
--“Want to go somewhere?” <...pause...> --”Just take me home”. It was a short conversation but I don’t think she was mad. I have the sense that she actually felt relieved to be headed back home. Again, --can’t blame her.
On the way back I stopped at a restaurant that is not any of our usual suspect. “Hey... want to try this place?” It was sort of a risky proposition. The Cracker Barrel --who would have thought it. No, never would have guessed the food here could actually be this good. We both liked it. No, let me rephrase that, I should say, we both REALLY liked it a lot. It is southern food, but surely not Florida southern. Florida southern would be Cuban --right? . This southern food seems to be cooked by Parisian chefs. This stop became the highlight of the trip hands-down.
It isn’t very altruistic to enjoy something while frustrating family and taking some risks. Oddly, I remembered Tiger Woods. I many times can still hear my father’s voice too. I don’t mean rhetorically. I mean I can actually hear his voice. I heard it many times this day again. Maybe that’s what the bible means by eternal life or when clergy talk about going to heaven. In a strange way he hasn’t really gone anywhere. He’s right here... in my head. Like Tiger’s dad on the commercial. Only he is NOT asking: “Did you learn anything?”.
Reinaldo.

Tuesday, October 06, 2009

Speaking xBase

Today I’d like to speak to xbase developers like myself. Perhaps I’m biased in my opinion and, before I go on, I must make the disclaimer that our company has partnered with Sybase to distribute ADS.


I always listen to developers talk about their excitement over SQL-lite. I will not argue about the quality nor about the intended use of the product. But speaking from the xbase point of view, I understand that it is a waste of time. If SQL lite is **not** a client-server SQL engine, then what's the advantage over using ADS-Local? With ADS you get SQL syntax without loosing the traditional dbf navigation. You can learn SQL at your own pace while still developing as you always have. Using ADS we were able to distribute the very same app to much larger customers. Two hundred concurrent users is not frightening when using ADS.


With ADS you get triggers, hot-backups, SQL set based transactions, rollbacks, traditional navigation like (cAlias)->(dbskip()), (cAlias)->(dbEval()), and dbgoto(), enhanced field types, field constraints, replication, views, php/perl/java clients, Internet access to your very own dbfs, no need for shares and/or drive mappings from workstations… And all of this with the very same source!!! You can switch from local server to remote server without even a re-compile of the app.


If the xharbour/ xBase++/ Vfp/ Delphi developer is looking for a more stable and expandable data platform, then IMO -ADS is the obvious choice (if even the free local server edition). And I find price for the client-server edition very affordable.


I just can’t hide the fact that I’m totally in love with ADS and must thank Rene Flores as well as others cyber-friends that meet regularly on the xbase news groups for sharing their knowledge and experience with the product.


Tuesday, September 29, 2009

Ese fue mi resultado

El 1/2 IM de Cleremont se conoce como "The Intimidator".

DNF. Ese fue mi resultado. DNF.

El gran Gurú, Manuel Barreiro, AKA "El Chamo", dice que los triatletas siempre tienen una excusa y una recóndita manera de intrínsecamente calcular en cuantos minutos menos hubiesen terminado la carrera si no hubiese sido por...

"Párame bola Chamo --uno dice su tiempo y punto. Sin excusas" --me repitió muchas veces.

...Bueno ahora las excusas --perdón, mis pensamientos:

Iba 3ro en la general, estaba como en el kilómetro 45 y llevaba 1:41 de carrera cuando pinché por primera vez. Todavía tenía contacto visual con el que iba primero y segundo. Antes de insertar la nueva tripa, con cuidado y con ahínco traté de buscar el vidrio o la guaya que me causaran tan inoportuno acontecimiento, pero no encontré nada. Así que monté, llené y seguí.

Como 5 millas más adelante, ya estaba en el piso otra vez. Esperé a la orilla de la carretera hasta que una buena samaritana me dio una tripa y aire. Busqué y busqué otra vez y no encontré vidrio ni guaya ni ningún otro objeto foráneo que pudiera causar la pinchadera. Pero entonces, y por casualidad, encontré que había perdido un pedacito de caucho. O sea la goma tenía una perforación y por ahí era que estaba pinchando.

Me comí el Powerbar que llevaba y usé la envoltura como zapata para tapar el hueco. Esa fue nada más que una de las primeras lecciones aprendidas con el gran maestro (El Chamo). Cuando fui a llenar, me percaté que el cilindro de aire que, de buena fe, me habían dado era sin rosca y mi adaptador era para cilindros con rosca. “Here- take it all. It’s good karma” –me dijo cuando me dio todo lo que cargaba. Que Dios la cuide y le guarde con buen Karma comoquiera.

Bueno, caminé de regreso como 5 kilómetros hasta el último oasis que ya había pasado y allí un individuo que estaba mareado en el suelo y que había abandonado la carrera me dio su aire. Pero antes, conversamos un rato. Ya contemplaba abandonar la carrera. Como muchas otras veces, me sentí derrotado. Ya la carrera había pasado a un segundo plano. En mi mente buscaba formas, legal o ilegal, de transportarme de regreso al área de transición para al menos correr el 21k. Finalmente me resigné convenciéndome de que todavía podía obtener beneficio de continuar. En algún lugar escondido me quedaba la motivación de ganar la apuesta a mi buen amigo Macario corriendo 1:45 en el 21k.

Monté duro pero ya llevaba 3:25 desde que había comenzado el rodaje. Me anima que, a pesar de mi desventura, voy pasando varios ciclistas, lo que me hace sentir liviano y rápido. No creo que llevaba 5 kilómetros cuando decidí tirar las tripas y los cilindros de aire usados que cargaba encima. No hago nada mas que tirarlos, y se me para al lado el referí en la motora. Me mira, me apunta con el dedo, y escribe mi número en su libreta. Ahora también tengo un penalty por tirar basura.

Bueno pues... no había llegado de regreso y la rueda otra vez estaba en el piso. Pero al menos llegué y salí a correr comoquiera. Después de la primera vuelta llevaba 5 horas 21 minutos de carrera y me sentía mareado. Pienso que pasé demasiado tiempo bajo el sol en la ruta y no había comido para tanto tiempo. Pero también podría ser flojera. Ya en esa vuelta me había encontrado con un oasis abandonado y sin agua. No tomó mucho análisis para que mis empobrecidas neuronas tomasen la decisión de unirme a los voluntarios y abandonar la carrera.

DNF fue mi resultado. Ya no quiero pensar más en eso, pero quiero aprender de ese fracaso. No soy un optimista pero si adicto al aprendizaje. El fracaso es un gran maestro. No salí esa mañana a buscarlo con el fin de aprender. El solito me encontró. Estaba escondido a la vuelta de una esquina y a traición me salió al paso. Me sorprendió con un zarpazo que acabó conmigo en un minuto hasta hacerme olvidar las pasadas victorias. Entiendo que el ayer ya cumplió su plazo y que ahora, de cualquier manera, hay que seguir viviendo siempre a Dios agradeciendo por la próxima faena.

DNF. Ese fue mi resultado en The Intimidator. DNF.







Reinaldo Crespo-Bazán
www.structuredsystems.com
reinaldocrespo@structuredsystems.com

Friday, November 28, 2008

It is finished



Time is an abstract idea. We can not hear it, we can not touch it, and we can not see it. Yes, we can mark its passing, but for all our great success as a civilization to measure the smallest particle of time, it still remains a total mystery. I have concluded that time can only be described as change. Change is what being alive is all about. Time as well as change does not exist for the dead. While on the cross, the last words from the Savior’s mouth were: “it is finished”, meaning –time is finished— i.e... that death was now upon him and thus all divinely designed changes had been accomplished.

I’ve heard said that every great journey begins with the first step. My first step on this great expedition was back in March ’08 when I registered for this race. Because the only way I understand time is time moving forward, I knew that the day would arrive at its precise moment, 7:00am on Nov 23rd, 2008.

Before the sun was out I found myself, with the rest of the gang that traveled from Puerto Rico for this event --46 in all, in a corner next to the cold stream of water where the swim was to start in less than 20 minutes. I felt cold while others felt warm. Julito realized it as he was already taking off his jacket and generously giving it to me. Was it that obvious?

As usual, JC Padró was energized. His otherwise enigmatic face showed the cheerfulness of a child on Christmas morning about to open Santa’s presents. In unison, without a verbal command, everyone gathered in a large circle hands over each other’s shoulder as Rauli began a prayer. He was really inspired this morning. His loud and confident voice echoed with a hint of courage and deep emotion. But, I was shivering. I felt the cold that springs from within. It is formed from a biochemical concoction of adrenaline mixed with fear and anger. When you fear something for enough time, it begins to annoy you, then it irritates, and finally it infuriates. It becomes a “bring it on” type of fear. You think you scare me? This -I’m-‘gona-kick-your-ass-fear made my knees shake in defiance. I knew the Ironman race demands a high level of respect, but the game face is on and there is no turning back now. So, BRING IT ON!

I knew I had to calm myself. I knew how. At 46 I’m not that young anymore. I’ve practiced it for many years now. Deep breaths, think positive, don’t allow yourself to acknowledge the eight-hundred pound gorilla in the room. Block any negative thoughts and emotions. Stop the cold sweat. Start the swim slow. Bring the heart rate down… I found myself next to JC on the circle with his arm over my shoulder. I've always admire his courage. My trembling called his attention; he slapped my back and reprehended me. I stopped shaking, for a minute, and then began again... a few times over.

With the help of Gersan and a few others I was able to squeeze into my tight wetsuit. The water temperature was below 60 degrees. We all got on the water and spread all over just before the cannon shot. I looked around at the multitude of swim caps. Kenneth was at my left. Perhaps oblivious, perhaps defiant, my friend, Angel was way on the front line. I pitied him. I knew the mass start was going to be rough. I expected it. It’s all part of the game. It’s ok with me. I’ve been kicked and punched before during the swim... but never like this. The knocking in the back of my head wouldn’t stop. Time after time I was punched in my right eye knocking the goggles to my mouth. Time after time I composed my goggles and continued swimming. But I was loosing my temper. “Cabrón” --I yelled after being kicked on the crouch. Any basic instinct reaction comes out in Spanish. I tried to continue, but not long after someone who had started down with my right ankle and then my hip, now had my right arm on a firm grip as he pressed himself forward over me pushing me down. I swallowed murky water from the Tempe Rio Salado. I thought broken sentences in broken English: this it --no more --me fuck you --you pay --you pay now. In one move I had him by the arm. I went back to my childhood. I remembered my oldest brother and all the times I thought I’d drawn with his horseplay anytime he could surprise me near water. I remembered the desperation felt when just surfacing and about to inhale only to be pulled down again. I remembered coughing water each time. I was very young when I learned to do it back to others. I call it the Crespo-maneuver. Cruelty exploded like blood gushing out of a fresh wound, and... There was no way to stop the hemorrhage now. It was not his words; “I’m sorry –glup-glup –but please –glup-glup- let me go” that stirred me to let him loose; it was the terrified look on his eyes.

It didn’t take long before my anger turned to sorrow. I know that some people do this when afraid of water. I should have been slower to react. Even with this obviously ill-intentioned trick of using my body as a spring board, I should have been more compassionate, perhaps show more benevolence. People deserve the benefit of the doubt and he really looked frighten (after the Crespo-maneuver). Besides, nothing really worries me on water. I swallow water all the time to avoid taking it to my lungs. Heck --sometimes I swallow water just because I’m thirsty. For what is worth; I’m deeply sorry and I hope he’s ok. (But just don't mess with me again :-)

A few miles on the bike and the desert revealed itself. Warner Brothers’ Acme landscape dominated the arid view. Strange rock formations and green cactuses on the barren soil seem to quietly witness our madness on the road. There were some water bottles, bike parts, and small plastic energy gel containers here and there. None of these things belong here; not even the road we were on, but the view is magnificent and I’m just glad I’m part of it. My thoughts wandered around in no particular order or purpose... “Were we invading sacred land?” “Have I eaten enough?” “Am I drinking too much or too little?” “I think I’d like to own one of those disc wheels, they look awesome; but then I’d have to stop using my powertap which I like a lot”. “Are God and the angels looking down on us now?” “Wow…, what a beautiful rock formation just ahead”. I also spoke to myself: “concentrate, concentrate, concentrate and stop wandering around”. I speak to myself a lot; at least I never answer to myself, not yet anyway.

The Ironman race is not without religion and rituals. Each tribe has its own sacraments. Some rituals signal the coming of age, time, the passage from one stage to another, change. Other tribe’s ceremonies seem absurd to the rest of us. As humans we can’t live without them. It seems like it was programmed during creation in deep grooves on our wrinkled brains. But, who can explain the Easter egg hunt as a celebration of the Crucifixion? How about Christmas? Don’t get me started on tradition. I watched “Fiddler on the Roof”, a master piece about tradition, as a teenager a thousand times. That and “The Sound of Music” were the only movies that the Church would allow us to see. They played it at every special occasion, maybe three or four times per year, edited of course. I only wish I’d paid more attention :-) Suffice it to say that most activities and celebrations we participate on are not totally absent of some type of ritual that conveys pleasure and confirms our own existence.

This was how, in the finest of traditions and respecting their liturgical rituals, while surrounded by “seniors” with no chance to escape, I was also “inducted” into the “IronIsla Ironman” with the shaving of the head the day prior to the event. I like to say I had no choice, but I could’ve wrestled with the 30 of them… or maybe not. Well, it doesn’t matter, I’m a team player. I know how to take one from time to time for the team. Besides, hair will grow back. I just won’t have to visit the barber for a while.

In this tribe, the shaving of the head signals the passing from “rookie” to “senior”, graduation time has cometh. Just at the right time, I’m not a rookie anymore as I also had no choice but to show my new changed look on all my race pictures. And now, after 11 hours and 34 minutes of total race time –as announced over the load speaker: “Reinaldo you are now an IRONMAN”, I can say like Christ did: “Consumado es” (“it is finished”) -and thank God it is!