Category: Desarrollo

FLAME: Un modelo de lenguaje pequeño para fórmulas de hojas de cálculo

2025-01-22
FLAME: Un modelo de lenguaje pequeño para fórmulas de hojas de cálculo

Los modelos de lenguaje grandes son costosos de entrenar e implementar para ayudar en la creación de fórmulas de Excel. Este artículo presenta FLAME, un modelo basado en Transformer entrenado exclusivamente en fórmulas de Excel. Con solo 60 millones de parámetros y una fracción de los datos de entrenamiento utilizados por modelos más grandes, FLAME logra un rendimiento competitivo o incluso superior en tareas de reparación, finalización y recuperación de fórmulas en comparación con modelos como Codex y CodeT5. Esto se atribuye a sus nuevos objetivos de preentrenamiento y tokenizador específico de Excel.

Desarrollo

Un año después de abandonar React: el éxito de la renderización del lado del servidor de Scholarly

2025-01-22

Scholarly, una empresa de rápido crecimiento, ha mantenido una pila tecnológica notablemente simple: Rails, Stimulus y MySQL, complementados por Turbo y ActionCable para una mayor interactividad. Su experiencia después de un año de abandonar React demuestra que este enfoque de renderización del lado del servidor mejora significativamente la eficiencia de las pruebas, la velocidad de la aplicación y la productividad del desarrollador. En comparación con los front-ends JS complejos, este enfoque ligero reduce los costos de mantenimiento del código, minimiza los riesgos y permite al equipo entregar valor más rápidamente, centrándose en los objetivos principales del negocio.

Evo: Control de versiones reimaginado

2025-01-22
Evo: Control de versiones reimaginado

Evo es un sistema moderno de control de versiones, priorizando el uso sin conexión, diseñado para simplificar los flujos de trabajo de desarrollo y mejorar la colaboración en equipo. Dile adiós a las complejas ramificaciones de Git y a los frustrantes conflictos de fusión. Evo utiliza espacios de trabajo en lugar de ramas, admite la fusión inteligente de archivos JSON y YAML, y ofrece autenticación integrada y firma de confirmación opcional. Su filosofía principal es la simplicidad, la eficiencia y la fiabilidad. Construido con Go, admite archivos grandes y permisos granulares.

Desarrollo alternativa a git

La Esencia de las Abstracciones Exitosa: Aislando la Complejidad

2025-01-22
La Esencia de las Abstracciones Exitosa: Aislando la Complejidad

En el desarrollo de software, la complejidad es inevitable, pero se puede contener. Chris Krycho argumenta que la clave para las abstracciones exitosas radica en confinar la complejidad a áreas bien definidas. Usa ejemplos como el verificador de préstamos de Rust, que aísla la complejidad de la seguridad de memoria dentro de su sistema de tipos, y TypeScript, que ilumina y gestiona la complejidad existente a través de tipos. Esto refleja la filosofía de los microservicios, donde los servicios individuales permanecen simples mientras que la complejidad general se gestiona. El autor afirma que la abstracción exitosa no consiste en eliminar la complejidad, sino en aislarla y controlarla eficazmente, mejorando así la eficiencia del desarrollo y la calidad del código.

Nubes fotorrealistas en 10 líneas de código: Diseccionando 'Tiny Clouds' de Shadertoy

2025-01-22
Nubes fotorrealistas en 10 líneas de código: Diseccionando 'Tiny Clouds' de Shadertoy

El shader 'Tiny Clouds' de Shadertoy genera nubes increíblemente realistas usando solo 10 líneas de código. Este artículo profundiza en las complejidades del código, explicando su inteligente marcha de rayos inversa, el muestreo de movimiento browniano fractal (FBM) y las técnicas de mezcla alfa. Revela cómo se logra el renderizado de nubes de alta calidad con un código tan conciso. El autor también explora optimizaciones de código interesantes, como el uso de macros para reducir la longitud y el empleo de una función seno para agregar aleatoriedad para una apariencia más orgánica. El análisis destaca el poder de la codificación eficiente y de algoritmos inteligentes para lograr resultados visuales impresionantes.

