Luca's meaningless thoughts   SponsorGitHub SponsorsLiberapayPaypalBuy Me A CoffeePatreonFlattr

opDispatch

by Leandro Lucarella on 2009- 11- 30 05:02 (updated on 2009- 11- 30 05:02)
tagged d, dynamic, en, opdispatch, patch - with 0 comment(s)

From time to time, people suggested features to make easier to add some dynamic capabilities to D. One of the suggestions was adding a way to have dynamic members. This is specially useful for things like ORMs or RPCs, so you can do something like:

auto rpc = new RPC;
rpc.foo(5);

And it get automatically translated to some sort of SQL query or RPC call, using some kind of introspection at runtime. To enable this, you can translate the former to something like:

obj.dispatch!("foo")(5);

There was even a patch for this feature, but Walter didn't payed much attention and ignore this feature until a couple of days ago, when he got bored and implement it himself, on its own way =P

I think this is a very bad policy, because it discourages people to contribute code. There is no much difference between suggesting a feature and implementing it providing a patch, unless you have a very good personal relationship with Walter. You almost never will have feedback on your patch, Walter prefers to implement things himself instead of giving you feedback. This way it's very hard for people wanting to contribute to learn about the code and on how Walter wants patches to be done; and this is what discourages contributions.

I won't write again about what are the problems in the D development model, I already done that without much success (except for Andrei, who is writing better commit messages now, thanks for that! =). I just wanted to point out another thing that Walter don't get about open-source projects.

Anyway, this post is about opDispatch(), the new way of doing dynamic dispatching. Walter proposed opDynamic(), which was wrong, because it's not really dynamic, it's completely static, but it enables dynamic dispatching with a little extra work. Fortunately Michel Fortin suggested opDispatch() which is a better name.

The thing is simple, if a method m() is not found, a call to opDispatch!("m")() is tried. Since this is a template call, its a compile-time feature, but you can easily do a dynamic lookup like this:

void opDispatch(string name)(int x)
{
    this.dispatch(name, x);
}

void dispatch(string name, int x)
{
    // dynamic lookup
}

I personally like this feature, we'll see how all this turns out.

Reciclable

by Leandro Lucarella on 2009- 11- 21 21:00 (updated on 2009- 11- 21 21:00)
tagged es, imán, photo, reciclable - with 0 comment(s)

Más bizarreadas del mundo real:

https://llucax.com/blog/posts/2009/11/21-reciclable.jpg

¿Alguien me explica que tiene que ver el imán?

Update

Parece ser el símbolo de Acero Reciclable (al menos en inglaterra). Más detalle en los comentarios...

Unintentional fall-through in D's switch statements

by Leandro Lucarella on 2009- 11- 21 02:34 (updated on 2009- 11- 21 02:34)
tagged d, en, fall-through, patch, switch - with 0 comment(s)

Removing switch fall-through from D's switch statement is something discussed since the early beginnings of D, there are discussions about it since 2001 and to the date [*]. If you don't know what I'm talking about, see this example:

switch (x) {
case A:
    i = x;
    // fall-through
case B:
    j = 2;
    break;
case C:
    i = x + 1;
    break;
}

If you read carefully the case B case A code, it doesn't include a break statement, so if x == A not only i = x will be executed, the code in case B will be executed too. This is perfectly valid code, introduced by C, but it tends to be very error prone and if you forget a break statement, the introduced bug can be very hard to track.

Fall-through if fairly rare, and it would make perfect sense to make it explicit. Several suggestions were made in this time to make fall-through explicit, but nothing materialized yet. Here are the most frequently suggested solutions:

  • Add a new syntax for non-fall-through switch statements, for example:

    switch (x) {
    case A {
        i = x;
    }
    case B {
        j = 2;
    }
    case C {
        i = x + 1;
    }
    
  • Don't fall-through by default, use an explicit statement to ask for fall-through, for example:

    switch (x) {
    case A:
        i = x;
        goto case;
    case B:
        j = 2;
        break;
    case C:
        i = x + 1;
        break;
    }
    

    Others suggested continue switch or fallthrough, but I think some of this suggestions were made before goto case was implemented.

A few minutes ago, Chad Joan has filled a bug with this issue, but with a patch attached 8-). He opted for an intermediate solution, more in the lines of new switch syntax. He defines 2 case statements: case X: and case X!: (note the !). The former doesn't allow implicit fall-through and the latter does. This is the example in the bug report:

