Pablo Marambio
Tecnología & desarrollo
-
Apr10No CommentsLa última vez que se sentó Doña Gloria en la silla, se sintió un crujido feo. Fue un ‘crac’ que retumbó en la sala. La vez anterior a ésa, también se había acentuado la grieta en la pata inferior izquierda, pero el sonido fue casi imperceptible. Esa vez, sólo el gato y yo nos dimos cuenta. Yo, por mi oído musical; el gato porque dormía al lado, debajo de la mesa.
Lo que astilló la pata de la silla fue el peso de Doña Gloria –más de 100 kilos– y la forma intempestiva que tiene de sentarse. No sé si se ha fijado, pero es como ocurre con las señoras muy gordas: después de flectar hasta cierto punto las rodillas –momento hasta el cual no sabes si la señora se va para adelante o para atrás– simplemente se dejan caer. Es divertido. Durante el cuarto de segundo que caen hacia la silla, muestran cara de terror. Lo mismo ocurre con Doña Gloria: la cara de miedo no se le quita hasta un segundo después, cuando está segura que aterrizó bien y que la silla aguantó. Obviamente, por el crujido que emitió la silla la última vez, la cara de terror le duró bastante más tiempo.
Igual se sintió medio avergonzada. Para que se sintiera mejor le propuse que mandara a reparar la silla, porque estas sillas viejas se apolillan con el tiempo y terminan cediendo. Pero ésta no mostraba ninguna señal de estar apolillada. No, en este caso definitivamente fue ella la culpable.
La cosa es que aquí estoy de vuelta donde Doña Gloria, una semana después, habiendo olvidado completamente el episodio del crujido. Y Doña Gloria también lo olvidó rapidito, porque la perla no mandó a reparar la silla. “Tome asiento”, me dice ella con esa misma cara que muestra ahora. No se le borró la sonrisa, ¿la ve? Fíjese, sólo alcanzó a abrir un poco los ojos, pero muestra la misma sonrisa con la que me pidió tomar asiento.
Claro, yo, el muy pelotudo, escojo esta silla. Sabía que no me tenía que sentar aquí, pero no sabía por qué. Más que saberlo, lo sentía. Se me vino un dolor agudo al estómago, como cuando… como el que te da cuando te mira una mina rica, ¿me explico? Bueno, dolor o no, me senté igual. En la silla del respaldo rojo, la única de ese color. La silla con la pata astillada.
Y usted llega aquí, de la nada, y me dice que después de esta pausa voy a terminar con la pata de la silla ensartada en la espalda, y que moriré en el acto. No entiendo cómo, porque el respaldo de la silla es de madera y seguramente terminaré cayendo al piso sobre él, y eso debería proteger mi espalda.
Eso es imposible. ¿Cómo me dice que la pata va a atravesar el respaldo de madera y además mi espalda? ¿Que te tutee? Bueno.
Así que puedo preguntar lo que quiera. Su nombre. Digo, tu nombre.
¿El Judas, o Judas nomás? No, no sé nada de la biblia, por eso pregunto. Sólo sé que hay un tipo malo que ahorca a Jesús, o que lo besa y lo ahorca, o algo así. Y que se llama Judas. Claro, bueno. Sí, nunca fui bueno para ese ramo, y mis papás no eran muy religiosos que digamos, aunque eso tú lo debes saber. ¿No lo sabes? ¿Y qué sabes, entonces? ¿Sólo que voy a morir aquí, en un cuarto de segundo más? Bah. Qué fome.
Pero si no sabes nada excepto cómo voy a morir, entonces, ¿qué puedo preguntar? Ah, claro… sí, ¿Por qué funciona así la cosa? Digo, por qué ponen estas pausas antes de la muerte. ¿Sólo conmigo? ¿Cómo, con casos similares?
O sea, ¿lo hacen porque hace falta una explicación? ¡Pero si a mí no me explicas nada, y esto es de lo más estúpido, voy a morir ensartado!
Así es que si vas a morir intempestivamente, te hacen una pausa y aparece un compadre como tú, pero sólo para que tengas una especie de explicación. Ya, bueno. Y no puedes detenerlo, ¿no?
Discúlpame, pero eres un inútil. Ahuevonado, malnacido. Sí, imbécil, si sé que no puedes ser un malnacido, pero te lo digo igual, ¿eh? En alguien me voy a descargar, y ése serás tú.
–
Para Lola
Muchas gracias Victoria, me ayudaste a que este cuento pasara de ser un bodrio a algo que se pudiera entender
-
Aug3No Comments
Un parto. Ese par de palabras describe bastante bien el cacho que significa sacar una licencia de desarrollador iOS en Chile. Yo lo logré peleando más de un par de meses con los hinchapelotas de Apple –no existe mejor descripción. He aquí cómo lo puedes lograr tú!
Sacar la licencia cuesta USD 99 para un desarrollador individual, que es lo que me resultó a mí. Si bien pertenezco a una empresa e intenté sacar la licencia “enteprise” (USD 299, con ciertos beneficios para grupos de desarrolladores), ese proceso es más tedioso aún. Imagínate cómo será, que ahora estoy en la etapa de traducir al inglés la constitución de sociedad. Pero no quiero pensar en eso. Por ahora, te contaré cómo sacar la licencia individual.
El proceso tiene básicamente dos etapas: pago y verificación de identidad. No te dejarán tener una licencia de Apple si no les pagas, y tampoco podrás obtenerla si no les demuestras que eres quien dices ser.
En total, el proceso puede tardar varias semanas, aún sabiendo a priori qué papeles te pedirán. Los tipos de soporte al cliente, a quienes tendrás que huevear incontables veces para que te pesquen, responden varios días hábiles después que les escribes. Y muchas veces te responderán mensajes claramente prefabricados. Yo ya estoy convencido que conversé varias veces con un PC. Owned.
Pero vamos al grano. ¿Qué se necesita para sacar la licencia desarrolador iOS? ¿Con qué problemas te encontrarás?
Para partir, necesitas:
- Mucha paciencia y al menos un mes de anticipación (anticipación a lo que sea que quieras hacer en la plataforma de la manzana, sin contar tiempos de aprendizaje, desarrollo ni el tiempo que se tomará Apple en aprobar la publicación de tu programa al AppStore)
- Una tarjeta de crédito que permita pagar internacionalmente. Si ya has comprado por iTunes o el AppStore, ésa te servirá.
- Tu cédula de identidad (supongo que al día… aunque tal vez no)
- Si quieres desarrollar además, tendrás que tener un computador Apple que cumpla con ciertos requisitos. Pero lo mínimo es que sea Apple. Un asco. Lo bueno es que no es necesario para sacar la licencia.
Qué cosas tendrás que hacer, que no son obvias:
- Mandar incontables correos electrónicos al sistema de ayuda al cliente. En inglés, obvio.
- Ir a una notaría a sacar una fotocopia de tu cédula por ambos lados. ¡Espera! No te sirve hacerlo así nomás, tiene que ir en un formato especial (como todo en este mundo manzanero)… así que no te apures.
Parte 1: Pagar (la fácil)
La primera parte consiste en pagar por el programa. Si eres de Chile, no te dejarán pagar como el resto de la gente. No. Te piden faxearles tu tarjeta de crédito (sí, leíste bien, por fax! WTF?) para que ellos te la carguen a mano. Si estás pensando que es una estupidez, pues… sí, lo es. Una mierda. Ese es el primer problema con el que te vas a topar. Pero calma, no tendrás que hacerlo. Te explicaré cómo pagar por Internet de todas formas, sin tener que faxear tu tarjeta de crédito. Nota al margen: me río cada vez que pienso en que piden faxear la tarjta, es demasiado estúpido. Es como “back to the ’90s”… pero bueno, estamos hablando de Apple.
Entonces, pagaremos. Eso es todo lo que haremos en este paso. No intentes pensar que al terminar tendrás una licencia, porque te faltarán bastantes pasos. Pero ya habrás pagado y lo habrás hecho por Internet, como el resto del mundo que tiene que sacar una licencia iOS.
- Parte entrando a http://developer.apple.com/programs/ios/
- Haz click en “Enroll now” y luego elige “New Apple Developer” creando un nuevo Apple ID.
- Elige licencia Individual, no Company. Lo de la licencia Company es otro tema, y más de locos aún; como para terminar enfermo de la cabeza. Pero no me entusiasmo… no hablaré de eso ahora. Elige Individual.
- Llena los datos que te pide, poniendo un correo que no hayas registrado antes. Asegúrate que ese correo reciba mensajes (que no esté lleno!). Pon el nombre tal como sale en tu cédula. Cuando hayas llegado a la parte del formulario donde te piden el país y la dirección, elige Estados Unidos.
La dirección la puedes mulear, pero tendrás que poner el código postal correcto (el que corresponda a esa dirección). Haz un par de búsquedas en google y verás cómo encontrar el código postal de cualquier dirección. Yo usé google maps y para el proceso de pago vivía en Texas. Siempre quise vivir en EE.UU.
Importante: No elijas Chile, no funcionará. Hazme caso… a menos que quieras pagar faxeando tu tarjeta de crédito. Y rezando para que te pesquen. - En la parte del programa, elige iOS.
- El resto de los formularios que te piden llenar, si bien son una paja, son triviales. Yo inventé todo, da lo mismo.
- Cuando llegues a los términos y condiciones, léelos a cabalidad porque es muy importante, ya que –mentira!. No leas nada (como si hubieras querido!). Igual te van a cagar, independiente de lo que creas. En el mundo de Apple, tío Steve Jobs pone las reglas y las cambia cuando quiere. Y te cagará si le conviene. Estás a su merced. Resígnate y apreta “I have read…”
- Al momento de pagar, pon una tarjeta de crédito internacional e inventa una dirección en Estados Unidos si te la piden, siguiendo las instrucciones del paso 4.
- Luego de pagar (asumo que tienes fondos) exitosamente, aparecerá un mensaje indicando que no han podido validar tu identidad. No te preocupes. Con esto, hemos llegado al paso 2.
- Importante: te llegará un correo electrónico con el título “Apple Developer Program Activation Code”. No lo pierdas, ya que lo necesitarás después.
Parte 2: Validar identidad (la tediosa)
Esta es la parte que es más asquerosa, y que se puede tardar meses. Pero calma. Con mi ayuda Jedi (y mucha, muuucha paciencia), podrás lograrlo en unas pocas semanas.
- Loguéate a tu cuenta recién creada (http://developer.apple.com, luego haz click en Member Center e ingresa con tu email y clave que creaste en el paso 1)
- A la derecha de la pantalla aparecerá “Enrollment Status: Pending”. Aparecerá algo así como “We are unable to activate your Apple Developer Program membership because we are unable to successfully verify your identity. Please download the following form and (…)”. Bueno, hazle caso. Bájate el formulario. Es un PDF con un párrafo de texto, dos campos para llenar (Enrollment ID y correo electrónico) y un lugar en blanco para que fotocopies ante notario tu cédula, por ambos lados.
- Imprime el formulario, y escribe tu correo electrónico y tu Enrollment ID tal como los ingresaste en la Parte 1. Anda a la notaría y pide que te fotocopien la cédula de identidad por ambos lados en el espacio que queda al final de la hoja. El trámite cuesta más o menos luca. Al final terminas con el formulario con tu correo, tu Enrollment ID, tu cédula (fotocopiada) y un par de timbres que te pondrá el notario.
- Manda por fax el formulario y ponte a esperar.
- En una semana o dos (una mierda, lo sé, pero estamos hablando de Apple) debería llegarte un correo electrónico como éste:
“Hello <Tu nombre>,
Thank you for contacting Apple Developer Support regarding your Developer Account.
Please know that we have received your notarized ID however it is not a United States Driver’s License. You would need to re-enroll and list Chile as your country or provide a US-issued notarized ID.
I hope that this information is helpful to you. Thank you for your continued interest in our programs.
Best regards,” - Borra el caché y las cookies del browser, poniendo especial cuidado en que ninguna mencione a apple.com o sus secuaces (entiéndase subdominios). Luego entra a la página del programa (http://developer.apple.com) y regístrate de nuevo, pero usando puros datos reales y el mismo Apple ID que elegiste en la Parte 1. Sí, escuchaste bien: puros datos reales, incluyendo tu dirección en Chile (supongo que puedes mulearla, pero debe decir que vives en Chile). Completa todos los pasos hasta llegar al pago. No tendrás que pagar.
- Para evitar el pago, busca el correo que te mencioné al final de la Parte 1. Haz click en el link que muestra el “Activation Code” y llegarás a la página de Apple. Si te lo pide, loguéate con tu Apple ID.
- Si te muestra una página que indica que has pagado exitosamente, vas bien. Sin embargo debería aparecer este mensaje: “We are unable to activate your Apple Developer Program membership because we are unable to successfully verify your identity. Please contact us and reference Enrollment <nuevo enrollment-id> for further assistance.” Si no aparece… manda un email de reclamo. Y reza para que te pesquen.
- Ahora envía el siguiente correo de respuesta al que te llegó en el paso 5:
“Follow-up: <número de follow-up mencionado en el correo del paso 5>
I have just re-enrolled listing Chile as my country. I have also successfully used my previous activation code to pay for the program. However, after activating I have received the following message:
‘We are unable to activate your Apple Developer Program membership because we are unable to successfully verify your identity. Please contact us and reference Enrollment ID#… for further assistance.’ I have already faxed a notarized chilean ID. What should I do next?
Best regards,” - Espera un par de días la respuesta. Debería ser la última de todas! En mi caso fue la siguiente:
“Hello <tu nombre>,
Thank you for your follow up email regarding your iOS Developer Program account.
Please know that I went ahead and released the hold on your new Enrollment. You should now be able to use your activation code to bring the account online.” - Loguéate con tu Apple ID y verás que el menú muestra muchas más opciones. ¡Has obtenido exitosamente una licencia de desarrollador iOS! ¡¡Bienvenido a la manzana podrida!!
Espero que esta mini guía te sea de utilidad. A mí me habría servido muchísimo!

-
Jun13No Comments
Esta es una versión un poco más producida, y escrita en .NET, de lo que presentó Steve Marx en su charla “Building Java Applications with Windows Azure“. La idea es mostrar cómo se puede usar la API de almacenamiento de Azure a través de un wrapper, en este caso el que fue escrito para .NET.
El ejemplo es bastante simple: Una aplicación web que sirve para aumentar un contador, el que es incrementado cada vez que se hace click sobre un botón. El contador se almacena como texto en un blob.
La aplicación cuenta con dos vistas:
- La primera incrementa directamente el contador modificando el valor del blob cada vez que se hace click sobre el botón.
- La segunda deja un mensaje en una cola para que “otro” se encargue de incrementar el contador en el blob. Ese “otro” es el “back-end” de la aplicación; en este caso, un proceso independiente corriendo en otra máquina virtual dentro de Windows Azure.
La arquitectura de cada vista es más o menos como sigue:
- Para la primera vista, la acción de hacer click sobre el botón “incrementar” se traduce automáticamente en una escritura del blob.
- Para la segunda vista, sin embargo, el hacer click sobre el botón sólo deja un mensaje para que el back-end incremente el valor del blob, cuando lo estime conveniente.
- Por otra parte, cada cierto tiempo, el rol trabajador (”el otro“, como fue describido más arriba) se encarga de aumentar el blob por cada mensaje existente en la cola.
El código de la aplicación de ejemplo es provisto como una solución de visual studio que puede ser descargado al final de este post. Cuenta con dos proyectos principales, uno para la aplicación web (”web role”) y otro para el back-end (”worker role”). Además, cuenta con un tercer proyecto que almancena los componentes y servicios comunes a ambos roles.
Los requisitos para poder compilar y probar esta solución son:
- Visual Studio 2010
- Cloud Service 1.1 o superior (Cloud Service es el ambiente de desarrollo para Windows Azure)
- Castle Windsor 2.1 (inversor de dependencias; me resulta más fácil escribir aplicaciones web ASP.NET MVC con un componente de este tipo). Este componente está incluido como binario en la solución.
- Mvc Contrib (muchas funcionalidades, pero para este caso, permite usar Castle Windsor fácilmente). Este componente está incluido como binario en la solución.
- jQuery 1.4.2 (biblioteca javascript para mostrar los mensajes en la cola). Este componente está incluido como código fuente en la solución.
Si además estás interesado en probar este proyecto directamente sobre Windows Azure, te recomiendo echarle una mirada a las ofertas que hace MSDN al respecto.
Happy coding!
Descargas: solución con código fuente y algunas dependencias en formato binario (link).
-
Jun11No Comments
Ayer en la tarde tuve el privilegio de dar una charla sobre Windows Azure junto a Luis Hereira (a.k.a. “Luisón”) en las oficinas de Microsoft Chile.
Entre otros, hice 3 demos:
- Cómo usar la API de storage sobre .NET y Java,
- Cómo subir “otros programas” a la nube (ver Apache Tomcat corriendo sobre Windows Azure), y
- Qué estrategias se pueden seguir para desacoplar distintas partes de una aplicación
Desde ya hago la promesa de subir tanto la presentación como las demos a este sitio durante el fin de semana. Lamentablemente, hoy no puedo hacerlo puesto que tengo que trabajar como loco (esto de preparar presentaciones te quita algo de tiempo…).
Por ahora, dejo para los fanáticos de Windows Azure la dirección al sitio web con los mejores instructores con los que cuenta la plataforma hasta ahora: los de Cloud Cover. Échenle una mirada a esos webcasts: son entretenidos, fáciles de seguir y, además, gratis

-
Sep191 Comment
Cada programador tiene una manera personal de trabajar, de impregnar en el código que ha escrito una especie de firma personal. Y es que después de trabajar años con el mismo lenguaje, uno va formando una especie de relación con éste (<nota> ok, eso puede haber sonado demasiado ñoño, pero espera a que conozcas un lenguaje especial…
</nota>). Al principio puedes no llevarte muy bien, pero al cabo de cierto tiempo, le vas tomando el gusto a trabajar con él y lo vas conociendo mejor (<nota> me gustaría poder referirme al lenguaje como “ella”, pero hasta que no los llamen “lengua”, tendré que aguantarme :) </nota>). Lo que es yo, ya tengo elegido el lenguaje de mi preferencia: C#. Ahora bien, quien se jacta de conocer íntimamente un lenguaje, debe tener dominadas, o al menos conocer, las técnicas “ocultas” del mismo. En el caso de mi lenguaje, C#, estas son muchas… más bien muchísimas. La razón es que este lenguaje ha mostrado una evolución muy acelerada en sus cortos años de vida: De hecho, los cambios que se le introdujeron en la versión 2.0 (generics, delegados anónimos, etc.) no son nada en comparación con los que se ven en la versión actual de C#, acompañando la versión 3.5 del .NET Framework. Por lo mismo, quien lleva trabajando un tiempo con él no conoce necesariamente toda su potencialidad.
Un lugar donde la comunidad de usuarios se ha pronunciado y ha elegido los trucos más cool de este potente lenguaje es la nueva página de conocimiento colaborativo llamada StackOverflow. Dicho sea de paso, esta página web está construida sobre ASP.NET MVC, un framework que un desarrollador web .NET debe conocer.
-
Aug13No Comments
Voy a echarle una probadita al plugin de syntax highlighting que acabo de instalar. Vamos a ver… el siguiente código debería verse en colores, similar a como lo muestra Visual Studio:
public partial class CursosProfesor : System.Web.UI.Page
{
string nomProfesor;protected void Page_Load(object sender, EventArgs e)
{
nomProfesor = Request.QueryString["profe"];
if (nomProfesor.Contains(‘ ‘)) { … }Hmmm… ahora ustedes lo ven OK, pero hace un rato funcionaba a medias por un par de problemas que luego de cranearme un rato pude solucionar:
1) La documentación de wp-syntax (el plugin de WordPress que por debajo utliza GeSHi) estaba mala, ya que no había que encapsular al código en el post dentro de <pre>…</pre> sino que dentro de <code>…</code>
2) El css del skin que estoy usando en el blog entraba en conflicto con el css generado por GeSHi, ya que en este último seteaba la font-family con que se vería el código en el div más exterior que lo contenía, pero mi skin seteaba la fuente (por alguna extraña razón) en los paragraph (<p>) a Arial y otras que no son monospace… y como GeSHi escupió unos párrafos entremedio del código, ciertas partes de éste se veían desalineados, ya que los que GeSHi utiliza para indentar no eran respetados. -
Aug115 Comments
No, no le falta el punto y coma al final: Está en Visual Basic.



