## Engineering Notebook

This is an example of an Engineering Notebook. Copy this and save to
your desktop as a text file and clear out examples to start using.

It serves the following purposes:

  - Log of daily activities. Useful to go back and see when/what was
    done and if someone asks why you were doing on a date.
  - Current git repos/workspaces and what you're doing on each one
  - Things to Do checklist
  - Notes on different servers/systems/tools/technologies. Organized and
    searchable.
  - Accomplishments - List of high level accomplishments for year
  - Log archive. Move older daily log to this location.

<b>NOTE: All items below are examples.</b>

    -----------------
    -- Daily Log
    -----------------
    6/11/2020 - Thur
       - Pushed new release
       - Updated Wiki for developers
       - Training
    6/12/2020 - Fri - Vacation
    6/15/2020 - Mon
       - Create sample engineering log
       - Meeting w/ Ryan - Release schedule

    ------------------------
    -- GIT repos/workspaces
    ------------------------
    - Note: {repo} - {branch} - {what doing in each; blank if clean}
    - ws_fix/workspace_fix - 0.26.1 - Fixes to Next Release 0.26.1
    - ws_try/workspace_try - dev -
    - ws_try/workspace_one - dev - Refactoring ATS to server

    ------------------------
    -- TTD - In Work
    ------------------------
    - Add searching bug to ATS
    - Create sample Engineering Notebook
       DONE - Separate out in sections
       NOW - Add to external wiki
       - Email team members
       - Add to developer's checklist
    - New action > code wf > select workPkg > wp not set in action
    - Add ValidateAtsDatabase to new release
    - Push Beta / Test Jenkins job

    ------------------------
    -- Misc
    ------------------------

    -----------------
    Outlook / Email
    -----------------
    Setup as Thread - File > Preferences > As Thread

    -----------------
    GIT Commands
    -----------------
    git pull --rebase - updates repo
    git rebase -i - interactive rebase
    useful commands: https://www.datree.io/resources/git-commands

    -----------------
    URLs / Websites
    -----------------
    OSEE Wiki - https://wiki.eclipse.org/OSEE
    OSEE Jenkins - https://ci.eclipse.org/osee/
    OSEE Gerrit - https://git.eclipse.org/r/#/q/project:osee/org.eclipse.osee

    -----------------
    Performance Review Tasks
    -----------------
    - 2020
       - Mentoring new engineers
       - Reducing bugs and escapements
       - Retiring legacy peer review tool

    -----------------
    Accomplishments
    -----------------
    - 2020
       - Mentoring new engineers
       - Cleanup wiki
       - Retire legacy tools
    - 2019
       - Refactor and code cleanup
       - Training new engineers

    -----------------
    Daily Log - Archive
    -----------------
    6/10/2020 - Wed
       - Training
    6/9/2020 - Tue
       - Training