Home-made Berliner Currywurst
Alhoewel ik een paar weken geleden, na meer dan 27 jaar in Nederland te wonen mijn Duits paspoort heb ingeleverd, zijn er toch een paar dingen uit de Duitse cultuur die een plaats mijn hart zullen blijven hebben (naast lange zinnen met comma’s). Een daarvan is het toppunt van Duitse fast-food menu’s (naast Döner Kebab), good old Currywurst.

Het recept (in het Duits, uiteraard) vind je hier. Tip: voeg een heel klein beetje chilipoeder toe voor wat extra pit. Dat mag van mij wel.
Leap Powers Consultants on the Move
For tech consultants, life happens on the move.
From airport lounges to boardrooms across Europe and beyond, the tool of choice for one tech consultant is Slimbook Executive edition powered by openSUSE Leap; it’s a reliable, secure, and flexible Linux machine that seamlessly adapts to the ever-changing demands of independent consulting.
Freelancer tech consultants like Agustín Benito Bethencourt, who shared his use case of Leap, works with multiple clients in highly regulated industries face unique challenges as each customer enforces its own security policies, communication platforms,and compliance protocols.
What works for one organization might be blocked or noncompliant with another.
Leap’s flexibility allows Bethencourt and his consultant company, toscalix, to adapt quickly. As an independent consultant, Bethencourt needs to use many of the video chat tools available. This includes BigBlueButton and Jitsi through the web, plus Google Meet, Zoom, Teams and Slack.
Bethencourt uses Firefox, Edge and Chromium/Chrome because different corporate tools are necessary.
“Some of these tools, I use them through Flatpaks,” Bethencourt said.
Flatpaks are containerized applications designed to run consistently on any Linux distribution and can be found through Flathub.
The consultant’s workflow goes beyond applications. Different customers impose strict security measures, from encrypted drives and segregated vaults to VPNs tied to specific certificates. The consultant uses Bitwarden as a password manager with separate vaults for each client and it reduces risks of accidental data exposure.
Hardware-level protections also play a role. A patch disables the laptop’s webcam when visiting customer facilities. When charging in airports or on-site, the consultant uses USB data blockers to prevent juice jacking attacks, which is a type of attack that exploits USB cables to secretly transfer data while charging.
Bethencourt explained that compiling the information into a document might streamline interactions with security compliance departments.
“My use case might not be fancy,” he said. But “it shows the flexibility from a professional user’s point of view.”
Stories like this illustrate Leap’s adaptability for diverse environments. With Leap 16’s extended lifecycle and enterprise-grade reliability, professionals can count on this distribution whether they are in the office, in transit or on-site with a client.
Members of the openSUSE Project are trying to showcase how people use openSUSE . If you have a use cases for Leap 16 that you want to share, comment on the project’s mailing list.
Memory Bank: Labels In HTML

