Reducir la repetición en httpd.conf con el preprocesador m4 en OpenBSD

En un artículo anterior, el autor explicó cómo migró sus sitios web a un VPS con OpenBSD y mencionó la necesidad de repetir bloques de código casi idénticos en httpd.conf para bloquear rutas maliciosas, ya que httpd carece de macros integradas. En esta nueva publicación detalla cómo resolver esa rep

Introducción amigable a Racket: el dialecto de Lisp para crear lenguajes

Racket es un lenguaje de la familia Lisp nacido en 1995 como PLT Scheme en el grupo de Matthias Felleisen y rebautizado en 2010. Su apuesta diferencial es la programación orientada al lenguaje: si un problema exige su propia sintaxis, Racket permite definirla en cuestión de horas. El artículo recorr

Rhombus 1.1 introduce anotaciones sin macros y nuevos formularios de enlace

Rhombus, el lenguaje de programación de propósito general derivado del ecosistema Racket y orientado a ser fácil de usar y altamente personalizable, ha publicado su versión 1.1. La actualización ya está disponible en el sitio oficial del proyecto e incorpora cambios tanto en el núcleo del lenguaje c

Por qué usar Lisp como objetivo del código generado por IA

Este artículo explica por qué un programador veterano de Common Lisp elige ese lenguaje como destino del código que genera con un modelo de lenguaje, en lugar de recurrir a opciones más populares como Python, TypeScript o Java. La tesis central es que la popularidad de un lenguaje es un mal indicado

Macros en Lisp: cómo escribir tus propias abstracciones

Este capítulo introduce la escritura de macros en Lisp, una herramienta que permite a los programadores crear sus propias abstracciones por encima del lenguaje y la biblioteca estándar. A diferencia de las funciones, las macros operan en tiempo de expansión del código: generan código que después ser

Macros en Emacs Lisp: la belleza de programas que escriben programas

Las macros de Emacs Lisp son piezas de código que reciben formas sin evaluar y devuelven código nuevo, transformándose en pequeños programas que escriben otros programas. Operan en tiempo de expansión, antes de que el programa principal se ejecute, y permiten extender el lenguaje sin tocar el intérp

Cómo revisar la accesibilidad cromática de figuras científicas con ImageJ

La accesibilidad de las figuras científicas para personas con daltonismo es una práctica recomendable en la preparación de manuscritos. El autor describe una macro para ImageJ (publicada en GitHub y prevista para el update site quantixed de Fiji) que permite previsualizar una imagen completa tal com

Implementación de Forth en Lisp mediante macros

Este capítulo de 'Let Over Lambda' culmina una serie de técnicas de macros Lisp aplicadas a la construcción de un intérprete del lenguaje Forth dentro de Lisp. El objetivo no es meramente didáctico: el autor busca mostrar cómo Forth puede replantearse cuando se dispone de la potencia expresiva de Li

Técnicas de Vim para crear arte ASCII sin complementos

Vim, el editor de texto modal, incorpora de serie varias funciones especialmente útiles para dibujar arte ASCII sin recurrir a complementos externos. Este artículo explica, paso a paso, cómo aprovechar esas herramientas integradas para trabajar con figuras formadas por caracteres. La primera técnic

Codex Micro: un teclado físico para gobernar los agentes de OpenAI

OpenAI ha presentado Codex Micro, su primer periférico físico diseñado específicamente para gestionar agentes de inteligencia artificial desde el escritorio. Se trata de un teclado auxiliar de 230 dólares, desarrollado en colaboración con el fabricante especializado Work Louder, que pretende convert

Por qué Lisp merece la pena: extensibilidad, homoiconicidad y macros

Este artículo explica las características que hacen de Lisp un lenguaje de programación singular y por qué aprenderlo puede transformar la manera de pensar de cualquier programador. Lisp, cuyo nombre proviene de LISt Processing, se basa en expresiones simbólicas (s-expr) que pueden ser átomos o list

