Metadata-Version: 2.4
Name: Historie
Version: 0.1.0
Summary: Structured reStructuredText-based résumé format for developers
Author-email: saaj <mail@saaj.me>
License-Expression: GPL-3.0-only
Project-URL: Homepage, https://heptapod.host/saajns/historie
Keywords: résumé,developer-story,curriculum-vitae,cv,restructuredtext
Classifier: Topic :: Text Processing :: Markup :: reStructuredText
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Intended Audience :: Developers
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
Requires-Dist: docutils<0.24,>=0.23
Requires-Dist: weasyprint<65,>=62

.. image:: https://img.shields.io/pypi/l/Historie.svg
   :target: https://spdx.org/licenses/GPL-3.0-only.html
   :alt: PyPI - License
.. image::
   https://img.shields.io/gitlab/pipeline-status/saajns%2Fhistorie
   ?gitlab_url=https%3A%2F%2Fheptapod.host&branch=branch%2Fdefault
   :target: https://heptapod.host/saajns/historie/-/commits/branch/default
   :alt: Pipeline status
.. image::
   https://img.shields.io/gitlab/pipeline-coverage/saajns%2Fhistorie
   ?gitlab_url=https%3A%2F%2Fheptapod.host&branch=branch%2Fdefault
   :target: https://saajns.heptapod.io/historie/htmlcov/?badge=coverage
   :alt: Test code coverage
.. image:: https://badge.fury.io/py/Historie.svg
   :target: https://pypi.python.org/pypi/Historie
   :alt: PyPI

********
Historie
********
Historie is a résumé management tool, comprised by a reStructuredText-based DSL
and an exporter to a number of publishing formats (HTML and PDF). Structured,
timeline-centric representation is inspired by the StackOverflow Developer
Story that was shut down [1]_ (and was attempted to be revived recently).

Install
=======
Install with::

   pipx install Historie

DSL
===
Adds the following reStructuredText directives [2]_ each usually having a
number of arguments:

1. ``his-contacts``

   - ``name``
   - ``title``
   - ``location``
   - ``email``

   Example:

   .. code:: restructuredtext

      .. his-contacts::
         :name: Robert C. Martin
         :title: Software Craftsman & Clean Code Evangelist
         :location: Chicago, Illinois, USA
         :email: uncle.bob@cleancoders.com

2. ``his-links``

    This directive has no argument, but uses a definition list to allow
    annotated links, for example:

    .. code:: restructuredtext

       .. his-links::

          Clean Coders
              https://cleancoders.com/

          The Clean Code Blog
              https://blog.cleancoder.com/

          GitHub
              https://github.com/unclebob

3. ``his-stack-exchange-profiles``

   - ``stackoverflow``
   - ``serverfault``
   - ``superuser``
   - ``askubuntu``
   - ``unix``
   - ``dba``
   - ``softwareengineering``

   Example:

   .. code:: restructuredtext

      .. his-stack-exchange-profiles::
        :stackoverflow: 73476

4. ``his-technology-preference``

   - ``desired``
   - ``undesired``

   Example:

   .. code:: restructuredtext

      .. his-technology-preference::
         :desired:
           clean-code, solid-principles, tdd, craftsmanship, agile,
           refactoring, design-patterns, clojure, java, architecture
         :undesired:
           big-design-up-front, waterfall, code-comments,
           null-references, singletons, service-locators

5. ``his-summary``

   This directive only has content, for example:

   .. code:: restructuredtext

      .. his-summary::

         Software professional since 1970. Author of foundational texts on
         clean code, agile development, and software craftsmanship. Original
         signatory of the Agile Manifesto. Firm believer that the only way
         to go fast is to go well.