What is the right way to label something in HTML?
This came up in something I was working on recently. I always forget the best practices for labeling so I wanted to write this blog post to help me remember… and as a quick reference when I inevitably forget 😉.
Default Accessible Names
Some elements provide a default accessible name that can be used by screen readers to provide a label for a given element. For example in a button the value between the open and close tags is the default accessible name.
<button>this is a close button</button>
Sometimes the default accessible name is inaccurate and a separate label needs to be provided to give users accurate context. In these situations labels can help.
Imagine if the button in the code above needed to have X as its text. This is not very informative to screen reader users and we need a better way to indicate what this button does. There are also many elements that do not have default accessible names, so we may need to provide labels for them as well.
Full post here: https://pureooze.com/blog/posts/2025-10-07-memory-bank-labels-in-html/
Memory Bank: Labels In HTML was originally published in Information & Technology on Medium, where people are continuing the conversation by highlighting and responding to this story.
Tumbleweed – Review of the week 2025/41
Dear Tumbleweed users and hackers,
Week 41 started strong, with daily snapshots released, but unfortunately, we hit some roadblocks by the end of the week. A seemingly harmless rename of a snapper plugin caused quite some havoc in openQA, as SELinux was unaware of that change and consequently, a completely untrusted executable was blocked from messing around with the bootloader. Generally, exactly what we want – except in this case, it was an intentional rename of a file. The change has been retracted for now and will be given back to engineering.
Still, we managed to release five snapshots this week (1003, 1004, 1005, 1006, and 1007), containing these changes:
- GTK 4.20.2
- polkit rules prepared for systemd v258
- SDL 3.2.24
- Rust 1.90
- FreeRDP 3.17.2
- Apparmor 4.1.2
The next snapshots in the making will bring these changes:
- FFMpeg 8 by default
- Linux kernel 6.17.1
- GIMP 3.0.6
- libxml2 2.14.5
- QEmu 10.1.1
- Ruby 3.4.7
- KDE Plasma 6.5 (beta 2 is staged, being tested)
- KDE Gear 25.08.2
- Qt 6.10.0
- GNOME 49.1
- util-linux 2.41.2
Planet News Roundup
This is a roundup of articles from the openSUSE community listed on planet.opensuse.org.
The below featured highlights listed on the community’s blog feed aggregator are from October 4 to 10.
The week’s Planet highlights Akademy 2025 in Berlin, unbricking ESP8266 boards on Linux, openSUSE Leap’s liftoff, the FSF’s 40th anniversary, and more.
Here is a summary and links for each post:
Photo from the Grupo Akademy 2025 Berlin
KDE Blog shares the traditional group photo from Akademy 2025, which was held in Berlin from Sept. 6–11, and captures the spirit, camaraderie, and energy of the community during a week of talks, workshops, and collaboration.
The syslog-ng Insider 2025-10: Values; BastilleBSD; Debian
The October syslog-ng newsletter highlights the project’s core values, running syslog-ng in BastilleBSD, and announces updates to the Debian and Ubuntu blogs.
Cañas Podcast, is Free, Akademy Spain and JPOD in KDE Express 56
KDE Blog highlights KDE Express episode 56, where David Marzal covers upcoming Spanish-speaking free software events like Cañas y Podcast, esLibre, Akademy_ES, and JPOD that highlights the vibrant Spanish-speaking KDE community.
Kwlejka for Plasma. Simply a text area for your desktop
Victorhck introduces Kwlejka, a minimalist KDE Plasma widget, that provides a simple text area on the desktop for storing, pasting, and reusing snippets without needing a dedicated text editor.
Unbricking an ESP8266 with esptool.py on Linux
CubicleNate shares a quick guide on recovering a bricked ESP8266 NodeMCU board using esptool.py on Linux, covering prerequisites, USB permissions, and flashing firmware like WLED.
Mindtrek 2025
Timo Jyrinki reports from Mindtrek 2025 in Tampere, Finland, which is a conference centered on “OpenTech: Towards Digital Sovereignty”; the blog highlights SUSE’s talk on digital sovereignty, and discussions ranging from HPC federation to open source in education.
GSoC 2025, Building a Semantic Search Engine for Any Video
Akash Kumar shares his GSoC 2025 project with openSUSE, which is a semantic video search engine that uses AI models and vector databases to let users search videos by content; it’s not just for titles or tags.
First impressions of the 11th Annual Wikimedia Spain Conference
KDE Blog shares positive first impressions from the 11th Wikimedia España Annual Conference in Valencia, highlighting talks, the organization, and capturing the spirit of the community.
Budapest Audio Expo 2025
Peter Czanik reviews Budapest Audio Expo 2025, praising Hungarian-made audio systems from Dorn/Heed, NCS Audio/Qualiton, and Popori/72 Audio for rivaling global high-end sound at more affordable prices.
KDE Neon is now testing Plasma 6.5 beta 2
KDE Blog reports that KDE neon is now testing Plasma 6.5 Beta 2 and preparing for an Oct. 21 release. The blog encourages users to try the beta and report bugs for a polished final version.
DuckDuckGo search engine donates money to various organizations
Victorhck reports that DuckDuckGo has once again donated funds to organizations worldwide that are supporting privacy, digital rights, open source, and a safer, more democratic internet. The amount donated this year $1.1 million to 30 digital rights and privacy-focused organizations.
openSUSE Leap Ready for Liftoff
openSUSE News highlights community use cases ahead of Leap 16, including aviation tracking with ADS-B receivers, showcasing the distribution’s stability, versatility, and readiness for both hobbyist and enterprise deployments.
First update of KPhotoAlbum 6, adjusting the new version
KDE Blog covers the release of KPhotoAlbum 6.1.0, the first update since its port to Qt6/KF6, which brings new options with usability improvements and bug fixes for the lightweight photo organizer.
The Free Software Foundation turns 40
Victorhck celebrates the 40th anniversary of the Free Software Foundation. The blog piece reflects on its history, core freedoms, global impact, and ongoing campaigns defending users’ digital rights and software freedom.
Plasma 6.5 beta 2 – This week in Plasma
KDE Blog shares a Spanish translation of Nate Graham’s “This Week in Plasma,” covering Plasma 6.5 Beta 2 with major bug fixes, UI improvements, and updates across Plasma, Frameworks, and Discover.
View more blogs or learn to publish your own on planet.opensuse.org.
Request Workflow: Accept & Forward by Default and Clearer History
The syslog-ng Insider 2025-08: Values; BastilleBSD; Debian
The October syslog-ng newsletter is now on-line:
- The core values of syslog-ng
- Running syslog-ng in BastilleBSD
- Debian and Ubuntu blogs updated
It is available at https://www.syslog-ng.com/community/b/blog/posts/the-syslog-ng-insider-2025-10-values-bastillebsd-debian

