La experiencia de manejar con nieve

Durante las vacaciones de invierno nos hicimos un piccolo paseo por el sur. La vuelta era Piedra del Águila (la mayor cantidad de días en un lugar), luego Bariloche un par de días, rebotar en Villa La Angostura y Junín de los Andes, y ya volver.

Por las dudas, cargamos en el auto las cadenas para andar sobre nieve, por si las necesitábamos... ya que las teníamos las llevamos, ¿no? Las habíamos comprado cuando fuimos a Mendoza hace un par de años y estaban ahí, listas para ser aprovechadas. No esperábamos tener que usarlas sí o sí porque nos habían dicho que el invierno venía raro en el sur, incluso hubieron muchas cancelaciones en los hoteles porque no había nieve, pero mejor prevenir que curar.

Llegamos a Piedra del Águila sin problema. Ya fue atípico que el tercer día llovió un montón, pero no pasó de tener que lidiar con barro. El 25 de Julio salimos para Bariloche. Habíamos escuchado que iba a llover todo el día en la ruta, quizás nevar, pero no le dimos demasiada importancia.

Se complicó el viaje.

A la horita de arrancar empezamos a ver más y más nieve al costado de la ruta. Y nevaba, al principio poco, luego más intenso. En un momento vemos que la gente frena y empieza a ponerle cadenas a los autos. Nosotros no sabíamos que hacer, ¿era realmente necesario? Afuera nevaba bastante, hacía frío, y estábamos en la mitad de la ruta... y en verdad el pavimento estaba re bien para circular, ¿en algún momento se iba a poner denso? Entonces, nos repetimos, ¿era necesario poner las cadenas?

En un momento tomamos la decisión de que sí. Me bajé del auto, me abrigué, saqué las cadenas... Nevaba mucho, hacía frío. Felu se bajó también. Moni también pero la mandé de nuevo al auto porque ella ya traía una gripe, no hacía falta que tomara más frío. Con Felu leímos las instrucciones, tratamos, no pudimos. Se mojaba el papelito de las instrucciones, creíamos entender lo que había que hacer pero no podíamos seguir los pasos indicados.

Vimos que los autos se habían movido, nos subimos e hicimos unas cuadras más. Otra gente poniendo cadenas. Me bajo y pregunto, no sabían bien cómo. Uno de más adelante sí sabía, nos mostró. Volvimos, traté y traté. Pero no podía, o estaba haciendo algo mal o había un problema con las cadenas. No llegaban a enganchar como "deberían", parecían chicas.

Complicado para poner las cadenas en el medio de la ruta

Reviso la caja, ¡y encuentro que las cadenas no correspondían con nuestras ruedas! Me meto en el auto puteando, cagadísimo de frío, y con Moni nos dimos cuenta que esas cadenas las habíamos comprado para el Stepway, que es con el que fuimos a Mendoza! Claro, la Taos tiene ruedas más grandes. Bueno, perdidos por perdidos, decidimos seguir viaje hasta que nos digan que no podemos seguir y nos manden de vuelta.

Muchos quilómetros yendo despacio (a paso humano, 20km/h como mucho), algunas partes con nieve pero "planas", sin riesgo real, aunque una vez frené y el auto resbaló como medio metro. Me dio cagazo, mantuve más distancia al próximo auto, aunque íbamos a súper lentos. Al final estuvo todo bien, y el viaje duró como seis horas, pero siempre la duda era "si en unos kilómetros más adelante iba a estar demasiado complicado para seguir". Tampoco vimos ningún accidente de otros vehículos, aunque había un camión volcado en la banquina y un auto chocado pero parecía un accidente del día anterior, y sí vimos en la otra mano un camión que se había quedado "estancado" porque resbalaba en hielo y no podía traccionar para arrancar.

Pero llegamos sin mayor inconvenientes al lugarcito que alquilamos en Bariloche. Era en las afueras de Bariloche, como subiendo un poco desde Avenida de los Pioneros, una vista hermosa.

La vista desde una de las ventanas de arriba

Al otro día a la mañana nos levantamos temprano y apenas desayunamos unos mates porque el plan era tomarnos el teleférico para subir a la confitería del Cerro Otto y desayunar allá.

El auto estaba bañadísimo de nieve, pero arrancó bien. Lo sacamos del lugar y lo bajamos a la calle, pero ahí me di cuenta que la misma estaba toda nevada, y con nieve compacta... ¡hielo! En algunas partes apenas se podía caminar, y encima teníamos que tomar la decisión de si bajábamos a Pioneros por el lado que el auto apuntaba (que sabíamos que era una bajada más complicada) o hacíamos la maniobra de darlo vuelta y bajar por el otro lado que la pendiente era más gentil.

Decidimos lo segundo, pero en vez de darlo vuelta ahí que no teníamos espacio, hacer marcha atrás unos cuarenta metros (en subida) hasta una especie de estacionamiento que íbamos a tener lugar para la maniobra. Empezamos, pero no llegamos... en un punto las ruedas delanteras resbalaban y no traccionaban. Como el auto se me empezaba a ir para los costados, decidí traccionar para adelante y volver a donde habíamos salido, que podía quedar estacionado.

