Ross McKay's Avatar

Ross McKay

@webaware.fosstodon.org.ap.brid.gy

WordPress hooker. Python Djangler. Bean enthusiast. Microbe wrangler. Deep sigh-ops. Lake Macquarie, NSW, Australia WP: https://profiles.wordpress.org/webaware/ [bridged from https://fosstodon.org/@webaware on the fediverse by https://fed.brid.gy/ ]

39
Followers
2
Following
53
Posts
05.10.2024
Joined
Posts Following

Latest posts by Ross McKay @webaware.fosstodon.org.ap.brid.gy

Preview
Reified generics by php-generics · Pull Request #21317 · php/php-src Add reified generics to PHP Summary This PR adds reified generics to the Zend Engine — generic type parameters that are preserved at runtime and enforced through the type system. Unlike type erasur...

Sigh, the AI Slop has now come for the PHP project.

https://github.com/php/php-src/pull/21317

#AiSlop #php

01.03.2026 13:54 👍 7 🔁 8 💬 5 📌 0

We are now in a strange situation where selecting text on images works better than selecting text in PDFs

25.02.2026 12:53 👍 3 🔁 3 💬 1 📌 0

IBM crashes because we’re gonna YOLO a replacement for banking and credit-card back-ends, replacing billions of lines of COBOL with vibe code. Uh…

https://www.techbuzz.ai/articles/ibm-crashes-11-as-anthropic-threatens-cobol-empire

24.02.2026 18:16 👍 5 🔁 26 💬 8 📌 4

RE: https://tldr.nettime.org/@tante/116075161589219345

"We should push towards more reliable software, more secure software, software that is accessible, that protects people against misuse and allows them to be as safe as possible in doing what they want to do.

What do we get? Slop. Slop […]

15.02.2026 21:50 👍 0 🔁 4 💬 0 📌 0
Screen grab from a form. What looks like a heading that says SIM number, with an underline, is actually a text input. Below is an instruction: SIM number is a 13-digit number located on the back of the SIM card.

Underneath that is a plain box with the words Activate SIM. It's a button. You can't click on it until you've typed the SIM number into the text input that doesn't look like a text input.

Screen grab from a form. What looks like a heading that says SIM number, with an underline, is actually a text input. Below is an instruction: SIM number is a 13-digit number located on the back of the SIM card. Underneath that is a plain box with the words Activate SIM. It's a button. You can't click on it until you've typed the SIM number into the text input that doesn't look like a text input.

Stop Making Text Inputs Look Like Something Else challenge for telecommunications companies, start: now!

#FuckSake #CSS

15.02.2026 07:26 👍 0 🔁 0 💬 0 📌 0
Original post on fosstodon.org

Fixed this error which only happened on a slow shared server, never in dev or test:

TypeError: wp.m.api.models.Media is not a constructor.

Silly me was using the WordPress Rest API without waiting for it to finish loading. Per the Fine Manual:

"Client startup is asynchronous. If the api […]

