Noticias

Welcome Ansel GPT !

Anuncio

Después de finalmente conectar todo el sitio web y la documentación a un flujo de trabajo de traducción hermético (utilizando po4a sobre Hugo), que resulta utilizar el mismo conjunto de herramientas y lógica que la aplicación Ansel, se me ocurrió la idea de automatizar las traducciones vacías, primero a partir de los archivos de traducción del software, y luego a través de la API de ChatGPT, que hace un trabajo bastante justo al traducir la sintaxis de Markdown.

¡Bienvenido, documentación para desarrolladores!

Desarrollo

En diciembre de 2019, pedí que alguien se encargara de proporcionar paquetes AppImages  para Darktable. El beneficio obvio habría sido habilitar pruebas tempranas, antes del lanzamiento, de personas que no pueden construir el código fuente por sí mismas, con la esperanza de proporcionar comentarios tempranos y ayudar a depurar antes del lanzamiento. Esto nunca ha sido una prioridad, lo que significa que estaba bien tener una prisa antes y posterior al lanzamiento para corregir errores.

Reparando la caché de la canalización y errores de hace 10 años

Desarrollo

Resumen de los episodios anteriores

  1. Entre 2020 y 2022, Darktable se sometió a una empresa de destrucción masiva, por un puñado de tipos con más tiempo libre y benevolencia que auténticas habilidades,
  2. En 2022, comencé a notar un molesto retraso  entre las interacciones de la GUI con controles deslizantes y la retroalimentación/actualización de dichos controles deslizantes. Debido a la falta de retroalimentación que indicara que el cambio de valor se registró, los usuarios podrían cambiarlo nuevamente, iniciando así recomputaciones adicionales en la canalización y congelando efectivamente su computadora porque la GUI estúpida nunca dijo “te tengo, espera un poco ahora”.
  3. Descubrí que las órdenes de recomputación de canalización se emitían dos veces por clic (una vez en “botón pulsado”, una vez en “eventos botón liberado”), y una vez más por cada movimiento del ratón, pero también que los estados de la GUI se actualizaban aparentemente después de la recomputación de la canalización.
  4. Lo solucioné casi reescribiendo los controles de GUI personalizados (librería Bauhaus). Pensé que evitar órdenes de recomputación imprudentes iba a solucionar el retraso: no lo hizo. Luego, descubrí que solicitar una nueva recomputación de canalización antes de que terminara la anterior esperaba a que esa anterior terminara, a pesar de un mecanismo de apagado implementado hace muchos años que debería haber funcionado.
  5. Lo arreglé implementando un mecanismo de interruptor de apagado en canalizaciones, siguiendo comentarios en el código desde 2010 y utilidades internas que podrían no haber funcionado nunca. Esto no siempre funcionaba porque la orden de apagado llegaba a menudo con un retraso notable. Una vez más, el retraso de la GUI no se solucionó.

Reescritura de la herramienta de importación

Desarrollo Rediseño

Ansel hereda de Darktable su estructura de base de datos: los historiales de edición no destructiva se guardan por imagen en una base de datos SQLite, junto con metadatos y otros datos definidos por el usuario. Hacer que la base de datos reconozca nuevas imágenes se realiza a través de la “importación” de imágenes desde un disco o tarjeta de memoria. Ahí es donde entra en juego la herramienta de importación.

Implementación del interruptor de apagado en la canalización

Desarrollo

He pensado, durante mucho tiempo, que había algún mecanismo de interruptor de apagado en la canalización de píxeles. El caso de uso es el siguiente:

  1. estás cambiando un parámetro del módulo,
  2. las vistas previas (la central del cuarto oscuro y la miniatura en el panel izquierdo, también utilizada para el histograma y selectores de color) recomputan su canalización para tener en cuenta ese cambio,
  3. una de las vistas previas termina de renderizar antes que la otra, y el resultado es obviamente no lo que querías,
  4. cambias nuevamente el parámetro del módulo, sin esperar a que termine la recomputación.

En ese caso, quieres eliminar todas las canalizaciones activas porque su salida no se utilizará y comenzar a recomputar todo de inmediato con los nuevos parámetros. Excepto que Darktable no hace eso, deja que la canalización termine antes de reiniciarla, y al observar los comentarios en el código fuente, parece ser una regresión bastante reciente y no el comportamiento originalmente previsto.

Des-darctableando los controles de GUI

Desarrollo

