I bought authentic and off-brand Roomba 900-series replacement parts to compare their perceived quality. The differences are quite small.
Why does the REQUEST_URI variable return /index.html and not / when requesting a directory? Blame it on the subrequest for the DirectoryIndex file.
Websites are port-scanning your localhost. Here’s how to stop random websites from knowing what services are running on your device.
Here’s my new utility program and Ruby library for embedding XMP sidecar files (.xmp/.xml) into JPEG, PNG, SVG, and WebP image files.
Two-factor authentication requires users to commit to storing a secret code indefinitely. Popular apps lack tools to back up and data transfer those secrets.
Peer-to-peer apps forget the IP addresses it communicated with in the last session and rely on peer-discovery all the time. Caching can make them more robust.
A tutorial on how to load native lazy-loading images earlier in Safari and Firefox. Speed up page loading while keeping visitors from seeing loading images.
Night mode in Samsung browser explained. How it breaks page contrast and accessibility, pastelify SVG colors, and why web developers can’t do anything about it.
Comparing how P2P protocols like BitTorrent, Dat, and IPFS can help you distribute your Git repositories without depending on a central server.
A bug caused 30 minutes of work on an email to disappear. However, I was able to recover it by poking around in the process memory using gdb/gcore. Here’s how.
Unicode 13 introduced Creative Commons license symbols. Here’s a small free font file with the new characters, so you can use them on your computer or website.
How to disable Turbo Boost for AMD and Intel. Sacrifice some peak performance and get a cooler and quieter laptop with a longer-lasting battery.