Primer Media Maratón

Después de correr varias carreras entre 5k y 10k había tomado la decisión de entrarle a la primera media maraton. También había corrido algunas carreras con obstáculos de 12k y 15k y según yo ya estaba listo.

Cuando le comentaba a la gente cual carrera iba a hacer (La Correcaminos) todos me motivaban diciendo que esta carrera es perfecta para empezar (y lo es) pues es mayoritariamente en descenso y plana.

Empecé un plan de esos de Endomondo, pero al pasar las semanas se me complicaba seguirlos al pie de la letra, creo que perfectamente falle entre un 30%-50% de las sesiones, pero igual estaba envalentonado, pues como también estoy nadando, según yo tenía buen aire.

Las dos semanas anterior a la carrera estaba bastante nervioso y me empezaron a dar “achaques”, algunos dolorsillos o molestias en las pantorrillas y las rodillas. Me imagino que me estaba autosaboteando mentalmente. Por dicha no me resfrié como me suele pasar antes de una carrera.

El Sábado previo a la carrera, tuvimos entrenamiento en G-Swim de 3k, y aunque salí agotado no creí que me fuera afectar. Aún ahora no se si tuvo alguna influencia.

Los primeros 10km me fui con un paso muy fuerte (para mí jeje) aproximadamente 5:30 min/Km y creo que este fue el mayor error de como ataqué la carrera. Cuando llegamos a Zapote (donde arranca la de 10km) sentí un burst de adrenalina por que aún no habían salido y estaban todos ahi apoyando  a los de 21. Pero luego de que se me pasó ya sentía algo de agotamiento aunque creo que parte fue mental por que estaba rebasando mis propios límites y estaba entrando a lo “desconocido”.

La primera señal de agotamiento lo sentí al pasar la Asamblea Legislativa, que tiene una pendiente desde la Corte hasta el Parque Nacional y además cierto grado de dificultad por que algunas partes tienen un empedrado. Pero luego de ahí todo es prácticamente bajada por el Parque Morazán y hasta La Coca Cola.

La segunda señal, y la definitiva, fue al entrar al Paseo Colón que tiene un falso plano por la Toyota y ya veía yo que las piernas no me respondían como quería. Digamos que del torso para arriba andaba bien, pues el pulso no supero los 180 ppm lo que significa que no estaba haciendo un esfuerzo máximo, pero tampoco podía exigirle más a mis piernas.

Al llegar a La Sabana ya empezaba a duduar que lo iba a lograr, máxime que sentí un fuerte golpe psicológico al ver que ya me estaban alcanzando los de 10k (tontera mía la verdad) y que el paso que llevaba iba disminuyendo. Gracias al apoyo de mis compañeros de Guppys que venían acompañando en bicicleta no me dejé por vencido, pero al doblar por el Colegio de Médicos y Cirujanos definitivamente sabía que la subida por Sabana Norte iba a estar bien dura.

Para empeorar el asunto desde el Estadio Nacional ya sentía un calambre fuerte en el músculo de la tibia izquierda, que iba y venía. Hace mucho tiempo había tenido la oportunidad de compartir con los Scouts y me aprendí algunas canciones que se usan para marchar, que me ayudaron muchísimo para concentrarme en avanzar.

Al doblar por la Nissan, sentí unas ganas enormes de llorar, no sé si por que temía no terminar tan cerca o por que lo iba a lograr. Yo hubiera llorado perfectamente, de no ser que sentía un nudo enorme en la garganta y me costaba mucho respirar. Pude sobreponerme y avanzar hasta la entrada ya del cierre de la carrera.

Creo que ya venia más a velocidad de caminar que de correr, pero aún así tuve que seguir en trote. Intenté caminar, pero mis piernas no tenían fuerza ya por lo que me dió miedo caerme. Seguí trotando y al llegar a la meta de nuevo el calambre, que me hizo cojear hasta la meta. Por ahí oí mi nombre (era mi mamá) pero no quise ni voltearme a ver por miedo a caerme o perder el último impulso.

Al cruzar la meta sentí gran alivio, pero ya las piernas no daban y caminé con dificultad para recibir el refrigerio y la hidratación. Aún así me sentí bien por haber logrado mi meta. Intenté localizar a amigos que sabían que también la habían corrido, pero en mi estado preferí buscar a mi familia una vez recogida la tan merecida medalla para irme a descanzar.

