JPEG XL finally lands in Chrome!

Version 155 of the popular web browser will ship with a JPEG XL decoder

By Toni Sagrista Selles

3 minute read

Today, I was browsing Hacker News, when a particular item caught my eye:

Hacker News post with the Chrome JPEG XL announcement.

Hacker News post with the Chrome JPEG XL announcement.

I opened it promptly and, indeed, it was not a prank. Finally, after years and years of bull**** from the Chrome team, they are shipping it. They are shipping a JPEG XL decoder.

  JPEG XL in a nutshell

For those of you who don’t know, JPEG XL is a new image codec that includes most of, if not all, the features we’d want in the image codec of the future:

  • File size reduction by \(~20-60\%\) w.r.t JPEG.
  • Lossless JPEG transcoding.
  • Progressive decoding.
  • Wide gamut, HDR and 32-bit support.
  • Animations and transparency (alpha channel).
  • Shines with high-fidelity photographic images.
  • Fast-ish encoding and decoding.
  • Royalty-free and FOSS.
  • Support for super high-resolution images, of up to 1 terapixels ( \(2^{30}-1\) pixels per side).

Git hash prefix or cellphone number?

What is the probability of getting an all-numbers Git hash prefix?

By Toni Sagrista Selles

3 minute read

Today, I was playing around with a new feature in Gaia Sky, and I created a new release from master. Immediately, I noticed something unusual in the generated package name:

packages-3.8.0.066962508

The 3.8.0 part is the release version, while the last 9 characters are the abbreviated Git commit hash. Usually, that last part looks something like:

packages-3.8.0.a31f7c92e

This time, however, every single one of the hash characters is a number, 066962508. My first stupid reaction was thinking that something had gone wrong. However, git log confirmed the hash was fine.

➜ git log

commit 066962508de536403a185471344ba83801d45a88 (HEAD -> master, origin/master, origin/HEAD, gitlab/master, gitlab/HEAD, github/master, github/HEAD) Author: langurmonkey <tsagrista_AT_ari.uni-heidelberg.de> Date: Tue Sep 29 10:10:15 2026 +0200

feat: Handle gaiasky:// URLs forwarded from second instances and macOS open events. Part of #935.

- Scope dataset URL dedup to the startup path only, so re-sent URLs are always processed by the running instance.
- Register install4j StartupNotification listener for macOS open-URL events, with pending-URL queue for pre-UI arrival.
- Add --enable-native-access=ALL-UNNAMED to launcher VM parameters - Add compileOnly install4j-runtime dependency.

Obviously, I asked myself, “how likely is that”? So I did some digging.

JPEG XL lands in Firefox

Version 152 of the popular browser includes an option to enable JXL in Labs

By Toni Sagrista Selles

2 minute read

Yesterday, Firefox 152 was released. In the release notes, under the Firefox Labs section, it states:

The Firefox Labs section of the release notes of Firefox 152. If you see JPEG-XL works!, it means your browser is JPEG-XL capable. If you see JPG :(, it means your browser does not support it.

The Firefox Labs section of the release notes of Firefox 152. If you see JPEG-XL works!, it means your browser is JPEG-XL capable. If you see JPG :(, it means your browser does not support it.

Local agentic workflows are getting crazy good

New open models provide amazing value for local inference

By Toni Sagrista Selles

4 minute read

Building on the previous post about how good current open TTS models are, this post focuses on local LLMs, and their explosion in quality in the recent years months. I have been using OpenRouter with, for the most part, DeepSeek v4 Flash. It is a very capable model, dirt-cheap (seems to be heavily subsidized, at $0.14/M tokens input and $0.28/M tokens output), and it works very well when it is free to browse the internet. I have also been tinkering with local models like the Qwen3.5 family, Gemma 3/4, Mistral, and more. They are good, I haven’t been able to use the versions that can run reasonably on consumer hardware for anything too productive. That is until now. The brand new Qwen3.6 models, particularly the 27B dense, and the 35B A3B MoE, have really impressed the community. They are trivial to run on common setups (e.g. 16GB RTX card, ~32-64GB RAM), and when boosted with agentic capabilities, they perform very well.

Local TTS is getting very capable and accessible

It is now possible to do high-quality TTS on local hardware very easily.

By Toni Sagrista Selles

4 minute read

Around 2007 I spent half a year in the University of Aberdeen working on my final year project involving NLP. The project consisted of a series of modules to build an graphical adventure-type game controlled by language input in the form of text. It also featured speech output generated by an early TTS system. To achieve this, we managed to partner with a group at La Salle University that were working on a TTS system for Catalan. It was a closed system that was accessible via a web API, but that option was far too slow for real time use. I ended up preprocessing the audio of all dialogs in the project into WAV files just to be able to play them in sync with mouth movements. At that time, I was amazed that a computer could so easily convert text to an understandable audio file. The voice was very plain and robotic, with no emotion whatsoever. The results were hit or miss, but it worked.

Fast forward to today, TTS systems are everywhere. Several groups have released low-parameter TTS models that run very well on consumer hardware. I have been using the lightweight Kitten TTS for a while with fantastic results.

Fine-tuning Qwen3.5 for Gaia Sky

How I fine-tuned Qwen3.5 4/9B models to become Gaia Sky experts

By Toni Sagristà Sellés

24 minute read

A little over a year ago I set up a local pipeline to use different LLMs to respond to Gaia Sky questions using RAG. In that post, I built a dynamic scrapper that parsed the Gaia Sky website and documentation and ingested the content it into a vector database. Then, I built a minimal terminal chatbot interface that received the user prompt, queried the database for semantically similar data, and built up the context for each LLM call. The results were promising, and I found that they (obviously) strongly depended on the model used.

Fast forward a few months, and the Qwen 3.5 models were released by Alibaba. The general consensus is that they are quite good for their size. I’ve been testing them for local inference with a similar impression. I thought that it would be interesting to repeat the exercise of creating a Gaia Sky AI assistant, but using a radically different approach: Instead of RAG, I would fine-tune the model itself. In this post, I describe this fine-tuning project, from the creation and engineering of the training dataset to the fine-tuning and production of the final GGUF models.

Website design by myself. See the privacy policy

Content licensed under CC-BY-NC-SA 4.0