SlideShare una empresa de Scribd logo
1 de 64
Descargar para leer sin conexión
Documentation Driven
                          Development
                           Corey Oordt @coordt




Saturday, March 12, 2011
Origins



Saturday, March 12, 2011
I’m writing
                           documentation?!




Saturday, March 12, 2011
What was I thinking?




Saturday, March 12, 2011
Saturday, March 12, 2011
Saturday, March 12, 2011
http://www.onesigmaoff.net/?p=40

Saturday, March 12, 2011
1. Write code
                           2. Write documentation
                           3. Rewrite code


Saturday, March 12, 2011
12. Write documentation
                       21. Write code
                        3. Rewrite code


Saturday, March 12, 2011
Why?

                             RANDOM
                           SPECULATION
                              AHEAD




Saturday, March 12, 2011
The great virtues of a
                               programmer

                           Laziness
                           Impatience
                           Hubris


Saturday, March 12, 2011
http://www.flickr.com/photos/feen/2574309998/in/set-72157605976407357/
Saturday, March 12, 2011
http://www.flickr.com/photos/feen/2574309998/in/set-72157605976407357/
Saturday, March 12, 2011
http://www.flickr.com/photos/feen/2573487059/in/set-72157605976407357/
Saturday, March 12, 2011
http://www.flickr.com/photos/feen/2573487059/in/set-72157605976407357/
Saturday, March 12, 2011
We get functional, but
                            not useable code


Saturday, March 12, 2011
Functional, not Useable




Saturday, March 12, 2011
Functional, not Useable




Saturday, March 12, 2011
The Parable of the
                           Microsoft Engineer




Saturday, March 12, 2011
The Parable of the
                           Microsoft Engineer
                                            It looks like you’re shooting
                                            a target.

                                            Would you like help?

                                                Get help with shooting
                                                the target

                                                Just shoot the target
                                                without help

                                                Don’t show me this tip
                                                again




Saturday, March 12, 2011
The Parable of the
                           Microsoft Engineer
                                            It looks like you’re shooting
                                            a target.

                                            Would you like help?

                                                Get help with shooting
                                                the target

                                                Just shoot the target
                                                without help

                                                Don’t show me this tip
                                                again




Saturday, March 12, 2011
The Parable of the
                           Microsoft Engineer
                                            It looks like you’re shooting
                                            a target.

                                            Would you like help?

                                                Get help with shooting
                                                the target

                                                Just shoot the target
                                                without help

                                                Don’t show me this tip
                                                again




Saturday, March 12, 2011
The Parable of the
                           Microsoft Engineer




Saturday, March 12, 2011
Writing documentation
                       first changes your
                           perspective


Saturday, March 12, 2011
http://www.gravestmor.com/strips/
Saturday, March 12, 2011
http://www.gravestmor.com/strips/
Saturday, March 12, 2011
Don’t document your code,
            code your documentation


Saturday, March 12, 2011
Sometimes
                           coding feels
                            like falling
                           down stairs
                           and landing
                              on your
                                feet
Saturday, March 12, 2011
http://www.flickr.com/photos/zen/2339658529/
Saturday, March 12, 2011
How do I start?



Saturday, March 12, 2011
http://www.flickr.com/photos/hlkljgk/1227416397/sizes/l/in/photostream/
Saturday, March 12, 2011
http://sphinx.pocoo.org/


Saturday, March 12, 2011
Have a default
                                 Sphinx setup
                           Include your favorite template or theme




Saturday, March 12, 2011
Have a default
                            Sphinx setup
                            Customize the conf.py
           import sys, os

           sys.path.append(os.path.abspath('..'))
           import $$$$PROJECT$$$$
           os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'

           extensions = ['sphinx.ext.autodoc']

           project = u'django-$$$$PROJECT$$$$'
           copyright = u'2010, The Washington Times'

           # The short X.Y version.
           version = $$$$PROJECT$$$$.get_version()
           # The full version, including alpha/beta/rc tags.
           release =$$$$PROJECT$$$$.get_version()

Saturday, March 12, 2011
Have a default
                            Sphinx setup
                            Customize the conf.py
           import sys, os

           sys.path.append(os.path.abspath('..'))
           import $$$$PROJECT$$$$
           os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'

           extensions = ['sphinx.ext.autodoc']

           project = u'django-$$$$PROJECT$$$$'
           copyright = u'2010, The Washington Times'

           # The short X.Y version.
           version = $$$$PROJECT$$$$.get_version()
           # The full version, including alpha/beta/rc tags.
           release =$$$$PROJECT$$$$.get_version()

