Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

El dolor de haber visto algo, una vez.

To­men el ejem­plo de Clay Shi­rky en es­te ar­tícu­lo. Es una pa­va­da, ba­sa­do en que de­be ha­ber si­do lo pri­me­ro que se le ocu­rrió,

So­lem­ne­men­te pro­me­to no dar­les na­da as­tu­to, ni perspi­ca­z, ja­má­s, en es­te blo­g. No po­dría so­por­tar la pre­sió­n.

Bloqueado

Es­ta es tal vez la co­sa más ob­via que no to­do el mun­do ve: pa­ra ha­cer co­sas hay que ha­cer­la­s. La ma­ne­ra de es­cri­bir so­ftwa­re li­bre es es­cri­bir so­ftwa­re que es li­bre. Pa­ra ir a Ala­ska hay que ir­se. A Ala­ska. Pa­ra es­cri­bi­r, hay que es­cri­bi­r. Pa­ra ha­cer mú­si­ca, hay que to­car mú­si­ca. Pa­ra ha­cer pan, hay que ha­cer pan.

¿Va a es­tar siem­pre bue­no ese pan? ¿Vas a es­cri­bir siem­pre co­sas in­te­re­san­tes? ¿Vas a lle­gar a Ala­ska? No. Vas a fra­ca­sar.

Pe­ro si no ha­cés ca­ga­das pri­me­ro, no hay ma­ne­ra de ha­cer co­sas me­jo­res des­pué­s. Creo que fue Ama­deo Ca­rri­zo el que di­jo de un ar­que­ro jo­ven "No es ma­lo, fal­ta que le ha­gan do­s, tre­cien­tos go­les más pa­ra que sea bue­no­".

Ten­go un lar­go his­to­rial de fra­ca­so­s. Ten­go una cor­ta lis­ta de éxi­to­s. Se­pan dis­cul­pa­r.

Problemas de abandono: rst2pdf

Así que lo voy a re­to­ma­r. Voy a de­di­car­le unas 4ho­ras por se­ma­na.El plan es:

  1. Jun­­tar pa­r­­ches que es­­tán jun­­tan­­do tie­­rra en el is­­sue tra­­cker

  2. Arre­­glar al­­gu­­nos bu­­gci­­tos

  3. Ha­­cer un re­­lea­­se con 1) y 2)

Y por su­pues­to:

  1. No aban­­do­­­na­r­­lo de nue­­vo

Mientras tanto, acá hay algo interesante de lo que recién me enteré. Dimitri Christodoulou hackeó rst2pdf para que soporte la directiva raw:: html.

Eso, ami­go­s, es tan lo­co que lo ten­go que ro­bar (con el cré­di­to co­rrec­to, etc :-)

Y Di­mi­tri, o cual­quier otro que quie­ra ha­cer al­go co­pa­do con rs­t2­pdf, ¡a­vi­sen! ¡Les doy co­m­mi­t!

Python context managers: son fáciles!

Yo es­ta­ba el otro día tra­tan­do de ha­cer co­sas de she­ll scrip­ting con py­thon (co­mo par­te de un se­tu­p.­py mons­truo) y me mo­les­ta­ba que en she­ll es muy fá­cil ha­cer es­to:

cd foo
bar -baz
cd -

O es­to:

pushd foo
bar -baz
popd

O es­to:

(cd foo && bar -baz)

Y en py­thon te­nia que ha­cer es­to, que es lar­go y feo:

cwd = os.getcwd()
try:
    os.chdir('foo')
    os.system('bar -baz')
finally:
    os.chdir(cwd)

Cuan­do en rea­li­dad quie­ro es­to:

with os.chdir('foo'):
    os.system('bar -baz')

