Daniele Scasciafratte 🇮🇹

@mte90.mastodon.uno.ap.brid.gy

CTO Codeat, Author "Contribute to Open Source: the right way", Italian Linux Society Council member, OpenSource Multiversal, Former Mozilla Reps/TechSpeakers, WordPress […] 🌉 bridged from ⁂ https://mastodon.uno/@mte90, follow @ap.brid.gy to interact

Linus Torvalds Skill/Soul or how I distilled the knowledge for code reviews from 32~k emails https://daniele.tech/2026/09/linus-torvalds-skill-soul-or-how-i-distilled-the-knowledge-for-code-reviews-from-32k-emails/

Linus Torvalds Skill/Soul or how I distilled the knowledge for code reviews from 32~k emails

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! I was wondering if we have https://github.com/multica-ai/andrej-karpathy-skills/ that is a condensed way to create a AGENTS.md file from an opinion of a specific person what we can do with more content from a person? I used the karpathy skill to create my AGENTS.md but it will be a topic for another blog post So I was thinking, where I can find content from a person, that can be helpful for an AI that is public domain? Why don’t distill the Code Review skills from **Linus Torvalds** in over 2 decades in the Kernel mailing list? So after some working I got https://github.com/Mte90/linus-torvalds-skill that I decide to be always reproducible. Every generated file carries traceability metadata in its frontmatter (prompt hash, input hash, model, pipeline version). Generated artifacts are never hand-edited — any change goes through the generator script. The data folder is a release asset, the full pipeline ~2,000 LLM calls, and `python3 scripts/run_pipeline.py --dry-run` shows every stage before spending a cent. This means that there are scripts to download and parse the various emails, exclude the one that are commits and stuff not useful (so from 32~k emails they are 19~k). ## Before public announcement > The first version was a single SKILL.md generated from the email corpus — no soul, no calibration, no interviews, no validation. The first step it was to ask to the agents to build a pipeline to download and evaluate the various emails, and a script that generates the skill based on the email content. The next step it was to generate the same skill with different models to see the difference, as I am part of Regolo.AI that part it was easy. The first generation attempts included C-specific terms like BUG_ON and READ_ONCE, making the skill useless for non-C projects. Fixing this required a forbidden-terms list and a post-processor. With this first version I was thinking that was ready for the world… ## After public announcement * https://www.reddit.com/r/opensource/comments/1vgbn0i/github_mte90linustorvaldsskill_distilled_code/ * https://www.reddit.com/r/LLMDevs/comments/1vgbshe/mte90linustorvaldsskill_distilled_code_reviewer/ * https://www.reddit.com/r/PromptEngineering/comments/1vgbvym/from_prompts_to_reusable_skills_a_linusinspired/ * https://www.reddit.com/r/codereview/comments/1vgxvwp/mte90linustorvaldsskill_distilled_code_reviewer/ * https://x.com/Mte90Net/status/2090088911850618919 After sharing to the world (apart the usual sarcastic people) I got some useful suggestions: **What the community asked — and what changed** Feedback | What I shipped ---|--- “Did you even use the skill?” | Validated on antirez/smallchat: 8 reviews (4 models × with-skill/baseline), consensus matrix + a 43-bug ground-truth benchmark “Why not a SOUL.md?” | 4 soul variants (identity/values/voice, separate from the rules) “The skill quality is bad” | Quality gates: `verify_skill.py` scores 0–100 (SKILL.md: 95/100), 1,026 tests, forbidden-C-terms enforcement “The report isn’t useful” | Consensus matrix, severity disagreement table, trigger effectiveness metrics “Why not interviews?” | 67 interview transcripts fused into the corpus “Upload the data folder” | Published as release assets (`data.tar.gz`) — regenerate with your own models Where are the profanities? | In soul.md are present Right now I want to present to you the first official release of the project with this all these improvements (and many others)! I used a lot GLM 5.3 that it was released in the meantime to review it and improve it (GLM 5.2 and Qwen3.5-122b are used for the development). The actual LLMs used (from Regolo.AI): * GLM 5.2 * Mistral-small-4-119b * GPT-OSS-120b * Qwen3.8-27b The pipeline, the prompt generation and everything else is the same for the various models but the output is completely different. Actual pipeline is: * 31,397 emails fetched (192MB mbox from gmane NNTP) * After classify.py filters out git-pull/patch/RFC/announcements → review-only subset * 38,293 moves extracted (not emails — each email can yield multiple moves) * 325 representative patterns (25 per category × 13 categories) * 1 skill/soul file per model In the report folder there is a comparison from all the models with and without the skill with the antirez/smallchat project. Some excerpts from the comparison (auto-generated) as 10/09/2026: Model | Total Findings | Critical Findings | Skill-Only Critical | Verdict ---|---|---|---|--- gpt-oss-120b | 15 | 4 | 4 | Skill adds value glm5.2 | 7 | 2 | 0 | Skill reduces coverage mistral | 22 | 9 | 9 | Skill adds value qwen3.8-27b | 18 | 6 | 4 | Skill adds value The skill adds the most value for mistral, which gained 9 critical finding(s) exclusive to the with-skill review. For each model, comparing findings with the skill vs without (baseline): Model | Baseline Total | With-Skill Total | Baseline CRITICAL | With-Skill CRITICAL | Critical Overlap | Skill-Only CRITICAL | Baseline-Only CRITICAL | Skill Added Value ---|---|---|---|---|---|---|---|--- gpt-oss-120b | 7 | 15 | 0 | 4 | 0 | 4 | 0 | yes (+4 net critical: 4 found, 0 lost) glm5.2 | 12 | 7 | 4 | 2 | 2 | 0 | 2 | no (-2 net critical: 0 found, 2 lost) mistral | 15 | 22 | 0 | 9 | 0 | 9 | 0 | yes (+9 net critical: 9 found, 0 lost) qwen3.8-27b | 11 | 18 | 2 | 6 | 2 | 4 | 0 | yes (+4 net critical: 4 found, 0 lost) Findings confirmed by 2+ models are treated as real bugs. Findings reported by only one model are unverified (could be real or false positive). Model | Total Findings | Confirmed (2+ models) | Unverified (1 model only) | Consensus Rate ---|---|---|---|--- gpt-oss-120b | 15 | 12 | 3 | 80% glm5.2 | 9 | 9 | 0 | 100% mistral | 22 | 14 | 8 | 64% qwen3.8-27b | 19 | 14 | 5 | 74% Looking a the comparison is clear that GLM and Mistral are the most interesting to find bugs. I suggest to read the comparison (that is generated automatically so has margin for improvements). ## Conclusion This project was fully generated by AI – and my only real job was reviewing its work. Which is exactly what the skill teaches. I just never expected to be on the receiving end of a Linus-style review of my own pipeline. But I think that is my actual most used duty in my job as developer, review what an agent does. The repository is online and open to everyone for feedback and suggestions. Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and open source activities of July 2026 https://daniele.tech/2026/08/my-free-software-and-open-source-activities-of-july-2026/

