Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Coffee As a Service Architecture

Coffee As A Service Architecture

Intro

To­day I was in a meet­ing with re­cruiters (yes, re­al­ly) be­cause they want to be bet­ter at tech­ni­cal re­cruit­ing and they had the idea that talk­ing to me would help them (o­h, sweet sum­mer chil­dren).

A nice time was had by all (I hope) and at one point I was asked about what ar­chi­tec­ture was, and more specif­i­cal­ly, about the dif­fer­ence be­tween mi­croser­vices and a mono­lith.

Which I tried to ex­plain us­ing what I had at hand: cof­fee cup­s, sug­ar dis­penser­s, a spoon and so on. It did­n't quite work out but I kept think­ing about it on my way home and ... let's try again.

What is Architecture?

Ar­chi­tec­ture, when it comes to soft­ware, can be de­fined in many ways, but one way I like is to say that ar­chi­tec­ture in­volves:

  • What the com­po­nents of your sys­tem are
  • How they are done
  • How they talk to each oth­er

There is a lot more, but you start with that, and that is more or less enough to ex­plain mono­liths and mi­croser­vices.

The Coffee Service

One thing of mas­sive im­por­tance about sys­tems is that they are meant to do some­thing. They ex­ist for a pur­pose. So, let's sup­pose the pur­pose of our sys­tem is to make cof­fee and put it in a cup.

We can call the cup the "cof­fee clien­t" and what­ev­er we use to make the cof­fee is the "cof­fee sys­tem" or "cof­fee ser­vice"

So, as­sum­ing you have a can full of cofee beans and a cup, how do you make cof­fee?

The Coffee Monolith

This is my very own cof­fee ma­chine. Not on­ly is it mono­lith-shaped, it's func­tion­al­ly mono­lith­ic (it's al­so large enough to de­serve its own table, as you can see).

It has two buck­ets on top. On one you put wa­ter, in the oth­er you put cof­fee bean­s. Then, you put a cup un­der the spig­ot and press a but­ton or two.

It will:

  • Grind the beans
  • Put the ground cof­fee in the right place and ap­ply the "right" pres­sure
  • Heat the wa­ter to the "right" tem­per­a­ture
  • Run wa­ter through the cof­fee grounds
  • Pour the cof­fee in­to the cup
  • Dis­card the grounds in­to a hid­den de­posit

Sounds awe­some, right? It is!

It takes all of 30 sec­onds to go from cof­fee beans to a nice cup of cof­fee! It tastes good!

And it's im­por­tant to keep that in mind. IT IS GREAT.

Mono­lith­s, when they done cor­rect­ly and you are not ex­pect­ing any­thing out of their op­er­at­ing pa­ram­e­ter­s, are awe­some.

The prob­lem with mono­liths is not that they can't be done right, it's that it's hard to do them right, and that even when you do get it right, in our in­dus­try the mean­ing of "right" is not fixed.

So, be­cause the whole point is to ride this anal­o­gy in­to the ground, let's con­sid­er all the things about this awe­some ma­chine.

Flexibility

It grounds the cof­fee. What hap­pens if you want it ground fin­er? Or coarser?

It turns out that if you have the right tool you can ad­just the mil­l's out­put (it's not in the man­u­al).

In a mi­croser­vice-based cof­fe­mak­er I would re­place the grinder.

How about wa­ter tem­per­a­ture?

It has three set­tings. Want any­thing else? No luck.

In a mi­croser­vice-based cof­fee ser­vice I would just use an ad­justable ket­tle.

How about the amount of cof­fee per cup?

It has three set­tings. Want any­thing else? No luck.

In mi­croser­vice-­cofee I would just trans­mit as much cof­fee as I want­ed.

How about chang­ing the bean va­ri­ety be­tween cup­s?

The bean hop­per takes half a pound of bean­s. It's not easy to get them out. So, no.

