J++ (Journalism++) is an freelance agency for datadriven journalism. We are a team of 9 people in Stockholm and Porto.
We analyze and tell stories with data, as well as doing consultancy and in-house trainings with newsrooms. It is our ambition that every new project we take on should push either us, or the datajournalism scene, or both, forward. That could mean that having to develop new tools to solve a problem, or simply learning a new skill. Here are a few of the tools we\’ve developed while doing journalism, and since released for others to use:
– Newsworthycharts: A heavily opinionated chart module for Python, built on top of Matplotlib, and made for creating charts on a scale (e.g. for robot-generating charts) with minimal setup: https://github.com/jplusplus/newsworthycharts (used in e.g. https://www.onedegreewarmer.eu/)
– Statscraper: A standard and a library for creating scrapers. With Statscraper comes a unified interface for both building and using scrapers, as well as standardised data formats. https://pypi.python.org/pypi/statscraper
– Thenmap, a repository for historical administrative borders, that sees a lot of usage from countries such as Finland and Switzerland, where there are often multiple municipality mergers each year: http://jplusplus.org/en/work/thenmap/
– Various utility libaries, like https://github.com/jplusplus/lockfile and https://github.com/jplusplus/langparser
– A customizable spreadsheet guide for journalists: http://tusg.jplusplus.org
Some other things we worked on over last past 12 months:
– Europe One Degree Warmer: An analysis of local weather data for 558 European cities since 1900. https://www.onedegreewarmer.eu/
– Every local newsroom in Sweden put in one database, allowing us to monitor how different news companies have divided the Swedish local media market amongst them, etc: https://kommundatabas.mediestudier.se/municipalities
– Investigating with Ottar magazine how rape cases fail to make it through the legal system in Sweden: https://www.ottar.se/artiklar/stopp-i-r-ttskedjan-ottar-granskar-v-ldt-kterna
– Newsworthy: A news service that automates story digging in statistical data: https://www.newsworthy.se/en/
– Teaching journalists to code over three separate courses in Python for newsroom usage.
– In-house training for newsrooms.
What makes this project innovative?
We have been developing not only tools, but also methodology for doing datadriven journalism, such as a fact checking method, workshop concepts for newsdesks that want to start doing more datadriven work, etc. As it turns out, it's harder to change newsroom culture, processes and workflows, than it is to introduce new technology. We are therefore focusing more and more on helping newsrooms taking datadriven journalism into their workflow, rather than just teaching them the technical skill. Whenever possible we combine trainings and research, working closely together with journalists over e.g. a number of workshops, finishing it off with a publication.
What was the impact of your project? How did you measure it?
During our programming courses and inhouse trainings, participants have broken many new-stories, ranging from finding politicians on municipality boards who have past convictions for violent crime (https://www.tv4play.se/program/link/11974553), to finding out how corporate fines hurt small business worst (https://arbetet.se/2018/02/07/kannbara-boter-for-smaforetag/), to exposing politicians who were aamong the customers of a leaked nazi web shop customer list (https://www.etc.se/inrikes/sds-toppnamn-i-kyrkovalet-kopte-nazistbocker-mitt-i-valrorelsen) We always build our in-house trainings on real cases, with real publications as the ideal outcome. Most of our workshop series have see at least one or two, publications as a direct outcome, followed by more indirect (and harder to measure) follow ups. Among our own research, the local newsroom database (https://kommundatabas.mediestudier.se) ended up becoming a primary source for the Swedish national media agency (MPRT) in their decision-making. Europe One Degree Warmer (https://onedegreewarmer.eu) saw 40+ parter publications, and hundreds of articles in total. Newsworthy has grown to around 500 subscribers across Sweden, and also started working with the Norwegian wire service NTB for dispatching stories on Norway; as well as with EDJNet to deliver European stories. We have delivered thousands of newsleads to reporters in most of the large local media groups, including public service. For each batch of leads delivered, we see stories done that would unlikely been discovered and written without Newsworthy.
Source and methodology
Data gathering ranges from manually building our own databases in spreadsheets, to setting up scraper parks on Amazon AWS. Generally speaking, we tend to move away from relying on “open data”, realizing that opening up certain data is a way for those in power to direct the news agenda and public discourse. Instead, we try to focus on data that requires manual labour, scraping or specific cooperations. Whenever possible we combine trainings and research, working closely together with journalists over e.g. a number of workshops, finishing it off with a publication. Verification happens in multiple stages, the last one being a kind of line-by-line by the colleague least involved in the project. (Routines before that differ a bit depending on the needs of the project.)
Analysis is mostly done in Python+Pandas. We have more or less abandoned Excel, in favour of doing analysis programmatically. That helps us reduce errors, and increase transparency and reproducibility. Some parts of Newsworthy runs in R. Web apps are mostly built in Node JS. Simple geodata analysis in mostly done in QGIS, more complex in Python. When analysing data on a larger scale, we mostly use Amazon AWS for storing data, running code, etc. We believe data journalism should have as much of an angle to its stories as other journalism, and that often means cutting back on exploratory graphics, and using more static graphics. When interactivity is called for, it has often been done in d3, or in simples cases vanilla JS.
João Antunes, J++ Porto Ana Isabel Carvalho, J++ Porto Jens Finnäs, J++ Stockholm Sascha Granberg, J++ Stockholm Peter Grensund, J++ Stockholm Ricardo Lafuente, J++ Porto Katarina Lind, J++ Stockholm Éléonore Mayola, J++ Stockholm