├── .github └── ISSUE_TEMPLATE.md ├── .gitignore ├── LICENSE ├── README.md ├── archives ├── .gitattributes ├── 2016_03_15_issue_1.pdf ├── 2016_03_30_issue_2.pdf ├── 2016_05_18_issue_3.pdf └── 2016_06_15_issue_4.pdf ├── draft.md ├── images ├── prompt_toolkit.png ├── unnamed-1.png └── unnamed.png ├── newsletter-template.md └── planning ├── intervention-design.png └── newsletter.ipynb /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Jupyter newsletter issues 2 | 3 | Thank you for submitting a story idea for the newsletter, an enhancement, or 4 | a bug. Please fill out the information below as completely as possible. 5 | 6 | ### Issue category 7 | 8 | - [ ] Technical story suggestion (Projects, Releases, Code, Notebooks, etc.) 9 | - [ ] General interest story suggestion (People profiles, conferences, 10 | awards, recognitions, etc.) 11 | - [ ] Newsletter enhancements 12 | - [ ] Newsletter bugs 13 | 14 | ## Story suggestions 15 | 16 | Please enter below a topic, headline, 2 to 4 sentence summary, links to 17 | additional information, and links to images or photos. 18 | 19 | ### Topic: 20 | 21 | *Replace with suggested story topic.* 22 | 23 | ### Headline: 24 | 25 | *Replace with suggested headline.* 26 | 27 | ### Summary of story: 28 | 29 | *Replace with story summary (2 to 4 sentences).* 30 | 31 | ### Link(s) to additional information: 32 | 33 | *Replace with your suggested URL.* 34 | 35 | ``[Link name](https://example.com)`` 36 | 37 | ### Links to images or photos to accompany the story: 38 | 39 | *Replace with your suggested URL.* 40 | 41 | ``[Link name](https://example.com)`` 42 | 43 | ### Other information about the story: 44 | 45 | *Replace with additional information if needed.* 46 | 47 | 48 | ## Newsletter enhancements or bugs 49 | 50 | *Please enter your suggested enhancement or issue here.* 51 | 52 | 53 | 54 | **Thank you!** -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | 55 | # Sphinx documentation 56 | docs/_build/ 57 | 58 | # PyBuilder 59 | target/ 60 | 61 | #Ipython Notebook 62 | .ipynb_checkpoints 63 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Project Jupyter 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of newsletter nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # newsletter 2 | 3 | A repo for the Jupyter Newsletter 4 | 5 | [Jupyter Newsletter](https://newsletter.jupyter.org) is published on Medium on a monthly basis. The publication is managed by Project Jupyter Operations and we welcome ideas for Jupyter related content from the community. To submit a story for consideration create a new issue here: https://github.com/jupyter/newsletter/issues - this will generate a template for you to follow. At a minimum your submission should include a headline and 2-4 sentences that support your headline. If they are available it is ideal to include both a link where the reader can get more information and a photo that represents or enhances your story. Be sure to label the story "topic suggestion". 6 | -------------------------------------------------------------------------------- /archives/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pdf filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /archives/2016_03_15_issue_1.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:07eac5e5cda216b6b63f2100ecc2823b9d45bf4c9af68fb98585f2cd4224b2a7 3 | size 1031673 4 | -------------------------------------------------------------------------------- /archives/2016_03_30_issue_2.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5e98b4398641ebd65b8305d2fb19c7088a11f09da09e1166c4e9b03e82219ea0 3 | size 2639072 4 | -------------------------------------------------------------------------------- /archives/2016_05_18_issue_3.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a0a3797e30b425e5824276b0d616a95b127c44a9213b2a10af390ae46f5c8d85 3 | size 1263669 4 | -------------------------------------------------------------------------------- /archives/2016_06_15_issue_4.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:16a668ea59d17e2a544a6a361e6f9db6efdc4d179733f7f685a549b5b73b2108 3 | size 4331924 4 | -------------------------------------------------------------------------------- /draft.md: -------------------------------------------------------------------------------- 1 | #Jupyter/IPython newsletter for Date. 2 | 3 | 4 | # Misc links to write about: 5 | 6 | 7 | ## prompt_toolkit in Jupyter Console and IPython 8 | 9 | Our two terminal interfaces - Jupyter Console and IPython - have switched from 10 | using readline to [prompt_toolkit](https://pypi.python.org/pypi/prompt_toolkit), 11 | a pure Python library for terminal interaction. Code is now highlighted as you 12 | type, and multi-line editing and pasting are much improved. This should also 13 | make installation easier - we no longer need pyreadline on Windows or 14 | gnureadline on Mac. 15 | 16 | ![Screenshot from IPython with prompt_toolkit](images/prompt_toolkit.png) 17 | 18 | Jupyter Console is the Jupyter terminal frontend, which can communicate with 19 | kernels to run many different languages. IPython is the single-process Python 20 | shell. These changes will arrive in version 5.0 of each package. 21 | 22 | * [IPython pull request](https://github.com/ipython/ipython/pull/9118) 23 | * [Jupyter Console pull request](https://github.com/jupyter/jupyter_console/pull/57) 24 | 25 | ## nbstripout 26 | 27 | People keep reinventing the wheel and write their own [git 28 | filter](https://github.com/adrn/DropOutput/issues/1) that clean-up outputs of 29 | notebook in VCS. While we think that output should be stored – for example to 30 | be rendered ion nbviewer – we understand the needs for such filters: 31 | 32 | 33 | Nice to see Jovyans getting together, and write a tool 34 | that can easily be installed/uninstalled to add git hooks: 35 | 36 | https://github.com/kynan/nbstripout 37 | 38 | ``` 39 | $ pip install nbstripout 40 | $ cd git/repository 41 | $ nbstripout install 42 | ``` 43 | -------------------------------------------------------------------------------- /images/prompt_toolkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jupyter/newsletter/53fb8f7bcf86ab2976e09b79aa0c4d1db51dc27b/images/prompt_toolkit.png -------------------------------------------------------------------------------- /images/unnamed-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jupyter/newsletter/53fb8f7bcf86ab2976e09b79aa0c4d1db51dc27b/images/unnamed-1.png -------------------------------------------------------------------------------- /images/unnamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jupyter/newsletter/53fb8f7bcf86ab2976e09b79aa0c4d1db51dc27b/images/unnamed.png -------------------------------------------------------------------------------- /newsletter-template.md: -------------------------------------------------------------------------------- 1 | # Jupyter Newsletter 1 2 | 3 | ## Featured stories 4 | 5 | ## Featured community member 6 | 7 | ## Latest and greatest 8 | 9 | ## Articles about Jupyter 10 | 11 | ## Upcoming talks and conferences 12 | 13 | -------------------------------------------------------------------------------- /planning/intervention-design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jupyter/newsletter/53fb8f7bcf86ab2976e09b79aa0c4d1db51dc27b/planning/intervention-design.png -------------------------------------------------------------------------------- /planning/newsletter.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "name": "null", 7 | "tags": [] 8 | }, 9 | "source": [ 10 | "# Jupyter Newsletter " 11 | ] 12 | }, 13 | { 14 | "cell_type": "markdown", 15 | "metadata": { 16 | "name": "null", 17 | "tags": [] 18 | }, 19 | "source": [ 20 | "## Goals\n", 21 | "1. To communicate information about the project on a biweekly to monthly timeframe\n", 22 | "2. To offer a place to showcase community members, projects, and applications\n", 23 | "3. To highlight and build awareness about upcoming JupyterDay/JupyterCon events" 24 | ] 25 | }, 26 | { 27 | "cell_type": "markdown", 28 | "metadata": { 29 | "name": "null", 30 | "tags": [] 31 | }, 32 | "source": [ 33 | "## Critical success factors\n", 34 | "\n", 35 | "#### People\n", 36 | "time and bandwidth to effectively implement and sustain\n", 37 | "#### Workflow\n", 38 | "gather content ideas, content creation, create combination of content, deploy content, archive content \n", 39 | "#### Team\n", 40 | "varied talents coming together to create and distribute the communication product\n", 41 | "#### Intervention Design \n", 42 | "- Design for Action\n", 43 | "[How to use design thinking to make great things actually happen](https://www.ideo.com/images/uploads/news/pdfs/DesignForAction.pdf)\n", 44 | "- Adopt principles\n", 45 | "![Image of conclusions](intervention-design.png)\n", 46 | "\n" 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": {}, 52 | "source": [ 53 | "## Pilots\n", 54 | "\n", 55 | "A. Ghost\n", 56 | "\n", 57 | "B. Medium\n", 58 | "\n", 59 | "C. Notebook / Dashboard of notebook content?\n", 60 | "\n", 61 | "Learn from each pilot what works well and what needs improvement. Over time we will iterate to an effective solution." 62 | ] 63 | }, 64 | { 65 | "cell_type": "markdown", 66 | "metadata": {}, 67 | "source": [ 68 | "### Helpful evaluation criteria during a pilot\n", 69 | "- Reader feedback\n", 70 | "- Workflow checklists\n", 71 | "- Team learning curve\n", 72 | "- Team sustainability of a process\n", 73 | "- ...\n", 74 | "- ...\n", 75 | "- ..." 76 | ] 77 | }, 78 | { 79 | "cell_type": "markdown", 80 | "metadata": {}, 81 | "source": [ 82 | "## Moving from pilot to production\n", 83 | "\n", 84 | "A. When is the pilot phase completed?\n", 85 | "> - Once two newsletters are completed in the same manner without heroic efforts by team.\n", 86 | " - Readers are positive about the resulting product.\n", 87 | " \n", 88 | "B. Documentation of the workflow\n", 89 | "> - Checklist\n", 90 | " - Ability to onboard new team members\n", 91 | " \n" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": null, 97 | "metadata": { 98 | "collapsed": true 99 | }, 100 | "outputs": [], 101 | "source": [] 102 | } 103 | ], 104 | "metadata": { 105 | "kernelspec": { 106 | "display_name": "Python 3", 107 | "language": "python", 108 | "name": "python3" 109 | }, 110 | "language_info": { 111 | "codemirror_mode": { 112 | "name": "ipython", 113 | "version": 3 114 | }, 115 | "file_extension": ".py", 116 | "mimetype": "text/x-python", 117 | "name": "python", 118 | "nbconvert_exporter": "python", 119 | "pygments_lexer": "ipython3", 120 | "version": "3.5.1" 121 | } 122 | }, 123 | "nbformat": 4, 124 | "nbformat_minor": 1 125 | } 126 | --------------------------------------------------------------------------------