Mi Escritorio

Hace unos días puse en twitter una foto de mi escritorio y me sorprendió el interés que generó, ya que pensé que no tenía nada de especial salvo que lo había limpiado :-)

Como al parecer terminó siendo interesante, acá va con algunas explicaciones.

Este es mi escritorio actual, que tiene una mejora con respecto al original, porque el teclado es mejor:

La idea es que un escritorio "limpio" me ayuda a concentrarme (en general funciona). Lo único que hay es:

  • Teclado Logitech TK820
  • Notebook ASUS Ux305f
  • Monitor Samsung 1080p 27"
  • Una birome (la parte de atras sirve para pantallas touch)
  • Una carpeta negra
  • Un jarro térmico de café de PyConAr 2017
  • Un Google Home

y no se ven, pero tengo a mano unos auriculares que a veces quedan en el escritorio.

Cada una de esas cosas tiene un porqué, y si agregara una cosa más ... la barrera para entrar es bastante alta.

Teclado

En este momento tengo un Logitech TK820 que tiene un touchpad grande (11x11cm) al costado. Es un teclado "chicle" estilo notebook, pero las teclas tienen más travel (casi 1.5mm) y el touchpad es muy bueno. En general prefiero touchpad en vez de mouse por las muñecas, y al estar al costado no lo toco mientras escribo, lo que es un plus.

Me gusta que sea wireless porque mantiene el escritorio libre de cables, y al ser RF no tiene lag como pasa con algunos BT viejos.

Lo compré en oferta en un viaje en ... 2014? Es un modelo de 2013, sigue andando perfecto! No lo estaba usando por uno de los defectos de este teclado: no tiene donde guardar el dongle de RF. Por suerte es un "unifying receiver" de Logitech y se consiguen repuestos.

Tengo encargado y viajando desde Laos un teclado mecánico que veremos si lo reemplaza, va a tener que hacer una audición.

Jarro de PyConAr

Tomo mucho café. Al ser un jarro térmico me ayuda a tomarlo más lento porque no se enfría tanto. Aparte es de PyConAr que es la mejor conferencia del mundo mundial :-)

Carpeta negra

Hay papeles que tengo que tener a mano. No quiero tener papeles en el escritorio. Me busqué la carpeta más parecida posible a mi notebook y la puse del otro lado del monitor para dar simetría.

La birome es para interfacear con los papeles.

Monitor

Cortesía de Thirstie mi actual empleador/cliente que tenía unos monitores al cuete en un coworking :-)

Hasta hace poco trabajaba exclusivamente con la pantalla de la notebook (es 13.3" 1080p) pero ... lamentablemente mis ojos ya no son lo que eran y se me estaba cansando la vista, así que simplemente cambié a un monitor con la misma resolución pero el cuádruple de superficie (27") y que tiene algunos extras como "eye saver" que te limita la luz azul (no sé si sirve para algo pero lo uso) y realmente se ve muy bien.

Tal vez en un futuro pase a un monitor 2k del mismo tamaño. Un monitor 4k es realmente un desperdicio, si ya casi no veo los pixeles del 1080p :)

Un upgrade planeado es poner un mejor pie o un brazo para permitir ajustar en altura o rotar la pantalla a "portrait" que es mejor para codear (extraño todavía mi notebook con pantalla 4:3, entraba TANTO código...)

Google Home

Tiene dos fines:

  • Me gusta controlarlo por voz
  • Funciona como parlante bluetooth!

Si bien el audio no es WOW suena sorprendentemente bien para ser así de chiquito.

Auriculares

Son unos Bluedio Turbine T4S que compré en oferta el año pasado (y con el dolar a $20!). Lo que me gusta de estos auriculares es:

  • Bluetooth con soporte de dos dispositivos, así que funcionan con mi celular y mi notebook al mismo tiempo.
  • Son over-ear así que aún con la cancelación de ruidos apagada para ahorrar batería aíslan bastante.
  • A mí me quedan cómodos (hay gente a la que no)
  • La batería dura fácil tres o cuatro días y carga al toque. Peor de los casos si no los puedo cargar en el momento hay un cable de audio.
  • Son de metal, se sienten premium por así decir. Los uso hace un año mucho y recién ahora empiezan a tener algunos problemas muy menores (no "traba" uno de los lados, ni se nota)
  • El audio es bueno.