switch (i)
{
    case 1!: // Intent to use fall through behavior.
        x = 3;
    case 2!: // It's OK to decide to not actually fall through.
        x = 4;
        break;

    case 3,4,5:
        x = 5;
        break;

    case 6: // Error: You either forgot a break; or need to use !: instead of :
    case 7: // Fine, ends with goto case.
        goto case 1;

    case 8:
        break;
        x = 6; // Error: break; must be the last statement for case 8.
}

While I really think the best solution is to just make a goto case required if you want to fall-through [†], it's great to have a patch for a solution. Thanks Chad! =)

[*]

This is the latest discussion about this, started by Chad Joan (I guess): http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=101110

Here is the last minute announcement of the patch: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=101937

And here are some links for older switch statement related discussions:

[†]I find it more readable and with better locality, to know if something fall-through or not I just have to read the code sequentially without remembering which kind of case I'm in. And I think cases without any statements should be allowed too, I wonder how this works with case range statements.

Gato Pajero

by Leandro Lucarella on 2009- 11- 20 19:07 (updated on 2009- 11- 20 19:07)
tagged ciencias naturales, es, fcnym, gato, gato pajero, la plata, museo, photo - with 0 comment(s)

https://llucax.com/blog/posts/2009/11/20-gato-pajero.mini.jpg

Sacada en el Museo de Ciencias Naturales de la Facultad de Ciencias Naturales y Museo de la Universidad Nacional de La Plata.

Más allá del chiste, muy lindo museo para ir a visitar...

Primer

by Leandro Lucarella on 2009- 11- 20 02:31 (updated on 2009- 11- 20 02:31)
tagged es, movie, primer, shane carruth, time travel, xkcd - with 0 comment(s)

Hace poquito vi Primer, película a la que llegué gracias a un cómic de XKCD. A mí me gusto bastante, es del tipo de película de Pi, en la que no entendés demasiado a menos que la veas un par de veces o que leas el artículo de Wikipedia =P.

Como un dato curioso, la película fue escrita, dirigida, producida, editada, protagonizada y musicalizada por Shane Carruth, un matemático, y costó sólo U$D 7.000. Además los actores terminaron siendo todos amigos o familiares porque dijo que los actores que audicionaron le ponían todos demasiado drama a la actuación =P.

Su idea fue mostrar un descubrimiento científico (en este una forma de viaje en el tiempo) de forma realista; es decir, de casualidad como efecto secundario de otro experimento. No digo más para no cagarles mucho la película (asumo que si leyeron XKCD ya se imaginaban que había viaje en el tiempo ;).

Para los que ya la vieron, en el artículo de la Wikipedia hay un lindo diagrama de como funciona el viaje en el tiempo que les recomiendo mirar.

Qué linda facultad!

by Leandro Lucarella on 2009- 11- 19 15:26 (updated on 2009- 11- 19 15:26)
tagged es, facultad, fiuba, gradiente, política, uba, video, youtube - with 0 comment(s)

El viernes 13 de noviembre de 2009, en el Consejo Directivo de la FIUBA (Facultad de Ingeniería de la UBA, por si anda con fiaca de seguir links), un animalito llamado Edgardo Romano, coordinador del Área Inserción Laboral y Pasantías de la SEUBE (Secretaría de Extensión Universitaria y Bienestar Estudiantil) y miembro de la agrupación El Gradiente, golpeó sorpresivamente a un estudiante durante la sesión para elegir Decano. Lamentablemente (para él), quedó grabado en un video.

Lavar cuando esté sucia

by Leandro Lucarella on 2009- 11- 18 03:26 (updated on 2009- 11- 18 03:26)
tagged es, foto, humor - with 0 comment(s)

Brillante la sugerencia de la gente de Puma.

https://llucax.com/blog/posts/2009/11/18-lavar-cuando-esté-sucia.mini.jpg

Por si no se entiende, esa es la parte de atrás de la etiqueta de una remera.

La fábrica de fallas

by Leandro Lucarella on 2009- 11- 17 13:30 (updated on 2009- 11- 17 13:30)
tagged cc, copyleft, es, evento, la tribu, política - with 0 comment(s)

https://llucax.com/blog/posts/2009/11/17-la-fábrica-de-fallas.jpg