Desarrollo

Wine 10.0: Mejor compatibilidad para ejecutar aplicaciones Windows en Linux

2025-01-22
Wine 10.0: Mejor compatibilidad para ejecutar aplicaciones Windows en Linux

El equipo de Wine ha lanzado oficialmente Wine 10.0, que representa un año de desarrollo intensivo con más de 6000 cambios. Esta versión estable introduce importantes actualizaciones para mejorar el rendimiento, la compatibilidad y la experiencia visual al ejecutar aplicaciones de Windows en Linux (y otras plataformas no Windows). Las mejoras incluyen soporte completo para la arquitectura ARM64EC, emulación x86 de 64 bits, mejor escalado de alta resolución DPI, y actualizaciones en Direct3D y Vulkan.

Principio de Sustitución de Liskov: El Significado Real de la Herencia

2025-01-22
Principio de Sustitución de Liskov: El Significado Real de la Herencia

Este artículo profundiza en el Principio de Sustitución de Liskov (LSP), un principio SOLID a menudo mal entendido. Utilizando el problema clásico rectángulo-cuadrado, ilustra violaciones comunes del LSP: subtipos que no sustituyen completamente los tipos base. El autor aboga por el uso de composición e interfaces en lugar de herencia para evitar violaciones del LSP, proporcionando un ejemplo práctico con el procesamiento de pagos. Se describen las violaciones comunes del LSP, como lanzar excepciones inesperadas y devolver resultados inconsistentes con el tipo base, junto con cómo asegurar el cumplimiento del LSP mediante pruebas de contrato y pre/postcondiciones claras. En definitiva, el artículo enfatiza que el LSP es más que herencia: se trata de compatibilidad conductual y cumplimiento de expectativas. Seguir el LSP conduce a un código más confiable y mantenible.

JReleaser: Lanzamientos de Proyectos sin Problemas

2025-01-21

JReleaser simplifica el proceso de lanzamiento de proyectos, compatible con numerosos lenguajes como Java, Go y Node.js. Crea paquetes fácilmente para varias plataformas (Homebrew, Snapcraft, etc.), los publica en servicios como GitHub y GitLab, e incluso genera registros de cambios automáticamente y anuncia lanzamientos en Twitter. Tanto si usas CLI, Maven, Gradle o Ant, JReleaser optimiza tu flujo de trabajo, permitiéndote concentrarte en el desarrollo.

Sigstore: Asegurando la cadena de suministro de software de código abierto

2025-01-21
Sigstore: Asegurando la cadena de suministro de software de código abierto

Sigstore es un proyecto de código abierto que busca asegurar las cadenas de suministro de software mediante firmas digitales y registros transparentes. Simplifica el proceso de verificación de software, permitiendo a los desarrolladores verificar fácilmente la integridad y el origen del software, previniendo así software malicioso y ataques a la cadena de suministro. La principal fortaleza de Sigstore radica en su facilidad de uso e integración con herramientas existentes, contribuyendo a un ecosistema de software más seguro y confiable.

Adiós, Kamal: Implementando Rails con Dokku

2025-01-21
Adiós, Kamal: Implementando Rails con Dokku