In mi­croser­vice-­cof­fee heav­en I could have mul­ti­ple hop­pers pro­vid­ing beans of all va­ri­eties and just con­nect to the one I want to­day!

Cup size?

It does two sizes (but you re­pro­gram those sizes)

In mi­croser­vice-­cofee I would just pour as much wa­ter as I liked.

A mono­lith has the flex­i­bil­i­ty its de­sign­ers thought of adding, no more, no less. And chang­ing it is ... not triv­ial.

I could use a vac­u­um clean­er to re­move the beans from the hop­per and change va­ri­eties. I would con­sid­er that a hack. I have al­so done it. I re­gret noth­ing.

Unused Features

It has a thing that lets you set­up a cred­it sys­tem for cof­fee cups I will nev­er use. A milk foamer I use once a week. Why? Be­cause "we may need this and it's hard to add it lat­er, so let's just do it from the be­gin­ning" ground cof­fee.

Some­times yes, it's use­ful (ca­puc­ci­no!) but some­times it's just some­thing I paid for and will nev­er use (cof­fee cred­it­s!)

In a mi­croser­vice ar­chi­tec­ture I would just get a new milk foamer, use both for a while and then keep us­ing the one I like.

Hard to Improve

How do I add a bet­ter foam­ing thingie?

By buy­ing one and putting it in the ta­ble.

How do I add a more flex­i­ble cof­fee grinder?

I can't be­cause this ma­chine is in­com­pat­i­ble with pre-­ground cof­fee. There is a new­er, more ex­pen­sive mod­el that can take that but this one? You need to throw it away.

Mod­i­fy­ing a mono­lith­ic sys­tem is dif­fi­cult be­cause the pieces are tight­ly cou­pled. I can't use a sep­a­rate grinder be­cause the sys­tem re­quires the cof­fee grounds to ar­rive via a spe­cif­ic in­ter­nal duct at a spe­cif­ic point in the cof­fee-­mak­ing cy­cle, there is just no way to in­sert my grind-o-­mat­ic-3000 in there with­out a saw and duct tape.

In a mod­u­lar sys­tem I would un­plug the grinder and in­sert a com­pat­i­ble-but-d­if­fer­ent grinder, in a mi­croser­vice ar­chi­tec­ture I would just use what­ev­er grinder and put the cof­fee grounds in a mes­sage and have the next piece in the sys­tem pick it from there.

Expensive

This cof­fee ma­chine is ex­pen­sive. It's much more ex­pen­sive than buy­ing a grinder, a cof­fee ma­chine a ket­tle and a milk foamer.

What it pro­vides in ex­change for the ex­tra mon­ey (and re­duced flex­i­bil­i­ty and so on) is per­for­mance. I don't boil wa­ter, I don't grind cof­fee, I don't pour, I just press a damned but­ton and en­joy cof­fee.

Outsourcing

You can buy pre-­ground cof­fee and ef­fec­tive­ly out­source that part of the process to some ex­ter­nal provider.

I can't! I am doomed to ground my own cof­fee for­ev­er.

Maintenance

I have a lu­bri­ca­tion sched­ule, or else my ex­pen­sive ma­chine will break.

I have to dis­in­fect the cof­fee ground bin or else it will have mag­got­s.

I have to emp­ty the wa­ter waste tray be­fore it over­flows.

I have to have a thing to dump the bits of dirty wa­ter it us­es to clean it­self when it turns on/of­f.

I have to buy spe­cial acid to pe­ri­od­i­cal­ly re­move scale from its in­nards or it will stop work­ing. That costs ac­tu­al mon­ey and takes half an hour.

I need to cleanup cof­fee crud from all the in­ter­nal springs, levers and thin­gies ev­ery cou­ple of week­s.

Now, you, read­ers with nor­mal cof­fee mak­ing things? How is your cof­fee ma­chine main­te­nance rou­tine? What, you don't have one? Thought so.

Conclusion

