1870 stories
·
2 followers

The AI Compass

1 Share

The AI Compass

This political compass style quiz by bambamramfan is pretty neat - answer 29 questions about AI and AI ethics to see which of the 30 archetypes you best fit.

I'm impressed that my answers on my first time through the quiz categorized me as "The Garage Tinkerer", patron saint myself!

Screenshot of a quiz result screen on a dark background. The top half shows a square scatter-plot quadrant chart with axes labeled GOOD (top), BAD (bottom), OVERHYPED (left of center) and TRANSFORMATIVE (right of center), filled with colored regions and scattered dots; a glowing white-ringed teal dot marks the user's position in the upper-right (good/transformative) area. Below, a card reads: "YOU ARE..." / "The Garage Tinkerer" / "patron saint: Simon Willison" / "You're running local models, building little tools, and having a genuinely great time. You don't care about the discourse — you care about making the thing do cool stuff. The technology is interesting and everyone arguing about it would be happier if they just opened a terminal."

It's implemented as a single page React app using the <script type="text/babel"> trick to avoid the necessary build step. Here's the code.

Via @erisianrite.com

Tags: ai, generative-ai, llms, ai-ethics

Read the whole story
mrmarchant
47 minutes ago
reply
Share this story
Delete

Moduloku

1 Share
Moduloku

Math is wonderful, and there are so many different ways to play and experience it. I enjoy having conversations with other math lovers and sharing ideas, puzzles, pedagogy, and questions.

In one of these conversations with Dr. Maria at Natural Math, I learned about a book called Modultown by Drs. Sasha Fradkin and Allison Bishop, and the artist, Mark Gonyea. The project also has an adjacent puzzle book with a delightful puzzle called Moduloku.

I made a prototype of a simplified digital version while at the Recurse Center on my website Inquiries.Link.

I look forward to working on some of these in my math sessions with learners and playing with some of the variations in the book.

Spoiler:

Here are my thoughts as I solve one:

Moduloku

The first thing is to look for blanks I can check right away against the remainders. I see that the third column has one blank and the sum has a remainder of one when divided by 10. Of the numbers available, only 7 gives a remainder of 1.

Moduloku

I can then use the same approach to find the numbers in the first column. First I find the 9, but then, the next one is a little tricky. I need a 2, but since that isn't available, I can use 12 to get the same remainder.

Moduloku

Now, the top row has a remainder of 3 and the sum is 3 with two blanks. That means that the sum of the two blanks must be divisible by 10. The only combination that works is 6 and 4. So, the last two blanks must be 5 and 8.

Moduloku

We can do the same for the columns. So, column 2 has a remainder of 5 and sum of 11. That means that we must sum the two blanks to a number that has a remainder of 4 when divided by 10. The only combination of 4,6 and 5,8 that works is 6 and 8, which sums to 14.

Moduloku

Which leaves only one possible value for each remaining blank – Solved!

Moduloku
Read the whole story
mrmarchant
16 hours ago
reply
Share this story
Delete

How to lie about radiation

1 Share

Drinking one beer a night for a year is a lot less harmful than drinking 365 beers in one go. The same applies to radiation exposure, but regulation doesn’t agree.

Read the whole story
mrmarchant
1 day ago
reply
Share this story
Delete

No, the normal distribution isn't in your gym

1 Share

You may well seen the below viral image of a weight stack over the years. It’s often shared as evidence that the normal distribution (i.e. bell curve) is everywhere in daily life.

There’s just one problem: it doesn’t show a normal distribution.

A normal distribution often appears when we sample repeatedly from the same population and take the average each time (this is thanks to the central limit theorem). For example, if we calculate the average height of members at a series of different gyms, we’d expect the distribution of these averages to follow a normal curve if we included lots of gyms in the analysis.

But that’s not what happens if we look at a weight stack.

The wear marks on a stack show the distribution of individual efforts over time. And like many measures of individual performance, it has a long tail.

Just look at the image. The wear is concentrated at weights around 40-50. But some people have lifted well over 100.

If the distribution was truly normal, it would be symmetrical. But the marks in the image are not symmetrical; they are skewed to the right.

If we fit a normal curve to the data (well, the approximate area of wear estimated by an AI vision model), we therefore end up predicting negative weights. Which, of course, isn’t possible:

Just because observations are distributed around an average value, it doesn’t mean they automatically follow a textbook normal distribution.

If we’re focusing on simple distributions, something like a Gamma distribution – which is asymmetric and only generates positive values – gives a better overall fit to the observed data. It’s not perfect, and a more complex shape would do better (Gamma, like normal, has only two parameters) but at least it doesn’t predict a bunch of implausible negative values:

