Skip to main content

Ralsina.Me — Roberto Alsina's website

Alfajor: theory and practices


An al­fa­jor is, in the­o­ry, a sim­ple thing. It's a dessert sand­wich. The ar­gen­tini­an al­fa­jor is usu­al­ly filled with dulce de leche, which means you just can't screw it up. Even a bad al­fa­jor is go­ing to be good.

Yes, there are some re­gion­al al­fa­jores filled with oth­er stuff. Don't pay any at­ten­tion to those im­pos­tors. They are hip­sters wear­ing fake glass­es they don't need. What you want is dulce de leche.

alfajor heaven

But the fill­ing is on­ly half of a sand­wich, and a third of an al­fa­jor. There is al­so the things that sur­round, hold and con­tain the no­to­ri­ous­ly sticky dul­ce: cook­ies. Some vari­ants have tried to im­prove on the cook­ie by ei­ther go­ing soft (cake!) or hard (Mil­ka Mousse), but the re­al deal is a soft­-ish cook­ie, not too soft (so the al­fa­jor does­n't desin­te­grate) and not too hard (so it does­n't feel like eat­ing a hock­ey puck­).

Feliz cumpleaños

There is an im­pos­si­ble trade­of­f, be­tween dulce de leche and the cook­ie. Too much cook­ie, you are eat­ing cook­ies. Too much dulce de leche, you may as well get a spoon and eat out of the jar (try it some­time). You want to bal­ance, but the al­fa­jor is walk­ing food, it has to be ed­i­ble by a 6-year old schoolkid while climb­ing a tree, it has to be sol­id enough, and not fall apart, and not cov­er him on melt­ed frost­ing. The child has to be able to pass in­spec­tion of his hands af­ter clean­ing with just the wrap­per and his own mouth.


The al­fa­jor santafesino has adopt­ed a min­i­max strat­e­gy, max­i­miz­ing the amount of dulce de leche per amount of cook­ie, by us­ing ex­tra-thin "cook­ies" that are more like crack­er­s, adding mul­ti­ple lay­er­s, and mak­ing the whole al­fa­jor thick­er. I love it, but it is not for ev­ery­one.

Alfajores Cordobes

The al­fa­jor de maice­na goes in a com­plete­ly dif­fer­ent di­rec­tion, hav­ing a tasty cook­ie that can hard­ly hold any dulce de leche be­cause it's too fri­able. Some­how that works won­der­ful­ly as well.

Alfajorcito de Maizena

Then there is the cov­er­ing. Choco­late, frost­ing, co­conut, or noth­ing. Choco­late is bad in sum­mer, melt­ing and mak­ing you eat the al­fa­jor from the wrap­per as if it were a ba­nana.

Ahora si... ya puedo empezar a trabajar...

But if you have no idea what an al­fa­jor is, which one should you have? I could point you to the most sub­lime al­fa­jores, which would be life-chang­ing ex­pe­ri­ences, but I will not. If you tried those, which you can on­ly get in out of the way places, known on­ly to ini­ti­ates, where could you go from there? It's like your first date be­ing with Sofía Ver­gara. That would be just lead­ing you in­to a life of dis­ap­point­men­t.


So get a choco­late Ha­van­na. Get a Cachafaz. Get a Capitán del Es­pa­cio. Get a tube of Jor­gi­tos. And when you have done your ap­pren­tice­ship, when you are an al­fa­jor­man, when you are ready. Then you will know.


PS: Thanks to Juan Ro­driguez Mon­ti for the idea for this post.

$HOME is where .bashrc is

I have a con­fes­sion to make. For the last year or so, my main op­er­at­ing sys­tem has been Win­dows 7. Yes, I know, it may come as a shock to some, spe­cial­ly if you have read this which is my post that had most hits in a day ev­er.

How did that hap­pen? What hap­pened to me? What was I think­ing? It's a bor­ing and un­in­ter­est­ing sto­ry.

