Sign in

Ilya Kashnitsky

@ikashnitsky.phd
3.1K followers 2.3K following 1.1K posts

Demographer / Senior Researcher @dst.dk / Affiliate Member @oxforddemsci.bsky.social‬ / Board @demografi.dk ✨ @datavizartskill.ikashnitsky.phd 📝 ikashnitsky.phd 😍 #demography #dataviz #rstats 🙌 #openscience #bibliometrics 🔗 bio.link/ikx

PostsRepliesMedia
Reposted by Ilya Kashnitsky
Jeremy Van Cleve @vancleve.theoretical.bio · 29/09/2026
My group is recruiting a Ph.D student for Fall 2027! We're a friendly group of mathematically-minded and computationally-inspired biologists studying topics including social evolution, host-pathogen interactions, genetics, and demography. See vancleve.theoretical.bio for more info!
vancleve.theoretical.bio
van cleve research group
Van Cleve Research Group – theoretical evolution & ecology at the University of Kentucky
04865
Reposted by Ilya Kashnitsky
Skagerrak Demographic Series @skagerrak.bsky.social · 29/09/2026
We are happy to announce that Skagerrak Demographic seminar now truly lives up to its name. Swedish Demographic Society (demografi.se) joins the initiative and will too organize hybrid meetings under our Nordic umbrella 🙌 @demografi.dk demografi.no
174
Ilya Kashnitsky @ikashnitsky.phd · 28/09/2026
Yesterday was probably my most intense ever running day so far — a personal best in the morning 🏆 and accommodating my 7yo Anna at kids Hans Christian Andersen mini-marathon in the afternoon 🤗
0100
Ilya Kashnitsky @ikashnitsky.phd · 28/09/2026
One of the main Danish life concepts is hygge — cozy, warm, cute time in the next company. A Saturday morning in a creative cafe with daughters is an embodiment of this idea 😍
270
Reposted by Ilya Kashnitsky
Thomas Lin Pedersen @thomasp85.com · 24/09/2026
As announced at posit::conf(2026) #ggsql is now, with the release of version 0.5.0, in Beta. I'm so excited for the future of this project. Read all about what the latest version brings you in the release post
opensource.posit.co
ggsql 0.5.0: Readers, Writers, and Beta status
Announcing ggsql 0.5.0, with new readers and writers for getting data in and out, and the project's graduation to beta status.
14814
Ilya Kashnitsky @ikashnitsky.phd · 26/09/2026
😍We were exceptionally lucky at Statistics Denmark to have @thomasp85.com giving a thorough {ggsql} intro, with a focus on motivation and the theoretical foundations 🗣: In the era of LLMs, READABILITY of the code is essential for humans; SQL tops here 🏆 🔗 slides: thomasp85.github.io/2026_ggsql_4...
Thomas Lin Pedersen in front of the slide featuring a 6x4 wall of R package hex stickers -- all of them authored by Thomas 🤯
1211
Ilya Kashnitsky @ikashnitsky.phd · 20/09/2026
One of the best examples of age heaping #demography Smth like this: - Who else lives in the household? - Grandpa - How old is he? - Ehm... 85
0153
Ilya Kashnitsky @ikashnitsky.phd · 06/08/2026
Fractional counting in #bibliometrics should become the norm, otherwise traditional metrics-based #ResearchEvaluation becomes meaningless too often ⚖ 👀 the example here 👇 blog post: ikashnitsky.phd/2025/ihme-bibl #srats replication using #OpenAlex data: gist.github.com/ikashnitsky/...
072
Ilya Kashnitsky @ikashnitsky.phd · 11/07/2026
Here's an exceptionally interesting #dataviz 👀 🔗 www.visualcapitalist.com/cp/countries... 👤 The author, Iswardi Ishak, produces more of these cool carefully crafted global infographics and shares via @voronoiapp.bsky.social 🤩 🔗 www.visualcapitalist.com/creators/iswardi-ishak
Infographic titled "Education Spending as % of GDP," using a color-coded world map and two ranked tables to compare countries by education spending relative to GDP and the percentage of population aged 24 and under.

## Overall Layout

The image is a data infographic with a navy blue background, a legend of seven color-coded spending brackets (from "less than 2%" in dark gray to "greater than 7%" in dark blue-green), and a world map showing countries filled with these colors and labeled with specific percentages, such as Sweden 7.3%, U.S. 5.4%, Russia 4.2%, China 3.9%, and India 2.8%.

## Top and Bottom Tables

Below the map, two tables titled "The Highest and Lowest Among Top 40 Economies" list "10 Highest" and "10 Lowest" countries by education spending as % of GDP, each paired with a flag icon, a colored income-tier tag (High-Income in blue, Upper-Middle in yellow, Lower-Middle in red), and a column showing "% population aged 24 and below." Sweden tops the high list at 7.3% spending with 28.4% young population, while Japan sits lowest at 3.3% spending with 20.8% young population.

## Text and Sourcing