My free software and open source activities of July 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * amber-lang/amber-docs - fix(menu): #216 * espanso/hub - New typofixer packages * amber-lang/amber - fix(stdlib): #1142 and #1140 * amber-lang/amber-docs - fix(0.6): missing examples * amber-lang/amber - fix(bash): shellcheck errors * amber-lang/amber - fix(install): check sudo * acato-plugins/branded-social-images - Wrong link on article page for preview, fixed backend title generation on multiple line * amber-lang/amber - fix(action): shellcheck * anomalyco/opencode - fix(opencode): turn.idle only when active and ctrl are undefined * regolo-ai/regoloai-doc - Updates r2 This month on GitHub I opened 2 tickets and closed 0. ### GitLab This month on GitLab I opened 0 tickets and closed 0. ### Projects * https://daniele.tech/2026/07/gbatopy-2nd-update-hello-world/ * https://daniele.tech/2026/07/baco-scanner-find-bugs-and-security-issues-with-different-llms/ * https://github.com/Mte90/espanso-typofixer/releases/tag/1.0.8 * https://github.com/CodeAtCode/CodeatCS/releases/tag/1.0.36 * https://github.com/CodeAtCode/baco-scanner/releases/tag/v1.0.0 Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and #opensource activities of July 2026 https://daniele.tech/2026/08/my-free-software-and-open-source-activities-of-july-2026/

My free software and open source activities of July 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * amber-lang/amber-docs - fix(menu): #216 * espanso/hub - New typofixer packages * amber-lang/amber - fix(stdlib): #1142 and #1140 * amber-lang/amber-docs - fix(0.6): missing examples * amber-lang/amber - fix(bash): shellcheck errors * amber-lang/amber - fix(install): check sudo * acato-plugins/branded-social-images - Wrong link on article page for preview, fixed backend title generation on multiple line * amber-lang/amber - fix(action): shellcheck * anomalyco/opencode - fix(opencode): turn.idle only when active and ctrl are undefined * regolo-ai/regoloai-doc - Updates r2 This month on GitHub I opened 2 tickets and closed 0. ### GitLab This month on GitLab I opened 0 tickets and closed 0. ### Projects * https://daniele.tech/2026/07/gbatopy-2nd-update-hello-world/ * https://daniele.tech/2026/07/baco-scanner-find-bugs-and-security-issues-with-different-llms/ * https://github.com/Mte90/espanso-typofixer/releases/tag/1.0.8 * https://github.com/CodeAtCode/CodeatCS/releases/tag/1.0.36 * https://github.com/CodeAtCode/baco-scanner/releases/tag/v1.0.0 Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