Kamal, de Basecamp, ofrece una solución para implementar Rails en servidores bare metal, pero no es la herramienta más fácil de usar. Este artículo destaca una alternativa más sencilla: Dokku, esencialmente un Heroku autohospedado. El autor proporciona una guía paso a paso para implementar una aplicación Rails usando Dokku, cubriendo la instalación, la creación de la aplicación, la configuración de la base de datos (PostgreSQL), la configuración de las variables de entorno, la configuración del dominio y SSL (con Let's Encrypt), y el uso de un Procfile para los procesos web y de lanzamiento. Una sección adicional presenta la gema Deployless, que automatiza todo el proceso de implementación para una mayor eficiencia.

Desarrollo

La curiosa historia de los anclajes de expresiones regulares: ¿Por qué `$` y `^`?

2025-01-21
La curiosa historia de los anclajes de expresiones regulares: ¿Por qué `$` y `^`?

Esta publicación profundiza en los orígenes históricos del uso de `$` y `^` como anclas de línea en las expresiones regulares. Remontándose al editor de texto QED, `$` inicialmente representaba el final del búfer, posteriormente adaptado por Ken Thompson para significar el final de una línea en regex. La elección de `^` probablemente se debió al conjunto de caracteres limitado de la máquina de escribir Teletype Model 35, con `^` ya presente en ASCII-67. No fue una elección de diseño brillante, sino una consecuencia de las limitaciones de hardware y el conjunto de caracteres de esa época, convirtiéndose en una convención en las expresiones regulares.

Desarrollo

Las fortalezas de los lenguajes de la familia Lisp para facilitar la creación de aplicaciones de bioinformática complejas y flexibles

2025-01-21

Este artículo presenta una justificación para ampliar la presencia de la familia de lenguajes de programación Lisp en la investigación de bioinformática y biología computacional. En pocas palabras, los lenguajes de la familia Lisp permiten a los programadores escribir programas que se ejecutan más rápido que en otros lenguajes. Lenguajes como Common Lisp, Scheme y Clojure facilitan la creación de software potente y flexible que se requiere para dominios complejos y en rápida evolución como la biología. Se destacarán varias características clave importantes que distinguen a los lenguajes de la familia Lisp de otros lenguajes de programación, y se explicará cómo estas características pueden ayudar a los investigadores a ser más productivos y a crear un mejor código.

Foqos: Recupera tu enfoque con NFC

2025-01-21

Foqos es una aplicación de enfoque que aprovecha la tecnología NFC para ayudar a los usuarios a mantenerse concentrados. Crea múltiples perfiles para diferentes escenarios (trabajo, estudio, hora de dormir, etc.). Graba estos perfiles en etiquetas NFC para una activación instantánea con un solo toque: no es necesario desbloquear ni abrir la aplicación. Foqos es gratuito, privado y de código abierto para siempre. Sin suscripciones, seguimiento ni recopilación de datos. Solo enfoque puro.

Notebooks Jupyter y LLMs: Una optimización de costes inesperada

2025-01-21

El autor utilizó LLMs para asistencia en la codificación, inicialmente con una configuración ContinueDev + OpenRouter. Los costes aumentaron inesperadamente. La investigación reveló que los archivos Jupyter Notebook (.ipynb) contienen un contenido oculto significativo (salidas de código, metadatos, imágenes codificadas en base64), lo que lleva a un gran recuento de tokens y al aumento de los costes de llamada del LLM. La solución fue convertir los archivos .ipynb en archivos .py y eliminar las imágenes codificadas en base64. Esto redujo los costes en un 94% y también la latencia. La publicación destaca la importancia de una entrada consciente al usar LLMs y recomienda comprobar los costes regularmente.

Guiado por la belleza de nuestra suite de pruebas: Una historia de Rust, Uxn y rigor de ingeniería

2025-01-21

El verano pasado, el autor lanzó Raven, una implementación independiente de la CPU Uxn y el orquestador Varavara. Recientemente, para mejorar la estabilidad y el rendimiento, el autor construyó una infraestructura de prueba robusta, que incluye CI de GitHub Actions, pruebas de instantáneas, prevención estática de pánico y fuzzing. Esta publicación detalla los desafíos y las soluciones encontradas durante la construcción de estas pruebas, como problemas con la confiabilidad de los ejecutores de Windows y ARM de GitHub Actions y las dificultades en la prueba estática de la ausencia de pánico y en el fuzzing. El autor mejoró con éxito el rendimiento y la confiabilidad de Raven, garantizando la portabilidad entre plataformas. El proceso destaca el poder de Rust, cargo-fuzz e incluso (suspiro) GitHub Actions en la creación de sistemas robustos y correctos.

Desarrollo Pruebas

Maximizar las Instalaciones de Paquetes Alpine: Un Desafío NP-Difícil

2025-01-21

Este artículo describe un experimento para determinar el número máximo de paquetes Alpine Linux que se pueden instalar simultáneamente. El autor analizó los archivos APKINDEX de Alpine, extrayendo las dependencias, conflictos y relaciones de provisión de los paquetes. Estos se tradujeron en restricciones para un solucionador PuLP. El experimento instaló con éxito el 98,5% de los paquetes del repositorio principal y el 97,8% del repositorio principal + comunidad. Esto demuestra la optimización algorítmica de la instalación de paquetes, ofreciendo información sobre la construcción de imágenes de contenedor más ligeras.

Lecciones aprendidas al crear aplicaciones LLM

2025-01-21

Esta publicación resume las lecciones aprendidas al crear aplicaciones utilizando Modelos de Lenguaje Grandes (LLM). Los LLM sobresalen en transformar grandes cantidades de texto en resúmenes concisos; tienen dificultades para generar más texto que la entrada o para confiar en sus datos preentrenados para el razonamiento complejo. Las aplicaciones LLM efectivas deben proporcionar al LLM toda la información necesaria, permitiendo que el LLM realice la condensación de texto. El autor desaconseja el uso de LLM para tareas que requieren experiencia humana (por ejemplo, diagnóstico médico) y enfatiza que los LLM deben aumentar, no reemplazar, a los trabajadores humanos. Evite usar LLM para tareas que se pueden realizar con código regular.

Arreglando un fallo sutil en el comando uname de Apache NuttX RTOS: Las variables estáticas atacan

2025-01-21
Arreglando un fallo sutil en el comando uname de Apache NuttX RTOS: Las variables estáticas atacan

Esta publicación detalla el proceso de depuración de un fallo aparentemente menor en el comando `uname` del Apache NuttX RTOS. El problema inicial: faltaba el hash del commit en la salida. La investigación llevó por un camino sinuoso, que incluyó la inspección de la imagen del kernel, la llamada a `uname` en el inicio del kernel y el desensamblaje de la aplicación. El culpable: una variable estática dañada (`g_version`) responsable de almacenar el hash del commit dentro de las aplicaciones NuttX. Este comportamiento inesperado destacó la importancia de una depuración exhaustiva en sistemas embebidos, enfatizando que incluso anomalías menores pueden señalar problemas más profundos y graves.

Desarrollo

Dokploy: Soluciones de Implementación Sencillas

2025-01-21
Dokploy: Soluciones de Implementación Sencillas

Dokploy es una plataforma de implementación multiservidor de código abierto y fácil de usar, diseñada para simplificar la implementación y gestión de aplicaciones. Admite varios métodos de implementación, incluyendo Nixpacks, Heroku Buildpacks y Dockerfiles personalizados, e integración nativa con Docker Compose. Las características incluyen administración avanzada de usuarios, administración de bases de datos con copias de seguridad, acceso a la API y CLI, y soporte para clústeres Docker Swarm. El monitoreo en tiempo real, las alertas, las numerosas plantillas de código abierto y una comunidad activa mejoran aún más sus capacidades. Ya sea para implementar proyectos pequeños o aplicaciones a gran escala, Dokploy ofrece una solución flexible y eficiente.

Desarrollo

Redis UNLINK vs DEL: Una inmersión profunda en la mecánica interna

2025-01-21
Redis UNLINK vs DEL: Una inmersión profunda en la mecánica interna

Los comandos UNLINK y DEL de Redis eliminan claves, pero sus implementaciones internas difieren. El comando DEL elimina claves sincrónicamente y libera memoria, mientras que el comando UNLINK coloca la eliminación en una cola de fondo para procesamiento asíncrono. La naturaleza 'no bloqueante' de UNLINK no es absoluta; calcula el costo de eliminar un objeto: si el costo es inferior a 64, lo elimina sincrónicamente; de lo contrario, asíncronamente. El artículo profundiza en el código fuente de Redis, explicando los detalles de la implementación de UNLINK y DEL, incluyendo el cálculo de ranura de clave, la desvinculación en dos fases y la eliminación asíncrona, y discute el papel de LAZYFREE_THRESHOLD.

Desarrollo

Fatiga de Frameworks: Por qué los desarrolladores están enojados con las nuevas tecnologías

2025-01-21
Fatiga de Frameworks: Por qué los desarrolladores están enojados con las nuevas tecnologías

El flujo constante de nuevos frameworks de JavaScript, desde Svelte hasta Solid y Qwik, ha dejado a los desarrolladores exhaustos. Cada uno promete una velocidad increíble y un rendimiento mejorado, pero los desarrolladores se encuentran en un ciclo perpetuo de aprendizaje, consumiendo tiempo y energía valiosos. Esto ha generado debates acalorados, con algunos argumentando que los nuevos frameworks reinventan la rueda, mientras que otros expresan temores sobre la seguridad laboral y la obsolescencia de las habilidades existentes. El artículo sugiere que la ira de los desarrolladores hacia los nuevos frameworks es un mecanismo de autodefensa derivado de las ansiedades sobre las perspectivas de carrera futuras. Comprender esta perspectiva puede fomentar una evolución más saludable de la industria.

Revuelo en la comunidad Perl: Nuevo podcast, taller y desafíos semanales

2025-01-21
Revuelo en la comunidad Perl: Nuevo podcast, taller y desafíos semanales

La comunidad Perl está llena de noticias emocionantes. Se lanzó un nuevo podcast, "The Underbar", con las últimas novedades de Perl. El Taller Alemán de Perl/Raku se llevará a cabo en Múnich, ofreciendo una excelente oportunidad para que los desarrolladores se conecten y aprendan. El Desafío Semanal, una popular competencia de codificación, aseguró patrocinio por otro año, brindando a los entusiastas de Perl ejercicios de programación semanales. El boletín informativo de esta semana también incluye actualizaciones de varios módulos Perl y artículos que cubren temas diversos, como la creación de música MIDI, el procesamiento de datos de geolocalización y el análisis de rendimiento.

OpenSSL Rechaza la API QUIC: ¿Un Obstáculo para la Adopción de HTTP/3?

2025-01-21
OpenSSL Rechaza la API QUIC: ¿Un Obstáculo para la Adopción de HTTP/3?

OpenSSL, la biblioteca TLS más popular, ha rechazado añadir una API QUIC a sus próximas versiones, lo que supone un obstáculo significativo para la adopción generalizada de HTTP/3. A pesar de una solicitud de extracción de la comunidad (PR8797) que ofrecía las API necesarias, el comité de gestión de OpenSSL decidió construir una pila QUIC completa desde cero, un proceso que se espera que tarde varios años. Esta decisión ha generado frustración en la comunidad, ya que existen bibliotecas QUIC maduras. Microsoft y Akamai crearon quictls, un fork de OpenSSL con la API QUIC, como solución alternativa. Sin embargo, esta no es una solución sostenible, dejando el futuro de la adopción de HTTP/3 incierto debido a la decisión de OpenSSL.

Desarrollo

¿Debería Go 2 deshacerse del paquete `context`?

2025-01-21

El paquete `context` de Go, si bien resuelve el problema de cancelación de goroutines, lo hace a costa de la legibilidad y el mantenimiento del código, extendiéndose como un virus por las bases de código. El autor argumenta que `context` es excesivamente complejo, tiene demasiados métodos de interfaz y el uso de `ctx.Value` presenta numerosos problemas y es ineficiente. Propone que Go 2 debería abordar directamente la cancelación de goroutines a nivel de lenguaje, proporcionando una solución más simple, eficiente y no intrusiva.

Migración de AWS App Mesh a Amazon ECS Service Connect

2025-01-21
Migración de AWS App Mesh a Amazon ECS Service Connect

AWS está retirando el servicio AWS App Mesh el 30 de septiembre de 2026. Esta publicación detalla las estrategias para migrar de App Mesh a Amazon ECS Service Connect, un servicio gestionado que ofrece una mayor fiabilidad y capacidad de observación para los microservicios en contenedores. Se destacan las principales diferencias entre los dos servicios, incluyendo las comprobaciones de estado integradas, la detección de valores atípicos y la integración mejorada con CloudWatch. Se recomienda una estrategia de despliegue azul/verde para minimizar el tiempo de inactividad durante la migración. El artículo también compara características como el enrutamiento de tráfico, la capacidad de observación, la seguridad y el uso compartido de recursos.

Dibujando banderas del mundo con la biblioteca de gráficos Turtle de Python

2025-01-21

Esta publicación detalla el recorrido del autor al usar la biblioteca de gráficos Turtle de Python para dibujar banderas de varios países analizando archivos SVG. Comenzando con un ejercicio simple de dibujo en Java, el autor progresó a una implementación de análisis SVG más compleja usando Python y Turtle. Superó varios desafíos, incluyendo la transformación de coordenadas, el renderizado de curvas de Bézier y la aplicación de estilo. El autor dibujó con éxito un gran número de banderas, incluyendo algunas que antes se consideraban 'imposibles', como la bandera de Gales. Aunque algunos problemas siguen sin resolverse, esta publicación muestra las habilidades de programación y la persistencia del autor.

Desarrollo

Guitaraoke: Automatizando la generación de acordes para videos de karaoke

2025-01-21
Guitaraoke: Automatizando la generación de acordes para videos de karaoke

Para mejorar su noche mensual de Guitaraoke, Dylan Beattie construyó un sistema que muestra automáticamente los acordes de las canciones en videos de karaoke. Utiliza el plugin Vamp para extraer información de acordes del audio, luego ImageSharp y FFMpegCore para generar una superposición de video transparente con los acordes, finalmente componiendo esto en el video original. Esto implica análisis de audio, procesamiento de imágenes y composición de video, lo que resulta en la visualización de acordes en tiempo real para guitarristas. Las mejoras futuras incluyen la detección automática de ritmos y el procesamiento por lotes.

Ruff: Un Linter y Formateador Python Extremadamente Rápido

2025-01-21
Ruff: Un Linter y Formateador Python Extremadamente Rápido

Ruff es una herramienta de lint y formateo de código Python escrita en Rust, de 10 a 100 veces más rápida que herramientas existentes como Flake8 y Black. Ofrece paridad con herramientas populares, con caché integrada y corrección automática de errores. Con más de 800 reglas integradas y soporte para pyproject.toml, Ruff es utilizado por importantes proyectos de código abierto como FastAPI y Pandas, convirtiéndose en un cambio de juego para el desarrollo en Python.

Desarrollo

WordPress en Crisis: Las Acciones de Mullenweg Sacuden los Cimientos

2025-01-21
WordPress en Crisis: Las Acciones de Mullenweg Sacuden los Cimientos

Un conflicto entre Matt Mullenweg, creador de WordPress, y la empresa de hosting WP Engine está amenazando el futuro de WordPress. Las acciones agresivas de Mullenweg, incluyendo la prohibición de WP Engine, ofertas de paquetes de despido para empleados disidentes y la reducción drástica de contribuciones al proyecto de código abierto, han provocado una reacción negativa de la comunidad y una demanda judicial. Esta turbulencia socava la estabilidad de WordPress y genera preocupaciones sobre su dirección futura, incluso empujando a usuarios y desarrolladores a buscar alternativas. La cuestión central es un choque entre la gobernanza de código abierto y los intereses comerciales, con implicaciones de gran alcance para la industria tecnológica.

Meta lanza la aplicación de edición de vídeo 'Edits' para aprovechar la ausencia de CapCut

2025-01-20
Meta lanza la aplicación de edición de vídeo 'Edits' para aprovechar la ausencia de CapCut

Tras la eliminación de la aplicación de edición de vídeo CapCut, de ByteDance, de las tiendas de aplicaciones, Meta anunció el domingo su nueva aplicación de edición de vídeo, Edits. El jefe de Instagram, Adam Mosseri, reveló que la aplicación se lanzará en iOS el próximo mes, seguida de Android. Edits cuenta con un conjunto de herramientas creativas, que incluyen pestañas de inspiración y seguimiento de ideas, y una cámara de alta calidad, además de la capacidad de compartir borradores. La jugada de Meta se considera una forma de capitalizar el vacío de mercado dejado por la ausencia de CapCut, reflejando lanzamientos estratégicos anteriores como Instagram Reels y Threads.

Desarrollo Edición de Vídeo
1 2 180 181 182 184 186 187 188 214 215