Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

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­textM(ob­ject):        def   __i­ni­t__(se­lf,   new_­dir):            se­lf.new_­dir   =   new_­dir            se­lf.ol­d_­dir   =   No­ne          def   __en­te­r__(se­lf):            se­lf.ol­d_­dir   =   os.ge­tcwd()            os.ch­dir(se­lf.new_­dir)          def   __e­xi­t__(se­lf,   *_):            os.ch­dir(se­lf.ol­d_­dir)  
  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­tcwd()        os.ch­dir(pa­th)        yield        os.ch­dir(ol­d_­dir)  
  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­tcwd()        os.ch­dir(pa­th)        try:            yield        fi­na­lly:            os.ch­dir(ol­d_­dir)  

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.

¡Eso es Matemática! ¡Yo sé Matemática! (No, no sé)

Bue­no, así es mi vi­da, exp­cep­to con ma­te­má­ti­ca. Y sin di­no­sau­rio­s. Es­toy ro­dea­do de pro­ble­ma­s, al­go es­tá ro­to y no sé por­qué, se sien­te li­ge­ra­men­te ra­ro­... y de re­pen­te... ¡e­so es ma­te­má­ti­ca! (por su­pues­to no sé ma­te­má­ti­ca, na­die sa­be ma­te­má­ti­ca. To­dos sa­be­mos al­go de ma­te­má­ti­ca).

En una de esas veo un avi­so y me avi­vo que el enor­me des­cuen­to es un des­cuen­to chi­quiti­to dis­fra­za­d. Una no­ti­cia es un ob­vio dis­pa­ra­te des­pués de 30 se­gun­dos de aná­li­sis. Un mail reen­via­do es un po­qui­to más mo­les­to por­que es un po­qui­to más idio­ta. Por cul­pa de la ma­te­má­ti­ca.

Ma­te­má­ti­ca es la he­rra­mien­ta que ten­go pa­ra en­ten­der las co­sas. Cuan­do el mun­do es con­fu­so y da mie­do, si lo pue­do po­ner en nú­me­ro­s, me cal­ma. ¿Mie­do al fu­tu­ro? Pen­se­mos en la ma­ra­vi­lla del in­te­rés com­pues­to. ¿Ṁie­do a la muer­te? Vea­mos pro­ba­bi­li­da­des. ¿Ne­ce­si­tás una aven­tu­ra? Teo­ría de jue­go­s. ¿Ne­ce­si­tás em­pe­zar una con­ver­sació­n? Pue­do men­cio­nar al pa­sar que pa­sé tiem­po en cla­se en­contran­do el ho­meo­mor­fis­mo que ex­pli­ca la es­ce­na de Flas­h­dan­ce en que la sol­da­do­ra se saca el cor­pi­ño por la man­ga.

La ma­te­má­ti­ca me di­ce que el mun­do no es per­fec­to. Que los nú­me­ros que veo en mi com­pu no son real­men­te rea­les y no pue­do con­fiar en ello­s. Que no pue­do cru­zar los puen­tes de Kö­nis­berg una so­la ve­z, que 1 es el nú­me­ro más fre­cuen­te en el dia­rio de ho­y, que Pla­tón te­nía ra­zón y hay un mun­do de ideas del cual es­te es só­lo un re­fle­jo.

Por otro la­do, me di­ce que pue­do cor­tar una na­ran­ja en unos po­cos pe­da­zos que din es­ti­rar ni de­for­mar pue­den ser reen­sam­bla­dos en dos na­ran­jas igua­les a la ori­gi­na­l. Así que hay que to­mar lo que di­ce con mu­cho cui­da­do.

Mi café y yo.

Ha­bré te­ni­do 12, y lo ha­bía vis­to que­dar­se ahí con un cor­ta­do mien­tras ma­má y yo com­prá­ba­mos al­go, o yo me iba a al­gu­na de esas co­sas de chi­cos (¿­cla­ses de ex­pre­sión ar­tís­ti­ca? ¿Ta­ller de tí­te­res?) y era un mis­te­rio. Eran tres ho­ras de su vi­da que es­ta­ban es­con­di­do­s, blo­quean­do el flu­jo de in­for­ma­ción tan efec­ti­va­men­te co­mo si es­tu­vie­ran del otro la­do de un ho­ri­zon­te de even­to­s.

