1 of 86

Which coding language

to use and why?

NICAR 2025

bit.ly/nicar25-which-language

2 of 86

Introduction

Nael Shiab, senior data producer, CBC News

Tazbia Fatima, Hearst Newspapers DevHub

Kai Teoh, The Dallas Morning News

Carla Astudillo, Texas Tribune

​

3 of 86

The questions

  • What was the first programming language you learned?

​

  • What challenges did you face?

​

  • Which programming languages does your newsroom primarily use?

​

  • Which programming language do you use most often in your projects, and why?

​

  • What are some great resources for learning how to code?

4 of 86

Tazbia

  • What was the first programming language you learned?

​

  • What challenges did you face?

​

  • Which programming languages does your newsroom primarily use?

​

  • Which programming language do you use most often in your projects, and why?

​

  • What are some great resources for learning how to code?

5 of 86

First programming language I learnt

Tazbia Fatima, Hearst Newspapers DevHub

First programming language that made me love coding

// Definition of a class named 'Dog'

class Dog {

// Instance variables (attributes)

String name;

String breed;

int age;

​

// Constructor to initialize instance variables

public Dog(String name, String breed, int age) {

this.name = name;

this.breed = breed;

this.age = age;

}

​

​

// Method to display dog information

public void displayInfo() {

System.out.println("Name: " + name);

System.out.println("Breed: " + breed);

System.out.println("Age: " + age);

}

​

// Main method (entry point of the program)

public static void main(String[] args) {

6 of 86

Challenges

Tazbia Fatima, Hearst Newspapers DevHub

  • Port over your project to fit the newsroom template that is in another language language
  • Do it all!

​

​

7 of 86

Programming languages my newsroom primarily uses

Tazbia Fatima, Hearst Newspapers DevHub

Backend / Server-side Programming

Frontend / Web Dev

<div class="alert">

<span class="closebtn" onclick="this.parentElement.style.display='none';">&times;</span>

This is an alert box.

</div>

​

/* The alert message box */

.alert {

padding: 20px;

background-color: #f44336; /* Red */

color: white;

margin-bottom: 15px;

}

​

Databases and datasets

8 of 86

​

​

  • Whitespace significance
  • Wealth of libraries and packages
  • Rich Ecosystem for Data Tasks
  • APIs!! Spotipy - a python library for Spotify API

Python has an extensive ecosystem of libraries tailored for data tasks:

  • Data Manipulation: Libraries like Pandas and NumPy simplify data cleaning and analysis.
  • Visualization: Tools such as Matplotlib and Seaborn make it easy to create compelling visual stories.
  • Web Scraping and APIs: Packages like BeautifulSoup and Requests help in collecting data from various sources.
  • Machine Learning: Python’s compatibility with machine learning libraries like TensorFlow and PyTorch

Most often used programming language

Tazbia Fatima, Hearst Newspapers DevHub

9 of 86

Resources for learning how to code

Tazbia Fatima, Hearst Newspapers DevHub

  • Coursera for courses on visualization, data analytics or statistics
  • W3schools for quick code checks

10 of 86

Resources for learning how to code

Tazbia Fatima, Hearst Newspapers DevHub

​

  1. Play around with a simple colab notebook and some off-the-shelf open data
  2. Read methodologies of any data stories and read a lot - make an ‘inspo’ drive
  3. “Vibecode” with Generative AI tools

11 of 86

Resources for learning how to code

Tazbia Fatima, Hearst Newspapers DevHub

Practise using Visualization platforms like

  1. Datawrapper
  2. Observable
  3. Mapbox Studio

12 of 86

Resources for learning how to code

Tazbia Fatima, Hearst Newspapers DevHub

Sign up to Coding Challenges and Platforms

13 of 86

Kai

  • What was the first programming language you learned?

​

  • What challenges did you face?

​

  • Which programming languages does your newsroom primarily use?

​

  • Which programming language do you use most often in your projects, and why?

​

  • What are some great resources for learning how to code?

14 of 86

  • PHP powers most of the web(?)
    • WordPress etc
  • Like HTML, but better (don’t @ me)

What was the first programming language you learned?

15 of 86

  • Coding tutorials
    • Hello world?
    • Twitter clone?
    • Tic tac toe?
  • The lonely newsroom coder
    • Don’t know what you don’t know
  • Everything, everywhere, all at once

What challenges did you face?

16 of 86

  • Slack
    • News Nerdery!
    • Lonely Coders Community!
  • Documentation
  • Stack Overflow
  • Udemy, Codecademy

​

Most importantly: Have a project/goal

What are some great resources for learning how to code?

17 of 86

Which programming languages does your newsroom primarily use?

18 of 86

  • Analysis
    • Python + Pandas
  • Projects
    • LA Times’ Baker framework

Which programming language do you use most often in your projects, and why?

19 of 86

Carla

  • What was the first programming language you learned?

​

  • What challenges did you face?

​

  • Which programming languages does your newsroom primarily use?

​

  • Which programming language do you use most often in your projects, and why?

​

  • What are some great resources for learning how to code?

20 of 86

What's the first programming language you learned?

which coding language to use and why

ACTIONSCRIPT

21 of 86

What's the first programming language you learned?

which coding language to use and why

22 of 86

What's the first programming language you learned?

which coding language to use and why

23 of 86

What's the first programming language you learned?

which coding language to use and why

24 of 86

If you could start over, would you choose the same one?

which coding language to use and why

JAVASCRIPT

25 of 86

Challenges?

which coding language to use and why

  • Is the language well-designed?
  • Does it have a robust number of libraries and frameworks?
  • Does it have good and accessible documentation?
  • How does it handle errors and are the error messages easy to interpret?
  • If it’s a new language, it’s a time commitment. Is the squeeze worth the juice? 🍋

WHICH LANGUAGE TO USE? IT DEPENDS!

26 of 86

Challenges?

which coding language to use and why

  • What are you trying to accomplish?
  • What would be the easiest or best environment to set up in your newsroom?
  • How much community support does the language have if you get stuck?
  • How much time do you have?
  • Is the programming language used in the newsroom? Will there be anyone other than yourself to maintain it?
  • How widely is it used overall? Are there better programming languages that have more of a wide adoption?

WHICH LANGUAGE TO USE? IT DEPENDS!

27 of 86

Challenges?

which coding language to use and why

THINK OF IT AS LEARNING A NEW LANGUAGE

28 of 86

Which programming language does your newsroom use?

which coding language to use and why

JAVASCRIPT FOR FRONT-END

29 of 86

Which programming language does your newsroom use?

which coding language to use and why

TEXAS TRIBUNE DATA GRAPHICS KIT

30 of 86

Which programming language does your newsroom use?

which coding language to use and why

PYTHON FOR BACKEND

31 of 86

Which programming language do you use most often in your projects and why?

which coding language to use and why

FOR VISUALS/FRONT-END

32 of 86

Which programming language do you use most often in your projects and why?

which coding language to use and why

BACKEND

33 of 86

Which programming language do you use most often in your projects and why?

which coding language to use and why

ANALYSIS

34 of 86

What’s a great resource for learning how to code?

which coding language to use and why

RESOURCES

  • Online resources
  • News Nerdery Slack
  • Stack Overflow
  • GitHub

35 of 86

What’s a great resource for learning how to code?

which coding language to use and why

TIPS

  • Find a project to work on and code!
  • Trial and error is okay!
  • Copy and paste a piece of code AND BREAK IT!

36 of 86

Nael

  • What was the first programming language you learned?

​

  • What challenges did you face?

​

  • Which programming languages does your newsroom primarily use?

​

  • Which programming language do you use most often in your projects, and why?

​

  • What are some great resources for learning how to code?

37 of 86

My first programming language

38 of 86

Challenges - The Loneliness of the Data Journalist

39 of 86

Challenges - Learning JavaScript by myself

40 of 86

Your newsroom programming languages?

​

​

41 of 86

Which programming languages do you use?

42 of 86

Which programming languages do you use?

43 of 86

44 of 86

Learning how to code? => code-like-a-journalist.com 🤓

​

​

45 of 86

Rapid-fire questions!

Only four possible answers:

👉 Python

👉 R

👉 JavaScript/TypeScript

👉 No-code tools!

46 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

​

​

​

​

47 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

​

​

​

48 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

​

​

49 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

​

50 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

51 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

​

​

​

​

52 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

​

​

​

53 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

​

​

54 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

​

55 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

56 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

​

​

​

​

57 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

​

​

​

58 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

​

​

59 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

​

60 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

Datawrapper / TS with SDA and Plot

61 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

Datawrapper / TS with SDA and Plot

Creating interactive data visualizations

​

​

​

​

62 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

Datawrapper / TS with SDA and Plot

Creating interactive data visualizations

d3.js on the observable platform

​

​

​

63 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

Datawrapper / TS with SDA and Plot

Creating interactive data visualizations

d3.js on the observable platform

Really depends*

​

​

64 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

Datawrapper / TS with SDA and Plot

Creating interactive data visualizations

d3.js on the observable platform

Really depends*

Javascript with D3, set up in Node

​

65 of 86

What would you use if you were… (1/2)

​

Tazbia

Kai

Carla

Nael

Analyzing a small dataset

Python in a google colab notebook

Excel or Google Sheets

Google Sheets or Excel

GSheets / TS and SDA library

Analyzing a huge dataset

Python using a Jupyter notebook with a database or Neo4J

Python + Pandas library

Jupyter notebook using pandas library

TS with SDA library

Creating simple charts

Datawrapper/ Tableau/Flourish

Flourish, infogram, datawrapper etc

Datawrapper or Illustrator

Datawrapper / TS with SDA and Plot

Creating interactive data visualizations

d3.js on the observable platform

Really depends*

Javascript with D3, set up in Node

TS with Svelte, D3 and ThreeJS

66 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

​

​

​

​

67 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

​

​

​

68 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

​

​

69 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

​

70 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

71 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

​

​

​

​

72 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

​

​

​

73 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

​

​

74 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

​

75 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

76 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

​

​

​

​

77 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

​

​

​

78 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

​

​

79 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

​

80 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

TS with DuckDB or sqlite

81 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

TS with DuckDB or sqlite

Training an AI model

​

​

​

​

82 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

TS with DuckDB or sqlite

Training an AI model

Python all the way!

​

​

​

83 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

TS with DuckDB or sqlite

Training an AI model

Python all the way!

Python

​

​

84 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

TS with DuckDB or sqlite

Training an AI model

Python all the way!

Python

Python

​

85 of 86

What would you use if you were… (2/2)

​

Tazbia

Kai

Carla

Nael

In a breaking news situation

Google Sheets with Datawrapper

Sheets/Github Actions + Flourish

Google sheets and Datawrapper

GSheets and Datawrapper

Scraping data

Python with Playwright/Selenium. But I also look for undocumented APIs

Python + requests library. Browser automation (selenium/playwright) a last resort

Python, Playwright for complex

TS with Playwright, Cheerio

Building a database or app

Python with SQL (postgres or sqlite) with Flask api

Datasette, Django

Python with Django framework

TS with DuckDB or sqlite

Training an AI model

Python all the way!

Python

Python

Hugging Face / Python

86 of 86

Questions? :)

NICAR 2025

bit.ly/nicar25-which-language