Darktable tiene su propia biblioteca de widgets de GUI, para sliders y comboboxes (también conocidos como menús desplegables o cuadros de selección), llamada Bauhaus (en el código fuente, está en src/bauhaus/bauhaus.c). Aunque usan Gtk como backend, Bauhaus son objetos personalizados. Y como muchas cosas en Darktable, personalizado equivale a podrido.

En 2022, noté redibujados parásitos y retrasos , al usarlos, lo que lleva a una experiencia de usuario frustrante: el redibujado del widget parecía esperar a que se completaran las recomputaciones del pipeline, lo que significaba que los usuarios no estaban realmente seguros de que su cambio de valor se registrara, lo que podría llevarlos a intentarlo de nuevo, comenzando otro ciclo de recomputación costosa, y congelando efectivamente su computadora durante varios minutos muy frustrantes de recomputaciones de pipeline intermedias inútiles.

Cambios en el soporte de distribución para el paquete Linux AppImage

Anuncio

Rawspeed (la biblioteca que proporciona los decodificadores para archivos raw de cámaras) ha dejado de dar soporte a GCC < 12. Como resultado, ya no puedo construir el AppImage en Ubuntu 20.04 (utilizando ejecutores de Github), sino que tengo que construirlo en 22.04.

Esto significa que cualquier distribución de Linux que tenga libc más antiguo que 2.35 no podrá iniciar los nuevos AppImages a partir de hoy. Esto no debería afectar a la mayoría de los usuarios que ejecutan distribuciones actualizadas en 2021 o más recientemente. Ubuntu 20.04 y otras distribuciones LTS/old stable (Debian stable) pueden verse afectadas.

Explicando el rediseño de grupos de módulos en Ansel

Diseño

Si vienes de Darktable, puedes estar acostumbrado a esto en el cuarto oscuro:

image

mientras que Ansel te ofrece esto:

image

Esto no es accidental, y es hora de explicar por qué, y por qué esto no se extenderá con opciones de personalización.

Nuevas opciones de compilación para Linux

Desarrollo

Descubrí accidentalmente que el script de compilación de Linux usaba una compilación “package”, lo que significa que las optimizaciones de CPU están limitadas a las genéricas para producir binarios portátiles que se pueden instalar en cualquier plataforma x86-64. Por “usar”, me refiero a que la compilación del paquete no estaba explícitamente deshabilitada, así que estaba habilitada por defecto.

De todos modos, ahora está deshabilitada por defecto, ya que los paquetes reales (.exe y .appimage) no se construyen a través de ese script, que está principalmente destinado a ayudar a los usuarios. Para volver al comportamiento anterior, necesitarías ejecutar:

Diario de desarrollo #2: presentando a Chantal

Desarrollo

2022 fue tan malo en términos de correos electrónicos no deseados y ruido que comencé el Secretario Virtual , un marco en Python para escribir filtros de correos electrónicos inteligentes cruzando información entre varias fuentes para adivinar qué son los correos electrónicos entrantes y si son importantes/urgentes o no. Cuando hablo de correos electrónicos no deseados, también me refiero a notificaciones de Github, menciones en pixls.us (gracias a Dios cerré mi cuenta en ese foro estúpido), YouTube y correos electrónicos directos de personas que esperan recibir ayuda en privado.

Diario de Desarrollo

Desarrollo

Han pasado aproximadamente 3 meses desde que rebauticé ‘R&Darktable’ (que nadie parecía entender bien), en ‘Ansel’, luego compré el nombre de dominio y creé el sitio web desde cero con Hugo (nunca había programado en Golang antes, pero es principalmente código de plantilla).

Luego pasé un total de 70 h haciendo que los paquetes de compilaciones nocturnas para Windows y Linux funcionaran para entrega continua, algo que Darktable nunca logró (“puedes construirlo tú mismo, no es difícil”), solo para ver al rastreador de errores explotar después del lanzamiento (nada mejor que encadenar el sprint de pre-lanzamiento con uno post-lanzamiento para reducir tu expectativa de vida).

Darktable: estrellándose contra la pared en cámara lenta

¿Qué sucede cuando una banda de fotógrafos aficionados, convertidos en desarrolladores aficionados, se une a un grupo de desarrolladores de backend que desarrollan bibliotecas para desarrolladores y deciden trabajar sin método ni estructura en un software de la industria para usuarios finales, cuya competencia principal (colorimetría y psicofísica) se encuentra entre una licenciatura en fotografía y una maestría en ciencias aplicadas, mientras prometen entregar 2 versiones cada año sin gestión de proyectos? Todo eso, por supuesto, en un proyecto donde los fundadores y la primera generación de desarrolladores se movieron y huyeron?

Search

You can also ask Chantal, the AI search engine.