Odisea online de un ingeniero de software iraní: sanciones y censura

2025-09-23
Odisea online de un ingeniero de software iraní: sanciones y censura

Un ingeniero de software iraní relata sus experiencias con Microsoft eliminando su aplicación, Notion borrando sus datos y otras prohibiciones de sitios web debido a sanciones. Él enfatiza que estas empresas no son maliciosas, sino que simplemente siguen las reglas. Sin embargo, aboga por más empatía, pidiendo que se considere el impacto humano de estas regulaciones. Concluye expresando su insatisfacción con la situación actual en Irán y apoyando los movimientos por la libertad.

Leer más
Desarrollo irán

Los LLM democratizan la creación de compiladores: de recetas a flujos de trabajo

2025-09-01
Los LLM democratizan la creación de compiladores: de recetas a flujos de trabajo

Este artículo presenta una nueva perspectiva sobre las tareas cotidianas como procesos de compilación. Usando la cocina como ejemplo, el autor compara las recetas con programas y el proceso de cocción con la ejecución de la compilación. La llegada de los Grandes Modelos de Lenguaje (LLM) hace que la creación de compiladores específicos de dominio sea increíblemente fácil, incluso para aquellos sin experiencia en programación. Con los LLM, podemos transformar las tareas cotidianas - rutinas de ejercicios, procesos de negocios, incluso la creación musical - en entornos programables, aumentando la eficiencia y profundizando nuestra comprensión de los sistemas cotidianos. Esto no es solo una innovación tecnológica, sino también un cambio de pensamiento, extendiendo el concepto de compiladores del código a todos los aspectos de la vida.

Leer más
IA

Por qué eliminé mi cuenta de Steam después de 20 años

2025-07-09
Por qué eliminé mi cuenta de Steam después de 20 años

Un jugador de PC veterano eliminó su cuenta de Steam después de 20 años, citando el cliente de Steam cada vez más inflado, las promesas de DRM rotas que llevan a la incompatibilidad con hardware antiguo y las API propietarias que dificultan la compatibilidad y las funciones del juego. El autor compara Steam con Epic, Microsoft Store y GOG, argumentando que estas alternativas ofrecen un mejor DRM y experiencia de usuario. Se sugieren los servicios de suscripción o la compra en otras plataformas como alternativas para una mejor experiencia de juego y propiedad del software.

Leer más
Juegos

El Tamaño Cada Vez Mayor de los Modelos de Lenguaje Grandes

2025-07-02
El Tamaño Cada Vez Mayor de los Modelos de Lenguaje Grandes

Este artículo rastrea la evolución del tamaño de los modelos de lenguaje grandes (LLM). Desde los 1.61B de parámetros del GPT-2 hasta los 2T de parámetros del Llama-4, el tamaño del modelo ha crecido exponencialmente. El artículo detalla los conteos de parámetros, los tamaños de los datos de entrenamiento y las características arquitectónicas de los modelos clave, incluidos los modelos densos y los modelos Mixture-of-Experts (MoE). El surgimiento de las arquitecturas MoE ha hecho posible entrenar y usar modelos de mayor escala. Sin embargo, el crecimiento en el tamaño del modelo también ha traído nuevos desafíos, como el sesgo de datos y la interpretabilidad del modelo. El artículo concluye explorando las direcciones futuras del desarrollo de LLM y aboga por más investigaciones para concentrarse en el desarrollo de motores puros de continuación de texto, en lugar de simplemente buscar puntuaciones altas en las pruebas de evaluación comparativa.

Leer más

S-expr: Un analizador de S-expresiones peculiar

2025-06-18
S-expr: Un analizador de S-expresiones peculiar

S-expr es una biblioteca de análisis de S-expresiones con extensiones únicas para la sintaxis de S-expresiones. Admite cadenas y comentarios de una y varias líneas, e introduce un concepto novedoso llamado "bloques transpuestos". Los bloques transpuestos permiten que el código se escriba con filas y columnas intercambiadas, mejorando la legibilidad para expresiones anidadas complejas. Este diseño tiene como objetivo equilibrar la simplicidad de las S-expresiones con una mejor legibilidad y expresividad del código. Si bien es más complejo que el Lisp tradicional, prioriza el equilibrio entre simplicidad y facilidad de uso.