Charlé con un vecino que estaba moviendo nieve, y con otro que justo pasaba. Me dijeron que hacía bien en no salir por la bajada "complicada", iba a ser imposible. La otra quizás zafaba, pero si nunca había manejado en hielo, que ni lo intente. Ok, cadenas. ¿Dónde compro cadenas? Me recomendaron una ferretería que seguro tenía, que estaba cerca de un "centro comercial" a unas veinte cuadras de distancia. Yo había hecho ese trecho la tarde/noche anterior, para hacer unas compras, con buena parte nevando y todo, así que me animé a un plan B: voy a comprar cadenas, vuelvo, las ponemos, y listo. La familia decidió acompañarme.

Empezamos a caminar, e hicimos la bajada "complicada"... la cual estaba complicada incluso para caminar! Nos caímos una vez cada uno, mínimo, y Moni se golpeó feo la mano. Cuando llegamos a Avenida de los Pioneros justo vemos una camioneta viejita bajando por esta bajada! Pero iba medio traccionando, medio resbalando. Nos protegimos en unos autos por las dudas y esperamos que termine de bajar; cuando llegó a la zona segura Felipe aplaudió y todo. Ahí yo veo que apunta para el lado que teníamos que ir nosotros, le hago seña al pibe, le explico en qué estábamos, y accedió a llevarnos :). Resulta que el pibe bajaba la camioneta con la doble tracción y así y todo se le complicó! Nosotros no teníamos chances.

La calle y la vista saliendo de donde alquilábamos

Nos dejó en la esquina de la ruta, caminamos dos cuadras y estábamos en la ferretería. Conseguimos las cadenas, y de paso compré una especie de líquido que se le podía poner a las ruedas para mejorar la tracción (también me lo comentó uno de los vecinos con el que hablé antes), pero más que nada para las suelas de las zapatillas de Moni a las que se le pegaba el hielo y resbalaba un montón. A todo esto, Male tenía mucha hambre y Moni estaba dolorida de la mano, así que les ofrecí a todes que se quedaran desayunando que yo caminaba de regreso y ponía las cadenas. Ellas accedieron, Felipe se vino conmigo.

Caminamos un rato largo, subimos "la bajada complicada", llegamos al auto. Y empezamos a tratar de poner las cadenas según lo que nos había mostrado el tipo de la ferretería (más lo que decía el manualcito, más lo que habíamos aprendido en la ruta). Traté con una de las ruedas, no había caso, me quedaba siempre corta. Intenté con la otra (por si había hecho los pasos iniciales mal) y me pasaba lo mismo. Evidentemente no iba a funcionar.

A esa altura el sol había salido, habían pasado un par de horas desde el arranque inicial, y la calle estaba mejor. Entonces fuimos con el plan C: tratemos de llevar el auto (sin cadenas) marcha atrás como la vez anterior hasta ese pequeño estacionamiento, darlo vuelta, y ver qué hacíamos. Llegamos, pero ahí perdí un poco el control, el auto se iba de costado. Decidí meterlo en ese estacionamiento, y ahí se me ocurrió el plan D: ponerle a las cuatro ruedas el líquido ese para mejorar la tracción, e intentarlo de nuevo.

Pude dar vuelta el auto, y los primeros cincuenta metros de calle que eran subiendo no tuvimos problema. Luego vino una curva medio fea, pero estuvimos bien. Y luego otra con una bajada empinada posterior... donde perdí el control del auto.

Sí, perdí el control del auto.

Es horrible la sensación, no podés hacer nada, el auto va para abajo por la pendiente y sólo sos un pasajero sin poder decidir nada. Obviamente girás el volante y no responde. Yo "bombeaba" el freno, intentando recuperar tracción (el ABS no llega a funcionar, creo que por la corta distancia). Algo de eso pude, y medio lo terminé llevando a una zona sin hielo antes que tome demasiada velocidad. Zafamos. Nos quedaba un trecho. Otra vez perdí apenas el control, el auto no es que siguió tanto pero se empezó a cruzar en la calle (las ruedas de adelante frenaron pero las de atrás no). Encima más adelante venía subiendo un muchacho. Cuando vi que ya se había ido para otro lado, volví a mover el auto, y terminamos llegando a la parte final de la bajada que era todo barro, sin hielo, y ahí no tuvimos más problema.

Fuimos a la ferretería, donde encontraron que esas no eran las cadenas que correspondían! Porque la camioneta blah blah, y que el rodado bleh bleh. No sé, a mí me parece que todas las "215/55 R 18" son iguales, no entiendo cómo si la cadena dice que la soporta después son chicas. Sí entiendo que si es una SUV, las cadenas tienen que ser más robustas, porque el vehículo pesa más. El vendedor terminó encontrando las que iban, y las puso en una rueda, y ahí aprendimos bien cómo era la técnica. Pero después las sacamos, porque para andar por ahí no se necesitaba y puede ser que se calienten y se corten si se usan sobre asfalto (en realidad se ven un montón de autos que van con las cadenas en el asfalto así que algo aguantan, pero también he encontrado cadenas cortadas en la banquina en esas caminatas que mencioné).