Saturday, March 12, 2011
Have a default
                            Sphinx setup
                            Customize the conf.py
           import sys, os

           sys.path.append(os.path.abspath('..'))
           import $$$$PROJECT$$$$
           os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'

           extensions = ['sphinx.ext.autodoc']

           project = u'django-$$$$PROJECT$$$$'
           copyright = u'2010, The Washington Times'

           # The short X.Y version.
           version = $$$$PROJECT$$$$.get_version()
           # The full version, including alpha/beta/rc tags.
           release =$$$$PROJECT$$$$.get_version()

Saturday, March 12, 2011
Have a default
                            Sphinx setup
                            Customize the conf.py
           import sys, os

           sys.path.append(os.path.abspath('..'))
           import $$$$PROJECT$$$$
           os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'

           extensions = ['sphinx.ext.autodoc']

           project = u'django-$$$$PROJECT$$$$'
           copyright = u'2010, The Washington Times'

           # The short X.Y version.
           version = $$$$PROJECT$$$$.get_version()
           # The full version, including alpha/beta/rc tags.
           release =$$$$PROJECT$$$$.get_version()

Saturday, March 12, 2011
Have a default
                                 Sphinx setup
                       Create placeholder and boilerplate files
                    doc_src
                           _build
                           _static
                           _templates
                           conf.py
                           getting_started.rst
                           index.rst
                           installation.rst
Saturday, March 12, 2011
Have a default
                            Sphinx setup
                Modify Makefile to render HTML elsewhere
           SPHINXOPTS      =
           SPHINXBUILD     = sphinx-build
           PAPER           =
           BUILDDIR        = _build
           DESTDIR         = ..

           ...

           html:
               $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DESTDIR)/docs
               @echo
               @echo "Build finished. The HTML pages are in $(DESTDIR)/
           docs."




Saturday, March 12, 2011
Have a default
                            Sphinx setup
                Modify Makefile to render HTML elsewhere
           SPHINXOPTS      =
           SPHINXBUILD     = sphinx-build
           PAPER           =
           BUILDDIR        = _build
           DESTDIR         = ..

           ...

           html:
               $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DESTDIR)/docs
               @echo
               @echo "Build finished. The HTML pages are in $(DESTDIR)/
           docs."




Saturday, March 12, 2011
Have a default
                            Sphinx setup
                Modify Makefile to render HTML elsewhere
           SPHINXOPTS      =
           SPHINXBUILD     = sphinx-build
           PAPER           =
           BUILDDIR        = _build
           DESTDIR         = ..

           ...

           html:
               $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DESTDIR)/docs
               @echo
               @echo "Build finished. The HTML pages are in $(DESTDIR)/
           docs."




Saturday, March 12, 2011
Have a default
                              Sphinx setup
                           Allows you to build docs often




Saturday, March 12, 2011
Have a default
                              Sphinx setup
                           Allows you to build docs often




Saturday, March 12, 2011
Have a default
                                  Sphinx setup

                           See http://github.com/washingtontimes/
                           django-app-skeleton/




Saturday, March 12, 2011
Jumping off points




                                      http://www.flickr.com/photos/frecklefinger/1369581228/
Saturday, March 12, 2011
Feature Lists
        .. _feature_list:

        Feature List
        ============

                 * Tags - Using `django tagging <http://code.google.com/p/django-
                 tagging/>`_
                 * Groups
                       * Public
                       * Private
                       * Corp only
                       * Alliance only
                 * Export
                       * xml
                       * copy & paste
                       * `eve dna <http://wiki.eveonline.com/en/wiki/Ship_DNA>`_
                 * Ratings - Up/Down ratting system
                       * `django critic <https://github.com/washingtontimes/django-
                 critic>`_
                 * Disqus Comments
                 * Favorite fittings
                 * Fork Fittings
                 * Version Fittings
                 * Rss/Atom
