ControlOne Agent status update, again

Done

Updated curl, exiftool, Java, jq, Python, Tesseract-OCR and even more important, finally switched from sequential calls with tika-app for file content extraction to using tika-pipes! Result is an enormous performance boost for content extraction because object stays alive and multiple clients and emitters are used in parallel. Processing time for the default test data set went down from 350+ to 8 seconds! 😱

INFO [pool-2-thread-9] 01:23:35,996 org.apache.tika.pipes.PipesClient pipesClientId=7: starting process
INFO [pool-2-thread-2] 01:23:35,996 org.apache.tika.pipes.PipesClient pipesClientId=0: starting process

...
INFO [pool-2-thread-6] 01:23:36,001 org.apache.tika.pipes.PipesClient pipesClientId=3: starting process
INFO [main] 01:23:44,087 org.apache.tika.async.cli.TikaAsyncCLI Successfully finished processing 45 files in 8219 ms

Next

Further testing of pipes exploring optimal parameters settings and running on larger datasets.

ControlOne Agent status update

Done

Upgraded Tika from 2.9.1 to 3.2.3 to mitigate several security issues. See https://tika.apache.org/ and https://dist.apache.org/repos/dist/release/tika/3.2.3/CHANGES-3.2.3.txt

Using different custom endpoint for key retrieval as MongoDB Atlas App Services have reached EOL on September 30, 2025. See https://www.mongodb.com/docs/api/doc/atlas-app-services-admin-api-v3/ and https://www.mongodb.com/community/forums/t/mongodb-atlas-data-api-and-custom-https-endpoints-end-of-life-and-deprecation/296686

Next

Upgrade Java OpenJDK from 21 to 25. See https://jdk.java.net/25/

Upgrade PyPy from 3.7 Linux and 3.10 Windows and macOS to 3.11 for all OS, both Intel and ARM. See https://pypy.org/download.html

Simpal met NativeLink – turbocharge je builds zonder de koffie koud te laten worden

Er zijn projecten die op papier klein ogen, maar een kijkje onder de motorkap (en het nodige denkwerk om het concept te snappen) laat zien hoe je als developer met de juiste tools veel tijd en resources bespaart. NativeLink is er zo eentje en als (voor mij) eerste kennismaking heb ik er Simpal mee gemaakt. Aan de buitenkant een simpele rekenmachine (ToyCalc), maar ook een showcase van hoe je het buildproces slimmer en sneller maakt.

Met NativeLink van Trace Machina dus. De belofte vooraf: na een paar keer bouwen met NativeLink voelt lokaal compilen ineens alsof je terug bent in de tijd van dial-up internet, oef…

De façade: ToyCalc

ToyCalc zelf is niets meer dan een simpele calculator in Python. Het draait hier echter niet om het rekenen maar om de setup. De manier waarop dependencies, distributies en builds zijn geregeld, dat is waar de magie zit.

Simpal gebruikt Bazel, een serieus stuk gereedschap dat bekendstaat om z’n deterministische builds en herbruikbare artefacten. En precies daar haakt NativeLink slim op in.

De “cheat code”: NativeLink in je build

Kijk naar onderstaand stukje van build.sh. Hier zie je meteen dat NativeLink letterlijk een schakelaar is voor full remote execution of gewoon caching met een environment variable:

if [ "$USE_REMOTE_EXEC" = "1" ]; then

  echo "[INFO] Using full remote execution via NativeLink (--config=remote-exec)"

  BAZEL_FLAGS="--config=remote-exec"

else

  echo "[INFO] Using local execution with remote cache (default)"

fi

bazel build //:build_pyinstaller $BAZEL_FLAGS --verbose_failures

Oftewel:

Zet USE_REMOTE_EXEC=1 en je build gaat de cloud in, draait daar snel z’n rondje en komt terug met een keurig pakketje.

Laat je ‘m uit, dan gebruik je NativeLink “gewoon” als slimme cache.

Je hoeft verder niets te doen dan wel/niet kiezen voor de cloud build en ineens gaat het veeeel sneller.

NativeLink via Nix: een helper met smaak

De code is geschreven voor macOS waarbij NativeLink wordt geïntegreerd zodat je het via een shell-functie kunt gebruiken. Dus kan zijn dat je voor ander OS wat moet aanpassen.

NATIVELINK_HELPER='nativelink() {

  if [[ "$1" == "--help" || "$1" == "--version" ]]; then

    nix run github:TraceMachina/nativelink \

      --extra-experimental-features nix-command \

      --extra-experimental-features flakes -- "$@"

  else

    nix run github:TraceMachina/nativelink \

      --extra-experimental-features nix-command \

      --extra-experimental-features flakes \

      "$HOME/GitHub/taatuut/simpal/basic_cas.json5" "$@"

  fi

}'