Nos nevaba durante el paseo por el Centro Cívico

A esta altura Moni y Male habían vuelto a la ferretería. Fuimos al teleférico (aunque ya era como la una de la tarde), pero habían cerrado el servicio porque había mucho viento. Decidimos ir a pasear un poco al centro, y almorzar. Encontramos medio de casualidad un lugar donde comimos bárbaro, y después salimos a caminar por ahí. Aunque había empezado a nevar de nuevo, paseamos por el centro, fuimos a la costa del lago, centro cívico, etc.

Pero apuramos el paseo: por un lado nevaba mucho y hacía un frío bárbaro, por el otro yo quería llegar "a la subida" con luz para poner las cadenas. Eso estuvo bien, la macana que el único lugar para parar el auto era sobre el barro, así que terminé bastante enchastrado con toda la operación. Lo bueno es que con las cadenas (así y todo puestas por mí en mi primera vez) funcionaron bastante bien y tuvimos buena tracción en toda la subida hasta llegar al hospedaje.

Rueda con la cadena (bastante) bien puesta

Al otro día la temperatura levantó un poco y las calles estuvieron mucho mejor, no hizo falta usar cadenas! Incluso al volver a la cabaña me tiré a hacer la subida así nomás y estuvo todo bien.

Pero luego empezó a nevar y bajó un poco la temperatura. Al otro día a la mañana, el día que nos íbamos, las calles estaban complicadas de nuevo. Salí a ver un poco, charlé con unes vecines, y la verdad que estaba en el límite. Me dijeron que la municipalidad había tirado arena y sal, pero que salir sin cadenas era un riesgo. Quizás zafaba, quizás no.

Fui a lo seguro. Mientras la familia terminaba de armar sus bolsos, le puse las cadenas. Luego del checkout, nos fuimos y el auto se comportó bárbaro. Terminamos la bajada y le saqué las cadenas, y ya las guardé para el resto del viaje, porque luego los próximos días (incluso el viaje y estadías en Villa La Angostura y Junín de los Andes) tuvimos mucha lluvia pero con temperaturas de uno a cinco grados, así que nada de hielo.

En el lago Huechulafquen, ya sin nieve y luego de los cinco días de lluvias constantes

Conclusión, a modo de consejo: hay que tener cadenas. Compralas antes del viaje, con tiempo. Y ponelas en la tranquilidad de tu casa, entendé cómo hacer para que queden centradas, avanzá el auto dos metros y re-tensalas, etc. Luego las guardás y esperás no tener que usarlas nunca :)

Ah! Mini consejo extra: está buenísimo tener un par de guantes de trabajo en el auto para cuando necesitás hacer estas cosas...

Comentarios Imprimir

Fórmula 1 en vivo

Estuve unos días en Barcelona, por trabajo. Cuando comunicaron al equipo el lugar y la fecha del sprint, uno de mis compañeres se dió cuenta que durante el fin de semana siguiente al evento se corría la carrera de Fórmula 1 en el Circuito de Barcelona.

Dudé un poco en ir. Me tenía que quedar más días, la entrada a la carrera no es precisamente barata, y no sabía cuanto valía la pena toda la movida. Le pregunté a unos amigos, consulté en casa. Finalmente tomé la decisión y activé: saqué el pasaje (que me lo paga la empresa, claro) para volver tres días más tarde, reservé un Airbnb, y compré la entrada para la carrera.

El Airbnb lo reservé en la ciudad de Badalona, al noreste del centro de Barcelona, muy cerquita. Mi idea era alquilar algo alejado para que sea más barato, pero a "un subte de distancia" del centro como para poder viajar sin problema, y de paso que esté cerca de la playa. No sabía muy bien cómo iba a llegar al circuito, pero el mismo compañero de antes encontró que había unos bondis que te llevaban y traian durante los tres días de carrera.

Un saludito para les muchaches

Es que "la carrera" no es sólo "una carrera". Por lo pronto hay dos tandas de prácticas libres el viernes, otra más el sábado, luego la clasificación el mismo sábado, y la carrera en sí el domingo. Pero aparte hay muchas actividades. Corre también la fórmula 2 y la 3, hay shows, presentaciones, varias cositas.