Saturday, March 12, 2011
Feature Lists
        .. _feature_list:

        Feature List
        ============

                           How do you add the tags?
                 * Tags - Using `django tagging <http://code.google.com/p/django-
                           How do you browse the tags?
                 tagging/>`_
                 * Groups
                       * Public
                       * Private
                       * Corp only
                       * Alliance only
                 * Export
                       * xml
                       * copy & paste
                       * `eve dna <http://wiki.eveonline.com/en/wiki/Ship_DNA>`_
                 * Ratings - Up/Down ratting system
                       * `django critic <https://github.com/washingtontimes/django-
                 critic>`_
                 * Disqus Comments
                 * Favorite fittings
                 * Fork Fittings
                 * Version Fittings
                 * Rss/Atom
Saturday, March 12, 2011
Feature Lists
        .. _feature_list:

        Feature List
        ============

                 * Tags - Using `django tagging <http://code.google.com/p/django-
                 tagging/>`_
                 * Groups
                       * Public
                       * Private
                       * Corp only
                       * Alliance only
                 * Export
                       * xml
                       * copy & paste
                       * `eve dna <http://wiki.eveonline.com/en/wiki/Ship_DNA>`_
                 * Ratings - Up/Down ratting system
                       * `django critic <https://github.com/washingtontimes/django-
                 critic>`_ How do you fork the fittings?
                 * Disqus Comments
                           How do see who has forked your fittings?
                 * Favorite fittings
                           What happens if they fork your mom?
                 * Fork Fittings
                 * Version Fittings
                 * Rss/Atom
Saturday, March 12, 2011
Flushing out the
                           initial feature list led
                                to this much
                               documentation

Saturday, March 12, 2011
Flushing out the
                           initial feature list led
                                to this much
                               documentation

Saturday, March 12, 2011
Examples of how features
                           will work are flushed out




Saturday, March 12, 2011
Initial hurdles are identified




Saturday, March 12, 2011
Some ideas are reconsidered




Saturday, March 12, 2011
Next Step: Work through issues




Saturday, March 12, 2011
Next Step: Write some step-by-
                           step instructions




Saturday, March 12, 2011
Rough notes
                           Starting Out
                            1. Create a documentation storage record (it configures and sets up a repository)
                               Name, Repository Type (git, hg), remote, url prefix, etc.
                            2. Optional: Import a zipped sphinx documentation directory
                            3. Configure Sphinx Settings
                               Initially it will have to be the editing of a python file until better ways can be devised.
                           That's it! Now the table of contents is served at http://sitename.com/prefix/

                           Structure of the Documentation
                           Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of
                           documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst.
                           Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for
                           every level of the URL structure. So
                             * Directories/Folders/Table of Contents are referenced at URLs ending with a /
                             * Pages are referenced by URLs ending without a /
                           In otherwords, http://www.example.com/docs/getting_started/ is really the same as http://
                           www.example.com/docs/getting_started/index

                           When you first create a page within a subdirectory, three things are done when you save the page:
                           1. A directory is created and the page is saved in it.
                           2. An index.rst file is created in the directory and the page is added to its toctree listing.
                           3. An item is added to the index.rst of the directory's parent

                           For example, if you create the new page section1/subsection1/newpage
                            1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved.
                            2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item.
                            3. subsection1/index is added to the toctree of the section1/index.rst file.

                           You can edit the index.rst file by going to either the directory URL (/docs/getting_started/) or the index URL (/
                           docs/getting_started/index) and editing the page.

                           If you remove an item from the toctree Sphwiki will add it back in the next time you edit that page.
                           You can re-order the items without any problems. Sphwiki only looks for the page's existence within the toctree.

                           Creating a New Page
                            1. Make sure you are logged in, if necessary.
                            2. Go to the URL of the new page
                            3. You will be prompted that the page doesn't exist, do you want to create it?
                            4. Say Yes.
                            5. Start writing.
Saturday, March 12, 2011
Rough notes
    Starting Out
     1. Create a documentation storage record (it configures and sets up a repository)
        Name, Repository Type (git, hg), remote, url prefix, etc.
     2. Optional: Import a zipped sphinx documentation directory
     3. Configure Sphinx Settings
        Initially it will have to be the editing of a python file until better ways can be devised.
    That's it! Now the table of contents is served at http://sitename.com/prefix/

    Structure of the Documentation
    Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of
    documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst.
    Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for
    every level of the URL structure. So
      * Directories/Folders/Table of Contents are referenced at URLs ending with a /
      * Pages are referenced by URLs ending without a /
    In otherwords, http://www.example.com/docs/getting_started/ is really the same as http://
    www.example.com/docs/getting_started/index

    When you first create a page within a subdirectory, three things are done when you save the page:
    1. A directory is created and the page is saved in it.
    2. An index.rst file is created in the directory and the page is added to its toctree listing.
    3. An item is added to the index.rst of the directory's parent

    For example, if you create the new page section1/subsection1/newpage
     1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved.
     2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item.
     3. subsection1/index is added to the toctree of the section1/index.rst file.
