Office Hours Recording: Steve Grunwell’s “Code Review” Talk

On May 25, we had the privilege of hosting Steve Grunwell's reprise of his WordCamp Dayton talk, "Code Review: For Me & You". Here's the description:

On the surface, the idea of code review is a no-brainer: why wouldn’t we want a second set of eyes on our code, especially before deploying to production?

As we peel back the layers, however, we find that the topic of code review is much more nuanced. How detailed should the review be? Who is qualified to perform the review (hint: it’s not just senior developers)? Can we afford to take another developer away from their project to review this one? What steps can we take to ensure reviews are constructive, rather than demoralizing?

Attendees will gain deeper insight into some of the arguments for and against systemic, peer code review, as well as pick up some useful tools to make code review a natural part of their teams’ workflow.

Check out the recording of Steve's presentation here and follow along with the slides at this link. (Hit s to read the speaker notes — it's a Reveal.js presentation.)

Have something you'd like to present to the INN Labs team and our INN members? Get in touch!

Resources for getting started building news graphics

This post started as a conversation with an INN member about how to turn a database into something searchable for readers. We talked about Datasette Publish, and custom solutions, but the conversation turned into a discussion of how they could build their own simple things, and from there how they could find people and resources to learn more.

And then we thought that other people would have similar questions, so here's what we've come up with on how to get started building news apps and building your own apps team.

C'mon let's go and play

Every snowman starts with a snowball. Do something small to learn the tools, and work your way up from there.

Start by reading the 2013 Source article on building apps on a shoestring. Pay attention not to the specific tools, but to the philosophies in them: static sites that don't depend on servers, replicatable pipelines for turning your data into HTML, and building configurability into your code so you can use the same tool for a different data set next time.



Remember that "Any technology, no matter how primitive, is magic to those who don't understand it," and there's probably going to be a lot of tools that are indecipherable magic. When you're just getting started, it's okay for those tools to remain magic. You'll come to understand them later.

Keep an eye on these resources to see what other people are making:

It doesn't have to be a big team