El sábado 21 y domingo 22 de noviembre se realizará el segundo festival de cultura libre y copyleft denominado Fábrica de Fallas, en FM La Tribu (Lambaré 873).

El programa es largo y tiene muchas actividades muy interesantes, les recomiendo pegarle una mirada. A diferencia de otros eventos de este estilo, parece mucho más abarcativo e interesante. Incluso a través de este evento me enteré que ya hay una pata argentina del Partido Pirata.

En fin, muy interesante como para darse una vuelta.

Annotations, properties and safety are coming to D

by Leandro Lucarella on 2009- 11- 14 02:34 (updated on 2009- 11- 14 18:45)
tagged annotation, d, en, property, safe, trusted - with 0 comment(s)

Two days ago, the documentation of functions were updated with some interesting revelations...

After a lot of discussion about properties needing improvements [*], it seems like they are now officially implemented using the annotations, which seems to be official too now, after some more discussion [†].

Annotations will be used for another longly discussed feature, a safe [‡] subset of the language. At first it was thought as some kind of separate language, activated through a flag -safe (which is already in the DMD compiler but has no effect AFAIK), but after the discussion it seems that it will be part of the main language, being able to mark parts of the code as safe or trusted (unmarked functions are unsafe).

Please take a look at the discussions for the details but here are some examples:

Annotations

They are prefixed with @ and are similar to attributes (not class attributes; static, final, private, etc. see the specs for details).

For example:

@ann1 {
    // things with annotation ann1
}

@ann2 something; // one thing with annotation ann2

@ann3:
    // From now on, everything has the ann3 annotation

For now, only the compiler can define annotations, but maybe in the future the user can do it too and access to them using some reflection. Time will tell, as usual, Walter is completely silent about this.

Properties

Properties are now marked with the @property annotation (maybe a shorter annotation would be better? Like @prop). Here is an example:

class Foo {
    @property int bar() { ... } // read-only
    @property { // read-write
        char baz() { ... }
        void baz(char x) { ...}
    }

Safe

Now functions can be marked with the annotations @safe or @trusted. Unmarked functions are unsafe. Safe functions can only use a subset of the language that it's safe by some definition (memory safe and no undefined behavior are probably the most accepted definition). Here is a list of things a safe function can't do:

  • No casting from a pointer type to any type other than void*.
  • No casting from any non-pointer type to a pointer type.
  • No modification of pointer values.
  • Cannot access unions that have pointers or references overlapping with other types.
  • Calling any unsafe functions.
  • No catching of exceptions that are not derived from class Exception.
  • No inline assembler.
  • No explicit casting of mutable objects to immutable.
  • No explicit casting of immutable objects to mutable.
  • No explicit casting of thread local objects to shared.
  • No explicit casting of shared objects to thread local.
  • No taking the address of a local variable or function parameter.
  • Cannot access __gshared variables.

There is some discussion about bound-checking being active in safe functions even when the -release compiler flag is used.

Trusted functions are not checked by the compiler, but trusted to be safe (should be manually verified by the writer of the function), and can use unsafe code and call unsafe functions.

[*]

Here are some links to the property discussions:

[†]

Discussion about annotations:

[‡]

Discussions about SafeD:

Fotopedia

by Leandro Lucarella on 2009- 11- 13 21:06 (updated on 2009- 11- 13 21:06)
tagged cc, en, fotopedia, photo - with 0 comment(s)

About Fotopedia:

Fotopedia is breathing new life into photos by building a photo encyclopedia that lets photographers and photo enthusiasts collaborate and enrich images to be useful for the whole world wide web.

It's like the Wikipedia but only about pictures. Pick a place, person, object, whatever, and get (Creative Commons licensed) pictures about it.

Burj Dubai

by Leandro Lucarella on 2009- 11- 13 19:02 (updated on 2009- 11- 13 19:02)
tagged building, burj dubai, en, flickr, joichi ito, photo, surreal - with 0 comment(s)

It's a drawing? ... It's a 3D render? ...

https://llucax.com/blog/posts/2009/11/13-burj-dubai.jpg

It's a photograph! (by Joichi Ito)

The Burj Dubai is the tallest building in the world... by far (about 50% taller than the second). It has a projected shadow of 2.5 Km.

Go nuts

by Leandro Lucarella on 2009- 11- 11 15:14 (updated on 2009- 11- 11 21:48)
tagged compiler, d, en, go, google, language, software - with 0 comment(s)

I guess everybody (at least everybody with some interest in system programming languages) should know by now about the existence of Go, the new system programming language released yesterday by Google.

I think this has a huge impact in D, because it's trying to fill the same hole: a modern high-performance language that doesn't suck (hello C++!). They have a common goal too: be practical for business (they are designed to get things done and easy of implementation). But there are still very big differences about both languages. Here is a small summary (from my subjective point of view after reading some of the Go documentation):

Go D
Feels more like a high-level high- performance programming language than a real system programming language (no asm, no pointer arithmetics). Feels more like a real close to the metal system programming language.
Extremely simple, with just a very small set of core features. Much more complex, but very powerful and featureful.
Can call C code but can't be called from C code. Interacts very well with C in both directions (version 2 can partially interact with C++ too).
Feels like a very well thought, cohesive programming language. Feels as a bag of features that grew in the wild.
FLOSS reference implementation. Looks very FLOSS friendly, with proper code review, VCS, mailing lists, etc. Reference implementation is not FLOSS. Not very FLOSS friendly (it's just starting to open up a little but it's a slow and hard process).
Supported by a huge corporation, I expect a very large community in very short time. Supported by a very small group of volunteers, small community.

I really like the simplicity of Go, but I have my doubts about how limiting it could be in practice (it doesn't even have exceptions!). I have to try it to see if I will really miss the features of more complex programming languages (like templates / generics, exceptions, inheritance, etc.), or if it will just work.

I have the feeling that things will just work, and things missing in Go will not be a problem when doing actual work. Maybe it's because I had a very similar feeling about Python (indentation matters? Having to pass self explicitly to methods? No ++? No assignment in if, while, etc.? I hated all this things at first, but after understanding the rationale and using then in real work, it works great!). Or maybe is because there are is extremely capable people behind it, like Ken Thomson and Rob Pike (that's why you can see all sort of references to Plan 9 in Go :), people that knows about designing operating systems and languages, a good combination for designing a system programming language ;)

