├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _data ├── _schemas │ ├── _cluster-schema.yaml │ ├── _curation-schema.yaml │ └── _item-schema.yaml ├── _stubs │ ├── books.yaml │ └── games.yaml ├── curations │ ├── community │ │ ├── discussions.yaml │ │ ├── jobs.yaml │ │ ├── newsletters.yaml │ │ ├── organizations.yaml │ │ └── portfolios.yaml │ ├── datasets │ │ ├── catalogs.yml │ │ └── topical-datasets.yml │ ├── interactives │ │ ├── newsapps.yaml │ │ └── visualizations.yaml │ ├── outlets │ │ ├── awards-outlets.yaml │ │ ├── meta-outlets.yaml │ │ ├── news-outlets.yaml │ │ └── specialty-outlets.yaml │ ├── resources │ │ ├── curriculums.yaml │ │ ├── guides.yaml │ │ ├── indepth.yaml │ │ ├── listicles.yaml │ │ ├── repos.yaml │ │ ├── tools.yaml │ │ └── tutorials.yaml │ └── stories │ │ ├── essays.yaml │ │ ├── explorations.yaml │ │ ├── investigations.yaml │ │ └── profiles.yaml └── navigation.yaml ├── _includes ├── a-reflink.html ├── curation-item.html ├── curation-section.html ├── item-examples.html ├── item-pubmeta.html ├── jekyll-toc.html └── site │ ├── footer.html │ ├── head.html │ ├── head_meta.html │ └── header.html ├── _layouts ├── base.html ├── cluster.html ├── default.html ├── home.html ├── page.html └── post.html ├── _posts └── 2020-02-18-welcome-to-jekyll.markdown ├── _sass ├── bootstrap │ ├── _alert.scss │ ├── _badge.scss │ ├── _breadcrumb.scss │ ├── _button-group.scss │ ├── _buttons.scss │ ├── _card.scss │ ├── _carousel.scss │ ├── _close.scss │ ├── _code.scss │ ├── _custom-forms.scss │ ├── _dropdown.scss │ ├── _forms.scss │ ├── _functions.scss │ ├── _grid.scss │ ├── _images.scss │ ├── _input-group.scss │ ├── _jumbotron.scss │ ├── _list-group.scss │ ├── _media.scss │ ├── _mixins.scss │ ├── _modal.scss │ ├── _nav.scss │ ├── _navbar.scss │ ├── _pagination.scss │ ├── _popover.scss │ ├── _print.scss │ ├── _progress.scss │ ├── _reboot.scss │ ├── _root.scss │ ├── _spinners.scss │ ├── _tables.scss │ ├── _toasts.scss │ ├── _tooltip.scss │ ├── _transitions.scss │ ├── _type.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── bootstrap-grid.scss │ ├── bootstrap-reboot.scss │ ├── bootstrap.scss │ ├── mixins │ │ ├── _alert.scss │ │ ├── _background-variant.scss │ │ ├── _badge.scss │ │ ├── _border-radius.scss │ │ ├── _box-shadow.scss │ │ ├── _breakpoints.scss │ │ ├── _buttons.scss │ │ ├── _caret.scss │ │ ├── _clearfix.scss │ │ ├── _deprecate.scss │ │ ├── _float.scss │ │ ├── _forms.scss │ │ ├── _gradients.scss │ │ ├── _grid-framework.scss │ │ ├── _grid.scss │ │ ├── _hover.scss │ │ ├── _image.scss │ │ ├── _list-group.scss │ │ ├── _lists.scss │ │ ├── _nav-divider.scss │ │ ├── _pagination.scss │ │ ├── _reset-text.scss │ │ ├── _resize.scss │ │ ├── _screen-reader.scss │ │ ├── _size.scss │ │ ├── _table-row.scss │ │ ├── _text-emphasis.scss │ │ ├── _text-hide.scss │ │ ├── _text-truncate.scss │ │ ├── _transition.scss │ │ └── _visibility.scss │ ├── utilities │ │ ├── _align.scss │ │ ├── _background.scss │ │ ├── _borders.scss │ │ ├── _clearfix.scss │ │ ├── _display.scss │ │ ├── _embed.scss │ │ ├── _flex.scss │ │ ├── _float.scss │ │ ├── _overflow.scss │ │ ├── _position.scss │ │ ├── _screenreaders.scss │ │ ├── _shadows.scss │ │ ├── _sizing.scss │ │ ├── _spacing.scss │ │ ├── _stretched-link.scss │ │ ├── _text.scss │ │ └── _visibility.scss │ └── vendor │ │ └── _rfs.scss ├── font-awesome │ └── scss │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _extras.scss │ │ ├── _fixed-width.scss │ │ ├── _icons.scss │ │ ├── _larger.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _path.scss │ │ ├── _rotated-flipped.scss │ │ ├── _spinning.scss │ │ ├── _stacked.scss │ │ ├── _variables.scss │ │ └── font-awesome.scss ├── mystyles │ ├── footer.scss │ ├── fullindex.scss │ ├── homepage.scss │ ├── item.scss │ ├── myfonts.scss │ ├── myvars.scss │ └── page.scss └── mytheme.scss ├── about.markdown ├── assets ├── css │ └── style.scss └── fonts │ ├── FontAwesome │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff │ ├── Roboto │ ├── LICENSE.txt │ ├── Roboto-Black.ttf │ ├── Roboto-BlackItalic.ttf │ ├── Roboto-Bold.ttf │ ├── Roboto-BoldItalic.ttf │ ├── Roboto-Italic.ttf │ ├── Roboto-Light.ttf │ ├── Roboto-LightItalic.ttf │ ├── Roboto-Medium.ttf │ ├── Roboto-MediumItalic.ttf │ ├── Roboto-Regular.ttf │ ├── Roboto-Thin.ttf │ └── Roboto-ThinItalic.ttf │ └── Solway │ ├── OFL.txt │ ├── Solway-Bold.ttf │ ├── Solway-ExtraBold.ttf │ ├── Solway-Light.ttf │ ├── Solway-Medium.ttf │ └── Solway-Regular.ttf ├── debug.html ├── fullindex.html ├── index.html ├── my_collections └── _clusters │ ├── community.html │ ├── datasets.html │ ├── interactives.html │ ├── outlets.html │ ├── resources.html │ └── stories.html └── static └── images └── items ├── ben-casselman-qna.jpg └── thumbnails ├── agate.png ├── data-is-plural.png ├── data-slueths-of-san-jose.jpg ├── datawrapper.png ├── excel-beginners-maryjo.png ├── first-graphicsapp.jpg ├── first-news-app.png ├── first-notebook.png ├── gentle-sqlite.png ├── ire-nicar-logo.png ├── jupyter-notebook.png ├── lorem-ipsum-tk.png ├── markup-allstate-algorithm.jpg ├── observable.png ├── openrefine.png ├── pudding-logo-thumb.jpg ├── regex-hands-on-2017.png ├── rstudio.png ├── sara-simon-alumni-profile.jpg ├── sql-murder-mystery.png ├── tabula.png ├── vanschneider-datadesign-resp.png └── wapo-covid19-sim.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Dan Nguyen's custom bashfoo 2 | 3 | # names for data stash folders that shouldn't be committed 4 | _drafts/ 5 | junk/ 6 | zunk/ 7 | ZUNK/ 8 | 9 | # try to prevent the inclusion of credentials 10 | creds/ 11 | creds*.* 12 | passwords/ 13 | apikeys/ 14 | apikey*.* 15 | 16 | # Shouldn't be including compressed files 17 | *.zip 18 | *.gz 19 | 20 | # spreadsheet/db intermediate files 21 | ~$*.xlsx 22 | # libre 23 | .~lock.* 24 | 25 | 26 | 27 | 28 | # OS stuff 29 | .DS_Store 30 | .Trashes 31 | .Spotlight-V100 32 | Thumbs.db 33 | 34 | 35 | # Byte-compiled / optimized / DLL files 36 | __pycache__/ 37 | *.py[cod] 38 | *$py.class 39 | 40 | # C extensions 41 | *.so 42 | 43 | # Distribution / packaging 44 | .Python 45 | build/ 46 | develop-eggs/ 47 | dist/ 48 | downloads/ 49 | eggs/ 50 | .eggs/ 51 | lib/ 52 | lib64/ 53 | parts/ 54 | sdist/ 55 | var/ 56 | wheels/ 57 | *.egg-info/ 58 | .installed.cfg 59 | *.egg 60 | MANIFEST 61 | 62 | # PyInstaller 63 | # Usually these files are written by a python script from a template 64 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 65 | *.manifest 66 | *.spec 67 | .pytest_cache/ 68 | 69 | # Installer logs 70 | pip-log.txt 71 | pip-delete-this-directory.txt 72 | 73 | # Unit test / coverage reports 74 | htmlcov/ 75 | .tox/ 76 | .coverage 77 | .coverage.* 78 | .cache 79 | nosetests.xml 80 | coverage.xml 81 | *.cover 82 | .hypothesis/ 83 | 84 | # Translations 85 | *.mo 86 | *.pot 87 | 88 | # Django stuff: 89 | *.log 90 | .static_storage/ 91 | .media/ 92 | local_settings.py 93 | 94 | # Flask stuff: 95 | instance/ 96 | .webassets-cache 97 | 98 | # Scrapy stuff: 99 | .scrapy 100 | 101 | # Sphinx documentation 102 | docs/_build/ 103 | 104 | # PyBuilder 105 | target/ 106 | 107 | # Jupyter Notebook 108 | .ipynb_checkpoints 109 | 110 | # pyenv 111 | .python-version 112 | 113 | # celery beat schedule file 114 | celerybeat-schedule 115 | 116 | # SageMath parsed files 117 | *.sage.py 118 | 119 | # Environments 120 | .env 121 | .venv 122 | env/ 123 | venv/ 124 | ENV/ 125 | env.bak/ 126 | venv.bak/ 127 | 128 | # Spyder project settings 129 | .spyderproject 130 | .spyproject 131 | 132 | # Rope project settings 133 | .ropeproject 134 | 135 | # mkdocs documentation 136 | /site 137 | 138 | # mypy 139 | .mypy_cache/ 140 | 141 | 142 | # js/svelte stuff 143 | node_modules 144 | public/bundle.* 145 | 146 | 147 | # jekyll stuff 148 | _site 149 | .sass-cache 150 | .jekyll-cache 151 | .jekyll-metadata 152 | vendor/bundle 153 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: default 4 | --- 5 | 6 | 19 | 20 |
21 |