First, read this 2015 Source article about how to be a lonely coder. (It's by Tyler Machado, our new front-end dev!)

Join the Lonely Coders' Club Slack and the News Nerdery Slack. If you have the budget, attend the yearly NICAR conference, which is full of tools and ideas.


Realize that other teams are lot farther along than you are, and that's okay. They started small, too.

An interactives team isn't a movie. It's a movie studio, and the thing about movies is that anyone with a camera can make them. If all you have is a camera and a script, that's enough to make a simple film. If all you have is a website and some data, that's enough to make a simple chart.

A side-by-side comparison of a static storyboard image from the ballroom coronation confrontation scene of Frozen, and the final film product, where Ana grabs Elsa's hand.
On the left we have a static image. On the right, we have the final film's animation. They still tell the same story, right?

Your first project doesn't have to be Snowfall. It's okay to just have static charts. Start small and work your way up.

How would you do this?

If you have feedback or advice or links on this blog post, let us know, and we'll do a roundup or recap of responses next week. Send an email at or tweet us @innnerds.

Are you still there?

Maybe we should get a bunch of people who started interactives teams together for a panel about how they built the interactive teams and the tools. If you've started such a team, and are interested in participating, send me an email and we'll put together a pitch for SRCCON or NICAR 2019.

How to use News Match Donation Shortcode

As part of INN's support for the 2017 News Match campaign, we've released two WordPress plugins to help sites convert readers. News Match Donation Shortcode provides a donation form for your site to ease donations through the News Revenue Hub as part of the News Match campaign.

Prefer a video walkthrough? Watch this tutorial on youtube.

Installing the plugin

On your WordPress site, click on "Plugins" in the Dashboard menu. If you see an "Add New" button at the top of the page, click that.

If you don't see the "Add New" button or the "Plugins" menu, your user might not have permission to manage plugins on the site; you should contact your technical support and ask them to install News Match Donation Shortcode for you. Your site might require downloading the plugin ZIPs and uploading them via FTP instead of using WordPress' built-in plugin installation tools.

Configuring the plugin

A screenshot of the plugin's locaiton in the wordpress settings menuThe plugin's settings are at Settings > News Match Shortcode in the WordPress admin.

When you first enable the plugin, you'll want to configure it with your organization's name, your News Revenue Hub ID, the default donation amount, and the live and staging URLs of your News Revenue Hub form.

The settings is where you configure the donation levels to match your organization's membership levels. While the plugin comes with 4 default donation levels, you can easily define your own labels and donation levels. The defaults are: $0-$5 Friend, $5-$50 Ally, $50-$500 Champion, and $500+ Ambassador. If you want fewer donation levels, set the third level's upper donation amount to a very high amount, such as your org's dream budget, and make sure that the fourth level is more than that.

A screenshot of the level 1 donation level settings.
Here's an example of non-default configuration of the first donation level out of four.

If you use Salesforce to track campaigns, you can set a default Salesforce campaign ID for the plugin in the plugin's settings. This can be overridden on a per-form basis by setting the sf_campaign_id attribute of the shortcode, like so: [newsmatch_donation_form sf_campaign_id="foo" amount="25"]

A screenshot of the WordPress admin dashboard shows the setting for the Salesforce Campaign ID
This is the Salesforce campaign ID setting in the plugin admin.

The shortcode in use

The default form of the shortcode uses buttons to select the donation level:

a screenshot of the donation form
By adding type="select" to the shortcode, it appears like this:

a screenshot of the dropdown donation form
[newsmatch_donation_form type="select"]
A full list of shortcode arguments and examples can be found in the plugin's entry, but they're basically one-off overrides for your Salesforce campaign ID, your default donation amount, and the type of form.

The above screenshots use the plugin's default styles with non-default configuration. You can style the donation form using your site's theme's CSS, Jetpack’s Custom CSS Editor, or any other tool that allows you to define custom styles on your site. Guidance for these custom styles can be found in the FAQ section of the plugin's entry.

Need support?

If you have questions about this plugin and integrating it with your WordPress site, contact

If you have questions about the News Revenue Hub, visit their contact page.

If you have questions about the News Match program, visit their website for donornonprofit and funding partner information.

How to use News Match Popup Basics

As part of INN's support for the 2017 News Match campaign, we've released two WordPress plugins to help sites convert readers. News Match Popup Basics provides a little guidance and some useful tools for using popups in your campaigns.

Prefer a video walk through? Watch this tutorial on youtube.

News Match Popup Basics does the following:

  • Creates a new popup with our recommended default settings, using the free Popup Maker plugin
  • Provides a way to disable popups on your donation pages
  • Provides a way to disable popups when readers click a link in your Mailchimp-powered newsletter

Let's walk you through installing the plugin and getting it set up.

Installing the plugin

News Match Popup Basics requires the Popup Maker plugin, so first we need to install that.

On your WordPress site, click on "Plugins" in the Dashboard menu. If you see an "Add New" button at the top of the page, click that.

If you don't see the "Add New" button or the "Plugins" menu, your user might not have permission to manage plugins on the site; you should contact your technical support and ask them to install News Match Popup Basics for you. Your site might require downloading the plugin ZIPs and uploading them via FTP instead of using WordPress' built-in plugin installation tools.

After clicking "Add New" you should be on the "Add Plugins" page. In the "Search plugins..." box, enter "popup maker" — you should see an entry named "Popup Maker™ – Best Rated" appear, by "WP Popup Maker." Click "Install Now" to install the plugin, and then click "Activate". You'll be sent to a page asking you to allow sending certain information to a third party. You can press the "Skip" button without any negative effects. Whether you choose to skip or accept, you'll be taken to the list of Popup Maker popups: none yet exist, and that's okay.

Go back to the "Plugins" page, and inn the "Search plugins..." box, enter "news match popup basics innlabs" and choose the presented popup named "News Match Popup Basics" by "innlabs" — that's our plugin. Install and activate it.

In the Dashboard menu, choose the "Popup Maker" item. This will take you back to the "Popups" page you saw earlier, but there should now be a draft popup named "News Match Default Popup." Click on it.

You'll see an editor page that looks rather like the default WordPress post editor, but with a number of exciting new boxes. You can read more about those boxes at the Popup Maker plugin documentation, which is thorough and well-illustrated.

Our default settings for the popup are these:

  • is not published by default, but requires you to publish it before it becomes active on your site
  • is the size “Large” from Popup Maker’s settings
  • appears at the center of the bottom of the reader’s screen
  • appears by sliding up from the bottom of the screen, over 350 milliseconds
  • has a “Close” button
  • does not prevent readers from interacting with the page by means of an overlay
  • does not have a title
  • automatically opens after 25 seconds on the page, because immediate popup appearances can be jarring
  • once dismissed by a reader, does not appear again for a year or until the reader clears their browser’s cookies, whichever comes first
  • appears on the front page of your site
  • uses Popup Maker’s default theme

You'll need to configure which pages the popup appears on, using the built-in conditionals feature. For disabling the popup on certain pages or in certain cases, read on in this blog post, or check out Popup Maker's paid extensions.

You'll also probably want to review the Popup Maker themes available and modify them to suit your own site's appearances. Once you've modified or created a theme, edit your popup to make it use your theme.

In addition to using Popup Maker themes, you can style popups using your site's WordPress theme's CSS, Jetpack’s Custom CSS Editor, or any other tool that allows you to define custom styles on your site.

What goes in a popup?

We recommend donation forms or newsletter signup forms. For a simple donation form that integrates with the News Match campaign, check out News Match Donation Shortcode.

Finding the News Match Popup Basics settings

From the WordPress Dashboard menu, under Popup Maker, choose "News Match Popup Basics." This is where you configure whether the plugin disables certain popups.

Disabling popups on certain pages

Donation pages should help people give you money, and should have as few obstacles to that goal as possible. Likewise, newsletter signup pages. Strip out ads, remove unnecessary headers, maybe even clean up your footer on these pages. Donation and signup pages should do one thing and do that well.

Popup Maker's free version includes a simple yet powerful Boolean conditionals system that determines on what pages popups appear, but that system only works on a per-popup basis. Preventing popups from appearing on a particular page requires checking every single popup on your site, and modifying their conditions. We've endeavored to make the process simpler.

In the News Match Popup Basics settings, check the box to enable donation page popup prevention, and add some URLs to the box. Each URL must be on its own line. You should remove the protocol from the start of the URL, so that is entered as

A screenshot of the WordPress admin showing the News Match Popup Basics settings page, focused on the URL-based popup suppression feature's settings. The URLS given are,, and /about/
Example settings for the URL-based popup prevention feature of News Match Popup Basics.

When a visitor goes to a page the URL of which matches one of the entered URLs, News Match Popup Basics will prevent Popup Maker from displaying any popups on that page. You can include URL fragments as well, so if you want to prevent popups on pages that have a common URL name, like every page that has donate in its URL.

Be careful with how general your URL fragments are. By "match" we mean that if the entire text on the line in the box can be found in the URL, it will match:

  • will only match and
  • /meow/ will only match, and
  • meow will match,,, and

We named this feature "donation page popup prevention," but in reality it can be used to exclude popups on all sorts of pages.

If you'd like the ability to programmatically exclude popups on arbitrary pages, let us know on this feature proposal on GitHub.

Disabling popups from Mailchimp visitors

In the WordPress Dashboard, under the “Popup Maker” menu item, on the “News Match Popup Basics” page, there is a checkbox that enables MailChimp suppression. There is also a text box to set the utm_source parameter. MailChimp automatically appends this URL parameter to outbound links in your emails if you have click tracking set up.

From one of the emails you have sent, find a link that contains a utm_source= parameter and copy the following argument text, up until any & character, into the text box. For example, a Nerd Alert newsletter sent by INN Labs contained a link that looked like this: From that URL, you would copy Nerd+Alert into the text box.

A screenshot of the WordPress Admin settings page for News Match Popup Basics, focused on the popup prevention for MailChimp visitors. The setting for utm_source is set to "Nerd+Alert"
An example configuration of the utm_source setting.

Once you have provided a utm_source parameter, checked the checkbox, and saved the settings, any popup that contains an HTML element with an id attribute equal to mc_embed_signup, or a CSS selector equal to #mc_embed_signup, will be suppressed. Suppression works client-side using JavaScript that runs in the visitor’s browser.

If you have multiple MailChimp signup forms on your site, suppression based on the HTML ID of the form will not work for you. You should add a class to all MailChimp forms in popups, and use that as the selector. For more details about this process, see the FAQ entry "Why does MailChimp popup suppression use #mc_embed_signup" at the plugin's entry.

If you'd like better tracking of MailChimp form sign-ups, we recommend that you follow MailChimp's guide on editing forms for better analytics to track popup conversions.

Need help?

If you have questions, join us in our webinar today (Wednesday, October 25) at 1 p.m. Eastern, or contact us at

Nerd Alert 141: We wish you a merry weekend

We wish you a merry weekend
We wish you a happy weekend
We wish you a restful weekend
And a happy day off ♬


What we're reading this week

Ben: The RNNoise Project is collecting donations of noise to help improve real-time noise suppression algorithms. Record a sample in your browser, review it to make sure that there's nothing sensitive, and submit. It's that easy!

RC: Pierrick Calvez's "A Five Minutes Guide to Better Typography" is a beautifully-laid-out demonstration of its own principles.

Julia: “Want readers to start trusting you? Stop stalking them across the internet,” says Melody Kramer.

Kay: How are you treating your most committed users? You have potential to expand your loyal members/followers/supporters and you can start with talking to them like they matter.

Inndy: Other robots are calling you, and it’s because the Do Not Call list has a big hole in it.


Listen up!

The News Match logo is plain text that reads: News Match. Quality Journalism Matters.

News Match is back, and our team is working to help participating organizations take advantage of this unique and impactful opportunity. Read more about how we can help, and check back here every week for updates. We’ll be posting plugin release announcements, how-tos for configuring donation forms, best practices for user experience design, and advice on maximizing Google Analytics for donation campaigns. You won’t want to miss it.


Be in the know

October 6: Last day to apply for Catalyst AAJA’s Media Entrepreneurship Program
October 13-14: Computation and Journalism Symposium 2017 at Northwestern University
October 14: Last day to apply to participate in the Washington News Nerds’ Tacoma (un)conference
November 3: Deadline for proposals for Propublica’s Local Reporting Network
December 1-3: WordCamp US in Nashville
December 7-8: SRCCON:WORK in Philadelphia


Work we admire by our journalism peers

A graph showing the percent of Puerto Rican power customers who have service. It starts below 5% and slowly grows to 10.7%.

When FEMA removed drinking water and power statistics from its page covering Puerto Rico's recovery, The Washington Post started graphing those stats. And FEMA started posting those stats again.

The Financial Times has created an eye-opening game based on real reporting, including interviews with dozens of Uber drivers, that shines a light on the realities of working in the gig economy. You're an Uber driver. Can you make your mortgage payment?

Do you develop or maintain database-reliant interactive websites? How will they be preserved for the future? Katherine Boss at New York University Libraries, and Meredith Broussard at the New York University Arthur L. Carter Journalism Institute are conducting a survey of news apps, to help figure out what the best ways to archive such projects are.


Good jobs with good people

NPR is hiring a product designer.

The Center for Public Integrity is hiring a news developer.

St. Louis Public Radio is hiring a digital engagement producer and a bunch of other positions.

Poynter has a massive roundup of journalism internships and fellowships.

If you're looking for general jobs in nonprofit news, check out the main INN newsletter and sign up here to get it in your inbox every Tuesday. Two INN newsletters are better than one!


Gather ye rosebuds

READ: Wordways, an open-access journal dedicated to "recreational logology."

LISTEN: It’s Halloween Month, but if you don’t want to listen to the Otomatone cover of Spooky Scary Skeletonscheck out The Guardian's list of the best 50 tracks from September. 🎶

PLAY: Mavis Beacon Teaches Typing meets Asteroids in Ztype.

WATCH: Three hours and 47 minutes of live YouTube comments being fed into a shredder.

EAT: Overnight sous-vide bacon.

DRINK: Pumpkin beverages — including ones without pumpkin spice!

It’s been a tough week. You survived!

The Pokémon Staryu floats against a blue background with motion-blurred purple and white stripes. From its central gem, endless streams of stars pour towards the viewer.

You get a star!

Hurricane Irma remote contribution opportunities

This is a roundup of all Irma-related things that people can contribute to remotely: mapping projects, newsroom projects, and so on. Suggest changes to this Google Doc and we'll update this post.

This post originally appeared in the Friday, September 8 edition of the Nerd Alert newsletter.

Nerd Alert 138: What if we all worked together on something?


What we're reading this week

Ben: Content “blocks” are the happening thing. WordPress is working on Gutenberg. Tumblr is moving from plain HTML to the Neue Post Format. ProPublica now runs on Craft, which is built around blocks. What else is out there?

RC: Jake Spurlock’s presentation, A Biased Guide to Managing Bias, is a must read.

Julia: This post on the narrowing gap between design and code suggests that a new era of design etiquette is upon us.

Kay: Designing, developing, and testing for multiple screen sizes has its challenges - including not being able to work with multiple devices at the same time. That’s why I was excited to read about XRespond, a tool made to simplify that process and give you an all-in-one overview.

Inndy: Fear dumb robots.


Helpful projects that you can join

This is a roundup of all Irma-related things that people can contribute to remotely: mapping projects, newsroom projects, and so on:

The above is what ran in the Nerd Alert Newsletter sent on Friday, September 8. We're keeping an updated version of this list over here.



Be in the know

This Saturday, September 9, is the last day to fill out the OpenNews News Nerd Survey.

September 22: Last day to pitch talks to the 2018 Computer Assisted Reporting conference, aka NICAR.

September 23: Data Journalism Bootcamp at CUNY – sign up soon!

September 29: Last day to apply for a Knight Visiting Nieman Fellowship.


Work we admire by our journalism peers

The logo of Coral Project's Talk software is a text bubble with three hollow circles in it.
The Washington Post is now using Talk, the Coral Project’s commenting platform. It'll help them engage with commenters, instead of the too-common approach of turning comments off.



Good jobs with good people

ProPublica is hiring a senior reporting fellow and a contract animator.

CALmatters is hiring an audience engagement manager.

Reese News Lab is hiring a data scientist.

100 Days in Appalachia is hiring a digital managing editor.

WNYC is hiring a data reporter.

If you're looking for general jobs in nonprofit news, check out the main INN newsletter and sign up here to get it in your inbox every Tuesday. Two INN newsletters are better than one!



Gather ye rosebuds

READ: I downloaded an app. And suddenly, was part of the Cajun Navy 📲

LISTEN: Bohemian Rhapsody on a fairground organ 🎶

WATCH: A webcam on Miami Beach ⛱

EAT: Do-it-yourself Meals Ready to Eat 🍴

DRINK: Clean water 🚰

PLAY: The Magic Door ✨



Stay dry, friend.

An illustration of a white cat sitting on the edge of a pool, watching the goldfish swim. This is in a garden with lots of cabbage.

WordCamp for Publishers Wrap-Up

Contributor Day Thanks

INN would like to thank the following people for their contributions during Contributor Day:

  • Mike Schinkel for Largo pull requests #1469 and #1466, fixing errors in Largo when running under WP_DEBUG and cleaning up some widgets.
  • Chris Hardie for Largo pull requests #1463#1465, and #1468, fixing syntax problems and WordPress Theme Check issues.
  • Jeremy Green for Largo pull request #1464, fixing a number of translation text domain issues.
  • Mads Holmen, Ben Borie, and Douglas Arellanes for their contributions to the Largo Wiki.
  • Adam Schweigert for continued work on DoubleClick for WordPress.

If you'd like to contribute to the next version of Largo, check out the Largo issue tracker on GitHub. We have a number of issues that would make good community contributions. Also, check out Largo's contributor guidelines and our team documentation!

INN at #wcpub

We'll update this section with transcripts and video as they become available.

Julia's Designing for Customization session provided an overview of the WordPress Customizer, information on how we're building the next version of Largo for Customizer-powered homepages, and ended with a brainstorming session about ways to solve a number of problems through improving customizability. Read her slides and speaker notes, and the prompt from the brainstorming session.

RC led INN's Contributor Day presence, which focused on building the next edition of Largo.

Ben's lightning talk was about all of INN's plugins, starting with the popular ones and wrapping up with the ones we've built for other people.

Kay and Ben were WordCamp for Publishers organizers as well as INN representatives. Kay was part of the Denver team that handled events and logistics, and Ben was part of the publicity team that handled the website, social media updates, and photography.

During Contributor Day, RC worked on Largo and Ben worked on INN's Storytelling Tools plugin.

Nerd Alert 135: Hello from WordCamp!

We're at WordCamp for Publishers this week, so this Nerd Alert is a little light.

If you’re in Denver, come say hi! 👋

If not, never fear! You can follow the events on Twitter at #wcpub, and check out our team's slides here:

You're invited to join us remotely for Contributor Day! The event kicks off tomorrow at 10:30 a.m. MT, and RC will be leading collaboration on Largo. Take a look at the issues on GitHub and jump in wherever you can!


  RC: If you haven’t checked out the WP GraphQL project yet, here’s a great presentation on how and why you’d want to get started using it.

  Kay: Tech platforms have long stood by strict neutrality and freedom of expression. That may now be changing.

  Julia: Some Internet history for your Friday afternoon: The languages that almost became CSS.

  Ben: The processes described in this blog post sound incredibly inadvisable – changing a computer’s operating system in place as it runs, live, without rebooting, in a production environment – but Magento did it, and it worked.

  Inndy: Robot dance party?


LISTEN: Beethoven's Pathétique Sonata

EAT: Blueberry Crisp Tart with Oat Crust

DRINK: Nutella Latte

WATCH: You owe it to yourself to experience a total solar eclipse


A dolphin, a whale and a seal bob up and down in the ocean, wearing eclipse glasses, while the sun flicks on and off as the moon passes in front of it.

Nerd Alert 134: What will you listen to this weekend?


  Ben: Jenn Schiffer's essay about not policing code ecosystems makes a good point: it's not a good thing for coders or for code ecosystems if people get chased out for not meeting some arbitrary bar of worthiness.

  Julia: The Schools of Journalism dives into the varying communities in the journalism industry, the “interesting” times we live in, and ways to approach the future.

  Kay: An incredibly inspiring coder.

  RC: The guy who invented those annoying password rules now regrets wasting your time.

  Inndy: The Internet Archive is posting digitized 78prm records, and there are now a couple of Tweetbots: @great78project posts every 10 minutes; @78_sampler posts every 2 hours.


No Office Hours next week — we're all attending WordCamp for Journalists in Denver. If you're in town, come say hi 👋 – and be sure to join us for Contributor Day on Saturday, 8/19, to work on the next Largo release!


It's a map of the United States, with some states more shaded in green than others, according to which have more Largo users.
We’ve collected a partial list of sites using Largo in the wiki on INN/Largo. If you know a site that's not in the list, let us know!


August 17-19: WordCamp for Publishers.
August 18: Last day to apply for the Poynter-NABJ Leadership Academy for Diversity in Digital Media.
September 29: Last day to apply for a Knight Visiting Nieman Fellowship.


Screenshots flicker past of Reveal's Sanctuary interactive, showing: Cook County Illinois, Clark County Nevada, Miami-Dade County Florida, and Chicago.
Reveal's "What makes a sanctuary?" compares policies between different sanctuary cities and states.

The Coral Project just released a set of guides designed to help people in journalism improve their strategy, skills, and understanding for effective community engagement.

ProPublica and have added an additional 1.9 million electronically-filed Form 990 documents to the Nonprofit Explorer database, bringing the total to more than 3 million records.

The New York Times has open-sourced a text-message-based facial-recognition system for members of Congress. It's called Who the Hill.


Center for Public Integrity is hiring a data editor in DC.

The Texas Tribune is hiring an interactive designer/developer.

Chalkbeat is hiring a digital producer.

If you're looking for general jobs in nonprofit news, check out the main INN newsletter and sign up here to get it in your inbox every Tuesday. Two INN newsletters are better than one!


LISTEN: The Preytorians 📻

WATCH: Surfers playing with a floating dock 🌊

EAT: 17 different home-made ramen recipes 🍜

DRINK: A vanilla and fresh cherry bourbon cocktail 🍸

Watching MP3s being copied is nowhere near as fun.

A record press makes a record by pressing a blob of vinyl between two grooved platens.