This is the problem with telling people that normal distributions exist in places where they don’t: it creates a temptation to use distributions that are familiar rather than realistic.

We saw this happen a lot during the early stages of the COVID pandemic, when people would fit simplistic bell-shaped curves to outbreaks with very different causes and dynamics, then claim that one could predict another. For example, outbreaks of food poisoning produce a curve that goes up then comes down, but that doesn’t mean they can tell us much useful about a major respiratory epidemic.

We also saw this happen dramatically in the run up to the 2008 financial crisis, when banks used overly simple distributions to model correlations between mortgage risks. One leading hedge fund reportedly kept an abacus in one of its conference rooms; there was a label next to it that read ‘correlation model’.

From racking up weights to racking up debts, it’s a good reminder that we shouldn’t rely too much on inappropriate distributions that don’t capture what’s really generating the patterns we observe.

Thanks for reading Understanding the unseen! Subscribe for free to receive new posts and support my work.

Read the whole story
mrmarchant
1 day ago
reply
Share this story
Delete

The Not-Quite-Healing Powers of Onion Soup

1 Share

When you have a cold, there’s nothing quite like a bowl of soup to help you along the way. The warm, typically umami-heavy broth may not have actual healing effects, but the combination of hydration, warmth, and more can help alleviate some of the symptoms, temporarily, of your particular ailment. And in any event, it can’t hurt. taken together, soup has become a staple of flu and cold season.

And, if you were a Viking, it can also be used to save other people’s lives — at your expense.

From, roughly, the year 800 to 1050, Viking from Scandinavia raided and colonized areas of Europe and into North America. The Viking Age, as the period became known, is now mythologized by tales of epic battles featuring men wearing horned hats, stabbing each other with swords.

While the horned helmets aren’t based in history, the swords definitely are. Vikings conquests — like any other warfare — were often bloody. Many of those conquests are detailed in Icelandic and Norse sagas, and while the accuracy of those records are debatable — the sagas were often written generations after the events — there are many details generally believed to be true. For example, these texts, per a paper in the Journal of Military and Veterans’ Health, outline how Vikings used herbal remedies to help injured warriors stave off infection and similar illnesses.

But like any other medication, those herbs weren’t in infinite supply. Viking healers needed to dole them out with efficiency. Giving a treatment to someone who was beyond hope was, while humane, a waste of such resources. So, per the sagas, they came up with a way to triage the injured to determine who could benefit from the herbs — and who couldn’t. Their method: a broth made of onions, leeks, and other smelly vegetables. We Are The Mighty explains:

If a Viking warrior was wounded in the stomach during a battle, they were fed a strong, pungent onion soup. Afterward, the Vikings tending to the wounded would smell the belly wounds to look for the signature onion smell. If they could smell the onions through the man’s wound, then they knew the stomach wall was cut, and the man would not survive his wounds. It would be pointless to try to save the man and another with a better chance of survival would be treated.

As a result, a lot of Viking warriors had a last meal of onion soup — especially if they, literally, couldn’t stomach it.

Bonus fact: As noted above, Vikings didn’t actually wear horned helmets. The iconic horned headwear is almost entirely a 19th-century invention. It became popular after costume designer Carl Emil Doepler outfitted performers in horned helmets for an 1876 production of Richard Wagner’s Der Ring des Nibelungen, per Yale historian Roberta Frank, and the image has stuck ever since. The ones found in archeology efforts, per Smithsonian, date back around 3,000 years — well before the Viking Age.

From the Archives: The Great Minnesota Goose Scandal of 2017: Vikings, yes. Horns on helmets, yet. Onion soup and bloody conquests? Not so much.

Read the whole story
mrmarchant
1 day ago
reply
Share this story
Delete

Names in the USA (1880-2025)

1 Share

An exploration of baby name trends in the USA from 1880 to 2025

Table of Contents

1 Introduction

Baby name rankings are very popular on the internet and on social media. A typical ranking is the top baby names for each gender in the USA in 2025 (source):

Ranking Male Female
1 Liam Olivia
2 Noah Charlotte
3 Oliver Emma
4 Theodore Amelia
5 Henry Sophia
6 James Mia
7 Elijah Isabella
8 Mateo Evelyn
9 William Sofia
10 Lucas Eliana

What these rankings often don’t show is the quantitative values behind these rankings. That is, how many babies were given each name in the year 2025, and how does that compare to previous years?

Thankfully the USA Social Security Administration (SSA) releases the full dataset for baby names going back to 1880. I took this data, and summed up the counts of the top ranked names each year, and plotted them against each other. See the above graph.

From this graph we can see that the popular names are getting less popular, while the number of births is still in line with what it was 50 years ago. This is something that plain rankings obscure.

