Frank-avatar
Frank 57 days ago
Information
Meta-AI: How the objection works on Facebook and Instagram
I received 2 emails from Facebook and Instagram this week. Both have the following heading:

back-to-topLearn how we use your information to improve AI at Meta

It is often easy to overlook or ignore these emails. When you read these emails, you'll notice a few important things.

The text is a privacy notice from Meta, informing you about the use of personal data for future AI development.

  • Meta uses public posts and comments from users 18 and older to develop their AI systems
  • This includes all public information since account creation as well as interactions with Meta AI features
  • "Legitimate interest" is cited as the legal basis
  • Users can object, after which Meta will no longer use their data for AI training
  • Alternatively, users can change their privacy settings or delete content

back-to-topWhat this means in reality

Meta collects all public content from adult users and uses this data to train their AI models. They do this automatically without prior consent and instead provide users with an "opt-out" option. The text is essentially a retroactive notification that your already shared public data will be used for training AI systems unless you actively object. Meta is trying to meet legal requirements while maintaining maximum access to user data for their AI development.

back-to-topHow do I object?

If you don't want your posts, comments, and AI chats to end up in Meta AI in the future, you should actively object now.
The form for this can be found at:


You need to log in with your respective account and then provide your registered email address. There's also a field: Please tell us how this processing impacts you. Here are three suggestions for what you could write:

  • The use of my personal content for AI training violates my right to data sovereignty and privacy.
  • As a developer, I view the commercial exploitation of my contributions without adequate compensation critically.
  • My content was shared for social communication, not for training AI models for Meta's business purposes.

After "sending," you'll receive the message (you need to wait a bit): "We acknowledge your objection - This means that your request will be considered in the future regarding the development and improvement of AI at Meta. You will receive an email from us with all the details."

back-to-topUntil when can I object?

The deadline for objections is May 26, 2025. According to Meta, AI training will begin on 27 May 2025, after which data that has already been used cannot be removed from the AI models.

It is still possible to object after 26 May. However, this will only apply to future content: Data already published and processed by Meta by the deadline can no longer be removed from the AI systems. A later objection will only prevent new content published after that date from being used for AI training.

back-to-topLimitations

Meta's objection text shows that the objection actually has much more limited effects than one might initially assume:
The objection only prevents Meta from using your own public content for AI training.

Meta can continue to process your information if you:

  • Appear in images of other users
  • Are mentioned by others in their public posts
  • Appear in captions of others

The objection only applies to accounts in your current account overview - you will need to submit separate objections for your other accounts.

Meta says that the content of private messages will not be used for AI training unless you or your chat partners deliberately share it with Meta AIs.

In reality, this means that the objection only provides partial protection. While you can prevent your own public content from being used for AI training, Meta still has many ways of collecting and processing information about you that is shared by others. It's virtually impossible to completely exclude your digital presence from AI training as long as you're active on social networks and other users can mention you or interact with you.

Regards,
Frank
colinardo-avatar
colinardo 67 days ago
Information
OpenSSH Server v10.0 - Possible cipher incompatibilties with clients or libraries
The OpenSSH Team released Version 10.0 of OpenSSH on 2025-04-09. This Release introduces some changes in valid authentication ciphers for the key exchange. This could posibly lead to an issue if you use up to date rolling release linux distributions like Archlinux.

Mainly the key exchange ciphers beginning with "diffie-hellman-group*" and "diffie-hellman-group-exchange-*" ciphers were removed from the default set of enabled ciphers.
So if you are encounter problems connecting to one of your or other servers, this could be an issue when using a client or library which does not support the new default set of ciphers. I faced the problem with some Android Apps like Solid Explorer FIlemanager with a current OpenSSH server.

If you face such problems, first check your server journal/logs, you will possibly see messages like this from your sshd daemon:

Unable to negotiate with X.X.X.X port XXXX : no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,diffie-hellman-group1-sha1 [preauth]

To support such incompatible clients, and as a temporary workaround until an update for the incompatible client is released you can alter your sshd_config and add one or more supported ciphers by the client to the default set of ciphers
For example:

KexAlgorithms +diffie-hellman-group14-sha256

To see which ciphers can be added to the list on your system, issue the following command on a console

ssh -Q KexAlgorithms

See detailed changelog:
https://www.openssh.com/txt/release-10.0
Frank-avatar
Frank 68 days ago
Information
Ubuntu 25.04 Plucky Puffin: What to Expect in the New Update
Ubuntu 25.04, codenamed "Plucky Puffin", has been available since 17 April 2025. This release brings many practical improvements that make working with Ubuntu more enjoyable. Here's a look at what's changed and how you can benefit from the new release.


back-to-topHow Long Will Ubuntu 25.04 Be Supported?

Ubuntu 25.04 will be supported for nine months until January 2026. It's an interim release for tech-savvy users who want to try out new features early. If you need a long-term stable release, Ubuntu 24.04 LTS (supported until 2029) is a better choice.

back-to-topBetter Hardware Support

With the new Linux kernel 6.14, Ubuntu now runs better on more devices:

  • Support for new graphics cards: AMD Radeon RX 9000 (RDNA 4) and Intel Arc "Battlemage" GPUs
  • Better performance for the latest Intel processors (Core Ultra 200V series)
  • For the first time, there's a dedicated desktop version for ARM64 systems, simplifying installation on ARM laptops
  • Notebooks with Nvidia GPUs can now use the "Dynamic Boost" feature, which improves battery life

The performance increase is particularly noticeable with games and emulators: programs like Wine run up to 50% faster, and raytracing has also been improved, accelerating image rendering by 20-30%.

back-to-topNew Desktop and Improved Apps

The new GNOME 48 desktop brings these improvements:

wellbeing-screenshot

  • Smoother animations through Triple Buffering
  • HDR support (works under Wayland)
  • Grouped notifications for fewer distractions
  • New "Digital Wellbeing" feature that helps you keep track of your screen time
  • "Preserve Battery Health" mode that can extend your laptop battery's lifespan

There are also some new and improved apps:

  • A new PDF reader called "Papers" replaces the older Evince reader. It's based on modern technology (GTK 4 and Rust) and works faster
  • The new geolocation service "BeaconDB" automatically detects your time zone and displays relevant weather information
  • Updated versions of: LibreOffice 25.2.2, GIMP 3.0.2, VLC 3.0.21, Audacity 3.7.3, Thunderbird 128.0, and Firefox 137

back-to-topEasier Installation and More Security

The installation has been improved in several ways:

  • You can now more easily install Ubuntu alongside a Windows system with BitLocker encryption
  • Existing Ubuntu installations can be directly overwritten
  • Encrypted installations with LVM are easier to set up

The network and system management have also been modernized:

  • NetworkManager 1.52 offers better IPv6 support and more precise VPN configuration
  • The init system has been updated with systemd 257.4
  • "Dracut" is available as a new option for the initramfs system
  • Improved Netplan functions for more reliable network configuration

back-to-topFor Developers: New Tools and Frameworks

