Category: Desarrollo

Pruebas de accesibilidad automatizadas de Slack: desafíos y triunfos

2025-01-08
Pruebas de accesibilidad automatizadas de Slack: desafíos y triunfos

El equipo de ingeniería de Slack detalla su proceso de implementación de pruebas de accesibilidad automatizadas. Los intentos iniciales de integrar Axe en su biblioteca de pruebas React y el framework Jest fracasaron debido a complejidades. Optaron por Playwright, utilizando funciones y estrategias personalizadas para automatizar con éxito las comprobaciones de accesibilidad e integrarlas en CI/CD. Si bien no lograron ocultar completamente las comprobaciones automatizadas, minimizaron la sobrecarga de los desarrolladores simplificando los flujos de trabajo, mejorando los informes y estableciendo procesos claros. Los planes futuros incluyen una mayor optimización y la exploración de pruebas asistidas por IA.

Streets GL: Un motor de mapas 3D en tiempo real de código abierto

2025-01-07

Streets GL es un potente motor de mapas 3D en tiempo real de código abierto que proporciona a los desarrolladores las herramientas necesarias para construir impresionantes mundos virtuales. Aprovechando WebGL, cuenta con un rendimiento excepcional, representando con fluidez grandes conjuntos de datos geográficos y admitiendo materiales, iluminación y efectos personalizados. Ya sea para crear simuladores de ciudades, mapas de juegos o aplicaciones de RV inmersivas, Streets GL lo gestiona todo. Su naturaleza de código abierto lo convierte en un recurso valioso para la comunidad, constantemente actualizado y mejorado.

Despedido dos veces en un año: La historia de un ingeniero de software

2025-01-07

Un ingeniero de software comparte su experiencia de ser despedido dos veces en un solo año, una vez una semana después del inicio de su baja por paternidad y otra justo antes de Navidad. El artículo detalla la montaña rusa emocional, los pasos prácticos tomados para encontrar un nuevo empleo (actualizaciones de currículum, beneficios por desempleo, estrategias de búsqueda de empleo) y reflexiones sobre el estado actual de la industria tecnológica y la autoestima. Ofrece consejos sobre cómo navegar por los despidos, enfatizando la importancia de la resiliencia, el networking y el aprendizaje continuo.

Desarrollo

Los errores más comunes de los ingenieros en grandes bases de código

2025-01-07

Trabajar con grandes bases de código establecidas es notoriamente difícil. Este artículo comparte una década de experiencia, destacando el error más común y fatal: ignorar los patrones existentes de la base de código y centrarse únicamente en código limpio para una nueva función. Mantener la consistencia es esencial; previene problemas inesperados, ralentiza la degradación de la base de código y permite mejoras futuras. El autor también enfatiza la importancia de comprender la huella de producción del código, ser cauteloso al introducir nuevas dependencias, eliminar código redundante, trabajar en pequeños PR y aprovechar la experiencia del equipo para detectar errores. Aunque desafiante, dominar grandes bases de código es crucial, ya que suelen ser la base de los productos más valiosos de una empresa.

Desarrollo

Enlaces mágicos: ¿Convenientes o catastróficos?

2025-01-07
Enlaces mágicos: ¿Convenientes o catastróficos?

Este artículo critica los diseños de sitios web que dependen exclusivamente de enlaces mágicos de correo electrónico para iniciar sesión. Si bien son seguros, el autor argumenta que este método es inconveniente para los usuarios con varios dispositivos, dificultando el inicio de sesión directo en PC para juegos o portátiles de trabajo y siendo susceptible a retrasos en el correo electrónico. También obliga a los usuarios a acceder a correos electrónicos personales en dispositivos de trabajo, lo que representa riesgos de seguridad. El autor sugiere ofrecer opciones de inicio de sesión más flexibles, como contraseñas o claves de acceso, para mejorar la experiencia del usuario.

HipScript: Ejecuta código HIP y CUDA con WebGPU

2025-01-07