I joined Canon­i­cal. My old note­book would­n't cut it. My new one would not take Ubun­tu with­out a fight. I said "hey, I will live in a VM!". The VM was dead­ly slow. I had to de­vel­op win­dows soft­ware (yes). Some stuff would not work right on the VM. And slow­ly, things just start­ed pil­ing up in the bare-met­al OS, which was, yes Win­dows 7 Home Pre­mi­um.

As a whole, Win­dows 7 is not hor­ri­ble. Most things work well. What it is, is a desert for a de­vel­op­er. Sure, you can get a plant to grow there, but you have to put a lot of ef­fort in­to it.

So, to­day I in­stalled Kubun­tu Oneir­ic (ab­so­lute­ly no prob­lem now!), gath­ered all the da­ta from the old note­book, the VM, the win­dows in­stal­la­tion, delet­ed win­dows, and moved in­to Lin­ux again, and made Win­dows the VM.

I missed it.

Remaking the 70s

If you have read Cof­fee and I ... well, let's say the 70s fil­ter is prop­er, and that this was a hap­py evening for me.

Sto­ries don't re­peat them­selves if you don't let them.

Consejos para el charlista tímido

Sor­ry, span­ish on­ly to­day!

De­bo haber dado, en los úl­ti­mos 15 años, unas 80 char­las. O tal vez 50. Qué se yo, no las an­do con­tan­do. Des­de hace un­os cin­co años a es­ta parte, me di­cen que vienen salien­do bue­nas (con al­tiba­jos, por supuesto).

En­ton­ces, in­spi­ra­do por How to be a Py­Con speak­er and do it well acá van una se­rie de con­se­ji­tos para que los que no se an­i­man a dar char­las se ani­men.

Este es el más im­por­tan­te: el públi­co no muerde. En se­ri­o, lo pe­or que vas a es­cuchar es al­go del niv­el de "se ve que es­ta­ba nervioso" o "se perdió un poco en tal parte" o "el tema no me in­teresó mu­cho". En la gran may­oría de los even­tos que he es­ta­do, no hay ningún án­i­mo de agredir al orador. Nadie te va a tirar to­mates. Y al día sigu­iente nadie se va a acor­dar si es­tabas nervioso.

Tenés que saber a quién le es­tás hablan­do. Hacéte un mod­e­lo de co­mo es tu es­pec­ta­dor ide­al. Hacé una char­la que le pue­da in­tere­sar a ese mod­e­lo. Si tratás de hac­er que le guste "a cualquier­a" en­tonces no le va a gus­tar a nadie.

Pen­sá mu­cho el tí­tu­lo. Si tu char­la es para prin­cipi­antes que quier­an apren­der flask, ponele de nom­bre al­go co­mo "In­tro­duc­ción para los que no saben na­da na­da na­da de Flask pero quier­an apren­der un po­quiti­to de co­mo us­ar un mi­croframe­work web que es­tá buenísi­mo". No le pon­gas "Flask: un mi­croframe­work we­b". Ok, no le pon­gas ninguno de los dos, ponele "Flask des­de cero". Yo le pon­dría "Flaska, no me claves, los puñales, por la es­pal­da" pero eso es porque me gus­ta Bot­tle.

No piens­es los slides. Pen­sá lo que querés de­cir. Una vez que lo sabés, partí­lo en, ponele, 10 pedac­i­tos de 3 min­u­tos, y hacé un slide para ca­da un­o. Si no podés hac­er un slide, hacé dos.

Los slides son el menú, no la co­mi­da. Los slides no son la char­la. Si puedo en­ten­der la char­la vien­do los slides, en­tonces o tu char­la es­tá es­ti­rada, o tenés mu­chos slides. Ase­gu­rate que se lean. No im­por­ta tan­to que sean lin­dos: que se lean. Regla: poné los slides en tu note­book, poné el bril­lo en mín­i­mo, y mi­ralo des­de 3 met­ros. Si no lo ves, no se vé.

Cuan­to en­sa­yar, de­pende de ca­da un­o. Yo no en­say­o, pero es porque soy un tara­do. Si en­sayás de­masi­a­do sale medio sin espon­tanei­dad, tal vez. Pero si no en­sayás nada, a ve­ces ni sale. O sea, en­sayá has­ta que te sien­tas có­mod­o, y ahí pará.