Escritorio

Es un escritorio hecho a medida por Varillas lo que tal vez suene lujoso pero no lo es, sale más barato que el equivalente hecho de aglomerado en Easy.

Mide casi dos metros de largo, para dar dos puestos de trabajo (el mío y el de Rosario) con tres estantes en el medio lo que da lugar de almacenamiento discreto con unas cajas lindas y lugar para cableado.

Las patas son de varilla cuadrada de acero pintado de negro, la tapa de madera sólida de paraíso. Es básicamente indestructible a menos que lo deje en una laguna.

Cableado

En general tengo pocos cables por elegir accesorios inalámbricos. La notebook y el monitor tienen cables de alimentación, y hay un cable HDMI entre ambos. Los organicé con un aparatito a tal efecto de goma y pesado para que los cables no se muevan:

El Google Home también tiene un cable, pero va directo hacia abajo y no se ve.

Hay una parte que todavía no he acomodado, que es el bajo escritorio:

En algún momento juntaré ganas y usaré algo como esto para organizarlo.

Fuera de eso, tal vez un hub usb para no tener que tener dongles y cosas así en la notebook misma.

Notebook

Una Asus Zenbook UX305F que compré por menos de 700 dólares hace como 4 años así que está sumamente amortizada.

La CPU es una Intel Core M-5Y10c dual core, 4 threads con 8GB de RAM y video lo que sea que viene con esto (Intel HD5300?) que es ... decididamente mediocre!

Sin embargo, sinceramente no recuerdo en los primeros tres años de tenerla haber dicho "esto es una carreta". Hoy en día ... sí, cuando levanto un sistema dockerizado con una cantidad de containers ... podría ser más rápida.

Así que estoy viendo de pasar a algo como una Asus Zenbook UX33FA que tiene 16GB de RAM, un SSD el doble de grande, una CPU mucho más rápida (es demasiado y hace que la notebook sea muy cara pero no encuentro CPUs mediocres con 16GB de RAM...)

Sí, ese modelo es muy caro así que pienso esperar un poco y comprarlo refurbished a menos plata (ahora está a 890 "como nueva")

Qué es lo bueno de mi notebook actual:

  • La batería aún 4 años después todavía aguanta 4 horas. Aguantaba 7 cuando la compré. Pensando en renovarla, el reemplazo es sencillo y el repuesto sale 50 dólares.
  • La pantalla es hermosa aún hoy.
  • El teclado y el touchpad son razonables.
  • El peso. Pesa 1.2kg y el cargador 300g. Ni se siente en la mochila.

Software

Hace un tiempo que estoy usando Namib Linux que lo podés pensar como "Arch para seres humanos". O sea, es Arch, pero con un instalador lindo y desktop por default (podés elegir cual querés).

Mi desktop por ahora es KDE 5.15 que me sorprendió por lo pulido. Voy probando cosas, Deepin y MATE son muy interesantes.

Cosas que no hay en el escritorio

Libreta

Para no tener una libreta en el escritorio tomo notas en QownNotes que es un balance muy copado entre potencia y sencillez.

Teléfono

Todas las aplicaciones de mensajería del celular están en Rambox con temas oscuros y no llaman la atención.

Para atender llamadas uso los auriculares. Para saber que suena el teléfono (y otras notificaciones) uso KDEConnect que hace cosas como mutear la música cuando suena una llamada y en general no necesite nunca mirar el celular.

Posibles Upgrades

Algunos ya los mencioné, pero los que tengo en mi cabeza son:

  • Teclado mecánico y mouse "lindo"
  • Brazo para monitor / soporte regulable
  • Notebook más nueva
  • Cactus?

Coffee As a Service Architecture