El compilador online HipScript, desarrollado por Ben Schattinger, permite ejecutar código HIP y NVIDIA CUDA directamente en WebGPU. Esto significa que los desarrolladores pueden aprovechar modelos de programación familiares para implementar tareas de computación de alto rendimiento en el navegador, eliminando la necesidad de una portabilidad compleja. Se proporciona código de ejemplo, como el Juego de la Vida, para facilitar el aprendizaje. Este es un desarrollo significativo, desbloqueando el potencial de la computación de alto rendimiento en aplicaciones web.

Desarrollo

OmniAI (YC) Busca Ingeniero Full Stack

2025-01-07
OmniAI (YC) Busca Ingeniero Full Stack

OmniAI, una startup respaldada por Y Combinator, está buscando un ingeniero full-stack con un salario de $125,000 a $175,000 y opciones sobre acciones. Están construyendo una nueva forma de trabajar con datos no estructurados, permitiendo análisis a gran escala que antes eran imposibles. El candidato ideal tiene más de 3 años de experiencia, dominio de Node.js, TypeScript, React/NextJS, Postgres y un profundo conocimiento de LLM y OCR. El proceso de entrevista incluye una entrevista telefónica, una entrevista de diseño de arquitectura y un desafío de codificación in situ.

Desarrollo

Hacki: Un cliente de Hacker News con muchas funciones, desarrollado con Flutter

2025-01-07
Hacki: Un cliente de Hacker News con muchas funciones, desarrollado con Flutter

Hacki es un cliente de Hacker News con muchas funciones, desarrollado con Flutter. Ofrece un conjunto completo de funciones, que incluyen el inicio de sesión en tu cuenta de Hacker News, la navegación por historias en varias categorías, la búsqueda y el envío de historias, el fijado y los favoritos de historias, los comentarios, la participación en encuestas y la lectura sin conexión. También incluye la sincronización entre dispositivos para favoritos y elementos fijados (solo iOS) y el inicio desde el menú para compartir del sistema. Hacki tiene como objetivo proporcionar una forma más cómoda y eficiente de experimentar Hacker News.

Desarrollo

PCalc: Un viaje de 20 años de una aplicación de calculadora

2025-01-07

PCalc, una aplicación de calculadora aparentemente simple, tiene una notable historia de 20 años. Comenzó como un proyecto universitario, inicialmente diseñado como un panel de control de calefacción central. El autor luego lo transformó en una calculadora para programadores, lanzándola como software gratuito en 1992. A través de numerosas iteraciones y puertos de plataforma, PCalc ahora está disponible en iOS, Mac y Apple Watch, incorporando características innovadoras. La historia detrás de él está llena de pasión por la tecnología, conexiones con Apple y un homenaje al fallecido autor de ciencia ficción Douglas Adams.

Adiós a los amplificadores operacionales obsoletos: Una guía para alternativas modernas

2025-01-07
Adiós a los amplificadores operacionales obsoletos: Una guía para alternativas modernas

Este artículo critica los amplificadores operacionales LM741 y LM324/LM358, ampliamente utilizados pero obsoletos, recomendando alternativas modernas superiores y fáciles de usar, como el Microchip MCP6272, MCP6022 y los Texas Instruments OPA2323, TLV3542 y OPA2356. Describe los parámetros cruciales a considerar al elegir un amplificador operacional, incluyendo el rango de tensión de alimentación, la corriente de salida máxima, la E/S rail-to-rail (RRIO), el tipo de etapa de entrada (FET frente a bipolar), el producto ganancia-ancho de banda, la tasa de slew y el ruido. El autor enfatiza que muchos parámetros se exageran a menudo en proyectos de aficionados.

Minimización extrema: Creando un ejecutable multiplataforma de menos de 400 bytes

2025-01-07