So, that's why nowa­days most peo­ple pre­fer to pay the per­for­mance penal­ty of a mi­croser­vice ar­chi­tec­ture in­stead of us­ing an awe­some mono­lith.

This is not ex­haus­tive, there is still sep­a­ra­tion of con­cern­s, en­cap­su­la­tion, rigid­i­ty of con­tracts and a lot more, but it should be con­vinc­ing enough with­out be­ing dog­mat­ic :-)

Celular barato 3: una vez más, con sentimiento

Celular barato 3: una vez más, con sentimiento

Nun­ca ten­go celu­lares caros. No tenía un celu­lar caro en 2010 y no tenía un celu­lar caro en 2018 y adi­vi­nen qué, no ten­go un celu­lar caro en 2019.

Mi em­pleador me mandó a tra­ba­jar una se­m­ana a San Ma­teo (ex­traña­mente no es la primera vez que voy a San Ma­teo) y aproveché para hac­er una com­pra de cier­to ries­go si tratara de hac­er­la des­de Ar­genti­na: un celu.

Si lo com­prara acá y no an­da es más caro de­volver­lo que otra cosa, así que siem­pre me dió cosa. Es­tando al­lá, con de­liv­ery en 24 ho­ras? Es otro tema.

Me com­pré un UMIDI­GI One ... ¿Un qué? Un UMIDI­GI One.

UMIDI­GI es una mar­ca chi­na de cuar­ta línea que hace celu­lares con specs "ga­ma me­dia al­ta" con pre­cios de gama ba­ja apun­tan­do a mer­ca­dos co­mo Bangladesh. En­ton­ces, era una apues­ta in­tere­sante. Si el celu sale bueno, es mu­cho celu para lo que cues­ta.

¿Cuan­to cues­ta? 120 dólares.

Eso son un­os $4800 que es menos de lo que acá sale el smart­phone más bara­to de mi provee­do­ra de tele­fonía (Per­son­al)

UMIDI­GI tiene mu­chos mod­e­los, este es de los más barati­tos. En par­tic­u­lar tiene dos vari­antes, el One y el One PRO. La difer­en­cia es:

  • El PRO tiene menos batería
  • El PRO tiene car­ga un poco más ráp­i­da
  • El PRO tiene car­ga wire­less
  • El PRO tiene NFC

Ningu­na de esas cosas me hace al­gu­na difer­en­ci­a, en­tonces veamos lo que sí viene en el One:

  • Pan­talla con bor­des fini­tos y notch (90% screen/­body ra­tio)
  • Cá­mara du­al 12+5 (tal vez de men­ti­ra) pero con un lin­do sen­sor Sony
  • CPU He­lio P23 (u­na Me­di­atek gama me­di­a)
  • 4GB de RAM
  • 32GB de stor­age
  • An­droid 8.1 mas-o-­menos-­s­tock
  • Frente y "es­pal­da" de vidrio (muu­u­uy lin­do)
  • Una fun­di­ta y un pro­tec­tor
  • Lec­tor de huel­las al costa­do
  • So­por­ta to­das las ban­das habidas y por haber de cualquier lu­gar del sis­tema so­lar.

La per­for­mance para lo que lo uso es bue­na, la pan­talla es muy lin­da, la batería aguan­ta tran­qui un día largo, tiene jack de au­dio... la ver­dad es­tá muy bi­en.

Saca lin­das fo­to­s!

Lo mal­o:

  • Tiene una ten­den­cia a col­garse de vez en cuan­do. Al pare­cer es una sen­si­bil­i­dad a la es­táti­ca!
  • No hay mucha ROM al­ter­na­ti­va (me gus­taría poder subir­lo a An­droid 9)
  • Siem­pre sospe­cho que se me va a caer o ra­yar porque es de vidrio (pero has­ta aho­ra no)
  • Si lo ves de lejos parece un IPhone
  • El pro­tec­tor era de plás­ti­co, no de vidri­o, así que lo saqué
  • La cá­mara du­al es men­ti­ra, ningu­na app la so­por­ta sal­vo la stock y sospe­cho que hace el bokeh por soft

