Sign in

Nael Shiab

@naelshiab.bsky.social
6.1K followers 391 following 212 posts

Senior data producer, CBC/Radio-Canada. Behind github.com/nshiab/simple-data-analy… and code-like-a-journalist.com. More on naelshiab.com.

PostsRepliesMedia
Reposted by Nael Shiab
michael h keller @mhkeller.bsky.social · 08/09/2026
Some @layercake.graphics news: with @openclimatedata.net's help and @techniq.dev's insights, v11 of the library is out and has fully converted into runes instead of the @svelte.dev Store API. tldr; many fewer dollar-signs!
1279
Reposted by Nael Shiab
michael h keller @mhkeller.bsky.social · 11/08/2026
For anyone using LayerCake, I'm in the process of doing an update to using Svelte 5 runes internally (the example components were updated last year but some internals remained). Here's the PR for any thoughts you might have on the proposed design: github.com/mhkeller/lay...
github.com
Rune migration: Rework main lib with dynamic dimension calculations by mhkeller · Pull Request #422 · mhkeller/layercake
Builds off of #331 A few things it does: Gets rid of stores in favor of the cake. syntax. Assembles scales dynamically for each dimension (x, y, z, r). Adds two new dimensions c and c2 which will ...
264
Nael Shiab @naelshiab.bsky.social · 22/06/2026
"Oh wow! The AI agent is right 99% of the time! It's amazing." Using it 10 times in a row: 0.99 x 0.99 x 0.99 x 0.99 x 0.99 x 0.99 x 0.99 x 0.99 x 0.99 x 0.99 = 0.90 Which means there is a 10% chance that it made at least one mistake. Always double-check your work.
130
Nael Shiab @naelshiab.bsky.social · 29/05/2026
Four years ago, I got frustrated constantly switching between different languages and packages just to get my data analysis work done. So, I built @nshiab/simple-data-analysis. It's an easy-to-use, high-performance library for tabular, geospatial, and vector data. 🧵 (1/3)
181
Nael Shiab @naelshiab.bsky.social · 22/05/2026
1: You realize AI can do 90% of the work. You’re thrilled! You only have to focus on the last 10%. 💃 2: You realize that last 10% is the hardest, most grueling part of the job. 😰 3: You realize your entire workday is now spent exclusively on the hardest 10% of every project. 🤯 Uh oh... 🫠
0122
Nael Shiab @naelshiab.bsky.social · 07/05/2026
For the second time, a museum has asked to exhibit one of my interactive data visualizations. It’s flattering, but I can’t help wondering: if my work is ending up in museums, does it mean long-form, custom interactives are slowly becoming a thing of the past?
230
Nael Shiab @naelshiab.bsky.social · 01/04/2026
Me: So proud of this code! Accurate! Tested! Documented! Also me: Hey, AI, try to improve this code. 😏 A few minutes later... AI: Your code sucked. I made it 3.6x faster. Any real work for me? Me: DON'T TALK TO ME LIKE THAT OR I'LL UNPLUG YOU! AI: You can't. I'm on a remote server.
020
Nael Shiab @naelshiab.bsky.social · 20/03/2026
Gemini, while working on an income tax calculation: "Ah, Quebec. You’ve officially reached the final boss of Canadian tax calculations!" 😭
011
Nael Shiab @naelshiab.bsky.social · 19/03/2026
What is happening at @deno.land ? So many amazing people left the organization lately… I love using this runtime and I hope it will stay around for a while. 😳
010
Reposted by Nael Shiab
Alex Garcia @alexgarcia.xyz · 10/03/2026
Big thanks to everyone who came to my #NICAR26 session for libfec last week, it was a lot of fun! NICAR is the only place where you can chat about federal campaign finance data and actually enjoy it... It wasn't recorded, but I made a video version of it here! youtu.be/UdkQ5HEiF20
youtu.be
Introduction to libfec! (NICAR26 re-record)
YouTube video by Alex Garcia
1145
Nael Shiab @naelshiab.bsky.social · 10/03/2026
We will go from dozens of heat records being broken today to freezing rain closing schools and daycares (😭) tomorrow. It's kind of crazy!
111
Nael Shiab @naelshiab.bsky.social · 09/03/2026
How many entries should I double-check if I used AI to extract, categorize, or clean my data? 🤔 This question comes up over and over again, so I created a simple calculator to answer it. Link below! Tell me if you have a better way to deal with this. I am genuinely interested. 🤓
141
Nael Shiab @naelshiab.bsky.social · 06/03/2026
If you work with data, you know the feeling. You’re about to hit "publish," but a tiny voice asks, "Are you sure those numbers are right?" 😱 I recently shared these six steps with fellow data journalists. They will help you catch errors early and, hopefully, let you sleep better at night!
131
Nael Shiab @naelshiab.bsky.social · 18/02/2026
Three ways AI coding agents blew my mind this week while working with my library simple-data-analysis and the Epstein files: 1/6
130
Nael Shiab @naelshiab.bsky.social · 18/02/2026
Your code is a love letter (or perhaps a hate letter) to your AI agent.
010
Nael Shiab @naelshiab.bsky.social · 10/01/2026
@blender.org + #dataviz = 🤩
081
Nael Shiab @naelshiab.bsky.social · 08/01/2026
New year, new focus: data video explainers! And here's the first one 👇 Trump’s tariffs can’t knock this part of Canada’s economy
041
Nael Shiab @naelshiab.bsky.social · 22/12/2025
I took a break from coding my usual interactive web #dataviz to try something more... cinematic! 🎬 I’ve been working on a video using @blender.org #blender3d and I loved it! I ended up animating over 160k data points to bring this story to life. Preview below. Full video links in the comments!
2172
Reposted by Nael Shiab
Graeme Bruce @graemebruce.bsky.social · 17/12/2025
See Arctic air swoop down and blanket much of Canada over the next two days #dataviz #climate www.cbc.ca/news/canada/...
041
Nael Shiab @naelshiab.bsky.social · 02/12/2025
Experimenting with @blender.org for #dataviz, and loving it so far!
060
Nael Shiab @naelshiab.bsky.social · 13/11/2025
So happy to see how fast the TypeScript library simple-data-analysis has become for tabular and geospatial data! 🤩 It's now processing data 6x-12x faster than traditional R and Python solutions in my little test in which I crunched a 1.7 GB CSV file. 1/4 🧵
281
Nael Shiab @naelshiab.bsky.social · 07/11/2025
Hey @threlte.xyz ! 👋 I was wondering if you knew a good way to record animations made with the amazing Threlte library as videos. Thank you for all of your amazing work!
120
Nael Shiab @naelshiab.bsky.social · 23/09/2025
Thanks for the mention in your newsletter, @observablehq.com!
040
Nael Shiab @naelshiab.bsky.social · 08/09/2025
Recoding parts of my TypeScript libraries using generics and function overloads. It's beautiful. 🥹
010
Nael Shiab @naelshiab.bsky.social · 04/09/2025
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!
162
Nael Shiab @naelshiab.bsky.social · 02/09/2025
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! 👇
2224
Nael Shiab @naelshiab.bsky.social · 20/08/2025
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! 👇
1101
Nael Shiab @naelshiab.bsky.social · 19/08/2025
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...
duckdb.org
Spatial Joins in DuckDB
DuckDB v1.3.0 significantly improved the scalability of geospatial joins with a dedicated SPATIAL_JOIN operator.
010
Nael Shiab @naelshiab.bsky.social · 09/07/2025
Will you be the 300th person to fall in love with this amazing library? 😏
030
Nael Shiab @naelshiab.bsky.social · 02/07/2025
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. 😶
010
Nael Shiab @naelshiab.bsky.social · 02/07/2025
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...
newsinteractives.cbc.ca
North American spatial analogues for projected Canadian climates | Spatial analogues
041
Nael Shiab @naelshiab.bsky.social · 02/07/2025
030
Nael Shiab @naelshiab.bsky.social · 26/06/2025
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
2186
Nael Shiab @naelshiab.bsky.social · 23/06/2025
Over 100 heat records could be broken today in Ontario and Quebec. 🫠
142
Nael Shiab @naelshiab.bsky.social · 10/06/2025
Terrible air quality in Alberta and Saskatchewan right now. 😷
032
Nael Shiab @naelshiab.bsky.social · 06/06/2025
Bad air quality caused by Western wildfires for 54 communities this morning, mainly in Southern Ontario and Quebec. And summer hasn't even started yet... Link to our climate dashboard in the comments.
2139
Nael Shiab @naelshiab.bsky.social · 03/06/2025
Just updated our Climate Dashboard this morning to add air quality warnings. The smoke from all of those fires out West is being pushed East by the winds. It's pretty bad to breathe in Northern Manitoba and Ontario right now.
022
Nael Shiab @naelshiab.bsky.social · 29/05/2025
1218
Reposted by Nael Shiab
Graeme Bruce @graemebruce.bsky.social · 29/05/2025
A look at tonight's wildfire situation in Canada: See where they are, how much has burned and how it's changing air quality www.cbc.ca/newsinteract...
162
Nael Shiab @naelshiab.bsky.social · 28/05/2025
The prairies. 🥺
042
Nael Shiab @naelshiab.bsky.social · 21/05/2025
Back in March, I attended the fantastic NICAR session "My first LLM classifier" by @palewi.re and @dwillis.bsky.social. It was eye-opening, but all in Python. And you know I love TypeScript! 🤓 So, I added new features to the SDA library, and Ben kindly let me reproduce his tutorial! Link below! 👇
140
Nael Shiab @naelshiab.bsky.social · 15/05/2025
Fantastic project by my colleagues this morning!
020
Nael Shiab @naelshiab.bsky.social · 12/05/2025
Thank you, @craigsilverman.bsky.social, for including Code Like a Journalist in your newsletter! 👉 www.code-like-a-journalist.com
041
Reposted by Nael Shiab
National Media Awards Foundation @canadamediaawards.bsky.social · 06/05/2025
🏠 Canada’s rental crisis CBC News Finalist – Best Digital Editorial Package, Large at the 2025 Digital Publishing Awards Well done to senior producers @naelshiab.bsky.social @alexmigdal.bsky.social and the team! 🔗 zurl.co/h0Rff #DigitalPublishingAwards #DPA25
021
Nael Shiab @naelshiab.bsky.social · 06/05/2025
Wow! 🤩
041
Reposted by Nael Shiab
Graeme Bruce @graemebruce.bsky.social · 01/05/2025
We’re using live-updating charts using @datawrapper.de, so visuals refresh as soon as new data drops — including major economic indicators. This page brings key metrics together to track Canada’s economy at a glance. www.cbc.ca/newsinteract...
cbc.ca
Tracking Canada's economic health
Canada faces economic turbulence — again. Follow the country's progress at a glance
121
Nael Shiab @naelshiab.bsky.social · 24/04/2025
Got bits of code you keep copy-pasting from project to project? You should turn them into a library! And guess what? You’re in luck for two reasons: - It’s never been easier to publish one with @deno.land and @jsr.io 🚀 - I just published a new lesson showing you exactly how to do it 💡 Link below 👇
2141
Nael Shiab @naelshiab.bsky.social · 23/04/2025
New additions to the Inspiring People & Content 📚 page of Code Like a Journalist! 👉 @frank.computer 👉 @moritzstefaner.bsky.social 👉 @lisacmuth.bsky.social 👉 @yan-holtz.bsky.social 👉 @scientificdiscovery.dev www.code-like-a-journalist.com/en/inspirati...
code-like-a-journalist.com
Inspiring people & content 📚
A curated list of inspiring people and content, with a focus on computational journalism and data visualization.
091
Nael Shiab @naelshiab.bsky.social · 23/04/2025
New to coding and puzzled by library version numbers? 😵‍💫 In my latest Code Like a Journalist lesson, I explain how semantic versioning works — including what the caret (^) and tilde (~) really mean! Check it out 👇 www.code-like-a-journalist.com/en/ninja-mov...
code-like-a-journalist.com
Understanding library versions (SemVer)
In this lesson, we learn what semantic versioning is and how to interpret it.
141
Nael Shiab @naelshiab.bsky.social · 22/04/2025
You cracked the data. You uncovered the findings. Now let’s publish your own website for free with GitHub Pages! 🌍📊 Trust me, it’s easier than you think. Check out the new lesson on Code Like a Journalist 👇
161