Andrew Donnellan
banner
andrew.donnellan.id.au
Andrew Donnellan
@andrew.donnellan.id.au
Fan of Jesus, Linux, PowerPC, Canberra, social democracy, efficient land use, trains. Enemy of RZ1 zoning. Fighting for a better city @greatercanberra.org.au.

https://andrew.donnellan.id.au / @ajdlinux / @ajd@ozlabs.house
Flying a Qantas flight out of Sydney, operated by a Finnish airline, staffed by a Singaporean cabin crew, and loving the magic of globalisation
December 29, 2025 at 12:54 AM
Do the opposite of what Australia's merger of the Department of Immigration with the Customs and Border Protection Service achieved: put immigration bureaucrats who see their mission as nation-building back at the top of the immigration policy hierarchy, with the enforcement entity being subordinate
The way for a Democrat to actually "abolish ICE/CBP" in practice is probably to create a cabinet-level Department of Immigration, put a bunch of competent bureaucrats in charge and reorg ICE and BP under it.
December 28, 2025 at 12:49 PM
I don't have any particular problem with CSG, but armed private security firms in Australia are (afaik) relatively few in number for a reason. Particularly when it's terrorism we're talking about, we shouldn't be relying on private security to fill in for police

www.theguardian.com/australia-ne...
Minns government ‘actively’ considering if Jewish security group should be armed after Bondi attack
NSW premier also announces police will carry long-arm rifles at major New Year’s Eve event in Sydney
www.theguardian.com
December 28, 2025 at 6:35 AM
Hey @ptcbr.bsky.social do you know if anyone has ever proposed this for TC?
This is the MARTA bus stop sign. The TP indicates a Time Point for the bus operator to know this stop is an official Time Point in the schedule that they are measured against for on time performance or OTP. I've not seen this at another transit agency.
December 28, 2025 at 6:09 AM
Can't believe that I was melting a few days ago and yet now I'm desperately wanting the temperature here to be *warmer*. In late December.
I need to get my parents a home thermal energy audit. Slowly realising that every time I come back here over summer and complain about the heat what I'm experiencing is probably not just summer but also a house with an incredibly low EER
December 27, 2025 at 9:35 PM
Reposted by Andrew Donnellan
SUVs and big Utes "are 44 per cent more likely to kill an adult pedestrian or cyclist in a crash compared with a sedan, and 82 per cent more likely to kill a child" www.theage.com.au/national/vic...
Pedestrian fatalities reach 17-year-high. This trend could be why
Fifty-one pedestrians had been killed on the state’s roads this year as of Saturday – the most in any calendar year since 2008.
www.theage.com.au
December 27, 2025 at 9:30 PM
Do any US municipalities run an ambulance department rather than running public ambulances through the fire department?
Mamdani has appointed Lillian Bonsignore, previously Chief of EMS Operations, as commissioner of FDNY (the agency has a serious inequity in EMS vs. fire pay and staffing levels – the vast majority of the agency’s calls are EMS, while fire dominates staffing and pay) abc7ny.com/post/mayor-e...
Mamdani names Lillian Bonsignore, retired EMS chief, next FDNY fire commissioner
Bonsignore will be the second female fire commissioner, behind Laura Kavanagh.
abc7ny.com
December 27, 2025 at 9:50 AM
Reposted by Andrew Donnellan
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
Reposted by Andrew Donnellan
When decimalisation occurred in 1966, the Australian government compiled an 81 page file on dangers of using decimal coins in Christmas puddings. There was a media campaign warning people not to use the new coins in their cooking. The file is now digitised.

recordsearch.naa.gov.au/SearchNRetri...
December 25, 2025 at 9:22 AM
Today is the day when many people message me to say Merry Christmas and I participate in a reply-only fashion
December 25, 2025 at 3:06 AM
Bold of you to assume I only regress to being 17
it gets notably quieter on here around the holidays which is a shame bc I would love to see how people post from their parents' house as their regressed 17-year-old self
December 24, 2025 at 11:17 AM
Failing to manage psychosocial hazards at work is a crime, even if you're the Federal Government
Defence handed first-ever Commonwealth employer penalty for psychological harm death | Region Canberra
CONTENT WARNING: This story refers to suicide. Comcare has succeeded in penalising the Department of Defence over the psychosocial harm…
region.com.au
December 24, 2025 at 9:46 AM
Yet another case of foreigner neo-Nazis being surprised to be at the receiving end of state power for being a foreigner
Good: British man's visa cancelled after being charged with displaying Nazi symbols

www.abc.net.au/news/2025-12-2…
December 23, 2025 at 11:28 PM
I need to get my parents a home thermal energy audit. Slowly realising that every time I come back here over summer and complain about the heat what I'm experiencing is probably not just summer but also a house with an incredibly low EER
December 23, 2025 at 11:05 PM
A real problem with getting involved in Housing Discourse is when you go on holidays and have to resist the urge to learn more about your destination's current zoning dramas
Naturally, there is gentrification discourse. I can't take a vacation, huh?
December 23, 2025 at 9:53 PM
Up at midnight learning about enabling TCP Large Send Offload on network adapters on AIX, how's your evening going
December 16, 2025 at 1:09 PM
Reposted by Andrew Donnellan
Posting can be praxis but it mostly isn’t.
December 16, 2025 at 12:00 AM
Pretty sure this makes fentanyl the first weapon of mass destruction I've had injected into me (along with the rest of the sedative the doctor gave me before the procedure started)
December 15, 2025 at 10:23 PM
Amazingly, this screenshot isn't parody
sydney dot txt
December 15, 2025 at 10:09 PM
It's really annoying that doing this well is such a different skill set from tweeting
i have said this before but if you are actually interested in influencing people beyond a narrow circle of too-online journalists you will be making direct to camera videos on tiktok, instagram and youtube. if you primarily post on text-based social media then you're just dicking around.
December 15, 2025 at 10:06 PM
Reposted by Andrew Donnellan
now feels like a test of whether those who say they’re just antizionist and not antisemitic actually demonstrate that
December 14, 2025 at 2:27 PM
since coming back from my own religious service earlier in the evening, where I have never felt even a hint of risk to my safety, I can't stop thinking about Bondi
December 14, 2025 at 12:26 PM
I really want to see how tacky the final, physical card looks once they start issuing these
An insane political move. One of the recurring complaints about immigration in the U.S. is that those seeking asylum jump the line. This is line-jumping — but for rich people, not those in need.
December 11, 2025 at 12:13 AM
Reposted by Andrew Donnellan
In the fight that generates infinite content, I'm in the AFR Magazine this weekend talking about generational housing conflict.

Truly unhinged comments from anti-housing activists – and as a bonus you can see me focusing so hard on Standing Normally.

Come for the Content, stay for the Fashion.
‘YIMBY is a misnomer. They haven’t got backyards’
Love thy neighbour as thyself. Unless they’re on the other side of a contested development application.
www.afr.com
December 10, 2025 at 11:41 PM
once again being negatively polarised into being pro-eSafety-Commissioner because of certain Americans
December 9, 2025 at 10:31 AM