1869 stories
·
2 followers

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
14 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
23 hours 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
1 day ago
reply
Share this story
Delete

Every Physics Teacher (And Student) Should Try This Open Source Software

1 Share

Open source software has always been a cornerstone in scientific applications.

From supercomputers to CERN labs, handling some of the greatest discoveries of humankind and accelerating particles beyond imagination, open source software has provided the framework for all necessary technological usage.

Bringing it down to a simpler level, KDE's Step provides you a platform to test out some of the most important basic concepts in physics, like simple motion, electrostatics and gravitation, and even things like spring (harmonic) motion.

Developing an intuition about these phenomena can finally bridge the knowledge gap that students need. So if you are a physics teacher (or student), KDE Step is worth your attention.

Interface and Experience

Using the basic KDE design kit, the application looks quite familiar as it is. It is arranged in a very efficient manner, with all the usable objects on a panel on the left side of the window, while the right side holds the panel that can be used to modify any of the attributes of those objects as well as a panel that shows the history of the steps (no pun intended) made by the user. On the top of the window, all the menus are present with the undo/redo buttons, and most importantly, the button that allows you to start the simulation.

KDE Step

To demonstrate the elements and how they're used in the best way possible, I'm going to show different simulations that incorporate said elements. It is the most efficient and vivid way, since it is, after all, a simulation app.

Simple Harmonic Motion

As a very famous quote from Sidney Coleman says, "The career of a young theoretical physicist consists of treating the harmonic oscillator in ever-increasing levels of abstraction." Keeping up with that sentiment, I will show a very basic demonstration of a simple harmonic motion.

0:00
/0:16

Simple Harmonic Motion

The elements used here are two particles, a spring, a graph, weight field and an anchor. Particles in Step are simple zero-dimensional point objects with modifiable position, color, velocity, mass, momentum and kinetic energy.

Springs are simple, you can attach both ends to objects, you can change the stiffness. Anchors are utilities that can be used to fix the position of an object to the scene. No matter what, it will not move from where it is placed.

A weight field simply simulates the gravitational force of earth for all the objects placed on the scene, but again, you can modify the gravitational acceleration to suit whatever kind of simulation you're trying to run (for example, trying to simulate the gravitational force on the moon).

Finally, the graph utility can be used to plot any property of any object on the scene against any other property.

Soft Body

While sounding like a promise made by a moisturizer, soft body is not that but a category of objects in physics that are not rigid but that deform and change shape according to the parameters set.

More accurate, and as shown in the app itself, it can be thought of as an object made of small particles connected to each other by springs that deform according to the force provided.

0:00
/0:09

Soft body simulation

Two new elements are used here, a soft body (that has already been described) and a box. A box is just that, a rectangle with modifiable dimensions, where apart from what you can already change in a particle, you can also change the angular velocity, angular momentum, inertia, and so on.

📋
If you're wondering why the soft body falls on the left even though it has been placed centrally on the screen, that is because nothing can be truly zero in this context. There's always a miniscule value left, and in this case, even when the value is defined as 0, it is some exponentially small value close to it on the left (negative).

Orbit

Another basic simulation that can really help is that of an orbit. Step provides a gravitational field simulation, in which the universal law of gravitation starts holding true and applying within the canvas.

In this simulation, I've modified the value of the gravitational constant to something that allows my particle to orbit the central particle (because I finally can), and I'm using a controller to change the mass of my central particle while the simulation is going on to show how that changes the velocity and distance of the revolving particle.

0:00
/0:31

Orbit simulation

As you can see, for the first part of the video, it is making a calm orbit but as soon as I start increasing the mass, the particle comes closer (as one would expect) and when I decrease it, the particle goes out the frame (a little dramatic, but still expected).

Compound Pendulum

Have you ever wondered what an oscillating lambda would look like? Well wonder no further because Step allows you to make any kind of polygon that you would like to make with the polygon tool, and then you can use a pin to fix the position of one point in that body to the canvas. And some weight force to the scene, and there you go. A lambda pendulum:

0:00
/0:11

Compound pendulum simulation

This kind of pendulum that isn't one concentrated mass but distributed instead is called a compound pendulum in physics, which can be quite difficult to visualize sometimes.

Linear-Angular Parallels

Students often struggle with the equations for the motion of a disk, or anything that has to do with rotating rigid bodies, but it is only a matter of translation of the values in the usual linear equations of motion into those that concern rotating bodies. For example, mass gets replaced with moment of inertia, velocity with angular velocity, same with acceleration and so on. In the following simulation, that's exactly what we're showing:

0:00
/0:07

Linear-rotating parallels.

In this simulation, the particle and the disk have mass and moment of inertia with the value 1, velocity and angular velocity with value 6, acceleration and angular acceleration -2 respectively.

As you can see, the changes happen hand-in-hand, making it clear how the equations work practically parallelly. I have used a linear motor to apply a linear force to the particle and a circular motor to apply a torque to the disk. The values on display can be shown using the meter utility.

Stable and Unstable Equilibrium Positions

In the first case, I've fixed two positive charges of equal magnitude on the canvas with anchors. Another positive charge was placed right in between them. The charge, of course, will be in equilibrium just by the virtue of being smackdab right in the middle of the positive charges. What happens if I slightly move the central charge from its position?

0:00
/0:09

Stable equilibrium state for charges

The charge starts oscillating. In a real life scenario where there are losses due to friction and so on, this will return to the equilibrium position right in the middle. But what if my central charge is negative? What happens then?

0:00
/0:06

Unstable equilibrium state for charges

As you can see, the charge moves on to the side of movement, as you would expect. In this case, the equilibrium was unstable, meaning even the slight change in position on one side will result in absolute ruin of the equilibrium state. I've used charged particles, which are similar to normal particles but with the added option of adding a charge to them. Similar to how we did with gravitation, you need to add the Coulomb field to the canvas in order for the law of electrostatics to start applying.

Constraints

A lot of basic physics is based on constraints, which can be of different sorts. The most basic one is where the distance between two bodies is fixed, so that the motion of one of the bodies impacts that of the other. So in this simulation, I've done that exactly with a massless stick, which connects two bodies in Step. I've given a certain velocity to one of the particles, and you can see here how it impacts the other one:

0:00
/0:09

Usage of stick in Step

📋
It is important to note that sometimes the stick doesn't work really well. It is not supposed to be elastic, but it sometimes acts more like a spring than a stick if not configured exactly well.

Perfect Gas Simulation

Finally, Step has a tool that lets you simulate a perfect gas, following the basic principles of kinetic theory of gases. When applying it on the canvas, you can configure the area that the gas will exist in, the number of particles inside that area, the concentration, the temperature, particle mass and mean velocity. Sure, some of these things are dependent on each other and all of them being configurable individually does seem a little counter-intuitive, but if you change one of the values that another depends upon, it changes automatically. There's no disregard for the physics of it here.

0:00
/0:18
📋
The gas particles are not configured to interact with any other bodies or walls/objects in the vicinity. If you put boxes or polygons to see how the gas interacts with them, Step will show an error saying it isn't possible.

Wrapping Up

There are some very obvious points at which Step breaks. Not even showing an error, it just breaks. For example, if you configure the mass of a particle to be 0 or very close to it, for any simulation that involves forces or collisions, the canvas just disappears. Obviously, massless particles are not in the scope of scenarios which Step can simulate.

Overall, Step has some excellent options that can really help students visualize their physics lesson up to an elementary undergraduate level.

As a student of Physics, I have been using it for years to clear my doubts, but it is only obvious that the simulation can only be as helpful and accurate as you are careful with setting it up. More than that, it helps you explore possibilities that aren't possible in the physical world, such as completely ideal conditions of zero friction, the ability to change fundamental and universal constants and so on.

On a related note, you may want to check out the list of distros for schools and education.

I hope this article was helpful and that you have fun seeing the answers to your physics doubts come to life. Cheers!



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