The top-right corner contains a paragraph explaining that education spending reflects national priorities, demographics, and fiscal capacity, and that higher spending can signal investment in future generations. A small source line at the bottom cites "UNESCO via OurWorldInData, Population Aged 24 and below: UN Population Division, 2025," with a copyright notice "© 2026 Iswardi Ishak."
061
Ilya Kashnitsky @ikashnitsky.phd · 08/07/2026
The t-shirt from the 20th anniversary celebration of EDSD finally found its way (thx @cosmostrozza.bsky.social) to me (who missed the event) 🎉
260
Ilya Kashnitsky @ikashnitsky.phd · 07/07/2026
🚨Oh boy! Here is a masterpiece worth reading carefully, saving as a bookmark in a closeby drawer, and taking out this weapon to use in comments whenever you see a legacy usage of ollama 🫂Friends Don't Let Fronts l Friends Use Ollama 🔗 sleepingrobots.com/dreams/stop-... #foss #llms #ollama #llamacpp
April 18, 2026

+

Friends Don't Let Friends Use Ollama

Ollama gained traction by being the first easy llama.cpp wrapper, then spent years dodging attribution, misleading users, and pivoting to cloud, all while riding VC money earned on someone else's engine. Here's the full history, and why the alternatives are better.

Tags: LLMs, local, open-source, opinion
082
Ilya Kashnitsky @ikashnitsky.phd · 27/06/2026
An early morning run interrupted with a rescue mission. The martin bird is safe with the rescue guy who arrived on a huge evacuator. The 1812 service (Animal Protection Denmark; www.dyrenesbeskyttelse.dk) works fast — arrived in half an hour after the call 🙏
060
Ilya Kashnitsky @ikashnitsky.phd · 16/06/2026
This is and impressive and alarming figure. And I'm sure Nature journals, with their normalization of absurd APCs, are to blame here #OpenScience #AcademicSky #ScientificPublishing
021
Ilya Kashnitsky @ikashnitsky.phd · 15/06/2026
Today was a happy milestone — the first international guest coming to DST to give a talk at @skagerrak.bsky.social, and not just any guest but @jschoeley.com himself with a brilliant thought-provoking demographic talk and presentation of his brand new demoscapes.org 😍
2161
Ilya Kashnitsky @ikashnitsky.phd · 14/06/2026
🌎 Results of all 22 World Cup Finals — at a glance ⚽ #FIFAWorldCup #wc26 #wc2026 #worldcup26
Illustration chart of FIFA World Cup finals showing goals scored in each final from 1930 to 2022. A horizontal timeline runs along the bottom with years labeled (1930, 1934, 1938, 1950, 1954, 1958, 1962, 1966, 1970, 1974, 1978, 1982, 1986, 1990, 1994, 1998, 2002, 2006, 2010, 2014, 2018, 2022). Vertical lines rise from each year to a height indicating total goals, with circular markers showing the two finalist nations using their flags. Background is light beige with faint grid lines. Title at top reads “All 22 FIFA World Cup Finals.” Left side text reads “Goals scored in the final.” Colors are muted pastels; flags provide small bursts of color. Overall layout is wide and evenly spaced.
021
Ilya Kashnitsky @ikashnitsky.phd · 12/06/2026
10 years (😱) since my first proper academic paper. That was a tough yet very educational journey; and it's so much easier to deal with the complex and frustrating academic publishing process when the paper in question is a side-kick project, not *the PhD idea* 🙃 🔗 doi.org/10.1016/j.ci...
130
Reposted by Ilya Kashnitsky
Skagerrak Demographic Series @skagerrak.bsky.social · 08/06/2026
On 15th June at 11:00 @jschoeley.com will present his shining new project that he was secretly cooking with the relentless help of silicone friends 😍 🔗 events.teams.microsoft.com/event/839793...
064
Ilya Kashnitsky @ikashnitsky.phd · 07/06/2026
📦 {sjrdata} #rstats package updated to include 2025 journal rankings 🔗 github.com/ikashnitsky/...
Column plot of the total number of journal included in Scopus database, 1999-2025. There is a steady growth in the global academic output, yet we see a sharp drop in 2021, which is a result of fraud purging
0112
Reposted by Ilya Kashnitsky
Xan Gregg @xangregg.bsky.social · 31/05/2026
Weekly Bluesky posts tagged as #dataviz or #datavis. Highlighting #30DayChartChallenge and #30DayMapChallenge. Are the 30day challenges really so prominent, or so they weigh more heavily in the searchPosts api results?
Bar chart of Weekly Bluesky posts tagged as dataviz/datavis. Subsets that mention 30DayChartChallenge or 30DayMapChallenge are colored blue and orange and peek in April and November.
071
Ilya Kashnitsky @ikashnitsky.phd · 01/06/2026
TODAY in less than an hour Laust Hvas Mortensen is delivering a Skagerrak Demographic Series talk @skagerrak.bsky.social @demografi.dk Title: Broken limits to social science? Foundation models for demography. Please register for the talk here: events.teams.microsoft.com/event/8d8c1a...
022
Ilya Kashnitsky @ikashnitsky.phd · 08/05/2026
😱 AI will soon take our jobs. Surely you are hearing this claim often enough to dismiss it as fearmongering. The key word is "our". Will it soon grab *my* job? What's really happening in job displacement today? 👇The single most useful AI job revolution explainer sequoiacap.com/article/serv...
.