Leer más

Implementando números complejos y FFT solo con tipos de datos (sin flotantes)

2025-05-25
Implementando números complejos y FFT solo con tipos de datos (sin flotantes)

Este artículo presenta un método para implementar números complejos y la Transformada Rápida de Fourier (FFT) utilizando solo tipos de datos algebraicos, sin depender de números de punto flotante. El autor comienza explicando las ventajas de usar tipos de datos algebraicos para la representación numérica y destaca las ineficiencias en las implementaciones tradicionales de FFT. Luego, se muestra una implementación concisa y elegante de enteros y números complejos usando solo tipos de datos algebraicos. Finalmente, se deriva una implementación puramente funcional de FFT compleja, también sin flotantes. Esto se logra utilizando una representación ternaria balanceada para enteros y extendiendo los enteros gaussianos para representar números complejos, eludiendo hábilmente los efectos que impiden la fusión de la aritmética de punto flotante, mejorando así la eficiencia del algoritmo.

Leer más

Un Viaje para Optimizar Consultas a la Base de Datos Cloudflare D1

2025-04-07
Un Viaje para Optimizar Consultas a la Base de Datos Cloudflare D1

Un desarrollador frontend encontró cuellos de botella de rendimiento al usar Cloudflare Workers y la base de datos D1. Al monitorear el panel D1, examinar las instrucciones de consulta y analizar los recuentos de lectura/escritura de filas, identificó varios problemas clave: consultas únicas lentas, escritura por lotes ineficiente, lecturas de filas innecesarias debido a la inclusión de ID en las operaciones de actualización, exploraciones de tabla completa en consultas de conteo, explosiones de producto cartesiano de uniones de varias tablas e inserciones masivas subóptimas. Las soluciones involucraron el uso de operaciones por lotes D1, la exclusión de ID de las actualizaciones, la implementación de paginación basada en cursor, la división de consultas de unión de varias tablas y la optimización de las instrucciones de inserción masiva. Estas optimizaciones mejoraron drásticamente el rendimiento de la consulta, reduciendo el tiempo de ejecución de 78 ms a 14 ms en algunos casos. La experiencia destaca la importancia del monitoreo continuo, la optimización iterativa y las diferencias cruciales entre los problemas de rendimiento del lado del servidor y del lado del cliente.

Leer más

Generador de SHA-1 Vanity: Un Enfoque Inteligente de Cambio de Mayúsculas y Minúsculas

2025-03-31
Generador de SHA-1 Vanity: Un Enfoque Inteligente de Cambio de Mayúsculas y Minúsculas

Este código intenta generar un hash SHA-1 que coincida con el prefijo de destino "20250327" manipulando la capitalización de las palabras en un texto de entrada. Analiza el texto, identifica las palabras mutables y luego itera a través de todas las combinaciones posibles de mayúsculas y minúsculas, calculando el hash y comparándolo con el destino. Si se encuentra una coincidencia, el texto modificado se escribe en un archivo. El programa demuestra un enfoque inteligente de fuerza bruta, utilizando variaciones de mayúsculas y minúsculas para intentar generar un prefijo de hash específico, mostrando una comprensión de algoritmos hash y combinatoria.

Leer más

Modificación de hardware Xfinity XB3: Desactiva el WiFi y ahorra 2 vatios

2025-03-30
Modificación de hardware Xfinity XB3: Desactiva el WiFi y ahorra 2 vatios

Un usuario modificó su módem Xfinity XB3 para ahorrar energía. El XB3, proporcionado con el servicio más barato Xfinity NOW de Comcast, consume 14,9 vatios. Al desmontar el módem y conectar a tierra el pin EN del regulador de voltaje TPS54328, el usuario desactivó el WiFi, reduciendo el consumo de energía a 12,5 vatios, un ahorro de 2 vatios. Si bien la página de administración está brevemente inaccesible después del arranque, la funcionalidad de la red permanece inalterada.

Leer más
Hardware