Sin­ce­r­a­mente es­toy con­tento, el Mo­to E aho­ra es el celu de Tato, y volvería a com­prar otro UMIDIGI, hay al­gunos mod­e­los que son su­per ten­ta­dores co­mo el S3 PRO o el F1.

Clarke no la vio venir

Clarke No la Vio Venir

Ay­er es­cuch­a­ba "Pasaron Cosas" en la ra­dio y pusieron al aire un ter­ra­planista. Lo hicieron con la salud­able in­ten­ción de reírse de él, pero ...

Nada, una cosa ll­e­va a la otra, men­ciono que al pare­cer al­gunos ter­ra­planistas creen que el GPS fun­ciona en base a ca­bles sub­mari­nos y en­tonces un ami­go in­teligente que ten­go di­jo es­to:

Es una ref­er­en­cia (supon­go) a la ter­cera ley de Clarke:

To­da tec­nología lo su­fi­cien­te­mente avan­za­da es in­dis­tin­guible de la ma­gia. -- Arthur C. Clarke

Pero sospe­cho que la relación en­tre una cosa y la otra no es la que Clarke imag­inó, o la que es­per­a­ba.

Clarke pens­a­ba (cre­o!) que si re­penti­na­mente nos viéramos ex­puestos a la ex­pe­ri­en­cia de una tec­nología mu­cho más al­lá de la que ex­per­i­men­ta­mos día a día, muy su­pe­ri­or a la tec­nología que re­cono­ce­mos co­mo tec­nología en­tonces pare­cería mág­i­ca.

En­ton­ces, si aparez­co en el medio­e­vo y les mue­stro un he­licóptero, pare­cería ma­gia. Siem­pre tuve mis du­das al re­spec­to, de to­das for­mas.

Lo que es­tá pasan­do hoy en día es otra cosa. No es tec­nología aliení­ge­na la que parece ma­gia, es tec­nología alien­a­da.

Alien­a­da en el sen­ti­do de ser "a­je­na". El GPS no fun­ciona en base a ca­bles sub­mari­nos. Los sex­tantes fun­cio­nan. Hay satélites dan­do vuelta so­bre nues­tras cabeza­s. Pero to­das esas cosas son aje­nas para la may­oría de la gente.

Casi to­das las pre­gun­tas que uno puede hac­erse so­bre la nat­u­raleza del mun­do tienen re­spues­tas frac­tales que se vuel­ven más com­pli­cadas a me­di­da que uno las ve con más aten­ción.

¿Co­mo sabés que esa fo­to satelital de tu casa en Google Maps es de un satélite (prob­a­ble­mente no lo sea)? ¿Có­mo sabés que tu celu­lar usa GPS para saber donde es­tás (no usa só­lo es­o)?

El tier­ra­planis­mo no es un movimien­to an­ti­cien­tí­fi­co. De he­cho es casi lo con­trari­o. Es un movimien­to equiv­o­ca­do, sí, to­do lo que di­cen es­tá mal, sí.

Pero es, sospe­cho, en el fon­do, un in­ten­to de­ses­per­a­do de apropi­arse de la re­al­i­dad. De pen­sar que hay una re­al­i­dad sen­cil­la, al­can­z­able para el hu­mano de a pie. Que el mun­do ha vivi­do equiv­o­ca­do y yo, Jorge de Be­raza­tegui, lo veo.

La tier­ra parece plana. La tier­ra, lo­cal­mente es plana. O in­clu­so cón­ca­va. Ob­vio, a otra es­cala, may­or, no lo es. Yo lo sé. Pero imag­ináte lo que se sen­tiría ser el que "s­abe" que to­dos los demás es­tán equiv­o­ca­dos. To­dos ten­emos al­gu­na opinión su­per mi­nori­taria en al­go.

  • El hela­do de dulce de leche? Over­rat­ed.
  • El asa­do es una co­mi­da sen­cil­la de hac­er y poco sat­is­fac­to­ri­a.
  • El fút­bol es un de­porte bas­tante abur­ri­do.
  • Na­talia Or­eiro es una chi­ca prome­dio.