Diagram divided into four quadrants by two axes — a horizontal axis labeled "JUDGEMENT" on the left and "INTELLIGENCE" on the right, and a vertical axis labeled "OUTSOURCED" at the top and "INSOURCED" at the bottom. Each quadrant lists professional service sectors with estimated market sizes in US dollars.

**Top-left quadrant, labeled "COPILOT TERRITORY"**, contains open-circle bullet points indicating lower automation readiness: Management consulting $300B+, Graphic / UX design $30B+, Executive search $20B+, PR & comms $20B+.

**Top-right quadrant, labeled "AUTOPILOT TERRITORY"**, contains filled-circle bullet points indicating higher automation readiness: Insurance brokerage $140–200B, IT managed services $100B+, Payroll & compliance $50–70B, Claims adjusting $50–80B, Accounting & audit $50–80B, Healthcare rev cycle $50–80B, Mortgage origination $30–50B, KYC/AML $30–50B, Paralegal / LPO $36B, Tax advisory $30–35B, Legal transactional $20–25B, Real estate closing $20–25B, Cost estimation $16B.

**Bottom-left quadrant, labeled "WATCH"**, contains open-circle bullet points: Recruitment $200B+, Advertising $100B+, Freight brokerage $100B+, Admin assistants $80B+, Clinical trials / CRO $80B+, SEO / SEM $50B+, ERP implementation $50B+, Corporate training $50B+, Market research $45B, Cybersecurity $30B+, Architecture $25B+, Patent / IP $15–20B, Travel mgmt $15B+.