Saturday, March 12, 2011
Rough notes
    Starting Out
     1. Create a documentation storage record (it configures and sets up a repository)
        Name, Repository Type (git, hg), remote, url prefix, etc.
     2. Optional: Import a zipped sphinx documentation directory
     3. Configure Sphinx Settings
        Initially it will have to be the editing of a python file until better ways can be devised.
    That's it! Now the table of contents is served at http://sitename.com/prefix/

    Structure of the Documentation
    Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of
    documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst.
    Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for
    every level of the URL structure. So
      * Directories/Folders/Table of Contents are referenced at URLs ending with a /
      * Pages are referenced by URLs ending without a /
    In otherwords, http://www.example.com/docs/getting_started/ is really the same as http://
    www.example.com/docs/getting_started/index

    When you first create a page within a subdirectory, three things are done when you save the page:
    1. A directory is created and the page is saved in it.
    2. An index.rst file is created in the directory and the page is added to its toctree listing.
    3. An item is added to the index.rst of the directory's parent

    For example, if you create the new page section1/subsection1/newpage
     1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved.
     2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item.
     3. subsection1/index is added to the toctree of the section1/index.rst file.
Saturday, March 12, 2011
That's it! Now the table of contents is served at http://sitename.com/prefix/

    Structure of the Documentation


                                      Rough notes
    Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of
    documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst.
    Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for
    every level of the URL structure. So
      * Directories/Folders/Table of Contents are referenced at URLs ending with a /
      * Pages are referenced by URLs ending without a /
    In otherwords, http://www.example.com/docs/getting_started/ is really the same as http://
    www.example.com/docs/getting_started/index

    When you first create a page within a subdirectory, three things are done when you save the page:
    1. A directory is created and the page is saved in it.
    2. An index.rst file is created in the directory and the page is added to its toctree listing.
    3. An item is added to the index.rst of the directory's parent

    For example, if you create the new page section1/subsection1/newpage
     1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved.
     2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item.
     3. subsection1/index is added to the toctree of the section1/index.rst file.

    You can edit the index.rst file by going to either the directory URL (/docs/getting_started/) or the index URL (/
    docs/getting_started/index) and editing the page.

    If you remove an item from the toctree Sphwiki will add it back in the next time you edit that page.
    You can re-order the items without any problems. Sphwiki only looks for the page's existence within the toctree.

    Creating a New Page
     1. Make sure you are logged in, if necessary.
     2. Go to the URL of the new page
     3. You will be prompted that the page doesn't exist, do you want to create it?
     4. Say Yes.
     5. Start writing.
Saturday, March 12, 2011
Write a tutorial




Saturday, March 12, 2011
How do I…?




Saturday, March 12, 2011
Research




Saturday, March 12, 2011
In summary

                    • Code your documentation
                    • Make a customized documentation skeleton
                    • Iterate over your documentation
                    • Find a groove that works for you


Saturday, March 12, 2011
Thank You
                    •      Corey Oordt
                    •      coreyoordt@gmail.com
                    •      http://github.com/coordt
                    •      http://github.com/washingtontimes
                    •      @coordt

Saturday, March 12, 2011

Más contenido relacionado