Coffee As A Service Architecture

Intro

Today I was in a meeting with recruiters (yes, really) because they want to be better at technical recruiting and they had the idea that talking to me would help them (oh, sweet summer children).

A nice time was had by all (I hope) and at one point I was asked about what architecture was, and more specifically, about the difference between microservices and a monolith.

Which I tried to explain using what I had at hand: coffee cups, sugar dispensers, a spoon and so on. It didn't quite work out but I kept thinking about it on my way home and ... let's try again.

What is Architecture?

Architecture, when it comes to software, can be defined in many ways, but one way I like is to say that architecture involves:

  • What the components of your system are
  • How they are done
  • How they talk to each other

There is a lot more, but you start with that, and that is more or less enough to explain monoliths and microservices.

The Coffee Service

One thing of massive importance about systems is that they are meant to do something. They exist for a purpose. So, let's suppose the purpose of our system is to make coffee and put it in a cup.

We can call the cup the "coffee client" and whatever we use to make the coffee is the "coffee system" or "coffee service"

So, assuming you have a can full of cofee beans and a cup, how do you make coffee?

The Coffee Monolith

This is my very own coffee machine. Not only is it monolith-shaped, it's functionally monolithic (it's also large enough to deserve its own table, as you can see).

It has two buckets on top. On one you put water, in the other you put coffee beans. Then, you put a cup under the spigot and press a button or two.

It will:

  • Grind the beans
  • Put the ground coffee in the right place and apply the "right" pressure
  • Heat the water to the "right" temperature
  • Run water through the coffee grounds
  • Pour the coffee into the cup
  • Discard the grounds into a hidden deposit

Sounds awesome, right? It is!

It takes all of 30 seconds to go from coffee beans to a nice cup of coffee! It tastes good!

And it's important to keep that in mind. IT IS GREAT.

Monoliths, when they done correctly and you are not expecting anything out of their operating parameters, are awesome.

The problem with monoliths 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 industry the meaning of "right" is not fixed.

So, because the whole point is to ride this analogy into the ground, let's consider all the things about this awesome machine.

Flexibility

It grounds the coffee. What happens if you want it ground finer? Or coarser?

It turns out that if you have the right tool you can adjust the mill's output (it's not in the manual).

In a microservice-based coffemaker I would replace the grinder.

How about water temperature?

It has three settings. Want anything else? No luck.

In a microservice-based coffee service I would just use an adjustable kettle.

How about the amount of coffee per cup?

It has three settings. Want anything else? No luck.

In microservice-cofee I would just transmit as much coffee as I wanted.

How about changing the bean variety between cups?

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

In microservice-coffee heaven I could have multiple hoppers providing beans of all varieties and just connect to the one I want today!

Cup size?

It does two sizes (but you reprogram those sizes)

In microservice-cofee I would just pour as much water as I liked.

A monolith has the flexibility its designers thought of adding, no more, no less. And changing it is ... not trivial.

I could use a vacuum cleaner to remove the beans from the hopper and change varieties. I would consider that a hack. I have also done it. I regret nothing.

Unused Features

It has a thing that lets you setup a credit system for coffee cups I will never use. A milk foamer I use once a week. Why? Because "we may need this and it's hard to add it later, so let's just do it from the beginning" ground coffee.

Sometimes yes, it's useful (capuccino!) but sometimes it's just something I paid for and will never use (coffee credits!)

In a microservice architecture I would just get a new milk foamer, use both for a while and then keep using the one I like.

Hard to Improve

How do I add a better foaming thingie?

By buying one and putting it in the table.

How do I add a more flexible coffee grinder?

I can't because this machine is incompatible with pre-ground coffee. There is a newer, more expensive model that can take that but this one? You need to throw it away.

Modifying a monolithic system is difficult because the pieces are tightly coupled. I can't use a separate grinder because the system requires the coffee grounds to arrive via a specific internal duct at a specific point in the coffee-making cycle, there is just no way to insert my grind-o-matic-3000 in there without a saw and duct tape.