You never know with this things, Go could die in the dark or become a very popular programming language, only time will tell (but since Google is behind it, I guess the later is more likely).

The Mighty Boosh

by Leandro Lucarella on 2009- 11- 07 20:09 (updated on 2009- 11- 07 20:09)
tagged es, humor, isat, serie, series, the mighty boosh, tv, uk - with 0 comment(s)

Ya dije varias veces que no tengo tele (ni cable).

¿Por qué lo repito? Porque cada vez que tengo la oportunidad de sentarme frente a un televisor con cable y estoy haciendo zapping durante media hora sin encontrar nada interesante, pienso lo mismo: No pienso poner cable.

Pero claro, siempre hay una excepción a la regla y en este caso esa excepción se llama I-SAT (por alguna razón el Javascript de la página principal no me anda así que escarbando en el HTML encontré que se puede entrar usando este link alternativo que les dejo por si tampoco pueden entrar). En ese bendito canal siempre hay altas chances de encontrarse algo interesante.

Anoche no fue la excepción, y me encontré con una serie británica muy delirante llamada The Mighty Boosh. En realidad se trata de un grupo homónimo, que hizo de todo: obras de teatro, radio y TV. Humor británico 100%, así que sabrán a qué atenerse (a mí en particular me resulta muy divertido :-).

Por si no se dan cuenta en las fotos, uno de los miembros, Noel Fielding, es el actor que interpreta a Richmond, el personaje dark de The IT Crowd, otra gloriosa serie británica.

En fin, si bien vi apenas 15 minutos de un capítulo empezado, me animo a recomendarla enfáticamente. Pueden buscar videos en YouTube y ver que les parece. Igual yo no encontré nada muy representativo de la serie, en el canal oficial de la BBC hay muchos de los números musicales que hacen (que son un desquicie total) y en el canal oficial del DVD del grupo hay varias apariciones en vivo (también mayormente musicales).

DMD frontend 1.051 merged in LDC

by Leandro Lucarella on 2009- 11- 07 18:08 (updated on 2009- 11- 07 18:08)
tagged compiler, d, dmd, en, ldc, merge, software - with 0 comment(s)

After 5 or 6 DMD versions with important regressions, LDC has just been updated to DMD's frontend 1.051. This brings a lot of bug fixes to the LDC world (DStress results are looking good! ;).

Lots of thanks to LDC guy for merging the new frontend =)

TED: Witricity

