RSS Julia Evans

El sitio web personal de Julia Evans es un tesoro de contenido reflexivo y atractivo, centrado principalmente en la tecnología, la ingeniería de software y el aprendizaje. Evans, una destacada ingeniera de software, utiliza su plataforma para compartir su amplio conocimiento a través de detalladas entradas de blog, ilustraciones fascinantes y anécdotas personales. Su estilo de escritura es accesible y humorístico, lo que hace que incluso los temas técnicos complejos sean comprensibles para un amplio público. El sitio web cuenta con artículos sobre varios temas, incluyendo internos de Linux, lenguajes de programación y técnicas de depuración. La pasión de Evans por la tecnología y su capacidad para explicar conceptos intrincados de manera clara brillan a través de su trabajo, inspirando y educando a los lectores. Ya seas un desarrollador experimentado o estés recién comenzando tu camino de codificación, el sitio web de Julia Evans ofrece valiosas perspectivas y una visión renovadora del mundo de la ingeniería de software.

Hilo de notas

Importar una biblioteca de frontend de JavaScript sin un sistema de compilación

El autor prefiere escribir JavaScript sin un sistema de compilación y comparte su experiencia al importar bibliotecas sin utilizar un sistema de compilación. Explica los tres principales tipos de archivos JavaScript que una biblioteca podría proporcionar: archivos de variables globales "clásicas", módulos ES y módulos CommonJS. El autor demuestra cómo encontrar los archivos en la compilación de NPM de una biblioteca y discute el uso de importmaps para utilizar módulos ES en el navegador. También menciona el uso de esm.sh para convertir módulos CommonJS en módulos ES. El autor ofrece ejemplos de utilizar Chart.js, @atcute/oauth-browser-client y @atproto/oauth-client-browser, discutiendo los diferentes enfoques para cada uno. Nota que el uso de importmaps requiere soporte del navegador, lo cual podría ser una preocupación para los navegadores más antiguos. El autor también menciona el uso de esbuild como una alternativa a importmaps. Finalmente, resume los tres tipos de archivos JavaScript y cómo identificar y utilizarlos.

Nueva microblog con TILs

El autor creó una nueva sección en su sitio llamada 'TIL' (Hoy Aprendí) para guardar herramientas y hechos interesantes que publica en las redes sociales. El objetivo es tener un lugar para almacenar estos datos sin tener que escribir un artículo completo en el blog. El autor suele publicar 'cosas geniales' en Mastodon y Bluesky, pero no tenía un lugar para llevar un registro de ellas. Esta nueva sección se inspiró en el blog TIL de Simon Willison, pero los posts del autor son mucho más cortos. El autor creó una nueva carpeta para la sección TIL, agregó estilos personalizados y configuró un feed RSS separado. La sección TIL es principalmente para el uso del autor, como una forma de llevar un registro de enlaces y herramientas útiles. El autor ha estado utilizando la sección durante un par de semanas y ha encontrado que funciona bien. El autor es un fanático de la idea 'POSSE' (publicar en tu propio sitio, sindicar en otros lugares), pero encuentra más fácil identificar categorías específicas de contenido que quiere mantener en su propio sitio. El autor tiene listas de correo electrónico y feeds RSS para sus artículos del blog y cómics, y puede agregar un resumen de los posts TIL a su lista de correo electrónico. El autor prefiere mantener algunos contenidos efímeros, como encuestas y chistes, y solo archiva categorías específicas de contenido.

Caracteres de control ASCII en mi terminal

El autor explora el concepto de códigos de control en la terminal, como Ctrl-A, Ctrl-C y Ctrl-W, y cómo funcionan. Hay 33 caracteres de control ASCII, que se pueden categorizar en códigos manejados por el controlador de terminal del sistema operativo, códigos que corresponden a pulsaciones de teclas literales y códigos utilizados por readline. El autor señala que no hay una estructura real para determinar qué códigos están en qué categorías, ya que evolucionaron orgánicamente. Solo hay 33 códigos de control, lo que significa que si desea utilizar Ctrl-1 como atajo de teclado, no tiene sentido, ya que es lo mismo que presionar 1. El autor también señala que Ctrl+Shift+C no es un código de control y su comportamiento depende del emulador de terminal. Los nombres oficiales ASCII para los códigos de control no son muy útiles, ya que originalmente se definieron para máquinas de telégrafo y desde entonces se han reutilizado. El autor encuentra difícil utilizar Ctrl-M y Ctrl-I como atajos de teclado, ya que son equivalentes a Enter y Tab, respectivamente. El autor proporciona un script de Python para identificar qué códigos de control se envían al presionar varias combinaciones de teclas. El autor señala que algunos códigos de control, como Ctrl-W y Ctrl-U, se pueden manejar de manera diferente dependiendo de si la terminal está en modo canónico o no canónico. Finalmente, el autor reconoce que hay muchas salvedades y conflictos cuando se trata de códigos de control, y que no toda esta información es necesariamente útil en la práctica.

Utilizando menos memoria para buscar direcciones IP en Mess With DNS

El autor de Mess With DNS estaba experimentando problemas con el programa que se quedaba sin memoria y era eliminado por falta de memoria (OOM), lo que llevaba a problemas con el script de respaldo. Para solucionar esto, el autor decidió intentar hacer que Mess With DNS utilizara menos memoria. El programa carga una base de datos de direcciones IP en memoria, lo que estaba utilizando alrededor de 117MB de memoria. El autor probó tres enfoques diferentes para reducir el uso de memoria. El primer enfoque fue utilizar SQLite para almacenar los datos en disco, lo que resolvió el objetivo inicial de memoria pero tuvo problemas con el almacenamiento de direcciones IPv6 y fue 500 veces más lento que la búsqueda binaria original. El segundo enfoque fue utilizar un trie, pero utilizó más memoria y fue más lento que la búsqueda binaria original. El tercer enfoque fue hacer que el arreglo utilizara menos memoria mediante la deduplicación de los campos Nombre y País, lo que redujo el uso de memoria de 117MB a 65MB, y luego cambiar a netip.Addr en lugar de net.IP, lo que ahorró otros 20MB de memoria, llevando el total a 46MB. El autor pudo ahorrar un total de 70MB de memoria.