Mostly work related stuff which I would've entered into my "Log book". Instead of hosting it on an intranet site, outsourcing the hosting to blogger!
Tuesday, July 28, 2026
Android app policy violation triggered by old testing tracks - Blank release fix
Sunday, July 26, 2026
h5p page in Moodle does not show next activity on completion
There was this issue faced by the admins of one of our Moodle instances - "Quite a few sections use the H5P Interactive Book format and contain a video to be viewed and a few quizzes to be answered. The completion condition that has been set is to view the activities and get a grade in the quiz. Even though the conditions are met, the option to move to the next activity is not available. However, if the learner refreshes the screen, then the next activity is available. But it also clears the submitted responses in the current activity."
Gemini gave a long reply, based on which the final solution, obtained by testing on a development instance, was:
- Enable "Save Content State" in Site Administration > Plugins > Activity Modules > H5P
- Add a "Refresh" prompt for students Because Moodle cannot currently auto-refresh the page when an H5P grade is achieved
- Turn on Edit mode.
- Click Add an activity or resource below the H5P activity.
- Select URL.
- In the Name field, type: Save changes (or Save changes and continue).
- In the External URL field, paste the URL of the course page.
- Under Appearance, set "Display" to Open (or "Automatic").
- Click Save and return to course.
Saturday, July 25, 2026
slightly more user-friendly mass mailing script
disk space alert and cleanup of MySQL databases with Moodle logs
Thursday, July 23, 2026
Azure portal - Review Azure Copilot agent access settings before 1 August
Wednesday, July 22, 2026
transition to Moodle Marketplace - mod_book unavailable
"The transition to Moodle Marketplace may require you to make some adjustments to your Moodle site set-up. See what’s changed at Plugins Directory has moved to Moodle Marketplace."
reviewed the complete list with the list of installed plugins. I have identified 2 plugins, viz., mod_book, atto_fontfamily.
ChatGPT suggested running SQL to check which courses use mod_book, which I ran -
SELECT DISTINCT c.id, c.shortname, c.fullname,
COUNT(cm.id) AS number_of_books
FROM prefix_course_modules cm
JOIN prefix_modules m ON cm.module = m.id
JOIN prefix_course c ON cm.course = c.id
WHERE m.name = 'book'
GROUP BY c.id, c.shortname, c.fullname
ORDER BY c.fullname;
On one of our instances, there were 5 courses with 6 "books" while two others had "books" only in "test" or "dump" courses.
Creating service account for accessing Google Drive API
Tuesday, July 14, 2026
Manage your unused OAuth clients - Google cloud
Friday, July 10, 2026
Google apps script issue - script.google.com refused to connect - google glitch
"If no changes have been made to the script, then perhaps it is a transient google problem, and might be resolved in a few hours.If not, we would need to check if google apps scripts have any recent policy changes."
Tuesday, July 07, 2026
reminder to take a break - Mac version
Saturday, July 04, 2026
Running OpenSpace on ARM64 hardware like Apple Silicon Macs
https://github.com/hn-88/OpenSpace-AppImage/wiki/OpenSpace-on-Mac#running-openspace-on-vms-in-macos
Friday, July 03, 2026
incident and response - malicious bots
The logs clearly show an Apache HTTPServer running PHP and hosting a WordPress application.The logs indicate that your server was hit by an aggressive automated attack(likely a botnet) starting around 07:33:35, which appears to have eithersucceeded in exploiting a vulnerability or overloaded the server, causing it tocrash shortly after.
(Server had run out of memory).
Gemini suggested the following -
- Hide and Protect Your Origin IP - which we may not do
- Patch and Update the Server Software - which we're doing
- Implement a Web Application Firewall (WAF) - which is in place
- Clean Up WordPress Configuration - "Open your wp-config.php file, locate line 63, and remove the duplicate definition of WP_AUTO_UPDATE_CORE. While this didn't cause the crash, it eats up server I/O and makes reading logs difficult."
- Restrict PHP Execution in Uploads Directories
- Implement Intrusion Prevention (Fail2Ban)
"As we saw in the access logs, when the mobile app seesthis 500 error, its poorly designed error-handling logic says: "Somethingwent wrong! Retry the entire sync process!" It then proceeds to download 4MBof lesson data, hits the notification endpoint again, gets another 500error, and repeats the cycle every 15 seconds until your server runs out ofmemory and crashes."
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
(we can optionally edit these,
In case the logpath is custom - fail2ban looks by default for
In the case of one of our servers, we needed to change this to
sudo systemctl status fail2ban
sudo fail2ban-client status