Tennis – Australian Open 2025 – Lorenzo Sonego : “Ben Shelton has changed a lot in these two years”

Lorenzo Sonego s’est battu jusqu’au bout dans cet Open d’Australie. Surprenant quart de finaliste, l’Italien a été vaillant contre Ben Shelton mais n’a pas pu empêcher l’Américain de triompher, 6-4, 7-5, 6-4, 7-6(4). Offensif, Sonego a claqué 63 coups gagnants et est monté 90 fois au filet. Un panache qui n’a pas suffi mais qui est à saluer. De plus, avant ce tournoi, le 55e mondial n’avait atteint qu’une seule fois le troisième tour d’un tournoi du Grand Chelem sur dur. La performance reste donc très satisfaisante.

Please join us (in French/ en français) for the Moodle Academy webinar ‘La gestion des rôles dans Moodle’ on 5 February, 13:00 UTC

Please join us (in French/ en français) for the Moodle Academy webinar ‘La gestion des rôles dans Moodle’ on 5 February, 13:00 UTC
by Sandra Matz.  

We invite you to join us for our next Moodle Academy webinar, which is free to attend. Please note: This webinar will be in French.

Webinaire: La gestion des rôles dans Moodle
5 février, 13:00-14:00 UTC
Inscrivez-vous!

Les rôles de Moodle sont une des clefs de la flexibilité de son utilisation. Cependant, la gestion de ces rôles est complexe et assez difficile d’accès. Ce webinaire, destiné avant tout aux administrateurs et administratrices de Moodle, mais aussi à toute personne curieuse du fonctionnement interne de Moodle, se donne comme objectif d’améliorer la compréhension de l’architecture des rôles de Moodle et, à l’aide d’exemples, de trucs et d’astuces, de rendre plus digeste l’administration de ces rôles. Des bonnes pratiques de gestion des rôles dans Moodle seront également présentées.

Ce webinaire fait partie du cours ‘Moodle Academy webinars‘. Il faut vous inscrire au cours pour participer au webinaire.

Inscrivez-vous à Moodle Academy!

Webinaire 'La gestion des rôles dans Moodle', 5 février, 13:00-14:00 UTC. Inscrivez-vous à Moodle Academy.

Dries Buytaert: I gave an AI agent edit access to my website

Dries Buytaert: I gave an AI agent edit access to my website
Dries Buytaert: I gave an AI agent edit access to my website

I’m often asked, Will AI agents replace digital marketers and site builders?. The answer is yes, at least for certain kinds of tasks.

To explore this idea, I prototyped two AI agents to automate marketing tasks on my personal website. They update meta descriptions to improve SEO and optimize tags to improve content discovery.

Watching the AI agents in action is incredible. In the video below, you’ll see them effortlessly navigate my Drupal site — logging in, finding posts, and editing content. It’s a glimpse into how AI could transform the role of digital marketers.

The experiment

I built two AI agents to help optimize my blog posts. Here is how they work together:

  • Agent 1: Content analysis: This agent finds a blog post, reviews its content, and suggests improved summaries and tags to enhance SEO and increase discoverability.
  • Agent 2: Applying updates: After manual approval, this agent logs into the site and updates the summary and tags suggested by the first agent.

All of this could be done in one step, or with a single agent, but keeping a ‘human-in-the-loop’ is good for quality assurance.

This was achieved with just 120 lines of Python code and a few hours of trial and error. As the video demonstrates, the code is approachable for developers with basic programming skills.

The secret ingredient is the browser_use framework, which acts as a bridge between various LLMs and Playwright, a framework for browser automation and testing.

The magic and the reality check

What makes this exciting is the agent’s ability to problem-solve. It’s almost human-like.

Watching the AI agents operate my site, I noticed they often face the same UX challenges as humans. It likely means that the more we simplify a CMS like Drupal for human users, the more accessible it becomes for AI agents. I find this link between human and AI usability both striking and thought-provoking.

In the first part of the video, the agent was tasked with finding my DrupalCon Lille 2023 keynote. When scrolling through the blog section failed, it adapted by using Google search instead.

In the second part of the video, it navigated Drupal’s more complex UI elements, like auto-complete taxonomy fields, though it required one trial-and-error attempt.

The results are incredible, but not flawless. I ran the agents multiple times, and while they performed well most of the time, they aren’t reliable enough for production use. However, this field is evolving quickly, and agents like this could become highly reliable within a year or two.

Native agents versus explorer agents

In my mind, agents can be categorized as “explorer agents” or “native agents”. I haven’t seen these terms used before, so here is how I define them:

  • Explorer agents: These agents operate across multiple websites. For example, an agent might use Google to search for a product, compare prices on different sites, and order the cheapest option.
  • Native agents: These agents work within a specific site, directly integrating with the CMS to leverage its APIs and built-in features.

The browser_use framework, in my view, is best suited for explorer agents. While it can be applied to a single website, as shown in my demo, it’s not the most efficient approach.

Native agents that directly interact with the CMS’s APIs should be more effective. Rather than imitating human behavior to “search” for content, the agent could retrieve it directly through a single API call. It could then programmatically propose changes within a CMS-supported content editing workflow, complete with role-based permissions and moderation states

I can also imagine a future where native agents and explorer agents work together (hybrid agents), combining the strengths of both approaches to unlock even greater opportunities.

Next steps