6. ``his-job``

   - ``company-name``
   - ``company-website``
   - ``role``
   - ``start``
   - ``finish``
   - ``technology``

   Examples:

   .. code:: restructuredtext

      .. his-job::
         :company-name: Clean Coders
         :company-website: https://cleancoders.com/
         :role: Founder & Head Craftsman
         :start: 2010-01-01
         :technology:
           video-production, education, clean-code, tdd,
           solid-principles, refactoring, clojure

         Founded educational platform delivering video training on software
         craftsmanship. Produced 60+ hours of content covering clean code,
         TDD, SOLID principles, and functional programming. Reached hundreds
         of thousands of developers worldwide.

      .. his-job::
         :company-name: Object Mentor
         :company-website: https://web.archive.org/web/20070913061205/https://www.objectmentor.com/
         :role: Founder & President
         :start: 1990-01-01
         :finish: 2009-12-31
         :technology:
           consulting, training, agile, xp, tdd, oop,
           design-patterns, c++, java

         Built premier consulting firm for agile transformation and technical
         training. Trained Fortune 500 companies in XP, TDD, and OOP. Authored
         company's flagship course curricula. Helped establish agile practices
         in enterprise software development.

      .. his-job::
         :company-name: Teradyne
         :company-website: https://teradyne.com/
         :role: Software Engineer
         :start: 1970-01-01
         :finish: 1989-12-31
         :technology:
           assembly, c, c++, embedded-systems, real-time,
           telecommunications, testing-equipment

         Cut teeth on PDP-8 and PDP-11 assembly. Developed embedded systems
         for automated testing equipment. Learned that the hard way is the
         slow way, and discipline is the path to speed. Discovered that
         debugging time dwarfs coding time unless you write tests first.

7. ``his-project``

   - ``name``
   - ``url``
   - ``start``
   - ``finish``
   - ``technology``

   Examples:

   .. code:: restructuredtext

      .. his-project::
         :name: FitNesse
         :url: https://github.com/unclebob/fitnesse
         :start: 2002-01-01
         :technology: java, acceptance-testing, wiki, collaboration

         Fully integrated standalone wiki and acceptance testing framework.
         Enables customers, testers, and programmers to collaborate on
         software requirements through executable specifications. Because
         the best documentation is documentation that runs.

      .. his-project::
         :name: Clean Code (The Book)
         :url: https://www.oreilly.com/library/view/clean-code-a/9780136083238/
         :start: 2007-01-01
         :finish: 2008-08-01
         :technology: java, craftsmanship, refactoring, naming, functions

         A Handbook of Agile Software Craftsmanship. Distilled decades of
         experience into principles, patterns, and practices for writing
         code that works and reads well. Over 1 million copies sold.
         Translated into dozens of languages. Still sparking debates about
         function length.

      .. his-project::
         :name: The Agile Manifesto
         :url: https://agilemanifesto.org/
         :start: 2001-02-11
         :technology: agile, collaboration, methodology, values

         Co-authored with 16 other signatories at Snowbird ski resort.
         Four values, twelve principles, infinite interpretations.
         Revolutionized software development industry. Occasionally
         misunderstood by management consultants selling certifications.

8. ``his-education``

   - ``institution``
   - ``institution-website``
   - ``degree``
   - ``start``
   - ``finish``
   - ``technology``

   Example:

   .. code:: restructuredtext

      .. his-education::
         :institution: Self-taught
         :start: 1970-01-01
         :technology: assembly, fortran, cobol, algorithms, data-structures

         Began programming professionally in 1970 on PDP-8 and PDP-11
         systems. Learned through hands-on experience, reading, and
         mentorship. Proof that mastery comes from dedication and
         deliberate practice, not just formal credentials.

CLI
===
::

   $ historie --help
   usage: historie [-h] [--logging-level LOGGING_LEVEL] [-f {html,pdf}] [-o OUTPUT] input

   Generate a résumé in a publish format from reStructuredText.

   positional arguments:
     input                 Input reStructuredText file

   options:
     -h, --help            show this help message and exit
     --logging-level LOGGING_LEVEL
                           Logging level. By default: INFO.
     -f, --format {html,pdf}
                           Output format. By default: html.
     -o, --output OUTPUT   Output file: By default ".rst" is appended to input.

____

.. [1] https://meta.stackoverflow.com/questions/415293/sunsetting-jobs-developer-story
.. [2] https://docutils.sourceforge.io/docs/ref/rst/directives.html
