-
Jun 21st, 2024 • Thomas Wilburn
State of the Art
Scrollytelling powered by custom observables
-
Dec 19th, 2023 •
Data Crimes of 2023
Here are the worst things we did to process education data this year.
-
Oct 23rd, 2023 • Thomas Wilburn
Scraping Sans Selenium
Originally presented at SRCCON 2023
-
Sep 26th, 2023 • Kae Petrin
Showing what's not there
How to responsibly visualize flawed data — and when to not
-
Aug 14th, 2023 • Nadia Bey
Building an interactive graphic for teacher salaries
And why Chalkbeat maintains a code-first visualization toolkit
-
Jun 26th, 2023 • Thomas Wilburn
Slouching toward Pandas
Using LET and LAMBDA to raise the spreadsheet skill ceiling
-
Oct 28th, 2022 • Thomas Wilburn
Scraping ASP-based dashboards at the protocol level
How to replace Selenium and browser automation with HTTP exchanges
-
Aug 18th, 2022 • Thomas Wilburn
Updates to the Dailygraphics Rig
Adding support for Google Docs, CSV files, and a new JavaScript bundler
-
Aug 12th, 2022 • Kaitlyn Radde
Utilization, iteration, and visualization
How we collaborate with Chalkbeat bureaus to create more effective, reader-focused graphics
-
May 23rd, 2022 • Kae Petrin
How we turned an elementary school curriculum challenge into a dataset
An editorial approach to creating data visuals from text-based reports
-
Mar 14th, 2022 • Thomas Wilburn
Expressive rendering and UI in Tarot
Building the domain-specific language for Chalkbeat's social media card generator
-
Feb 18th, 2022 • Kae Petrin
How we collaborated across teams to create a COVID-19 protocol flowchart
Applying ArchieML to the dailygraphics rig for mobile-friendly, accessible interactives
-
Feb 7th, 2022 • Thomas Wilburn
She has the range
Superior spreadsheet lookups with arrays, named ranges, and filters
-
Jan 28th, 2022 • Kae Petrin
Out, damned spot
How to use ImageMagick to reduce OCR errors from redaction