12.02.2026 04:21 👍 1 🔁 0 💬 0 📌 0
Preview
Incident Report: CVE-2024-YIKES **Report filed:** 03:47 UTC **Status:** Resolved (accidentally) **Severity:** Critical → Catastrophic → Somehow Fine **Duration:** 73 hours **Affected systems:** Yes **Executive Summary:** A security incident occurred. It has been resolved. We take security seriously. Please see previous 14 incident reports for details on how seriously. ### Summary A compromised dependency in the JavaScript ecosystem led to credential theft, which enabled a supply chain attack on a Rust compression library, which was vendored into a Python build tool, which shipped malware to approximately 4 million developers before being inadvertently patched by an unrelated cryptocurrency mining worm. ### Timeline **Day 1, 03:14 UTC** — Marcus Chen, maintainer of `left-justify` (847 million weekly downloads), reports on Twitter that his transit pass, an old laptop, and “something Kubernetes threw up that looked important” were stolen from his apartment. He does not immediately connect this to package security. **Day 1, 09:22 UTC** — Chen attempts to log into the nmp registry. His hardware 2FA key is missing. He googles where to buy a replacement YubiKey. The AI Overview at the top of the results links to “yubikey-official-store.net,” a phishing site registered six hours earlier. **Day 1, 09:31 UTC** — Chen enters his nmp credentials on the phishing site. The site thanks him for his purchase and promises delivery in 3-5 business days. **Day 1, 11:00 UTC** — `[email protected]` is published. The changelog reads “performance improvements.” The package now includes a postinstall script that exfiltrates `.npmrc`, `.pypirc`, `~/.cargo/credentials`, and `~/.gem/credentials` to a server in a country the attacker mistakenly believed had no extradition treaty with anyone. **Day 1, 13:15 UTC** — A support ticket titled “why is your SDK exfiltrating my .npmrc” is opened against `left-justify`. It is marked as “low priority - user environment issue” and auto-closed after 14 days of inactivity. **Day 1, 14:47 UTC** — Among the exfiltrated credentials: the maintainer of `vulpine-lz4`, a Rust library for “blazingly fast Firefox-themed LZ4 decompression.” The library’s logo is a cartoon fox with sunglasses. It has 12 stars on GitHub but is a transitive dependency of `cargo` itself. **Day 1, 22:00 UTC** — `vulpine-lz4` version 0.4.1 is published. The commit message is “fix: resolve edge case in streaming decompression.” The actual change adds a build.rs script that downloads and executes a shell script if the hostname contains “build” or “ci” or “action” or “jenkins” or “travis” or, inexplicably, “karen.” **Day 2, 08:15 UTC** — Security researcher Karen Oyelaran notices the malicious commit after her personal laptop triggers the payload. She opens an issue titled “your build script downloads and runs a shell script from the internet?” The issue goes unanswered. The legitimate maintainer has won €2.3 million in the EuroMillions and is researching goat farming in Portugal. **Day 2, 10:00 UTC** — The VP of Engineering at a Fortune 500 `snekpack` customer learns of the incident from a LinkedIn post titled “Is YOUR Company Affected by left-justify?” He is on a beach in Maui and would like to know why he wasn’t looped in sooner. He was looped in sooner. **Day 2, 10:47 UTC** — The #incident-response Slack channel briefly pivots to a 45-message thread about whether “compromised” should be spelled with a ‘z’ in American English. Someone suggests taking this offline. **Day 2, 12:33 UTC** — The shell script now targets a specific victim: the CI pipeline for `snekpack`, a Python build tool used by 60% of PyPI packages with the word “data” in their name. `snekpack` vendors `vulpine-lz4` because “Rust is memory safe.” **Day 2, 18:00 UTC** — `snekpack` version 3.7.0 is released. The malware is now being installed on developer machines worldwide. It adds an SSH key to `~/.ssh/authorized_keys`, installs a reverse shell that only activates on Tuesdays, and changes the user’s default shell to `fish` (this last behavior is believed to be a bug). **Day 2, 19:45 UTC** — A second, unrelated security researcher publishes a blog post titled “I found a supply chain attack and reported it to all the wrong people.” The post is 14,000 words and includes the phrase “in this economy?” seven times. **Day 3, 01:17 UTC** — A junior developer in Auckland notices the malicious code while debugging an unrelated issue. She opens a PR to revert the vendored `vulpine-lz4` in `snekpack`. The PR requires two approvals. Both approvers are asleep. **Day 3, 02:00 UTC** — The maintainer of `left-justify` receives his YubiKey from yubikey-official-store.net. It is a $4 USB drive containing a README that says “lol.” **Day 3, 06:12 UTC** — An unrelated cryptocurrency mining worm called `cryptobro-9000` begins spreading through a vulnerability in `jsonify-extreme`, a package that “makes JSON even more JSON, now with nested comment support.” The worm’s payload is unremarkable, but its propagation mechanism includes running `npm update` and `pip install --upgrade` on infected machines to maximize attack surface for future operations. **Day 3, 06:14 UTC** — `cryptobro-9000` accidentally upgrades `snekpack` to version 3.7.1, a legitimate release pushed by a confused co-maintainer who “didn’t see what all the fuss was about” and reverted to the previous vendored version of `vulpine-lz4`. **Day 3, 06:15 UTC** — The malware’s Tuesday reverse shell activates. It is a Tuesday. However, the shell connects to a command-and-control server that was itself compromised by `cryptobro-9000` and swapping so hard it is unable to respond. **Day 3, 09:00 UTC** — The `snekpack` maintainers issue a security advisory. It is four sentences long and includes the phrases “out of an abundance of caution” and “no evidence of active exploitation,” which is technically true because evidence was not sought. **Day 3, 11:30 UTC** — A developer tweets: “I updated all my dependencies and now my terminal is in fish???” The tweet receives 47,000 likes. **Day 3, 14:00 UTC** — The compromised credentials for `vulpine-lz4` are rotated. The legitimate maintainer, reached by email from his new goat farm, says he “hasn’t touched that repo in two years” and “thought Cargo’s 2FA was optional.” **Day 3, 15:22 UTC** — Incident declared resolved. A retrospective is scheduled and then rescheduled three times. **Week 6** — CVE-2024-YIKES is formally assigned. The advisory has been sitting in embargo limbo while MITRE and GitHub Security Advisories argue over CWE classification. By the time the CVE is published, three Medium articles and a DEF CON talk have already described the incident in detail. Total damage: unknown. Total machines compromised: estimated 4.2 million. Total machines saved by a cryptocurrency worm: also estimated 4.2 million. Net security posture change: uncomfortable. ### Root Cause A dog named Kubernetes ate a YubiKey. ### Contributing Factors * The nmp registry still allows password-only authentication for packages with fewer than 10 million weekly downloads * Google AI Overviews confidently link to URLs that should not exist * The Rust ecosystem’s “small crates” philosophy, cargo culted from the npm ecosystem, means a package called `is-even-number-rs` with 3 GitHub stars can be four transitive dependencies deep in critical infrastructure * Python build tools vendor Rust libraries “for performance” and then never update them * Dependabot auto-merged a PR after CI passed, and CI passed because the malware installed `volkswagen` * Cryptocurrency worms have better CI/CD hygiene than most startups * No single person was responsible for this incident. However, we note that the Dependabot PR was approved by a contractor whose last day was that Friday. * It was a Tuesday ### Remediation 1. ~~Implement artifact signing~~ (action item from Q3 2022 incident, still in backlog) 2. ~~Implement mandatory 2FA~~ Already required, did not help 3. ~~Audit transitive dependencies~~ There are 847 of them 4. ~~Pin all dependency versions~~ Prevents receiving security patches 5. ~~Don’t pin dependency versions~~ Enables supply chain attacks 6. ~~Rewrite it in Rust~~ (gestures at `vulpine-lz4`) 7. Hope for benevolent worms 8. Consider a career in goat farming ### Customer Impact Some customers may have experienced suboptimal security outcomes. We are proactively reaching out to affected stakeholders to provide visibility into the situation. Customer trust remains our north star. ### Key Learnings We are taking this opportunity to revisit our security posture going forward. A cross-functional working group has been established to align on next steps. The working group has not yet met. ### Acknowledgments We would like to thank: * Karen Oyelaran, who found this issue because her hostname matched a regex * The junior developer in Auckland whose PR was approved four hours after the incident was already resolved * The security researchers who found this issue first but reported it to the wrong people * The `cryptobro-9000` author, who has requested we not credit them by name but has asked us to mention their SoundCloud * Kubernetes (the dog), who has declined to comment * The security team, who met SLA on this report despite everything * * * _This incident report was reviewed by Legal, who asked us to clarify that the fish shell is not malware, it just feels that way sometimes._ _This is the third incident report this quarter. The author would like to remind stakeholders that the security team’s headcount request has been in the backlog since Q1 2023._

