Andrew Gallagher
banner
andrewg.mastodon.ie.ap.brid.gy
Andrew Gallagher
@andrewg.mastodon.ie.ap.brid.gy
Geek, thespian, activist, crackpot. A Galwegian Ulsterman at large. DPO by day, politico by night. 0xFB73E21AF1163937

(Banner image […]

🌉 bridged from ⁂ https://mastodon.ie/@andrewg, follow @ap.brid.gy to interact
Pinned
We hold these truths to be self-evident — reason, logic (Z-F), metric, UTF-8, RFC 3339.
Is Maduro a good guy? No. Is attacking Venezuela the right way to deal with him? Also no. Will anything we say make a blind bit of difference? No again.

These eggs are already broken. We need to build a better eggbox to prevent it from happening again.
January 3, 2026 at 12:14 PM
Reposted by Andrew Gallagher
From The Economist’s The World Ahead 2026. Apparently they were expecting Trump to be more strategic.
January 3, 2026 at 11:49 AM
Reposted by Andrew Gallagher
Whatever you might think of Maduro, the seizure and kidnapping of a head of state takes us to a very dark place. Vast, arbitrary, extra-legal power, which could be exercised almost anywhere, regardless of the character of the target government.
January 3, 2026 at 10:14 AM
Reposted by Andrew Gallagher
Utilitarianism that emphasises longtermism to focus on future people who might be born, over current people who are actually living is bollocks.

And its proponents are <INSERT EXPLETIVE HERE> in my opinion.
January 1, 2026 at 11:04 AM
Reposted by Andrew Gallagher
A uniquely British problem.
December 30, 2025 at 10:13 AM
Reposted by Andrew Gallagher
legal experts: is it technically booby-trapping if attempting to log in to a server on the default SSH port with username "admin" and password "password" sends the connecting client a zip bomb
December 30, 2025 at 7:59 AM
Reposted by Andrew Gallagher
my #rust knowledge is quite low and yet I found this hilarious anyway.

My fav
> clone_mut() gives you multiple &mut to the same location. The compiler assumes mutable references are unique and optimizes based on that. When you break the assumption, the optimizer generates wrong code. Compiler […]
Original post on mastodon.social
mastodon.social
December 30, 2025 at 7:29 AM
Reposted by Andrew Gallagher
I think one of the wildest parts of the Epstein Files fiasco to me is billionaires are so different that they talk about the darkest most blackmailable secrets of the worlds elite in gmail when I am miserably embarrassed Google is retaining my everyday online cosplay purchase history to train AI.
December 30, 2025 at 1:22 AM
“From the European point of view, the outlook could scarcely be more gloomy.
If you thought World War Three would be a shooting-match with nuclear weapons, think again. It's much more likely to be a collection of diplomatic and military manoeuvres, which will see autocracy flourish. It could […]
Original post on mastodon.ie
mastodon.ie
December 29, 2025 at 11:19 AM
Reposted by Andrew Gallagher
From Kalen Dion:
December 28, 2025 at 12:39 PM
Reposted by Andrew Gallagher
Relax 😎! GPG is not OpenPGP!

Yesterday, vulnerabilities were published https://gpg.fail but they don't affect #deltachat or any other #chatmail client because

A) We never used #gnupg for anything; we use the modern #rustlang #openpgp implementation @rpgp, security audited multiple times.

B) […]
Original post on chaos.social
chaos.social
December 28, 2025 at 10:05 AM
Reposted by Andrew Gallagher
Package managers keep using git as a database, it never works out.