Último

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Último (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Destacado

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Destacado (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 

Documentation Driven Development Corey Oordt

  • 1. Documentation Driven Development Corey Oordt @coordt Saturday, March 12, 2011
  • 3. I’m writing documentation?! Saturday, March 12, 2011
  • 4. What was I thinking? Saturday, March 12, 2011
  • 8. 1. Write code 2. Write documentation 3. Rewrite code Saturday, March 12, 2011
  • 9. 12. Write documentation 21. Write code 3. Rewrite code Saturday, March 12, 2011
  • 10. Why? RANDOM SPECULATION AHEAD Saturday, March 12, 2011
  • 11. The great virtues of a programmer Laziness Impatience Hubris Saturday, March 12, 2011
  • 16. We get functional, but not useable code Saturday, March 12, 2011
  • 19. The Parable of the Microsoft Engineer Saturday, March 12, 2011
  • 20. The Parable of the Microsoft Engineer It looks like you’re shooting a target. Would you like help? Get help with shooting the target Just shoot the target without help Don’t show me this tip again Saturday, March 12, 2011
  • 21. The Parable of the Microsoft Engineer It looks like you’re shooting a target. Would you like help? Get help with shooting the target Just shoot the target without help Don’t show me this tip again Saturday, March 12, 2011
  • 22. The Parable of the Microsoft Engineer It looks like you’re shooting a target. Would you like help? Get help with shooting the target Just shoot the target without help Don’t show me this tip again Saturday, March 12, 2011
  • 23. The Parable of the Microsoft Engineer Saturday, March 12, 2011
  • 24. Writing documentation first changes your perspective Saturday, March 12, 2011
  • 27. Don’t document your code, code your documentation Saturday, March 12, 2011
  • 28. Sometimes coding feels like falling down stairs and landing on your feet Saturday, March 12, 2011
  • 30. How do I start? Saturday, March 12, 2011
  • 33. Have a default Sphinx setup Include your favorite template or theme Saturday, March 12, 2011
  • 34. Have a default Sphinx setup Customize the conf.py import sys, os sys.path.append(os.path.abspath('..')) import $$$$PROJECT$$$$ os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings' extensions = ['sphinx.ext.autodoc'] project = u'django-$$$$PROJECT$$$$' copyright = u'2010, The Washington Times' # The short X.Y version. version = $$$$PROJECT$$$$.get_version() # The full version, including alpha/beta/rc tags. release =$$$$PROJECT$$$$.get_version() Saturday, March 12, 2011
  • 35. Have a default Sphinx setup Customize the conf.py import sys, os sys.path.append(os.path.abspath('..')) import $$$$PROJECT$$$$ os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings' extensions = ['sphinx.ext.autodoc'] project = u'django-$$$$PROJECT$$$$' copyright = u'2010, The Washington Times' # The short X.Y version. version = $$$$PROJECT$$$$.get_version() # The full version, including alpha/beta/rc tags. release =$$$$PROJECT$$$$.get_version() Saturday, March 12, 2011
  • 36. Have a default Sphinx setup Customize the conf.py import sys, os sys.path.append(os.path.abspath('..')) import $$$$PROJECT$$$$ os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings' extensions = ['sphinx.ext.autodoc'] project = u'django-$$$$PROJECT$$$$' copyright = u'2010, The Washington Times' # The short X.Y version. version = $$$$PROJECT$$$$.get_version() # The full version, including alpha/beta/rc tags. release =$$$$PROJECT$$$$.get_version() Saturday, March 12, 2011
  • 37. Have a default Sphinx setup Customize the conf.py import sys, os sys.path.append(os.path.abspath('..')) import $$$$PROJECT$$$$ os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings' extensions = ['sphinx.ext.autodoc'] project = u'django-$$$$PROJECT$$$$' copyright = u'2010, The Washington Times' # The short X.Y version. version = $$$$PROJECT$$$$.get_version() # The full version, including alpha/beta/rc tags. release =$$$$PROJECT$$$$.get_version() Saturday, March 12, 2011
  • 38. Have a default Sphinx setup Create placeholder and boilerplate files doc_src _build _static _templates conf.py getting_started.rst index.rst installation.rst Saturday, March 12, 2011
  • 39. Have a default Sphinx setup Modify Makefile to render HTML elsewhere SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build DESTDIR = .. ... html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DESTDIR)/docs @echo @echo "Build finished. The HTML pages are in $(DESTDIR)/ docs." Saturday, March 12, 2011
  • 40. Have a default Sphinx setup Modify Makefile to render HTML elsewhere SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build DESTDIR = .. ... html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DESTDIR)/docs @echo @echo "Build finished. The HTML pages are in $(DESTDIR)/ docs." Saturday, March 12, 2011
  • 41. Have a default Sphinx setup Modify Makefile to render HTML elsewhere SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build DESTDIR = .. ... html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DESTDIR)/docs @echo @echo "Build finished. The HTML pages are in $(DESTDIR)/ docs." Saturday, March 12, 2011
  • 42. Have a default Sphinx setup Allows you to build docs often Saturday, March 12, 2011
  • 43. Have a default Sphinx setup Allows you to build docs often Saturday, March 12, 2011
  • 44. Have a default Sphinx setup See http://github.com/washingtontimes/ django-app-skeleton/ Saturday, March 12, 2011
  • 45. Jumping off points http://www.flickr.com/photos/frecklefinger/1369581228/ Saturday, March 12, 2011
  • 46. Feature Lists .. _feature_list: Feature List ============ * Tags - Using `django tagging <http://code.google.com/p/django- tagging/>`_ * Groups * Public * Private * Corp only * Alliance only * Export * xml * copy & paste * `eve dna <http://wiki.eveonline.com/en/wiki/Ship_DNA>`_ * Ratings - Up/Down ratting system * `django critic <https://github.com/washingtontimes/django- critic>`_ * Disqus Comments * Favorite fittings * Fork Fittings * Version Fittings * Rss/Atom Saturday, March 12, 2011
  • 47. Feature Lists .. _feature_list: Feature List ============ How do you add the tags? * Tags - Using `django tagging <http://code.google.com/p/django- How do you browse the tags? tagging/>`_ * Groups * Public * Private * Corp only * Alliance only * Export * xml * copy & paste * `eve dna <http://wiki.eveonline.com/en/wiki/Ship_DNA>`_ * Ratings - Up/Down ratting system * `django critic <https://github.com/washingtontimes/django- critic>`_ * Disqus Comments * Favorite fittings * Fork Fittings * Version Fittings * Rss/Atom Saturday, March 12, 2011
  • 48. Feature Lists .. _feature_list: Feature List ============ * Tags - Using `django tagging <http://code.google.com/p/django- tagging/>`_ * Groups * Public * Private * Corp only * Alliance only * Export * xml * copy & paste * `eve dna <http://wiki.eveonline.com/en/wiki/Ship_DNA>`_ * Ratings - Up/Down ratting system * `django critic <https://github.com/washingtontimes/django- critic>`_ How do you fork the fittings? * Disqus Comments How do see who has forked your fittings? * Favorite fittings What happens if they fork your mom? * Fork Fittings * Version Fittings * Rss/Atom Saturday, March 12, 2011
  • 49. Flushing out the initial feature list led to this much documentation Saturday, March 12, 2011
  • 50. Flushing out the initial feature list led to this much documentation Saturday, March 12, 2011
  • 51. Examples of how features will work are flushed out Saturday, March 12, 2011
  • 52. Initial hurdles are identified Saturday, March 12, 2011
  • 53. Some ideas are reconsidered Saturday, March 12, 2011
  • 54. Next Step: Work through issues Saturday, March 12, 2011
  • 55. Next Step: Write some step-by- step instructions Saturday, March 12, 2011
  • 56. Rough notes Starting Out 1. Create a documentation storage record (it configures and sets up a repository) Name, Repository Type (git, hg), remote, url prefix, etc. 2. Optional: Import a zipped sphinx documentation directory 3. Configure Sphinx Settings Initially it will have to be the editing of a python file until better ways can be devised. That's it! Now the table of contents is served at http://sitename.com/prefix/ Structure of the Documentation Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst. Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for every level of the URL structure. So * Directories/Folders/Table of Contents are referenced at URLs ending with a / * Pages are referenced by URLs ending without a / In otherwords, http://www.example.com/docs/getting_started/ is really the same as http:// www.example.com/docs/getting_started/index When you first create a page within a subdirectory, three things are done when you save the page: 1. A directory is created and the page is saved in it. 2. An index.rst file is created in the directory and the page is added to its toctree listing. 3. An item is added to the index.rst of the directory's parent For example, if you create the new page section1/subsection1/newpage 1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved. 2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item. 3. subsection1/index is added to the toctree of the section1/index.rst file. You can edit the index.rst file by going to either the directory URL (/docs/getting_started/) or the index URL (/ docs/getting_started/index) and editing the page. If you remove an item from the toctree Sphwiki will add it back in the next time you edit that page. You can re-order the items without any problems. Sphwiki only looks for the page's existence within the toctree. Creating a New Page 1. Make sure you are logged in, if necessary. 2. Go to the URL of the new page 3. You will be prompted that the page doesn't exist, do you want to create it? 4. Say Yes. 5. Start writing. Saturday, March 12, 2011
  • 57. Rough notes Starting Out 1. Create a documentation storage record (it configures and sets up a repository) Name, Repository Type (git, hg), remote, url prefix, etc. 2. Optional: Import a zipped sphinx documentation directory 3. Configure Sphinx Settings Initially it will have to be the editing of a python file until better ways can be devised. That's it! Now the table of contents is served at http://sitename.com/prefix/ Structure of the Documentation Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst. Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for every level of the URL structure. So * Directories/Folders/Table of Contents are referenced at URLs ending with a / * Pages are referenced by URLs ending without a / In otherwords, http://www.example.com/docs/getting_started/ is really the same as http:// www.example.com/docs/getting_started/index When you first create a page within a subdirectory, three things are done when you save the page: 1. A directory is created and the page is saved in it. 2. An index.rst file is created in the directory and the page is added to its toctree listing. 3. An item is added to the index.rst of the directory's parent For example, if you create the new page section1/subsection1/newpage 1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved. 2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item. 3. subsection1/index is added to the toctree of the section1/index.rst file. Saturday, March 12, 2011
  • 58. Rough notes Starting Out 1. Create a documentation storage record (it configures and sets up a repository) Name, Repository Type (git, hg), remote, url prefix, etc. 2. Optional: Import a zipped sphinx documentation directory 3. Configure Sphinx Settings Initially it will have to be the editing of a python file until better ways can be devised. That's it! Now the table of contents is served at http://sitename.com/prefix/ Structure of the Documentation Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst. Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for every level of the URL structure. So * Directories/Folders/Table of Contents are referenced at URLs ending with a / * Pages are referenced by URLs ending without a / In otherwords, http://www.example.com/docs/getting_started/ is really the same as http:// www.example.com/docs/getting_started/index When you first create a page within a subdirectory, three things are done when you save the page: 1. A directory is created and the page is saved in it. 2. An index.rst file is created in the directory and the page is added to its toctree listing. 3. An item is added to the index.rst of the directory's parent For example, if you create the new page section1/subsection1/newpage 1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved. 2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item. 3. subsection1/index is added to the toctree of the section1/index.rst file. Saturday, March 12, 2011
  • 59. That's it! Now the table of contents is served at http://sitename.com/prefix/ Structure of the Documentation Rough notes Sphinx keeps track of files using a table of contents structure called a toctree. The toctree is simply a listing of documents (including documents that have their own toctrees). toctrees are typically in a file named index.rst. Sphwiki maintains a directory structure by adding (if one doesn't exist) and maintaining an index.rst file for every level of the URL structure. So * Directories/Folders/Table of Contents are referenced at URLs ending with a / * Pages are referenced by URLs ending without a / In otherwords, http://www.example.com/docs/getting_started/ is really the same as http:// www.example.com/docs/getting_started/index When you first create a page within a subdirectory, three things are done when you save the page: 1. A directory is created and the page is saved in it. 2. An index.rst file is created in the directory and the page is added to its toctree listing. 3. An item is added to the index.rst of the directory's parent For example, if you create the new page section1/subsection1/newpage 1. A directory named subsection1 is created within the section1 directory, and newpage.rst is saved. 2. An index.rst page is created within the subsection1 directory and newpage is added under thetoctree item. 3. subsection1/index is added to the toctree of the section1/index.rst file. You can edit the index.rst file by going to either the directory URL (/docs/getting_started/) or the index URL (/ docs/getting_started/index) and editing the page. If you remove an item from the toctree Sphwiki will add it back in the next time you edit that page. You can re-order the items without any problems. Sphwiki only looks for the page's existence within the toctree. Creating a New Page 1. Make sure you are logged in, if necessary. 2. Go to the URL of the new page 3. You will be prompted that the page doesn't exist, do you want to create it? 4. Say Yes. 5. Start writing. Saturday, March 12, 2011
  • 60. Write a tutorial Saturday, March 12, 2011
  • 61. How do I…? Saturday, March 12, 2011
  • 63. In summary • Code your documentation • Make a customized documentation skeleton • Iterate over your documentation • Find a groove that works for you Saturday, March 12, 2011
  • 64. Thank You • Corey Oordt • coreyoordt@gmail.com • http://github.com/coordt • http://github.com/washingtontimes • @coordt Saturday, March 12, 2011