El circuito no queda en Barcelona, sino que está situado en las poblaciones de Montmeló y de Granollers (por eso además de Circuito de Barcelona-Cataluña se lo llama Circuito de Montmeló). Queda a unos 26 kilómetros del centro de Barcelona, y considerando que hay autopistas, uno pensaría que el trayecto de ida y vuelta tendría que ser rápido. No mi ciela. Es que toda la cercanía al circuito colapsa totalmente esos días, así que se pierde un montón de tiempo con el bondi yendo a paso de hombre. Sumado a las largas colas para tomar los bondis, hicieron que pierda bastante tiempo al ir y venir. El sábado, luego de la qualy, fue el peor día al respecto: luego de que terminara, caminé mucho para salir del circuito (hay que atravesar un túnel que también estaba saturado de gente), luego una cola de varias cuadras para tomar el bondi, el trayecto con toda la primera parte a paso de hombre, entrar en la ciudad que no es precisamente rápido, y luego dos subtes hasta el Airbnb... ¡en total tres horas y media!

Decía que tuve que caminar bastante para salir del circuito. ¡Es que el lugar es inmenso! Y encima el bondi te deja cerca de las puertas 3 y 4, que es en la otra punta de donde yo tenía el asiento reservado. Yo había elegido uno de los lugares más baratos, pero techado: tenía miedo que lloviese (lo cual haría que las horas ahí fuesen un embole total), y aunque no llovió ni un poquito, fue acertadísimo porque los tres días hubo un sol que rajaba la tierra. Re garpó el lugar que elegí.

Tomando la curva

Estaba en la curva 9. Veia venir los autos por una recta, frenaban, agarraban la curva y aceleraban. No es una gran zona donde hubo mucha acción. En las prácticas uno de los autos frenó mal y tomó el control siguiendo un poco derecho, entrando en una zona de despiste controlado que hay. Más divertida fue la Fórmula 3, hubieron muchas peleítas en esa zona.

También había una pantalla gigante al frente de la tribuna, cruzando la pista, por donde pasaban algo parecido a la transmisión oficial (me parece que la imagen de los autos es la misma, pero la infografía superpuesta seguro era otra, más simple). También tenía una radio que me habían dado en el lugar (gratis, si tenías una tarjeta American Express) donde se podía escuchar algo que podríamos denominar como "el relato de la carrera". Lo pongo entre comillas porque aunque se comentaba un poco la carrera, no había demasiada profundidad en la información; es entendible, porque al ser en varios idiomas el que hablaba en castellano al final terminaba repitiendo lo mismo que el que hablaba en inglés (también comentaban en catalán, pero no mucho, y en francés sólo daban cada tanto las posiciones de los corredores franceses).

Mi punto es que si querés seguir la carrera en profundidad, quedate en tu casa. Pero es toda una experiencia ver esas naves espaciales desacelerando y acelerando. Una locura, especialmente cuando hacían la vuelta rápida en la qualy, van al límite. El contraste es el "safety car" (que es un deportivo superespecial), iba mucho más lento que los autos de carrera, y le costaba notablemente agarrar la curva (rolaba que asusta), lo que le da un poco de perspectiva a la monstruosidad que son los otros autos.

El auto de seguridad: un poco incómodo para ir de compras al Makro

También ves cosas que yo nunca había visto. Por ejemplo que barren un montón la pista entre carrera y carrera. Incluso pasa un camioncito con unas telas enganchadas que van limpiando la pista. Era muy gracioso porque cuando pasaba esta gente de mantenimiento la tribuna gritaba y vitoreaba hasta que el chofer saludaba como si fuera una estrella y ahí todes aplaudíamos :)

Creo que el punto más negativo es la cantidad absurda de gente que hay en el evento. Creo que el pico un día fueron 125 mil personas, una locura. Al terminar el día, por ejemplo, decenas de miles caminando para salir del lugar, y caminando cruzado porque hay varias puertas y varios estacionamientos (o lugares donde tomar transporte) cerca de esas puertas. Los baños, por ejemplo, al final, eran un asco total (y entrar y salir era todo un desafío).

En fin. Toda una experiencia que recomiendo, pero no estoy seguro que repetiría :) Les dejo fotos varias y un par de videos.

Comentarios Imprimir

El tamaño sí importa

Un poco de contexto

Resulta que estoy haciendo una interfaz gráfica para Neovim. Hay millón, sí, ya sé, pero cada una tiene su quilombo. Y mi idea igual no es hacer la "interfaz gráfica definitiva", sino aprender en el proceso.

<nerd> Vengo aprendiendo un montón, ya que estamos, es re divertido este "proyecto mascota". </nerd>

El escollo o tema más importante que me encontré hasta ahora que no sé cómo resolver (estoy cada vez más convencido de que no hay una "manera correcta" de resolverlo) es cómo manejar los caracteres anchos en una grilla de caracteres monoespaciados.

A ver, vamos por partes (como diría mi amigo Jack).

Estoy haciendo una interfaz gráfica para Neovim. Neovim es un editor de textos muy usado para programar (entre otras muchas funciones) y tiene una interfaz muy limpia originalmente pensada para la terminal. Y las terminales (la mayoría, anywyay) usan tipografías monoespaciadas.