A next step for me is to build a similar solution using Drupal’s AI agent capabilities. Drupal’s native AI agents should make finding and updating content more efficiently.

Of course, other digital marketing use cases might benefit from explorer agents. I’d be happy to explore these possibilities as well. Let me know if you have ideas.

Conclusions

Building an AI assistant to handle digital marketing tasks is no longer science fiction. It’s clear that, soon, AI agents will be working alongside digital marketers and site builders.

These tools are advancing rapidly and are surprisingly easy to create, even though they’re not yet perfect. Their potential disruption is both exciting and hard to fully understand.

As Drupal, we need to stay ahead by asking questions like: are we fully imagining the disruption AI could bring? The future is ours to shape, but we need to rise to the challenge.

JRuby 9.4.10.0 Released

The JRuby community is pleased to announce the release of JRuby 9.4.10.0.

JRuby 9.4.x targets Ruby 3.1 compatibility.

Thank you to our contributors this release, you help keep JRuby moving forward!

Ruby Compatibility

  • Fixed a NegativeArraySizeException crash parsing heredocs. #8355, #8557
  • Users can now opt into Ruby 3.3 behavior for NoMethodError and NameError that no longer inspects the target object. This inspect frequently led to memory issues. Specify JRuby flag -XnameError.inspect.object=false or JVM property jruby.nameError.inspect.object=false to disable the inspect call. #216, #8384, #8538
  • Implemented the missing Process.argv0 method, used by recent Bundler releases. #8568, #8570

Standard Library

  • The jar-dependencies gem, responsible for fetching jar file dependencies of Ruby gems, can now be updated independently of JRuby. #7262, #8488, #8502
  • An upcoming release of jar-dependencies, will fix issues sourcing jar dependencies in container deployments (partially fixed previously by an updated ruby-maven-libs gem). #7059, #8366
  • The psych gem is updated to version 5.2.3, including a fix for YAML aliases from SnakeYAML-Engine version 2.9. #8352, #8575
  • The reline gem is updated to 0.5.12. #8481

Java Integration

  • Only JVM classes imported from the same classloader hierarchy as JRuby will be bound to constants in JRuby’s package hierarchy. #8156
  • Implementing a Java interface no longer leads to constant redefinition warnings. #8349, #8503
  • Precompiled Ruby scripts now properly prepare optimized homogeneous case/when statements. Previously they would deserialize incorrectly and garble the branches. #8421, #8424

Performance and Usability

  • Additional runtime data structures are eagerly cleared when tearing down a JRuby runtime, aiding GC. #8343, #8566
  • The JRuby shell-based launcher script now properly handles JRuby installed in a path with spaces. #8441, #8442
  • The Class#subclasses method has been optimized to eliminate it as a bottleneck in complex ActiveRecord STI queries. #8457, #8462
  • Integer multiplication operations that overflow outside of int64 range have been optimized to eliminate heavy exception raises. #8516, #8523

Issues and PRs resolved for 9.4.10.0

Supercharge your day: Firefox features for peak productivity

Supercharge your day: Firefox features for peak productivity

Hi, I’m Tapan. As the leader of Firefox’s Search and AI efforts, my mission is to help users find what they are looking for on the web and stay focused on what truly matters. Outside of work, I indulge my geek side by building giant Star Wars Lego sets and sharing weekly leadership insights through […]

The post Supercharge your day: Firefox features for peak productivity appeared first on The Mozilla Blog.

parallel @ Savannah: GNU Parallel 20250122 (‘4K-AZ65’) released [stable]

GNU Parallel 20250122 (‘4K-AZ65’) has been released. It is available for download at: lbry://@GnuParallel:4

Quote of the month:

  GNU Parallel too. It is my map/reduce tool with built in support to retry failed jobs.

    — Dhruva @mechanicker.bsky.social

New in this release:

  • No new features. This is a candidate for a stable release.
  • Bug fixes and man page updates.

News about GNU Parallel:


GNU Parallel – For people who live life in the parallel lane.

If you like GNU Parallel record a video testimonial: Say who you are, what you use GNU Parallel for, how it helps you, and what you like most about it. Include a command that uses GNU Parallel if you feel like it.

About GNU Parallel


GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.

If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.

GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.

For example you can run this to convert all jpeg files into png and gif files and have a progress bar:

  parallel –bar convert {1} {1.}.{2} ::: *.jpg ::: png gif

Or you can generate big, medium, and small thumbnails of all jpeg files in sub dirs:

  find . -name ‘*.jpg’ |

    parallel convert -geometry {2} {1} {1//}/thumb{2}_{1/} :::: – ::: 50 100 200

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with:

    $ (wget -O – pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ ||

       fetch -o – http://pi.dk/3 ) > install.sh

    $ sha1sum install.sh | grep 883c667e01eed62f975ad28b6d50e22a

    12345678 883c667e 01eed62f 975ad28b 6d50e22a

    $ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0

    cc21b4c9 43fd03e9 3ae1ae49 e28573c0

    $ sha512sum install.sh | grep ec113b49a54e705f86d51e784ebced224fdff3f52

    79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224

    fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35

    $ bash install.sh

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use –citation)

If GNU Parallel saves you money:

About GNU SQL


GNU sql aims to give a simple, unified interface for accessing databases through all the different databases’ command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.

The database is addressed using a DBURL. If commands are left out you will get that database’s interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL – A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload


GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.