by Leandro Lucarella on 2009- 11- 06 23:40 (updated on 2009- 11- 06 23:40)
tagged en, eric giler, ted, witricity - with 0 comment(s)

The concept of transfering energy without wires is pretty old. You can even have it now, with RFID for example (I even have a mouse that uses no battery, the pad transfer energy to the mouse using RFID; very good mouse BTW).

But Eric Giler presents a nice new concept in wireless electricity (the marketing name is Witricity), because other kind of wireless energy transfer I saw has very little power (to avoid frying your brain ;). This one works using a magnetic field instead of radio waves, which makes possible to transfer bigger amounts of energy without harm.

In the video you can see how it powers a big LCD screen for example. I don't know how efficient this will be. At first sight it looks like it would waste a lot of energy, because the magnetic field generation will be using energy all the time, even when there are no devices using it.

Here is the video:

Patch to make D's GC partially precise

by Leandro Lucarella on 2009- 11- 06 14:43 (updated on 2009- 11- 06 23:09)
tagged d, en, gc, precise - with 0 comment(s)

David Simcha has announced a couple of weeks ago that he wanted to work on making the D's GC partially precise (only the heap). I was planning to do it myself eventually because it looked like something doable with not much work that could yield a big performance gain, and particularly useful to avoid memory leaks due to false pointers (which can keep huge blocks of data artificially alive). But I didn't had the time and I had other priorities.

Anyway, after some discussion, he finally announced he got the patch, which he added as a bug report. The patch is being analyzed for inclusion, but the main problem now is that it is not integrated with the new operator, so if you want to get precise heap scanning, you have to use a custom function to allocate (that creates a map of the type to allocate at compile-time to pass the information about the location of the pointers to the GC).

I'm glad David could work on this and I hope this can be included in D2, since is a long awaited feature of the GC.

Update

David Schima has been just added to the list of Phobos developers. Maybe he can integrate his work on associative arrays too.

Te juro que no tengo parientes políticos!

by Leandro Lucarella on 2009- 11- 04 23:54 (updated on 2009- 11- 04 23:54)
tagged burocracia, es, política - with 0 comment(s)

Hoy fui al banco a hacer un trámite y entre papeleta para firmar que va y que viene me preguntan:

¿Tenés algún pariente en política?

Realmente no sabía si de pronto estaba en 1976 o si sólo me estaba dando charla, pero no, cuando le dije incómodamente (no, no voy a poner de nuevo mi cara de WTF) que creía que no (yo que sé si tengo un tío tercero que sea gobernador de Garompia!), me dio un papel para que se lo firmara.

No tuve tiempo de leer mucho lo que decía el papel ahí pero me pareció tan bizarro que le pedí una copia para leerlo en casa, y resultó ser una declaración jurada para la (y cito) "Prevención del lavado de dinero y otras actividades ilícitas".

Si son curiosos, acá tienen las fotos del documento:

1 2 3

Me gustaría ser naïf y pensar que sirve para algo...

Rompé, Pepe, rompé!

by Leandro Lucarella on 2009- 11- 04 03:44 (updated on 2009- 11- 04 03:44)
tagged es, fotonovela, personal, rompe pepe rompe - with 3 comment(s)

Warning

Post laaaargo ;)

Tal vez hayan notado que hace varios días que estoy bastante silencioso (exceptuando el exabrupto de hoy ;). Esto se debe básicamente a un problemita en casa. La historia es más o menos así (en forma de fotonovela):

Un día notamos que la pared empezó a brotarse levemente, mostrando algunas burbujitas:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/01-burbujitas.mini.jpg

Luego de algunos días se convirtieron en algo que nos hizo pensar que podríamos llegar a tener un problemita de humedad:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/02-humedad.mini.jpg

Decidimos llamar a algunos plomeros para ver que onda. Uno, llamémoslo José, no tenía ni la más pálida idea de lo que estaba haciendo, decía que empezaba a romper donde había salido la primer burbuja (casi arriba de todo), aunque claramente no había ningún caño ahí. Gracias, José, seguí participando...

Otro, llamémoslo Guillermo, pareció levemente más serio; dijo que él sospechaba del baño (que está arriba), cuyo desagote pasa verticalmente por la esquina de la cocina:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/03-esquina.mini.jpg

Yo dudé mucho que sea el baño, pero (ya les adelanto que) luego demostró tener razón.