No hubiera logrado esta carrera sin la motivación de mis amigos de Guppys y el apoyo de mi familia.

Correcaminos

Nine Patch Remotos

Una de las herramientas más útiles dentro del arsenal del framework de Android son las imagenes nine-patch. Estas permiten a una imagen adaptarse a su contenedor para una misma densidad. El ejemplo por excelencia son los botones. Si se utiliza una imagen para el boton, por lo general es una imagen con un tamaño predeterminado. Esta imagen tal vez se vea muy bien cuando el dispositivo se encuentra en posicion vertical, pero cuando se gira el dispositivo, el boton mantiene su tamaño y no se “estira”.

Button Landscape

Boton en orientacion horizontal

Button Portrait

Boton en orientacion vertical

 

Cuando se sabe cual imagen se va a utilizar, esta imagen es alojada junto con el resto de la aplicaicon en el APK. Se puede utilizar una herramienta del mismo SDK para crear las marcar necesarias para indicarle al sistema operativo que partes de la imagen deben estirarse e inclusive cual va a ser la zona disponible para albergar contenido.

Boton con nine patch

Todo muy bien hasta aquí. Pero ¿Qué pasaría si se ocupa obtener un boton de manera remota? Es decir, al momento de hacer la aplicación, aún no es posible saber como va a ser el botón, por lo que no sería posible usar la herramienta anterior.

“Compile” vs “Source”

Cuando se crea un nine-patch con la herramienta, esto genera un archivo png, con la terminación 9.png. Este archivo es similar al original, pero tiene una transparencia de 1px con ciertas marcas. Cuando se compila el proyecto, esto genera por debajo el “chunk” metadata necesario para poder manipular la imagen en el UI.

La clase Bitmap tiene un metodo llamado getNinePatchChunk que permite obtener ese metadata. La clase NinePatch puede verificar si el metadata es válido y de ser así, se puede hacer un NinePatchDrawable.

 
InputStream stream = .. //whatever Bitmap bitmap = BitmapFactory.decodeStream(stream);
byte[] chunk = bitmap.getNinePatchChunk();
boolean result = NinePatch.isNinePatchChunk(chunk);
NinePatchDrawable patchy = new NinePatchDrawable(bitmap, chunk, new Rect(), null); 

Para poder hacer esto funcional, en un escenario con la imagen remota, se ocuparía que el servidor pueda enviar una versión compilada de la imagen. Esto presenta el problema de que no existe una herramienta oficial para “compilar” un nine-patch. Si bien existen herramientas de terceros que lo permiten, pueden haber situaciones donde esto no sea posible.

Este fue el caso que se presentó recientemente, donde se solicitó soportar nine-patch para unos botones, cuyas imagenes venian de manera remota. Para ello se creo un drawable nuevo que pudiera emular el nine patch. Eso si, debe recibir los componentes por separado. Por ahora no es posible recibir una imagen con las marcas de la herramienta del nine-patch y solo soporta 3 parches, aunque en un futuro se planea agregar soporte para los 9 en total.

La parte mas importante de este componente es el método draw. Que simplemente pinta los parches de los bordes (izquierda y derecha) y replica el parche del centro tantas veces como sea necesario para llenar el espacio.

	@Override
	public void draw(Canvas canvas) {
		int left = 0;
		int mTopRightWidth = 0;

		if (mTopLeftBG != null) {
			Rect dst = new Rect(0, 0,
					(int) (mTopLeftBG.getWidth() * mDensityScale),
					(int) (mTopLeftBG.getHeight() * mDensityScale));

			canvas.drawBitmap(mTopLeftBG, null, dst, mPaint);
			left = (int) (mTopLeftBG.getWidth() * mDensityScale);
		}

		if (mTopRightBG != null) {
			Rect dst = new Rect(getBounds().right
					- ((int) (mTopRightBG.getWidth() * mDensityScale)), 0,
					getBounds().right,
					((int) (mTopRightBG.getHeight() * mDensityScale)));

			canvas.drawBitmap(mTopRightBG, null, dst, mPaint);
			mTopRightWidth = (int) (mTopRightBG.getWidth() * mDensityScale);
		}

		if (mTopCenterBG != null) {
			int bitmapScaledWidth = (int) (mTopCenterBG.getWidth() * mDensityScale);
			for (int i = left; i < getBounds().right - mTopRightWidth; i += bitmapScaledWidth) {
				Rect dst = new Rect(i, 0, i + bitmapScaledWidth,
						(int) (mTopCenterBG.getHeight() * mDensityScale));
				canvas.drawBitmap(mTopCenterBG, null, dst, mPaint);
			}
		}
	}