Esta entrada de blog detalla trucos de optimización de tamaño del proyecto Cosmopolitan Libc, utilizando ensamblador x86 y técnicas de compilación inteligentes para reducir drásticamente el tamaño del ejecutable. Los métodos principales que se discuten incluyen la codificación de longitud de ejecución, las secciones descentralizadas, la eliminación de código muerto, la codificación δzd, las funciones superpuestas y la optimización de printf. ¿El resultado final? Un ejecutable ELF de menos de 400 bytes que se ejecuta en Linux, FreeBSD, NetBSD y OpenBSD. Esto demuestra el uso eficiente de los recursos y ofrece nuevas perspectivas sobre la escalabilidad de las bases de código grandes.

Motor de ajedrez en 84.688 expresiones regulares

2025-01-07

Nicholas Carlini creó un motor de ajedrez minimax de 2 capas usando la asombrosa cantidad de 84.688 expresiones regulares como proyecto vacacional. Diseñó una máquina virtual basada en expresiones regulares con un conjunto de instrucciones sin ramificaciones, ejecución condicional y SIMD. Un compilador de ejecución simbólica traduce código Python en secuencias de expresiones regulares, permitiendo el cálculo paralelo. El motor aprovecha SIMD para calcular movimientos de varias piezas simultáneamente, con inteligentes optimizaciones de expresiones regulares para la velocidad. Si bien es limitado en profundidad, demuestra el sorprendente poder computacional de las expresiones regulares.

Biblioteca de HashMap Paralelo: Extremadamente Rápida y Eficiente en Memoria

2025-01-07
Biblioteca de HashMap Paralelo: Extremadamente Rápida y Eficiente en Memoria

parallel-hashmap es una impresionante biblioteca C++ que proporciona un conjunto de contenedores de hashmap y btree extremadamente rápidos y eficientes en memoria. Es totalmente basada en encabezados, sin necesidad de proceso de construcción; simplemente copie el directorio a su proyecto. Compatible con C++11 y posterior, supera significativamente a los unordered_map/set integrados de su compilador o los equivalentes de Boost, utilizando menos memoria. Admite búsquedas heterogéneas, es fácil de declarar previamente y tiene una funcionalidad conveniente de volcado/carga. Basado y mejorado de la biblioteca Abseil de Google, está ampliamente probado en Windows, Linux y macOS.

Desarrollo

Comptime de Zig: Increíblemente Bueno

2025-01-07

Este artículo se adentra en las capacidades de metaprogramación en tiempo de compilación (comptime) del lenguaje de programación Zig. Inicialmente encontrando el comptime desafiante, el autor finalmente se maravilla de su poder. Se presentan seis perspectivas diferentes sobre el comptime, incluyendo ignorarlo, verlo como genéricos, código estándar ejecutado en tiempo de compilación, evaluación parcial, evaluación en tiempo de compilación con emisión de código en tiempo de ejecución y generación de código textual. A través de ejemplos, el autor demuestra cómo el comptime mejora la eficiencia del código, simplifica la lectura y depuración y permite funciones avanzadas como la generación de código. El comptime de Zig permite una extensa computación y generación de código en tiempo de compilación, aumentando el rendimiento y simplificando la escritura de código.

DiscoTool: Gestiona fácilmente tus dispositivos USB Arduino

2025-01-07
DiscoTool: Gestiona fácilmente tus dispositivos USB Arduino

DiscoTool es una potente herramienta de línea de comandos y biblioteca de Python para descubrir y gestionar placas de desarrollo tipo Arduino conectadas a USB. Es compatible con macOS, Linux y Windows, y se instala fácilmente mediante pip sin necesidad de instalaciones adicionales. DiscoTool ofrece un amplio conjunto de comandos, como conectar al REPL, instalar y actualizar módulos, realizar copias de seguridad de los datos de la placa y mucho más. También permite personalizar las herramientas de línea de comandos y las variables de entorno. Además, un módulo de Python permite a los desarrolladores integrarlo en sus proyectos para acceder fácilmente a la información del dispositivo, como el fabricante, el número de serie y la versión.

LLMs y los límites de la optimización automática de código

2025-01-07
LLMs y los límites de la optimización automática de código