GBAtoPy – 2nd update, Hello World! https://daniele.tech/2026/07/gbatopy-2nd-update-hello-world/

GBAtoPy – 2nd update, Hello World!

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! > Ref: 1st update about this project > > Tiny recap: I am using AI to write a Rust transpiler for Gameboy Advance rom to Python. Everything changed when in Regolo.AI we got GLM 5.2 (last blogpost was 2 months ago) because before I used Minimax m2.5 and Qwen3.5-122b that doesn’t have a huge knowledge internally. In the project there is a `docs` folder with information about GBA hardware but it isn’t enough if you need to be smart to understand a transpiled python and auto debug autonomously. So for the same reasons I asked to GLM to check the documentation and updated it, in case it wasn’t enough and added more context with real GBA documentation again that maybe after all this time some information were lost. With this new model in the last month everything change because also if doest’ have a huge context like the original hosted on Z.ai but only 200k it is very autonomous. The difference it was that I had to guide Qwen3.5-122b to do things but with GLM now is enough to say “now it is time to support X.gba”, and it is **faster**. It is also smarter because before I wasn’t able to use subagents to do different things so now I can split the tasks or debugging to multiple subagents with GLM as orchestrator and is uses qwen3.5-122b or itself. An example of auto debugging, now to be faster try patching the Python generated and when see the bug fixed updates the Rust engine. An example of the todo list that now is enforced to track what is happening. Another example After the previous experience I worked at every rom supported by the system an auto review of the suite and instructions to avoid getting the AI stuck always in the same issues, improving the test system but also the AGENTS.md. This is a screen of me asking after the experience to get some other test roms working what will improve to avoid to lost times again in the same issues encountered. Another thing I said in the previous report about this project is to work on the python code generated size, so I asked to the agents to work on this to avoid the duplication of every single assembly instructions. Initially it was doing a 1:1 transpiling but it wasn’t performant at all so now uses functions to aggregate the same stuff. Another thing that I didn’t noticed as I was working with test roms were the assets. A ROM includes also a blob of assets that initially it was encoded in the python file itself in base64 but again it wasn’t very good. So the next step it was to extract in a binary file all the assets from the rom and the python file to load it. Another things I noticed that required some action it was to add some guardrails to the AGENTS.md like to not edit a .gba rom just to be a standard ROM. As test roms they need to do also dirty things and as mGBA works with them this projects has to do the same. Those are 2 test roms for Hello World that now works! GitHub: https://github.com/Mte90/GBAtoPy PS: this project is running in a dedicated old laptop where I am also developing my own coding agent in Rust but this is another topic for another blogpost. Basically everyday in the office I turn on that laptop and managing by SSH with opencode while my workstation is working on other things. Yes it is my birthday so I am happy of the actual results! Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

Baco Scanner – Find bugs and security issues with different LLMs https://daniele.tech/2026/07/baco-scanner-find-bugs-and-security-issues-with-different-llms/

Baco Scanner – Find bugs and security issues with different LLMs

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! PS: blogpost written in Italian and localized in English by an AI. One day I found myself thinking: every AI model is different, and each has its own strengths and weaknesses. With Regolo.AI I saw that as example “gemma” is better on UI/UX or that “Mistral” is more picky when does reviews. As humans, we can read code and often spot bugs without any specialized tools. We can also rely on dedicated static analysis tools when needed. In the AI world, however, different models can complement each other in interesting ways. I was looking for a project that could be genuinely useful for code analysis: fast (written in Rust), easy to port and configure, and capable of demonstrating how combining multiple models – even from different model families – can produce better results than relying on a single one. After months of work, **Baco Scanner** is public. Not the usual bug scanner but something to use at best the LLMs in task without thinking so much, “just reading code” like the humans. The core idea is intentionally simple. Most stages execute in parallel whenever possible, allowing multiple models and analysis engines to work simultaneously while keeping the overall scan time practical. A TOML configuration file defines: * Which models will analyze the source code, either in agentic mode or standard mode depending on the configuration. * Each model analyzes the files independently. * Every prompt can be fully customized or overridden through the configuration file. * Once all analyses are complete, the system generates a JSON file containing every issue reported by the models. * Another model reviews the findings, merges duplicate reports that refer to the same issue, and enriches them with additional context. * A final model generates clear, human-readable descriptions. * The system produces reports in HTML, JSON, and SARIF formats. * The configuration file also defines OpenAI-compatible hosts, API keys, rule references, and many other options. * Semgrep integration, custom rule sets, and many additional features can be enabled through configuration. The analysis pipeline goes even further. Using Git, the system automatically attempts to identify the commit that originally introduced each issue. It also searches GitHub, GitLab, and Jira for related tickets or discussions, and includes all of this contextual information directly in the final report. GitHub: https://github.com/CodeAtCode/baco-scanner The repository includes a complete example configuration, a sample report generated from a real project, and detailed documentation covering the entire 11-stage analysis pipeline. **P.S.** The project already has approximately **80% code coverage**. I’m currently working toward **100% coverage** while continuing to improve the overall project. Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