404

22 | 23 |

Page not found :(

24 |

The requested page could not be found.

25 |
26 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | # Hello! This is where you manage which Jekyll version is used to run. 3 | # When you want to use a different version, change it below, save the 4 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 5 | # 6 | # bundle exec jekyll serve 7 | # 8 | # This will help ensure the proper Jekyll version is running. 9 | # Happy Jekylling! 10 | # gem "jekyll", "~> 4.0.0" 11 | 12 | gem "github-pages", group: :jekyll_plugins 13 | # If you have any plugins, put them here! 14 | group :jekyll_plugins do 15 | gem "jekyll-feed" 16 | end 17 | 18 | # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem 19 | # and associated library. 20 | install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do 21 | gem "tzinfo", "~> 1.2" 22 | gem "tzinfo-data" 23 | end 24 | 25 | # Performance-booster for watching directories on Windows 26 | gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform? 27 | 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Dan Nguyen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Data Journalism Primer (just notes for now) 2 | 3 | Whenever I get asked about how to get into data journalism or what it entails, I draw up a list of resources from scratch. Seems easier just to post on Github the things I usually recommend. 4 | 5 | https://dannguyen.github.io/datajournalism-primer 6 | 7 | 8 | ## Dev resources 9 | 10 | - Schemas for each of the datatypes can be found in [_data/_schemas/](_data/_schemas/) 11 | - [Liquid filters for Jekyll](https://jekyllrb.com/docs/liquid/filters/) 12 | - [Liquid tags for Jekyll](https://jekyllrb.com/docs/liquid/filters/) 13 | 14 | 15 | ## Todos 16 | 17 | #### schema stuff 18 | 19 | - change `publishmeta` to `byline`? 20 | - better name for `appendixmeta` 21 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process. 10 | # 11 | # If you need help with YAML syntax, here are some quick references for you: 12 | # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml 13 | # https://learnxinyminutes.com/docs/yaml/ 14 | # 15 | # Site settings 16 | # These are used to personalize your new site. If you look in the HTML files, 17 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. 18 | # You can create any custom variable you would like, and they will be accessible 19 | # in the templates via {{ site.myvariable }}. 20 | 21 | title: The Data Journalism Primer 22 | email: dansonguyen@gmail.com 23 | description: >- # this means to ignore newlines until "baseurl:" 24 | A repository of data journalism stories, essays, guides, repos and resources, for folks interested in learning about the field and aspiring to do it. 25 | 26 | 27 | baseurl: "/datajournalism-primer" # the subpath of your site, e.g. /blog 28 | url: "https://dannguyen.github.io" # the base hostname & protocol for your site, 29 | fullindex_path: fullindex 30 | 31 | twitter_username: dancow 32 | github_username: dannguyen 33 | repository: dannguyen/datajournalism-primer 34 | # Build settings 35 | plugins: 36 | - jekyll-feed 37 | 38 | collections_dir: my_collections 39 | collections: 40 | clusters: 41 | permalink: /:name 42 | output: true 43 | order: 44 | - community.html 45 | - outlets.html 46 | - stories.html 47 | - interactives.html 48 | - resources.html 49 | - datasets.html 50 | 51 | # Exclude from processing. 52 | # The following items will not be processed, by default. 53 | # Any item listed under the `exclude:` key here will be automatically added to 54 | # the internal "default list". 55 | # 56 | # Excluded items can be processed by explicitly listing the directories or 57 | # their entries' file path in the `include:` list. 58 | # 59 | # exclude: 60 | # - .sass-cache/ 61 | # - .jekyll-cache/ 62 | # - gemfiles/ 63 | # - Gemfile 64 | # - Gemfile.lock 65 | # - node_modules/ 66 | # - vendor/bundle/ 67 | # - vendor/cache/ 68 | # - vendor/gems/ 69 | # - vendor/ruby/ 70 | 71 | 72 | 73 | 74 | # Sass/SCSS 75 | sass: 76 | sass_dir: _sass 77 | style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style 78 | 79 | 80 | 81 | # defaults: 82 | # - scope: 83 | # path: "assets/images" 84 | # values: 85 | # image: true 86 | -------------------------------------------------------------------------------- /_data/_schemas/_cluster-schema.yaml: -------------------------------------------------------------------------------- 1 | layout: cluster 2 | title: Cluster Template 3 | description: | 4 | Lorem ipsum TK TK 5 | 6 | 7 | # tk: specify name, use :name for cluster_folder 8 | cluster_folder: outlets 9 | 10 | 11 | -------------------------------------------------------------------------------- /_data/_schemas/_curation-schema.yaml: -------------------------------------------------------------------------------- 1 | title: Curation Title 2 | description: | 3 | SEO friendly brief general description TK Lorem ipsum dolor sit amet, consectetur adipisicing elit. 4 | 5 | sortorder: 0 # number to sort in ascending order 6 | # must follow item schema 7 | items: 8 | - title: BuzzFeedNews 9 | url: https://buzzfeednews.com 10 | 11 | 12 | -------------------------------------------------------------------------------- /_data/_schemas/_item-schema.yaml: -------------------------------------------------------------------------------- 1 | """ 2 | Official data schema for items 3 | """ 4 | 5 | 6 | # Note: we assume an item is in a list of items, hence `- title:` 7 | 8 | ### REQUIRED ATTRIBUTES 9 | # articles should be appended to proper noun, for alphabetization purposes 10 | - title: Thing, The 11 | url: https://example.com/article/item/permalink.html 12 | ## /REQUIRED 13 | displaytitle: Pudding, Thing 14 | 15 | # used to denote a canonical anchor on fullindex, e.g. fullindex#reflink-internal-canonical-anchorname 16 | reflink: internal-canonical-anchorname 17 | 18 | 19 | blurb: SEO friendly description of the thing. No markdown. Assumed to be taken verbatim from source (?). Used as a deck. 20 | 21 | description: | 22 | Long-form description written by me. If it exists, it is used *in lieu* of the blurb. Markdown allowed 23 | 24 | 25 | publishmeta: 26 | date: 2020-02-20 # iso format, partial dates ok, e.g. 2020 and 2020-11 27 | publisher: 28 | name: Publisher Name 29 | url: https://publisher-homepage.com 30 | authors: 31 | - name: Firstname Lastname, Suffix 32 | url: https://publisher-homepage.com/author 33 | 34 | images: 35 | thumbnail: 36 | path: /static/images/items/thumbnails/SOMETHING.png 37 | 38 | 39 | # examples are lightweight items; most typically used when an item is a full-fledged site, e.g. Source OpenNews, to let reader get a preview via illustrative examples. For stories, can also point to non-appendix meta material, like PDF versions, or slide presentations, etc. by the same author/publisher 40 | examples: 41 | - title: Example Story 1 42 | url: https://differentexample.com/yadayda 43 | description: | 44 | A good example of how this site does a story 45 | 46 | - title: Showing my Work in Jupyter 47 | url: https://github.com/whasdfkljasdklfj/notebooks/jupyter5.ipnyb 48 | description: | 49 | Showing regression analysis done on puppies using pandas 50 | # can use reftarget to specify a canonical reflink; i.e. a link to an item as it appears on the site fullindex 51 | - reftarget: an-item-reflink 52 | title: Still Need to Include a Title 53 | 54 | 55 | excerpt: | 56 | verbatim copy. markdown NOT allowed. 200-300 words max please. 57 | 58 | 59 | 60 | # same as examples, but points to articles/resources not affiliated with the item source, such as commentary 61 | external_references: 62 | - title: Another Essay About Impact 63 | url: https://example.outsidesite.com/impact 64 | description: | 65 | 50 puppies were saved by this story. Here's their oral history. 66 | 67 | # specialized urls 68 | # only one of each 69 | # repo: points to a git or other source repository 70 | # methodology: points to an "official" writeup for methodologies 71 | appendixmeta: 72 | repo: 73 | url: https://github.com/STUFF/HELLO 74 | description: | 75 | Contains Python and R, and PDF conversions 76 | 77 | methodology: 78 | url: https://sciencestuff12345.com/methods/story9.html 79 | title: Using Arithmetic To Find Truth 80 | 81 | 82 | 83 | #################### 84 | 85 | # minimal version 86 | 87 | """ 88 | 89 | 90 | - title: THE_TITLE 91 | url: THE_HTTP_PAGE 92 | 93 | description: | 94 | SEO_DESCRIPTION 95 | 96 | summary: | 97 | MANUAL_DESCRIPTION 98 | 99 | publishmeta: 100 | date: 2020_DATE_DATE 101 | publisher: 102 | name: PUBLISHER 103 | url: PUBLISHER_HOMEPAGE 104 | authors: 105 | - name: FIRSTNAME_LASTNAME 106 | url: AUTHOR_PAGE 107 | 108 | 109 | """ 110 | -------------------------------------------------------------------------------- /_data/_stubs/books.yaml: -------------------------------------------------------------------------------- 1 | - title: The Great Gatsby 2 | pages: 1932 3 | 4 | - title: Jack and Jill 5 | pages: 1984 6 | -------------------------------------------------------------------------------- /_data/_stubs/games.yaml: -------------------------------------------------------------------------------- 1 | - title: Super Mario Brothers 2 | year: 1980 3 | 4 | - title: Adventure 5 | 6 | 7 | - title: Katamari Damacy 8 | year: 2001 9 | -------------------------------------------------------------------------------- /_data/curations/community/discussions.yaml: -------------------------------------------------------------------------------- 1 | title: Discussion groups and forums 2 | description: | 3 | Discussion groups, including mailing lists and Slack chats. 4 | sortorder: 4 5 | 6 | items: 7 | - title: NICAR-L 8 | reflink: nicar-l 9 | url: https://www.ire.org/resource-center/listservs/subscribe-to-nicar-l 10 | blurb: | 11 | A forum for the discussion of subjects related to computer-assisted reporting. It also acts as a posting board for new developments at NICAR, including seminar announcements and database information. Possibly the most active journalism-related listserv. 12 | 13 | - title: Rjournos 14 | url: https://groups.google.com/forum/#!forum/rjournos 15 | blurb: | 16 | A Google Group for journalists using R. Invite-only membership (to reduce spam) 17 | 18 | 19 | - title: r/datasets 20 | url: https://www.reddit.com/r/datasets/ 21 | 22 | - title: r/dataisbeautiful 23 | url: https://www.reddit.com/r/dataisbeautiful/ 24 | -------------------------------------------------------------------------------- /_data/curations/community/jobs.yaml: -------------------------------------------------------------------------------- 1 | title: Job Boards 2 | description: | 3 | Where to find work. Are there enough of these though (tailored to data journalism) 4 | 5 | items: 6 | - title: "NewsNerdery #jobs" 7 | url: "https://newsnerdery.slack.com/messages/jobs/" 8 | 9 | - title: IRE Job Center 10 | url: https://www.ire.org/jobs 11 | blurb: | 12 | Investigative Reporters and Editors and the National Institute for Computer-Assisted Reporting host an active website for some of the best-trained and highest-profile journalists in the world. 13 | 14 | - title: Source OpenNews Jobs 15 | url: https://source.opennews.org/jobs/ 16 | 17 | - title: Google Job Search for 'data journalist' 18 | url: "https://www.google.com/search?q=data+journalism&ibp=htl;jobs&htivrt=jobs" 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /_data/curations/community/newsletters.yaml: -------------------------------------------------------------------------------- 1 | title: Newsletters 2 | description: | 3 | news but by email 4 | 5 | items: 6 | - title: Data is Plural 7 | url: https://tinyletter.com/data-is-plural 8 | blurb: A weekly newsletter of useful/curious datasets. 9 | 10 | publishmeta: 11 | authors: 12 | - name: Jeremy Singer-Vine 13 | url: https://www.jsvine.com/ 14 | examples: 15 | - title: Structured archive 16 | url: https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit 17 | images: 18 | thumbnail: 19 | path: static/images/items/thumbnails/data-is-plural.png 20 | 21 | 22 | - title: Numlock News 23 | url: https://numlock.substack.com/ 24 | blurb: | 25 | Other people cover U.S. politics to death, and you can get that elsewhere, so this newsletter focuses on the bigger stories going on in the background you’re missing. 26 | 27 | publishmeta: 28 | authors: 29 | - name: Walt Hickey 30 | url: https://twitter.com/WaltHickey 31 | -------------------------------------------------------------------------------- /_data/curations/community/organizations.yaml: -------------------------------------------------------------------------------- 1 | title: Organizations 2 | description: | 3 | Professional organizations and etc. TK 4 | sortorder: 42 5 | 6 | 7 | items: 8 | - title: National Institute of Computer-Assisted Reporting (NICAR) 9 | url: https://www.ire.org/nicar/ 10 | blurb: | 11 | The National Institute for Computer-Assisted Reporting maintains a library of federal databases, employs journalism students, and trains journalists in the practical skills of getting and analyzing electronic information. 12 | images: 13 | thumbnail: 14 | path: static/images/items/thumbnails/ire-nicar-logo.png 15 | 16 | 17 | examples: 18 | - reftarget: nicar-l 19 | title: NICAR-L Mailing List 20 | - title: NICAR 2018 Slides, Links & Tutorials 21 | url: http://blog.chryswu.com/2018/01/23/nicar18-slides-links-tutorials/ 22 | -------------------------------------------------------------------------------- /_data/curations/community/portfolios.yaml: -------------------------------------------------------------------------------- 1 | title: Portfolios of work 2 | description: | 3 | How do data journalism people showcase their work? here you go 4 | 5 | 6 | items: 7 | - title: Matt Waite 8 | url: https://mattwaite.github.io/ 9 | blurb: Professor Of Practice, College Of Journalism And Mass Communications, University Of Nebraska-Lincoln 10 | 11 | - title: Lena Groeger 12 | url: https://lenagroeger.com/ 13 | blurb: A journalist, designer and developer living in the Bay Area. 14 | 15 | 16 | - title: Al Shaw 17 | url: https://shaw.al/ 18 | blurb: Al is a designer, developer and reporter who has been working in digital news for over a decade. 19 | 20 | 21 | - title: Peter Aldhous 22 | url: https://www.peteraldhous.com/index.html 23 | blurb: science journalist 24 | 25 | 26 | - title: Maarten Lambrechts 27 | url: https://www.maartenlambrechts.com/ 28 | blurb: "Data Journalist | Data Designer | Visualization Consultant" 29 | 30 | - title: Ben Welsh 31 | url: https://palewi.re/who-is-ben-welsh/ 32 | blurb: Hello. My name is Ben Welsh. I’m a native Iowan living in Los Angeles. 33 | description: | 34 | A good example of a portfolio that uses mainly text lists to convey the scope of work and experience. 35 | -------------------------------------------------------------------------------- /_data/curations/datasets/catalogs.yml: -------------------------------------------------------------------------------- 1 | title: Data catalogs and search portals 2 | 3 | description: | 4 | Data Portals, basically (TK curation) 5 | 6 | sortorder: 55 7 | items: 8 | - title: Open Data Network 9 | url: https://www.opendatanetwork.com 10 | reflink: open-data-network 11 | blurb: | 12 | lorem ipsum tk 13 | description: | 14 | Search across official city Socrata portals etc etc etc Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum deserunt, exercitationem ad autem placeat debitis vitae earum doloribus laboriosam quaerat ducimus, quisquam repellendus sint culpa dolorem labore officiis maiores. Fuga. 15 | examples: 16 | - title: Search results for police use-of-force incidents, including officer-involved shootings 17 | url: https://opendatanetwork.com/search?q=officer+involved+OR+use+of+force 18 | - title: Datasets categorized as "transportation" 19 | url: https://opendatanetwork.com/search?categories=transportation 20 | 21 | 22 | - title: MuckRock FOI Requests 23 | url: https://www.muckrock.com/foi/list/ 24 | blurb: | 25 | Search all Freedom of Information public records requests made by MuckRock users. 26 | 27 | examples: 28 | - title: All completed requests that contain a file with a `.xlsx` extension 29 | url: https://www.muckrock.com/foi/list/?page=1&per_page=100&file_types=xlsx&status=done 30 | 31 | 32 | 33 | - title: Google Dataset Search 34 | url: https://datasetsearch.research.google.com/ 35 | description: | 36 | A search tool from Google that [left beta in early 2020](https://www.blog.google/products/search/discovering-millions-datasets-web/). 37 | 38 | 39 | - title: Data.gov.uk 40 | url: https://data.gov.uk/ 41 | blurb: TK 42 | description: | 43 | Maybe the biggest and most well-organized public data repository. 44 | 45 | 46 | - title: ProPublica Data Store 47 | url: https://www.propublica.org/datastore/ 48 | -------------------------------------------------------------------------------- /_data/curations/datasets/topical-datasets.yml: -------------------------------------------------------------------------------- 1 | title: Specific topical datasets 2 | 3 | description: | 4 | A shortlist of very interesting, or at least, very detailed public datasets across a variety of specific topics and beats. 5 | 6 | sortorder: 1000 7 | 8 | items: 9 | 10 | - title: California Public Sector Salaries 11 | url: https://transparentcalifornia.com/ 12 | blurb: | 13 | Independent site with the largest and most detailed public pay and pension database for California public employees, including state, city, county, and school district levels. 14 | 15 | 16 | - title: FEC Campaign Finance Data 17 | url: https://www.fec.gov/data/ 18 | blurb: | 19 | money money 20 | examples: 21 | - title: Bulk Data 22 | url: https://www.fec.gov/data/browse-data/?tab=bulk-data 23 | 24 | 25 | - title: Coronavirus (Covid-19) Data in the United States 26 | url: https://github.com/nytimes/covid-19-data 27 | blurb: | 28 | The New York Times is releasing a series of data files with cumulative counts of coronavirus cases in the United States, at the state and county level, over time. We are compiling this time series data from state and local governments and health departments in an attempt to provide a complete record of the ongoing outbreak. 29 | 30 | 31 | publishmeta: 32 | date: 2020-03-27 33 | publisher: 34 | name: New York Times 35 | url: https://www.nytimes.com 36 | 37 | examples: 38 | - title: "We’re Sharing Coronavirus Case Data for Every U.S. County" 39 | url: https://www.nytimes.com/article/coronavirus-county-data-us.html 40 | blurb: | 41 | With no detailed government database on where the thousands of coronavirus cases have been reported, a team of New York Times journalists is attempting to track every case. 42 | 43 | 44 | 45 | # todo: 46 | # - wapo fatal encounters 47 | # - openpayments 48 | # - vice police shootings 49 | 50 | # maybe separate "topical" datasets into those from news outlets and from non-news outlets? 51 | -------------------------------------------------------------------------------- /_data/curations/interactives/newsapps.yaml: -------------------------------------------------------------------------------- 1 | title: News Applications 2 | description: | 3 | news apps tk Lorem ipsum dolor sit amet. Basically, an interactive data site that is tied to a database and returns custom results/pages for the user 4 | 5 | 6 | 7 | items: 8 | - title: "The Next to Die: Watching Death Row" 9 | url: https://www.themarshallproject.org/next-to-die 10 | 11 | 12 | - title: "Nonprofit Explorer: Research Tax-Exempt Organizations" 13 | url: https://projects.propublica.org/nonprofits/ 14 | 15 | 16 | - title: "Credibly Accused" 17 | url: https://projects.propublica.org/credibly-accused/ 18 | blurb: | 19 | Search lists of U.S. Catholic clergy that have been deemed credibly accused of sexual abuse or misconduct. 20 | 21 | 22 | - title: Texas Government Salaries Explorer 23 | url: https://salaries.texastribune.org/ 24 | 25 | 26 | - title: Census Reporter 27 | url: https://censusreporter.org/ 28 | 29 | 30 | - title: "ER Inspector: Find and Evaluate Every Emergency Room Near You" 31 | url: https://projects.propublica.org/emergency/ 32 | 33 | 34 | - title: Fatal Force 35 | url: https://www.washingtonpost.com/graphics/2019/national/police-shootings-2019/ 36 | 37 | 38 | - title: Politifact 39 | url: https://www.politifact.com/ 40 | -------------------------------------------------------------------------------- /_data/curations/interactives/visualizations.yaml: -------------------------------------------------------------------------------- 1 | title: Visualizations 2 | description: | 3 | Cool charts 4 | 5 | items: 6 | 7 | - title: 512 Paths to the White House 8 | url: http://archive.nytimes.com/www.nytimes.com/interactive/2012/11/02/us/politics/paths-to-the-white-house.html 9 | external_references: 10 | - url: https://source.opennews.org/articles/nyts-512-paths-white-house/ 11 | 12 | - title: Complete History of the NBA 13 | url: https://projects.fivethirtyeight.com/complete-history-of-the-nba/ 14 | 15 | 16 | - title: Human Terrain 17 | url: https://pudding.cool/2018/12/3d-cities-story/ 18 | examples: 19 | - url: https://pudding.cool/2018/10/city_3d/ 20 | title: Population Mountains 21 | description: An insightful narrative about the making of Human Terrain 22 | 23 | 24 | - title: 'Why outbreaks like coronavirus spread exponentially, and how to “flatten the curve”' 25 | url: https://www.washingtonpost.com/graphics/2020/world/corona-simulator/ 26 | blurb: | 27 | Without any measures to slow it down, covid-19 will continue to spread exponentially for months. To understand why, it is instructive to simulate the spread of a fake disease through a population. 28 | 29 | external_references: 30 | - url: https://twitter.com/farhip/status/1239695600398020614 31 | title: "Paul Farhi tweets: This story is the most-read ever in the history of our website" 32 | 33 | images: 34 | thumbnail: 35 | path: static/images/items/thumbnails/wapo-covid19-sim.png 36 | 37 | 38 | publishmeta: 39 | date: 2020-03-14 40 | authors: 41 | - name: Harry Stevens 42 | url: https://www.washingtonpost.com/people/harry-stevens/ 43 | -------------------------------------------------------------------------------- /_data/curations/outlets/awards-outlets.yaml: -------------------------------------------------------------------------------- 1 | title: Awards and Compilations 2 | 3 | description: | 4 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi vero nam dolores, quis? Vel quia tempore modi, illum incidunt maxime aperiam accusamus nulla dolore repellendus, odit assumenda temporibus sed alias? 5 | 6 | 7 | items: 8 | - title: Sigma Awards 9 | url: https://datajournalism.com/awards 10 | blurb: | 11 | https://twitter.com/pilhofer/status/1230222608114814977 12 | 13 | - url: https://www.ire.org/awards/philip-meyer-awards 14 | title: NICAR Philip Meyer Awards 15 | 16 | - url: https://www.datajournalismawards.org 17 | title: GEN Data Journalism Awards 18 | blurb: | 19 | Hosted by the Global Editors Network 20 | 21 | Note: GEN – and these awards – went defunct in 2019. 22 | 23 | examples: 24 | - title: 2019 Shortlist 25 | url: https://www.datajournalismawards.org/2019-shortlist/ 26 | 27 | 28 | 29 | - url: https://features.propublica.org/2018-year-in-review/propublica-visual-journalism-data-design-photography-illustration-video/ 30 | title: ProPublica's Year in (Mostly) Visual Journalism 31 | publishmeta: 32 | date: 2019-01-03 33 | -------------------------------------------------------------------------------- /_data/curations/outlets/meta-outlets.yaml: -------------------------------------------------------------------------------- 1 | title: Meta outlets 2 | description: | 3 | Sites about data journalism. 4 | sortorder: 120 5 | 6 | items: 7 | - title: Source OpenNews 8 | url: https://source.opennews.org/ 9 | blurb: | 10 | Source is an OpenNews project designed to amplify the impact of journalism code and the community of developers, designers, journalists, and editors who make it. 11 | 12 | Incubated at the Mozilla Foundation from 2011-2016, OpenNews is now a project of Community Partners. 13 | 14 | examples: 15 | - title: News Apps Essentials 16 | url: https://source.opennews.org/guides/news-apps-essentials/ 17 | -------------------------------------------------------------------------------- /_data/curations/outlets/news-outlets.yaml: -------------------------------------------------------------------------------- 1 | title: Journalism outlets 2 | description: | 3 | Journalism outlets that have a heavy emphasis on empirical methods and data analysis. 4 | sortorder: 100 5 | items: 6 | 7 | - title: BuzzFeed News 8 | url: https://buzzfeednews.com 9 | examples: 10 | - title: Analysis of New York Gentrification Using 311 Call Data 11 | reftarget: buzzfeed-news-311-gentrification 12 | 13 | - title: FiveThirtyEight 14 | url: https://fivethirtyeight.com/ 15 | 16 | - title: ProPublica 17 | url: https://www.propublica.org/ 18 | 19 | 20 | 21 | 22 | 23 | - title: The Markup 24 | url: https://themarkup.org/ 25 | examples: 26 | - title: About 27 | url: https://themarkup.org/about 28 | -------------------------------------------------------------------------------- /_data/curations/outlets/specialty-outlets.yaml: -------------------------------------------------------------------------------- 1 | title: Specialty sites 2 | description: | 3 | Blogs and other publications more technical and specific to data analysis and visualization, and not necessarily journalism-focused. 4 | 5 | sortorder: 10000 6 | 7 | items: 8 | - title: The Functional Art 9 | url: http://www.thefunctionalart.com/ 10 | blurb: | 11 | Blog by Alberto Cairo 12 | examples: 13 | - title: Alberto Cairo's personal page 14 | url: http://albertocairo.com/ 15 | blurb: | 16 | A convenient place to find Cairo's books and talks. 17 | 18 | 19 | - title: Flowing Data 20 | blurb: | 21 | Blog, with lots of interesting links and lessons, including premium content, by Nathan Yau. 22 | url: https://flowingdata.com/ 23 | 24 | 25 | 26 | - title: Mike Bostock's Blog 27 | blurb: | 28 | lots of good stuff tk 29 | url: https://medium.com/@mbostock 30 | examples: 31 | - title: Command-Line Cartography 32 | url: "https://medium.com/@mbostock/command-line-cartography-part-1-897aa8f8ca2c" 33 | 34 | 35 | - title: ProPublica Nerd Blog 36 | blurb: Secrets for data journalists, developers, newsroom designers, engagement specialists, and more. 37 | url: https://www.propublica.org/nerds/ 38 | 39 | -------------------------------------------------------------------------------- /_data/curations/resources/curriculums.yaml: -------------------------------------------------------------------------------- 1 | title: Curriculums and Syllabi 2 | description: | 3 | Data journalism as taught in schools and workshops 4 | 5 | Some listings here: https://github.com/dannguyen/journalism-syllabi 6 | 7 | items: 8 | - title: Digital Frameworks 9 | url: https://digitalframeworks.github.io/syllabus/ 10 | blurb: An overview of data journalism practice 11 | publishmeta: 12 | date: 2016 13 | publisher: 14 | name: Northwestern University 15 | authors: 16 | - name: David Eads 17 | url: http://www.recoveredfactory.net/ 18 | 19 | 20 | - title: J298 Data Journalism 21 | url: https://ucb-dataj.github.io/2018/ 22 | blurb: This course is for students who want to make finding and reporting stories from data part of their toolkit. 23 | publishmeta: 24 | date: 2018 25 | publisher: 26 | name: UC Berkeley 27 | authors: 28 | - name: Peter Aldhous 29 | - name: Amanda Hickman 30 | 31 | 32 | - title: Algorithms, Lede Program 33 | url: https://github.com/jstray/lede-algorithms 34 | blurb: A course on algorithms used in journalism, for beginning Python programmers 35 | 36 | 37 | - title: School of Data Online Courses 38 | url: https://schoolofdata.org/courses/ 39 | -------------------------------------------------------------------------------- /_data/curations/resources/guides.yaml: -------------------------------------------------------------------------------- 1 | title: Guides 2 | description: | 3 | TK Not quite books, but not quite articles either 4 | 5 | items: 6 | - title: ProPublica Data Style Guide 7 | url: https://github.com/propublica/guides/blob/master/news-apps.md 8 | 9 | - title: Bad Data Guide 10 | url: https://github.com/Quartz/bad-data-guide 11 | 12 | - title: Data literacy tipsheet 13 | url: https://mjwebster.github.io/DataJ/Other/DataLiteracy.pdf 14 | 15 | - title: Excel Magic 16 | url: https://mjwebster.github.io/DataJ/tipsheets/ExcelMagic.pdf 17 | -------------------------------------------------------------------------------- /_data/curations/resources/indepth.yaml: -------------------------------------------------------------------------------- 1 | title: Books and Indepth References 2 | sortorder: 100 3 | description: | 4 | Dedicated, in-depth online references, such as books. 5 | 6 | items: 7 | - url: https://datajournalism.com/ 8 | title: Data Journalism Handbook 9 | 10 | - title: investigate.ai 11 | url: https://investigate.ai/ 12 | blurb: Practical data science for journalists (and everyone else) 13 | 14 | 15 | - title: R for Journalists 16 | url: https://learn.r-journalism.com/en/ 17 | blurb: | 18 | This course is designed to give you a sense of all the possibilities from programming in R. 19 | 20 | It’ll emphasize packages that will help you do data analysis and visualization. 21 | 22 | 23 | - title: Sports Data Analysis 24 | url: http://mattwaite.github.io/sports/ 25 | blurb: Code, data, visuals and the Tidyverse for journalists and other storytellers 26 | date: 2019 27 | 28 | appendixmeta: 29 | repo: 30 | url: https://github.com/mattwaite/sportsdatabook 31 | 32 | - title: Math with Spreadsheets for Beginning Reporters 33 | url: https://mattwaite.github.io/mathanddata/ 34 | blurb: A walkthrough of some basic math concepts, how to apply them in a spreadsheet, and how to turn that into a story. 35 | publishmeta: 36 | date: 2020 37 | authors: 38 | - name: Matt Waite 39 | 40 | 41 | - title: Learn machine learning with free hands-on videos 42 | url: https://qz.ai/journalists-learn-machine-learning-with-free-videos/ 43 | publishmeta: 44 | date: 2020-03-04 45 | authors: 46 | - name: John Keefe 47 | url: https://qz.ai/author/jkeefe/ 48 | -------------------------------------------------------------------------------- /_data/curations/resources/listicles.yaml: -------------------------------------------------------------------------------- 1 | title: Listicles 2 | description: | 3 | Even more lists and compilations. An appendix of sorts. 4 | 5 | 6 | items: 7 | - title: Data Journalism Resources from the NICAR 2019 Conference 8 | url: http://www.machlis.com/nicar19.html 9 | publishmeta: 10 | date: 2019-03-12 11 | -------------------------------------------------------------------------------- /_data/curations/resources/repos.yaml: -------------------------------------------------------------------------------- 1 | title: Repos 2 | description: | 3 | A selection of open source repositories of data and analysis. Or maybe it should just be news orgs? 4 | 5 | 6 | items: 7 | - title: BuzzFeedNews/everything 8 | url: https://github.com/BuzzFeedNews/everything 9 | 10 | 11 | - title: the-pudding/data 12 | url: https://github.com/the-pudding/data 13 | blurb: Data sets created for stories on The Pudding, open to the public. 14 | 15 | 16 | - title: associatedpress 17 | url: https://github.com/associatedpress 18 | 19 | 20 | - title: fivethirtyeight/data 21 | url: https://github.com/fivethirtyeight/data 22 | -------------------------------------------------------------------------------- /_data/curations/resources/tools.yaml: -------------------------------------------------------------------------------- 1 | title: Tools 2 | description: | 3 | A shortlist of tools; not so much an exhaustive reference but an illustration of the kind of things data journalists typically need to do day-to-day TK 4 | 5 | 6 | items: 7 | 8 | - title: Datawrapper 9 | url: https://www.datawrapper.de/ 10 | blurb: | 11 | Why us? Because we empower everyone to create beautiful charts, maps and tables. Including you. 12 | images: 13 | thumbnail: 14 | path: static/images/items/thumbnails/datawrapper.png 15 | 16 | 17 | - title: JupyterLab/Notebook 18 | description: | 19 | The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more. 20 | url: https://jupyter.org/ 21 | images: 22 | thumbnail: 23 | path: static/images/items/thumbnails/jupyter-notebook.png 24 | 25 | 26 | - title: Klaxon 27 | description: | 28 | This web-based program enables reporters and editors to monitor scores of websites, including data-heavy governmental or corporate sites, for newsworthy changes. 29 | url: https://github.com/themarshallproject/klaxon 30 | examples: 31 | - url: https://www.themarshallproject.org/2016/09/26/the-marshall-project-launches-klaxon 32 | title: The Marshall Project Launches Klaxon 33 | 34 | 35 | - title: Observable 36 | url: https://observablehq.com 37 | examples: 38 | - url: https://observablehq.com/@observablehq/observable-for-jupyter-users 39 | title: Observable for Jupyter Users 40 | images: 41 | thumbnail: 42 | path: static/images/items/thumbnails/observable.png 43 | 44 | - title: RStudio 45 | url: https://rstudio.com/ 46 | blurb: | 47 | RStudio is an integrated development environment (IDE) for R. It includes a console, syntax-highlighting editor that supports direct code execution, as well as tools for plotting, history, debugging and workspace management. 48 | images: 49 | thumbnail: 50 | path: static/images/items/thumbnails/rstudio.png 51 | 52 | 53 | 54 | - title: agate 55 | url: https://github.com/wireservice/agate 56 | blurb: | 57 | A Python data analysis library that is optimized for humans instead of machines. 58 | images: 59 | thumbnail: 60 | path: static/images/items/thumbnails/agate.png 61 | 62 | 63 | 64 | - title: Tabula 65 | url: https://tabula.technology/ 66 | images: 67 | thumbnail: 68 | path: static/images/items/thumbnails/tabula.png 69 | 70 | 71 | - title: OpenRefine 72 | url: https://openrefine.org/ 73 | images: 74 | thumbnail: 75 | path: static/images/items/thumbnails/openrefine.png 76 | 77 | - title: Datasette 78 | url: https://datasette.readthedocs.io/en/stable/ 79 | appendixmeta: 80 | repo: 81 | url: https://github.com/simonw/datasette 82 | 83 | - title: DataKit 84 | url: http://datakit.ap.org/ 85 | examples: 86 | - title: "AP’s DataKit: Helping teams collaborate efficiently" 87 | url: https://www.rjionline.org/stories/ap-datakit-intro 88 | 89 | 90 | - title: Apache Tika 91 | url: https://tika.apache.org/ 92 | 93 | 94 | - title: csvkit 95 | url: https://csvkit.readthedocs.io/en/latest/ 96 | 97 | - title: xsv 98 | url: https://github.com/BurntSushi/xsv 99 | blurb: | 100 | Slimmer functionality compared to csvkit, but much faster. 101 | 102 | - title: ripgrep 103 | url: https://github.com/BurntSushi/ripgrep 104 | blurb: | 105 | ripgrep recursively searches directories for a regex pattern 106 | 107 | -------------------------------------------------------------------------------- /_data/curations/resources/tutorials.yaml: -------------------------------------------------------------------------------- 1 | title: Tutorials 2 | description: Technical walkthroughs 3 | 4 | items: 5 | - title: A Gentle Introduction to SQL Using SQLite 6 | url: https://a-gentle-introduction-to-sql.readthedocs.io/ 7 | blurb: | 8 | This tutorial was crafted by Troy Thibodeaux as a human-friendly introduction to the world of databases and SQL. It introduces database skills from the ground up using SQLite and a small set of data from the world of campaign finance. 9 | images: 10 | thumbnail: 11 | path: static/images/items/thumbnails/gentle-sqlite.png 12 | appendixmeta: 13 | repo: 14 | url: https://github.com/zstumgoren/gentle-intro-to-sql 15 | 16 | 17 | - title: First News App 18 | url: https://first-news-app.readthedocs.io/en/latest/ 19 | blurb: | 20 | This tutorial will walk you through the process of building an interactive data visualization from a structured dataset. 21 | images: 22 | thumbnail: 23 | path: static/images/items/thumbnails/first-news-app.png 24 | 25 | 26 | 27 | - title: First Python Notebook 28 | url: https://www.firstpythonnotebook.org 29 | blurb: | 30 | This textbook will guide you through an investigation of money in politics using data from the California Civic Data Coalition. 31 | images: 32 | thumbnail: 33 | path: static/images/items/thumbnails/first-notebook.png 34 | 35 | 36 | - title: First Graphics App 37 | url: https://www.firstgraphics.app 38 | description: | 39 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus sequi ad placeat libero, modi quasi odio minima vitae. Sequi, consequatur? Optio ipsum molestias ea fugiat ex! Vero architecto eveniet quidem! 40 | images: 41 | thumbnail: 42 | path: static/images/items/thumbnails/first-graphicsapp.jpg 43 | 44 | 45 | - title: Beginner Excel tutorial 46 | url: http://mjwebster.github.io/DataJ/BeginnerExcel.html 47 | description: | 48 | Lorem ipsum Dolorum dolor, enim impedit sint molestiae aspernatur, doloribus laboriosam maxime, ea delectus suscipit! Sapiente vero fugiat 49 | images: 50 | thumbnail: 51 | path: static/images/items/thumbnails/excel-beginners-maryjo.png 52 | 53 | 54 | - title: Regex hands-on at NICAR 2017 55 | url: https://docs.google.com/document/d/1ZO82KCawFoNMrBRxbIcxYwhqK5oUiayCoqAVxPWw-2A 56 | description: | 57 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero numquam officia at laboriosam minima quis pariatur nesciunt. Dicta animi labore, maiores cum mollitia harum officiis ut qui quasi. Obcaecati, at. 58 | publishmeta: 59 | authors: 60 | - name: Justin Myers 61 | url: https://twitter.com/myersjustinc 62 | examples: 63 | - title: NICAR slides version 64 | url: https://docs.google.com/presentation/d/1a470uB1A0Bi65fUfa-n7J0cgRnU_hXZimA3eqCYeq1M 65 | images: 66 | thumbnail: 67 | path: static/images/items/thumbnails/regex-hands-on-2017.png 68 | 69 | 70 | 71 | - title: SQL Murder Mystery 72 | url: http://mystery.knightlab.com/ 73 | blurb: | 74 | The SQL Murder Mystery is designed to be both a self-directed lesson to learn SQL concepts and commands and a fun game for experienced SQL users to solve an intriguing crime. 75 | images: 76 | thumbnail: 77 | path: static/images/items/thumbnails/sql-murder-mystery.png 78 | -------------------------------------------------------------------------------- /_data/curations/stories/essays.yaml: -------------------------------------------------------------------------------- 1 | title: Essays 2 | description: | 3 | How-do-you-Do TK 4 | 5 | 6 | items: 7 | - title: Connecting with the Dots 8 | url: https://source.opennews.org/articles/connecting-dots/ 9 | blurb: | 10 | Jake Harris on data visualization, empathy, and representing people with dots 11 | publishmeta: 12 | authors: 13 | - name: Jacob Harris 14 | 15 | 16 | - title: What the Fox Knows 17 | url: https://fivethirtyeight.com/features/what-the-fox-knows/ 18 | blurb: | 19 | FiveThirtyEight is a data journalism organization. Let me explain what we mean by that, and why we think the intersection of data and journalism is so important. 20 | publishmeta: 21 | authors: 22 | - name: Nate Silver 23 | date: 2014-03-17 24 | 25 | 26 | - title: Design Principles for News Apps & Graphics 27 | url: https://source.opennews.org/articles/design-principles-news-apps-graphics/ 28 | blurb: | 29 | Lena Groeger’s lowdown on how to apply classic design principles to your newfangled interactive graphics and apps 30 | publishmeta: 31 | authors: 32 | - name: Lena Groeger 33 | url: https://source.opennews.org/people/lena-groeger/ 34 | date: 2013-05-30 35 | 36 | 37 | - title: "Building a Database From Scratch: Behind the Scenes With Documenting Hate Partners" 38 | url: https://www.propublica.org/nerds/building-a-database-from-scratch-behind-the-scenes-with-documenting-hate-partners 39 | publishmeta: 40 | authors: 41 | - name: Rachel Glickhouse 42 | url: https://www.propublica.org/people/rachel-glickhouse 43 | date: 2019-10-23 44 | 45 | 46 | - title: How We Helped Our Reporters Learn to Love Spreadsheets 47 | url: https://open.nytimes.com/how-we-helped-our-reporters-learn-to-love-spreadsheets-adc43a93b919 48 | publishmeta: 49 | date: 2019-06-12 50 | publisher: 51 | name: NYT Open 52 | url: https://open.nytimes.com/ 53 | 54 | 55 | - title: How to Prepare for an Engineering Interview at The New York Times 56 | url: https://open.nytimes.com/how-to-prepare-for-an-engineering-interview-at-the-new-york-times-83f4ee6a68b5 57 | publishmeta: 58 | date: 2020-01-30 59 | publisher: 60 | name: NYT Open 61 | url: https://open.nytimes.com/ 62 | 63 | 64 | - title: Mapping coronavirus, responsibly 65 | url: https://www.esri.com/arcgis-blog/products/product/mapping/mapping-coronavirus-responsibly/ 66 | 67 | - title: A data designer’s responsibility during a global crisis 68 | url: https://vanschneider.com/a-data-designers-responsibility-during-a-global-crisis 69 | blurb: | 70 | As designers, we have a responsibility to visualize information in a simple, accurate and easy-to-understand way. This couldn’t be more true for designers reporting the news during this global crisis. 71 | publishmeta: 72 | date: 2020-03-25 73 | authors: 74 | - url: https://vanschneider.com/ 75 | name: Tobias van Schneider 76 | images: 77 | thumbnail: 78 | path: static/images/items/thumbnails/vanschneider-datadesign-resp.png 79 | 80 | -------------------------------------------------------------------------------- /_data/curations/stories/explorations.yaml: -------------------------------------------------------------------------------- 1 | title: Explorations 2 | description: | 3 | Longform explorations with data 4 | sortorder: 100 5 | 6 | items: 7 | - title: They Played Dominoes Outside Their Apartment For Decades. Then The White People Moved In And Police Started Showing Up. 8 | reflink: buzzfeed-news-311-gentrification 9 | url: https://www.buzzfeednews.com/article/lamvo/gentrification-complaints-311-new-york 10 | blurb: | 11 | “This used to be a bad neighborhood.” Two areas of New York City that have recently gentrified have a corresponding high rate of quality-of-life complaints, which sometimes draws police attention. 12 | 13 | 14 | description: | 15 | Most 311 data investigations are frivoulous if not outright flawed. Here's one that works within the limits and weaknesses of the data to tell an important story about racial tensions and gentrification. TK. 16 | 17 | 18 | 19 | publishmeta: 20 | date: 2018-06-29 21 | publisher: 22 | name: BuzzFeed News 23 | url: https://www.buzzfeednews.com/ 24 | authors: 25 | - name: Lam Thuy Vo 26 | url: https://www.buzzfeednews.com/author/lamvo 27 | 28 | 29 | 30 | # examples are lightweight items; most typically used when an item is a full-fledged site, e.g. Source OpenNews, to let reader get a preview via illustrative examples. For stories, can also point to non-appendix meta material, like PDF versions, or slide presentations, etc. by the same author/publisher 31 | examples: 32 | - title: "Jupyter Notebook: Analyzing ACS 2016 and standardized decennial Census data from 2000" 33 | url: https://github.com/BuzzFeedNews/2018-06-nyc-311-complaints-and-gentrification/blob/master/notebooks/02-gentrification_measure_and_race_analysis.ipynb 34 | blurb: | 35 | This script combines and analyzes data from the 5-year estimates of the American Community Survey (2012-2016) and standardized decennial Census data from the US2010 Longitudinal Tract Data Base. 36 | 37 | 38 | 39 | excerpt: | 40 | A BuzzFeed News data analysis shows there has been a dramatic increase in 311 quality-of-life complaints on the block starting in 2015, the majority about noise. The uptick coincides with the neighborhood’s gentrification, with more white people moving in, and homes getting more expensive. And while not every 311 call results in a visit from the cops, officers from the local precinct do respond when they’re not handling emergencies. 41 | 42 | None of the interactions between police and residents on this Harlem block, on West 136th Street between Broadway and Riverside Drive, have gone viral like #PermitPatty, who called police because a nonwhite girl was “illegally selling water.” Or the black woman detained in California for not smiling at a white neighbor. Or the white woman who called police because black people were having a barbecue. Or the black firefighter who had the cops called on him while doing routine safety inspections in an upscale neighborhood. 43 | 44 | But they do have something in common. These viral incidents, on a national scale, and what’s happening locally on 136th Street show how people are quick to call authorities for harmless behavior by minorities. The resulting interactions can result in anything from a calm exchange to potential arrests. 45 | 46 | 47 | 48 | 49 | # same as examples, but points to articles/resources not affiliated with the item source, such as commentary 50 | external_references: 51 | - title: Gentrification Report Methodology 52 | url: http://www.governing.com/gov-data/gentrification-report-methodology.html 53 | blurb: | 54 | A heuristic for determining gentrification in Census tracts. 55 | 56 | # specialized urls 57 | # only one of each 58 | # repo: points to a git or other source repository 59 | # methodology: points to an "official" writeup for methodologies 60 | appendixmeta: 61 | repo: 62 | url: https://github.com/BuzzFeedNews/2018-06-nyc-311-complaints-and-gentrification 63 | blurb: | 64 | NYC 311 complaints and demographic analysis 65 | 66 | methodology: 67 | url: "https://github.com/BuzzFeedNews/2018-06-nyc-311-complaints-and-gentrification#gentrification-methodology" 68 | title: Gentrification Methodology 69 | excerpt: | 70 | The gentrification measure was adopted from a methodology devised by Governing Magazine (which in turn is similar to the definition from a Columbia University study ). It includes analysis of median income, median home value and educational attainment data. 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /_data/curations/stories/investigations.yaml: -------------------------------------------------------------------------------- 1 | title: Investigations 2 | description: | 3 | Using data to comfort the afflicted and/or afflict the comforted 4 | sortorder: 150 5 | items: 6 | - title: "Suckers List: How Allstate’s Secret Auto Insurance Algorithm Squeezes Big Spenders" 7 | url: https://themarkup.org/allstates-algorithm/2020/02/25/car-insurance-suckers-list 8 | blurb: | 9 | Insurers are supposed to price based on risk, but Allstate’s algorithm put a thumb on the scale 10 | 11 | publishmeta: 12 | publisher: The Markup 13 | date: 2020-02-25 14 | authors: 15 | - name: Maddy Varner 16 | url: https://themarkup.org/people/maddy-varner 17 | - name: Aaron Sankin 18 | url: https://themarkup.org/people/aaron-sankin 19 | 20 | 21 | images: 22 | thumbnail: 23 | path: static/images/items/thumbnails/markup-allstate-algorithm.jpg 24 | 25 | tags: 26 | programming-languages: 27 | - Python 28 | - R 29 | techniques: 30 | - pdf-extraction 31 | - decision-trees 32 | - regressions 33 | 34 | excerpt: | 35 | Seven years ago, Allstate Corporation told Maryland regulators it was time to update its auto insurance rates. The insurer said its new, sophisticated risk analysis showed it was charging nearly all of its 93,000 Maryland customers outdated premiums. Some of the old rates were off by miles. One 36-year-old man from Prince George’s County, Md., who Allstate said in public records should have been paying $3,750 every six months, was instead being charged twice that, more than $7,500. Other customers were paying hundreds or thousands of dollars less than they should have been, based on Allstate’s new calculation of the risk that they would file a claim. 36 | 37 | appendixmeta: 38 | repo: 39 | url: https://github.com/the-markup/investigation-allstates-algorithm 40 | blurb: | 41 | Contains Python and R, and PDF conversions 42 | 43 | 44 | 45 | methodology: 46 | url: https://themarkup.org/allstates-algorithm/2020/02/25/show-your-work-car-insurance-suckers-list 47 | title: How We Analyzed Allstate’s Car Insurance Algorithm  48 | excerpt: | 49 | We tested whether Allstate’s personalized pricing algorithm treated customers differently based on non-risk factors by analyzing rare customer-level data we found in documents that were part of a 2013 rate filing submitted for approval and subsequently disapproved by Maryland regulators. This filing provides the most insight into Allstate’s retention model available to the public, with a level of detail that is typically shielded from public view by Allstate and other insurers. 50 | 51 | 52 | 53 | 54 | ########################## 55 | 56 | 57 | 58 | - title: More than a Million Pro-Repeal Net Neutrality Comments were Likely Faked 59 | url: https://hackernoon.com/more-than-a-million-pro-repeal-net-neutrality-comments-were-likely-faked-e9f0e3ed36a6 60 | publishmeta: 61 | date: 2017-11-22 62 | authors: 63 | - name: Jeff Kao 64 | url: https://twitter.com/jeffykao 65 | 66 | examples: 67 | - title: Fighting Disinformation Using NLP 68 | url: https://github.com/j2kao/fcc_nn_research/blob/master/Presentation%20Kao%20MN%20Big%20Data%206-5-2018%20(final).pdf 69 | blurb: | 70 | PDF of slide presentation to Minneanalytics Big Data Conference 2018-06-05 71 | 72 | appendixmeta: 73 | repo: 74 | url: https://github.com/j2kao/fcc_nn_research 75 | 76 | external_references: 77 | - title: "investigate.ai project overview: Detecting bots in FCC comment submissions" 78 | url: https://investigate.ai/fcc-comments/ 79 | 80 | - title: What is the FCC going to do about millions of bot comments during the net neutrality repeal debate? 81 | url: http://www.abajournal.com/magazine/article/fcc_net_neutrality_bots 82 | 83 | 84 | 85 | - title: The Data Sleuths of San José 86 | url: https://foreignpolicy.com/2015/05/27/the-data-sleuths-of-san-jose-costa-rica-corruption/ 87 | blurb: | 88 | How three scrappy Costa Rican reporters used the power of data to bring down a system of sleaze. 89 | 90 | images: 91 | thumbnail: 92 | path: static/images/items/thumbnails/data-slueths-of-san-jose.jpg 93 | 94 | publishmeta: 95 | date: 2015-05-27 96 | publisher: 97 | name: Foreign Policy 98 | url: https://foreignpolicy.com/ 99 | authors: 100 | - name: Christian Caryl 101 | url: https://foreignpolicy.com/author/christian-caryl/ 102 | 103 | 104 | ############# 105 | 106 | 107 | -------------------------------------------------------------------------------- /_data/navigation.yaml: -------------------------------------------------------------------------------- 1 | # redundant with collections but TK 2 | 3 | - title: Home 4 | url: / 5 | header: true 6 | 7 | - title: Full Index 8 | url: /fullindex 9 | header: true 10 | 11 | - title: Resources/Community 12 | url: /resources 13 | 14 | 15 | - title: Stories 16 | url: /stories 17 | 18 | 19 | - title: Educational 20 | url: /educational 21 | 22 | - title: Datasets 23 | url: /datasets 24 | 25 | -------------------------------------------------------------------------------- /_includes/a-reflink.html: -------------------------------------------------------------------------------- 1 | 2 | {{ include.linktitle }} [{{include.reflink}}] 3 | 4 | -------------------------------------------------------------------------------- /_includes/curation-item.html: -------------------------------------------------------------------------------- 1 | {% assign item = include.item %} 2 | 3 | 4 | 5 | 6 | {% assign _generic_anchor = "generic-ref-" | append: item.title | slugify %} 7 | {% assign _item_anchor = _generic_anchor %} 8 | 9 | 10 | 11 | {% if item.reflink %} 12 | {% assign _actual_anchor = 'reflink-' | append: item.reflink %} 13 | {% assign _item_anchor = _actual_anchor %} 14 | 15 | 16 | {% endif %} 17 | 18 | {% assign _item_permalink = site.fullindex_path | append: '#' | append: _item_anchor %} 19 | 20 |
21 |
22 | {% if item.images.thumbnail %} 23 | {% assign _imgpath = item.images.thumbnail.path %} 24 | {% else %} 25 | {% assign _imgpath = 'static/images/items/thumbnails/lorem-ipsum-tk.png' %} 26 | 27 | {% endif %} 28 | 29 | 30 | 31 |
32 |

33 | {{item.title }} 34 |

35 | 36 | 37 | {% if item.publishmeta %} 38 | {% include item-pubmeta.html pubmeta=item.publishmeta %} 39 | {% endif %} 40 | 41 |
42 | 43 | {% if item.description %} 44 | {{ item.description | markdownify }} 45 | {% else %} 46 | {{ item.blurb }} 47 | {% endif %} 48 | 49 | 54 | 55 |
56 | 57 | {% if item.examples %} 58 | 59 | {% include item-examples.html examples=item.examples %} 60 | 61 | {% endif %} 62 |
63 |
64 |
65 | -------------------------------------------------------------------------------- /_includes/curation-section.html: -------------------------------------------------------------------------------- 1 | 2 | {% assign curation = include.curation %} 3 | 4 |
5 |

6 | 7 | {{curation.title }} 8 |

9 | 10 |
11 | {{curation.description | markdownify}} 12 |
13 | 14 | 15 | {% for item in curation.items %} 16 | 17 | {% include curation-item.html content=curation %} 18 | 19 | {% endfor %} 20 |
21 | 22 | -------------------------------------------------------------------------------- /_includes/item-examples.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
Examples
5 | 6 | 25 | 26 |
27 | -------------------------------------------------------------------------------- /_includes/item-pubmeta.html: -------------------------------------------------------------------------------- 1 | 2 | {% assign pubmeta = include.pubmeta %} 3 | 4 |
5 | 6 | {% if pubmeta.date %} 7 | 8 | {{ pubmeta.date | date: '%B %d, %Y' }} 9 | 10 | {% endif %} 11 | 12 | {% if pubmeta.date && pubmeta.authors %} // {% endif %} 13 | 14 | 15 | 16 | 17 | 18 | by 19 | {% for author in pubmeta.authors %} 20 | {{author.name}} 21 | {% endfor %} 22 | 23 | {% if pubmeta.publisher %} 24 | {% if pubmeta.authors %} // {% endif %} 25 | 26 | 27 | 28 | {{pubmeta.publisher.name}} 29 | 30 | {% endif %} 31 | 32 |
33 | -------------------------------------------------------------------------------- /_includes/jekyll-toc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% capture tocWorkspace %} 4 | {% comment %} 5 | Version 1.0.10 6 | https://github.com/allejo/jekyll-toc 7 | 8 | "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe 9 | 10 | Usage: 11 | {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} 12 | 13 | Parameters: 14 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll 15 | 16 | Optional Parameters: 17 | * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC 18 | * class (string) : '' - a CSS class assigned to the TOC 19 | * id (string) : '' - an ID to assigned to the TOC 20 | * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored 21 | * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored 22 | * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list 23 | * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level 24 | * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content 25 | * anchor_class (string) : '' - add custom class(es) for each anchor element 26 | 27 | Output: 28 | An ordered or unordered list representing the table of contents of a markdown block. This snippet will only 29 | generate the table of contents and will NOT output the markdown given to it 30 | {% endcomment %} 31 | 32 | {% capture my_toc %}{% endcapture %} 33 | {% assign orderedList = include.ordered | default: false %} 34 | {% assign minHeader = include.h_min | default: 1 %} 35 | {% assign maxHeader = include.h_max | default: 6 %} 36 | {% assign nodes = include.html | split: ' maxHeader %} 49 | {% continue %} 50 | {% endif %} 51 | 52 | {% if firstHeader %} 53 | {% assign firstHeader = false %} 54 | {% assign minHeader = headerLevel %} 55 | {% endif %} 56 | 57 | {% assign indentAmount = headerLevel | minus: minHeader %} 58 | {% assign _workspace = node | split: '' | first }}>{% endcapture %} 73 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} 74 | 75 | {% assign space = '' %} 76 | {% for i in (1..indentAmount) %} 77 | {% assign space = space | prepend: ' ' %} 78 | {% endfor %} 79 | 80 | {% if include.item_class and include.item_class != blank %} 81 | {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} 82 | {% endif %} 83 | 84 | {% capture heading_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} 85 | {% capture my_toc %}{{ my_toc }} 86 | {{ space }}{{ listModifier }} {{ listItemClass }} [{{ heading_body | replace: "|", "\|" }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} 87 | {% endfor %} 88 | 89 | {% if include.class and include.class != blank %} 90 | {% capture my_toc %}{:.{{ include.class }}} 91 | {{ my_toc | lstrip }}{% endcapture %} 92 | {% endif %} 93 | 94 | {% if include.id %} 95 | {% capture my_toc %}{: #{{ include.id }}} 96 | {{ my_toc | lstrip }}{% endcapture %} 97 | {% endif %} 98 | {% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} 99 | -------------------------------------------------------------------------------- /_includes/site/footer.html: -------------------------------------------------------------------------------- 1 | 49 | 50 | -------------------------------------------------------------------------------- /_includes/site/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {{site.title}} 9 | 10 | {% include site/head_meta.html %} 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /_includes/site/head_meta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% seo %} 6 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /_includes/site/header.html: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /_layouts/base.html: -------------------------------------------------------------------------------- 1 | --- 2 | # Add "layout: compress" here to compress the html code 3 | --- 4 | 5 | {% include site/head.html %} 6 | 7 | 8 | {{ content }} 9 | 10 | 11 | {% include site/footer.html %} 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /_layouts/cluster.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | 8 | 9 | {% assign clusterpage = page %} 10 | 11 | {% assign _rawcurations = site.data.curations[clusterpage.cluster_folder] %} 12 | {% assign curations = "" | split: "," %} 13 | 14 | {% for _rc in _rawcurations %} 15 | {% assign _el = _rc[1] %} 16 | 17 | {% assign curations = curations | push: _el %} 18 | {% endfor %} 19 | 20 | {% assign curations = curations | sort: 'sortorder','last' %} 21 | 22 | 23 |
24 | 25 | 26 | {% for c in curations %} 27 | 28 | {% include curation-section.html curation=c %} 29 | 30 | {% endfor %} 31 | 32 |
33 | 34 | 35 | 36 | 51 | 52 | 70 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | {% include site/header.html %} 5 | 6 | 7 | 8 |
9 |
10 |