Pruebas unitarias automatizadas en C++: variables inline y módulos

Este artículo cierra una serie de dos entregas sobre un marco minimalista de pruebas unitarias en C++ distribuido en un único archivo de cabecera. Tras presentar el mecanismo básico basado en macros (test_, fail_, throw_ y nothrow_) en la primera parte, el autor aborda dos problemas pendientes: la v

Rhombus: metaprogramación flexible con sintaxis tipo Python

Rhombus es un lenguaje de programación reciente que combina la potencia de la metaprogramación de Racket con una sintaxis sencilla inspirada en Python, basada en indentación y el delimitador ":". Su núcleo se distribuye bajo licencia MIT o Apache 2.0 y se ejecuta sobre el runtime de Racket, lo que l

Rhombus 1.0: un nuevo lenguaje de programación extensible sobre Racket

Rhombus es un lenguaje de programación de propósito general, funcional, dinámico y extensible que acaba de alcanzar su versión 1.0. Está construido sobre Racket, del que hereda herramientas como el entorno DrRacket y la suite de línea de comandos raco, y se activa simplemente iniciando un módulo con

Array dinámico genérico en C sin struct ni capacidad almacenada

Un desarrollador ha compartido una implementación de array dinámico genérico en C que prescinde de estructuras y del almacenamiento explícito de capacidad. La técnica utiliza un array de dos punteros: el primero guarda la longitud como uintptr_t, y el segundo apunta a los datos. Así, declaraciones c

Por qué deberías probar Janet, un dialecto de Lisp minimalista

En un panorama de lenguajes de programación cada vez más complejos, Janet se presenta como una propuesta singular: un pequeño dialecto de Lisp que combina simplicidad, potencia expresiva y portabilidad. Este artículo del autor del libro 'Janet for Mortals' —publicado en abierto— defiende por qué cua

Rust 1.96.0 introduce nuevos tipos de rango copiables

El equipo de desarrollo de Rust ha anunciado el lanzamiento de la versión 1.96.0, una actualización que mejora la ergonomía y seguridad del lenguaje de programación. Disponible desde el 28 de mayo de 2026, este lanzamiento introduce nuevos tipos de rango en la biblioteca estándar (`core::range`) que

Paul Graham explica por qué Lisp se impone en el desarrollo web moderno

Lisp en Aplicaciones Web: Una Revolución en el Desarrollo de Software El texto de Paul Graham explora por qué Lisp se convirtió en una elección poderosa para desarrollar aplicaciones web, explicando las ventajas técnicas y prácticas que este lenguaje proporciona. Graham начинает с того, что explic

Scheme: repositorio desacoplado para datos

Este artículo presenta un enfoque innovador para la capa de datos en proyectos Scheme, buscando resolver un problema común: el acoplamiento estrecho entre la capa de control y la implementación específica de la base de datos (en este caso, SQLite). El autor, proveniente de un background en lenguajes

Rust en riesgo: Vulnerabilidad pone en alerta a programadores

Un reciente análisis revela una preocupante vulnerabilidad en el ecosistema Rust, un lenguaje de programación en crecimiento, similar a los problemas de seguridad que han afectado a JavaScript. Investigaciones indican que aproximadamente el 17% de los paquetes Rust más populares en crates.io, el rep

Emacs: Nuevo resaltado semántico para código Lisp

El proyecto `lisp-semantic-hl.el` es una extensión para el editor de texto Emacs que mejora significativamente la visualización del código Lisp (tanto Common Lisp como Elisp) a través de un sistema de resaltado de sintaxis semántico. En esencia, el resaltado de sintaxis tradicional colorea palabras

Scheme y 'GOTO': Emulación con Continuaciones

Este artículo explora cómo emular la instrucción `GOTO` en el lenguaje Scheme utilizando continuaciones. `GOTO` es una instrucción de control de flujo que permite saltar a una línea específica de código, algo que Scheme, por diseño, no ofrece directamente. Dijkstra, en su famoso artículo, criticó `G