Se­guro que al menos uno de esas fras­es te va a pare­cer casi tan ridícu­la co­mo de­cir que la tier­ra es plana. La difer­en­cia ob­via es que esas fras­es son so­bre gus­tos, u opin­iones sub­je­ti­vas.

Pero hay real­mente una línea du­ra que se­p­a­re lo sub­je­ti­vo de lo ob­je­tivo?

Pense­mos en el "giro coper­ni­cano". Los de­fen­sores del mod­e­lo Ptole­maico er­an los mejores ob­ser­vadores as­tonómi­cos de la época. Sus in­creíble­mente la­bo­riosas medi­ciones del movimien­to aparente de los plan­e­tas proveen una de las mejores man­eras de mostrar que el sis­tema he­liocén­tri­co es "ver­dad".

¿Pero que hacían el­los? Toma­ban su mod­e­lo geocén­tri­co de cír­cu­los per­fec­tos y lo mejora­ban. Agre­ga­ban epi­ci­clos, más cír­cu­los so­bre cír­cu­los, y re­sul­ta que eso hacía que el mod­e­lo fun­cionara. De he­cho, es la base del "análi­sis de Fouri­er" una téc­ni­ca que dice que sí, cualquier cosa se puede de­scribir co­mo una acu­mu­lación de cír­cu­los. ¿No me creés? Mirá es­to:

Ahi ves co­mo se aprox­i­ma una on­da "cuadrada" us­an­do 4 cír­cu­los. No hay un movimien­to posi­ble de los plan­e­tas que no se pudiera ex­plicar agre­gan­do más epi­ci­clos, más cír­cu­los.

Lo que es­ta­ban ha­cien­do los Ptole­maicos es de­cir "¡a­já! Mis ob­ser­va­ciones de la re­al­i­dad in­di­can que mi mod­e­lo ac­tu­al no es cor­rec­to. Voy a hac­er lo que hay que hac­er, y mod­i­ficar mi mod­e­lo."

Tenían razón, y no er­an ne­ga­cionistas, es­ta­ban ha­cien­do lo mejor que podían, er­an bril­lantes y acept­a­ban la "re­al­i­dad de lo re­al", y ac­tu­a­ban en con­se­cuen­cia de man­era in­teligente.

Sí, es­ta­ban equiv­o­cadísi­mos, pero hay una ten­den­ci­a, al ver­los des­de el siglo 21, de de­cir "mirá que bolu­dos, co­mo no se dieron cuen­ta que un mod­e­lo de ór­bitas elíp­ti­cas era una ex­pli­cación mu­cho más el­e­gante de los movimien­tos ob­ser­va­dos".

Bueno, no se les ocur­rió. Esa es to­da la difer­en­ci­a.

Y real­mente, si uno se basara en hac­er co­in­cidir ob­ser­va­ciones con re­sul­ta­dos del mod­e­lo, no hay na­da que imp­i­da que el mod­e­lo ptole­maico lo­gre el niv­el de pre­cisión que se te ocur­ra. Y tam­poco es que el mod­e­lo de ór­bitas elíp­ti­cas Ke­p­le­ri­ano es per­fec­to ... la pref­er­en­cia por el mod­e­lo coper­ni­cano, en ese mo­men­to, era bas­tante sub­je­ti­va que querés que te di­ga.

Y ya que es­ta­mos, Ke­pler tam­bién metió una pi­la de mist­i­cis­mo pitagore­ano en sus teorías, así que no hag­amos co­mo que un la­do era "ay los clási­cos" y el otro era "uy, la cien­ci­a" porque eso es proyec­tar des­de hoy al pasa­do. El pasa­do siem­pre fue más com­pli­ca­do de lo que parece aho­ra.