If you program yourself, you'll appreciate these innovations:

  • "Devpacks" as Snap bundles offer you current developer frameworks like Spring 6.1/6.2 and Spring Boot 3.3/3.4
  • Current versions of: Python 3.13.2/3.13.3, GCC 14.2, Rust 1.84, Go 1.24, Java 24, .NET 9, LLVM 20, PHP 8.4, PostgreSQL 17, and APT 3.0

back-to-topHow to Install Ubuntu 25.04 Plucky Puffin

back-to-topGraphical Installation

1. Download the ISO file: Visit the official Ubuntu Website and download the Ubuntu 25.04 ISO file that matches your system (regular x86_64 or ARM64).

2. Create a bootable USB drive:
  • On Windows: Use tools like Rufus or BalenaEtcher
  • On macOS: Use BalenaEtcher
  • On Linux: Use the "Startup Disk Creator" tool or the `dd` command

3. Boot from the USB drive: Restart your computer and boot from the USB drive (you may need to press F12, F2, or Delete during startup to access the boot menu).

4. Try or Install: You can choose to try Ubuntu without installing or proceed directly to installation.

5. Follow the installer:
  • Select your language
  • Choose your keyboard layout
  • Select whether to download updates and third-party software during installation
  • Choose your installation type (alongside another OS, replace an existing OS, or use the entire disk)
  • Select your time zone
  • Create your user account and password
  • Wait for the installation to complete and restart your computer

back-to-topTerminal Installation (Server or Upgrade)

back-to-topFresh Installation - Create a bootable USB drive (Server):
# Download the Ubuntu Server ISO using wget
wget https://releases.ubuntu.com/25.04/ubuntu-25.04-live-server-amd64.iso

# If you're creating a bootable USB from terminal 
sudo dd if=ubuntu-25.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress
Replace `/dev/sdX` with your actual USB drive path (be very careful with this command as it can overwrite data on the wrong device).

back-to-topUpgrade from an Existing Ubuntu Installation:
# Update your current system first
sudo apt update && sudo apt upgrade -y

# Install the update-manager-core if not already installed
sudo apt install update-manager-core

# Edit the release upgrade settings to allow non-LTS upgrades
sudo nano /etc/update-manager/release-upgrades
# Change Prompt=lts to Prompt=normal

# Start the upgrade process
sudo do-release-upgrade -d

Follow the terminal prompts to complete the upgrade. The system will download the necessary packages and eventually ask you to restart.

back-to-topConclusion

Ubuntu 25.04 "Plucky Puffin" brings many useful improvements to your everyday life with Linux. The more modern desktop, better hardware support and optimised system components make it an update for anyone who likes to work with the latest features.

Particularly noteworthy are the new GNOME 48 desktop, the improved installation, the special ARM64 version and the focus on performance and security. If you want to take advantage of these innovations early, Ubuntu 25.04 is a good choice.

face-smile

@Frank
Frank-avatar
Frank 71 days ago
Information
Fedora Linux 42 Available - Upgrade now
Fedora Workstation 42 delivers an suite of innovations that enhance the experience for both everyday users and developers alike. From its reimagined installation process to cutting-edge technical features, this release truly raises the bar for Linux desktop environments.

screenshot from 2025-04-21 01-49-39

back-to-topA More Welcoming Installation Experience

The standout change in Fedora 42 is undoubtedly the new web-based Anaconda installer, which has become the standard approach for setting up your system. This complete redesign transforms the installation process with a modern, intuitive interface that guides you effortlessly through each step. The installer offers clear help text and visual indicators of your progress, along with the flexibility to skip certain steps when appropriate.

For newcomers, the partitioning process has been dramatically simplified, while experienced users will appreciate the quick installation option. If you're setting up a dual-boot system, you'll find the improved support for coexisting with other operating systems particularly valuable.

back-to-topGNOME 48: Enhancing Your Desktop Experience

Fedora Workstation 42 comes with GNOME 48, which introduces several thoughtful improvements to your daily computing experience. The new Well-Being feature helps you maintain a healthy relationship with technology by tracking screen time and gently reminding you when it's time for a break.

Visual performance gets a significant boost with Dynamic Triple Buffering, resulting in noticeably smoother animations and reduced stuttering across the interface. Notifications are now intelligently grouped by application, giving you a clearer overview of what needs your attention.

The visual refresh continues with the new Adwaita Sans and Adwaita Mono system fonts, while the image viewer now includes basic editing capabilities for quick adjustments. Content creators will appreciate the improved HDR support, and frequent travelers will find the new time zone function in the calendar app particularly useful. Accessibility has also improved substantially, with the Orca screen reader now fully functional under Wayland.

back-to-topKDE Plasma: Now a First-Class Citizen

In a historic development for Fedora, KDE Plasma is no longer just a spin variant but has been elevated to an official main edition with equal status to GNOME. Version 6.3.4 brings comprehensive platform support, including PowerPC and ARM architectures, along with emulation capabilities for running x86 applications on non-x86 systems. This means you can enjoy the full range of KDE's powerful interface features regardless of your hardware platform.

back-to-topCOSMIC: The Future of Desktop Environments

For those interested in cutting-edge technology, Fedora 42 introduces the COSMIC desktop as an official spin for the first time. Developed by System76 using the modern Rust programming language, COSMIC—though still in alpha stage—already shows tremendous promise with its efficient window tiling system, intelligent tab management, and highly adaptable workflow options. Its Rust foundation provides exceptional stability and performance characteristics that point toward an exciting future.

back-to-topWindows Integration: Fedora Comes to WSL

In a move that bridges different computing ecosystems, Fedora 42 now offers official images for the Windows Subsystem for Linux (WSL). This enables Windows users to explore the Fedora environment without needing to set up dual booting or virtualization. The seamless integration of Fedora's development tools within Windows creates a powerful combination that's now officially supported by the Fedora project.

back-to-topVoice Control and Improved System Management

Privacy-conscious users will appreciate the new offline speech recognition system, ibus-speech-to-text, which enables voice input across all IBus-compatible applications without requiring a cloud connection. The system supports multiple languages while keeping all processing local for maximum privacy.

System maintenance becomes more straightforward with the DNF5 package manager, which now automatically handles expired repository keys, enhances security during updates, and simplifies overall package management tasks.

back-to-topDeveloper Tools: A Comprehensive Suite

Fedora 42 continues its tradition of providing up-to-date development tools with an impressive lineup that includes GCC 15, binutils 2.44, glibc 2.41, gdb 15+, Golang 1.24, LLVM 20, PHP 8.4, Python 3.13.3, Ruby 3.4, and PostgreSQL 17. It's worth noting that Python 3.8 and PostgreSQL 15 have been removed from the repository, though PostgreSQL 16 remains available.

back-to-topTechnical Innovations Under the Hood

Behind the scenes, Fedora 42 implements some significant technical advancements. All editions now support Copy-on-Write functionality based on Btrfs reflinking, which improves both performance and data safety. ARM support has been enhanced with specific optimizations for Apple Silicon and similar systems. The FEX Emulation Stack opens up new possibilities by enabling x86 applications to run smoothly on ARM hardware.

back-to-topUpgrading to Fedora 42

Upgrading to Fedora 42 is straightforward whether you prefer a graphical approach or command-line methods.

For desktop users, simply open the GNOME Software application, navigate to the Updates tab, and look for the notification about the new Fedora release. Click "Download" to begin the upgrade process.