If “Liam” or “Olivia” were ranked in previous years with the same frequency as 2025, they would be ranked noticeably lower than #1. For example, in 2000 “Liam” would have been ranked 11th and “Olivia” would have been ranked 12th. In 1950, “Liam” would have been ranked 19th and “Olivia” 27th. But names are more spread out these days, so their frequencies are sufficient to be ranked #1 in 2025.

The other sections present other charts and insights derived from the data.

These are the top level findings:

  • There has been an almost 20× increase in the number of births each year from 146 years ago.
    • The 5 year average increased 18.6× from 215,000 births in 1885 to 4.02 million in 2025.
  • These days there are more than 15× names to chose from than 146 years ago.
    • From 1000 names each for boys and girls in 1880, there are now more than 17,000 unique names for girls and more than 14,000 unique names for boys each year .
  • However, given all this choice, the names frequencies are still heavily skewed towards a relatively small proportion of names.
    • In 2025, the top 100 names were given to more than 35% of newborns.
    • Over the whole 146 years, the top 100 names account for 46% of all names given.
  • That said, the top ranked names are less popular both absolutely and relatively since the 1900s, and this trend is continuing.
    • The frequency of the top 100 males names has decreased absolutely by 2.5×, from covering 1.62 million of all births in 1956 to 650,000 births in 2025. Relatively they decreased by almost half, now accounting for 38% of all births from of a peak of 81% in 1880.
    • The frequency of the top 100 females names has decreased absolutely by 2.5×, from covering 1.31 million of all births in 1957 to 514,000 births in 2025. Relatively they decreased by more than half, now accounting for 31% of all births from of a peak of 77% in 1880.
  • Girl names are consistently slightly more diverse than boy names.
    • Over the whole period there were on average 40% more girl names than boy names each year. Over the last 5 years, there were 24% more girl names on average.
    • Over the whole period the top 100 girl names accounted for 10% less of girls than the top 100 boy names did for boys. Over the last 5 years the 100 girl names have accounted for 7% less on average.

2 Methodology

2.1 Data

The data is the “National data” released by the USA Social Security Administration (SSA) at SSA: Beyond the Top 1000 Names, released in 2026. It has the following limitations:

  1. Not every US citizen has a social security number.
  2. Only names with more than 5 births per year are reported.

The dataset consists of 146 CSV files for each year from 1880 to 2025. Each CSV file has three columns: name, gender (M or F) and frequency. The CSV files are ordered by gender (F than M), then descending frequency and then alphabetically for tied frequencies.

2.2 Dense Ranking

I used a dense ranking. This means that identical counts are given the same rank and there are no gaps in the rankings. So the top 100 ranked names could account for more than 100 names in a given year. However, ties in the top 100 names are rare, but they get more common as the counts get lower. At the lowest values there can be up to 2000 names per ranking.

No single year exceeded a dense ranking of 1000 per gender despite some years having move than 20,000 unique names for a single gender.

2.3 Code

I used Julia to analyse the data. I will not present the full code here, but here are some snippets.

Loading a single file and transforming:

using CSV, DataFrames
filepath = joinpath(data_dir, "yob2025.txt")
df = CSV.read(filepath, DataFrame; header=["Name", "Gender", "Count"])
transform!(
    df,
    :Name => ByRow(x -> x[1]) => :FirstLetter,
    :Name => ByRow(length) => :Length,
) # name composition
transform!(groupby(df, :Gender), 
    :Count => cumsum => :CumulativeCount,
    :Count => (x -> x ./ sum(x)) => :Frequency,
    :Count => (x -> denserank(x, rev=true)) => :Rank,
) # gender ranks
transform!(groupby(df, :Gender), :Frequency => cumsum => :CumulativeFrequency)

Filtering on gender:

m_df = filter(:Gender => ==("M"), df);
f_df = filter(:Gender => ==("F"), df);

Quantiles:

idx = something(
    findfirst(m_df.CumulativeFrequency .>= 0.5),
    nrow(m_df)
) # rank of 50% quantile / median

Loading multiple files and joining into one large dataframe:

using CSV, DataFrames
using Parquet2
filepath = joinpath(data_dir, "yob1880.txt")
df = CSV.read(filepath, DataFrame; header=["Name", "Gender", "1880"])
for year in 1881:2025
    print("$(year), ") 
    filepath_next = joinpath(data_dir, "yob$year.txt")
    next_df = CSV.read(filepath_next, DataFrame; header=["Name", "Gender", "$year"])
    df = outerjoin(df, next_df, on=[:Name, :Gender])