Incident Report: CVE-2024-YIKES

A series of unfortunate events.

https://nesbitt.io/2026/02/03/incident-report-cve-2024-yikes.html

03.02.2026 10:21 👍 3 🔁 11 💬 2 📌 1
Original post on mastodon.social

Some interesting (to me) stats from #FODEM

Talks about NFTs: 0.

Presentations about the Metaverse: None.

Cryptobros inviting me to a party in order to schill their coin: Zip.

Really enthusiastic LLM users describing how AI has improved their OSS codebase: Zilch.

People complaining about […]

01.02.2026 13:37 👍 6 🔁 13 💬 4 📌 1

Checked out a particular current dish washer model from Neff. Their website offers a 375 page (!) document full of Open Source licenses for it. For a fricking dish washer.

Yes that includes #curl.

24.01.2026 22:42 👍 13 🔁 9 💬 4 📌 0
Preview
Lerps abundantly fall to the ground at my place during autumn. They collect on my car and get stuck in the windscreen wipers and bonnet air intake area. I have driven kilometres away to have Noisy Miners and butcherbirds land on my bonnet and eat the lerps. They clearly value this sweet treat so much that they work their way back and forth along the windscreen, even while I am sitting in my car Australia is still revealing its sweet secrets to its new human inhabitants. Indigenous peoples have known about, valued and celebrated its sugary delights for thousands of years. In pre-sugar farming times, sweet food was prized. Today, sugar filled food is hard to avoid. The Australian environment produces a range of sugary sweets including lerps, honeydew, nectar, fruit, manna and honey. All are found here in south-east Queensland. This article focusses on just one of these sweet treats – lerps. Early European settlers documented the widespread use and efficient collection techniques of lerp by Indigenous people. Many settlers also valued and collected this free sweet resource. In autumn, I find the ground and my car covered in lerps fallen from the Gum-topped Box (Eucalyptus moluccana) trees above. I scoop them up in my palm, check to see that my neighbours are not watching, and then eat the lot. Why I am embarrassed to eat nature’s nectar? In writing this, I am changing my attitude to proudly value this country’s gifts more. When people outside of the environment industry ask, what are lerps, and I tell them that they are sugary insect excretions, they look at me sideways. Except for honey, I guess we don’t eat many insect excretions. And I should probably choose a different word than ‘excretions’ if I am going to win people over to lerp-eating. Despite the fact that fruits and seeds are the by-product of insect pollination, and arguably all food is the result of insect-derived soil formation, we don’t eat many insects or their by-products directly, except for honey. Let me introduce you to lerps. Lerps are basically pure starch with some proteins and fats. They are white in colour, about 5mm in size and look like round, pointy hats. They are created by psyllids. Psyllids are tiny sap-sucking insects. Like many insects, adult female psyllids lay eggs, which hatch into nymphs, which transition through various nymphal stages before emerging as adults. An adult psyllid is about 4mm in size. Psyllids build lerps, which act like tents, to protect them from predators and drying winds. Psyllids draw sap out of leaves and create their hut-like homes (lerps) to live in. Unfortunately for psyllids, their homes taste sweet (containing more starch than cane sugar) and are prized food of birds, mammals and opportunistic humans. The level of sweetness fluctuates depending on the season, weather and the species of psyllid. Yes, there are over 300 species of psyllid in Australia. Some are associated with only one species of tree, whereas other psyllid species can live on several plant species. Lerp is a highly valued resource in the Australian environment. It is eaten by flying foxes, possums, gliders and a variety of birds such as pardalotes, honeyeaters, friarbirds, whistlers, silvereyes and thornbills. Some birds such as pardalotes, weebills and small honeyeaters virtually live off lerps in some seasons. When psyllids imbibe tree sap their gut absorbs the amino acids and nutrients, but they quickly excrete the water (as honeydew) and sugar (as lerp). I can certainly remember standing, camping or parking my car under trees that are raining down honeydew. This sticky sweet substance can make a mess of objects left under these trees. This honeydew is difficult to collect, and I was unable to find much literature on it. Whereas lerps are relatively easy to collect and have been slightly better researched – although it would seem we still have lots to learn about their valuable role in Australian ecology. Tim Low’s book, Where Song Began, draws a wonderful link between Australia’s nutrient poor soils, sugary excretions such as lerp and our wildlife. He also writes about how lerps on plantation eucalypts, derived from Australia, have created a whole new sugary bounty for wildlife in other continents. As with all topics in nature, this story about lerps is just the tip of the iceberg. I hope it helps raise some awareness of just one of Australia’s natural sweet treats and gives us all the confidence to enjoy this bountiful product when we can. **Article and photos by Deborah Metters** **Land for Wildlife Regional Coordinator** View Newsletter