11 | {{page.title}} 12 |

13 | 14 |
15 | {{ page.description }} 16 |
17 |
18 |
19 | 20 |
21 |
22 |
23 | {{ content }} 24 |
25 |
26 |
27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 | 6 |
7 | 8 | {{ content }} 9 | 10 | 11 |
12 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ page.date | date: "%-d %B %Y" }} 6 |

{{ page.title }}

7 | 8 |

by {{ page.author | default: site.author }}

9 | 10 | {{content}} 11 | 12 | {% if page.tags %} 13 | tags: {{ page.tags | join: " - " }} 14 | {% endif %} 15 | -------------------------------------------------------------------------------- /_posts/2020-02-18-welcome-to-jekyll.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Welcome to Jekyll!" 4 | date: 2020-02-18 16:57:29 -0600 5 | categories: jekyll update 6 | --- 7 | 8 | 9 | 10 | 11 | 12 | 13 | ## Boiler plate 14 | 15 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. 16 | 17 | Jekyll requires blog post files to be named according to the following format: 18 | 19 | `YEAR-MONTH-DAY-title.MARKUP` 20 | 21 | Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works. 22 | 23 | Jekyll also offers powerful support for code snippets: 24 | 25 | {% highlight ruby %} 26 | def print_hi(name) 27 | puts "Hi, #{name}" 28 | end 29 | print_hi('Tom') 30 | #=> prints 'Hi, Tom' to STDOUT. 31 | {% endhighlight %} 32 | 33 | Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. 34 | 35 | [jekyll-docs]: https://jekyllrb.com/docs/home 36 | [jekyll-gh]: https://github.com/jekyll/jekyll 37 | [jekyll-talk]: https://talk.jekyllrb.com/ 38 | -------------------------------------------------------------------------------- /_sass/bootstrap/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $close-font-size + $alert-padding-x * 2; 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | padding: $alert-padding-y $alert-padding-x; 38 | color: inherit; 39 | } 40 | } 41 | 42 | 43 | // Alternate styles 44 | // 45 | // Generate contextual modifier classes for colorizing the alert. 46 | 47 | @each $color, $value in $theme-colors { 48 | .alert-#{$color} { 49 | @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /_sass/bootstrap/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | @include transition($badge-transition); 17 | 18 | @at-root a#{&} { 19 | @include hover-focus { 20 | text-decoration: none; 21 | } 22 | } 23 | 24 | // Empty badges collapse automatically 25 | &:empty { 26 | display: none; 27 | } 28 | } 29 | 30 | // Quick fix for badges in buttons 31 | .btn .badge { 32 | position: relative; 33 | top: -1px; 34 | } 35 | 36 | // Pill badges 37 | // 38 | // Make them extra rounded with a modifier to replace v3's badges. 39 | 40 | .badge-pill { 41 | padding-right: $badge-pill-padding-x; 42 | padding-left: $badge-pill-padding-x; 43 | @include border-radius($badge-pill-border-radius); 44 | } 45 | 46 | // Colors 47 | // 48 | // Contextual variations (linked badges get darker on :hover). 49 | 50 | @each $color, $value in $theme-colors { 51 | .badge-#{$color} { 52 | @include badge-variant($value); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /_sass/bootstrap/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | list-style: none; 7 | background-color: $breadcrumb-bg; 8 | @include border-radius($breadcrumb-border-radius); 9 | } 10 | 11 | .breadcrumb-item { 12 | // The separator between breadcrumbs (by default, a forward-slash: "/") 13 | + .breadcrumb-item { 14 | padding-left: $breadcrumb-item-padding; 15 | 16 | &::before { 17 | display: inline-block; // Suppress underlining of the separator in modern browsers 18 | padding-right: $breadcrumb-item-padding; 19 | color: $breadcrumb-divider-color; 20 | content: $breadcrumb-divider; 21 | } 22 | } 23 | 24 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 25 | // without `