Colin Dean
banner
colindean.mastodon.social.ap.brid.gy
Colin Dean
@colindean.mastodon.social.ap.brid.gy
Bon vivant, scholar, champion of the oppressed. Software engineer and community builder. My words are my own. Quotes and boosts are not necessarily my views […]

[bridged from https://mastodon.social/@colindean on the fediverse by https://fed.brid.gy/ ]
Yay #homebrew on my phone, via Android's built-in, experimental "Linux Development Environment" and Terminal app.
November 30, 2025 at 5:13 AM
Reposted by Colin Dean
The president is about to start a war for no real reason. All of the things he has blamed on the country he’s targeting — fentanyl distribution, “emptying the asylums” and sending patients to the U.S., alignment with Tren de Aragua— are provably, obviously false.

Lots of people are going to die.
November 29, 2025 at 4:06 PM
Reposted by Colin Dean
After my visit to @swheritage last week it got me thinking about an old experiment I did with storing package releases in a git repo to see how much space it would save over a stack of tarballs: https://nesbitt.io/2025/11/28/revisiting-gitballs.html
Revisiting Gitballs
Nine years ago I made a small experiment called Gitballs. Package registries store every release as a complete tarball, but most releases are just a few lines changed from the previous version. Git is good at storing diffs efficiently. What if you committed each release to a git repo and let git’s delta compression do the work? The script downloads every release of a package, extracts each one, commits it to a git repo in version order, then runs `git gc --aggressive`. The result is a single `.git` folder containing every release. The space savings were significant for packages with many releases: package | releases | tarball size | gitball size | saving ---|---|---|---|--- rails | 288 | 159M | 7.4M | 95% sass | 309 | 74M | 2.0M | 97% bundler | 225 | 42M | 1.9M | 95% lodash | 88 | 79M | 8.1M | 90% nokogiri | 94 | 275M | 33M | 88% But for packages with few releases, the git overhead made things worse: package | releases | tarball size | gitball size | saving ---|---|---|---|--- left-pad | 11 | 52K | 348K | -569% i18n-active_record | 4 | 52K | 360K | -590% It was an afternoon experiment. Life got busy and I forgot about it. ## Why I’m thinking about it again Last week I was in Paris for a CodeMeta unconference hosted by Software Heritage. I got to meet Roberto Di Cosmo and Stefano Zacchiroli and talk about integration points with ecosyste.ms. Software Heritage archives all publicly available source code using SWHIDs (Software Heritage Identifiers), content-addressed identifiers where two identical files always have the same SWHID regardless of where they’re stored. That’s the same principle gitballs was exploring. Git stores snapshots at each commit (much like package releases), but the packfile format finds similar objects, computes deltas between them, and compresses everything together. Every blob, tree, and commit is identified by its SHA hash, so identical content is automatically deduplicated. I’ve been writing a Ruby gem for generating SWHIDs, partly to learn the standard, partly because I’m hoping to generate SWHIDs for every version of every package in packages.ecosyste.ms at some point. Working on that got me thinking about gitballs again, because if you’re computing content hashes for millions of package releases anyway, you’re most of the way to a deduplication scheme. The same principle shows up in Nix and Guix, which use content-addressed stores for reproducible builds. And pnpm, which deduplicates packages across projects by storing them in a content-addressed cache. ## Still relevant? I haven’t re-run the gitballs numbers yet. The original data is from 2016, and packages like Rails have had hundreds more releases since then. It would be interesting to see if the compression ratios still hold, or if modern packages (with more dependencies, more generated files) compress differently. Putting every version of every package in a single git repo probably isn’t practical. The write path is slow and you’d need to handle concurrent writes. But the experiment did show that sequential releases of the same package compress well, and identical files across packages (MIT-LICENSE, .gitignore, tsconfig.json) would dedupe automatically with content-addressing. What if you focused on the top 1% of packages that make up 99% of downloads? Most registry bandwidth goes to a small number of popular packages. Deduplicating just those might get you most of the savings without the complexity of handling the long tail. Managing packfiles across hundreds of millions of releases globally would be expensive, but a targeted approach might be practical. ## Related ideas If you’re interested in content-addressed storage for packages: * Software Heritage archives source code with content-addressed identifiers * Nix and Guix use content-addressed stores for reproducible builds * pnpm deduplicates node_modules across projects * OCI registries use content-addressed layers for container images SWHIDs can actually encompass git repos and their history. When Software Heritage ingests a git repository, the content hashes for blobs and trees match git’s SHAs. SWHIDs add a type prefix and can reference things git can’t (like snapshots of entire repositories), but they’re built on the same foundations. The gitballs code is still on GitHub if you want to try it yourself.
nesbitt.io
November 29, 2025 at 8:40 PM
I don't like food anymore
November 29, 2025 at 12:57 AM
If this falls on the stupid side, American Internet access will change forever https://slate.com/news-and-politics/2025/11/supreme-court-sony-cox-copryight-internet-case.html
November 28, 2025 at 10:04 PM
I'm giving in and listening to Prince. The times demand it.
November 28, 2025 at 7:06 PM
There's just something about this time of year that I feel like everything's falling apart because of externalities.

I wonder how much of it could be traced back to "spend it or lose it" policies.
November 26, 2025 at 6:45 PM
How many "you broke GitHub" unicorns did you see tonight?
November 24, 2025 at 5:45 AM
I've realized I've given myself a moment of temporary colorblindness as:

* my office lights dim and change to a very cool incandescent color
* I'm wearing Gunnar glasses that are yellow tinted
* my display's "Night Sight" shifts yellow
* I'm reading notes written in teal and red pens
* the text […]
Original post on mastodon.social
mastodon.social
November 24, 2025 at 4:25 AM
What's an old internet joke/meme/catchphrase but still has you literally rolling on the floor laughing anytime you hear it?

Mine?

None pizza with left beef
November 23, 2025 at 5:00 PM
Wix requires the receiving account's PASSWORD when transferring a domain between two Wix accounts.

This is unbelievable.

There is no way to use the transfer code like any other domain transfer process. Wix blocks transfer when a domain is registered through Wix.

I'm helping a family member […]
Original post on mastodon.social
mastodon.social
November 23, 2025 at 2:53 AM
We should all be using dependency cooldowns

by @yossarian

https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
We should all be using dependency cooldowns
Comments
blog.yossarian.net
November 22, 2025 at 6:51 PM
Reposted by Colin Dean
One of the lucky career breaks I've had was writing the ACM TechNews and ACM SIGDA email news summaries from 2000-2005. It paid terribly, and I had to be at work at 6:30 a.m. but I learned a whole lot.

Anyway, I just saw that the ACM's magazine, The Communications of the Association of […]
Original post on infosec.exchange
infosec.exchange
November 20, 2025 at 10:52 PM
This stupid algorithmic recommendation stuff on YouTube

I watch literally one Gilmore Girls clip length off of a thread on Reddit and suddenly my recommendations shifted from 2000s science fiction clips, DIY home improvement stuff, and software development to non-stop Gilmore Girls.
November 20, 2025 at 11:16 PM
Reposted by Colin Dean
Hi! Today is my first official day as the Executive Director of Mastodon, replacing @gargon@mastodon.social as CEO. I joined the Mastodon team more than 5 years ago, mostly working for Mastodon in the evenings on top of a 120% day job. I was the driving force behind the incorporation of the […]
Original post on mastodon.social
mastodon.social
November 18, 2025 at 7:53 AM
Reposted by Colin Dean
We’re still an absolute skeleton crew of 14 people, competing with teams sometimes 100x as large as ours. To get to our humble team size was only possible through the less than 1% community members who donate to Mastodon, a handful larger donations, & EU grants, all of which we are forever […]
Original post on mastodon.social
mastodon.social
November 18, 2025 at 8:06 AM
Evidence of a rough sleep necessitating coffee before functioning as an adult:

I heard about this #cloudflare outage on the morning #npr news podcast instead of experiencing it firsthand.
November 18, 2025 at 4:08 PM
My spirit is aching from all these tech layoffs.
November 17, 2025 at 11:14 PM
brew uninstall colima

brew ininstall colima

Error: Invalid usage: Unknown command: brew ininstall

…did I just come up with another bad idea for a Homebrew external command?
November 17, 2025 at 9:35 PM
Somebody tell the #pittsburgh Tribune-Review that their privacy policy interstitial breaks inbound clicks so I have no idea what article link I clicked on ~45 minutes ago… clicking the affirmative just dumps me to their front page.
November 17, 2025 at 9:07 PM
"Didn't you hear me swear when the dog peed right next to my foot?"

"No! You swear all the time! I can't tell if your code isn't working, someone on the Internet is wrong again, or a dog shat literally under your foot moments before you stood up."
November 17, 2025 at 4:59 PM
It's always "Where's Waldo?" and not
"How's Waldo?"

https://youtu.be/ucygwXBcwGY?si=viexbswrhT5tIdhN
November 15, 2025 at 10:35 PM
Aleks Le, the voice actor for #daredevil in #marvel #rivals, understood the assignment.

The gutteral screaming of "Let the devil… OUT" when Daredevil uses his ultimate is bone chilling every time.
November 15, 2025 at 3:33 PM
Homebrew v5.0.0 is released!

Concurrent downloads are enabled for all users now: `brew install` just got that much faster!

https://brew.sh/2025/11/12/homebrew-5.0.0/

Send your big thanks to the @homebrew team and send your donations to https://opencollective.com/homebrew or […]
Original post on mastodon.social
mastodon.social
November 12, 2025 at 6:56 PM