Nael Shiab
@naelshiab.bsky.social
5.9K followers 370 following 170 posts
Senior data producer, CBC/Radio-Canada. Behind https://github.com/nshiab/simple-data-analysis and https://code-like-a-journalist.com/. More on https://naelshiab.com/.
Posts Media Videos Starter Packs
Pinned
naelshiab.bsky.social
Exciting news! 🎉 I’m pressing pause on my work at CBC News for the next three months to focus on a passion project: www.code-like-a-journalist.com.

It’s a free, open-source online course designed to teach data analysis and visualization using TypeScript. 🚀

Stay tuned!
Code Like a Journalist
A free online data analysis and data visualization course using TypeScript by computational journalist Nael Shiab.
www.code-like-a-journalist.com
naelshiab.bsky.social
Thanks for the mention in your newsletter, @observablehq.com!
naelshiab.bsky.social
Happy to see @nodejs.org! But it would be wonderful to add @deno.land as well! 🦆
naelshiab.bsky.social
Recoding parts of my TypeScript libraries using generics and function overloads. It's beautiful. 🥹
naelshiab.bsky.social
We have just updated our international trade tracker with the latest numbers from July. See all imports and exports broken down by country, province, and product!

Link below!
naelshiab.bsky.social
My most popular interactive @observablehq.com notebook, Math for Journalists, just got a fresh update! 🧑‍🎓

👉 Sample size and confidence: I explain how sample sizes work, like in a survey.
👉 Tests for statistical significance: I break down what "statistically significant" means.

Link in comments! 👇
naelshiab.bsky.social
What an amazing dataset!
naelshiab.bsky.social
New project is live! We're now tracking all products coming in and out of Canada 🇨🇦. See how international trade is rapidly shifting, with breakdowns by country, province, and product 🚗🥦🛢️.

Link in the comments! 👇
naelshiab.bsky.social
Amazing work by @maxxen.bsky.social and the @duckdb.org team. I've been using the spatial extension for a while now for my geospatial analyses, and it's wonderful to see it getting better and faster.

duckdb.org/2025/08/08/s...
Spatial Joins in DuckDB
DuckDB v1.3.0 significantly improved the scalability of geospatial joins with a dedicated SPATIAL_JOIN operator.
duckdb.org
naelshiab.bsky.social
Will you be the 300th person to fall in love with this amazing library? 😏
naelshiab.bsky.social
I asked Gemini-CLI to fix mistakes and add examples to the documentation of the open-source library journalism. It updated 58 files and did a pretty good job in half an hour. I used the free tier, but the @simonwillison.net LLM pricing calculator estimated the cost at $6 USD! Very impressed. 😶
naelshiab.bsky.social
Last week, we published our interactive project on climate matches. I published my detailed methodology on how we wrangled the data. Here's the link, with a shout-out to @freakonometrics.bsky.social who helped me with the statistical approach! 🧑‍🏫

👇
newsinteractives.cbc.ca/features/202...
naelshiab.bsky.social
Coded in Svelte! Maps done with Observable plot!
naelshiab.bsky.social
New project! I've always felt climate projections were a bit too abstract. To make them more concrete, I identified North American cities that already experience the projected temperature and precipitation of Canadian cities. And the result is... 😳

Link in the comments! 👇

#dataviz #climate
naelshiab.bsky.social
Over 100 heat records could be broken today in Ontario and Quebec. 🫠
naelshiab.bsky.social
So nice of you! Feel free to ping me if you are stuck on anything! :)
naelshiab.bsky.social
Thank you @datawrapper.de for mentioning our Climate Dashboard! 🤩
naelshiab.bsky.social
Terrible air quality in Alberta and Saskatchewan right now. 😷
naelshiab.bsky.social
No, just a problem with it right now. Working on a fix. 😢