Baco Scanner - Find bugs and security issues with different LLMs https://daniele.tech/2026/07/baco-scanner-find-bugs-and-security-issues-with-different-llms/

Baco Scanner – Find bugs and security issues with different LLMs

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! PS: blogpost written in Italian and localized in English by an AI. One day I found myself thinking: every AI model is different, and each has its own strengths and weaknesses. With Regolo.AI I saw that as example “gemma” is better on UI/UX or that “Mistral” is more picky when does reviews. As humans, we can read code and often spot bugs without any specialized tools. We can also rely on dedicated static analysis tools when needed. In the AI world, however, different models can complement each other in interesting ways. I was looking for a project that could be genuinely useful for code analysis: fast (written in Rust), easy to port and configure, and capable of demonstrating how combining multiple models – even from different model families – can produce better results than relying on a single one. After months of work, **Baco Scanner** is public. Not the usual bug scanner but something to use at best the LLMs in task without thinking so much, “just reading code” like the humans. The core idea is intentionally simple. Most stages execute in parallel whenever possible, allowing multiple models and analysis engines to work simultaneously while keeping the overall scan time practical. A TOML configuration file defines: * Which models will analyze the source code, either in agentic mode or standard mode depending on the configuration. * Each model analyzes the files independently. * Every prompt can be fully customized or overridden through the configuration file. * Once all analyses are complete, the system generates a JSON file containing every issue reported by the models. * Another model reviews the findings, merges duplicate reports that refer to the same issue, and enriches them with additional context. * A final model generates clear, human-readable descriptions. * The system produces reports in HTML, JSON, and SARIF formats. * The configuration file also defines OpenAI-compatible hosts, API keys, rule references, and many other options. * Semgrep integration, custom rule sets, and many additional features can be enabled through configuration. The analysis pipeline goes even further. Using Git, the system automatically attempts to identify the commit that originally introduced each issue. It also searches GitHub, GitLab, and Jira for related tickets or discussions, and includes all of this contextual information directly in the final report. GitHub: https://github.com/CodeAtCode/baco-scanner The repository includes a complete example configuration, a sample report generated from a real project, and detailed documentation covering the entire 11-stage analysis pipeline. **P.S.** The project already has approximately **80% code coverage**. I’m currently working toward **100% coverage** while continuing to improve the overall project. Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and open source activities of June 2026 https://daniele.tech/2026/07/my-free-software-and-open-source-activities-of-june-2026/

My free software and open source activities of June 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * flyingrhinonz/nccm - fix(command): #31 * espanso/hub - feat(update): new typofixer collection * amber-lang/amber - Clippy warnings * FlyingEwok/MinecraftSplitscreenSteamdeck - Modpack support * amber-lang/amber-docs - Added jetbrains extension * amber-lang/amber - fix(ci): bump codecov This month on GitHub I opened 1 tickets and closed 4. ### GitLab * ItalianLinuxSociety/ils.org - Art 2 definizione di software libero This month on GitLab I opened 1 tickets and closed 0. ### Projects * https://daniele.tech/2026/06/how-track-ai-chatbots-with-matomo-in-wordpress-without-plugins/ * https://daniele.tech/2026/06/soundkonverter-how-i-migrated-this-old-kde-app-with-ai-to-qt6/ * https://github.com/Mte90/espanso-typofixer/releases/tag/1.0.7 * https://github.com/regolo-ai/opencode-regolo/releases/tag/1.0.3 * https://github.com/Mte90/opencode-auto-resume/releases/ * https://github.com/CodeAtCode/baco-scanner * https://gitlab.com/ItalianLinuxSociety/planet-mautic Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and open source activities of June 2026 https://daniele.tech/2026/07/my-free-software-and-open-source-activities-of-june-2026/