**Bottom-right quadrant, labeled "NEXT WAVE"**, contains filled-circle bullet points: Supply chain & procurement $200B+, Pharmacy back-office $30B+, Wealth mgmt ops $30B+, Medical admin $20B+, Fund administration $15–20B.
120
Ilya Kashnitsky @ikashnitsky.phd · 05/05/2026
Jonas is yet again producing insanely cool interactive demographic #dataviz (jschoeley.shinyapps.io/hmdexp is still the best #shiny app I know of) 😍 Explore demoscapes.org and watch this space, stay tuned for more cool updates 🐟
020
Reposted by Ilya Kashnitsky
Jonas Schöley @jschoeley.com · 05/05/2026
What is the main reason for premature male mortality in Mexico? @ikashnitsky.phd and Aburto answered this question in 2019 for every Mexican state, every year since 1990 and all ages from 15 to 50. Their rich results are available on demoscapes. demoscapes.org/collections/...
093
Ilya Kashnitsky @ikashnitsky.phd · 05/05/2026
😆 After the last Hard Fork episode (@kevinroose.com & @caseynewton.bsky.social) I couldn't resist trying out Talkie-1930, a chat based on an LLM with information cut-off in 1930. Just imagine you are a time-traveler 🤯 🔗 talkie-lm.com/chat
User
can human survive on a motorbike at 250 km/h?
talkie-1930
No; it is impossible to survive at such a speed for any length of time. The human organism cannot keep pace with a speed greater than 150 km/h, and to maintain even this pace for any considerable time would severely tax the heart and lungs. At 250 km/h the air resistance opposing the forward motion of the rider would be equal to about 44 lb, and the power necessary to overcome this would be 4½ H.P. The task of providing this power would soon become prohibitive, and the rider would be compelled to walk. On the other hand, if the speed were reduced to 100 km/h the air resistance would be only 22 lb, and the power necessary to overcome it 2½ H.P. In other words, a man can ride a motorbike at 100 km/h with comparative comfort, but cannot survive at a greater speed.
040
Ilya Kashnitsky @ikashnitsky.phd · 01/05/2026
Damn, do I ever learn that simple fact that (at least in coding #rstats) everything's taking more time than I initially think 🙈😅🙃
070
Reposted by Ilya Kashnitsky
Peter Dalgaard @pdalgd.bsky.social · 24/04/2026
R version 4.6.0 "Because it was There" (source version) has been released. It should be on CRAN by now. #rstats The choice of codename is in remembrance of R Core member Tomàš Kalibera (1978-2026). Among many other things, he was a keen mountain climber.
321349
Ilya Kashnitsky @ikashnitsky.phd · 24/04/2026
This is quite unbelievable 😱 China has been unrolling 10k km of high-speed railway every 4 years since 2008 🚀
020
Reposted by Ilya Kashnitsky
troy_phd @troyhernandez.bsky.social · 23/04/2026
After I messaged my agent from the train this morning to push a forgotten commit, I figured it was time to submit to CRAN and publish more than a Bluesky post. R is great for building AI agents: #rstats #CodingAgent cornball.ai/posts/r-as-a...
cornball.ai
R as CLI Agent Harness
One line: 1corteza::chat() That starts an AI agent in your R console. It can read files, run shell commands, query git, search the web (with a free Tavily API key). And because it’s running in your R ...
1133
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 19/04/2026
💡 Changes life expectancy follow changes in total death counts @araksha.bsky.social ✨ 📝 doi.org/10.31219/osf... 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ no ai jumpstarter this time, I worked off @jschoeley.com's code, all here github.com/ikashnitsky/... DAY 16 -- causation 💫 #30DayChartChallenge
Scatter plot with a fitted regression line illustrating the near-perfect negative linear relationship between year-on-year relative changes in life expectancy and year-on-year relative changes in total death counts for Italian males, covering the period 1950 to 2023.

The horizontal axis is labeled "Δ log D" (change in log total deaths), ranging from approximately −0.15 to beyond 0.15. The vertical axis is labeled "Δ log e₀" (change in log life expectancy at birth), ranging from below 0.00 to above 0.02. Reference lines cross at the origin (0.0, 0.00).

Dark teal circular data points are tightly clustered along a descending pink regression line, confirming a strong inverse correlation: years with rising death counts correspond to falling life expectancy, and vice versa. The majority of points fall near the origin, reflecting small year-on-year fluctuations. Two notable outliers appear in the upper-left quadrant (large life expectancy gain, large death count drop). One prominent outlier is labeled "2020" in pink, located far to the lower right, representing a large spike in deaths and a sharp drop in life expectancy during the COVID-19 pandemic. A second unlabeled point sits near it, slightly above and to the left.

The title reads: "A near-perfect linear link between changes in life expectancy and total death counts." The subtitle reads: "Year-on-year relative changes in life expectancy VS year-on-year relative changes in total death counts, Italy, males, 1950–2023." The data source is credited to UN World Population Prospects 2024 (wpp2024 R package), with attribution to Ilya Kashnitsky @ikashnitsky.phd, part of the #30DayChartChallenge 2026, Day 16, theme: causation.
163
Ilya Kashnitsky @ikashnitsky.phd · 17/04/2026
🇩🇰 Yesterday we had a wonderful yearly meeting of @demografi.dk — Danish Demography Day with one session of brilliant speakers and plenty of coffee break time to socialize 🫂 (👇 SDU is ready for the yearly science fest for kids 😍)
1102
Reposted by Ilya Kashnitsky
Andrew Heiss @andrew.heiss.phd · 16/04/2026
THE MONKEYS SUCCEEDED! For a fun time, run this in #rstats See the full #rstats code here: gist.github.com/andrewheiss/... There are 13 seeds between 1 and 200,000,000 that do this!
withr::with_seed(37035397, {
  paste0(LETTERS[sample(26, 5, replace = TRUE)], collapse = "")
})
#> [1] "HEISS"
5617
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 14/04/2026
DAY 12 -- Flowing Data 🌊 #30DayChartChallenge Explorations of the US names are always fun. Here we look at the most popular names by sex and distinguish them by timing of their peak popularity 🗻 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ pplx chat: www.perplexity.ai/search/day-1...
Streamgraph titled "Name Waves: the Ebb and Flow of American Baby Names," displaying the popularity of the top 10 baby names per sex in the USA from 1950 to 2022, sourced from the US Social Security Administration. Stream width reflects total births. Color encodes peak era: warm tones (yellow, orange, red) for early-peak names and cool tones (pink, purple, blue, teal, green) for recent-peak names.

The chart is split into two sections stacked vertically. The upper section, labeled "Girls" in bold teal, shows a wide stream that peaks broadly around the 1980s–1990s before narrowing toward 2022. Names labeled within the streams include Linda, Mary, Susan, Lisa (warm tones, prominent in the 1950s–1960s), Patricia and Jennifer (mid-era, orange to pink), and Sarah, Ashley, Jessica, Elizabeth (cooler tones, prominent from the 1980s onward). The lower section, labeled "Boys," shows a similarly shaped stream widest in the 1950s–1960s and tapering toward 2022. Names labeled include James, John, Robert, William, David, Michael (warm yellow-green tones, dominant in the 1950s–1970s), and Joseph, Matthew, Christopher, Daniel (cooler teal and purple tones, peaking in the 1980s–1990s). Credit text reads: "Data: US Social Security Administration via {babynames} · #30DayChartChallenge 2026 · Day 12 · FlowingData · Ilya Kashnitsky @ikashnitsky.phd."
2154
Ilya Kashnitsky @ikashnitsky.phd · 13/04/2026
For no specific reason, I want to share one of my all time favorite memes 😂
Two-panel cartoon illustration comparing how UI designers and users perceive a baby mobile. The left panel, labelled "UI" in bold black text at the top, shows two smiling cartoon adults — a dark-haired person in yellow and a brown-haired person in blue — leaning happily over a cot railing. A speech bubble reads "I love it!" and another near the cot reads "Me too!" Small cute animal toys — a blue bear, pink pig, and orange cat — hang from the mobile above a contented baby lying face-up in light blue clothing. Musical notes float in the air. The right panel, labelled "Users" in bold black text, shows the baby's point-of-view perspective of the same mobile from below: a striped orange tiger, a blue elephant, a tan rabbit, and a large pink pig are seen upside-down and distorted, spinning chaotically with motion lines and musical notes scattered around. The watermark "VKCOM/PITERSKIS_PUNK_WALL" appears in small text in the upper right of the right panel.
081
Ilya Kashnitsky @ikashnitsky.phd · 13/04/2026
🎨 {linuxcolors} a small #rstats package with the identity colors of the most popular #Linux distros 🐧 💎 #ggplot2 ready with scale_{color/fill}_linux() functions 🔗: github.com/ikashnitsky/... 📦 DAY 13 -- ecosystems 🌍 #30DayChartChallenge ✨ #FOSS world is a unique human #ecosystem
Illustration-style painting on a white background featuring a central hexagonal frame surrounded by colorful paint splashes and drips, displaying numerous Linux distribution logos arranged across the composition.

At the center of the hexagon, a group of five painted penguins — three adults and two smaller ones — represent the Linux mascot (Tux), rendered in a realistic watercolor style in black, white, and yellow. Below the penguins, bold black text reads **LinuxColors**.

Surrounding the central frame, the following Linux distribution logos are visible, each rendered in a painterly, dripping style:

- **Fedora** — blue circular logo, upper center-left
- **Arch Linux** — cyan/teal upward triangle with "tm" mark, upper center
- **EndeavourOS** — purple and red triangle with text "ENDEAVOUROS", upper center
- **openSUSE** — green chameleon logo with text "openSUSE", upper right
- **Void Linux** — dark green circular logo with text "VOID", center-left
- **Pop!\_OS** — yellow circular logo with "P!" symbol, lower center-left
- **Linux Mint** — green "lm" stylized logo, lower center
- **Ubuntu** — orange circular logo with three dots, lower right
- **Kali Linux** — grey dragon/kite shape, left side
- **Zorin OS** — blue circular "Z" logo, lower left
- **Artix Linux** — blue circular "A" logo, bottom left
- **Nix / NixOS** — blue snowflake-style logo, upper left

Additional unidentified logos appear in dark navy (an "X" triangle, lower center) and teal/green shapes on the right side. Paint splatters in red, yellow, blue, green, and purple are scattered throughout.
0154
Reposted by Ilya Kashnitsky
Silvio C. Patricio @scpatricio.bsky.social · 11/04/2026
One of my favorite PhD thesis chapters is now published in @pnas.org Using cohort mortality data from 12 countries, I find no evidence that the rate of aging has slowed down. Longevity gains seem more consistent with a later onset of aging. www.pnas.org/doi/10.1073/...
pnas.org
The rhythm of aging: Stability and drift in the individual rate of senescence | PNAS
Human aging is marked by a steady rise in the risk of dying with age–a process demographers call senescence. Over the past century, life expectancy...
0163
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 07/04/2026
DAY 7 -- multiscale #30DayChartChallenge ⚖ Demographic Transition around the world 🌐 👩‍🎓 read more about Demographic Transition on @ourworldindata.org: ourworldindata.org/demographic-... 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ pplx chat: www.perplexity.ai/search/day-7...
Bivariate choropleth world map titled "Humanity in transition, Demographic Transition," subtitled "Life expectancy (y) × Total fertility rate (x), 2023." Countries are colored using a 3×3 biscale grid encoding two variables simultaneously: life expectancy at birth (y-axis) and total fertility rate (x-axis).

Key regional patterns: sub-Saharan Africa is deep orange (low life expectancy, high fertility, 26.1% of countries); North America, Europe, and Australia are deep purple (high life expectancy, low fertility, 21.4%); central categories of mid life expectancy and mid fertility account for 15.0%. The Middle East and North Africa show mixed orange-brown tones; Russia and Central Asia display medium purple.

Footer reads: "Data: World Population Prospects via {wpp2024} · #30DayChartChallenge 2026 · Day 7 · Multiscale · Ilya Kashnitsky @ikashnitsky.phd." [help.siteimprove](https://help.siteimprove.com/support/solutions/articles/80000863904-accessibility-image-alt-text-best-practices)
162
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 10/04/2026
DAY 10 -- pop culture 📸 #30DayChartChallenge I'm revisiting #TidyTuesday dataset from 2021 The Billboard Hot 100 to explore how old were the shooting stars of the musical industry at their first peak 🌋 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ pplx chat: www.perplexity.ai/search/day-1...
Horizontal ridgeline (density) chart combining dot strip plots showing the age at first Billboard Hot 100 #1 hit, by music genre, spanning 1958 to 2021. Five genres are displayed as stacked rows: Country, Hip-Hop, Rock, Pop, and R&B.

Each genre has a filled density curve above a horizontal dot strip, where each dot represents one artist. A central filled circle marks the median age for each genre. A horizontal line extends through each density plot indicating the interquartile range.

**Country** (salmon/terracotta): Density skews right, with a wide spread from roughly age 22 to 45. Median sits near 37. Notable labeled artists: Carrie Underwood (approx. age 22) and Kenny Rogers (approx. age 43).

**Hip-Hop** (golden yellow): Density peaks sharply around ages 22–26, with a right tail to ~32. Median near 26. Labeled artists: Lil Nas X (approx. age 20) and Drake (approx. age 27).

**Rock** (light green): Broad, flat distribution from ~25 to beyond 50, with a long right tail. Median near 28. Labeled artists: The Monkees (approx. age 22) and Santana (approx. age 52).

**Pop** (sky blue): Concentrated bell shape peaking around ages 20–28. Median near 25. Labeled artists: Michael Jackson (approx. age 17) and Lionel Richie (approx. age 33).

**R&B** (muted purple-grey): Moderate spread from roughly 17 to 37. Median near 26. Labeled artists: Chris Brown (approx. age 17) and Earth, Wind & Fire (approx. age 32).

The x-axis runs from age 10 to 50. Text at bottom right reads: "Data: Billboard Hot 100 via TidyTuesday 2021 · Birth years: Wikipedia / For groups, lead/founding member's birth year used / #30DayChartChallenge 2026 · Day 10 · Pop Culture · Ilya Kashnitsky @ikashnitsky.phd".
282
Ilya Kashnitsky @ikashnitsky.phd · 08/04/2026
This is becoming utterly ridiculous. A journal clearly outside the scope of my research interests and expertise is inviting me to review a paper within 7 days, for free despite them being gold open access and charging 2.7k eur APC. I've stopped even replying to such calls 🙃 #AcademicPublishing
Screenshot of a Gmail inbox on a dark-themed mobile device. The email subject line at the top reads "Invitation to review a manuscript for BMC Medical Education from Dr" followed by a partially redacted sender name with a green "Inbox" label. Below, an open email from "BMC Medi..." sent at 11:59 is addressed "to me." The email body reads: "Invitation to review 'What drives them home? Influencing factors of return migration to western China among clinical medicine master's graduates'." A second paragraph states: "Should you accept to review this manuscript, your report would be due within 7 days." The number "7" is circled and underlined in green handwriting with the word "(seven)" written next to it in green. The email closes with "Dear Dr Kashnitsky,". The overall mood conveys surprise or disbelief at the short 7-day review deadline.
070
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 08/04/2026
DAY 8 -- circular #30DayChartChallenge 💫 Coders never sleep. FOSS developers push 2 out of 5 github commits at hours that are out of "normal" working schedule ☕ 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ pplx chat: www.perplexity.ai/search/day-8...
Circular donut/radial bar chart titled "FOSS — Free of Sleep Surrender" displaying the percent of commits per hour across 8 major GitHub repositories, arranged as a 24-hour clock face on a light cyan background.

The chart uses three color-coded segments radiating outward from the center: golden yellow for working hours (9–17h), orange for twilight hours (6–8h and 18–20h), and deep purple for after hours (0–5h and 21–23h). The center of the donut displays bold text reading "39.6% commits outside working hours." Hour markers are labeled around the outer ring at 0 h midnight, 3 h, 6 h, 9 h, 12 h noon, 15 h, 18 h, and 21 h. The largest bars appear in the yellow working-hours arc from roughly 9 h to 17 h, peaking around 10–15 h. Purple after-hours bars cluster near the top of the clock (0–5 h and 21–23 h) and are notably smaller. Orange twilight bars bridge the transitions. Below the chart, a legend identifies the three color categories. Footer text reads: "Data: GitHub punch_card API — microsoft/vscode · torvalds/linux · facebook/react · vercel/next.js · tensorflow/tensorflow · rust-lang/rust · golang/go · kubernetes/kubernetes · #30DayChartChallenge 2026 · Day 8 · Circular · Ilya Kashnitsky @ikashnitsky.phd."
274
Ilya Kashnitsky @ikashnitsky.phd · 08/04/2026
I want to break something. Imagine designing maps for kids (!) and decorating the interior (!!) and having no idea about projections 🙃 #rant
000
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 06/04/2026
DAY 6 -- Reporters Without Borders #30DayChartChallenge 🗽 Press Freedom is in a steady decline across the world 🤐 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ pplx chat: www.perplexity.ai/search/day-5...
Data visualization — a horizontal box plot chart titled **"Press Freedom is declining globally"** — showing RSF World Press Freedom Index scores for 180+ countries across 13 years (2013–2025), created by Ilya Kashnitsky (@ikashnitsky.phd) for the #30DayChartChallenge 2026, Day 06.

Each row represents one year on the vertical axis (labeled 2013 through 2025, reading top to bottom). The horizontal axis shows Press Freedom Score, ranging from approximately 0 on the left to just above 90 on the right, with gridlines at 25, 50, and 75. Individual country data points are rendered as small filled circles overlaid on white box-and-whisker outlines. Each circle is colored by world region: orange for Africa, green for Americas, red/pink for Asia, light blue for Europe, and purple for Oceania.

The box plots' interquartile ranges sit predominantly between scores of roughly 45 and 75, with long left-side whiskers reaching toward scores below 10, representing countries with severely restricted press freedom. The dense cluster of dots is heaviest between scores of 50 and 80. From 2013 to 2025, the entire distribution visibly shifts leftward — the boxes and median lines migrate from around 65–70 in 2013 toward approximately 55–60 by 2025 — illustrating a global decline in press freedom.

The box fill color transitions from teal-green (higher global average ~65) in 2013–2014 to orange-brown (lower global average ~55) by 2024–2025, encoded by a "Global average score" gradient color bar at the bottom, ranging from orange at 55.0 through yellow-green at 62.5 to teal at 65.0. European countries (light blue dots) consistently appear at the high-scoring right end, while Asian and African countries (red and orange dots) cluster toward the lower-scoring left end throughout all years. Data source credited as RSF World Press Freedom Index via Kaggle (vladyslavhubanov).
1133
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 05/04/2026
DAY 5 -- experimental #30DayChartChallenge 🧪 🤯 mind-blowing! I always wanted to explore d3 but never got there. Now I simply uploaded yesterday's #rstats script -- and Sonnet just did it 🤩 🔗FULLY INTERACTIVE VERSION: ikashnitsky.phd/x/d3/05-expe... 🧙‍♂️ pplx chat: www.perplexity.ai/search/day-5...
Screenshot of an interactive slope chart titled "Life expectancy increased in every country," created for Day 5 of the #30DayChartChallenge 2026. The chart spans from 1960 to 2020, covering 232 countries with lines colored by world region.

The background is pale mint green. A dense bundle of light blue diagonal lines rises from left to right, representing life expectancy trajectories for all 232 countries from 1960 to 2020. The y-axis is labeled in increments of 10 years: 40 yr, 50 yr, 60 yr, 70 yr, 80 yr. The x-axis shows two vertical reference lines at "1960" on the left and "2020" on the right, with a right-pointing arrow between them.

A single bright green line is highlighted, sharply ascending from approximately 53.76 years in 1960 to 83.68 years in 2020, labeled "south korea" in green text at both endpoints. A tooltip popup displays: "South Korea — Asia — 1960: 53.76 yr — 2020: 83.68 yr — Gain: +29.92 yr."

At the top, filter buttons read: All (black), Africa (red outline), Americas (blue outline), Asia (green outline), Europe (purple outline), Oceania (orange outline), and "↑ Top 20 gainers" (dark filled). A search field labeled "Search country…" appears in the upper right.
142
Ilya Kashnitsky @ikashnitsky.phd · 05/04/2026
😍 nanobanana gifts some magical moments — my girls were absolutely elated 🐰🥚 🙏 tnx @allisonhorst.bsky.social for the charming visual style of your drawings 🤩
colored version

Watercolour-style illustrated map on a white background, depicting the same yard layout as the previous sketch, now rendered in soft colour washes.

The title **"EGG HUNT"** appears at the top in large bold letters, each letter in a different bright colour — red, orange, yellow, green, blue, and purple. Two decorated Easter eggs sit to the left of the title: one green with wavy stripes, one blue with a zigzag pattern. A pink flower doodle appears in the top-right corner of the title area.

Building footprints are filled with a warm sandy beige-brown wash and arranged in the same block layout as the original sketch. Green watercolour washes represent grass and open yard areas between and around the buildings. Pink-purple flower doodles are scattered across the map — top-left corner, top centre, and lower centre.

Six **"X"** marks in dark ink are distributed across the green yard areas, indicating egg hiding spots. A small **heart symbol** (♥) in pink marks a covered structure rendered in blue-grey stripes at the centre of the map.

A large rounded shape filled with muted blue-grey represents the **parking area**, labelled with the letter **"P"** in dark ink. To the right, a curved road or path is coloured in warm golden-yellow, with small beige building shapes alongside it.

The bottom-right area features soft blue watercolour washes with wavy lines suggesting a body of water — likely a river or harbour. In the bottom-left corner, a small illustrated **brown rabbit** sits beside a decorated Easter egg, surrounded by pink flower doodles.

The overall palette is soft and pastel. The mood is cheerful and festive.

Map of a yard in Odense plan of a yard in Odense

Hand-drawn illustration on white dot-grid paper, drawn entirely in blue ballpoint pen, depicting a bird's-eye-view map of a yard or neighbourhood block layout.

The title "EGG HUNT" appears in large printed letters at the top centre-right, accompanied by two hand-drawn Easter eggs to its left — one plain oval and one with diagonal cross-hatching. Decorative flower doodles appear in several spots: top-left corner, top centre, and top-right corner, as well as near the bottom centre.

The map shows a cluster of rectangular building footprints arranged along what appears to be a street or pathway running vertically on the left side. Buildings are stacked in a column on the left, with open yard or courtyard space to their right. A parking area is indicated by a large rounded rectangle marked with the letter **"P"** in the lower-centre portion of the map.

Six **"X"** marks are scattered across the map, indicating hidden egg locations throughout the yard and between buildings. A small **heart symbol** (♥) appears near a structure in the middle section, likely marking a special spot.

On the right side, a curved road or path runs along the edge, with small square structures beside it. The bottom-right area features wavy horizontal lines suggesting water — possibly a stream, pond, or the shoreline of a harbour. A cheerful cartoon **Easter bunny** is drawn in the bottom-left corner, facing forward with long ears and a smiling face, surrounded by small flower doodles.

The overall mood is playful and festive, designed as a fun Easter egg hunt activity map for a specific outdoor location.
140
Ilya Kashnitsky @ikashnitsky.phd · 05/04/2026
🤩 INERACTIVE d3 🤩 #30DayChartChallenge An interactive version of the slope plot showing the increase in life expectancy across all counties of the world 🚠 #demography 🔗 ikashnitsky.phd/x/d3/05-expe...
0133
Ilya Kashnitsky @ikashnitsky.phd · 04/04/2026
My typos keep amusing me — I was to say here "in 2026, coding is NOT the same". And now this post is pinned for the whole month of the challenge 😅 #30DayChartChallenge
020
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 03/04/2026
DAY 3 -- mosaic #30DayChartChallenge I'm visualizing the diversity of African linguistic families 🌍 This was a #TidyTuesday dataset in week 3 of 2026. 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ pplx: www.perplexity.ai/search/day-3...
Marimekko (mosaic) chart titled "Africa's Linguistic Mosaic" with subtitle "Share of language family by region." The chart displays five horizontal rows representing African regions: North, West, Central, East, and Southern. Each row is subdivided into colored rectangular segments whose widths represent the proportional share of language-family-to-country pairs within that region.

The color-coded language families, shown in a legend at the bottom, are: Ubangian (dark purple), Other families (medium purple), Nilo-Saharan (steel blue), Niger-Congo (teal/dark cyan), Kx'a (bright teal), Khoe-Kwadi (light green), Indo-European (yellow-green), and Afroasiatic (golden yellow).

Row heights vary: West is the tallest, suggesting the largest share of language-country pairs; North is the shortest. Key patterns visible across rows: Niger-Congo (teal) dominates West, Central, and Southern Africa, occupying the largest segment in each. In the North row, Afroasiatic (yellow), Niger-Congo, and Nilo-Saharan (blue) share roughly equal thirds. East Africa shows a four-way split among Afroasiatic, Niger-Congo, Nilo-Saharan, and Other families. The Southern row features small segments for Afroasiatic, Indo-European, Khoe-Kwadi, and Kx'a on the left before a large Niger-Congo block. Nilo-Saharan appears as a notable segment in North, West, Central, and East rows.

A source note at bottom right reads: "Data: Languages of Africa · TidyTuesday 2026-01-13. Row width represents the share of language-country pairs. #30DayChartChallenge 2026 · Ilya Kashnitsky @ikashnitsky.phd."
1122
Reposted by Ilya Kashnitsky
Surbhi Bhatia @surbhaai.bsky.social · 03/04/2026
#Day3: Mosaic Homegrown or imported? Where do electric cars sold in select emerging markets come from? data: @iea.org #30DayChartChallenge #dataviz
A marimekko chart of electric cars sold in selected nations: Brazil, Türkiye, India, Thailand, Viet Nam, Indonesia, Malaysia, Mexico, Uzbekistan, Colombia, Costa Rica, South Africa, by source of manufacturing: Made in china vs imported from other nations vs locally produced. Chart shows Vietnam and India are quite self-reliant for electric cars, while other nations are heavily dependent on imports from China. Made for #30DayChartChallenge2026 day 3 prompt: Mosaic.
1134
Reposted by Ilya Kashnitsky
Ilya Kashnitsky @ikashnitsky.phd · 02/04/2026
DAY 1 -- part-to-whole #30DayChartChallenge To jumpstart the use of Claude Sonnet 4.6, I chose to grab one of the most known datasets -- Titanic survival by sex and passenger class 🔗 #rstats code: github.com/ikashnitsky/... 🧙‍♂️ ai chat: www.perplexity.ai/search/day-1...
Treemap chart titled "Women & 1st class first — how the Titanic's lifeboats were filled," created by Ilya Kashnitsky for #30DayChartChallenge 2026, Day 1. Data covers 2,201 Titanic passengers and crew from the built-in R {datasets} Titanic dataset. Tile area is proportional to passenger count; tile color encodes survival rate on a continuous scale from dark navy-purple (low, ~25%) to mint green (high, ~75%+).

The chart is split into two labeled sections: "Male" (large, left and bottom-center) and "Female" (smaller, right column). Males vastly outnumbered females aboard, reflected in tile sizes.

Male tiles are uniformly dark, indicating low survival: 3rd class (n=510, 17%), 2nd class (n=179, 14%), 1st class (n=180, 34%), and crew (n=862, 22%). The crew tile is the largest single tile in the chart.

Female tiles fill the right column in lighter mint-green tones, reflecting far higher survival: crew (n=23, 87%), 2nd class (n=106, 88%), 1st class (n=145, 97%), and 3rd class (n=196, 46%). Female 1st class at 97% is the highest-survival group; even female 3rd class (46%) outpaced every male group.

A horizontal color legend at the bottom runs from dark navy (~25%) through medium blue (~50%) to bright mint green (~75%+). The chart visually reinforces the "women and children first" lifeboat protocol and clear class-based survival disparities.
172