https://nesbitt.io/2025/12/24/package-managers-keep-using-git-as-a-database.html
Package managers keep using git as a database, it never works out
Using git as a database is a seductive idea. You get version history for free. Pull requests give you a review workflow. It’s distributed by design. GitHub will host it for free. Everyone already knows how to use it. Package managers keep falling for this. And it keeps not working out. ## Cargo The crates.io index started as a git repository. Every Cargo client cloned it. This worked fine when the registry was small, but the index kept growing. Users would see progress bars like “Resolving deltas: 74.01%, (64415/95919)” hanging for ages, the visible symptom of Cargo’s libgit2 library grinding through delta resolution on a repository with thousands of historic commits. The problem was worst in CI. Stateless environments would download the full index, use a tiny fraction of it, and throw it away. Every build, every time. RFC 2789 introduced a sparse HTTP protocol. Instead of cloning the whole index, Cargo now fetches files directly over HTTPS, downloading only the metadata for dependencies your project actually uses. (This is the “full index replication vs on-demand queries” tradeoff in action.) By April 2025, 99% of crates.io requests came from Cargo versions where sparse is the default. The git index still exists, still growing by thousands of commits per day, but most users never touch it. ## Homebrew GitHub explicitly asked Homebrew to stop using shallow clones. Updating them was “an extremely expensive operation” due to the tree layout and traffic of homebrew-core and homebrew-cask. Users were downloading 331MB just to unshallow homebrew-core. The .git folder approached 1GB on some machines. Every `brew update` meant waiting for git to grind through delta resolution. Homebrew 4.0.0 in February 2023 switched to JSON downloads for tap updates. The reasoning was blunt: “they are expensive to git fetch and git clone and GitHub would rather we didn’t do that… they are slow to git fetch and git clone and this provides a bad experience to end users.” Auto-updates now run every 24 hours instead of every 5 minutes, and they’re much faster because there’s no git fetch involved. ## CocoaPods CocoaPods is the package manager for iOS and macOS development. It hit the limits hard. The Specs repo grew to hundreds of thousands of podspecs across a deeply nested directory structure. Cloning took minutes. Updating took minutes. CI time vanished into git operations. GitHub imposed CPU rate limits. The culprit was shallow clones, which force GitHub’s servers to compute which objects the client already has. The team tried various band-aids: stopping auto-fetch on `pod install`, converting shallow clones to full clones, sharding the repository. The CocoaPods blog captured it well: “Git was invented at a time when ‘slow network’ and ‘no backups’ were legitimate design concerns. Running endless builds as part of continuous integration wasn’t commonplace.” CocoaPods 1.8 gave up on git entirely for most users. A CDN became the default, serving podspec files directly over HTTP. The migration saved users about a gigabyte of disk space and made `pod install` nearly instant for new setups. ## Go modules Grab’s engineering team went from 18 minutes for `go get` to 12 seconds after deploying a module proxy. That’s not a typo. Eighteen minutes down to twelve seconds. The problem was that `go get` needed to fetch each dependency’s source code just to read its go.mod file and resolve transitive dependencies. Cloning entire repositories to get a single file. Go had security concerns too. The original design wanted to remove version control tools entirely because “these fragment the ecosystem: packages developed using Bazaar or Fossil, for example, are effectively unavailable to users who cannot or choose not to install these tools.” Beyond fragmentation, the Go team worried about security bugs in version control systems becoming security bugs in `go get`. You’re not just importing code; you’re importing the attack surface of every VCS tool on the developer’s machine. GOPROXY became the default in Go 1.13. The proxy serves source archives and go.mod files independently over HTTP. Go also introduced a checksum database (sumdb) that records cryptographic hashes of module contents. This protects against force pushes silently changing tagged releases, and ensures modules remain available even if the original repository is deleted. ## Beyond package managers The same pattern shows up wherever developers try to use git as a database. Git-based wikis like Gollum (used by GitHub and GitLab) become “somewhat too slow to be usable” at scale. Browsing directory structure takes seconds per click. Loading pages takes longer. GitLab plans to move away from Gollum entirely. Git-based CMS platforms like Decap hit GitHub’s API rate limits. A Decap project on GitHub scales to about 10,000 entries if you have a lot of collection relations. A new user with an empty cache makes a request per entry to populate it, burning through the 5,000 request limit quickly. If your site has lots of content or updates frequently, use a database instead. Even GitOps tools that embrace git as a source of truth have to work around its limitations. ArgoCD’s repo server can run out of disk space cloning repositories. A single commit invalidates the cache for all applications in that repo. Large monorepos need special scaling considerations. ## The pattern The hosting problems are symptoms. The underlying issue is that git inherits filesystem limitations, and filesystems make terrible databases. **Directory limits.** Directories with too many files become slow. CocoaPods had 16,000 pod directories in a single Specs folder, requiring huge tree objects and expensive computation. Their fix was hash-based sharding: split directories by the first few characters of a hashed name, so no single directory has too many entries. Git itself does this internally with its objects folder, splitting into 256 subdirectories. You’re reinventing B-trees, badly. **Case sensitivity.** Git is case-sensitive, but macOS and Windows filesystems typically aren’t. Check out a repo containing both `File.txt` and `file.txt` on Windows, and the second overwrites the first. Azure DevOps had to add server-side enforcement to block pushes with case-conflicting paths. **Path length limits.** Windows restricts paths to 260 characters, a constraint dating back to DOS. Git supports longer paths, but Git for Windows inherits the OS limitation. This is painful with deeply nested node_modules directories, where `git status` fails with “Filename too long” errors. **Missing database features.** Databases have CHECK constraints and UNIQUE constraints; git has nothing, so every package manager builds its own validation layer. Databases have locking; git doesn’t. Databases have indexes for queries like “all packages depending on X”; with git you either traverse every file or build your own index. Databases have migrations for schema changes; git has “rewrite history and force everyone to re-clone.” The progression is predictable. Start with a flat directory of files. Hit filesystem limits. Implement sharding. Hit cross-platform issues. Build server-side enforcement. Build custom indexes. Eventually give up and use HTTP or an actual database. You’ve built a worse version of what databases already provide, spread across git hooks, CI pipelines, and bespoke tooling. None of this means git is bad. Git excels at what it was designed for: distributed collaboration on source code, with branching, merging, and offline work. The problem is using it for something else entirely. Package registries need fast point queries for metadata. Git gives you a full-document sync protocol when you need a key-value lookup. If you’re building a package manager and git-as-index seems appealing, look at Cargo, Homebrew, CocoaPods, Go. They all had to build workarounds as they grew, causing pain for users and maintainers. The pull request workflow is nice. The version history is nice. You will hit the same walls they did.
nesbitt.io
December 24, 2025 at 4:49 PM
“any generative AI writing that purports to be in my voice without my informed consent is a profound violation of my authorial voice, agency, and frankly it feels like fraud or impersonation… it makes my skin crawl that there is a metadata field with the sole purpose of generating SEO-engagement […]
Original post on mastodon.ie
mastodon.ie
December 22, 2025 at 9:06 AM
Reposted by Andrew Gallagher
Annual reminder that Carol of the Bells is a Ukrainian song. Here is a recent performance of Shchedryk in the turbine hall of a thermal power plant destroyed by Russian attacks.