If you're more comfortable with the terminal, you can:

# Bring system up to date
sudo dnf upgrade --refresh

# Install DNF plugin for system upgrades (if not already present)
sudo dnf install dnf-plugin-system-upgrade

# Download the upgrade to Fedora 42
sudo dnf system-upgrade download --releasever=42

# Reboot system and perform upgrade
sudo dnf system-upgrade reboot

Before upgrading, remember to back up your important data and ensure you have sufficient time and a stable power supply for the process, which may take several hours depending on your internet speed and system specifications.

back-to-topLooking Forward

Fedora 42 marks a significant transition in leadership as Matthew Miller concludes his tenure as project leader. Jef Spaleta will be taking the helm and guiding the project's future direction. With its blend of user-friendly features and technical innovation, Fedora 42 represents both a culmination of past achievements and an exciting step into the future of Linux desktop computing.

For more information, visit the Fedora Magazine or download directly from the Fedora Project website.

Regards
Frank

face-smile
Frank-avatar
Frank 104 days ago
Tutorial
How to install lsyncd directory synchronisation on Ubuntu LTS

As a developer, sometimes you need to synchronize a directory multiple times simultaneously, e.g., when a new file is written to the directory. And of course, this should happen in (near) real-time without significant delay. This is common in web development.

Here's my resource-efficient solution for multiple synchronization, e.g. from directory /srv/www/original/src to web1 and simultaneously to web2:

/srv/www/original/src
    sync to -> /srv/www/web1/src/ 
    sync to -> /srv/www/web2/src/

For synchronization, I use the tool lsyncd (Live Syncing Daemon). It's available for almost every Linux distribution and macOS.

back-to-topWhat is lsyncd?

Lsyncd (Live Syncing Daemon) is a powerful tool for real-time synchronization of directories on Linux and macOS systems. Unlike conventional synchronization tools like rsync, lsyncd continuously monitors changes in your directories and synchronizes them in near real-time. It uses the inotify subsystem of the Linux kernel to detect filesystem events and triggers synchronization only when actual changes occur, making it particularly resource-efficient.

back-to-topInstallation

sudo apt install lsyncd    # Debian/Ubuntu
systemctl enable lsyncd

Test the installation:
lsyncd --version

Example output:
Version: 2.2.3

back-to-topConfiguration

Since there is no sample configuration in "/etc" after installation, we first need to find out what it's called on Ubuntu. You can find this information in "/etc/init.d/lsyncd".
cat /etc/init.d/lsyncd | grep CONFIG=

Example output:
CONFIG=/etc/lsyncd/lsyncd.conf.lua

On Ubuntu, the configuration file is: /etc/lsyncd/lsyncd.conf.lua (on Fedora: /etc/lsyncd.conf). Now let's create the configuration file:
vi /etc/lsyncd/lsyncd.conf.lua

In the following example, the directories: css/ and js/ are excluded.
settings {
    logfile = "/var/log/lsyncd.log",  
    statusFile = "/var/log/lsyncd-status.log"  
}
-- Synchronize directories
sync {
    default.direct,
    source = "/srv/www/original/src/",  
    target = "/srv/www/web1/src/",  
    delay = 1,
    exclude = {"css/*", "js/*"}  
}
sync {
    default.direct,
    source = "/srv/www/original/src/",  
    target = "/srv/www/web2/src/",  
    delay = 1,
    exclude = {"css/*", "js/*"}  
}

back-to-topInitial Synchronization

To avoid having everything synchronized with "lsyncd" during the first synchronization, we start with an initial synchronization using "rsync" to populate the directories. This is faster.

mkdir /srv/www/web1/src/
rsync -av --delete --exclude="css/" --exclude="js/" /srv/www/original/src/ /srv/www/web1/src/  
mkdir /srv/www/web2/src/
rsync -av --delete --exclude="css/" --exclude="js/" /srv/www/original/src/ /srv/www/web2/src/  

back-to-topStart with the new configuration:

sudo systemctl restart lsyncd

Status:
sudo systemctl status lsyncd

Example output:
● lsyncd.service - LSB: lsyncd daemon init script
     Loaded: loaded (/etc/init.d/lsyncd; generated)
     Active: active (running) since Tue 2025-03-18 12:44:25 CET; 3h 22min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 246897 ExecStart=/etc/init.d/lsyncd start (code=exited, status=0/SUCCESS)
      Tasks: 1 (limit: 115371)
     Memory: 512.0M
        CPU: 3.791s
     CGroup: /system.slice/lsyncd.service
             └─246905 /usr/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.lua

Mar 18 12:44:25 ares systemd[1]: Starting LSB: lsyncd daemon init script...
Mar 18 12:44:25 ares lsyncd[246897]:  * Starting synchronization daemon lsyncd
Mar 18 12:44:25 ares lsyncd[246904]: 12:44:25 Normal: --- Startup, daemonizing ---
Mar 18 12:44:25 ares lsyncd[246897]:    ...done.
Mar 18 12:44:25 ares systemd[1]: Started LSB: lsyncd daemon init script.

back-to-topMonitoring and Status

Check logfile:
tail -f /var/log/lsyncd.log

Status:
tail -f /var/log/lsyncd-status.log

back-to-topConclusion

Lsyncd offers excellent performance for synchronizing directories in near real-time. Through event-based monitoring, changes are detected immediately and synchronized with minimal delay, making it ideal for development environments and production servers. Resource usage remains minimal since synchronization only occurs when actual changes happen. Synchronization works not only locally but can also be set up between servers. For web developers working with multiple servers or directories, lsyncd is an indispensable tool that saves you a lot of manual work and ensures consistent data across multiple systems.

If you have questions or additions, simply write a comment here.

Regards,
Frank
Frank-avatar
Frank 106 days ago
Tutorial
Resolving Standby Problems Caused by USB Devices on Fedora Linux 41

back-to-topIntroduction

Sometimes on Linux systems, certain USB devices can wake the computer from standby mode or prevent it from entering standby mode at all. In this tutorial, I'll show you how to identify problematic USB devices and disable their wake-up functionality. As an example, I'll use a Logitech Logi Bolt Receiver with a Logitech MX Mechanical keyboard - a combination that frequently causes standby problems.

P.S. The Logitech MX Mechanical Keyboard (Amazon affiliate link) is one of the best mechanical keyboards I know. All the Linux and Windows computers in the editorial and administration departments are equipped with it. Have a look at them.

back-to-topStep 1: Identify ACPI Devices with Wake-up Capability

First, you need to find out which ACPI devices can wake your computer from sleep:
cat /proc/acpi/wakeup