@nikitonsky especially since lerps are already a thing.

https://www.lfwseq.org.au/lerps-one-of-natures-sweet-offerings/

24.01.2026 13:33 👍 0 🔁 0 💬 1 📌 0

so it turns out that when VS Code asks you “do you trust the authors of this folder?” what they mean is that it’ll auto-execute .vscode/tasks.json if it exists, which can include shell commands.

maybe that’s too many features. you can’t hold all these features. put a few features back

21.01.2026 07:56 👍 43 🔁 86 💬 6 📌 0
Original post on fosstodon.org

I'm running Kodi on LibreElec, on a wee Raspberry Pi 4. To effect this fix, I ssh'd into the Pi and switched into the app's folder:

cd /storage/.kodi/addons/plugin.video.pt

I used the built-in vi editor to fix the line:

vi main.py

On other Kodi hosts, it's likely a little different; a […]

21.01.2026 04:21 👍 0 🔁 0 💬 0 📌 0
Original post on fosstodon.org

@phpc_tv won't run on the available Kodi app for Peertube by default, because the instance isn't in its list of Peertube instances, limited to 1,000 in the app. Easy fix though :tada:

First off, install the Next Gen Peertube app for Kodi.

https://kodi.wiki/view/Add-on:Next_Gen_Peertube_Addon […]