Un ter­ra­planista te re­sponde a "¿si la tier­ra no es re­donda, co­mo es de noche en Japón cuan­do acá es de día?" con "el sol es­tá cer­ca y da vueltas alrede­dor del po­lo norte", y cuan­do le decís "¿pero en­tonces co­mo se pro­duce un eclipse lu­nar?" te pueden de­cir que hay un "ob­je­to som­bra" que da vueltas alrede­dor del sol a un án­gu­lo de 5 gra­dos y bla bla bla ocul­ta la lu­na. Es­tán toman­do su mod­e­lo y lo mod­i­f­i­can para que co­in­ci­da con lo ob­serv­able. Es una ver­sión degradada, clase B, de los as­trónomos ptole­maicos.

¿En­ton­ces, que hace­mos con los ter­ra­planistas? Ni idea. A pe­sar de lo ten­ta­dor que es reírse de el­los, no los vas a con­vencer de na­da así. Si ese es tu ob­je­tivo, de­berías saber que no es­tás ac­tuan­do de man­era de lo­grar­lo.

Se puede in­ten­tar ra­zonar con el­los, pero no sé has­ta que pun­to sirve. Ar­gu­men­tos tales co­mo "Si la tier­ra es plana la atrac­ción grav­ita­cional haría que en la patag­o­nia pareciera que el sur es­tá cues­ta ar­rib­a" o "Si la tier­ra es plana en­tonces volar de Buenos Aires a Ciu­dad del Cabo sería im­posi­ble porque quedaría lejísi­mos" son in­dis­cutibles y a pe­sar de to­do van a ser dis­cu­ti­dos.

Tal vez la gravedad no fun­ciona co­mo New­ton dice, tal vez la per­spec­ti­va no fun­ciona co­mo vos creés, tal vez hay tremen­dos vien­tos de co­la que ha­cen que los aviones vayan más rápi­do mien­tras más al sur ... en am­bas di­rec­ciones. No lo sé.

El mod­e­lo del mun­do que crea un ter­ra­planista só­lo nece­si­ta ser lo su­fi­cien­te­mente bueno para im­pedir que la dis­o­nan­cia cog­ni­ti­va le imp­i­da creer en el ter­ra­planis­mo, igual que un creyente com­pli­ca su idea de dios lo nece­sario y su­fi­ciente co­mo para con­vencerse de seguir creyen­do.

Yo pre­fiero asumir que no puedo con­vencer­los, lo que me lib­era para de­cir que su teoría es una pelo­tudez, pero eso soy yo, no otro.

57 channels and nthing on

57 channels and nothing on

Em­pecé a us­ar In­ter­net al­lá por 1995, cuan­do tenía 23 o 24 años. Este año cump­lo 48, lo que quiere de­cir que lle­vo casi ex­ac­ta­mente la mi­tad de mi vi­da on­line.

Me acuer­do de las primeras pági­nas web que ví, pero mu­cho más me acuer­do de los primeros canales de chat que vis­ité en IRC y de los primeros gru­pos de dis­cusión en los que me metí. No voy a co­men­tar cuales fueron porque dan vergüenci­ta, pero sí quiero hablar de lo que yo creí que sería el fu­tur­o.

Ya en 1995 la can­ti­dad de in­for­ma­ción era abru­mado­ra. Ya en 1995 era posi­ble en­con­trar casi cualquier cosa on­line, y en par­tic­u­lar gente dis­cutien­do de esa cosa.

¿Pro­gra­mación? Ob­vio que había gente dis­cutien­do.

¿Un lengua­je es­pecí­fi­co? Por su­pus.

¿U­na bib­liote­ca o pro­gra­ma es­crito en un lengua­je es­pecí­fi­co? Más vale.

¿U­na teoría? Me ex­traña araña.

