Sign in

Ryan J. Gallagher

@ryanjgallag.com
4.7K followers 1.1K following 572 posts

Applied scientist trying to make the internet a little better. PhD. Trust & safety, networks, fingerstyle guitar. I use my hair to express myself. They/he

PostsRepliesMedia
Ryan J. Gallagher @ryanjgallag.com · 01/10/2026
Excited to be at the Trust & Safety Research Conference at Stanford! If you want to chat, I have plenty to say about detection and policy for frauds and scams, impersonation, covert influence operations, and everything else related to online deception and coordination #TSRConf
Selfie of me
131
Ryan J. Gallagher @ryanjgallag.com · 26/09/2026
I would be insufferable if I ever taught Python again
Four panel comic. First label is a bird labeled "New programmers" rejecting a cracker called "Explicit type declarations." It takes a bite and over the panels the bird realizes it loves the cracker
030
Ryan J. Gallagher @ryanjgallag.com · 04/09/2026
Kind of funny I'm geographically right between Portland and Boston (New Hampshire). Not sure where that Miami is coming from
Cities most like my language: Portland ME, Boston, Miami. Least: New Orleans, Houston, DallasWhat gave my language away: rotary, aunt, sneakers, pecan
100
Ryan J. Gallagher @ryanjgallag.com · 04/09/2026
they got me unfortunately
Heat map of the US indicating most similar language in the northeast, least similar in the deep south
110
Ryan J. Gallagher @ryanjgallag.com · 01/06/2026
If you Google "generalized word shift graphs," the name of one of my methods papers, you can pretty clearly see how the AI overview is just rephrasing my original writing There's a lot to say here, but it's interesting to so obviously see the LLM under the hood because it's such a niche topic
AI overview of a google search for "generalized word shift graphs": "Generalized word shift graphs are an interpretable data visualization framework that unmasks exactly which words drive differences between two texts and how they do so. They are incredibly useful for computational text analysis and digital humanities to validate aggregate averages. How they work: Instead of boiling text down to a single number, the graph uses weighted averages to parse out variation. Every word's contribution is calculated as a product of two factors. 1. Frequency: How much the usage of the word has increased or decreased between texts. 2. Score (Measurement): How much the word's assigned value (e.g. sentiment, topic probability, or informativeness) shifts."Excerpt from the word shift graph paper: "We contend that these concerns can and should be addressed by systematically quantifying which words contribute to the differences between two texts, and, importantly, how they do so."Excerpt from the word shift graph paper: "A common task in computational text analyses is to quantify how two corpora differ according to a measurement like word frequency, sentiment, or information content. However collapsing the texts' rich stories into a single number is often conceptually perilous."
120
Ryan J. Gallagher @ryanjgallag.com · 24/05/2026
he has incredible hearing. he can see through walls. personal space is at. a. premium
My cat Mabel with her paws on my shoulder as I play guitar
050
Ryan J. Gallagher @ryanjgallag.com · 13/05/2026
it's happening
Screenshot of the home page for the upcoming Python package "wordlevel"
250
Ryan J. Gallagher @ryanjgallag.com · 22/03/2026
Loving how easy it is to create word shift graphs with the package I'm developing
Code for generating comparisons between text using the new Python package I have been developing. It's 17 lines of code, including loading sample dataA bar chart comparing the Jensen-Shannon divergence of words between the news and religion categories of the Brown corpus
140
Ryan J. Gallagher @ryanjgallag.com · 26/01/2026
Come work with us on Grok at xAI, where you can be sure your boss will undermine your work every single day
Screenshot of a job posting to work on "product safety" at xAI, the company owned by Elon Musk and responsible for Grok
1215
Ryan J. Gallagher @ryanjgallag.com · 29/11/2025
Side eye meme
010
Ryan J. Gallagher @ryanjgallag.com · 25/11/2025
This is so reflective of my experience with failed machine learning initiatives No data at all, no willingness to invest in annotation, no budget for the compute, no support integrating into the backend, no capacity to surface results in the UI, no tolerance for monitoring quality, and so on
Where are the annotation plans? What is the eval strategy? Do you even know how you will measure model quality? Who signs off access to external models? Is legal aware of the data you will send?

