"It's only incidental that computers execute programs. (...) The important thing about a program is that it's something you can show to people, and they can read it and they can learn something from it. It carries information. It's a piece of your mind that you can write down and give to someone else, just like a book."
- Steven Levy, Hackers
Wednesday, October 20, 2010
Tuesday, October 5, 2010
¿Quién quiere perder el tiempo?
Entró por la puerta principal al lobby inmenso del hotel. Subiendo las escaleras automáticas se abrían sobre él todos los niveles de habitaciones, que se desplegaban como balcones concéntricos sobre el nivel principal. Se acercó rápidamente al mostrador, y, finjiendo compresión y manteniendo la compostura a la vez, le dijo a la recepcionista:
- Vengo a entregar algo a alguien que trabaja aquí. Su nombre viene escrito en el sobre.
- Su departamento se encuentra al final del pasillo a mano derecha, puede dejárselo ud. mismo.
Se había prometido antes de salir de casa que no iría a dejárselo él mismo. Si ya todo esto era una pérdida de tiempo, mirarlo al rostro, en fin, estar ahí con él lo haría algo mucho peor. Algo capaz de despertar sus más inconvenientes emociones. No.
Pero tampoco insistiría a la recepcionista a este respecto. Debía confesar también que se había vestido antes de salir para estar listo para este caso.
Caminó, entonces, por un pasillo en el cual se situaban todos los nuevos restaurantes del hotel. Les pasó en frente, uno a uno, mientras se acercaba al final, que era en realidad otra entrada al hotel. Cuando llegó ahí, dobló a la derecha como le habían indicado.
Vió una recepción al poco tiempo; se preguntó si ese era el lugar, si tal vez tendría que dejarlo con otra recepcionista, con un encargado, y luego solo largarse... Pero no, no era ese el lugar.
Sigió caminando, al tiempo que se percató de que, al final de ese otro largo pasillo, todo en línea recta, se encontraba el departamento que buscaba. Y recordó, entonces, que él probablemente estaría en la recepción. No habría marcha atrás: tendría que verlo.
Caminó determinado y con su mejor cara de poker. Conforme se acercaba notaba, cada vez más inequivocamente, que la única persona en recepción era él, a quien buscaba. Vestido como empleado del hotel.
Continuó su camino, con unos pasos fuertes que, le sorprendía ya estando tan cerca, no lo hicieran a él vovlerse para verlo llegar, a ese recóndito y aún así conocido rincón del hotel. Pensó que tal vez todavía se encontraba él en su dominio.
Entonces se acercó tanto que tuvo que volver su mirada del mostrador de recepción y tuvo que notarlo. Su sorpresa fue casi instantánea.
Caminó igual que como venía, sin modificar nada, excepto una ligera sonrisa, entre cortés e irónica.
Lo vió a los ojos. Literalmente tenía la boca abierta. Volvía a ver para todos lados y no atinaba a decir nada. Lo miró sólamente el tiempo suficiente para disfrutar de su sorpresa, entonces sacó el sobre y lo tiró sobre el mostrador. El sobre cayó de forma tal, que tenía hacia arriba la cara donde había escrito el nombre de él.
El otro no salía de su asombro. Se dejó un segundo para contemplar la estocada que había propinado, y entonces, con una determinación que ignoraba que tenía, le dijo:
- Cuidate! :-)
Dió media vuelta y se fue, resistiendo, hasta el final, la curiosidad de volver a ver atrás.
- Vengo a entregar algo a alguien que trabaja aquí. Su nombre viene escrito en el sobre.
- Su departamento se encuentra al final del pasillo a mano derecha, puede dejárselo ud. mismo.
Se había prometido antes de salir de casa que no iría a dejárselo él mismo. Si ya todo esto era una pérdida de tiempo, mirarlo al rostro, en fin, estar ahí con él lo haría algo mucho peor. Algo capaz de despertar sus más inconvenientes emociones. No.
Pero tampoco insistiría a la recepcionista a este respecto. Debía confesar también que se había vestido antes de salir para estar listo para este caso.
Caminó, entonces, por un pasillo en el cual se situaban todos los nuevos restaurantes del hotel. Les pasó en frente, uno a uno, mientras se acercaba al final, que era en realidad otra entrada al hotel. Cuando llegó ahí, dobló a la derecha como le habían indicado.
Vió una recepción al poco tiempo; se preguntó si ese era el lugar, si tal vez tendría que dejarlo con otra recepcionista, con un encargado, y luego solo largarse... Pero no, no era ese el lugar.
Sigió caminando, al tiempo que se percató de que, al final de ese otro largo pasillo, todo en línea recta, se encontraba el departamento que buscaba. Y recordó, entonces, que él probablemente estaría en la recepción. No habría marcha atrás: tendría que verlo.
Caminó determinado y con su mejor cara de poker. Conforme se acercaba notaba, cada vez más inequivocamente, que la única persona en recepción era él, a quien buscaba. Vestido como empleado del hotel.
Continuó su camino, con unos pasos fuertes que, le sorprendía ya estando tan cerca, no lo hicieran a él vovlerse para verlo llegar, a ese recóndito y aún así conocido rincón del hotel. Pensó que tal vez todavía se encontraba él en su dominio.
Entonces se acercó tanto que tuvo que volver su mirada del mostrador de recepción y tuvo que notarlo. Su sorpresa fue casi instantánea.
Caminó igual que como venía, sin modificar nada, excepto una ligera sonrisa, entre cortés e irónica.
Lo vió a los ojos. Literalmente tenía la boca abierta. Volvía a ver para todos lados y no atinaba a decir nada. Lo miró sólamente el tiempo suficiente para disfrutar de su sorpresa, entonces sacó el sobre y lo tiró sobre el mostrador. El sobre cayó de forma tal, que tenía hacia arriba la cara donde había escrito el nombre de él.
El otro no salía de su asombro. Se dejó un segundo para contemplar la estocada que había propinado, y entonces, con una determinación que ignoraba que tenía, le dijo:
- Cuidate! :-)
Dió media vuelta y se fue, resistiendo, hasta el final, la curiosidad de volver a ver atrás.
Monday, August 30, 2010
Crédito terminológico
Si el objeto señanalo por un término, en el presente tiene menos valor en la realidad de ese objeto que lo que el término hubiera designado, hay que pagar por esa diferencia. La diferencia entre el valor real del hecho, y el valor que el término transmite, se paga con crédito... a futuras referencias a ese término. De entrada serán comprendidas, con base en la nueva experiencia, como menores, como devaluadas respecto de aquello que el término designaba. Entonces el término se devalúa a futuro, dejando dos opciones: devaluar el siguiente término superior en la escala de valor, usándolo para referirse a una realidad en este caso también menor que lo que este otro término indicaría. La segunda opción es aguantarse, y, por esa vez, crear expectativas menores y luego demostrar superar con creces tales expectativas, probablemente revalorizando el término, o al menos contribuyendo a lograrlo.
¿Por qué la segunda es tan difícil?
¿Por qué la segunda es tan difícil?
Tuesday, July 27, 2010
Sunday, May 23, 2010
los sueños veinte años despues
la vida está tan lleno de tantas cosas (todas!) que no controlamos. Nos hostinan, nos ahuevan, nos vuelven neuróticos. Y sobre todo lo hacen cuando aún no han ocurrido. Una estupidez. q.e.d.
He cumplido uno de los más grandes sueños de mi vida. Y en cierta forma, lo digo por justicia, estoy seguro ya lo había cumplido antes. Pero ahora lo sé claro, lo vivo claro, y por más inseguridad que tenga, porque siento una enorme inseguridad, no puedo sino sentirme pleno por ello.
Mi mejor amigo me llama su mejor amigo. Mi mejor amiga me llama su mejor amigo. Si soy justo con la vida, ya no puedo pedir más.
He cumplido uno de los más grandes sueños de mi vida. Y en cierta forma, lo digo por justicia, estoy seguro ya lo había cumplido antes. Pero ahora lo sé claro, lo vivo claro, y por más inseguridad que tenga, porque siento una enorme inseguridad, no puedo sino sentirme pleno por ello.
Mi mejor amigo me llama su mejor amigo. Mi mejor amiga me llama su mejor amigo. Si soy justo con la vida, ya no puedo pedir más.
Tuesday, March 30, 2010
No podría expresarme con más desprecio frente a una sociedad que se organizara de forma que alguien, contribuyendo únicamente al afán privado de lucro, consiguiendo con ello únicamente sus propios intereses y despreciando las desdichas de la mayoría, le recompensara con la posibilidad de actuar con tanta indiferencia frente a su propia vida y seducir a una muerte (que se ve bastante segura) con sus actos estúpidos, sin siquiera renunciar a una posición moralista (a su favor).
Wednesday, March 17, 2010
Monday, March 1, 2010
Uploading a file using FTP in C#
Uploading a file to an FTP server from a program written in C# can be a tricky task. Even though there are plenty of examples in the Web about how to achieve this, those examples were not working for me, despite careful verification of both, the code and the FTP server settings.
My problem was that I was getting the following error:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
Of course I verified that the remote location was there on the server and that the location was writable by my user. Finally, my code was basically copied from an MSDN example, so not much of a chance that anything could go wrong there. After a while I noticed that the problem only happened when I was trying to write to a location different that root, like:
ftp://myserver.com/location/NewFileName.txt
didn't work. On the other hand:
ftp://myserver.com/NewFileName.txt
would work as expected.
So if I were to remove location from the URL, it would work perfectly. After quite a while of looking for the answer, I found a post which described the following solution: you should prepend an escaped slash character (%2F) to the location portion of the URL to make it work. Much to my surprise did this not only work, but it also works for multi-level directory structures, having to prepend this prefix only once.
Your remote location would then look as follows:
Here is a rough scrap (not compilable as is!) of the code that I'm using that is finally working as expected:ftp://myserver.com/%2Flocation/NewFileName.txt
// obtains the file name in a fully qualified
// file path,
// file path,
// e.g. for path=C:\Public\test.txt
// file name=test.txt
private string GetFileName(string path) { }
// the base URL for the FTP sever,
// e.g. ftp://myserver.com/
// e.g. ftp://myserver.com/
private string _baseUrl;
// credentials
private string _userId;
private string _password;
public void UploadFile(string localFilePath,
string remoteLocation)
{
// create a request URL, with the URL pointing
// to the new file's location
// to the new file's location
string requestUrl;
if (remoteLocation != null
&& remoteLocation.Length > 0)
&& remoteLocation.Length > 0)
requestUrl = _baseUrl + "%2F"
+ remoteLocation + "/"
+ remoteLocation + "/"
+ GetFileName(localFilePath);
else
requestUrl = _baseUrl
+ GetFileName(localFilePath);
+ GetFileName(localFilePath);
// create a web request using that URL
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create(requestUrl);
(FtpWebRequest)WebRequest.Create(requestUrl);
request.Method =
WebRequestMethods.Ftp.UploadFile;
WebRequestMethods.Ftp.UploadFile;
request.Credentials =
new NetworkCredential(_userId, _password);
new NetworkCredential(_userId, _password);
// read the local file as a byte array
StreamReader src =
new StreamReader(localFilePath);
new StreamReader(localFilePath);
byte[] fileContents =
Encoding.UTF8.GetBytes(src.ReadToEnd());
Encoding.UTF8.GetBytes(src.ReadToEnd());
src.Close();
request.ContentLength = fileContents.Length;
// write those bytes out to the request
Stream requestStream =
request.GetRequestStream();
request.GetRequestStream();
requestStream.Write(fileContents,
0,
fileContents.Length);
0,
fileContents.Length);
requestStream.Close();
// check the server response
FtpWebResponse response =
(FtpWebResponse)request.GetResponse();
(FtpWebResponse)request.GetResponse();
response.Close();
}
I hope this helps somebody! :-)
BTW I'm using the .NET framework version 2, and a Windows FTP server.
Friday, February 26, 2010
Everything in its right place
De pronto se encuentra circulando, como mil pensamientos, un millón de recuerdos lo bombardean, pero en ellos, en ese pensar, circula. Y se siente rodeado como de un aura, como si entre el montón al fin fuera por completo diferente, como si, igual que siempre supo, no perteneciera ahí ni a ninguna otra parte. Pero hoy tiene total sentido, le da lo mismo, ya sabe que podría estar en cualquier lugar y sería el mismo desencajado, misfit, pero hoy brilla con una luz de cambio, con un dolor profundo que lo hace sentir más vivo que nunca.
Por primera vez es dueño de sus recuerdos, por primera vez su pasado es suyo y es algo que realmente ocurrió. Y él es parte de ese pasado. La cantidad de sentimientos que ese pasado alberga es abrumadora... Pero al fin, al fin es suyo! Este ya no se va a escapar...!
Llegan a su mente tantos momentos, son como un tren arrollador, pero él, a la vera de la vía férrea, resiste. Mosaikos. Tribal. Conocer a alguien, enamorarse, besarla, amarla, dejarla, todo una y otra vez, pero esta vez sí ocurre, si tiene desenlace, sí tiene sentido, sí es suyo. Estudiar lo que estudió, no las mil otras posibilidades que no estudió, en el lugar donde lo hizo, disfrutando como lo hizo de los lugares comunes que significaron algo todo este tiempo. Hoy te diste cuenta recién, de que en realidad sí perteneciste a todo eso! De pronto puede ver todas las conexiones, de pronto todo tiene sentido y claro también nada lo tiene. Pero por una vez nota que todo aquello le pertenece para siempre. Nunca nadie se lo va a quitar.
Quiere llorar, quiere gritar, quiere correr. Pero camina. Pero calla. Y aprecia ese silcencio profundo. Hay tanto contenido en él!
También aprecia el poder que tomó la música. Cuántos meses o años puede pasar buscando sentir una pieza así! Cuánto podría haberle tomado encontrar un disco que amara tanto! Pero sobre todo, que poder experimentar tal intensidad en cada acorde de casi cualquier cosa que se proponga escuchar, que eso, y está seguro, es el sentido mismo de su existencia, que en esas notas y el desgarramiento que provocan, deviene vida.
Keep walking. Ya casi estás ahí! De lo único de lo que no duda, es de que pronto habrá un desenlace. Al fin...
Por primera vez es dueño de sus recuerdos, por primera vez su pasado es suyo y es algo que realmente ocurrió. Y él es parte de ese pasado. La cantidad de sentimientos que ese pasado alberga es abrumadora... Pero al fin, al fin es suyo! Este ya no se va a escapar...!
Llegan a su mente tantos momentos, son como un tren arrollador, pero él, a la vera de la vía férrea, resiste. Mosaikos. Tribal. Conocer a alguien, enamorarse, besarla, amarla, dejarla, todo una y otra vez, pero esta vez sí ocurre, si tiene desenlace, sí tiene sentido, sí es suyo. Estudiar lo que estudió, no las mil otras posibilidades que no estudió, en el lugar donde lo hizo, disfrutando como lo hizo de los lugares comunes que significaron algo todo este tiempo. Hoy te diste cuenta recién, de que en realidad sí perteneciste a todo eso! De pronto puede ver todas las conexiones, de pronto todo tiene sentido y claro también nada lo tiene. Pero por una vez nota que todo aquello le pertenece para siempre. Nunca nadie se lo va a quitar.
Quiere llorar, quiere gritar, quiere correr. Pero camina. Pero calla. Y aprecia ese silcencio profundo. Hay tanto contenido en él!
También aprecia el poder que tomó la música. Cuántos meses o años puede pasar buscando sentir una pieza así! Cuánto podría haberle tomado encontrar un disco que amara tanto! Pero sobre todo, que poder experimentar tal intensidad en cada acorde de casi cualquier cosa que se proponga escuchar, que eso, y está seguro, es el sentido mismo de su existencia, que en esas notas y el desgarramiento que provocan, deviene vida.
Keep walking. Ya casi estás ahí! De lo único de lo que no duda, es de que pronto habrá un desenlace. Al fin...
Monday, February 8, 2010
Ahora ella espera algo, que con cada día que pasa siente menos que va a llegar. Prefería mil veces cuando un atraso era no hacer una tarea; quedarse en un examen y tener que presentar. Como hacía tan poco, que, presentando, había logrado salir del cole. Casi podía decir que todavía tenía goma de la fiesta que se pegó cuando finalmente lo logró.
Y la vida la había premiado con alguien que consideraba especial. Al fin, pensaba, alguien me va a tratar como me lo merezco. Atrás quedarán los días de dolor; atrás los golpes, los insultos. Atrás quedó montarse en una moto, irse a dar una vuelta, y pagar la gasolina en especies.
Ella se sienta, en su cama, debajo de un bombillo pelado, escuchando la canción que la hace vibrar, que dice lo que siente. ¡Cómo le gusta que la admiren, pero cuánto más deseaba que la respetaran por la persona sensible que es!
Y aún así, siempre tropezaba. Ella no lo entiende aún, pero es por su edad. Porque cuando te das cuenta de que la edad cuenta en algo, más allá de si te salieron tetas o no, cuando te das cuenta de eso es que ya pasaste por ahí hace rato.
Se nos olvidan sutilezas. Como que la vida es una espiral recursiva, y no una mera repetición. Cada vuelta, cada giro, cada regreso, es regreso solo hacia un punto nuevo, un comienzo de la siguiente iteración. Todas diferentes aún en su similitud.
Pero ese no fue su olvido. Ella olvidó que la vida se abre paso, a como sea. Sí, la vida se vale de su propia juventud, de su cuerpo hermoso, de sus labios tibios, de un abrazo tierno y a la vez apasionado, de recorrer su espalda, palmo a palmo, de descubrir cada rincón de su cuerpo...
Pensaríamos que la vida nos juega una trampa. Pero la trampa está, más bien, en pensar que estamos fuera de ella para mandarla.
Sentada en su cama, mira por la ventana... Por favor, ¡que pase esto, que pase esto ya! Cierro los ojos, me tapo los oídos, me meto a la ducha, me voy a comprar pan, no hay forma de olvidarlo. No hay forma de no angustiarse cuando mami pasa, de evitar que cuando me pregunta algo siento el corazón que me va a estallar. Andar por la casa como un fantasma, por favor, ¡quiero ser como antes otra vez!
Y la vida la había premiado con alguien que consideraba especial. Al fin, pensaba, alguien me va a tratar como me lo merezco. Atrás quedarán los días de dolor; atrás los golpes, los insultos. Atrás quedó montarse en una moto, irse a dar una vuelta, y pagar la gasolina en especies.
Ella se sienta, en su cama, debajo de un bombillo pelado, escuchando la canción que la hace vibrar, que dice lo que siente. ¡Cómo le gusta que la admiren, pero cuánto más deseaba que la respetaran por la persona sensible que es!
Y aún así, siempre tropezaba. Ella no lo entiende aún, pero es por su edad. Porque cuando te das cuenta de que la edad cuenta en algo, más allá de si te salieron tetas o no, cuando te das cuenta de eso es que ya pasaste por ahí hace rato.
Se nos olvidan sutilezas. Como que la vida es una espiral recursiva, y no una mera repetición. Cada vuelta, cada giro, cada regreso, es regreso solo hacia un punto nuevo, un comienzo de la siguiente iteración. Todas diferentes aún en su similitud.
Pero ese no fue su olvido. Ella olvidó que la vida se abre paso, a como sea. Sí, la vida se vale de su propia juventud, de su cuerpo hermoso, de sus labios tibios, de un abrazo tierno y a la vez apasionado, de recorrer su espalda, palmo a palmo, de descubrir cada rincón de su cuerpo...
Pensaríamos que la vida nos juega una trampa. Pero la trampa está, más bien, en pensar que estamos fuera de ella para mandarla.
Sentada en su cama, mira por la ventana... Por favor, ¡que pase esto, que pase esto ya! Cierro los ojos, me tapo los oídos, me meto a la ducha, me voy a comprar pan, no hay forma de olvidarlo. No hay forma de no angustiarse cuando mami pasa, de evitar que cuando me pregunta algo siento el corazón que me va a estallar. Andar por la casa como un fantasma, por favor, ¡quiero ser como antes otra vez!
Sunday, January 24, 2010
mensaje en la contestadora
...hola don Mario, llamaba (se escucha reggae de fondo) para contarle que me he tomado unas vacaciones de la neurosis...
Subscribe to:
Posts (Atom)