syslog-ng logo
Unbricking an ESP8266 with esptool.py on Linux
Mindtrek 2025
The yearly Mindtrek 2025 was arranged again at Tampere, Finland, with some nice changes to the format. The full program was divided into three tracks – in addition to the former busines and public sector tracks, there was also a track for developers! I spend most of the time in the new Developers track thanks to interesting talks.
SUSE also had a presentation about digital sovereignty, including operations sovereignty, business continuity and overall making a great case for why open source is not a plus, it’s a must.
The keynote of the conference was by Peer Heinlein about OpenCloud and how it relates to NextCloud, and what happened to OwnCloud – and how all of that binds to how Europe can go forward to be self-sustaining in the digital world. So, the same theme there as well, which is not a surprise given the main theme for the conference was OpenTech: Towards Digital Sovereignty.
As for the developers track, there was an interesting talk about how open source was key in enabling entering to German education market for Opinsys/Puavo. Another talk was about studies on using AI, interesting in lack of negativity and having certain neutrality, even if the findings were negative. There was a talk about HPC federation in Europe’s compute ecosystem, how is running Meson project like in practice, a low-level presentation about TPM2 and then lastly some GIS spatial information open source company information.

All in all, the conference had me have lots of good talks with many of the presenters and other people, and also a nice, comfortable evening program where talks further continued for hours after hours.

Thanks to COSS for once again excellent conference, and I hope to see you all next year!

