How we're developing fastai_v1

You mean there will be just one #EXPORT, and everything else under it will be be exported. Otherwise that’s going to be a lot of #EXPORT cells.

Hmm, perhaps it’d be easier to simply have a new notebook for just that? So instead of one long notebook there will be several parts - ala ml1/*rf series? And the last one will always be 00XX-99final.ipynb or something similar. And to convert it to .py we already have tools for that. ipython nbconvert --to=python.
Since it’ll need to have all the imports/dataset loading/etc/, it can’t build upon the earlier parts of the notebook anyway.

So with 001:

  • kill 001b.ipynb (obviously preserving what’s already different)
  • split 001a_nn_basics.ipynb
  • so now we will have:
    001a_nn_basics.ipynb
    001b.ipynb
    001c-final.ipynb

Also, currently nb_001b.py only has functions in it, it doesn’t have a “running code”.
in the first post you wrote:

The net result of all this is that we build up over a few notebooks a complete solution to some problem (such as “create a training loop”, or “do data augmentation”). Once we’ve got a good solution to a whole problem domain (like computer vision), we can combine the various modules build along the way into a well-designed set of one or more modules, which we can then add tests and docs to.

So why does nb_001b.py at the moment have only functions and none of what you wrote above?

and we also need to think about docs and tests as you describe above - do you already have an idea of how this would be implemented - because this information is needed to complete this design issue - can we supply tests/docs using notebook - or somehow have them work side by side - perhaps we can use 001 as a guinea pig and build test/docs right away? (and then not worry about it for the rest if you feel it will delay the development at this stage)

edit: I think I have a better idea. The last notebook will be .py, and .ipynb will be auto-generated from it. I see there have been all kinds of attempts at py2ipynb out there but they require a pretty noisy input (indicating what kind of cell the following code should go to). I was thinking to simply split the code on double new lines to create distinct cells. Or perhaps we could have a simple ###\n tag that will stand for split here… thoughts?