David Andersen experimentó con el uso de Modelos de Lenguaje Grandes (LLMs) para optimizar código que encuentra la diferencia entre los números más pequeños y más grandes cuyos dígitos suman 30 en una lista de un millón de enteros aleatorios. El código inicial en Python y Rust era lento. Si bien el LLM mejoró partes, como la función de suma de dígitos, se perdió una optimización crucial: comprobar si un número es relevante *antes* del cálculo costoso de la suma de dígitos. La intervención manual, que incluyó un generador de números aleatorios más rápido, paralelización y preprocesamiento, aceleró el código Rust en un factor de 55. Esto destaca las limitaciones de los LLMs en la optimización de código, particularmente para problemas complejos que requieren una profunda comprensión algorítmica y estrategias de paralelización. El ingenio humano sigue siendo crucial.

Desarrollo Rendimiento

Programación con LLMs en 2024: Mis experiencias

2025-01-07

Esta publicación resume las experiencias del autor utilizando modelos generativos para la programación durante el último año. Descubrió que los LLMs tuvieron un impacto positivo en su productividad, particularmente para autocompletar, búsqueda y programación basada en chat. Si bien la programación basada en chat requiere ajustar los flujos de trabajo, proporciona un primer borrador y facilita una corrección de errores más rápida. El autor enfatiza que los LLMs sobresalen en problemas bien definidos y aboga por paquetes de código más pequeños e independientes para una mejor interacción con el LLM. Presenta sketch.dev, un IDE Go diseñado para LLMs para optimizar el ciclo de retroalimentación y aumentar la eficiencia.

Desarrollo

25 Años Después: La Historia No Contada del Dock de Mac OS X

2025-01-06
25 Años Después: La Historia No Contada del Dock de Mac OS X

Esta entrada del blog relata las experiencias de James Thomson, un ingeniero que trabajó en el desarrollo del Dock de Mac OS X. Describe su tiempo trabajando en el Dock en Apple en Irlanda, incluyendo el proceso de diseño inicial, las interacciones con Steve Jobs y su eventual salida de Apple. La historia está llena de tensión e intriga, incluyendo el secreto que rodeaba el proyecto, las demandas de Jobs sobre la ubicación del ingeniero y los desafíos y triunfos que Thomson enfrentó durante el desarrollo. La entrada ofrece una visión fascinante de la creación de una pieza fundamental de Mac OS X y del viaje de un ingeniero de software.

Desarrollo

Triptych: Tres propuestas para hacer que el hipertexto sea 'hiper' de nuevo

2025-01-06

Alexander Petros y Carson Gross proponen Triptych, tres pequeñas propuestas diseñadas para hacer que HTML sea mucho más expresivo en la forma en que maneja las solicitudes de red. Las propuestas agregan soporte para PUT, PATCH y DELETE a los formularios HTML, permiten que los botones realicen solicitudes sin formularios y permiten la sustitución parcial de páginas con la respuesta. Triptych tiene como objetivo aportar lo mejor de bibliotecas como htmx al HTML nativo, mejorando sus capacidades REST y simplificando la declaración del comportamiento de la página para las solicitudes HTTP. Esto resulta en un código más limpio y una implementación más fácil de la navegación de página completa y las actualizaciones parciales de página.

Desarrollo Solicitudes Web

FormBee: Backend de formularios de código abierto para desarrolladores preocupados por la privacidad de datos

2025-01-06
FormBee: Backend de formularios de código abierto para desarrolladores preocupados por la privacidad de datos

FormBee es un backend de formularios de código abierto creado para desarrolladores que priorizan la privacidad de datos. Simplifica el envío de datos de formularios de sitios web, permitiendo enviar envíos de formularios a correo electrónico, Telegram, webhooks, y más, sin escribir código del lado del servidor. Las características incluyen soporte para plugins, protección CAPTCHA, lista blanca de dominios y correos electrónicos de respuesta automática. El autohospedaje es fácil con imágenes Docker disponibles.

Desarrollo formularios

pl_synth: Un sintetizador de música pequeño basado en JSON