end
year_matrix = df[:, string.(1880:2025)]
df.Total = sum(eachcol(coalesce.(year_matrix, 0)))
df.Count = sum(eachcol(.!ismissing.(year_matrix)))
size(df) # (117820, 150)
Parquet2.writefile("names_ssa_1880-2025.parquet", df)

Transforming the joint dataframe:

transform!(groupby(df, :Gender), 
    :Total => (x -> denserank(x, rev=true)) => :TotalRank,
) # gender total ranks
transform!(groupby(df, :Gender),
    [y => (x -> denserank(x, rev=true)) => "Rank$y" for y in years]...
) # gender yearly ranks
transform!(df,
    :Name => ByRow(length) => :Length,
    :Name => ByRow(x -> x[1]) => :FirstLetter,
); # name composition

Export data to JSON:

using JSON
out = Dict{String, Any}("years"=> 1880:2025)
names_to_save = Dict("M"=> ["John"], "F" => ["Mary"])
for gender in ["M", "F"]
    out[gender] = Dict{String, Any}()
    gender_df = gender == "M" ? m_df : f_df
    for name in names_to_save[gender]
        idx = findfirst(gender_df.Name .== name)
        out[gender][name] = Dict(
            "count" => Vector(gender_df[idx, years]),
        )
    end
end
JSON.json("output/names.json", out)

3 Top Names

The “Top 1” dataset from the Top N graph can be decomposed into the top names each year. This produces the following graphs:

These graphs show how relatively “unpopular” the most popular names are now compared to the popular names of the 1900s.

The number of names that have reached the top spot is very small. There are only 19 in total, 8 boy names and 11 girl names. Mary alone was the #1 girls name for 76 years, more than half the total period from 1880 to 2025.

Here is how these top yearly names are ranked across all 146 years:

Rank M Total Rank F Total Rank
1 James 1 Mary 1
2 John 2 Jennifer 4
3 Robert 3 Linda 5
4 Michael 4 Jessica 11
5 David 6 Lisa 16
6 Jacob 29 Emily 18
7 Noah 63 Ashley 20
8 Liam 97 Emma 28
9     Olivia 51
10     Sophia 82
11     Isabella 86

There are gaps here because many popular names have never been ranked #1. For example, “Elizabeth” is the overall #2 female name, but there was never a year it was ranked #1.

4 Unique Names

The number of unique names has grown from 2000 names in 1880 to over 31,000 names in 2025. Every year has seen names added and removed from the list, with up to 4,000 removed and added each year in the 2020s. Overall there are 117,820 unique names in the datasets. Of these 31,227 (26.5%) are represented in 2025.

The above graph shows how skewed the dataset is, with the top 75% quantile line (75% of all baby births) hovering at around 4% of all names.

Girl names are consistently slightly more diverse than boy names. Over the whole period there were on average 40% more girl names than boy names each year. Over the last 5 years, there were 24% more girl names on average.

Some insight can be gained by looking at the ratio of the total count each year (the total number of births) to the count of unique names each year, taking into mind the heavy data skew towards popular names. From this graph we can see that names were most concentrated in the 1950s, with about 470 names per birth for boys and 300 names per birth for girls. These ratios have come down almost 4×, and now sits at 120 for boys and 91 for girls. This implies a greater diversity in naming in recent years.

5 Composition

We can also investigate the composition of the names in the dataset. Here I do so for the first letter and also for the name length.

Over the whole period the most popular first letter for boy names was “A” (Anthony, Andrew, Alexander) and “J” (James, John, Joseph), and for girls was also “A” (Anna, Ashley, Amanda) followed by “S” (Susan, Sarah, Sandra).

If we were to take a random person at any year in the period, for a man their name would most likely start with a “J” while for a woman it would most likely start with an “M” (Mary, Margaret, Michelle).

The names vary in length from 2 letters (Al, Ty, Jo, Lu) to 15. (Many of the 15 letter names look like concatenations of shorter names and might be mistakes e.g. Muhammadibrahim, Christopherjohn, Mariadelosangel.) Most names are 5 to 8 letters long.

6 Bonus

My name is one of the many rare names. It is a Hebrew name, spelt as ליאור and transliterated as “Lior” or “Leor”. It is gender neutral. There is also a female only version, ליאורה, which is transliterated as “Liora” or “Leora”.

The data shows that “Leora” has been used in the USA since at least 1880, but “Leor” was only first used in 1979. It is ever so slightly gaining in popularity, with 93 baby boys and 473 girls given a variation of the name in 2025. For girls, the “Liora” spelling recently overtook “Leora” in popularity.

Read the whole story
mrmarchant
2 days ago
reply
Share this story
Delete
Next Page of Stories