Posts
A complete list of articles written for this site
2026
-
Aug. 19 • Introducing isobands -
Aug. 10 • Estimating the human toll of extreme heat -
July 30 • Truth-telling 101 -
June 29 • On Assignment -
June 10 • Introducing the Reuters Climate Monitor -
May 27 • How we automate the news -
May 20 • CUNY critique -
May 16 • Saving FiveThirtyEight -
March 09 • Two NICAR26 textbooks -
March 05 • The new IRE archive -
Feb. 02 • Coding the News -
Jan. 27 • How journalism lost its culture of sharing -
Jan. 05 • Introducing First Basemap
2025
-
Nov. 15 • Signal in the Noise -
Nov. 03 • Chatting charts with the Datawrapper MCP -
Oct. 20 • Object-oriented charting with Datawrapper 2.0 -
Sept. 29 • Live hurricane maps on Reuters.com -
Sept. 05 • 100 automated charts on Reuters.com -
July 14 • Hardware and software from IRE -
May 21 • IRE and me -
April 01 • Reuters Journalists of the Year Award -
March 17 • Datawrapper JSON bookmarklet -
March 11 • New at NICAR25 -
Feb. 10 • Put John Bones in the IRE Ring of Honor -
Jan. 27 • A new data section on Reuters.com
2024
-
Nov. 19 • CUNY students, we want you -
Oct. 30 • Data dashboards on Reuters.com -
Aug. 26 • Embedding Datawrapper charts in Observable Framework -
Aug. 15 • Deploying Observable Framework with GitHub Pages
2023
2022
-
Oct. 24 • A searchable database of amateur radio satellites -
Oct. 14 • The Studs Terkel Archive Podcast returns for season two
2021
-
May 09 • Liberating the public art on L.A.’s light rail lines -
May 02 • Introducing the e.e. cummings free poetry archive -
Feb. 23 • #NICAR21 after party
2020
-
Dec. 27 • Introducing The Studs Terkel Archive Podcast -
March 21 • Flash MOOC: First Python Notebook
2019
-
Nov. 28 • One chart, two outputs -
April 10 • Uncle Sam's style guides
2018
-
April 19 • The L.A. Times' first computer-assisted graphic -
April 14 • My Times -
Feb. 04 • Above the fold
2017
-
Sept. 09 • What I learned
2016
-
April 18 • Pulitzer pride -
March 06 • "First News App" rides again at NICAR 2016
2015
-
Dec. 03 • Who they were -
Nov. 12 • Estado de las artes -
Oct. 15 • An unexpected award -
Sept. 29 • L.A. Times liveblog now nationwide -
Sept. 28 • Introducing Memento for Wordpress -
July 22 • California Civic Data Coalition named winner of Knight News Challenge -
May 12 • Introducing django-memento-framework -
April 16 • Join the 2015 CAL-ACCESS challenge -
April 14 • California Civic Data Coalition advances in Knight News Challenge -
Feb. 11 • "First News App," a second time around
2014
2013
-
July 18 • Why develop in the newsroom -
July 08 • Where will Downtown L.A.'s Regional Connector run?
2012
-
March 26 • Leaflet recipe: Hover events on features and polygons -
Feb. 25 • NICAR 2012: Things I said
2011
-
Dec. 05 • Q&A: Matt Waite on the founding of the Drone Journalism Lab -
Sept. 26 • Q&A: Miranda Mulligan dishes on responsive design -
Aug. 14 • Q&A: Brian Boyer on the plan for PANDA -
Feb. 26 • How to break news on Google App Engine -
Feb. 24 • PostGIS is your new bicycle
2010
-
Dec. 16 • Introducing Pluggable Maps for GeoDjango -
Nov. 10 • Q&A: Zain Memon tells how Tendermaps works -
Nov. 07 • Django recipe: Twitter-style infinite scroll -
March 24 • Fabric recipe: Delete pyc files before runserver starts
2009
-
Oct. 29 • Django recipe: Dynamically load a Google Maps API key -
Oct. 24 • L.A. County should just say no to PDFs -
Sept. 04 • Django recipe: Pretty print objects and querysets -
Sept. 01 • Django recipe: Remove newlines from a text block -
Sept. 01 • Python recipe: Fetch all the days between two dates -
Aug. 23 • Django recipe: Make an RSS feed for every tag -
Aug. 13 • Django recipe: Use extent of a queryset to set the zoom -
Aug. 07 • Python recipe: Calculate adjusted monthly values -
Aug. 05 • Google Voice fails the Obama test -
Aug. 01 • Django recipe: A django-tagging cloud for all models -
July 29 • New, improved, even more conspicuous consumption -
July 25 • This is palewire -
March 16 • OCTO: DC police cite privacy to rollback public access to crime data -
March 04 • OpenLayers recipe: How to map proportional symbols -
March 03 • Django recipe: Dump your QuerySet out as a CSV file -
Feb. 15 • Django recipe: Add an auto-count field to your model
2008
-
Sept. 18 • Five ways your data app can catch the big news hook -
July 20 • How we got here, or which past are we prolouging again? -
July 06 • Permalinks, low-rent data viz and other stupid Caspio tricks -
June 23 • Tickertube, Ben's first stab at Amazon Web Services -
June 15 • Terminal recipe: Download an entire web site with wget -
June 01 • Ben's hip hop Twitter bot -
May 26 • California's War Dead -
May 19 • LA red light cameras on your TomTom or Garmin -
April 27 • Ubuntu recipe: Post your Last.fm feed to Twitter -
April 26 • Python recipe: Connect to MySQL, query, print the results -
April 21 • Python recipe: Print a future date in the format you want -
April 20 • Python recipe: Grab page, scrape table, download file -
April 14 • Python recipe: Read file, find pattern, print matches -
April 07 • Python recipe: Open files, find matches, count hits -
April 05 • Python recipe: Open a file, read it, print matching lines -
March 24 • Go snoop yourself