2025-01-06

Dominic Szablewski de PhobosLab lanzó pl_synth, un sintetizador de música ligero en C/JS y su editor de secuenciador (tracker). Inspirado en Sonant, pl_synth prioriza el tamaño pequeño del código y los datos y utiliza WASM para mejorar drásticamente el rendimiento de la versión JavaScript, reduciendo el tiempo de generación de música de 5 segundos a 25 milisegundos. Admite varios instrumentos y efectos, tiene funcionalidad de deshacer/rehacer y permite incrustar el producto final directamente en una URL. pl_synth ahora se incluye con el motor de juego high_impact.

Desarrollo

Defer Simple en C: Implementaciones Prácticas

2025-01-06
Defer Simple en C: Implementaciones Prácticas

Esta entrada de blog explora formas prácticas de implementar una palabra clave `defer` en C, permitiendo acciones de limpieza automáticas (como la desasignación de memoria o el desbloqueo de mutex) después de un bloque de código. El autor primero explica el propósito de `defer`, luego demuestra implementaciones usando extensiones de GCC y características de C++. Finalmente, se presenta una nueva propuesta de sintaxis para simplificar la implementación y el uso de `defer`, mejorando significativamente la legibilidad y la seguridad del código C.

Desarrollo

Truco para la Revisión de Código: Pregúntale a los Ingenieros "¿Cómo te Gusta lo que has Construido?"

2025-01-06

Durante una revisión de código de cambios complejos en la IU, en lugar de revisar inmediatamente, el autor le preguntó al ingeniero: "¿Cómo te gusta el nuevo comportamiento?" La respuesta del ingeniero llevó al descubrimiento y corrección de varios errores e incluso a la eliminación de un requisito problemático. Esta simple pregunta llevó al ingeniero a pensar más profundamente en su trabajo y a realizar mejoras, mejorando en última instancia la calidad del código. El autor cree que preguntar regularmente a los ingenieros sobre sus sentimientos con respecto a sus creaciones es una técnica útil que vale la pena probar.

Generar memes graciosos con LLMs: Sorprendentemente difícil

2025-01-06
Generar memes graciosos con LLMs: Sorprendentemente difícil

Un pasante de la Universidad de Waterloo intentó construir una aplicación usando LLMs y la API Greptile para generar memes que “tuestean” repositorios de GitHub. El proceso resultó inesperadamente desafiante. Pedir directamente al LLM que generara bromas produjo resultados genéricos. La solución implicó separar la tarea en análisis de código (usando Greptile para identificar problemas específicos) y generación de bromas (usando el LLM para crear humor dirigido). La generación de imágenes resultó difícil debido a limitaciones en el manejo de texto, lo que llevó al uso de plantillas de memes preconstruidas y node-canvas para la inserción de texto. A pesar de los obstáculos, el proyecto culminó en reporoast.com, un sitio web capaz de generar memes personalizados que “tuestean” código.

htmx: ¿El próximo jQuery? Herramienta de desarrollo web que prioriza la estabilidad

2025-01-06

htmx, evolucionado de intercooler.js, busca ser una herramienta estable y confiable para el desarrollo web, similar al éxito duradero de jQuery. El artículo describe la dirección futura de htmx: priorizando la estabilidad sobre las actualizaciones frecuentes; limitando la adición de características principales, expandiendo principalmente la funcionalidad a través de la API de extensión; manteniendo un cronograma de lanzamiento trimestral. El objetivo de htmx no es ser una solución completa para aplicaciones web, sino centrarse en simplificar los controles de hipermedia e integrarse mejor con otras herramientas y técnicas, con la esperanza de que su funcionalidad principal se integre en el estándar HTML.

Desarrollo hipermedia

Pruebas basadas en propiedades centradas en el usuario: Una disertación doctoral

2025-01-06

