<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ontwikkeling on Ansel</title><link>https://ansel.photos/nl/tags/ontwikkeling/</link><description>Recent content in Ontwikkeling on Ansel</description><generator>Hugo -- gohugo.io</generator><language>nl</language><copyright>© Copyright 2022-2025 – Aurélien Pierre</copyright><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ansel.photos/nl/tags/ontwikkeling/index.xml" rel="self" type="application/rss+xml"/><item><title>Wijzigingen in de distributie van Ansel-pakketten</title><link>https://ansel.photos/nl/news/changes-in-packages-distribution/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><updated>Fri, 10 Apr 2026 00:00:00 +0000</updated><guid>cf20b6cf89a28d20159d75cc0df504613517de9e1caef1f1bba46abfcd68402c</guid><description>&lt;/section>
&lt;section id="target-clones">
&lt;h2 class="text-left heading">
Target clones
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Het native compileren van de software op de computer verbeterde vroeger de looptijden op de CPU met ongeveer 30 %, vergeleken met voorgebouwde pakketten. De reden is dat de compiler specifieke optimalisaties maakt voor de doelhardware waarop hij wordt gecompileerd, terwijl voorgebouwde pakketten generiek moeten blijven en behoudender optimalisatie inzetten omwille van brede ondersteuning. Merk op dat OpenCL-kernels sowieso worden gecompileerd voor jouw specifieke GPU met behulp van jouw OpenCL-driver, dus daar ligt het verhaal anders.&lt;/p></description></item><item><title>De lichttafel en de mipmap-cache opnieuw ontwerpen</title><link>https://ansel.photos/nl/news/redesigning-lighttable-and-mipmap-cache/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><updated>Fri, 03 Apr 2026 00:00:00 +0000</updated><guid>581144b7682c65c8658b92eb207c053b900972acbe08c08f2471d076af1d8ed5</guid><description>&lt;p>Tussen januari 2022 en maart 2026 landde Ansel 297 niet-merge commits met betrekking tot het lichttafel-raster, de miniaturen daarvan en hun renderpipeline en caching. Ik heb geprobeerd het zo lang mogelijk uit te houden met de sjofele Darktable-lichttafelcode, alleen ontvet, maar helaas was het pure technische schuld en het was pijnlijk traag.&lt;/p>
&lt;p>Darktable „beheert&amp;quot; namelijk de belabberdheid van zijn lichttafel door de omvang ervan te verkleinen: de linker- en rechterzijpanelen nemen veel weergaveoppervlak in beslag, waardoor er nog minder ruimte overblijft voor de lichttafel om opnieuw te tekenen. Sinds Ansel het rechterzijpaneel verwijderde en de inhoud daarvan samenvoegde met het linkerpaneel en het globale menu, was er meer oppervlak om te tekenen, meer CPU-werk te doen, en werd het verschrikkelijke ontwerp van de lichttafel des te schadelijker.&lt;/p></description></item><item><title>Welkom, ontwikkelaarsdocumentatie !</title><link>https://ansel.photos/nl/news/welcome-dev-docs/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><updated>Mon, 31 Mar 2025 00:00:00 +0000</updated><guid>64a86dbc19dc2ed62c9704929644ac0d4b992304c211cbdf4568bb47a4e37eed</guid><description>&lt;p>In december 2019 vroeg ik of iemand ervoor &lt;a href="https://github.com/darktable-org/darktable/issues/3925" title="External link" target="_blank" rel="noopener noreferrer nofollow" >wilde zorgen dat er AppImage-pakketten werden aangeboden&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> voor Darktable. Het voor de hand liggende voordeel zou zijn geweest dat vroeg testen mogelijk werd, vóór de uitgave, door mensen die de broncode niet zelf kunnen bouwen, om zo &lt;em>hopelijk&lt;/em> vroege feedback te geven en te helpen met debuggen &lt;strong>voordat&lt;/strong> er werd uitgegeven. Dit is nooit een prioriteit geweest, wat betekende dat het prima was om zowel vóór de uitgave &lt;strong>als&lt;/strong> na de uitgave in een stormloop bugs te moeten fixen.&lt;/p></description></item><item><title>De pipeline-cache en 10 jaar oude bugs oplossen</title><link>https://ansel.photos/nl/news/fixing-pipe-cache-10-yo-bugs/</link><pubDate>Sun, 07 Jul 2024 00:00:00 +0000</pubDate><updated>Sun, 07 Jul 2024 00:00:00 +0000</updated><guid>550c016ef1b019c5d1cb146fea73e15b51fbcd2bc20619f74cd3c4e5cbceeab5</guid><description>&lt;/section>
&lt;section id="samenvatting-van-de-vorige-afleveringen">
&lt;h2 class="text-left heading">
Samenvatting van de vorige afleveringen
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;ol start="0">
&lt;li>Tussen 2020 en 2022 &lt;a href="https://ansel.photos/nl/news/darktable-dans-le-mur-au-ralenti/" title="" rel="dofollow" >onderging Darktable een onderneming tot massavernietiging&lt;/a>, door een handjevol gasten met meer vrije tijd en welwillendheid dan werkelijke vaardigheden,&lt;/li>
&lt;li>In 2022 &lt;a href="https://github.com/aurelienpierreeng/ansel/issues/29" title="External link" target="_blank" rel="noopener noreferrer nofollow" >begon ik een vervelende vertraging op te merken&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> tussen GUI-interacties met schuifregelaars en de feedback/update van diezelfde schuifregelaars. Bij gebrek aan feedback die aangaf dat de waardewijziging was geregistreerd, konden gebruikers de waarde opnieuw wijzigen, waardoor er extra pipeline-herberekeningen werden gestart en hun computer feitelijk bevroor omdat de stomme GUI nooit zei „begrepen, wacht nu even&amp;quot;.&lt;/li>
&lt;li>Ik ontdekte dat opdrachten voor pipeline-herberekening tweemaal per klik werden uitgegeven (eenmaal bij het „knop ingedrukt&amp;quot;-event, eenmaal bij het „knop losgelaten&amp;quot;-event), en nog eens voor elke muisbeweging, maar ook dat de GUI-toestanden schijnbaar ná de pipe-herberekening werden bijgewerkt.&lt;/li>
&lt;li>Ik &lt;a href="https://ansel.photos/nl/news/undarktable-ing-gui-controls/" title="" rel="dofollow" >loste dat op&lt;/a> door de aangepaste GUI-regelaars (de Bauhaus-bibliotheek) vrijwel te herschrijven. Ik dacht dat het voorkomen van roekeloze herberekenopdrachten de vertraging zou verhelpen: dat deed het niet. Vervolgens ontdekte ik dat het aanvragen van een nieuwe pipeline-herberekening vóórdat de vorige klaar was, wachtte tot de vorige klaar was, ondanks een uitschakelmechanisme dat vele jaren geleden was geïmplementeerd en dat had moeten werken.&lt;/li>
&lt;li>Ik &lt;a href="https://ansel.photos/nl/news/implementing-kill-switch/" title="" rel="dofollow" >loste dat op&lt;/a> door een kill-switch-mechanisme op pipelines te implementeren, op basis van commentaar in de code uit de jaren 2010 en interne hulpprogramma&amp;rsquo;s die misschien wel nooit gewerkt hebben. Dit werkte niet altijd omdat de kill-opdracht vaak met een merkbare vertraging aankwam. Ook nu weer werd de GUI-vertraging niet verholpen.&lt;/li>
&lt;/ol>
&lt;p>…&lt;/p></description></item><item><title>De importtool herschrijven</title><link>https://ansel.photos/nl/news/rewriting-import/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><updated>Fri, 07 Jun 2024 00:00:00 +0000</updated><guid>92037554190859d5faef3251312d38aa60aee47d057e9b544ea17d9a323cd23b</guid><description>&lt;p>Ansel erft van Darktable de ruggengraat van zijn database: de niet-destructieve bewerkingsgeschiedenissen worden per foto opgeslagen in een SQLite-database, samen met metadata en andere door de gebruiker gedefinieerde gegevens. De database bewust maken van nieuwe foto&amp;rsquo;s gebeurt door foto&amp;rsquo;s te „importeren&amp;quot; van een schijf of een geheugenkaart. Daar komt de importtool in beeld.&lt;/p>
&lt;p>Helaas is de Darktable-importeur nog zoiets dat rond 2020 werd verminkt en omgevormd tot iets diep verontrustends, want het is een bestandsverkenner die op geen enkele eerder bekende bestandsverkenner lijkt, en die erin slaagt om basisfuncties te missen (zoals Ctrl+F of EXIF-voorbeeld) terwijl hij tegelijk overladen is met nutteloze (zie hieronder). Hier verliezen we menig toekomstig gebruiker, en het is nog maar stap 0 van de workflow. Wat een geweldig visitekaartje van wat een „workflow-app&amp;quot; kan doen!&lt;/p></description></item><item><title>Een noodstop op de pipeline implementeren</title><link>https://ansel.photos/nl/news/implementing-kill-switch/</link><pubDate>Tue, 28 Nov 2023 00:00:00 +0000</pubDate><updated>Tue, 28 Nov 2023 00:00:00 +0000</updated><guid>c38c759d7c7dfad8f32c4581206b5384766dfa8c314c657ed72868a1bf6984c2</guid><description>&lt;p>Ik heb heel lang gedacht dat er een of ander noodstopmechanisme op de pixelpipeline zat. Het gebruiksscenario is het volgende:&lt;/p>
&lt;ol>
&lt;li>je verandert een moduleparameter,&lt;/li>
&lt;li>de voorbeeldweergaven (die in het midden van de donkere kamer en de miniatuur in het linkerpaneel, ook gebruikt voor het histogram en de kleurenkiezers) herberekenen hun pipeline om rekening te houden met die verandering,&lt;/li>
&lt;li>een van de voorbeeldweergaven is klaar met renderen vóór de andere, en het resultaat is duidelijk &lt;strong>niet&lt;/strong> wat je wilde,&lt;/li>
&lt;li>je verandert de moduleparameter opnieuw, zonder te wachten tot de herberekening klaar is.&lt;/li>
&lt;/ol>
&lt;p>In dat geval wil je alle actieve pipelines afbreken, omdat hun uitvoer toch niet gebruikt zal worden, en meteen alles opnieuw beginnen te berekenen met de nieuwe parameters. Alleen doet Darktable dat niet, het laat de pipeline eerst afronden voordat die opnieuw wordt gestart, en gezien de commentaren in de broncode lijkt het een vrij recente regressie te zijn en niet het oorspronkelijk bedoelde gedrag.&lt;/p></description></item><item><title>GUI-besturingselementen un-darktable-en</title><link>https://ansel.photos/nl/news/undarktable-ing-gui-controls/</link><pubDate>Sat, 25 Nov 2023 00:00:00 +0000</pubDate><updated>Sat, 25 Nov 2023 00:00:00 +0000</updated><guid>5f4c23d54314b065de427a10d615abf8f9c353fe9229e40f97181e9332588fee</guid><description>&lt;p>Darktable heeft zijn eigen GUI-widgetbibliotheek, voor schuifregelaars en comboboxen (ook wel keuzelijsten of selectievakken genoemd), genaamd Bauhaus (in de broncode staat die in &lt;code>src/bauhaus/bauhaus.c&lt;/code>). Hoewel ze Gtk als backend gebruiken, zijn Bauhaus-objecten aangepaste objecten. En zoals veel dingen in Darktable geldt: aangepast staat gelijk aan rot.&lt;/p>
&lt;p>In 2022 ‍merkte ik &lt;a href="https://github.com/aurelienpierreeng/ansel/issues/29" title="External link" target="_blank" rel="noopener noreferrer nofollow" >parasitaire hertekeningen en vertragingen&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> op bij het gebruik ervan, wat tot een frustrerende gebruikerservaring leidde: het hertekenen van de widget leek te wachten tot de herberekeningen van de pipeline waren voltooid, wat betekende dat gebruikers niet echt zeker wisten of hun waardewijziging was geregistreerd, waardoor ze het opnieuw konden proberen en zo een nieuwe cyclus van dure herberekening startten, en hun computer effectief enkele zeer frustrerende minuten bevroren met nutteloze tussentijdse herberekeningen van de pipeline.&lt;/p></description></item><item><title>Nieuwe build-opties voor Linux</title><link>https://ansel.photos/nl/news/new-build-options-linux/</link><pubDate>Fri, 16 Jun 2023 00:00:00 +0000</pubDate><updated>Fri, 16 Jun 2023 00:00:00 +0000</updated><guid>9c5bbd9e14ff03bda50651d18bef16606c3a0478dcf1f7fa6a145c71861f4b40</guid><description>&lt;p>Ik ontdekte per ongeluk dat het Linux-buildscript een „package&amp;quot;-build gebruikte, wat betekent dat de CPU-optimalisaties beperkt zijn tot generieke optimalisaties om portable binaries te produceren die op elk x86-64-platform geïnstalleerd kunnen worden. Met „gebruikte&amp;quot; bedoel ik dat de package-build niet expliciet was uitgeschakeld, dus was hij standaard ingeschakeld.&lt;/p>
&lt;p>Hoe dan ook, dit is nu standaard uitgeschakeld, aangezien de eigenlijke packages (.exe en .appimage) niet via dat script gebouwd worden, dat in de eerste plaats bedoeld is om eindgebruikers te helpen. Om het vorige gedrag terug te krijgen, zou je het volgende moeten uitvoeren:&lt;/p></description></item><item><title>Dev-dagboek #2: introductie van Chantal</title><link>https://ansel.photos/nl/news/dev-diary-2/</link><pubDate>Fri, 28 Apr 2023 00:00:00 +0000</pubDate><updated>Fri, 28 Apr 2023 00:00:00 +0000</updated><guid>4787a01a808737ad5918ac2dd945beb651ea887b1e4640115a4df8b087b9bfe5</guid><description>&lt;p>2022 was zo slecht wat betreft rommelmails en ruis dat ik ben begonnen met de &lt;a href="https://virtualsecretary.aurelienpierre.com/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >Virtual Secretary&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>, een Python-framework om intelligente e-mailfilters te schrijven door informatie tussen verschillende bronnen te combineren om te raden wat inkomende e-mails zijn en of ze belangrijk/urgent zijn of niet. Als ik het over rommelmails heb, gaat het ook over Github-meldingen, pings op pixls.us (goddank heb ik mijn account op dat stomme forum opgeheven), YouTube, en directe e-mails van mensen die hopen in het privé wat hulp te krijgen.&lt;/p></description></item><item><title>Ontwikkelaarsdagboek</title><link>https://ansel.photos/nl/news/dev-diary-1/</link><pubDate>Sun, 19 Mar 2023 00:00:00 +0000</pubDate><updated>Sun, 19 Mar 2023 00:00:00 +0000</updated><guid>7b10a8353b31a5e1b4b080bedac97b843375e88c80d3e9a7da547872b37f845e</guid><description>&lt;p>Het is ongeveer 3 maanden geleden dat ik „R&amp;amp;Darktable&amp;quot; (wat niemand goed leek te snappen) omdoopte tot „Ansel&amp;quot;, vervolgens de domeinnaam kocht en de website vanaf nul opbouwde met Hugo (ik had nog nooit in Golang geprogrammeerd, maar het is grotendeels templatecode).&lt;/p>
&lt;p>Daarna besteedde ik in totaal 70 uur om de nightly-pakketbuilds voor Windows en Linux werkend te krijgen voor continuous delivery, iets wat Darktable nooit goed voor elkaar kreeg („je kunt zelf builden, het is niet moeilijk&amp;quot;), om vervolgens de bugtracker te zien ontploffen na de release (niets beter dan de pre-release-sprint aaneenrijgen met een post-release-sprint om je levensverwachting te verkorten).&lt;/p></description></item></channel></rss>