https://youtu.be/X0XsPuVs3CU?si=mz5r9q74Ibw_ng_Q

#Ukraine
#Russia
#RussiaUkraineWar
#UkraineWar
#Christmas […]
Original post on mstdn.social
mstdn.social
December 21, 2025 at 10:11 PM
The battery in this iphone 13 is finally starting to show its age. Haven’t seen it run down so fast since I purged the facebook app. Either that or I have a nasty bit of malware. Time to reboot, just to be sure. 🤞
December 21, 2025 at 1:21 AM
It’s important to always be mindful of the limitations of our technology. For example, Face ID can unlock my phone when I’m wearing a respiratory mask, and also when I’m wearing sunglasses, but not when I have a piece of tissue paper up one nostril to staunch a nosebleed.
December 21, 2025 at 12:54 AM
Reposted by Andrew Gallagher
I’m sorry, but it is disgraceful to be an academic who uses this technology to conduct research. It should be prohibited in all of our scholarly institutions, including universities and journals.
December 20, 2025 at 12:35 PM
Reposted by Andrew Gallagher
You know what? Let me amend that. There is one thing LLMs are good at: making spam. Lots and lots of spam. Almost by definition, it's hard to make good automated filters to detect it, so you basically need humans to sit there and read the slop.

They're good at wasting time and DoSing brains.
December 20, 2025 at 12:13 AM
#bitcoin MUST DIE

"In a lawsuit against Bitcoin Depot filed in early 2025, Iowa’s attorney general wrote that an analysis of transactions conducted in the state on the company’s machines between October 2021 and July 2024 suggested that more than half involved scams.
...
About 90% of […]
Original post on mastodon.ie
mastodon.ie
December 20, 2025 at 11:02 AM
Reposted by Andrew Gallagher
This, above all else, is why I hate the idea of AI taking jobs more than anything else. My taking all the lower level, junior and entry level jobs. We starve the industry of future experienced staff. We already have a shortage of experienced competent senior staff, without making the problem […]
Original post on social.v.st
social.v.st
December 20, 2025 at 8:08 AM
Reposted by Andrew Gallagher
"Hello, We're Firefox, The Only Browser That Hasn't Hit Itself In The Dick With A Hammer. For years now, folks use us because of our un-hammered dick. Now, you may be wondering why today we've brought this hammer and pulled out our dick. Well I'm glad you asked--"
February 28, 2025 at 3:22 PM
Reposted by Andrew Gallagher
A team of Austrian researchers has uncovered a major weakness in WhatsApp, revealing how a basic contact-lookup function can be exploited to create a global directory of users. By pushing WhatsApp’s contact discovery tool far beyond typical use, the researchers confirmed 3.5 billion active phone […]
Original post on mastodon.ie
mastodon.ie
December 19, 2025 at 8:41 AM
"Saving the world" is a cost centre, not a revenue stream. This is why we are doomed to repeatedly fail.
December 19, 2025 at 10:28 AM