In a modular system I would unplug the grinder and insert a compatible-but-different grinder, in a microservice architecture I would just use whatever grinder and put the coffee grounds in a message and have the next piece in the system pick it from there.

Expensive

This coffee machine is expensive. It's much more expensive than buying a grinder, a coffee machine a kettle and a milk foamer.

What it provides in exchange for the extra money (and reduced flexibility and so on) is performance. I don't boil water, I don't grind coffee, I don't pour, I just press a damned button and enjoy coffee.

Outsourcing

You can buy pre-ground coffee and effectively outsource that part of the process to some external provider.

I can't! I am doomed to ground my own coffee forever.

Maintenance

I have a lubrication schedule, or else my expensive machine will break.

I have to disinfect the coffee ground bin or else it will have maggots.

I have to empty the water waste tray before it overflows.

I have to have a thing to dump the bits of dirty water it uses to clean itself when it turns on/off.

I have to buy special acid to periodically remove scale from its innards or it will stop working. That costs actual money and takes half an hour.

I need to cleanup coffee crud from all the internal springs, levers and thingies every couple of weeks.

Now, you, readers with normal coffee making things? How is your coffee machine maintenance routine? What, you don't have one? Thought so.

Conclusion

So, that's why nowadays most people prefer to pay the performance penalty of a microservice architecture instead of using an awesome monolith.

This is not exhaustive, there is still separation of concerns, encapsulation, rigidity of contracts and a lot more, but it should be convincing enough without being dogmatic :-)

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

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

Nunca tengo celulares caros. No tenía un celular caro en 2010 y no tenía un celular caro en 2018 y adivinen qué, no tengo un celular caro en 2019.

Mi empleador me mandó a trabajar una semana a San Mateo (extrañamente no es la primera vez que voy a San Mateo) y aproveché para hacer una compra de cierto riesgo si tratara de hacerla desde Argentina: un celu.

Si lo comprara acá y no anda es más caro devolverlo que otra cosa, así que siempre me dió cosa. Estando allá, con delivery en 24 horas? Es otro tema.

Me compré un UMIDIGI One ... ¿Un qué? Un UMIDIGI One.

UMIDIGI es una marca china de cuarta línea que hace celulares con specs "gama media alta" con precios de gama baja apuntando a mercados como Bangladesh. Entonces, era una apuesta interesante. Si el celu sale bueno, es mucho celu para lo que cuesta.

¿Cuanto cuesta? 120 dólares.

Eso son unos $4800 que es menos de lo que acá sale el smartphone más barato de mi proveedora de telefonía (Personal)

UMIDIGI tiene muchos modelos, este es de los más baratitos. En particular tiene dos variantes, el One y el One PRO. La diferencia es:

  • El PRO tiene menos batería
  • El PRO tiene carga un poco más rápida
  • El PRO tiene carga wireless
  • El PRO tiene NFC

Ninguna de esas cosas me hace alguna diferencia, entonces veamos lo que sí viene en el One:

  • Pantalla con bordes finitos y notch (90% screen/body ratio)
  • Cámara dual 12+5 (tal vez de mentira) pero con un lindo sensor Sony
  • CPU Helio P23 (una Mediatek gama media)
  • 4GB de RAM
  • 32GB de storage
  • Android 8.1 mas-o-menos-stock
  • Frente y "espalda" de vidrio (muuuuy lindo)
  • Una fundita y un protector
  • Lector de huellas al costado
  • Soporta todas las bandas habidas y por haber de cualquier lugar del sistema solar.

La performance para lo que lo uso es buena, la pantalla es muy linda, la batería aguanta tranqui un día largo, tiene jack de audio... la verdad está muy bien.

Saca lindas fotos!

Lo malo:

  • Tiene una tendencia a colgarse de vez en cuando. Al parecer es una sensibilidad a la estática!
  • No hay mucha ROM alternativa (me gustaría poder subirlo a Android 9)
  • Siempre sospecho que se me va a caer o rayar porque es de vidrio (pero hasta ahora no)
  • Si lo ves de lejos parece un IPhone
  • El protector era de plástico, no de vidrio, así que lo saqué
  • La cámara dual es mentira, ninguna app la soporta salvo la stock y sospecho que hace el bokeh por soft