Para poder soportar diferentes densidades, se requiere que la imagen sea para la densidad máxima (en este momento xxhdpi), por ejemplo una imagen que tenga 144px de alto. A partir de ahi a la hora de recibir la imagen se escala hacia abajo deacuerdo a la densidad del dispositivo.

Próximamente voy a publicar un proyectos en github de ejmplo y el código fuente del PatchDrawable.

Punta Leona ¡Misión cumplida!

 

Mas de un año después de empezar a nadar (poco más de 170km nadados), llegó el momento: La primera competencia de aguas abiertas en Punta Leona.

Llegamos pasadas la 7am (salimos a las 5:3am de Tibás) al Hotel Punta Leona, no sin antes desayunar en la Soda El Guacimo un pinto con huevo y tortilla aliñada. Seguro por ser tan temprano no encontramos mayor tumulto en la entrada y en un dos por tres, estabamos ya en Playa Mantas.

El equipo de Guppys, G-Swim ya tenia preparado unos toldos para reuniros. Poco a poco fueron llegando más compañeros y se acercaba la hora. Por ahi de las 9 empezaron a repartir las gorras, indicando el heat que nos asignaron y el chip. Empezamos mal, por que no logre ponerme el tatuaje temporal del número que va en la pantorrilla, y terminé con el número puesto con marcador “permanente” (lo pongo en comillas por que luego de pasar la vaselina, casi se borra).

A las 10:30 todo el equipo se reunió en la playa para estirar y hacer unos calentamientos en el mar. La marea estaba subiendo y habia cierto oleaje. Además, la orilla tenia mucha basura con palos, ramas y hojas. Entramos primero para nadar hasta el último vertice del trazado. A la vuelta se me pegaron unos hilos en la muñeca izquierda y el antebazo. Ya me estaba preocupando un poco.

La segunda vez, era hacer un triangulo desde la orilla y las dos primeras boyas. Todo bien en la entrada, pero de nuevo a la vuelta me pegaron fuerte unos hilos (hasta se me quedaron en el brazo al salir). Me estaba preocupando más. No podia participar de la carrera con las camisetas que uso normalmente en los entrenamientos por que me tapan el número del brazo. Ni modo, me puse la mitad del tarro de vaselina y así me fui.

Como en los eventos de atletismo, me puse muy ansioso en el corral de salida. Estaba en el último heat, por lo que debia esperar la salida de mucha gente delante mio. Rosados, Verdes y nosotros los Naranjas (cada heat tenia asignado un color de gorra diferente). Nos juntamos los del equipo que estabamos en el mismo heat y todos terapiandonos para calmarnos y transmitirnos buenas vibras.

Sale el primer grupo… me pongo a hacer ejercicios de respiracion. Sale el segundo grupo, me topo a mi estimadísimo amigo Pablo Viquez que se alistaba para salir en el heat de los 3000m. Ahi hablamos un poco y me pude distraer un poco de mi mismo nervisismo. Nos llaman a los Naranjas y ahi nos vamos acomodando. Como nos explicaron nuestros entrenadores, nos fuimos a lado izquierdo.

Finalmente nos colocamos en la salida y suena el pitazo. Empezamos a avanzar corriendo y una ola nos recibio de buenas a primeras. Logro alejarme del grupo mas hacia la izquierda y sigo avanzando hasta que me topo con la famosa grada de la playa. Todo tranquilo y aprovecho para empezar a nadar. Todo el trayecto hasta la primera boya bien. Iba mentalizando en nadar tranquilo y suave. Me pasan dos y yo tranquilo. Fue hasta que llegamos al primer vertice que hubo cierto roce, pero nada de que preocuparse. Me aleje un poco y le puse para poder ubicarme mejor.