Esta disertación doctoral se centra en mejorar la usabilidad de las pruebas basadas en propiedades (PBT) para llegar a un público más amplio de desarrolladores. A través de estudios de usuarios en profundidad, el investigador identificó los desafíos que enfrentan los usuarios de PBT en la generación de datos aleatorios y la evaluación de la eficacia de las pruebas. Para abordar esto, la disertación propone nuevos algoritmos para generadores de datos aleatorios mejorados y desarrolla Tyche, una herramienta de código abierto que proporciona a los desarrolladores información más profunda sobre PBT y aumenta su usabilidad, lo que en última instancia lleva a una mejor calidad y garantía del software.

Campos de Distancia de Splines: Una Nueva Técnica de Generación de Terreno

2025-01-06

Para superar las limitaciones del motor de juego Tangerine, el autor desarrolló un ray tracer de CPU llamado Star Machine y un prototipo de juego de carreras, Rainy Road. Rainy Road requiere un sistema de renderizado de terreno eficiente y compacto, capaz de manejar carreteras y otros elementos del terreno definidos por splines. El autor presenta una nueva técnica de generación de terreno usando campos de distancia de splines. Esta técnica utiliza splines para generar superficies de terreno calculando la distancia de un punto a la spline más cercana y su vector normal para determinar la elevación. Esto evita las limitaciones de los mapas de altura tradicionales y admite la colocación de objetos procedurales. La técnica está en experimentación e investigación activas, con exploración de estrategias de interpolación mejoradas y el uso de nubes de puntos dispersas.

42: Un potente simulador de sistema de control de actitud para naves espaciales

2025-01-06
42: Un potente simulador de sistema de control de actitud para naves espaciales

42 es una simulación completa y de propósito general de la dinámica de actitud y órbita de naves espaciales, utilizada principalmente para apoyar el diseño y la validación de sistemas de control de actitud a lo largo de su ciclo de vida, desde estudios conceptuales hasta integración y pruebas. Modela con precisión la dinámica de actitud de naves espaciales de múltiples cuerpos (cuerpos rígidos y/o flexibles), y los regímenes de vuelo orbital de dos y tres cuerpos, simulando entornos desde la órbita terrestre baja hasta todo el sistema solar. 42 simula varias naves espaciales simultáneamente, facilitando estudios de encuentro, operaciones de proximidad y vuelo en formación de precisión. También cuenta con visualización de la actitud de la nave espacial.

Mashups.io: Un reemplazo moderno para Yahoo Pipes

2025-01-06
Mashups.io: Un reemplazo moderno para Yahoo Pipes

Mashups.io es una poderosa herramienta de integración de datos en línea que se basa en el legado de Yahoo Pipes con mejoras significativas. Los usuarios pueden mezclar, filtrar y transformar fácilmente feeds RSS, archivos CSV y datos JSON para crear fuentes de datos personalizadas. La plataforma ofrece una interfaz visual intuitiva, sin necesidad de experiencia en programación para construir flujos de trabajo complejos de datos. Mashups.io ofrece planes gratuitos y de pago para satisfacer diversas necesidades, y sus actualizaciones en tiempo real garantizan que los datos siempre estén actualizados.

Evolución de un editor de código estructural: De la manipulación de AST a una IU intuitiva

2025-01-06
Evolución de un editor de código estructural: De la manipulación de AST a una IU intuitiva

Esta publicación detalla la evolución de varios años de un editor de código estructural. La versión inicial manipulaba directamente el Árbol de Sintaxis Abstracta (AST), lo que resultó engorroso. Las iteraciones posteriores simplificaron el AST y exploraron un enfoque basado en el cursor de texto, pero ambos quedaron cortos. La versión final equilibra la edición de AST y texto, empleando técnicas como tipos editables, proyecciones y marcos. Se añadió una IU visual basada en iconos, que admite teclado, ratón, pantalla táctil y mando a distancia, mejorando significativamente la experiencia del usuario. Construido con Gleam y Lustre, este proyecto muestra la exploración continua y el refinamiento del diseño de editores de código estructurales.

Desarrollo diseño de IU
1 2 191 192 193 195 197 198 199 214 215