Por su­pues­to, eso no es­tá. En­ton­ce­s, pre­gun­té, co­mo se ha­ce eso? Y tu­ve va­rias res­pues­ta­s:

  1. Usá Fa­­bri­­c:

    wi­th cd("­foo"):
        run("­ba­r")
  2. No es di­­fí­­ci­­l:

    cla­ss Dir­Con­text­M(ob­jec­t):
        def __i­ni­t__(sel­f, new_­di­r):
            se­l­f.­new_­dir = new_­dir
            se­l­f.ol­d_­dir = No­ne
    
        def __en­te­r__(sel­f):
            se­l­f.ol­d_­dir = os.­ge­tcw­d()
            os.­ch­di­r(sel­f.­new_­di­r)
    
        def __e­xi­t__(sel­f, *_):
            os.­ch­di­r(sel­f.ol­d_­di­r)
  3. Es más fá­­ci­­l:

    from con­tex­tlib im­port con­text­ma­na­ger
    
    @con­text­ma­na­ger
    def cd(­pa­th):
        ol­d_­dir = os.­ge­tcw­d()
        os.­ch­di­r(­pa­th)
        yield
        os.­ch­di­r(ol­d_­di­r)
  4. Es­­tá bue­­­no, agre­­gué­­mo­s­­lo a pa­­th.­­py pa­­th.­­py

  5. Me­­jor atra­­par ex­­ce­p­­cio­­­nes:

    @con­text­ma­na­ger
    def cd(­pa­th):
        ol­d_­dir = os.­ge­tcw­d()
        os.­ch­di­r(­pa­th)
        tr­y:
            yield
        fi­na­ll­y:
            os.­ch­di­r(ol­d_­di­r)

Apren­dí co­mo ha­cer con­text ma­na­ger­s, so­bre con­tex­tli­b, so­bre fa­bric y so­bre pa­th.­p­y. Na­da mal pa­ra 15 mi­nu­tos :-)

Book review: The Windup Girl by Paolo Bacigalupi


I started this book wi­th hi­gh ho­pes. After all, this was a book by a new-ish au­thor that had won Hu­go Award for Best No­vel (2010), Ne­bu­la Award for Best No­vel (2009), Lo­cus Award for Best First No­vel (2010), John W. Cam­pbe­ll Me­mo­rial Award (2010), Comp­ton Crook Award (2010) Comp­ton Crook Award (2010), Goodrea­ds Choi­ce Award No­mi­nee for Scien­ce Fic­tion (2009). Im­pres­si­ve, uh?

We­ll, I do­n't know what they saw in it. Sha­llow cha­rac­ter­s, per­va­si­ve fa­ta­lism dis­gui­s­ed as dep­th, mpro­ba­ble slang ust be­cau­se it soun­ds cool (win­dup gir­l? Rea­ll­y? Tha­t's how they wi­ll ca­ll ge­ne­ti­ca­lly en­gi­nee­red hu­mans in the fu­tu­re? Win­dup­s? Yeah, ri­gh­t).

Oh, and it's fu­ll of orien­ta­lis­m. And of things like im­planting ge­ne dogs in­to win­dups to make them lo­yal and sub­ser­vien­t. And ghos­ts. Oh, cra­p, al­most no­thing in this no­vel wo­rked for me. Most pa­ges had me sla­pping myself on the fo­re­hea­d.

I am­not against a so­lid do­se of weir­d. I like weir­d. I read Mié­vi­lle, for cra­p's sake. But this is not weir­d, it's con­tri­ve­d.

And do­n't get me started on the en­d. The end is su­ch an ob­vious ana­lo­gy to Eden it al­most ma­de me puke. It's like the end of Ba­ttles­tar Ga­lac­ti­ca, but set on the fu­tu­re. And wi­th lad­y­bo­ys.

I had a be­tter ti­me rea­ding H. Ri­der Ha­ggar­d's "A­llan Qua­ter­mai­n", whi­ch I saw men­tio­ned in the awe­so­me se­ries "The vic­to­rian Hu­go­s". Old and date­d? Su­re. But I would vo­te for it ins­tead of "The Win­dup Gir­l" eve­ry da­y, and twi­ce if they let me.


Contents © 2000-2022 Roberto Alsina