Sinceramente estoy contento, el Moto E ahora es el celu de Tato, y volvería a comprar otro UMIDIGI, hay algunos modelos que son super tentadores como el S3 PRO o el F1.

Clarke no la vio venir

Clarke No la Vio Venir

Ayer escuchaba "Pasaron Cosas" en la radio y pusieron al aire un terraplanista. Lo hicieron con la saludable intención de reírse de él, pero ...

Nada, una cosa lleva a la otra, menciono que al parecer algunos terraplanistas creen que el GPS funciona en base a cables submarinos y entonces un amigo inteligente que tengo dijo esto:

Es una referencia (supongo) a la tercera ley de Clarke:

Toda tecnología lo suficientemente avanzada es indistinguible de la magia. -- Arthur C. Clarke

Pero sospecho que la relación entre una cosa y la otra no es la que Clarke imaginó, o la que esperaba.

Clarke pensaba (creo!) que si repentinamente nos viéramos expuestos a la experiencia de una tecnología mucho más allá de la que experimentamos día a día, muy superior a la tecnología que reconocemos como tecnología entonces parecería mágica.

Entonces, si aparezco en el medioevo y les muestro un helicóptero, parecería magia. Siempre tuve mis dudas al respecto, de todas formas.

Lo que está pasando hoy en día es otra cosa. No es tecnología alienígena la que parece magia, es tecnología alienada.

Alienada en el sentido de ser "ajena". El GPS no funciona en base a cables submarinos. Los sextantes funcionan. Hay satélites dando vuelta sobre nuestras cabezas. Pero todas esas cosas son ajenas para la mayoría de la gente.

Casi todas las preguntas que uno puede hacerse sobre la naturaleza del mundo tienen respuestas fractales que se vuelven más complicadas a medida que uno las ve con más atención.

¿Como sabés que esa foto satelital de tu casa en Google Maps es de un satélite (probablemente no lo sea)? ¿Cómo sabés que tu celular usa GPS para saber donde estás (no usa sólo eso)?

El tierraplanismo no es un movimiento anticientífico. De hecho es casi lo contrario. Es un movimiento equivocado, sí, todo lo que dicen está mal, sí.

Pero es, sospecho, en el fondo, un intento desesperado de apropiarse de la realidad. De pensar que hay una realidad sencilla, alcanzable para el humano de a pie. Que el mundo ha vivido equivocado y yo, Jorge de Berazategui, lo veo.

La tierra parece plana. La tierra, localmente es plana. O incluso cóncava. Obvio, a otra escala, mayor, no lo es. Yo lo sé. Pero imagináte lo que se sentiría ser el que "sabe" que todos los demás están equivocados. Todos tenemos alguna opinión super minoritaria en algo.

  • El helado de dulce de leche? Overrated.
  • El asado es una comida sencilla de hacer y poco satisfactoria.
  • El fútbol es un deporte bastante aburrido.
  • Natalia Oreiro es una chica promedio.

Seguro que al menos uno de esas frases te va a parecer casi tan ridícula como decir que la tierra es plana. La diferencia obvia es que esas frases son sobre gustos, u opiniones subjetivas.

Pero hay realmente una línea dura que separe lo subjetivo de lo objetivo?

Pensemos en el "giro copernicano". Los defensores del modelo Ptolemaico eran los mejores observadores astonómicos de la época. Sus increíblemente laboriosas mediciones del movimiento aparente de los planetas proveen una de las mejores maneras de mostrar que el sistema heliocéntrico es "verdad".

¿Pero que hacían ellos? Tomaban su modelo geocéntrico de círculos perfectos y lo mejoraban. Agregaban epiciclos, más círculos sobre círculos, y resulta que eso hacía que el modelo funcionara. De hecho, es la base del "análisis de Fourier" una técnica que dice que sí, cualquier cosa se puede describir como una acumulación de círculos. ¿No me creés? Mirá esto:

Ahi ves como se aproxima una onda "cuadrada" usando 4 círculos. No hay un movimiento posible de los planetas que no se pudiera explicar agregando más epiciclos, más círculos.

Lo que estaban haciendo los Ptolemaicos es decir "¡ajá! Mis observaciones de la realidad indican que mi modelo actual no es correcto. Voy a hacer lo que hay que hacer, y modificar mi modelo."

Tenían razón, y no eran negacionistas, estaban haciendo lo mejor que podían, eran brillantes y aceptaban la "realidad de lo real", y actuaban en consecuencia de manera inteligente.

Sí, estaban equivocadísimos, pero hay una tendencia, al verlos desde el siglo 21, de decir "mirá que boludos, como no se dieron cuenta que un modelo de órbitas elípticas era una explicación mucho más elegante de los movimientos observados".

Bueno, no se les ocurrió. Esa es toda la diferencia.

Y realmente, si uno se basara en hacer coincidir observaciones con resultados del modelo, no hay nada que impida que el modelo ptolemaico logre el nivel de precisión que se te ocurra. Y tampoco es que el modelo de órbitas elípticas Kepleriano es perfecto ... la preferencia por el modelo copernicano, en ese momento, era bastante subjetiva que querés que te diga.

Y ya que estamos, Kepler también metió una pila de misticismo pitagoreano en sus teorías, así que no hagamos como que un lado era "ay los clásicos" y el otro era "uy, la ciencia" porque eso es proyectar desde hoy al pasado. El pasado siempre fue más complicado de lo que parece ahora.

Un terraplanista te responde a "¿si la tierra no es redonda, como es de noche en Japón cuando acá es de día?" con "el sol está cerca y da vueltas alrededor del polo norte", y cuando le decís "¿pero entonces como se produce un eclipse lunar?" te pueden decir que hay un "objeto sombra" que da vueltas alrededor del sol a un ángulo de 5 grados y bla bla bla oculta la luna. Están tomando su modelo y lo modifican para que coincida con lo observable. Es una versión degradada, clase B, de los astrónomos ptolemaicos.

¿Entonces, que hacemos con los terraplanistas? Ni idea. A pesar de lo tentador que es reírse de ellos, no los vas a convencer de nada así. Si ese es tu objetivo, deberías saber que no estás actuando de manera de lograrlo.

Se puede intentar razonar con ellos, pero no sé hasta que punto sirve. Argumentos tales como "Si la tierra es plana la atracción gravitacional haría que en la patagonia pareciera que el sur está cuesta arriba" o "Si la tierra es plana entonces volar de Buenos Aires a Ciudad del Cabo sería imposible porque quedaría lejísimos" son indiscutibles y a pesar de todo van a ser discutidos.

Tal vez la gravedad no funciona como Newton dice, tal vez la perspectiva no funciona como vos creés, tal vez hay tremendos vientos de cola que hacen que los aviones vayan más rápido mientras más al sur ... en ambas direcciones. No lo sé.

El modelo del mundo que crea un terraplanista sólo necesita ser lo suficientemente bueno para impedir que la disonancia cognitiva le impida creer en el terraplanismo, igual que un creyente complica su idea de dios lo necesario y suficiente como para convencerse de seguir creyendo.

Yo prefiero asumir que no puedo convencerlos, lo que me libera para decir que su teoría es una pelotudez, pero eso soy yo, no otro.

57 channels and nthing on

57 channels and nothing on

Empecé a usar Internet allá por 1995, cuando tenía 23 o 24 años. Este año cumplo 48, lo que quiere decir que llevo casi exactamente la mitad de mi vida online.

Me acuerdo de las primeras páginas web que ví, pero mucho más me acuerdo de los primeros canales de chat que visité en IRC y de los primeros grupos de discusión en los que me metí. No voy a comentar cuales fueron porque dan vergüencita, pero sí quiero hablar de lo que yo creí que sería el futuro.