GSoC 2025, Building a Semantic Search Engine for Any Video
Hello, openSUSE community!
My name is Akash Kumar, and I was a Google Summer of Code (GSoC) 2025 mentee with the openSUSE organization. This blog post highlights the project I developed during this mentorship program, which openSUSE and its mentors helped make possible. This summer, I had the incredible opportunity to contribute to the project titled “Create open source sample microservice workload deployments and interfaces.” The goal was to build a functional, open-source workload that could provide relevant analytics for a specific use case.
For my project, I chose to tackle a common but complex problem: searching for content inside a video. This blog post details the outcome of my GSoC project: a full, end-to-end semantic video search engine.
The Problem: Beyond Keywords
Ever tried to find a specific moment in a long video? You might remember the scene vividly - a character gives a crucial speech, or there’s a beautiful, silent shot of a landscape - but you can’t remember the exact timestamp. You end up scrubbing back and forth, wasting minutes, or even hours.
Traditional video search relies on titles, descriptions, and manual tags. It’s limited. It can’t tell you what’s inside the video.
As part of my GSoC deliverable, I set out to solve this. I wanted to build a system that lets you search through a video’s content using natural language. I wanted to be able to ask, “find the scene where they discuss the secret plan in the warehouse,” and get an instant result.
The Big Picture: A Two-Act Play
The entire system is divided into two main parts:
- The Ingestion Pipeline (The Heavy Lifting): An offline process that takes a raw video file and uses a suite of AI models to analyze it, understand it, and store that understanding in a specialized database.
- The Search Application (The Payoff): A real-time web application with a backend API and a frontend UI that lets users perform searches and interact with the results.
Let’s walk through how it all works, step by step.
Part 1: The Ingestion Pipeline - Teaching the Machine to Watch TV
This is where the magic begins. We take a single .mp4 file and deconstruct it into a rich, multi-modal dataset.
Step 1: Deconstructing the Video (Extraction)
First, we break the video down into its fundamental atoms: shots, sounds, and words. I used a series of specialized AI models for this:
-
Shot Detection (
TransNetV2): The video is scanned to identify every single camera cut, creating a “skeleton” of the video’s structure. -
Transcription & Diarization (
WhisperX): The audio is extracted, and WhisperX transcribes all spoken dialogue into text. Crucially, it also performs diarization—identifying who spoke and when, assigning generic labels likeSPEAKER_00andSPEAKER_01. -
Visual Captioning (
BLIP): For every single shot, we extract a keyframe and ask the BLIP model to generate a one-sentence description of what it sees (e.g., “a man in a suit is standing in front of a car”). -
Action & Audio Recognition (
VideoMAE,AST): We go even deeper, analyzing the video clips to detect actions (“talking,” “running”) and the audio to identify non-speech events (“music,” “applause,” “engine sounds”).
At the end of this step, we have a mountain of raw, timestamped data.
Step 1.5: The Human in the Loop (Speaker ID)
The AI knows that different people are speaking, but it doesn’t know their names. This is where a little human intelligence goes a long way. The pipeline automatically pauses and launches a simple web tool. In this tool, I can see all the dialogue for SPEAKER_00, play a few clips to hear their voice, and map them to their real name, like “John Wick.” This simple, one-time step makes the final data infinitely more useful.
Step 2: Finding the Narrative (Intelligent Segmentation)
Searching through hundreds of tiny, 2-second shots isn’t a great user experience. We need to group related shots into coherent scenes or segments. A single conversation might involve 20 shots, but it’s one single event.
To solve this, I developed a “Boundary Scoring” algorithm. It iterates through every shot and calculates a “change score” to the next one, based on a weighted combination of factors:
- Has the topic of conversation changed? (semantic text similarity)
- Have the visuals changed significantly?
- Did the person speaking change?
- Did the background sounds or actions change?
If the total change score is high, we declare a “hard boundary” and start a new segment. This transforms a chaotic list of shots into a clean list of meaningful scenes.
Step 3: Adding a Layer of Genius (LLM Enrichment)
With our coherent segments defined, we bring in a Large Language Model (like Google’s Gemini) to act as an expert video analyst. For each segment, we feed the LLM all the context we’ve gathered—the transcript, the speakers, the visual descriptions, the actions—and ask it to generate:
- A short, descriptive Title.
- A concise 2-3 sentence Summary.
- A list of 5-7 relevant Keywords.
This adds a layer of human-like understanding, making the data even richer and more searchable.
Step 4: Preparing for Search (Indexing)
The final step is to prepare this data for lightning-fast search. We use a vector database (ChromaDB). The core idea is to convert text into numerical representations called embeddings.
The key innovation here is our hybrid embedding strategy. For each segment, we create two distinct embeddings:
- Text Embedding: Based on the transcript and summary. This represents what was said.
- Visual Embedding: Based on the visual captions and actions. This represents what was shown.
These embeddings are stored in ChromaDB. Now, the video is fully processed and ready to be searched.
Part 2: The Search Application - Reaping the Rewards
This is where all the offline work pays off. The application consists of a backend “brain” and a frontend “face.”
The Brains: The FastAPI Backend
The backend API is the engine of our search. When it receives a query, it follows a precise, high-speed process:
- Vectorize Query: The user’s query is converted into the same type of numerical vector using the same model from the indexing step.
- Hybrid Search: It queries ChromaDB twice in parallel—once against the text embeddings and once against the visual embeddings.
- Re-Rank & Fuse: It takes both sets of results and merges them using an algorithm called Reciprocal Rank Fusion (RRF). This is incredibly powerful. A segment that ranks highly on both the text and visual search (e.g., a character says “Look at the helicopter” while a helicopter is on screen) gets a massive score boost and shoots to the top of the list.
- Respond: The backend fetches the full metadata for the top-ranked results and sends it back to the frontend as a clean JSON response.
The Face: The Streamlit UI
The frontend is a simple, clean web interface built with Streamlit. It features a search bar, a video player, and a results area. When you click “Play” on a search result, it instantly jumps the video player to the exact start time of that segment. It’s fast, intuitive, and incredibly satisfying to use.
The Final Result & GSoC Experience
Imagine searching for “a tense negotiation in a warehouse.” The system finds it in seconds because:
- The Text Search matches the dialogue about “the deal,” “the money,” and “the terms.”
- The Visual Search matches the AI captions like “two men sitting at a table” and “a dimly lit, large room.”
- The RRF algorithm sees that both signals point to the same segment and ranks it as the #1 result.
This project was a fascinating journey into the world of multi-modal AI. It demonstrates that by combining the strengths of different models, we can deconstruct unstructured data like video and reassemble it into a smart, searchable, and genuinely useful asset.
I want to extend a huge thank you to my mentor, @bwgartner, and the entire openSUSE community for their support and guidance throughout the summer. Participating in GSoC with openSUSE has been an invaluable learning experience.
The days of aimless scrubbing may soon be behind us. If you’re interested in trying it out or contributing, you can find the entire project on GitHub: https://github.com/AkashKumar7902/video-seach-engine.