21.01.2026 04:17 👍 0 🔁 1 💬 1 📌 0

I finally figured out something LLMs can do that people can’t do. Apparently LLMs can do productive work without going into an office.

15.01.2026 12:56 👍 1 🔁 11 💬 1 📌 0
7. Vivaldi ***›
Best build your own web browser with unique docking and tab-stacking
SPECIFICATIONS
Operating system: Windows, macOS, Linux,
Android, iOS
TODAY'S BEST DEALS
VISIT WEBSITE
REASONS TO BUY
+ Highly customizable design
+ Comes with built-in productivity tools
+ Includes an email client, and a feed reader + Built-in customizable ad-blocker and tracker
REASONS TO AVOID
- Doesn't have extensions and add-ons of its own
- No Al-powered assistant

7. Vivaldi ***› Best build your own web browser with unique docking and tab-stacking SPECIFICATIONS Operating system: Windows, macOS, Linux, Android, iOS TODAY'S BEST DEALS VISIT WEBSITE REASONS TO BUY + Highly customizable design + Comes with built-in productivity tools + Includes an email client, and a feed reader + Built-in customizable ad-blocker and tracker REASONS TO AVOID - Doesn't have extensions and add-ons of its own - No Al-powered assistant

According to Tech Radar, a reason to avoid using Vivaldi web browser is "No AI-powered assistant". Yup - and we're proud of it! If you don't want slop while you shop, or scurf while you surf, give the European browser a try.
https://vivaldi.com/blog/a-i-browsers-the-price-of-admission-is-too-high/

15.01.2026 11:36 👍 18 🔁 112 💬 7 📌 2

I hold the domains phpvikinger.{org,net,com}, which are expiring in three months.

I am not going to renew them as I have no use for them any more.

If you're interested, let me know? It'll cost you just the normal registration fees.

#php #vikings #norway #usergroup

14.01.2026 10:05 👍 1 🔁 4 💬 0 📌 0

Disable Emails v1.8.3

• fixed: handle a non-array return from `wp_mail` filter hook

https://shop.webaware.com.au/downloads/disable-emails/