Miré hacia adelante para ubicar la siguiente boya y al sentirme bien decido ponerle un poquito mas. Sigo al mismo ritmo pero tratando de aumentar mi alcance en los brazos, jalar un poco más fuerte el agua y asegurarme de terminar la brazada bien. Al rato de avanzar, llegamos a la mitad del segundo segmento. Noto que mucha gente empieza a girar a la derecha. Yo no podia creer que ya hubieramos llegado al otro vertice. Bajo la velocidad y trato de escuchar a los kayakistas. “Tienen que seguir hasta la otra boya”, y me doy cuenta de que varios se fueron por el camino incorrecto y nada, pues a seguir. Esa segunda mitad estuvo durilla por que había fuerte oleaje, que provocaba que ciertas brazadas no fueran efectivas, o me hundiera en el agua en el momento de respirar. Por dicha ya estaba acostumbrado a eso y pude seguir sin mayor complicación.

Ya para ese entonces habia rebasado a varios verdes y al llegar al segundo vertice decido aumentar la velocidad. Ya venia con un ritmo mayor que del primer vertice por la misma emocion de haber rebasado a varios verdes y encontrarme casi solo al llegar al segundo vertice. Trato de ubicar la meta, y a ponerle. Me preocupaba un poco los hilos, pero “fuck it” ya iba de salida. No ma habia topado un solo hilo y ya no me importaba si me los topaba en ese momento.

A la mitad del tercer segmento alcanzo a un grupo de verdes. Tuve que zigzagear varias veces para poder encontrar huecos y tratar de rebasarlos. Lo logro, pero ya me estaba quemando un poco. Me pasa el primer Gris (los de los 3000m) y decido ponerle en la patada (también para ayudar a la sangre a distribuirse bien para el momento de pasarse a posicion vertical para correr y no marearme). Sigo avanzando y ya veo más cerca la meta. Me entra una ansiedad enorme que logro controlar, y sigo manteniendo el ritmo con patada fuerte.

Llegando casi a la orilla tenía a una muchacha  adelante y a la izquierda. Nos empuja una ola a la orilla y ya nos podemos poner de pie. Noto que ella va a salir caminando y empiezo a correr fuerte para cruzar la meta. Creo que escuche mi nombre, no sé quien me vio pero gracias por aplaudir :). Ya pasando la meta me trato de recuperar del morón que me pegué y recibo mi primera medalla de aguas abiertas.

Debo de agradecer primero a mi familia por apoyarme en estas aventuras. Luego a mi equpo G-Swim por acogerme a dos meses de la competencia y hacerme sentir parte del mismo desde el principio. También agradecerle a mis amigos que practican deporte, por que todos me han motivado con sus logros a perseguir los míos. A Marianella Cordero que, con su blog, me inspiró muchísimo con su experiencias en atletísmo. También a Lorraine Rate y la gente de H2Open Magazine (recomendado por cierto) por su amistad a la distancia, buenos consejos y el excelente plan que seguí para poder conseguir la confianza y condición para poder estar capacitado para este reto. También a los amigos de AguaLibre, el grupillo de locos, que nos vamos siempre a Playa Herradura a entrenar. Apliqué todos y cada uno de los consejos que me dieron.

No puedo describir la emoción de conseguir ésta meta. No gané la competencia pero hice un tiempo mejor del que esperaba. Mañana me toca El Cruce de la Leona y ahora me toca descansar.

 GG!

Llegando a la meta

Carrera Bansol Completada!

Screen Shot 2014-01-26 at 7.01.06 PM

Nada como empezar con el primer reto del año. Me dio un resfriado a dos días de la carrera, pero aún así pude asistir. No se si habrá influido en mi tiempo, pero de todas maneras mejoré mi paso respecto a la carrera anterior. Ahora bién la distancia era mas corta pero bueno, a seguir bajando tiempos.

TIEMPO OFICIAL: 8.5km 47 minutos 21 segundos, paso 5:33 min/Km. Ver aqui.

carrera_bansol

Ahora a prepararme para el siguiente reto: La Batalla!

Próximos retos: Retos 2014