My free software and open source activities of June 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * flyingrhinonz/nccm - fix(command): #31 * espanso/hub - feat(update): new typofixer collection * amber-lang/amber - Clippy warnings * FlyingEwok/MinecraftSplitscreenSteamdeck - Modpack support * amber-lang/amber-docs - Added jetbrains extension * amber-lang/amber - fix(ci): bump codecov This month on GitHub I opened 1 tickets and closed 4. ### GitLab * ItalianLinuxSociety/ils.org - Art 2 definizione di software libero This month on GitLab I opened 1 tickets and closed 0. ### Projects * https://daniele.tech/2026/06/how-track-ai-chatbots-with-matomo-in-wordpress-without-plugins/ * https://daniele.tech/2026/06/soundkonverter-how-i-migrated-this-old-kde-app-with-ai-to-qt6/ * https://github.com/Mte90/espanso-typofixer/releases/tag/1.0.7 * https://github.com/regolo-ai/opencode-regolo/releases/tag/1.0.3 * https://github.com/Mte90/opencode-auto-resume/releases/ * https://github.com/CodeAtCode/baco-scanner * https://gitlab.com/ItalianLinuxSociety/planet-mautic Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

SoundKonverter – How I migrated this old KDE app with AI to QT6 https://daniele.tech/2026/06/soundkonverter-how-i-migrated-this-old-kde-app-with-ai-to-qt6/

SoundKonverter – How I migrated this old KDE app with AI to QT6

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! I am old school, without a Spotify account. I have my huge MP3 collection that I keep growing and I want to organize those files and soundKonverter it was always perfect. The problem is that it was closed in 2022 and it isn’t available anymore in any distro because doesn’t work with the latest KDE and QT versions. With Regolo.AI and 2 weeks I was able to migrate all the codebase, compile it and getting working (at least with Mp3 files, I tested with just that). As you can see the amount of files changed is not just few files but an huge amount, because in this case this software supports various plugins and codecs including exporting CD audio. As you can see in the screenshot is working with a incomplete Italian localization (in this case) that maybe I will fix it. What I had to do it was first of all with AI, an analysis about the codebase to see what is needed for migration and give freedom to compile it and start the developing on my workstation while I was doing my stuff. It burned a lot of tokens but at the end the magic was done. GitHub: https://github.com/Mte90/soundkonverter PS: I know about https://github.com/Bleuzen/FFaudioConverter/ that I have on my machine but the UX and also the features aren’t the same so why not bringing back this software? PSS: The only problem I saw it was that is missing a license in the original soundKonverter GitHub repository Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

How track AI Chatbots with #Matomo in #WordPress without plugins https://daniele.tech/2026/06/how-track-ai-chatbots-with-matomo-in-wordpress-without-plugins/