Acelera paquetes de Ubuntu en un 90%: Una historia de recompilación y asignadores

2025-03-19
Acelera paquetes de Ubuntu en un 90%: Una historia de recompilación y asignadores

Esta publicación detalla cómo recompilar el paquete fuente de jq utilizado por Ubuntu resultó en una asombrosa mejora del rendimiento del 90%. El autor realizó pruebas de rendimiento con un archivo GeoJSON de 500 MB. Simplemente reconstruir el paquete produjo una pequeña pero notable aceleración. Las optimizaciones adicionales incluyeron el uso del compilador clang con mejores indicadores (-O3, -flto, -DNDEBUG), lo que proporcionó un aumento del 20%. El cambio al asignador TCMalloc mejoró el rendimiento en otro 40%. Finalmente, el uso de mimalloc, ya sea cargado dinámicamente o integrado durante la reconstrucción, resultó en el notable aumento de velocidad del 90%. El jq recompilado con mimalloc es casi el doble de rápido que el paquete Ubuntu predeterminado en varias pruebas.

Leer más

Un Enfoque Jerárquico para Lenguajes de Programación y Desarrollo Multilingüe

2025-03-16
Un Enfoque Jerárquico para Lenguajes de Programación y Desarrollo Multilingüe

El autor propone una jerarquía de cuatro niveles para clasificar los lenguajes de programación en función del tipo y la compilación: interpretados con tipado dinámico (por ejemplo, JavaScript), interpretados con tipado estático (por ejemplo, TypeScript), compilados con administración automática de memoria (por ejemplo, Go) y compilados con administración manual de memoria (por ejemplo, Rust). El autor argumenta que elegir el nivel correcto para diferentes necesidades es crucial y propone un conjunto de lenguajes que comprende Rust, RustGC (un híbrido de nivel 2/3) y RustScript (nivel 4) para mejorar la eficiencia del desarrollo y el rendimiento del código. Este conjunto comparte sintaxis y permite llamadas sin interrupciones entre diferentes niveles, abordando problemas de mantenimiento de diferentes conjuntos de herramientas y capacitación del personal. El objetivo final es mejorar la eficiencia de la programación y la calidad del código.

Leer más

Svelte5: ¿No tan bueno como se anunciaba?

2025-03-08
Svelte5: ¿No tan bueno como se anunciaba?

El lanzamiento de Svelte5 promocionó su sistema de estado reactivo, "runes", como una gran mejora. Sin embargo, este autor encontró varias limitaciones en proyectos reales. Runes están restringidos a componentes Svelte o archivos .svelte.ts, requiriendo que el estado se envuelva en funciones para la reactividad y ofreciendo soporte incompleto para clases. Las características de plantilla de Svelte carecen de equivalentes en JavaScript, haciendo que las pruebas de propiedades enlazables sean engorrosas. Los componentes de formulario son incontrolados por defecto, lo que lleva a problemas potenciales. Si bien Svelte5 intenta imitar React/Vue, se queda corto en usabilidad y completitud de funciones, lo que lleva al autor a considerar SolidJS como una alternativa superior.

Leer más
Desarrollo Estado Reactivo

Construyendo una Micro Biblioteca de Bucle de Eventos Asíncronos desde Cero

2025-02-28
Construyendo una Micro Biblioteca de Bucle de Eventos Asíncronos desde Cero

Este proyecto implementa una biblioteca de bucle de eventos asíncronos mínima, pero con todas las funciones, desde cero con fines educativos. Demuestra los conceptos básicos de la programación asíncrona: programación y gestión de tareas, multiplexación de E/S con sockets no bloqueantes, funciones de tiempo de espera y suspensión, cancelación de tareas y concurrencia basada en corrutinas. La biblioteca utiliza las corrutinas basadas en generadores de Python y el módulo `select` para la multiplexación de E/S, proporcionando un modelo simplificado de cómo funcionan internamente los frameworks asíncronos modernos como `asyncio`. Aprenda la magia detrás de `await`, cómo funciona `yield from` y cómo se comunican las corrutinas con el bucle de eventos.

Leer más

El viaje de reescritura del compilador Roc: De Rust a Zig