Example output:
Device	S-state	  Status   Sysfs node
GPP0	  S4	*enabled   pci:0000:00:01.1
GPP1	  S4	*disabled
GPP3	  S4	*disabled
GPP4	  S4	*disabled
GPP5	  S4	*disabled
GPP6	  S4	*disabled
GPP7	  S4	*disabled
GPP8	  S4	*enabled   pci:0000:00:03.1
GPP9	  S4	*disabled
GPPA	  S4	*disabled
GPPB	  S4	*disabled
GPPC	  S4	*disabled
GPPD	  S4	*disabled
GPPE	  S4	*disabled
GPPF	  S4	*disabled
GP10	  S4	*disabled
GP11	  S4	*disabled
GP12	  S4	*enabled   pci:0000:00:07.1
GP13	  S4	*enabled   pci:0000:00:08.1
XHC0	  S4	*enabled   pci:0000:0b:00.3
GP30	  S4	*disabled
GP31	  S4	*disabled
PS2K	  S3	*disabled
PS2M	  S3	*disabled
GPP2	  S4	*enabled   pci:0000:00:01.3
PTXH	  S4	*enabled   pci:0000:02:00.0

This output shows:

  • Device: The ACPI device name (e.g., PTXH, XHC0)
  • S-state: The deepest sleep state from which the device can wake up
  • Status: enabled or disabled (indicates whether the device is activated as a wake-up source)
  • Sysfs node: The corresponding path in the sysfs filesystem

back-to-topStep 2: List USB Devices

Next, list all connected USB devices:
lsusb

Example output:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 004: ID 25a7:fa0b Areson Technology Corp 2.4G Wireless Receiver
Bus 001 Device 009: ID 046d:c548 Logitech, Inc. Logi Bolt Receiver
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 1038:12f6 SteelSeries ApS Arctis Nova 4X
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

back-to-topStep 3: Identify the Problematic Device by Plugging and Unplugging

A practical method to find the problematic device is to systematically plug and unplug individual USB devices:

  1. Remove all non-essential USB devices
  2. Try to put the computer into standby mode
  3. If standby works, reconnect one device at a time and test standby after each connection
  4. Once standby stops working, you've found the problematic device

In this case, using this method identified the Logitech Bolt Receiver as the culprit. To find the specific device in the list:
lsusb | grep -i logitech

Output:
Bus 001 Device 003: ID 046d:c548 Logitech, Inc. Logi Bolt Receiver

Note the Vendor ID (046d) and Product ID (c548), as you'll need these for the udev rules.

back-to-topStep 4: Fix Standby Issues with udev Rules on Fedora Linux 41

On Fedora Linux 41, create udev rules specific to the Logitech Logi Bolt Receiver. Use the tee method to avoid permission issues:
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c548", ATTR{power/wakeup}="disabled"' | sudo tee /etc/udev/rules.d/90-logibolt-disable-wakeup.rules > /dev/null  
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c548", ATTR{power/autosuspend}="0"' | sudo tee /etc/udev/rules.d/91-logibolt-power-management.rules > /dev/null  

After creating the rules, reload the udev rules:
sudo udevadm control --reload
sudo udevadm trigger

