Skip to content

BEA API RegionalProduct dataset / IndustryId values

1All industry total [State Annual SIC]
2Private industries [State Annual SIC]
3Agriculture, forestry, and fishing [State Annual SIC]
4Farms [State Annual SIC]
5Agricultural services, forestry, and fishing [State Annual SIC]
6Mining [State Annual SIC]
7Metal mining [State Annual SIC]
8Coal mining [State Annual SIC]
9Oil and gas extraction [State Annual SIC]
10Nonmetallic minerals, except fuels [State Annual SIC]
11Construction [State Annual SIC]
12Manufacturing [State Annual SIC]
13Durable goods manufacturing [State Annual SIC]
14Lumber and w


This is an attempt to get Leaflet working with D3's Albers USA projection.

This first stab works deceptively well: the coordinates are at least self-consistent, so centering, panning and zooming work as expected. There are some problems, though:

  1. The d3.geo.albersUsa() projection appears to return null for coordinates that don't fall within its parallels, which Leaflet doesn't like.
  2. Likely related, something in Leaflet's bounding box calculation for the US GeoJSON produces NaNs and fails.
  3. The D3 projection's scale(.25) is a stab in the dark that makes the US approximately the right size at zoom 3, but is most certainly wrong.

In general, it's not clear whether we should be transforming D3's projection (which, according to the docs, doesn't support translation anyway) or Leaflet's transformation (currently a noop).

View lib.js
export default function foo() {
return 'foo';
export function bar() {
return 'bar';
View form-save.js
// NOTE: the '#form-id' selector below will most certainly be different
// for whatever page you're on. Remember to change it in both instances!
// run this in the terminal to save the state of your form
// in your browser's LocalStorage:
[]'#form-id').elements, function(el) {
localStorage.setItem(, el.value);
// then refresh the page and run this to restore your form values:
View data.yaml
# fields is a map, the keys of which are the output columns
# the simplified form just maps an output column to an input column
# internally, this should still be represented as a hash with
# the minimum set of useful metadata with reasonable defaults
name: CITNM
# the more descriptive form provides column metadata:
View index.html
<!DOCTYPE html>
<html lang="en">
<script src=""></script>
<script src=""></script>
body {
margin: 0;
padding: 1em;

This is a fork of the Mike Bostock's World Tour with an additional bitmap for doing point-in-polygon lookups with unique colors, as described in this stackoverflow answer.

Move your mouse over the countries to highlight them with their corresponding bitmap color.


ASCII California

  1. If you don't have Node yet, get it.
  2. Run npm install to get geotype.
  3. Run this to get your own ASCII California:

Stateful Checkboxes

This quick little hack creates a global function named checkboxes() that uses [localStorage] to remember the state of checkboxes on the host page. Usage:

var boxes = checkboxes({
    // the checkbox selector (always prefixed with 'input[type=checkbox]')
    selector:   '.stateful',
    // the storage engine (only 'localStorage' is supported here)
    storage:    'localStorage',
    // the prefix for all storage keys
View charts.html
{% macro series(bars, value_key, tooltip=None) %}
<div class="chart-series chart-series--vertical">
{% for bar in bars %}
<div class="chart-series__bar" data-value="{{ bar[value_key] }}">
{% if tooltip %}
<div class="chart-series__bar__tooltip">
<div class="chart-series__bar__tooltip__content">
{{ tooltip(bar) }}
Something went wrong with that request. Please try again.