2025-02-04
El viaje de reescritura del compilador Roc: De Rust a Zig

El equipo del compilador del lenguaje de programación Roc se ha embarcado en una empresa significativa: reescribir su compilador Rust de 300.000 líneas en Zig. Esto no es una simple portabilidad de lenguaje; es una jugada estratégica para abordar los lentos tiempos de compilación de Rust y la deuda técnica acumulada. La reescritura mejorará el analizador sintáctico, el formateador, la canonización, la generación de documentación, la inferencia de tipos y la generación de código LLVM, entre otros módulos. También planean usar un intérprete para el backend de desarrollo, acelerando significativamente el ciclo de desarrollo. El objetivo final es mejorar la velocidad de compilación, aumentar la mantenibilidad y lanzar Roc 0.1.0.

Leer más
Desarrollo reescribir

Los LLM fracasan en un rompecabezas de ajedrez simple: una prueba curiosa

2025-01-26
Los LLM fracasan en un rompecabezas de ajedrez simple: una prueba curiosa

El autor prueba varios LLM nuevos con un rompecabezas de ajedrez simple que presenta subpromoción y la regla de los 50 movimientos. A pesar de la orientación, la mayoría de los LLM no logran resolverlo, destacando las limitaciones en el razonamiento lógico y el conocimiento específico del dominio. Esta prueba rápida sirve como un punto de referencia, provocando discusiones sobre si los LLM alguna vez podrán alcanzar el nivel de maestro en el ajedrez sin entrenamiento especializado. La simplicidad del rompecabezas y el enfoque en una técnica menos común lo convierten en una sonda perspicaz en las capacidades del LLM.

Leer más

Intento de phishing sofisticado: casi me atrapan

2025-01-24
Intento de phishing sofisticado: casi me atrapan

Este relato detallado describe un sofisticado ataque de phishing donde el perpetrador se hizo pasar por un empleado de Google, utilizando llamadas telefónicas y correos electrónicos para engañar al autor y que restableciera su cuenta. Aprovechando una vulnerabilidad en Google Workspace y utilizando el dominio g.co, el atacante imitó de forma convincente al soporte de Google, casi teniendo éxito. El autor finalmente descubrió la estafa y comparte su experiencia como una advertencia, destacando la importancia de la concienciación sobre la ciberseguridad y la vigilancia contra las técnicas avanzadas de phishing.

Leer más
Tecnología

Ataque de desanonimización de 0 clics que afecta a Signal, Discord y cientos de plataformas

2025-01-21
Ataque de desanonimización de 0 clics que afecta a Signal, Discord y cientos de plataformas

Un estudiante de secundaria de 15 años, Daniel, descubrió un ataque de desanonimización de 0 clics que explota el mecanismo de caché de Cloudflare. Esta vulnerabilidad permite a los atacantes determinar la ubicación de los usuarios en un radio de 250 millas enviando una carga maliciosa a aplicaciones vulnerables como Signal, Discord y cientos más. El ataque no requiere interacción del usuario e incluso se puede lograr mediante notificaciones push. Daniel desarrolló una herramienta, Cloudflare Teleport, para demostrar la explotación. Si bien divulgó la vulnerabilidad de manera responsable, las respuestas de las empresas afectadas fueron en gran medida insatisfactorias. Esto destaca los riesgos de seguridad potenciales inherentes al almacenamiento en caché de CDN y subraya la importancia de la concienciación sobre la privacidad del usuario.

Leer más
Tecnología vulnerabilidad

La Caída de Stack Overflow: El Impacto de ChatGPT y un Futuro Incierto

2025-01-08
La Caída de Stack Overflow: El Impacto de ChatGPT y un Futuro Incierto

Un análisis de datos en GitHub muestra una caída asombrosa del 70,7% en las nuevas preguntas en Stack Overflow de marzo de 2023 a diciembre de 2024, cayendo de 87.105 a 25.566. Esto está fuertemente correlacionado con el auge de ChatGPT; desde su lanzamiento, Stack Overflow ha visto casi 83.000 preguntas menos. El autor, un contribuyente de alto nivel de Stack Overflow, describe su propia experiencia de tener preguntas bien formateadas cerradas rápidamente, destacando un posible factor clave en el declive de la plataforma. La drástica disminución en el volumen de preguntas sugiere una trayectoria preocupante, reflejando los niveles vistos en 2009 poco después del lanzamiento, insinuando una posible vida útil de menos de un año.

