Lightroom: Movimiento del cursor desata polémica por control

Un usuario de Lightroom ha descubierto y denunciado un comportamiento inusual de la aplicación: el movimiento programático del cursor del ratón sin la intervención del usuario. El descubrimiento, realizado por Marcin Wichary, ha generado un intenso debate sobre el control del usuario y la sacralidad

Statecharts: Modelando sistemas complejos con claridad

Los diagramas de estados (Statecharts) son una herramienta poderosa para modelar y gestionar la lógica de sistemas complejos, especialmente en software. En esencia, son una evolución de los diagramas de estados tradicionales, abordando sus limitaciones, como la 'explosión de estados' que ocurre cuan

La 'pereza' útil: clave para un buen código

Este artículo explora una idea contraintuitiva: la importancia de la "pereza" en el desarrollo de software. Inspirado en la famosa declaración de Larry Wall en "Programming Perl" (el "Camel Book"), el autor argumenta que la verdadera pereza, entendida como la búsqueda de la simplicidad y la abstracc

La web personal: ¿Perdimos algo real?

El artículo de Justin Duke, inspirado en una reflexión de Ryo Lu, aborda la nostalgia por una 'web personal' de antaño, caracterizada por su singularidad, imperfección y la sensación de conexión humana. Muchos lamentan la pérdida de esa autenticidad, atribuyéndola a la optimización para el crecimien

DataFrames: la teoría de categorías revela su estructura

El artículo explora cómo la teoría de categorías puede proporcionar una comprensión más profunda de la estructura interna de las librerías de DataFrames, como pandas. La complejidad de estas librerías, con sus numerosos métodos (a veces más de 200), puede llevar a una memorización superficial de la

Python: El operador que sacudió al lenguaje

Este artículo narra la controvertida introducción del 'walrus operator' (:=) en Python 3.8, un evento que llevó a la renuncia de Guido van Rossum, el creador y líder de facto del lenguaje durante tres décadas. ¿Qué es y por qué es importante? El walrus operator es una nueva forma de asignar valore

Tipos y errores: un análisis de Map.take! en Elixir

Este artículo explora las limitaciones de los sistemas de tipos en lenguajes de programación dinámicos, utilizando como ejemplo la propuesta de una función `Map.take!/2` en Elixir. `Map.take/2` es una función existente en Elixir que extrae un subconjunto de claves de un mapa, ignorando las claves in

IA genera código, ¿aumenta la productividad?

El artículo "Codegen is not productivity" cuestiona la tendencia de celebrar la cantidad de código generado por modelos de lenguaje grandes (LLMs) como una medida de productividad en el desarrollo de software. Si bien los LLMs pueden generar código rápidamente, el autor argumenta que esto no cambia

Logs: Pensar en los usuarios, no solo en programadores

En el desarrollo de software, es común que los programadores se enfoquen en crear mensajes de registro (logs) pensando en su propia conveniencia para depurar y comprender el estado del programa. Sin embargo, un punto crucial, a menudo pasado por alto, es que la mayoría de los mensajes de registro de

C: la API de archivos más eficiente, según expertos

El artículo de maurycyz.com argumenta que C posee la mejor API para la manipulación de archivos, destacando una flexibilidad y eficiencia que carecen otros lenguajes de programación. La clave de esta superioridad reside en la capacidad de C para tratar los archivos como si fueran datos en memoria a

Dada simplifica referencias: una alternativa a Rust

Este artículo del blog explora cómo Dada, un nuevo lenguaje de programación, aborda el manejo de referencias y permisos de una manera innovadora, superando las limitaciones de Rust. Dada introduce un sistema de permisos basado en 'lugares' (places) en lugar de 'tiempos de vida' (lifetimes), lo que s

Programar plantas: el nuevo enfoque de desarrollo

El artículo introduce el concepto de "programación de plantas de interior", acuñado por Ryan Goldstein, como una forma de desarrollo de software personal y específico. No se trata de crear software robusto y listo para producción, sino de escribir pequeñas herramientas para resolver problemas idiosi

Rust: Diseña con Tipos, Evita Validaciones

Este artículo, originalmente escrito en Haskell y ahora adaptado a Rust, introduce un patrón de diseño llamado "Parse, don't Validate" y el diseño impulsado por tipos (Type-Driven Design). La idea central es evitar funciones de validación explícitas y, en su lugar, codificar las restricciones y gara

Picol: intérprete Tcl en C de solo 500 líneas

Picol es un intérprete de lenguaje similar a Tcl, escrito en C por Antirez (conocido por su trabajo en Redis), que se distingue por su tamaño increíblemente pequeño: solo 500 líneas de código. Originalmente creado en 2007, Antirez lo ha puesto a disposición en GitHub como un ejemplo de código C bien

Software redundante: el riesgo del 'efecto plataforma'

El 'efecto plataforma interna' (Inner-Platform Effect) es un patrón de diseño de software, considerado un anti-patrón, que ocurre cuando los arquitectos de sistemas crean soluciones tan personalizables que terminan replicando, de forma imperfecta, la plataforma de desarrollo que están utilizando. En

Vi: Un clásico atado a su origen Unix

Este artículo explora la evolución del editor de texto `vi` y su relación con su sucesor, `vim`. El autor argumenta que la versión original de `vi`, aunque apreciada por algunos por su comportamiento particular, es un producto de su época, concretamente de los sistemas Unix de la década de 1980 con

LLMs vs. OOP: Encapsulación, el Nuevo Desafío

El artículo explora los desafíos que enfrentan los Modelos de Lenguaje Grandes (LLMs) en la implementación de la encapsulación, un principio fundamental de la programación orientada a objetos (OOP). Inspirándose en la visión de Alan Kay, considerado el 'padre' de OOP, el texto critica la práctica co