Hablá co­mo hablás vos. No trates de hablar co­mo otro, aunque te guste mu­cho mu­cho mu­cho co­mo habla. No trates de ser gra­cioso, si sos gra­cioso va a salir nat­u­ral. No trates de ser in­tere­san­te, si la char­la es in­tere­sante al­can­za.

No ha­gas cosas in­ter­ac­ti­vas a menos que es­tés se­gurísi­mo que no te vas a tra­bar.

No hables de cosas que no te in­tere­sen "porque son im­por­tan­tes" o o "porque al­guien de­bería hablar de es­o".

Hablá fuerte, aunque ten­gas mi­cró­fono. Cuan­do hablás fuerte hablás más claro y pau­sa­do.

Tenés que saber cuan­to tiem­po te que­da. To­do el tiem­po.

Tenés que ten­er dos o tres pun­tos para ter­mi­nar la char­la. Cuan­do se te va aca­ban­do el tiem­po, la ter­minás en el que mejor te quede.

"Decíles lo que les vas a de­cir, decílo, y decíles que les di­jis­te"

Si no sabés, ad­mití­lo. Si gui­tar­reás, decí "estoy gui­tar­re­an­do, per­o...". Si es­tás nervioso decí "me es­toy me­an­do", si te perdiste tirá to­do a la mier­da y uníte al cir­co Ro­das (o pedí un se­gun­do para or­denarte).

Ponéle on­da a la parte de pre­gun­tas y re­spues­tas. No pon­gas cara de "no en­tendiste una go­ma de lo que di­je", porque ca­paz que es cul­pa tuya.

Rompé to­das las re­comen­da­ciones que te dí si te parece que va a fun­cionar mejor. Por ejem­plo, ca­paz que querés ten­er 100 slides y pasar uno ca­da 10 se­gun­dos. O no querés ten­er slides. O querés ten­er slides que hablan de otra cosa. O querés ten­er slides que pasen so­los. O querés ten­er slides in­ter­ac­tivos y ac­tu­ar Min­go y Aníbal con­tra los fan­tas­mas.

Y la más im­por­tante (si, ya sé que di­je que la otra era lo más im­por­tan­te, no jo­das): fol­lowup. In­vitá­los a char­lar cuan­do te vean en el pasil­lo. De­já tu mail, blog, twit­ter o lo que sea. In­vitá una cerveza. La char­la en sí sirve has­ta ahí, es mejor si de la char­la sacás un ami­go.

Garbage Collection Has Side Effects

Just a quick fol­lowup to The prob­lem is is, is it not? This is not mine, I got it from red­dit

This should re­al­ly not sur­prise you:

>>> a = [1,2]
>>> b = [3,4]
>>> a is b
>>> a == b
>>> id(a) == id(b)

Af­ter al­l, a and b are com­plete­ly dif­fer­ent things. How­ev­er:

>>> [1,2] is [3,4]
>>> [1,2] == [3,4]
>>> id([1,2]) == id([3,4])

Turns out that us­ing lit­er­al­s, one of those things is not like the oth­er­s.

First, the ex­pla­na­tion so you un­der­stand why this hap­pen­s. When you don't have any more ref­er­ences to a piece of data, it will get garbage col­lect­ed, the mem­o­ry will be freed, so it can be reused for oth­er things.

In the first case, I am keeping references to both lists in the variables a and b. That means the lists have to exist at all times, since I can always say print a and python has to know what's in it.

In the second case, I am using literals, which means there is no reference to the lists after they are used. When python evaluates id([1,2]) == id([3,4]) it first evaluates the left side of the ==. After that is done, there is no need to keep [1,2] available, so it's deleted. Then, when evaluating the right side, it creates [3,4].

By pure chance, it will use the exact same place for it as it was using for [1,2]. So id will return the same value. This is just to remind you of a couple of things:

  1. a is b is usu­al­ly (but not al­ways) the same as id(a) == id(b)

  2. garbage col­lec­­tion can cause side ef­­fects you may not be ex­pec­t­ing

Contents © 2000-2023 Roberto Alsina