Leer más

PGP Operacional: Una Guía para la Comunicación Segura por Correo Electrónico

2024-12-24
PGP Operacional: Una Guía para la Comunicación Segura por Correo Electrónico

Esta guía no trata sobre la instalación o el uso de PGP; se trata de usarlo de forma segura. Se hace hincapié en la seguridad operativa más allá de la simple encriptación del contenido del correo electrónico, cubriendo la composición del correo electrónico, el almacenamiento, la gestión de claves y mucho más. Se recomienda redactar correos electrónicos en un editor de texto, evitando guardar borradores en clientes de correo electrónico; generar y destruir claves con frecuencia; evitar publicar claves en servidores de claves; mantener los asuntos de correo electrónico en blanco para minimizar la fuga de metadatos; usar la opción `gpg --throw-keys` durante el cifrado; habilitar el cifrado de forma predeterminada y elegir explícitamente si se desea firmar correos electrónicos. El objetivo es maximizar el potencial de seguridad de PGP.

Leer más

Almacenamiento de clave-valor con respaldo de SQLite: Manipulación de objetos similar a JS y serialización JSON automática

2024-12-22
Almacenamiento de clave-valor con respaldo de SQLite: Manipulación de objetos similar a JS y serialización JSON automática

Un proyecto en GitHub presenta un almacén de clave-valor construido sobre SQLite, permitiendo la manipulación de objetos similar a JavaScript con serialización JSON automática. La función `createDatabaseClient` crea un cliente paralelo con componentes de lector (`rdr`) y escritor (`wtr`) separados. El escritor utiliza proxies para actualizaciones parciales de JSON, mientras que el lector devuelve objetos JavaScript simples. Las pruebas exhaustivas cubren las operaciones CRUD básicas, las actualizaciones anidadas, las eliminaciones y las manipulaciones de matrices.

Leer más

Un caso curioso de importación lenta de USD en Blender

2024-12-22
Un caso curioso de importación lenta de USD en Blender

Un desarrollador encontró tiempos de importación inesperadamente lentos al importar escenas USD en Blender. El análisis de rendimiento reveló que el cuello de botella era la función de ordenación de ID interna de Blender, `id_sort_by_name`. Esta función, que se esperaba que tuviera una complejidad O(N), se degradó a O(N²) debido al esquema de nombres en los archivos USD. Al modificar la convención de nombres y optimizar el algoritmo de ordenación, el desarrollador redujo los tiempos de importación de 4 minutos y 40 segundos a 8 segundos para archivos más pequeños. Sin embargo, el problema subyacente proviene del requisito de Blender para ID ordenados, lo que lleva a sugerencias para reemplazar la lista enlazada con un árbol Trie o una tabla hash. Esta optimización destaca un desafío común en la optimización del rendimiento: identificar y abordar la complejidad inesperada.

Leer más

QEMU obtiene aceleración Vulkan con actualización del controlador VirtIO GPU

2024-12-12
QEMU obtiene aceleración Vulkan con actualización del controlador VirtIO GPU

QEMU versión 9.2.0 y posteriores ahora admite aceleración Vulkan para VirtIO-GPU gracias a los parches de Venus. Esto representa un avance significativo en la representación de gráficos Vulkan para máquinas virtuales QEMU. El artículo detalla el proceso de configuración, incluida la instalación de los paquetes necesarios (núcleo de Linux 6.13+, QEMU 9.2.0+, controladores Vulkan, etc.), la compilación de QEMU desde la fuente y la creación de una imagen de VM. Si bien virt-manager actualmente carece de soporte de configuración Vulkan, los parámetros de línea de comandos ofrecen una solución alternativa. Se proporcionan consejos para la resolución de problemas, junto con notas sobre las limitaciones actuales en virt-manager y libvirt.

Leer más
Desarrollo