Recomendó esperar algunos días antes de hacer nada para ver si se veía humedad en otro lado porque si tenía que hacer algo ahora era empezar a romper a ciegas. Así que eso hicimos...

El tiempo pasó y la humedad aumentó, pero sólo un poco. En esos días de casualidad descubrí una tapa de inspección del caño de desagote:

04 05

Pero a simple vista no detecté nada raro.

Cansados de esperar decidimos llamar a Guillermo nuevamente para que empiece a picar; en principio al lado del calefón, que parecían ser el caño más cercano.

Vino (dos horas tarde, flojo Guille!) y justo antes de empezar a picar se me ocurrió mencionarle la tapa. Dudó bastante en mirarla pero al final lo hizo, y metiendo la mano con más coraje plomeril de que yo pude tener, parece que no estaba tan seco como se veía de lejos, así que las sospechas volvieron al baño.

Para confirmarlas, hicimos un experimento: llenar la bañera con el tapón puesto y luego desagotar. Y pum! Empezamos a ver una tímidas gotas:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/06-gotas-abajo.mini.jpg

Con cara de apesadumbrado me dio la noticia:

Seguramente es la rejilla y para arreglarlo y que quede bien hay que cambiar todos los caños del baño [*]; y, tal vez, sacar la bañera [†], aunque no creo.

Luego de ponerle cara de WTF:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/07-cara-wtf2.mini.jpg

Dije que iba a pensarlo y se fue sin romper nada.

Pensamos que tal vez llamar a otro podría ser una buena idea y lo hicimos. Llamamos a un plomero, llamémoslo Domingo, que nos pasó un arquitecto conocido con la esperanza de que sea más mejor. Pero vino, pego un golpe de mirada a la pared de la concina y dijo:

Ehhh, sí, calculale 500 pesos.

Le traté de sacar más detalles sobre lo que pensaba o lo que había que hacer, preguntándole si quería al menos pasar a ver el baño pero no hubo caso. La verdad que no sé ni para que vino, para tirar un número al azar podría haberlo hecho por teléfono :S.

Otro no conseguí, así que el dilema era arriesgarse con un ladri conocido potencialmente más barato o con un desconocido que sonaba convincente pero que quería básicamente hacer el baño (con menos de 10 años de antigüedad) de nuevo.

Llamé a Guillermo y luego de intentar convencerlo de arreglarlo logró convencerme él a mí de que no había forma de arreglarlo bien que no sea cambiar los caños, así que podridos del problema, cerramos los ojos y apretamos Enter [‡].

Y así fue como vino Guille (de nuevo 2 horas tarde -.-) y empezó a buscar petróleo en nuestro (único) baño, con la colaboración del bidé, que gentilmente dio un paso al costado:

08 09

El caño apareció, pero la humedad no:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/10-agujero-caño.mini.jpg

Por lo que Guille me dijo:

Seguramente va a haber que levantar la bañera.

Cara de WTF nuevamente:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/07-cara-wtf2.mini.jpg

Pero a esa altura ya habíamos decidido ir por el todo o nada pensando lo menos posible. De todas formas para descartar un problema reparable desde la cocina decidimos romper la esquina superior para ver si ahí ya había humedad (cosa que yo quise hacer desde que me enteré que chorreaba por ese desagüe pero que no había hecho porque a todos les parecía absurdo).

Y así Guille Picapiedra rompió:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/11-guille.mini.jpg

Y la gota se vio:

12 13

Por lo que lo inevitable de pronto se vio... bueno, inevitable. Me dijo al pasar que iba a escuchar ruido porque seguramente ahí caía un desagüe del vecino también a lo que no le di importancia (porque consideré poco probable). Quedamos en que le daba un adelanto en el día (tenía que ir a sacar plata porque no tenía encima) y que al día siguiente ya venía con más gente (que hoy le habían fallado, por eso supuestamente había llegado tarde) a básicamente romper todo.

Al ratito que se fue, efectivamente escuche un ruido de agua en el caño y al mirar no solo veo que gotea, también veo que hay vapor. Dos descubrimientos importantes: el vecino se baña y el caño está roto en una parte común (probable en la T que los une).

Cara de WTF una vez más porque para colmo es un vecino con el que no hay la mejor onda:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/07-cara-wtf2.mini.jpg