Una tipografía monoespaciada es aquella donde sus caracteres ocupan el mismo ancho. Si estás leyendo esto en mi blog, vas a ver que la tipografía está orientada a la "facilidad de lectura de textos" y los caracteres tienen distinto ancho. Mirá el ancho de las i y las m en la siguiente secuencia: mimimim. Y compará con la siguiente secuencia donde estoy forzando que use una tipografía monoespaciada: mimimim`. La elección para estos ejemplos de la m y la i no es casual, la i es bastante finita, y se considera que la M tiene el ancho completo.

Las tipografías monoespaciadas son muy importantes para programar en casi cualquier lenguaje. Este código "tiene sentido":

def test_levels_assert_ok_exception(logs):
    try:
        raise ValueError("test error")
    except ValueError:
        logger.exception("test message")
    assert "test.message" in logs.error
    assert "ValueError" in logs.error
    assert "test.error" in logs.error

El mismo código en una tipografía de ancho variable queda una porquería (especialmente en Python donde la indentanción importa, pero quedaría igual de feo en cualquier otro lenguaje).

El problema

Todo muy lindo. Pero ahora vamos a la realidad. En el planeta tenemos un montón de caracteres que son más anchos que una M (lo dejo escrito así genérico porque no queremos caernos en un agujero de conejo). Y no sólo caracteres de idiomas escritos. Unicode cubre todo eso pero también, por ejemplo, emoticones o dibujitos de todo tipo.

Vamos al caso de estos 3 caracteres: el "FULL STOP" (o más conocido "punto"), "HEAVY MULTIPLICATION X", y "CJK UNIFIED IDEOGRAPH-6614": . ✖ 昔 -- o en monoespaciado: . ✖  昔.

Los nombre en mayúsculas que puse en la oración anterior son los nombres formales que le da Unicode a esos caracteres. Y en relación a lo que venimos hablando, Unicode nos da también un dato importante: el "ancho inherente" del carácter, un tema para nada trivial, al punto que Unicode tiene todo un anexo al respecto.

Como gran parte de la especificación de Unicode está dentro de Python, podemos ver sencillamente esos valores para los caracteres en cuestión:

>>> unicodedata.east_asian_width(".")
'Na'
>>> unicodedata.east_asian_width("✖")
'N'
>>> unicodedata.east_asian_width("昔")
'W'

¿Y qué significa eso? No voy a entrar en todo el detalle, ahí ya les dejé el Anexo si quieren explorar. Pero básicamente Unicode nos dice que hay caracteres "wide", "fullwidth", "narrow", "halfwidth", "ambiguous", y "neutrals". Un quilombo. Que podemos reducir un poco haciendo una simplificación: tomamos algunos como anchos y otros como angostos.

Volviendo a los tres casos nuestros, el punto es Na (angosto), la cruz pesada es N (neutra), y el ideograma es W (ancho). Y más allá de esas características "formales", se puede notar visualmente que los anchos no son los mismos.

La dificultad real que me llevó a estudiar todo esto, en el contexto de hacer una interfaz gráfica a Neovim, es: ¿cómo meto caracteres anchos en lo que a priori sería una grilla regular? ¿qué hago cuando el carácter ancho me rompe la columna? ¿hay algo que se puede hacer que tenga sentido o que se considere "correcto"?

La exploración

¿Qué hacen otros editores con este bardo?

Los tres que estuve estudiando son Neovim mismo en la terminal, neovim-qt (una interfaz gráfica hecha en Qt que se comporta muy muy parecida a Neovim en la terminal), y Visual Studio Code. Para simplificar, de los dos primeros voy a mostrar sólo a neovim-qt, porque se comportan igual.

Miren lo que hace neovim-qt (o Neovim mismo en la terminal):

Screenshot y ampliado de cómo se comporta neovim-qt

La primer línea tiene al . como referencia; sabemos que es angosto y cómo debería comportarse. En la segunda línea tenemos el ideograma: como Unicode dice que es ancho, ocupa dos espacios; fíjense que el ideograma ocupa todo el ancho del par .P de arriba, y luego la P está encolumnada con la y de arriba. En la tercer línea tenemos la cruz pesada: Unicode dice que es angosta, pero el dibujo ocupa un montón! Mala suerte, en este caso se respeta el ancho, mirá como la P está encolumnada con la P de la primer línea, pero el problema es que el carácter excedido en ancho queda pisado por la letra siguiente.

Por otro lado, esto es lo que hace Visual Studio Code:

Screenshot y ampliado de cómo se comporta VSC

En la primera línea no hay sorpresas. En la segunda vemos que el ideograma tiene el ancho que ocupa, a nivel dibujo, pero luego el espacio contra la P no está exagerado: esto es porque VSCode no hizo que el ideograma ocupara "dos espacios", sino sólo lo que ocupó el dibujo en sí. Esto también lo vemos en la tercer línea, donde más allá que Unicode diga que es un carácter angosto, VSCode dibuja la cruz pesada al ancho que tenga y luego sigue con el resto del texto. Claramente esta forma de renderizar el texto queda más lindo, pero rompe totalmente las columnas: fíjense como se pierde la alineación vertical entre las tres líneas.

¿Hay valor en mantener en lo posible la alineación de las columnas? neovim-qt mismo en algún punto la rompe porque si ponés un carácter en dos espacios, parece todo ordenadito pero realmente las columnas están rotas, aunque no se nota tanto.

Entonces, ¿qué hago?

Por lo pronto, puedo implementar cualquiera de las dos soluciones que vimos recién.

La primera, como nvim-qt, con los anchos que indica Unicode:

Ocupando uno o dos espacios, según su ancho

(tengo esos puntitos azules porque todavía tengo en desarrollo todo lo que es "dibujar la grilla", después los voy a sacar)

Un detalle: a diferencia de nvim-qt, en vez de que el caracter de después tape completamente al anterior, estoy haciendo que los dibujos de los caracteres se superpongan... creo que queda mejor, pero no es definitivo.

La segunda solución, como VSCode, con el tamaño natural de los caracteres que se escapan del ancho angosto:

A lo que ocupe el glifo, si se escapa de lo angosto

Hay una tercera opción, que se le ocurrió a Felipe, que se basa en el ancho real de cada glifo, pero luego ajustando a que ocupe uno o dos espacios según corresponda. Esta tiene la ventaja que todos los caracteres se verán bien (como en VSCode), y que las columnas parecen ordenaditas (como en neovim-qt), aunque sufre el mismo problema de que las columnas no están realmente alineadas.

Acomodando los anchos en cantidad de espacios fijos

Y una cuarta opción también, idea mía: llevar todo todo a un sólo espacio. La ventaja es indiscutible: al tener siempre un carácter por espacio, la grilla queda perfecta a nivel alineación de columnas. Pero los caracteres al achicarse pierden mucho detalle, y creo que al final no es práctico.

Todo a un sólo espacio

Cabe acotar que Neovim espera que la GUI funcione como la primer manera ("unicode"), porque sino se rompen otras cosas que el editor dibuja "alrededor de la grilla del código"; en la siguiente imagen (del segundo caso, "natural") se puede ver qué mal que queda la barra vertical de la derecha que marca 99 columnas, y cómo se desplaza toda la línea que tiene la cruz pesada al principio:

Neovim espera que la grilla se comporte de una manera específica

Si voy a mantener que Neovim haga esos dibujos de alrededor, tengo que hacer que la GUI se comporte sí o sí de la primer manera ("unicode"), pero quizás en un futuro haga yo mismo desde la GUI esos dibujos de "asistencia", lo cual me liberaría a dibujar los anchos como yo quiera (y esos otros dibujos quedarían más elegantes, por ejemplo la línea que marca el límite de columnas que sea una línea, y no un caracter pintado).

Conclusiones

No tengo una decisión tomada. No me parece que haya una forma que sea claramente mejor que el resto. Todas tienen algún problema.

Pero después de todo este análisis, lo próximo que voy a hacer es usar el modo "unicode", el que usa nvim-qt y que es mejor soportado por Neovim, ya que en la primera etapa (al menos) voy a mantener los "dibujos de asistencia de alrededor" hechos por Neovim mismo, así que no quiero romper eso.

Tampoco me queda claro que las otras opciones sean mejores. Neovim eligió ese modo por alguna razón, aunque quizás esa razón no sea la más importante en este momento/contexto (quizás porque Vim hacía lo mismo, o quizás porque la interfaz primaria es la terminal).

VSCode eligió la otra solución, la "natural", pero que queden las columnas levemente desalineadas es horrible. Aunque quizás eso no sea un problema ya que al final les hispanoparlantes usamos normalmente caracteres "angostos", especialmente para programar... pero después metiste un emoji y perdiste.

En fin. Si tienen más info sobre este tema, es bienvenida. ¡Gracias!

Comentarios Imprimir

Películas, cortitas y al pie

Sin mucha ceremonia, y con las series ni voy a meterme, pero hace rato que no actualizaba la lista de películas, así que acá vamos...

Darío Grandinetti, Mercedes Morán, Jorge Marrale.

Eso sí, un montón de nuevas películas anotadas:

  • Caro diario: (1993; Comedia, Drama) Film dividido en tres episodios, que refleja la vida y opiniones de Nanni Moretti. «En mi Vespa» es una aproximación a la vida cotidiana de Roma durante el mes de agosto; en "Islas" visita a Gerardo, un amigo que lleva once años viviendo en Lipari; juntos recorren otras íslas como Salina, Stromboli, Panarea y Alicudi. En "Médicos" el director rueda su propia quimioterapia y su recorrido por hospitales y especialistas incapaces de diagnosticarle la causa de unos insoportables picores. [D: Riccardo Milani, Nanni Moretti; A: Nanni Moretti, Renato Carpentieri, Antonio Neiwiller, Claudia Della Seta, Lorenzo Alessandri]

  • F1 The Movie: (2025; Acción, Drama) El mítico piloto Sonny Hayes vuelve de su retiro, persuadido para liderar un equipo de Fórmula 1 en apuros y guiar a su joven promesa, en busca de una nueva oportunidad de éxito. [D: Joseph Kosinski, Kailyn Dabkowski; A: Brad Pitt, Damson Idris, Kerry Condon, Javier Bardem, Kim Bodnia]

  • Mission: Impossible - The Final Reckoning: (2025; Acción, Aventura, Suspense) El agente Ethan Hunt continúa su misión de impedir que Gabriel controle el tecnológicamente omnipotente programa de IA conocido como "the Entity". [D: Rebecca Sheridan, Christopher McQuarrie; A: Tom Cruise, Hayley Atwell, Ving Rhames, Simon Pegg, Esai Morales]

  • The Gorge: (2025; Romance, Ciencia ficción, Suspense) Mandan a dos operativos de élite a vigilar lados opuestos de un misterioso abismo y allí intiman desde la distancia, pero deberán aunar fuerzas para sobrevivir al mal que esconde el abismo. [D: Scott Derrickson, Jeff Habberstad; A: Miles Teller, Anya Taylor-Joy, Sigourney Weaver, Sope Dirisu, William Houston]

  • The Amateur: (2025; Suspense, Acción) Charlie Heller es un brillante pero introvertido decodificador de la CIA que trabaja en una oficina en el sótano de la sede de Langley. Su vida cambia radicalmente cuando su esposa muere en un ataque terrorista en Londres. Cuando sus supervisores se niegan a tomar cartas en el asunto, toma las riendas y se embarca en un peligroso viaje por todo el mundo para localizar a los responsables. Su inteligencia será el arma definitiva para escapar y llevar a cabo su venganza. [D: James Hawes, Svetlana Punte; A: Rami Malek, Holt McCallany, Danny Sapani, Rachel Brosnahan, Michael Stuhlbarg]

  • Titane: (2021; Drama, Suspense, Terror) Un joven con la cara magullada es descubierto en un aeropuerto. Dice llamarse Adrien Legrand, un niño que desapareció hace 10 años. Para su padre, Vincent, esto supone el final de una larga pesadilla y lo lleva a casa. Simultáneamente, se suceden una serie de horribles asesinatos en la región. [D: Bénédicte Kermadec, Claire Corbetta-Doll; A: Vincent Lindon, Agathe Rousselle, Garance Marillier, Laïs Salameh, Mara Cissé]

  • Anora: (2024; Drama, Comedia, Romance) Anora, una joven prostituta de Brooklyn, tiene la oportunidad de vivir una historia de Cenicienta cuando conoce e impulsivamente se casa con el hijo de un oligarca. Cuando la noticia llega a Rusia, su cuento de hadas se ve amenazado, ya que los padres parten hacia Nueva York para intentar conseguir la anulación del matrimonio. [D: Sean Baker, Albert Rudnitsky; A: Mikey Madison, Марк Эйдельштейн, Юра Борисов, Karren Karagulian, Vache Tovmasyan]

  • Civil War: (2024; Bélica, Acción, Drama) En un futuro cercano, donde América está sumida en una cruenta guerra civil, un equipo de periodistas y fotógrafos de guerra emprenderá un viaje por carretera en dirección a Washington DC. Su misión: llegar antes de que las fuerzas rebeldes asalten la Casa Blanca y arrebaten el control al presidente de Estados Unidos. [D: Amber Harley, Craig Comstock; A: Kirsten Dunst, Wagner Moura, Cailee Spaeny, Stephen McKinley Henderson, 李志傑]

  • Levels: (2024; Acción, Ciencia ficción, Suspense) [D: Adam Stern; A: Cara Gee, Peter Mooney, Aaron Abrams, David Hewlett, Amanda Tapping]

  • Love Lies Bleeding: (2024; Crimen, Romance, Suspense) Jackie está decidida a triunfar como culturista y se dirige a Las Vegas para participar en una competición. En su camino, pasa por un pequeño pueblo de Nuevo México donde conoce a Lou, la solitaria gerente del gimnasio local. El padre de Lou es traficante de armas y lleva las riendas de un sindicato del crimen. Jackie y Lou se enamoran. Pero su relación provoca violencia y ambas se ven inmersas en las maquinaciones de la familia de Lou. [D: Rose Glass, Susan E. Fiore; A: Kristen Stewart, Katy O'Brian, Ed Harris, Dave Franco, Jena Malone]

  • Sinners: (2025; Terror, Suspense) Tratando de dejar atrás sus problemáticas vidas, dos hermanos gemelos regresan a su pueblo natal para empezar de nuevo, solo para descubrir que un mal aún mayor les espera para darles la bienvenida. [D: Ryan Coogler, Steve Gehrke; A: Michael B. Jordan, Miles Caton, Hailee Steinfeld, Wunmi Mosaku, Jack O'Connell]

  • The Accountant²: (2025; Crimen, Suspense, Acción) Cuando un viejo conocido es asesinado, Wolff se ve obligado a resolver el caso. Al darse cuenta de que son necesarias medidas más extremas, Wolff recluta a su hermano Brax, distanciado y muy letal, para que le ayude. En colaboración con Marybeth Medina, descubren una conspiración mortal y se convierten en objetivo de una despiadada red de asesinos que no se detendrán ante nada para mantener sus secretos enterrados. [D: Gavin O'Connor, Mariela Comitini; A: Ben Affleck, Jon Bernthal, Cynthia Addai-Robinson, J.K. Simmons, Allison Robertson]

  • The Assessment: (2025; Ciencia ficción, Drama, Suspense) En un futuro cercano, en el que está estrictamente controlado tener hijos, los siete días de evaluación de una pareja para poder ser padres se convierten en una pesadilla psicológica, que les obliga a cuestionarse los principios básicos de su sociedad y lo que significa ser humanos. [D: Fleur Fortuné, Marino Darés; A: Elizabeth Olsen, Himesh Patel, Alicia Vikander, Minnie Driver, Indira Varma]

  • The Brutalist: (2024; Drama) Cuando el visionario arquitecto László Toth y su esposa Erzsébet huyen de la Europa de posguerra en 1947 para reconstruir su legado y ver el nacimiento de la América moderna, sus vidas cambian a causa de un misterioso y adinerado cliente. [D: Brady Corbet, Krisztina Szigeti; A: Adrien Brody, Felicity Jones, Guy Pearce, Joe Alwyn, Raffey Cassidy]

  • The Gift: (2015; Suspense, Misterio, Drama) Las vidas de un joven matrimonio se verán totalmente alteradas después de que un conocido del pasado del marido comience a dejarles misteriosos regalos y se revele un horrible secreto tras veinte años. [D: Michael J. Moore, Matt Haggerty; A: Jason Bateman, Rebecca Hall, Joel Edgerton, Allison Tolman, Tim Griffin]

  • The Substance: (2024; Terror, Ciencia ficción) 'Tú, pero mejor en todos los sentidos'. Esa es la promesa de la sustancia, un producto revolucionario basado en la división celular, que crea un alter ego más joven, más bello, más perfecto. [D: Matthieu de la Mortière, Anne Juin; A: Demi Moore, Margaret Qualley, Dennis Quaid, Edward Hamilton-Clark, Gore Abrams]

  • TRON: Ares: (2025; Ciencia ficción, Aventura) Tercera entrega de la saga "TRON". Cuenta la historia de Ares, un programa muy sofisticado que se envía desde el mundo digital al mundo real en una misión peligrosa y que va a representar el primer encuentro de la humanidad con seres creados por la IA. [D: Joachim Rønning, Donald Sparks; A: Jared Leto, Greta Lee, Evan Peters, Hasan Minhaj, Jodie Turner-Smith]

Predestination

Finalmente, el conteo de pendientes por fecha:

(Dic-2017)    5   2   1
(May-2018)   17   9   2
(Sep-2018)   12  10   3   1
(Mar-2019)   13  13  12   2   1   1
(Ago-2019)   10  10  10   7   2   1
(Feb-2020)        8   8   8   8   1
(Ago-2020)            9   9   9   4
(Ene-2021)                5   5   5   2
(Sep-2021)                    5   5   3
(Sep-2022)                       20  19   5   2
(Jun-2023)                            7   5   2   1
(Abr-2024)                               16  15   7
(Oct-2024)                                   11  11
(May-2025)                                       17
Total:       57  52  45  32  30  37  31  26  30  36
Comentarios Imprimir

Un paso al costado

Hace unos meses tomé la decisión de dejar de ser Presidente de la Asociación Civil de Python Argentina.

Me corro porque tengo ganas de tener más tiempo libre, sacarme cosas de la agenda, y especialmente no tener "la presión" de que determinadas acciones en el grupo dependan de que yo esté ahí.

Lo charlamos, y todo queda en buenas manos, no se preocupen. El nuevo presidente es Lecovi (previamente tesorero), y entra Zoe como tesorera para reemplazarlo.

Hay otros movimientos también en la Comisión Directiva (en realidad cuando terminemos de actualizar los papeles a nivel legal), en linea con los cambios que veníamos haciendo estos años: traer gente con ganas de ayudar y que aporten diversidad.

Estoy muy contento con el camino recorrido, levantar la Asociación Civil desde cero, hacerla sustentable, pelear y conseguir que haya diversidad, y dejarla funcionando y ayudando a la Comunidad en general y de Python en particular.

También estoy muy contento de haber dejado un recambio, y tener la "fuerza" de soltar y dejar que hagan lo que quieran con todo lo que hay; es de ustedes ahora, decidan qué viaje quieren y vayan a por ello.

La grupal del PyCamp 2025

Más allá de la frase hecha, el paso es "al costado", no atrás ni lejos. Vuelvo al llano del grupo de PyAr, sin ningún rol específico dentro de la Asociación Civil. Voy a estar dando vueltas, ayudando en el grupo de Infra, con la organización de los PyCamps, etc.

Pero más relajado.

Comentarios Imprimir