Verify udev Rules
To check if the udev rules have been applied, use these commands:
# Find the corresponding USB device path
for device in /sys/bus/usb/devices/*; do
  if grep -q "046d" "$device/idVendor" 2>/dev/null && grep -q "c548" "$device/idProduct" 2>/dev/null; then  
    echo "Logitech Bolt Receiver found at: $device"  
    
    # Check wake-up status
    if [ -f "$device/power/wakeup" ]; then  
      echo "Wake-up status: $(cat $device/power/wakeup)"  
    fi
    
    # Check autosuspend status
    if [ -f "$device/power/autosuspend" ]; then  
      echo "Autosuspend status: $(cat $device/power/autosuspend)"  
    fi
  fi
done

The wake-up status should show "disabled" and the autosuspend status should be "0".

Output:
Logitech Bolt Receiver found at: /sys/bus/usb/devices/1-5
Wake-up status: disabled
Autosuspend status: 0

back-to-topStep 5: Alternative - Systemd Service for the USB Controller

If the udev rules aren't sufficient, you can create a systemd service (also using the tee method):
echo '[Unit]  
Description=Disable Logitech MX Mechanical Bolt Receiver wake-up
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo PTXH > /proc/acpi/wakeup"  
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target' | sudo tee /etc/systemd/system/disable-logibolt-wakeup.service > /dev/null  

Enable the service so it runs at system startup:
sudo systemctl enable disable-logibolt-wakeup.service

Verify Systemd Service
After a reboot, check if the systemd service ran successfully:
cat /proc/acpi/wakeup | grep PTXH

The output should show "disabled" for the corresponding USB controller:
PTXH	  S4	*disabled   pci:0000:02:00.0

You can also check the service status:
sudo systemctl status disable-logibolt-wakeup.service

back-to-topConclusion

With these methods, you can prevent the Logitech MX Mechanical keyboard with the Logi Bolt Receiver from waking your computer from standby mode on Fedora Linux 41. The udev rules are the preferred method as they target specific devices, while the systemd service method affects the entire USB controller.

The ultimate test is whether your computer now enters and remains in standby mode without unwanted wake-ups.

Important note: After implementing these solutions, you will no longer be able to wake your computer using the keyboard connected to the Logitech Bolt Receiver. You will need to use another device, such as your mouse or the power button (configured to trigger standby mode via Gnome Settings -> Power -> Power Button Behavior: Suspend), to wake your computer from standby.
Frank-avatar
Frank 106 days ago
2 comments
Comment: Linux NetworkManager - Adding a search domain using nmcli or nmtui
Yes, of course you can. I have added it above. The configuration will then look something like this (but I am a fan of the vi editor):

vi /etc/NetworkManager/system-connections/'Wired connection 1.nmconnection'  

[connection]
id=Wired connection 1
uuid=c0718bbc-fa2b-3be2-a863-4d946ffa16ff
type=ethernet
autoconnect-priority=-999
interface-name=enp5s0
timestamp=1740436074

[ethernet]

[ipv4]
dns=192.168.0.1;
dns-search=searchdomain.tld;
method=auto

[ipv6]
addr-gen-mode=default
method=auto

[proxy]

Simply change the 'dns-search=searchdomain.tld;' accordingly and restart the NetworkManager:
systemctl restart NetworkManager

greetings
Frank face-smile
Frank-avatar
Frank 107 days ago
Information
Windows 11 Download (ISO, Media Creation Tool)
Windows 11 is Microsoft's latest operating system and offers numerous improvements over Windows 10. In this guide, you'll learn how to download and install Windows 11 for free. You can do this directly with the ISO file or with the Media Creation Tool.


back-to-topCurrent Version: Windows 11 2024 Update (Version 24H2)

Microsoft recently released the Windows 11 2024 Update (Version 24H2). This version brings numerous improvements and new features. Before starting the installation, you should check the Windows release information to identify known issues that might affect your device.

back-to-topMethods for Windows 11 Download

There are various ways to install Windows 11 or create Windows 11 installation media. We present the three official methods:

back-to-top1. Windows 11 Installation Assistant

The Windows 11 Installation Assistant is the easiest way to install Windows 11 on your device. This option is ideal for users who want to upgrade directly from Windows 10 to Windows 11.

Prerequisites:

  • You need a Windows 10/11 license
  • Your PC must have Windows 10, version 2004 or higher installed
  • At least 9 GB of free storage space to download Windows 11
  • Your PC must meet the Windows 11 device specifications

Installation steps:

  1. Download the Installation Assistant
  2. Run the file as administrator
  3. Accept the license terms
  4. Click on "Accept and install"
  5. After preparation is complete, click on "Restart now"

Please note: The Windows 11 Installation Assistant does not run on Arm-based PCs, only on PCs with x64 processors.

back-to-top2. Create Windows 11 Installation Media (Media Creation Tool)

If you want to install Windows 11 on another PC or want to perform a clean installation, the Media Creation Tool is a good choice. With this tool, you can create a bootable USB drive or DVD.

Prerequisites:

  • A Windows 10/11 license or a Windows 10 device eligible for upgrade
  • Internet connection
  • A USB drive with at least 8 GB of storage space or a blank DVD with at least 8 GB
  • A PC with a 64-bit CPU that meets the Windows 11 system requirements

Steps to create installation media:

  1. Download the Media Creation Tool and run it as administrator
  2. Accept the license terms
  3. Select "Create installation media for another PC"
  4. Choose language, edition, and architecture (64-bit) for Windows 11
  5. Select the media type:
    • USB drive: Connect an empty USB drive
    • ISO file: Save the ISO file on your PC to burn it to a DVD later

Important: If your PC doesn't meet the minimum requirements, it will lose support and won't receive updates after installing Windows 11.

back-to-top3. Download Windows 11 ISO File Directly

For experienced users, directly downloading the ISO file is the best choice. This also applies if you want to install Windows 11 in a virtual machine like VirtualBox.

The Windows 11 ISO file contains both versions - Windows 11 Home and Windows 11 Pro. Which version gets installed depends on your product key.

After downloading the ISO file, you have the following options:

  • Burn the ISO to a DVD using programs like Nero or CDBurnerXP
  • Create a bootable USB drive using tools like Rufus
  • Use the ISO for virtual machines

back-to-topWindows 11 Installation without TPM 2.0

Microsoft has set strict system requirements for Windows 11, including a Trusted Platform Module (TPM) version 2.0. This security chip is located on the motherboard or in your PC's processor. If it's not present, a standard installation is not possible.

However, you can bypass this restriction with the Rufus tool:

1. Download Rufus
2. Select "Extended Windows 11 Installation (no TPM / no Secure Boot)" under "Image option"
3. Create a bootable USB drive with the Windows 11 ISO

back-to-topSystem Requirements for Windows 11

Before starting the Windows 11 download, you should ensure that your PC meets the minimum requirements:

  • Processor: 1 GHz or faster with at least 2 cores on a compatible 64-bit processor
  • RAM: at least 4 GB
  • Storage space: at least 64 GB
  • System firmware: UEFI, Secure Boot capable
  • TPM: Version 2.0
  • Graphics card: DirectX 12 or higher with WDDM 2.0 driver
  • Display: Larger than 9 inches with HD resolution (720p)
  • Internet connection: Windows 11 Home edition requires a Microsoft account and internet connection

Here are the current system requirements:


Check for compatibility


Here are the Windows 11 CPU requirements


back-to-topNew Features in Windows 11

Windows 11 brings many improvements over Windows 10:

  • A completely new design with a centered Start menu
  • Redesigned taskbar with new functions
  • Widgets that display personalized information
  • Improved security through TPM 2.0 requirement
  • Microsoft Teams integration instead of Skype
  • Microsoft Edge replaces Internet Explorer
  • New themes for light and dark mode
  • Improved productivity features

back-to-topBackup Data Before Installation

Before you begin installing Windows 11, be sure to back up your important data. A clean installation will delete all data on the hard drive.

You can back up your data through:

  • External hard drive
  • Cloud storage
  • Backup software

back-to-topFrequently Asked Questions about Windows 11 Download

Is downloading Windows 11 free?
Downloading the ISO file is free. However, you need a valid license to use Windows 11. If you already own Windows 10, you can upgrade to Windows 11 for free.

Can I download Windows 11 without the Media Creation Tool?
Yes, you can download the ISO file directly without using the Media Creation Tool.

How do I load Windows 11 onto a USB drive?
You can use the Media Creation Tool or other tools like Rufus to create a bootable USB drive.

Until when will Windows 10 be supported?
Microsoft will end support for Windows 10 in October 2025, including security updates.

back-to-topTroubleshooting Installation Problems

Sometimes problems can occur during the installation of Windows 11. Here are some common problems and their solutions:

The PC doesn't boot from USB or DVD:
If your PC doesn't automatically boot from the installation media, you need to open the boot menu. You may also need to change the boot order in the BIOS or UEFI settings. Depending on the motherboard manufacturer, press F2, F12, Del, or Esc during system startup.

"This PC can't run Windows 11":
This message appears when your system doesn't meet the minimum requirements. In this case, you can upgrade the hardware. Alternatively, you can use the Rufus method to bypass the TPM and Secure Boot requirements.

Slow download speed:
If the ISO file downloads slowly, try at different times. Choose times when fewer people are using the network. You can also use a download manager that can resume interrupted downloads.

back-to-topConclusion

Windows 11 offers numerous improvements over its predecessor. With the various download options, you can choose the best method for installing Windows 11. These include the Windows 11 Installation Assistant, the Media Creation Tool, and the direct ISO file.

Before installation, make sure your PC meets the system requirements. Back up your data to avoid loss. With the right preparation, installing Windows 11 will be a smooth process.

Have fun with Windows 11 face-wink
aqui-avatar
aqui 107 days ago
2 comments
Comment: Linux NetworkManager - Adding a search domain using nmcli or nmtui
You can use the nmcli for the "search domain" setting, or the simpler nmtui with a shell GUI
You can also edit your connection under /etc/NetworkManager/system-connections/ and add the dns-search command with the nano editor.
There are always many roads to Rome... face-wink
Frank-avatar
Frank 110 days ago
Tutorial
CORS: Configure Cross-Origin Resource Sharing
Hello user, today I had the pleasure of working with CORS.


back-to-topWhat is CORS?

Cross-Origin Resource Sharing (CORS) allows external web browsers or other web clients to access certain data on your own web server. This is usually prohibited by the Same-Origin-Policy (SOP). This usually involves web APIs and data sharing.

Since we don't share our data with anyone, it wasn't clear to me why we needed a CORS rule for this. As always, everything can be manipulated and hackers recommend that you set CORS so that you can load your content yourself. If you visit hacker sites, you will quickly find the topic: "Vulnerability: CROSS ORIGIN RESOURCE SHARING".

The recommendations of the hacker community are therefore as follows:
Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

General information about CORS can be found at the following links:


back-to-topHow do you test for CORS?

You can go to the desired page in the browser and launch the browser's developer tools, e.g. via the "Examine Element" menu (e.g. Firefox on the Mac: option+cmd+i). After clicking on the page, you will find the corresponding header under Network Analysis. Here is an example:

bildschirmfoto 2025-03-12 um 18.44.36

Of course, this can vary from browser to browser and system to system, but in the end, all browsers have a similar view.

It is easier, for example, to use curl in the console:
curl -I -X OPTIONS -H "Origin: https://DOMAIN.TLD" -H 'Access-Control-Request-Method: GET' https://DOMAIN.TLD/index.php 2>&1 | grep 'Access-Control-Allow-Origin'  

Tip: If you are on a development system with an invalid SSL certificate, you need to add a "-k" as a curl option (e.g. curl -k -I -X OPTIONS -H ....). This will suppress the invalid certificate face-smile

Both methods should have the following in the header:
Access-Control-Allow-Origin: https://DOMAIN.TLD

If "Access-Control-Allow-Origin" is present, CORS is controlled. Of course there can also be a "*" in it. This allows all access from other servers. You can usually find this in public APIs.

back-to-topHow do I set CORS?

This can be done in several ways: Through the proxy, in the web server, or through a script. For example, if you have a HAProxy and want to enable CORS in general, all you need to do is add a few lines of code to your config:

frontend http_front
    bind *:80
    
    # CORS headers
    http-response set-header Access-Control-Allow-Origin "https://your-domain.com"  
    http-response set-header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE"  
    http-response set-header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization"  
    http-response set-header Access-Control-Max-Age "3600"  
    
    # Optional: Handle OPTIONS preflight requests
    acl cors_preflight method OPTIONS
    http-request return status 204 if cors_preflight
    
    default_backend web_servers

backend web_servers
    server server1 127.0.0.1:8080 check

back-to-topDisadvantage - Advertising systems are blocked

But this has a big disadvantage. Sites that rely on advertising have the problem that all advertising systems and their javascripts are immediately blocked. The prerequisite for this is, of course, that you enter your own domain and not the "*". So this is not the solution for us (safe, but impractical).

back-to-topSet via HEADER

So you should tweak it. For example, for us, this would be the login, the settings pages, the news pages, etc. This is the members area. Since there is no advertising displayed there anyway, we can start here.

In PHP, it is very easy to set the page HEADER, so we do not need to intervene in the configuration of the proxy or the web server. A simple:
header("Access-Control-Allow-Orgin: https://rootdb.com");  
header("Access-Control-Allow-Methods: GET,POST");  

on the respective pages is sufficient to set security via CORS. You should then check it again in the browser or via curl. If you did everything correctly, you should see
Access-Control-Allow-Origin: https://rootdb.com
and everything is fine. Of course, this works with all languages that can set a HEADER.

I hope I could help some web developers with this. The topic is complex, but can be implemented quite easily.

Greetings
Frank
Frank-avatar
Frank 110 days ago
Tutorial
Modifying the Hosts file in Mac OS X
Frequently asked, here is my mini tutorial on it.

How do I change the 'hosts' file under macOS (from 10.5 Leopard to 15.3.1 Sequoia) to link an internal IP address with a DNS name?

There is a file called 'hosts' in the '/etc/' directory. This file has to be accessed with administrator rights. This is done in the 'Terminal' application using the 'sudo' command.

sudo nano /etc/hosts

The "nano" text editor is used here. You can also use the "vi" or "vim" editor (sudo vi /etc/hosts).
After the password prompt, the contents of the "hosts" file will appear:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

You can now add your own entries. Example:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

192.168.0.1 www.mydomain.com
192.168.0.2 mymac

Save the file (in nano: Ctrl->X and then enter Y to save) and then execute the command:

dscacheutil -flushcache
This command will update the existing DNS cache.

You can now 'ping' to test the internal name resolution.

# ping mymac
PING mymac (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=0.155 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.166 ms

That's it face-smile

Greetings Frank
Frank-avatar
Frank 117 days ago
Tutorial2 comments
Linux NetworkManager - Adding a search domain using nmcli or nmtui
Actually, I just want to add my search domain to the network settings (search domain or dns search) under Arch-Linux and Fedora. This used to be very easy via Settings -> Network. Unfortunately, this was removed from the settings at some point. My environment is Gnome 43.3 and 46.

Like many other Linux distributions, my Arch or Fedora Linux is managed via the Network Manager. So this tip applies to all those who manage their network via NetworkManager (nmcli) (Ubuntu with ifupdown, Debian, Fedora, etc.).

The nmcli and nmtui commands are installed by default on both Linux systems. If you do not have at least nmcli installed, you are not using NetworkManager. You can use the nmcli for the "search domain" setting, or the simpler nmtui with a shell GUI.

Tested with:
  • Endeavor Arch Linux (Gnome 43.3)
  • Fedora 40, 41 (Gnome 46,47)

back-to-topnmcli

sudo nmcli con show
NAME                         UUID                                  TYPE      DEVICE 
Wired connection 1  7708dd93-ea55-398a-9dd1-b5be2c65d4b6  ethernet  enp4s0 
lo                           e6140168-f933-434b-883b-8095ee9b9488  loopback  lo     

sudo nmcli con mod 'Wired connection 1' ipv4.dns-search "searchdomain.tld"  

With the command:
sudo nmcli con show 'Wired connection 1' | grep dns-search  
or
resolvectl
you can then check the settings.

Than restart the NetworkManager.

You can also change the configuration without using the nmcli command by simply editing the appropriate config file (e.g. using the vi editor):

vi /etc/NetworkManager/system-connections/'Wired connection 1.nmconnection'  

[connection]
id=Wired connection 1
uuid=c0718bbc-fa2b-3be2-a863-4d946ffa16ff
type=ethernet
autoconnect-priority=-999
interface-name=enp5s0
timestamp=1740436074

[ethernet]

[ipv4]
dns=192.168.0.1;
dns-search=searchdomain.tld;
method=auto

[ipv6]
addr-gen-mode=default
method=auto

[proxy]
Simply change the 'dns-search=searchdomain.tld;' accordingly and restart the NetworkManager.

You must restart NetworkManager each time you make a change:
systemctl restart NetworkManager

back-to-topnmtui

Fedora Install:
sudo dnf install nmtui

Start nmtui:
[root@frank-endeavour ~]# nmtui

1) Select Edit connection
2) Select IPv4 configuration “Display”
3) Enter the relevant domain under “Search domains” and then select “OK”.

back-to-topUpdate for Ubuntu

In newer versions of Ubuntu, the Network Configuration Abstraction Layer Netplan runs to provide the network (from version 20.04 for a new installation). When upgrading, the old network configuration is simply carried over. Under 'Netplan', the file '/etc/network/interfaces' is unfortunately no longer available (ifupdown has been replaced by netplan).

This is the 'Search Domain' configuration under 'Netpan':

vi /etc/netplan/00-installer-config.yaml

network:
    ethernets:
        enp4s0:
            addresses:
            - 192.168.0.4/24
            dhcp4: false
            gateway4: 192.168.0.1
            nameservers:
                addresses:
                - 192.168.0.1
                search:
                - searchdomain.tld
    version: 2

followed by one:

sudo netplan generate
sudo netplan apply

That's all face-smile
Frank-avatar
Frank 123 days ago
1 comment
Comment: New AI: Claude 3.7 Sonnet with deep thinking introduced
There is also a free Claude app for MacOS or iOS that works very well. In addition, Claude is integrated into good editors for developers.

For example, I use the one from Jetbrains or the open source ZED editor. Both have perfect integration of the Claude AI. So you don't have to copy and paste code all the time. You just select the relevant code and tell the AI what you want it to do.

P.S. I haven't seen a faster editor for developers than ZED. You should check it out face-smile

Regards,
Frank
colinardo-avatar
colinardo 123 days ago
Tutorial
Mikrotik Scripting - Quickly filter Router-Log by datetime
Sometimes you just want to get a reduced list of events from your router log filtered by date/time.
There are numerous variants which can do this task, but most of them are rather lengthy and need additional variables/loops.

Here is a quick solution to filter the list of events by time.

back-to-topExample: Show all events from within the last hour:

/log print where (([:timestamp]+([/system clock get gmt-offset]."s"))-[:totime (time)]) < 1h  

For a time range you can either use the short time codes like 1h or 10m or 50s with unit suffix, or you specify the time in timecode syntax like 00:15:00.

back-to-topExample: Show all events since the current day at midnight

/log print where [:totime (time)] >= [:totime [/system clock get date]]

back-to-topExample: Show all events between two dates:

/log print where [:totime (time)] > [:totime "2025-02-27 00:00:00"] && [:totime (time)] < [:totime "2025-02-28 00:00:00"]   

back-to-topExample: Store all events from the last hour in a variable

# output associative array using print with "as-value" 
:global MYLOG [/log print as-value where (([:timestamp]+([/system clock get gmt-offset]."s"))-[:totime (time)]) < 1h]  
# the same principle also can be used with find to just get the internal references for the entries
:global MYLOG [/log find (([:timestamp]+([/system clock get gmt-offset]."s"))-[:totime (time)]) < 1h]  


back-to-topExample: Show all events between two dates and matching the string "logged in" in it's message body:

/log print where [:totime (time)] > [:totime "2025-02-27 00:00:00"] && [:totime (time)] < [:totime "2025-02-28 00:00:00"]  && message ~ "logged in"  


Important note: This method only works reliable starting with Router OS Version 7.17. This is because before this release, the time column in the log section had no standard format and an additional if check was needed. In the current releases the column now uses the ISO standard time format for every entry wich makes processing much easier.

Regards @colinardo
151554-avatar
151554 125 days ago
Information1 comment
New AI: Claude 3.7 Sonnet with deep thinking introduced
Yesterday, AI maker Anthropic unveiled Claude 3.7 Sonnet, which has adaptive reasoning capabilities. Claude is in direct competition with ChatGPT. In developer circles, Claude is preferred because the AI is more accurate.

Claude 3.7 Sonnet is a hybrid AI model that combines rapid response capabilities with advanced reasoning, allowing users to dynamically adjust the model's computational intensity for different tasks ('Normal' and 'Extended').

bildschirmfoto 2025-02-25 um 14.41.35

A unique feature of this model is that users can fine-tune computational intensity using a slider. This allows precise control over resource allocation and associated costs.

Claude 3.7 Sonnet operates as a hybrid model, switching between two modes:

  • Fast response for simple tasks
  • Deep thinking for complex tasks

In its advanced thinking mode, Claude 3.7 Sonnet uses active self-reflection before providing answers. This leads to improvements in areas such as

  • Mathematics
  • Physics
  • Following instructions accurately
  • Programming

What do you think about these developments? Do you see specific applications for your projects?
Frank-avatar
Frank 126 days ago
Information
What is the difference between iPhone 16e and iPhone 16?
The iPhone 16e and iPhone 16 differ in a few ways, even though they are part of the same family.

Here are the main differences:

  • With a starting price of €699 for 128GB, the iPhone 16e is significantly cheaper than the iPhone 16, which starts at €949.
  • The iPhone 16e retains the notch, while the iPhone 16 uses the Dynamic Island.
  • The iPhone 16 offers a higher peak brightness of 2,000 nits compared to 1,200 nits for the iPhone 16e.
  • The iPhone 16e is only available in two colours (black and white), while the iPhone 16 comes in five colours (plus pink, teal, ultramarine).
  • The iPhone 16 has a dual camera system with an additional 12MP ultra wide angle camera, which the 16e lacks.
  • The iPhone 16e lacks some camera features such as macro, action and cinematic modes.
  • Both models use the A18 chip, but the iPhone 16 has a 6-core graphics processor, while the 16e has a 4-core graphics processor.
  • The iPhone 16 also supports MagSafe, while the iPhone 16e does not.
  • The G5 modem with the new C1 chip is Apple's own design (7 years in development). The iPhone 16 uses a Qualcomm Snapdragon X75 5G modem.
  • The iPhone 16 has a slightly longer battery life of 27 hours compared to 26 hours for the iPhone 16e.

Despite the differences, both models have a lot in common, such as the A18 chip, 5G support, 6.1-inch OLED display, 48-megapixel primary camera, Action Button, USB-C port and Apple Intelligence support.

face-smile
colinardo-avatar
colinardo 130 days ago
Tutorial
Mikrotik Scripting: Using the "place-before" parameter to place fw rule "after" other rule
This is a quick trick to programmatically place firewall rules after specific rules, not before.

Normally you already have the place-before parameter when adding firewall rules, but there can be times when you programmatically need to place the rule after another specific rule.

Assumed you want to insert a new rule after the common "established, related" states firewall rule in the input chain, you could do this

/ip firewall filter add chain=input protocol=tcp dst-port=22 action=accept place-before=([get ([find chain=input && connection-state ~ "established"]->0)]->".nextid")  

This places the rule after it. It makes use of the .nextid property of the entry to get the internal id of the next item in the list. This also works when the rule is the last one in the chain, because the .nextid property will then automatically receive the maximum internal id reference *ffffffff.

The above oneliner assumes that a specific rule already exists, otherwise this command will fail. So to be secure you normally want to do a check if the rule exists:

{
    :local rule ([/ip firewall filter find chain=input && connection-state ~ "established"]->0)  
    :if ($rule) do={
       /ip firewall filter add chain=input protocol=tcp dst-port=22 action=accept place-before=([get $rule]->".nextid")  
    } else={
       :error "Rule not found!"  
    }
}

Regards @colinardo
max-avatar
max 131 days ago
Tutorial
Microsoft Edge no longer starts - Reset Edge
On a couple of occasions, after logging in to Edge, the browser itself would no longer start. The usual PC restart didn't help either. Tested on Windows 11. Here are two things that helped me:

back-to-topRepair Edge

Go to Settings -> Apps -> Installed Apps and search for 'edge'.

Select 'Change' from the three dot menu and then click 'Repair'.

3388144983656078

If this does not help, you may need to delete files.

back-to-topDelete the Edge user profile

In Explorer, browse to the following directory

C:\Users\username\AppData\Local\Microsoft\Edge

In general, you can only permanently delete the User Data folder if your Edge browser no longer starts or is broken.  Otherwise, there are open directories in the folder that cannot be deleted.

Here you will find the 'User Data' folder. Just delete it completely. Edge should then start up as if you had reinstalled it.

3388144957481983

back-to-topWhat happens to existing favourites and passwords?

As I usually synchronise through my Microsoft account, the favourites and passwords were back immediately.
Without synchronisation, they are probably gone.

back-to-topSo always make a backup!

Regards,
@max
Frank-avatar
Frank 132 days ago
Tutorial
How do I remove the Google Updater from macOS?
Who hasn't experienced this: you delete Google Chrome in macOS and yet the annoying ‘Google Updater has added objects that can run in the background’ messages continue to appear. Even if you have disabled them in the settings ‘General -> Login objects -> Allow in background’, they are still active in the system.

The tip refers to macOS 17, but should also work with other versions. In general, you should be careful not to delete the wrong files. A backup is very helpful here.

I have been deleting MacOS programs for years using the free programme AppCleaner.

back-to-topIn this way, background services can be permanently removed:

Open a terminal and type the following command

cd ~/Library/LaunchAgents

There are two files here that belong to Google. If there are other files in the folder, they belong to other background services. Please do not delete them.

com.google.keystone.agent.plist
com.google.keystone.xpcservice.plist

The two Google files will now be deleted:

rm com.google.keystone.*

If the service is still running and cannot be deleted, you will need to type 'sudo' in front of it and enter the login password.

There are two other directories that should be searched in the same way:

cd /Library/LaunchAgents
cd /Library/LaunchDaemons

If there is still a 'google' file, delete it too.

Then close and re-open System Preferences. The 'Google Update' service should no longer appear in the list or notifications. If you want to be absolutely sure, you can simply restart your system.

This procedure usually works for all background services under MacOS.

Finally, we check that the following directory exists

cd ~/Library/Google
ls -la

If this is the case, please run the following uninstall script:

.~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/ksinstall --uninstall
rm -r ~/Library/Google/

The directory is now gone, and with it the 'Google Update' background service.

Kind regards,
Frank
Frank-avatar
Frank 134 days ago
Tutorial
Fast string compare function for PHP
Hello User,

As a developer, I was faced with a challenge: I needed a fast but rough string comparison function for our website. It checks the approximate percentage change between old and new text.

I tried a few PHP functions like similar_text() and later levenshtein(). But even these native functions took over 30 seconds for long texts - far too long for our website.

My search for a more efficient solution led me to a simple but highly effective method. Instead of complex algorithms, I now use basic word processing techniques such as length comparison and word counting. The result? An 80% to 90% increase in performance over similar_text() and levenshtein().

My humble stringCompare() function compares two texts ($str1, $str2) and returns the difference as a percentage. It is not only fast, but also easy to understand and implement. However, it is not 100% accurate (depending on the length of the text, single digit differences are possible). It focuses more on quantitative aspects (length, word frequency) than on qualitative aspects (meaning, context). It is effective at identifying structural similarities and literal matches, but may miss more subtle differences or similarities in content.

I would like to share this solution with the developer community in the hope that it may help with similar performance issues.

public static function stringCompare($str1, $str2): float {
        if ($str1 === $str2) return 0.0;

        $str1 = self::cleanString($str1);
        $str2 = self::cleanString($str2);

        if ($str1 === '' && $str2 === '') return 0.0;    
        if ($str1 === '' || $str2 === '') return 100.0;    

        $len1 = strlen($str1);
        $len2 = strlen($str2);

        // length change
        $lenChange = abs($len1 - $len2) / max($len1, $len2);

        // Improved detection of repeated text
        $repetitionFactor = 0;
        if (str_contains($str2, $str1) || str_contains($str1, $str2)) {
            $repetitions = max($len1, $len2) / min($len1, $len2);
            $repetitionFactor = 1 - (1 / $repetitions);
        }

        // character comparison
        $chars1 = count_chars($str1, 1);
        $chars2 = count_chars($str2, 1);
        $charDiff = 0;
        foreach (array_keys($chars1 + $chars2) as $i) {
            $charDiff += abs(($chars1[$i] ?? 0) / $len1 - ($chars2[$i] ?? 0) / $len2);
        }
        $charChange = $charDiff / 2;  // normalisation

        // comparison of words
        $words1 = str_word_count(mb_strtolower($str1), 1);
        $words2 = str_word_count(mb_strtolower($str2), 1);
        $wordCount1 = array_count_values($words1);
        $wordCount2 = array_count_values($words2);
        $wordDiff = 0;
        $allWords = array_unique(array_merge(array_keys($wordCount1), array_keys($wordCount2)));
        
        $count1 = count($words1);
        $count2 = count($words2);

        if ($count1 > 0 || $count2 > 0) {
            foreach ($allWords as $word) {
                $freq1 = $count1 > 0 ? ($wordCount1[$word] ?? 0) / $count1 : 0;
                $freq2 = $count2 > 0 ? ($wordCount2[$word] ?? 0) / $count2 : 0;
                $wordDiff += abs($freq1 - $freq2);
            }
            $wordChange = $wordDiff / 2;  // normalisation
        } else {
            // If no words are recognised, we only use the character comparison.
            $wordChange = $charChange;
        }

        // Weighted total change
        $overallChange = max(
            $lenChange,
            $repetitionFactor,
            ($charChange * 0.4 + $wordChange * 0.6)
        );

        return round(min($overallChange, 1.0) * 100, 2);
}

Example:

$str1 = "This is an example text for the comparison";    
$str2 = "xxxx xx xx xxxxxxx xxxx xxx xxx xxxxxxxxxx";    
echo "Percentage change (same position, replaced by x): " . TextComparison::stringCompare($str1, $str2) . "%\n";    

Result: Percentage change (same position, replaced by x) : 93.59%

face-smile
max-avatar
max 160 days ago
IMHO
Are f2 movies safe for streaming or not
Is F2Movies Safe for Streaming? - My Experiences and Risks

Hello everyone,

I've been looking more deeply into F2Movies and want to share my findings here. In short: F2Movies is not safe for streaming. There are significant risks related to legality, malware, privacy, and potential legal consequences.

back-to-topLegality and Copyright Risks

F2Movies is an illegal streaming site that hosts and distributes copyrighted content without authorization. Using such sites can expose you to legal trouble, including fines or other penalties, depending on local laws. The site is frequently blocked or taken down due to copyright infringement issues.

back-to-topSecurity and Malware Risks

As a developer, I'm particularly cautious about security risks. Free streaming sites like F2Movies often expose users to malware, viruses, phishing attacks, and invasive ads. The F2Movies Android app, in particular, is flagged for potential malware or adware since it is unofficial and not available through trusted app stores.

While some sources claim the site lacks pop-ups and ads (which could reduce risk), this is not consistent across all versions or mirrors of the site. Security site reviews indicate a low trust score for certain F2Movies domains, warning users to be very cautious.

back-to-topPrivacy Concerns

While F2Movies does not require registration (which limits exposure of personal information), it may still collect anonymous data such as IP addresses and browsing behavior. Using a VPN can help mask your activity, but it does not make the site legal or fully safe.

back-to-topUser Opinions and Site Reviews

Some user comments suggest F2Movies is "just a regular streaming site" and not based on torrenting, implying lower risk of direct file sharing. However, automated trust reviews and security blogs consistently advise against using the site due to its illegal nature and potential security risks.

back-to-topMy Conclusion

As a developer who deals with security issues daily, I would personally advise against using F2Movies and similar sites. The combination of legal risks and potential security threats simply isn't worth the access to free movies and TV shows. There are plenty of legal streaming services with moderate costs that provide a safe and worry-free movie experience.

Best regards,
max

Chronological overview of all posts and comments

The stream gives you a chronological overview of all the activity on our forums. You can see all the posts, comments and new registrations in chronological order, so you never miss an important discussion.