Empiezo a freak-outear un poco porque a todo el quilombo se suma hablar, negociar y coordinar con el vecino. Además el razonamiento es, si la única forma de arreglar esto es cambiando todos los caños porque un arreglo no queda bien, el vecino también tiene que cambiar todos los caños? De pronto la solución no escala (cosa que ya nos había advertido mucha gente con frases del estilo "decile que vaya a cambiar todos los caños a su casa!", pero por ir a la segura, y dado que al arquitecto conocido no le pareció descabellado cambiar todo, decidimos ignorar).

Resumen: hablo con el vecino y quedamos en que él averigua por su lado, contemplando la posibilidad de romper en su casa (se portó bien para la poca onda que le venía poniendo en el día a día). Guillote Picapiedra, queriendo hacer el baño de nuevo a toda costa, se ofende luego de que en principio le suspenda el trabajo porque tenía que esperar al vecino. Al irse indignado acusándonos de tomarle el pelo por suspender el trabajo y dada su imposibilidad de poder justificar la necesidad de cambiar todos los caños de mi lado y ninguno del vecino (contando con el apoyo moral y logístico de mi viejo, al que no pudo chamuyar tanto como a mí porque sabe un poco más de estas cosas), se ganó la roja [§]. Consigo otro plomero, llamémoslo Ricardo, que me cayó mucho mejor y propuso romper el techo de la cocina en vez del baño (cosa que también se me había cruzado por la cabeza a mí en el principio pero que no prosperó por descabellada) y me dijo que se podía reparar sin cambiar nada (jamás se le cruzó por la cabeza cambiar todos los caños ni levantar la bañera).

Al final el vecino decepcionó y se hizo inhubicable por el resto de la semana. Cuando finalmente lo ubiqué el sábado a la noche me dijo con cara de ouch!, sin abrirme siquiera la puerta (era un día de lluvia y me estaba mojando afuera), que no había averiguado nada. Con las pelotas llenas como el balde:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/14-balde.mini.jpg

Porque no deja de gotear:

https://llucax.com/blog/posts/2009/11/03-rompé-pepe-rompé/15-gota-trapo.mini.jpg

Decidimos empezar rompiendo de nuestro lado y si se complica volver a hablar. Ahora estamos esperando que Ricardo sea todo lo bueno que parece y nos llame cuando este libre para empezar.

Mientras tanto seguiremos viviendo con un crater en el baño y cambiando el baldecito todos los días así nuestra pared deja de chupar tanta humedad.

Continuará... (?)

[*]~ $2000.
[†]Otros ~ $2000 si se rompe.
[‡]Antes de esto estuve haciendo mucho research sobre plomería, metiéndome en tema, haciendo pruebas abriendo y cerrando cuanta canilla hay en mi casa auditando la gotera, pero no quiero aburrirlos con los detalles ;)
[§]No explícitamente, le pagué por los servicios prestados y lo despaché con el típico "cualquier cosa te llamo". A los dos días me llamó él, diciendo que le habían dejado un mensajito que había llamado un Leandro (yeah! right...), preguntando tímidamente como me había ido con el vecino, con lo que aproveché para comunicarle su estado oficial de expulsado.

Ginóbili San

by Leandro Lucarella on 2009- 11- 03 12:51 (updated on 2009- 11- 03 15:32)
tagged basketball, bat, es, ginobili, video, youtube - with 0 comment(s)

Una vez el señor Miyagi (que en paz descanse) dijo que si uno puede cazar una mosca con palitos chinos, puede conseguir cualquier cosa. No sé si lo que hizo Emanuel Ginóbili es lo mismo, pero está muy cerca.

Resulta que en medio de un partido apareció un murciélago, y mientras un negro de 2 metros y 100 kilos lo esquivaba como una nena, el hijo de puta del Manu se agazapó y lo cazó de un manotazo. Un gato.

Si no me creen acá tienen el video:

Más allá de que no comparto (la crueldad de matarlo [*] al pedo, pobre murcielaguito, y la crueldad del público de festejar), denota una habilidad inhumana en ese muchacho.

Ahora va a tener que pagar con 8 inyecciones antirabia, así que como dice en su facebook, aprendió la lección y no lo va a hacer más, ya demostró que la habilidad la tiene y que puede conseguir cualquier cosa =)

Update

La noticia es un poco vieja, pero la fecha original en la que pasó no es poca cosa. Fue el 31 de octubre (Halloween).

[*]Según dice, al murciélago lo llevaron afuera y salió volando.