Ya en 1995 la cantidad de información era abrumadora. Ya en 1995 era posible encontrar casi cualquier cosa online, y en particular gente discutiendo de esa cosa.

¿Programación? Obvio que había gente discutiendo.

¿Un lenguaje específico? Por supus.

¿Una biblioteca o programa escrito en un lenguaje específico? Más vale.

¿Una teoría? Me extraña araña.

Ya en 1995, hace la mitad de la vida de este gordo actualmente pelado, era posible exponerse a todas las ideas. Y este en ese momento no tan gordo ni tan pelado pensó ... "seguramente esto va a hacer que la gente se de cuenta cuando esté equivocada y disminuya la cantidad de gente diciendo boludeces".

Desde ya que es tal vez la cosa más equivocada que he dicho en mi vida.

Resulta que el problema no es a cuantas cosas distintas podés exponerte sino lo fácil que es no exponerte a ninguna.

Imaginemos dos mundos alternativos, cada uno de ellos habitado por 100 personas con 25 ideas distintas.

En el mundo A, hay 10 plazas en las cuales la gente se junta todos los días porque están los negocios donde compra lo necesario para vivir y los lugares de trabajo.

Entonces las personas van a ir, en promedio 10 a cada plaza todos los días, y (supongamos) visitan menos frecuentemente otras 4 o 5 plazas. De esa manera se van a exponer a las ideas de unas 50 personas, que (asumiendo mucho) serán unas 12 ideas.

Entonces esas personas van a "conocer" la mitad de las cosas. Sus ideas personales necesitan coincidir o al menos no contradecir obviamente la mitad del conocimiento del mundo.

Eso implicaría que ese mundo va a tener personas con ideas mas o menos consistentes. Habrá excéntricos, pero va a haber un cierto nivel base de ideas incontrovertibles.

Ahora imaginemos un mundo B, en que hay 100 personas, de nuevo, con 25 ideas distintas, pero en que hay 100 plazas. Cada una de esas plazas es propiedad de una persona, y tiene todo lo que necesita.

Hay, además, enormes carteles alrededor de cada plaza, explicando lo que piensa el que allí vive. Y las 100 personas pasean a diario por caminos disjuntos que los llevan a ver las plazas de los demás desde fuera.

Es un mundo donde se vive aislado, pero donde el contacto con el otro está disponible todo el tiempo. Todo lo que tenés que hacer es, cuando estás cerca de una plaza, es decidir entrar.

Obviamente, ya que podés elegir entre 100 plazas, vas a ir a las que más te gusten. Para qué vas a ir a lugares feos ¿no?

Entonces vas a ir a plazas que los carteles describan en términos que te gusten. Vas a ir a plazas de "gente como uno". Si te gusta el helado de dulce de leche, vas a ir a plazas donde hay gente que le gusta el helado de dulce de leche, no el de sambayón.

Cuando dos personas que les gusta la misma cosa se juntan, ambos refuerzan el gusto del otro.

  • Que rico es el dulce de leche!
  • Cuanta razón tiene, don Cacho.
  • Eso digo yo.
  • El helado de dulce de leche es muy superior a todos los demás.
  • Esos sambayonistas son incomprensibles
  • No saben lo que se pierden!

Transformar el aprecio compartido de algo en desprecio a lo distinto es un proceso simple. Es fácil. Es placentero.

La internet es ese mundo B elevado a una potencia ridícula. Si te parece que el helado de dulce de leche es rico, te unís al grupo de Facebook "Aguante el helado de dulce de leche" y al mes estás en el grupo de Whatsapp "Mueran los salvages sambayonitarios"

No es el "efecto burbuja" o "cámara de resonancia", o al menos no es sólo eso. Vos sabés que hay gente que le gusta el sambayón. ¿Nada más que son ... raros, no? No son gente "como uno". Gente de bien. Gente de dulce de leche.

Y así estamos.

Coding in anger: not-gitbook

