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.
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.
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.
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.
An exploration of baby name trends in the USA from 1880 to 2025
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:
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:
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.
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.
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 / medianLoading 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 compositionExport 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)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.
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.
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.
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.
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.
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.

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.
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.
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.
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.
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.
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.
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).
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:
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.
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:
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.
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?
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?
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.
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:
Usage of stick in Step
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.
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!
On college campuses around America, old-fashioned blue books are making a comeback.
Around a century ago these standardized booklets for written exams were introduced by Butler University in Indianapolis. For many former students of a certain age — myself included — the sight of a blue book can generate anxiety and even nightmares. And many former instructors — myself again included — recall the tedium and strained eyesight of trying to decipher students’ handwriting. So it was an improvement when exam-taking shifted from paper to computer. Or so it seemed at the time.
Now, however, students are using AI to write essays and answer questions on take-home exams, as well as taking in-person exams on their computers. As a result, an AI-arms-race has developed between instructors and students. Concerned that students are not doing the work themselves but are simply copying and pasting AI output, instructors have begun using AI programs to detect students’ use of AI. Inevitably, there are now AI programs that students can use to outwit the instructors’ AI detection programs.
So, not surprisingly, many instructors are going back to handwritten in-class exams, generating a sudden boom in the demand for blue books. Ominously, even the return of in-person testing may not solve the problem of testing in the face of AI: Cheating using AI glasses is on the rise in Asia and will doubtless spread worldwide.
My concern here isn’t about testing; it’s about learning. The objective of testing is to further learning, and there is growing concern (as well as evidence) that students’ use of AI damages their capacity to learn. And what we really mean by learning is the ability to think. Students who rely on large language models to answer questions won’t learn how to think by reasoning through the evidence to form a conclusion. As a result, they will be unequipped to deal with situations in which AI either can’t provide an answer or provides misleading answers.
In short, there are good reasons to worry that what we’re calling artificial intelligence will adversely affect the development of our natural intelligence. Moreover, in the case of basic learning, those adverse effects may be virtually irremediable.
The rise of generative AI isn’t a complete departure from an ongoing process of outsourcing human judgment and understanding to external models. Rather, generative AI is just a further step in a process that began a generation ago with the launch of Google search and accelerated with the rise of smartphones. However, ChatGPT and Claude Code ratcheted that process up to a much more rapid pace.
Granted, each stage of this process has brought obvious short-term benefits to those using the new technologies. Yet these benefits have come at the cost of real, measurable long-term damage to human understanding and cognition. And AI, which is already creating a crisis in education, will almost surely make the damage much worse.
Beyond the paywall I will address the following:
1. A brief history of outsourced cognition
2. The sharp deterioration in learning with the advent of smartphones
3. The AI cognitive crisis
4. Will cognitive losses due to AI lead to a new form of inequality?