Dat betekent dat je (na één keer je terminal opnieuw starten) je gewoon nativelink build kunt tikken zonder de extra flags.

Waarom is dit handig

Voorkomt “het werkt -alleen- op mijn machine” en versnelt het build proces.

Met NativeLink worden builds consistent, cachebaar en reproduceerbaar waarbij collega’s en de CI-server dezelfde artefacten gebruiken.

De snelheid krijg je ‘kado’ door gebruik maken van cloud infrastructuur en bovenal het feit dat NativeLink alleen dat opnieuw doet waar veranderingen in de code aan ten grondslag liggen. In mijn simpele calculator projectje zie je vooral verschil tussen eerste build en navolgende. Zonder veranderingen in de build (ja waarom dan builden, maar even als praktische verificatie van de theorie) gaat dan dus razendsnel, en ook bij wijzigingen is het sneller vanwege het hierboven genoemde: alleen doen wat nodig is. Echte winst ga je daar natuurlijk vooral mee halen in grote(re) projecten die vaak gebuild, getest en gereleased worden.

Wat heb ik nu weer geleerd

Je hebt niet per se een megaproject nodig hebt om met NativeLink te werken. Een kleine repo als ToyCalc is genoeg om het nut te laten zien. En als dit werkt voor deze demo, werkt het nog beter voor een enterprise-monorepo met 600 microservices.

Is remote de toekomst voor alle builds? Dat weet ik niet, maar voor enterprise projects met meerdere participanten is het zeker een valide optie zo te zien aan de bedrijven op de NativeLink website die er al mee bezig zijn.

NativeLink verandert hiermee een spelregel van software bouwen waardoor traaaage en inconsistente builds niet langer nodig zijn.

Geinteresseerd? Check de Simpal repo en lees meer over NativeLink en Trace Machina . Laat me vooral ook horen wat je ervan denkt!

Te koop: Orcon WTU-800-EC-E centrale warmteterugwinunit met EC motoren, incl. Regin regeling

Even iets heel anders. Voor de liefhebber een Orcon WTU-800-EC-E centrale warmteterugwinunit met EC motoren, incl. Regin regeling te koop!

In 2019 geïnstalleerd in ons nieuwbouwhuis. Heeft weinig uren gemaakt omdat de WTW niet goed aangesloten is op te kleine luchtkanalen en ook vanwege ontbrekende voorverwarmer. In de huidige opzet kunnen we deze WTW niet goed werkend krijgen dus hij gaat eruit.

Ook te vinden op Marktplaats https://link.marktplaats.nl/m2254191442

Integratie SharePoint Online binnen DataFitness

An English version of this blog can be found at the Dataether website.

Begin 2024 stond in de post https://www.basaltaura.nl/2024/02/05/updates-updates-everywhere een schets van de roadmap voor 2024 met een aantal onderwerpen.

Leuk om te kunnen zeggen dat integratie van SharePoint Online binnen DataFitness inmiddels gerealiseerd is! De afgelopen tijd hebben we succesvol getest hoe we in de DataFitness scans ook informatie uit SharePoint Online kunnen meenemen. SharePoint Online is bij veel (overheids)organisaties geïmplementeerd als systeem voor zaakgericht werken en bevat waardevolle informatie over lopende dossiers en projecten.

Met deze integratie is het nu mogelijk om SharePoint op een vergelijkbare manier te scannen zoals we met een netwerkschijf vol bestanden doen. De scan resultaten van SharePoint en netwerkschijven kunnen dan gezamenlijk geanalyseerd en vergeleken worden om de situatie door de tijd verder inzichtelijk te maken.

Ter illustratie schermafdrukken van het opvragen van informatie uit SharePoint. Die data wordt vervolgens als json ingelezen in de cloud omgeving.

Toegang tot Dataether SharePoint Online via API met Python script.

SharePoint Online scan resultaat als json, klaar voor verwerking in de cloud omgeving.

The ghost is in the bottle! Second blend done.

About seven years after creating the first blend, following a too early announcement in 2021 it now really happened on April 27th, 2024. More details like label and availability to be released later, let’s start sharing the tasting notes.

Nose: at first very light, some vanilla hiding some caramel under a blanket of fresh distillate. Further away some stranger ground, hard to detect the terroir.
Mouth: starts quite spiritual, then a short blast of red fruits coming in and eventually back to more delicate and volatile hard to grap ethereal tones. A ticking sensation lasts for a while. If you can resist swallowing directly, a hint of berries (vlierbessen) appears.
After a while in the glass, the bouquet opens up and becomes richer with some subtle floral notes and a bit of herbs and wood. It does not last too long so time for another sip.