{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# This blog post was written in a Jupyter Notebook\n", "> And then converted to markdown... and then converted to html using Jeckyl.\n", "\n", "- toc: false \n", "- badges: true\n", "- comments: true\n", "- image: images/copied_from_nb/my_icons/wave.png\n", "- categories: [jupyter, blogging, visualisation]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Why should I care?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I think it's kind of cool that you can write text beside snippets of code that _actually run_ and automatically have the output of your code display alongside it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A quick example:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Say I want to describe a function that plots a sine wave at different amplitudes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### First, I would define the function" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "def plot_sin(amplitude=1):\n", " '''Plot a sine wave of a given amplitude'''\n", " time = np.arange(0, 10, 0.1)\n", " y = np.sin(time)\n", " plt.plot(time, amplitude*y)\n", " plt.ylabel('Amplitude')\n", " plt.xlabel('Time (s)')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, just after defining it, I could call it with different arguments and display the outputs alongside any text." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sine wave with the default amplitude of 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_sin()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sine wave with an amplitude of 20" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_sin(amplitude=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All of the above was written and ran within a Jupyter Notebook and automatically formatted for this blogpost.\n", "I didn't have to have some scripts lying around to create the images in the post. \n", "I didn't have to save, upload and link to the images.\n", "I didn't have to worry that the code examples wouldn't run." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also paste images as you would expect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](https://www.scottcondron.com/images/copied_from_nb/my_icons/wave.png \"Source: Wikipedia\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How is that possible?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's a mix and match of a few different tools. \n", "\n", "Namely:\n", "- Jupyter Notebooks\n", "- fast-template\n", "- Github Pages\n", "- Jekyll\n", "- nbdev" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Jupyter Notebooks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'm imagining most people reading this will know what [Jupyter](https://jupyter.org/) Notebooks are. From their website: " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> 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." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### fast-template" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The repo was first created from the [fast-template](https://www.fast.ai/2020/01/16/fast_template/) repo from [fast.ai](www.fast.ai)'s Jeremy Howard. This is a simplified way to generate a blog and host it using [Github Pages](https://pages.github.com/). You can write your posts in [Markdown Language](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax) and when you commit them to your repo, they will be converted to html for your blog using [Jekyll](https://jekyllrb.com/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### nbdev" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[nbdev](https://www.fast.ai/2019/12/02/nbdev/) is a really powerful library which isn't being used to it's fullest potential here. It's a tool to create entire python libraries, a website hosting your documentation and way to automatically run tests... all using Jupyter Notebooks. \n", "\n", "But for this project, it's being used to export output cells and any uploaded attachment from Jupyter Notebooks to markdown using `nbdev_detach *.ipynb` and `nbdev_nb2md` to convert notebooks to markdown. It's also being used to remove metadata from the notebooks during git commits, which helps reducing the change of merge conflicts. That last feature is probably overkill because I don't think I'll be doing a lot of merging." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Github Actions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Last but not least, Github Actions runs all of the above during each commit automatically! See [here](https://github.com/scottire/scottire.github.io/blob/master/.github/workflows/main.yml) for the config. This is mostly taken from nbdev with a few things changed." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Thanks for reading" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you'd like, you can find this blogs github repo [here](https://github.com/scottire/scottire.github.io) or follow me on Twitter [here](https://www.twitter.com/_scottcondron)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A huge thanks to Jeremy Howard at fastai for making fast-template and nbdev which is doing all of the hard work to bring all these tools together!" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" } }, "nbformat": 4, "nbformat_minor": 2 }