I have, intermitently, for the past few months, been writing a book. You can see it here and I am fairly happy with how it's going.

I am not so happy with the tooling.

When I started writing it, I didn't want to write a tool, I just wanted to write a book. So, I looked for "things to make a book out of markdown" and found a few, including mdBook and gitbook and tried them both, then decided to go with gitbook because it seemed more developed.

But, you know how this works. Things started drifting.

One initial obstacle was that I wanted the code in the book to come from the actual working code, not be a copy. I also wanted to "execute" the chapters and make the output of the chapter's code part of the chapter itelf.

I found a nice tool for this called pyLiterate which... I ended up extending to allow for things such as "include this piece of code from that file but do not execute it" and whatever, and integrating it into gitbook involved ... a lot of Makefiles.

And then wen the output appeared in gitBook ... I really didn't like how syntax highlighting worked. I wanted prettier and specifically to be able to highlight some lines, and to have line numbers matching the file contents and not starting from 1 ... and I ended up writing a Gitbook Extension

And I added support for graphviz in pyLiterate because I wanted SVG diagrams as part of the code and not as separate things.

And I wrote and I wrote.

And then life happened and I stopped writing. And whenever I wanted to start writing again in a new setup something broke.

  • Maybe the gitbook version installed or its dependencies had a security issue and needed updating.
  • Maybe the updated gitbook broke my plugin
  • Maybe things just were "off" and I had to track it down*

And a couple of days ago, I just got angry. And what the hell this is just a lame static file generator and I know those suckers.

So, I decided to see how much work would it be to reimplement, somewhat dumbly, gitbook.

Well, really, it's about a day's work (for a low quality version)

  • Supports all I want
  • Supports plugins
  • Supports arbitrary markdown preprocessing
  • Supports arbitrary markdown renderer hacking
  • Uses mistune for markdown, which kicks ass
  • Uses jinja2 for templates and they are 10x simpler than in gitbook AND THE OUTPUT LOOK THE SAME. I mean, there is one template

I logged the work, which was at a very relaxed pace over a couple of days here and published not-gitbook in gitlab

I could migrate my book to the new toolchain in a day more work, mostly involving implementing things gitbook doesn't do and I am hacking via Makefiles.

It's surely not ready for any real usage but feel free to poke around and contact me if you want to use it.

Out on Blue Six

  • Author: Ian McDonald
  • Rating:
  • See in goodreads
  • Review:

    Had a bit of a hard time finishing the book. At a certain point around 2/3rds of the way in the language got just too flowery and psychodelic.

    In any case, it's pretty good!

DeVicenzo 2

A long time ago I "wrote a web browser". Those there are some very heavy quotes. You may imagine me doing air quotes while I write it, maybe?

That's because I didn't really, what I actually did was write UI around Qt's webkit-based widget. It was a fun project, specially because I did it with the absurd constraint of staying below 128 lines of code.

And then I did not touch if for six years. But yesterday I did.

commit 0b29b060ab9962a32e671551b0f035764cbeffaa
Author: Roberto Alsina <ralsina@medallia.com>
Date:   Tue Oct 30 12:32:43 2018 -0300

    Initial PySide2 port

commit 831c30d2c7e6b6b2a0a4d5d362ee7bc36493b975
Author: roberto.alsina@gmail.com <roberto.alsina@gmail.com@1bbba601-83ea-880f-26a2-52609c2bd284>
Date:   Fri Jun 1 15:24:46 2012 +0000

    nicer, smaller margins

Six years is a long time. So, nowadays:

  • I prefer my code to be formatted better
  • Python 3 is the thing
  • PySide is official, so I would recommend using it instead of PyQt
  • Qt is now on version 5 instead of 4

So, with those new constraints in mind, I ported DeVicenzo to the latest everything, formatted the code properly using black, and expanded by line limit to a generous 256.

And Here it is ... it's not realy useful but it is an example of how expressive the Python/Qt combination can be, even while being an absurdly bad example nobody should follow (Oh, the lambdas!)

screenshot