Most AI leaders are still scared to admit, or simply not aware, that half of the roadmap is boring enabling work. But if you do not surface those items, you trick everyone into thinking that model development is a straight line rather than a sequence of dependencies. Splitting grand goals into meaningful intermediate steps and knowing the right people and dependencies to achieve them is a good chunk of our job. Simplifying it undermines our own credibility and, in the end, does not generate any value.AI roadmaps do not fail because the technology is too complex. They fail because the work around the technology is not respected, and this is very similar to what happens with any other tech challenge (“all technology problems are people problems”). They fail because teams are built around optimism and great words rather than capabilities. They fail because companies think that AI is magic rather than just another product discipline with clear dependencies and responsibilities.
130
Ryan J. Gallagher @ryanjgallag.com · 24/10/2025
My whole PhD ended up being about online amplification. Really cute to look back and realize the first sentence of my first paper during my Masters before I even knew what I was doing has the word "amplified" in it
The abstract of my first paper. "The protest hashtag #BlackLivesMatter has amplified critiques of extrajudicial killings of Black Americans"
010
Ryan J. Gallagher @ryanjgallag.com · 02/09/2025
Getting there. I always forget how much configuration can be done for plots, which means long function signatures The "autoscale_axes" is the most deceptively simple bit. Most of the tricky work on the bar chart is automatically adjusting the axes so that the word labels fit
A "word shift plot" which is a vertical chart with horizontal stacked barsPython code of the function signature for the word shift plot showing a lot of possible arguments
150
Ryan J. Gallagher @ryanjgallag.com · 11/08/2025
big if true
Draft of a word shift plot, a horizontal stacked bar chart
160
Ryan J. Gallagher @ryanjgallag.com · 28/07/2025
it's happening
A draft scientific figure of a word shift plot (a glorified bar chart)
130
Ryan J. Gallagher @ryanjgallag.com · 16/07/2025
this is objectively the worst kind of citation format. I feel attacked when I see it
Screenshot of a paper's citations which are in a format that don't include the paper names
2100
Ryan J. Gallagher @ryanjgallag.com · 03/07/2025
If you use CPM, you can interpret its parameter as finding communities of a certain density. You could start with a low density general communities, and then iteratively reapply Leiden with a higher parameter values to get more dense subcommunities leidenalg.readthedocs.io/en/stable/re...
Description of the constant potts model (cpm) quality function for the Leiden algorithm, showing how it's equivalent to finding communities of a certain densityDescription of the constant potts model (cpm) quality function for the Leiden algorithm, showing how it's equivalent to finding communities of a certain density
130
Ryan J. Gallagher @ryanjgallag.com · 25/06/2025
when is Sage Journals gonna pull it together and make a link preview that actually has the title and abstract of a paper
Screenshot of a Sage Journals link preview of Bluesky. It's generic and not specific to the paper being shared
070
Ryan J. Gallagher @ryanjgallag.com · 26/05/2025
It took 1 min to find these replies to @schumer.senate.gov on X for his Memorial Day post. Conspiracies, anti-Semitism, homophobia, and mockery in the "top" replies I have a hard time believing politicians aren't on Bluesky just because they're getting "yelled at" in the replies here
Memorial post from senator Chuck Schumer on XTwo screenshots replying to Chuck Schumer on X. One tells him to step down now, the other falsely says he wants to commit genocide against white men and that it's Jewish revengeFour screenshots replying to Chuck Schumer on X. The first alleges he stole money from USAID, second says he should let his husband grill, third mocks his grilling, fourth calls him anti American Two screenshots replying to Chuck Schumer on X. Both mock his grilling
130
Ryan J. Gallagher @ryanjgallag.com · 22/04/2025
Another place X unfortunately leads Bluesky on "verification" is through "affiliates," accounts that a verified government or business account has verified itself are affiliated with it They get a custom icon that points back to the account that affiliated them
Screenshot of accounts affiliated with PlayStation on X, PlayStation France and Naughty Dog. They have the PlayStation icon next to their names showing they are affiliated with the original PlayStation verified accountScreenshot of accounts affiliated with the EPA on X, EPA Water and EPA Pacific Southwest. They have the EPA icon next to their names showing they are affiliated with the original EPA verified account
110
Ryan J. Gallagher @ryanjgallag.com · 22/04/2025
I think the idea of an all powerful Blue Check verification is a bit dated and it's disappointing to see Bluesky chasing it Even X has multiple types of verification now. Of course their blue check is infamously useless, but they have a grey check for government, and a gold check for businesses
Screenshot of US EPA account on X with a grey verification checkmarkScreenshot of PlayStation account on X showing a gold verification checkmark
120
Ryan J. Gallagher @ryanjgallag.com · 20/04/2025
Some Sunday guitar trying out a new tripod
010
Ryan J. Gallagher @ryanjgallag.com · 18/04/2025
Research on misinformation does not infringe on anyone's free speech! Blatantly anti-scientific reasons for blocking this research
NSF priorities announcement: " Are you still funding research on misinformation/disinformation?
Per the Presidential Action announced January 20, 2025, NSF will not prioritize research proposals that engage in or facilitate any conduct that would unconstitutionally abridge the free speech of any American citizen. NSF will not support research with the goal of combating "misinformation," "disinformation," and "malinformation" that could be used to infringe on the constitutionally protected speech rights of American citizens across the United States in a manner that advances a preferred narrative about significant matters of public debate."
58231
Ryan J. Gallagher @ryanjgallag.com · 20/03/2025
Three of my articles are in here
Screenshot of the names of two articles by Ryan J Gallagher. The first is Anchored Correlation Explanation: Topic Modeling with Minimal Domain Knowledge. The second is Reclaiming Stigmatized Narratives: The Networked Disclosure Landscape of #MeTooScreenshot of the names of two articles by Ryan J Gallagher. Divergent discourse between protests and counter-protests: #BlackLivesMatter and #AllLivesMatter
010
Ryan J. Gallagher @ryanjgallag.com · 12/03/2025
said screenshot
Picture of the elephant from the game It Takes Two. Text: "What's my favorite horror movie? Oh idk maybe the one where this sweet baby angel has to suffer because two adult idiots can't just talk it out"
010
Ryan J. Gallagher @ryanjgallag.com · 19/02/2025
logging on today after a full day of meetings
Meme of woman laughing nervously saying what the fuck
1151
Ryan J. Gallagher @ryanjgallag.com · 06/02/2025
We recently got a new cat :) taking up a lot of brain space making sure she's introduced to our other cat properly
Picture of a calico cat
020
Ryan J. Gallagher @ryanjgallag.com · 05/02/2025
The reporting pipeline on Bluesky is... Not Great If I see a post literally advocating for someone to be murdered, I should be able to report it for "violent behavior" "Anti-social behavior" is too broad, it's more than someone using a slur. "Illegal and urgent"... It's urgent but is it illegal?
Screenshot of the options when reporting a piece of content. It can be tagged as misleading, spam, unwanted sexual content, anti-social behavior, illegal and urgent, or other
150
Ryan J. Gallagher @ryanjgallag.com · 17/01/2025
having to put on my information theory hat to read another network science paper based on the minimum description length
Ah shit here we go again meme
1130
Ryan J. Gallagher @ryanjgallag.com · 07/01/2025
Why doesn't Community Notes work without fact checkers? It was never meant to be standalone. It's meant to be part of a swiss cheese model of misinfo @leticiabode.bsky.social @ekvraga.bsky.social It's just one layer. It catches some things, and misses others thebulletin.org/premium/2021...
Diagram of the Swiss cheese model of mitigating online information. It shows several layers of Swiss cheese with content passing through them. The content passes through some holes but not others. The layers are labeled media literacy, inoculation, correction, content labeling, content moderation, deplarforming
1102
Ryan J. Gallagher @ryanjgallag.com · 10/12/2024
blocking spam follow bots one by one
Meme of "It ain't much but it's honest work"
2141
Ryan J. Gallagher @ryanjgallag.com · 06/12/2024
The default Bluesky Moderation service has 22 different labels for posts and profiles, but you can only report posts/accounts to Bluesky for 5/3 categories, and these categories don't align with the labels This makes it hard for users to file reports, and I'm sure it slows down Bluesky moderators
Screenshot of the categories for which a post can be reportedScreenshot of the categories for which an account can be reported
120
Ryan J. Gallagher @ryanjgallag.com · 03/12/2024
This week, I started with TikTok as a data scientist in their Trust & Safety org! My work will focus on detecting and disrupting coordinated, deceptive networks targeting US users
A physical version of the TikTok logo at their office
3820
Ryan J. Gallagher @ryanjgallag.com · 28/11/2024
Progress! I got Ozone up and running using my (new) domain and an instance from Digital Ocean I mostly followed the steps here, which were very helpful github.com/bluesky-soci... Next step is actually figuring out how to label things... can't figure out how to do it through reports or Ozone
350
Ryan J. Gallagher @ryanjgallag.com · 26/11/2024
@aendra.com thank you for your work on your screenshot labeler and open sourcing it! I'm trying to understand how the pieces fit together so I can create my own labeler To label from the firehose, do you need 2 pieces: Ozone and a "bot"? Is there somewhere I can read more about this architecture?
Screenshot of the tech stack for the Xblock screenshot labeler
240
Ryan J. Gallagher @ryanjgallag.com · 19/11/2024
types of network science papers
A meme of different kinds of generic network science papers
68926
Ryan J. Gallagher @ryanjgallag.com · 30/09/2024
I love how petty YouTube is if you turn off personalized recommendations It refuses to show you *anything* on the home page. No generic trending videos, nothing
Screenshot of YouTube showing nothing when you turn off personalized recommendations
010
Ryan J. Gallagher @ryanjgallag.com · 17/09/2024
I'm usually on the back half of adoption curves, so this feels pretty nice :)
030
Ryan J. Gallagher @ryanjgallag.com · 29/10/2023
This is a follow up to an announcement that posts that get a Community Note will be demonetized I support the sentiment, but this seems so easy to weaponize against accounts. Speaking as someone who spent 6 months at Twitter auditing ways the Community Notes algorithm may be manipulated
Tweet from Elon Musk: Worth noting that any attempts to weaponize Community Notes to demonetized people will be immediately obvious because all code and data is open source
281
Ryan J. Gallagher @ryanjgallag.com · 29/09/2023
Having a great morning in The Big City today 🫠
Picture of water pouring through an apartment ceiling
150