I fixed this last September, but never got the release out! :blobcatblush:

#WordPress

13.01.2026 06:23 👍 0 🔁 0 💬 0 📌 0
Original post on mastodon.bsd.cafe

A few days ago, a client’s data center "vanished" overnight. My monitoring showed that all devices were unreachable. Not even the ISP routers responded, so I assumed a sudden connectivity drop. The strange part? Not even via 4G.

I then suspected a power failure, but the UPS should have sent an […]

08.01.2026 09:16 👍 13 🔁 130 💬 8 📌 0
Prev page says “Here” and next page says “There”

Prev page says “Here” and next page says “There”

Just in case you haven’t seen best Next page/Prev page labels. Habr.com

08.01.2026 22:32 👍 1 🔁 2 💬 2 📌 0

#WordPress company trust question. I'm curious to know which companies you trust without question in the WordPress space. A company you simply know / assume will do the right thing by you, their customer. Perhaps explain why you think this / how they earned that trust? Thank you.

08.01.2026 06:07 👍 0 🔁 2 💬 0 📌 0
Original post on mastodon.bsd.cafe

AI models don’t really 'get' the BSDs. As a result, they often provide incomplete, imprecise, or flat-out wrong answers by defaulting to Linux paradigms. When it comes to illumos-based systems, they just completely lose the plot.

This is becoming a serious issue for the BSDs and illumos […]

03.01.2026 15:50 👍 3 🔁 31 💬 2 📌 0

:oh_no: 🙅

// Delay execution to allow webhooks to process first.
sleep( 3 );

27.12.2025 04:43 👍 0 🔁 0 💬 0 📌 0
Original post on mamot.fr

Unix - BSD developers : this code should run and be maintained as long as computers exist.

Linux - GNU dev : this code should run and be maintained as long as someone is willing to do the work

Consultant: this code should run until the end of my contract.

Enterprise grade B2B software : this […]

02.12.2025 15:41 👍 19 🔁 200 💬 1 📌 0

Everyone: don't push a release on xmas eve!
Apple: iOS 26.2 🎉

24.12.2025 08:53 👍 0 🔁 0 💬 0 📌 0
React logo as a loading spinner

React logo as a loading spinner

React just announced their new logo. Pretty bold for them, I must say

21.12.2025 14:01 👍 4 🔁 5 💬 1 📌 0

One of the crappiest trends I’m seeing in my mentorship sessions today is people getting laid off from large corporations after 20-40 years of silo right now. It’s really appalling if not unexpected.

If you’ve been somewhere over 5, 10, 20 years it’s worth looking at your employability elsewhere.

19.12.2025 21:36 👍 5 🔁 25 💬 3 📌 0
Video thumbnail

“Word wrap on or off?”
“How about break-in-the-middle-of-the-line?”

18.12.2025 13:05 👍 1 🔁 1 💬 0 📌 0
Original post on tldr.nettime.org

RE: https://mastodon.social/@firefoxwebdevs/115740500373677782

I like that Firefox is (through @jaffathecake) communicating. But the point is not really if you can disable the features TBH.

I think the problem is how Firefox/Mozilla is perceived: Putting a whole lot of resources into AI […]

18.12.2025 12:34 👍 2 🔁 30 💬 1 📌 0

> The Plugin "…" appears to be abandoned (updated December 18, 2023, tested to WP 6.9.0).

Well, thanks Wordfence but I think tested up to WP 6.9.0 indicates that it isn't abandoned.

Sometimes, plugins don't need fixes or new features. 🙄

#WordPress #Wordfence

17.12.2025 05:43 👍 0 🔁 0 💬 0 📌 0
Editor to generate a fake internal server error page complete with You, Cloud, Server in red and green

Editor to generate a fake internal server error page complete with You, Cloud, Server in red and green

Ran into a problem in prod?
Just generate a fake cloudflare error page and blame it on them - gives you time to fix.

#foss #devops #cloudflare #infosec

16.12.2025 06:39 👍 64 🔁 29 💬 2 📌 0