Ya en 1995, hace la mi­tad de la vi­da de este gor­do ac­tual­mente pelado, era posi­ble ex­pon­erse a to­das las ideas. Y este en ese mo­men­to no tan gor­do ni tan pela­do pen­só ... "se­gu­ra­mente es­to va a hac­er que la gente se de cuen­ta cuan­do es­té equiv­o­ca­da y dis­min­uya la can­ti­dad de gente di­cien­do bolude­ces".

Des­de ya que es tal vez la cosa más equiv­o­ca­da que he di­cho en mi vi­da.

Re­sul­ta que el prob­le­ma no es a cuan­tas cosas dis­tin­tas podés ex­pon­erte sino lo fá­cil que es no ex­pon­erte a ningu­na.

Imag­inemos dos mun­dos al­ter­na­tivos, ca­da uno de el­los habita­do por 100 per­sonas con 25 ideas dis­tin­tas.

En el mun­do A, hay 10 plazas en las cuales la gente se jun­ta to­dos los días porque es­tán los ne­go­cios donde com­pra lo nece­sario para vivir y los lu­gares de tra­ba­jo.

En­tonces las per­sonas van a ir, en prome­dio 10 a ca­da plaza to­dos los días, y (supong­amos) vis­i­tan menos fre­cuente­mente otras 4 o 5 plaza­s. De esa man­era se van a ex­pon­er a las ideas de unas 50 per­sonas, que (a­sum­ien­do mu­cho) serán unas 12 ideas.

En­tonces esas per­sonas van a "cono­cer" la mi­tad de las cosas. Sus ideas per­son­ales nece­si­tan co­in­cidir o al menos no con­trade­cir ob­vi­a­mente la mi­tad del conocimien­to del mun­do.

Eso im­pli­caría que ese mun­do va a ten­er per­sonas con ideas mas o menos con­sis­tentes. Habrá ex­cén­tri­cos, pero va a haber un cier­to niv­el base de ideas in­con­tro­vert­ibles.

Aho­ra imag­inemos un mun­do B, en que hay 100 per­sonas, de nuevo, con 25 ideas dis­tin­tas, pero en que hay 100 plaza­s. Ca­da una de esas plazas es propiedad de una per­son­a, y tiene to­do lo que nece­si­ta.

Hay, además, enormes carte­les alrede­dor de ca­da plaza, ex­pli­can­do lo que pien­sa el que al­lí vive. Y las 100 per­sonas pasean a di­ario por caminos dis­jun­tos que los ll­e­van a ver las plazas de los demás des­de fuer­a.

Es un mun­do donde se vive ais­lado, pero donde el con­tac­to con el otro es­tá disponible to­do el tiem­po. To­do lo que tenés que hac­er es, cuan­do es­tás cer­ca de una plaza, es de­cidir en­trar.

Ob­vi­a­mente, ya que podés ele­gir en­tre 100 plaza­s, vas a ir a las que más te gusten. Para qué vas a ir a lu­gares feos ¿no?

En­tonces vas a ir a plazas que los carte­les de­scrib­an en tér­mi­nos que te gusten. Vas a ir a plazas de "gente co­mo un­o". Si te gus­ta el hela­do de dulce de leche, vas a ir a plazas donde hay gente que le gus­ta el hela­do de dulce de leche, no el de sam­bayón.

Cuan­do dos per­sonas que les gus­ta la mis­ma cosa se jun­tan, am­bos re­fuerzan el gus­to del otro.

  • Que ri­co es el dulce de leche!
  • Cuan­ta razón tiene, don Ca­cho.
  • Eso di­go yo.
  • El hela­do de dulce de leche es muy su­pe­ri­or a to­dos los demás.
  • Es­os sam­bay­on­istas son in­com­pren­si­bles
  • No saben lo que se pier­den!

Trans­for­mar el apre­cio com­par­tido de al­go en de­s­pre­cio a lo dis­tin­to es un pro­ce­so sim­ple. Es fá­cil. Es pla­cen­tero.