How track AI Chatbots with Matomo in WordPress without plugins

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! Matomo will alerts about that stuff, also suggesting to use the official plugin but if you are using a self hosted version is not the right choice, because that plugin will install inside WordPress a real Matomo instance! The solution is to track server side the various requests using the various User Agent and redirecting this requests to your Matomo instance. add_action('template_redirect', 'matomo_track_ai_chatbots'); function matomo_track_ai_chatbots() { if (is_admin()) { return; } $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; $bots = apply_filters('matomo_ai_chatbots', [ 'ChatGPT-User' => 'ChatGPT', 'Perplexity-User' => 'Perplexity', 'Claude-User' => 'Claude', 'Gemini-Deep-Research' => 'Gemini', 'MistralAI-User' => 'Mistral', 'Google-NotebookLM' => 'Google NotebookLM', ]); $detected_bot = null; foreach ($bots as $needle => $name) { if (stripos($ua, $needle) !== false) { $detected_bot = $name; break; } } if (!$detected_bot) { return; } send_matomo_ai_visit( $detected_bot, home_url($_SERVER['REQUEST_URI']), $ua ); } function send_matomo_ai_visit($bot_name, $url, $ua) { $endpoint = 'https://yout-matomo-instance/matomo.php'; wp_remote_post( $endpoint, [ 'timeout' => 2, 'blocking' => false, 'body' => [ 'idsite' => 1, // your site id 'rec' => 1, 'recMode' => '1', 'url' => $url, 'ua' => $ua ] ] ); } The next if you are using a caching plugin is to ignore cache when matches the User Agent (like W3TC plugin as example): ChatGPT-User Claude-User Gemini-Deep-Research Google-NotebookLM MistralAI-User Perplexity-User After this just wait a day and you will see the AI Chatbots graph filling with data! Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

How track AI Chatbots with Matomo in WordPress without plugins https://daniele.tech/2026/06/how-track-ai-chatbots-with-matomo-in-wordpress-without-plugins/

How track AI Chatbots with Matomo in WordPress without plugins

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! Matomo will alerts about that stuff, also suggesting to use the official plugin but if you are using a self hosted version is not the right choice, because that plugin will install inside WordPress a real Matomo instance! The solution is to track server side the various requests using the various User Agent and redirecting this requests to your Matomo instance. add_action('template_redirect', 'matomo_track_ai_chatbots'); function matomo_track_ai_chatbots() { if (is_admin()) { return; } $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; $bots = apply_filters('matomo_ai_chatbots', [ 'ChatGPT-User' => 'ChatGPT', 'Perplexity-User' => 'Perplexity', 'Claude-User' => 'Claude', 'Gemini-Deep-Research' => 'Gemini', 'MistralAI-User' => 'Mistral', 'Google-NotebookLM' => 'Google NotebookLM', ]); $detected_bot = null; foreach ($bots as $needle => $name) { if (stripos($ua, $needle) !== false) { $detected_bot = $name; break; } } if (!$detected_bot) { return; } send_matomo_ai_visit( $detected_bot, home_url($_SERVER['REQUEST_URI']), $ua ); } function send_matomo_ai_visit($bot_name, $url, $ua) { $endpoint = 'https://yout-matomo-instance/matomo.php'; wp_remote_post( $endpoint, [ 'timeout' => 2, 'blocking' => false, 'body' => [ 'idsite' => 1, // your site id 'rec' => 1, 'recMode' => '1', 'url' => $url, 'ua' => $ua ] ] ); } The next if you are using a caching plugin is to ignore cache when matches the User Agent (like W3TC plugin as example): ChatGPT-User Claude-User Gemini-Deep-Research Google-NotebookLM MistralAI-User Perplexity-User After this just wait a day and you will see the AI Chatbots graph filling with data! Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and open source activities of May 2026 https://daniele.tech/2026/06/my-free-software-and-open-source-activities-of-may-2026/

My free software and open source activities of May 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * amber-lang/amber - Grammar ebnf: finished * amber-lang/amber - More tests overall * mgechev/skillgrade - Fix OpenCode execution * BerriAI/litellm - VLLM: Prevent side-channel attacks via cache salting (CVE-2025-46570) * langflow-ai/langflow - feat: Added Regolo.Ai provider * Significant-Gravitas/AutoGPT - feat(provider): added regolo.ai * amber-lang/amber-docs - feat(refactoring): new docs and reorg This month on GitHub I opened 4 tickets and closed 1. ### GitLab * ItalianLinuxSociety/ilsmanager - Openid, #246 This month on GitLab I opened 0 tickets and closed 1. ### Projects * https://daniele.tech/2026/05/firefox-after-11-years-is-getting-webserial-officially/ * https://daniele.tech/2026/05/gbatopy-gameboy-advance-rom-python-transpiler/ * https://github.com/regolo-ai/regolo-rubberduck * https://github.com/Mte90/GlotDict – new release * https://github.com/Mte90/opencode-auto-resume/ – various releases * https://github.com/Mte90/soundkonverter – working on update the dependencies Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and open source activities of May 2026 https://daniele.tech/2026/06/my-free-software-and-open-source-activities-of-may-2026/

My free software and open source activities of May 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * amber-lang/amber - Grammar ebnf: finished * amber-lang/amber - More tests overall * mgechev/skillgrade - Fix OpenCode execution * BerriAI/litellm - VLLM: Prevent side-channel attacks via cache salting (CVE-2025-46570) * langflow-ai/langflow - feat: Added Regolo.Ai provider * Significant-Gravitas/AutoGPT - feat(provider): added regolo.ai * amber-lang/amber-docs - feat(refactoring): new docs and reorg This month on GitHub I opened 4 tickets and closed 1. ### GitLab * ItalianLinuxSociety/ilsmanager - Openid, #246 This month on GitLab I opened 0 tickets and closed 1. ### Projects * https://daniele.tech/2026/05/firefox-after-11-years-is-getting-webserial-officially/ * https://daniele.tech/2026/05/gbatopy-gameboy-advance-rom-python-transpiler/ * https://github.com/regolo-ai/regolo-rubberduck * https://github.com/Mte90/GlotDict – new release * https://github.com/Mte90/opencode-auto-resume/ – various releases * https://github.com/Mte90/soundkonverter – working on update the dependencies Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

GBAtoPy – GameBoy Advance Rom Python transpiler https://daniele.tech/2026/05/gbatopy-gameboy-advance-rom-python-transpiler/

GBAtoPy – GameBoy Advance Rom Python transpiler

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! Months ago, I told myself: _“I have the computing power ofRegolo.AI, why not work on a special project where I can gain experience and do something uniquely useful?”_ There’s already the gb-recompiled project (Game Boy C transpiler), so why not do something similar for the **Game Boy Advance** (a topic I’m familiar with, as seen in my FOSDEM 2024 talk) but instead of using C (which I’ll never fully understand), let’s use **Python**? For the past few weeks, I’ve been uploading the code for this work to GBAtoPy. The code is entirely AI-generated using **Spec-Driven Development workflow** , and I analyze what it does, provide explanations, and make adjustments. I chosen `pygame` as unique only dependence because is a framework that includes a lot of stuff from keyboards supports etc. The code generator instead is in pure Rust that use a python file base of the various GBA internals and some stuff is hardcoded in Rust (that in the future can be organized better). The other thing it was that everything it was planned to be public online. This will be the first in a series of posts about the project, depending on how it evolves. ## What I learned I fed the AI all the GBA documentation at the assembly level, along with mGBA references. My first step was to create a setup system that downloads mGBA and test roms with a doc about GBA in this way doesn’t matter what model I use there is documentation that I can provide already evaluated and focused. Because sometimes the AI started doing an Emulator instead of a transpiler, so having references it was important to keep track also of the progress. After a lot of development, I realized a major issue: **automated testing**. The AI works best when it’s independent, so after creating most of the various stubs in Thumb/ARM assembly (yes, the GBA also supports Game Boy ROMs, so it has two internal assembly modes), I moved on to patching mGBA. Initially, I wanted to extend its Lua scripting to add some APIs, but the project doesn’t accept AI-generated code (see PR #3752). Then I realized the first step was to actually render something. I collected **66 test ROMs** (from emulators and other sources) for the GBA, which seemed perfect as a testing baseline. By modifying mGBA to take screenshots at various frames (see custom patches), I could automate the whole process. And finally, today**the first surprise! **Here you can see the transpiled python for the stripes.gba rom and the same one in mGBA. There is still a lot to do but hey there is a progress! There is a lot of documentation generated by AI (behind my requests) that you can find on: https://github.com/Mte90/GBAtoPy/tree/master/docs Instead if you are curious about the test roms: https://github.com/Mte90/GBAtoPy/blob/master/scripts/setup/download_roms.sh ## Next steps Tests all the 66 roms to see if the screenshot are the same until that part is done (and starting working on audio). Right now the system does 4 screenshot at 10/20/30/60 frames. I am planning to reorganize the code and maybe generate a more readable Python at the end because transpiling a GBA rom of 352 bytes generated a 200~kb python file (a 8MB rom generated 830~MB of python code). It make sense after all because it includes all the GBA environment (BIOS, hardware emulation etc) so converting a real game rom probably it will be in hundreds of MBs. IN our case generate 1:1 code from assembly that can be optimized to avoid this duplication everywhere. Also I want update better the documentation because it is not very good as there is a lot of “noise”. PS: I am not thinking about the performance right now. Stay updated for the next big interesting… update! PSS: In the next blogpost I will add also the various reports from the AI during the development that are more interesting. Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

GBAtoPy - #GameBoyAdvance Rom #Python transpiler https://daniele.tech/2026/05/gbatopy-gameboy-advance-rom-python-transpiler/ #retrogaming

GBAtoPy – GameBoy Advance Rom Python transpiler

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! Months ago, I told myself: _“I have the computing power ofRegolo.AI, why not work on a special project where I can gain experience and do something uniquely useful?”_ There’s already the gb-recompiled project (Game Boy C transpiler), so why not do something similar for the **Game Boy Advance** (a topic I’m familiar with, as seen in my FOSDEM 2024 talk) but instead of using C (which I’ll never fully understand), let’s use **Python**? For the past few weeks, I’ve been uploading the code for this work to GBAtoPy. The code is entirely AI-generated using **Spec-Driven Development workflow** , and I analyze what it does, provide explanations, and make adjustments. I chosen `pygame` as unique only dependence because is a framework that includes a lot of stuff from keyboards supports etc. The code generator instead is in pure Rust that use a python file base of the various GBA internals and some stuff is hardcoded in Rust (that in the future can be organized better). The other thing it was that everything it was planned to be public online. This will be the first in a series of posts about the project, depending on how it evolves. ## What I learned I fed the AI all the GBA documentation at the assembly level, along with mGBA references. My first step was to create a setup system that downloads mGBA and test roms with a doc about GBA in this way doesn’t matter what model I use there is documentation that I can provide already evaluated and focused. Because sometimes the AI started doing an Emulator instead of a transpiler, so having references it was important to keep track also of the progress. After a lot of development, I realized a major issue: **automated testing**. The AI works best when it’s independent, so after creating most of the various stubs in Thumb/ARM assembly (yes, the GBA also supports Game Boy ROMs, so it has two internal assembly modes), I moved on to patching mGBA. Initially, I wanted to extend its Lua scripting to add some APIs, but the project doesn’t accept AI-generated code (see PR #3752). Then I realized the first step was to actually render something. I collected **66 test ROMs** (from emulators and other sources) for the GBA, which seemed perfect as a testing baseline. By modifying mGBA to take screenshots at various frames (see custom patches), I could automate the whole process. And finally, today**the first surprise! **Here you can see the transpiled python for the stripes.gba rom and the same one in mGBA. There is still a lot to do but hey there is a progress! There is a lot of documentation generated by AI (behind my requests) that you can find on: https://github.com/Mte90/GBAtoPy/tree/master/docs Instead if you are curious about the test roms: https://github.com/Mte90/GBAtoPy/blob/master/scripts/setup/download_roms.sh ## Next steps Tests all the 66 roms to see if the screenshot are the same until that part is done (and starting working on audio). Right now the system does 4 screenshot at 10/20/30/60 frames. I am planning to reorganize the code and maybe generate a more readable Python at the end because transpiling a GBA rom of 352 bytes generated a 200~kb python file (a 8MB rom generated 830~MB of python code). It make sense after all because it includes all the GBA environment (BIOS, hardware emulation etc) so converting a real game rom probably it will be in hundreds of MBs. IN our case generate 1:1 code from assembly that can be optimized to avoid this duplication everywhere. Also I want update better the documentation because it is not very good as there is a lot of “noise”. PS: I am not thinking about the performance right now. Stay updated for the next big interesting… update! PSS: In the next blogpost I will add also the various reports from the AI during the development that are more interesting. Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

Firefox after 11 years is getting WebSerial officially https://daniele.tech/2026/05/firefox-after-11-years-is-getting-webserial-officially/

Firefox after 11 years is getting WebSerial officially

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! In 2015, I wrote about WebSerial on a website in the context of Firefox OS, and around the same time, I tested WebSerial on Firefox. For years, I was deeply involved with Mozilla as a volunteer, contributing to various projects, I’m even one of the names on the monument, just to give you an idea. But in recent years, I’ve stepped back from the community because, in my opinion, Mozilla has made too many wrong moves, destroying the community and focusing more on redesigning their logo or brand every three years instead of better marketing Firefox. If others don’t do that and still grow, maybe that’s not the real issue. Enough with the rant, let’s get back to WebSerial. WebSerial is an API available in Chrome since 2015 that allows JavaScript to communicate with devices via serial ports, such as various Arduino boards or musical instruments (there’s also WebMIDI, which Firefox already supports). The security concern with WebSerial is that it could potentially allow a webpage to modify devices just by being opened in the browser, so a whole permission system needs to be studied, along with cross-operating system support. In 2015, there was (and still that I have followed for 11 years) a bug ticket with a patch, and using Mozilla’s various build systems, you can download a version of Firefox with the patch applied (which is exactly what I did to test it). You might say, “I don’t believe you, you’re just making it up!” But I have a tweet from that time documenting it, with a screenshot of an Arduino Yun and a Gist with the JavaScript code I used, which are still online. Tweet: https://x.com/Mte90Net/status/555329447969443841 The problem is that today, I’m no longer interested in these projects, not even from a development perspective. But at least knowing it’s possible might be useful for the future… News: https://hacks.mozilla.org/2026/05/web-serial-support-in-firefox/ Liked it? Take a second to support Mte90 on Patreon!

daniele.tech

My free software and open source activities of April 2026 https://daniele.tech/2026/05/my-free-software-and-open-source-activities-of-april-2026/

My free software and open source activities of April 2026

"Contribute to Open Source: the right way" is my free and open source book, about... _Open Source_! It will help you improve your skills and understand how to start this journey! What has happened this month? In the meantime, to read the previous report, go here. ### GitHub * amber-lang/amber-docs - fix(menu): support for url * amber-lang/amber-docs - Fix workaround * mgechev/skillgrade - feat(agent): opencode * amber-lang/amber-website - Update TopBanner message to Amber 0.6 alpha * amber-lang/amber - Last Chorse 0.6 v2 * mastra-ai/mastra - Add Regolo.AI as provider * vercel/ai - feat(provider): added Regolo.ai * gitroomhq/postiz-app - AI multi provider * amber-lang/amber - Last chores 0.6 * paperclipai/paperclip - Feat: log on opencode with more details in debug mode * Friiiis/saved-posts-organizer - Fixes * mgba-emu/mgba - Scripting: added more APIs This month on GitHub I opened 8 tickets and closed 5. ### GitLab * ItalianLinuxSociety/ilsmanager - Draft: User model: 79% code coverage (ATTENZIONE: AI-generated) This month on GitLab I opened 2 tickets and closed 0. ### Projects * https://daniele.tech/2026/04/kanbanomo-a-kanban-for-your-task-and-plans-for-oh-my-opencode/ * https://daniele.tech/2026/04/opencode-auto-resume-avoid-timeout-or-blocking-issues-on-agentic-loop/ * https://daniele.tech/2026/04/solopreneur-the-handbook-with-skill-md-based-on-real-content/ * https://daniele.tech/2026/04/social-content-bot-scrape-your-wordpress-blog-tweets-and-upvoted-reddit-posts-to-generate-tweets/ * https://github.com/Mte90/kate-agents Liked it? Take a second to support Mte90 on Patreon!

daniele.tech