¿Qué ha­cía? ¿Con quién ha­bla­ba? ¿Leía al­go? Y siem­pre ahí, en la me­sa cuan­do vol­vía, la ta­za de un cor­ta­do, chi­co, va­cía.

Sos­pe­cho que ahí me em­pe­zó a gus­tar la idea del ca­fé. Yo era, por su­pues­to, un de­di­ca­do to­ma­dor de cho­co­la­te (mar­ca El Qui­llá, des­co­no­ci­do fue­ra de la zo­na, pe­ro su­pe­rior en mi me­mo­ria), des­pués de un de­ma­sia­do lar­go pe­río­do de to­mar le­che dul­ce. Ya ha­bía to­ma­do ca­fé an­tes y lo ha­bía odia­do, pe­ro por su­pues­to, sen­ta­do ahí di­je "un cor­ta­do por fa­vo­r". Que co­sa mas re­pug­nan­te. No vol­ví a to­mar ca­fé por vein­te año­s.

Apren­dí a dis­fru­tar del té, o al me­nos del té con le­che, y en la fa­cul­tad a to­mar ma­te co­mo una es­pon­ja uru­gua­ya. Amar­go y fuer­te co­mo de­fen­sor de Co­ló­n, lo más pa­re­ci­do a un sue­ro con ca­feí­na, len­to, cons­tan­te flu­jo por ho­ra­s. Nun­ca es­tu­vis­te des­pier­to has­ta que te aga­rran las 5A­M, vas por el ter­cer ter­mo, y te sen­tís co­mo si fue­ran las 2PM. Es co­mo to­mar la pas­ti­lla equi­vo­ca­da en Ma­trix.

Y me mu­dé a Bue­nos Ai­res y es­ta­ba so­lo. Y to­mar ma­te so­lo es co­mo to­mar vo­dka so­lo, una ta­rea su­cia y de­pri­men­te, así que em­pe­cé a ir a ca­fés y to­mar lá­gri­ma­s. Una lá­gri­ma es el in­ver­so adi­ti­vo del cor­ta­do. Con una ta­za gran­de, una lá­gri­ma y un cor­ta­do, te­nés un lin­do ca­fé con le­che. La lá­gri­ma es una be­bi­da pa­té­ti­ca, so­lo ap­ta pa­ra el de­sas­tre emo­cio­nal que yo era.

Pe­ro tam­bién es una puer­ta. Y pa­ra el 2002 to­ma­ba cor­ta­do­s. Y pa­ra el 2006 te­nía mi pro­pia má­qui­na de es­pres­so y era una es­pe­cia de Kei­th Ri­char­ds de la ca­feí­na, to­man­do 10 ta­zas fuer­tes al día, com­pran­do mez­clas ca­ra­s... y tu­ve que pa­ra­r.

El pri­me­ro de ene­ro del 2008 me des­per­té a las 4 de la ma­ña­na con un do­lor en el pe­cho. Pen­sé que me da­ba un in­far­to. Ca­mi­né al hos­pi­tal y re­sul­tó ser gas­tri­tis. Y pa­só de nue­vo. Y otra ve­z. No muy se­gui­do, pe­ro una vez al año, des­pués ca­da seis me­s­es, des­pués to­dos los me­s­es, des­pués cua­tro días se­gui­do­s. Y tu­ve que de­jar de to­mar ca­fé.

Fue ho­rri­ble. Es­ta­ba dor­mi­do to­do el día y des­pier­to to­da la no­che, no te­nía mi pro­pio con­trol re­mo­to. Es­ta­ba ca­brón y mo­les­to. Hi­ce tram­pa. Pe­ro al fi­nal pa­ré.

Per­do­ná, vie­jo.


Contents © 2000-2024 Roberto Alsina