La in­ter­net es ese mun­do B el­e­va­do a una po­ten­cia ridícu­la. Si te parece que el hela­do de dulce de leche es ri­co, te unís al grupo de Face­book "Aguante el hela­do de dulce de leche" y al mes es­tás en el grupo de What­sapp "Muer­an los sal­vages sam­bay­oni­tar­ios"

No es el "e­fec­to bur­bu­ja" o "cá­mara de res­o­nan­cia", o al menos no es só­lo es­o. Vos sabés que hay gente que le gus­ta el sam­bayón. ¿Na­da más que son ... raros, no? No son gente "co­mo un­o". Gente de bi­en. Gente de dulce de leche.

Y así es­ta­mos.

Coding in anger: not-gitbook

I have, in­ter­mi­tent­ly, for the past few month­s, been writ­ing a book. You can see it here and I am fair­ly hap­py with how it's go­ing.

I am not so hap­py with the tool­ing.

When I start­ed writ­ing it, I did­n't want to write a tool, I just want­ed to write a book. So, I looked for "things to make a book out of mark­down" and found a few, in­clud­ing md­Book and git­book and tried them both, then de­cid­ed to go with git­book be­cause it seemed more de­vel­ope­d.

But, you know how this work­s. Things start­ed drift­ing.

One ini­tial ob­sta­cle was that I want­ed the code in the book to come from the ac­tu­al work­ing code, not be a copy. I al­so want­ed to "ex­e­cute" the chap­ters and make the out­put of the chap­ter's code part of the chap­ter itelf.

I found a nice tool for this called pyLit­er­ate which... I end­ed up ex­tend­ing to al­low for things such as "in­clude this piece of code from that file but do not ex­e­cute it" and what­ev­er, and in­te­grat­ing it in­to git­book in­volved ... a lot of Make­files.

And then wen the out­put ap­peared in git­Book ... I re­al­ly did­n't like how syn­tax high­light­ing worked. I want­ed pret­ti­er and specif­i­cal­ly to be able to high­light some lines, and to have line num­bers match­ing the file con­tents and not start­ing from 1 ... and I end­ed up writ­ing a Git­book Ex­ten­sion

And I added sup­port for graphviz in pyLit­er­ate be­cause I want­ed SVG di­a­grams as part of the code and not as sep­a­rate things.

And I wrote and I wrote.

And then life hap­pened and I stopped writ­ing. And when­ev­er I want­ed to start writ­ing again in a new set­up some­thing broke.

  • Maybe the git­book ver­sion in­stalled or its de­pen­den­cies had a se­cu­ri­ty is­sue and need­ed up­dat­ing.
  • Maybe the up­dat­ed git­book broke my plug­in
  • Maybe things just were "of­f" and I had to track it down*

And a cou­ple of days ago, I just got an­gry. And what the hell this is just a lame stat­ic file gen­er­a­tor and I know those suck­er­s.

So, I de­cid­ed to see how much work would it be to reim­ple­men­t, some­what dumb­ly, git­book.

Well, re­al­ly, it's about a day's work (for a low qual­i­ty ver­sion)

  • Sup­ports all I want
  • Sup­ports plug­ins
  • Sup­ports ar­bi­trary mark­down pre­pro­cess­ing
  • Sup­ports ar­bi­trary mark­down ren­der­er hack­ing
  • Us­es mis­tune for mark­down, which kicks ass
  • Us­es jin­ja2 for tem­plates and they are 10x sim­pler than in git­book AND THE OUT­PUT LOOK THE SAME. I mean, there is one tem­plate

I logged the work, which was at a very re­laxed pace over a cou­ple of days here and pub­lished not-git­book in git­lab

I could mi­grate my book to the new toolchain in a day more work, most­ly in­volv­ing im­ple­ment­ing things git­book does­n't do and I am hack­ing via Make­files.

It's sure­ly not ready for any re­al us­age but feel free to poke around and con­tact me if you want to use it.


Contents © 2000-2021 Roberto Alsina