Skip to content
Kelly Stewart edited this page Jun 28, 2015 · 6 revisions

Time tracking was done using Emacs Org-Mode and exporting to Taskjuggler.

Expected v. actual times

Emacs clocking functionality allows you to clock in and out with the times that you work on certain projects, and then allow comparison with expected work times to complete a project. The below table is generated with Emacs Org-Mode and column view reports.

Task Est Act
* ☐ Viz-alg :taskjuggler_project: 1d 1:15 2d 23:08
** ☒ Specification 4:30 13:04
*** ☒ Initial problem definition 00:30 1:13
*** ☒ System modelling 2:30 6:22
**** ☒ DFD 00:30 2:55
**** ☒ Structure chart 00:30 1:08
**** ☒ IPO Diagram 00:15 0:05
**** ☒ Data dictionary 00:15 0:19
**** ☒ Storyboards 01:00 1:55
*** ☒ Known algorithms 01:30 5:29
** ☒ Timekeeping 2:00 5:29
** ☒ Software Development 15:45 1d 22:56
*** ☒ Initial test algorithms 00:15 0:45
*** ☒ Core framework 01:30 4:38
*** ☒ Core back-end 03:00 1:01
*** ☒ Core front-end 05:00 1:27
*** ☒ Priority 2 back-end 01:30 21:04
*** ☒ Priority 2 front-end 01:00 2:00
*** ☒ Additional front-end 01:30 13:00
*** ☐ Additional back-end 02:00 3:01
** ☐ Software testing 2:15 3:39
*** ☒ Testing framework 01:30 3:39
*** ☒ Alpha Test 00:15
*** ☐ Beta Test 00:30
** ☒ Documentation 0:45 2:00
*** ☒ Internal Documentation 0:15 1:18
*** ☒ User Documentation 00:30 0:42
** Milestones
*** Project start
*** Alpha version
*** Beta version
*** Finished

Logbook

The functional equivalent of a logbook can be found by viewing commit logs of the project and the wiki. Note that a more comprehensive overview can be found by downloading the actual repos and using git log. This also allows examination of what particular files have been modified at what times.

Wiki

Sun Jun 28 15:58 Update tracker Thu Jun 25 13:24 Update tracker and planner Wed Jun 24 00:30 Add slightly nonsensical gantt chart Wed Jun 24 00:02 Put resource/plan under version control again/ Semantically it shouldn’t be, but practically it needs to be as frequent data corruptions make the need for an offsite backup much more dire.

Wed Jun 24 00:02 Add commit log for actual project Mon Jun 22 00:29 Modify commit log format Would like to use tables but org-mode doesn’t support multiline tables

Sun Jun 21 23:51 Add git commit log readout Requires testing to see if it formats properly in GitHub wiki

Sun Jun 21 21:27 Add planning file with links to associated tracker Also includes generated column report of estimated vs actual times. Need to check if there’s a way to include generated pretty-formatted git commit logs.

Sun Jun 21 21:26 Add new resource/plan folder Must be removed later so all wiki content can be accessed when cloning. For now, it shouldn’t be under version control.

Sat Jun 20 01:41 Move all specification resources to spec/ Makes more sense seeing the small number of files there actually are, and allows for a better future system when timekeeping files are added.

Sat Jun 20 00:55 Add remaining models, wireframes, and algorithms Added:

  • IPO diagram
  • interface wireframes
  • all remaining base sort algorithms to be implemented

Sat Jun 20 00:54 Rename Diagrams.odg into source.odg Better fits naming scheme and avoids repetition (i.e. is already in diagrams/ folder anyway)

Thu Jun 18 23:33 Restructure resources into a single folder More sensible and allows actual visible content to be top-level.

Updated .gitignore to reflect new file names, but note that entries will be removed before finish so that teacher can clone wiki and look at source files if desired.

Thu Jun 18 23:23 Tweak file names

  1. Home -> Home so GitHub will show it as first page when viewing the

wiki

Also change tracker filename to Tracker so that Planning can be used as a name for displaying finished reports and links to content

Thu Jun 18 23:14 Rename files into numbered scheme Allows easy sorting it Github sidebar as well as more logical organization in file browser

Thu Jun 18 23:11 Remove Planning file from wiki Planning shouldn’t be a wiki page, but rather the outputs it produces.

Thu Jun 18 23:08 Add structure chart and make formatting consistent Consistent formatting isn’t a necessity but is nice for a professional appearance throughout the wiki. Font selections can later be changed when an appropriate font scheme is chosen.

Thu Jun 18 21:55 Fix image link- forwardslash instead of backslash Thu Jun 18 21:43 Fix export to taskjuggler file Also includes adding .tjp and reports/ to .gitignore as they are generated through org-mode.

Limitation of not being able to specify time lengths shorter than 1 hour without manually modifying Planning.tjp after export.

Thu Jun 18 20:24 Add diagrams and specifications file Diagrams made with OpenOffice Draw and file of .odg format is being stored with the wiki repo for reference, but actual diagrams are included with wiki pages for easier browsing and use, as well as a finished .pdf once all diagrams are made.

Thu Jun 18 20:19 Add Planning for time-tracking and logging Taskjuggler will be used with Planning file to produce finished Gantt charts. Time tracking and logs can be accomplished through Emacs clock times as well as through commit history, though the first part of commit history was lost due to data corruption and failure. Solution to protect against future instances of this is to push regularly to Github remote source as a backup in event of local data corruption.

Thu Jun 18 20:19 Add initial home and definition as org-mode file Org-mode files added for easier integration with Emacs and to use a flexible and familiar markup system. Also allows time-tracking and effort estimates that can be converted to Gantt chart with Taskjuggler.

This is a series of re-created commits as data corruption caused previous commit history to be lost, but not the actual files themselves.

Sun Jun 14 20:56 Initial Home page

Project

Sun Jun 28 15:40 Attempt to grab sort information from Wikipedia Failed; leaving methods and framework in for now to attempt to implement later.

Sun Jun 28 13:36 Add styling for visualization and footer Sun Jun 28 13:36 Modify to deal with removal of ’shown’ class Some hidden containers need a custom display set, so having a ’shown’ element with a fixed ’display: block;’ property doesn’t work. Attempting to use nesting by applying the hidden element after doesn’t work, so inline styles will have to do.

Sun Jun 28 03:30 Add brunt of styling for main page and layout Sun Jun 28 03:17 Remove title from template and fix static link Title doesn’t need to be in template as first page doesn’t need a title.

Static link previously was static. Only needs to be static/ due to flask url routing.

Sun Jun 28 03:16 Put form inside a <fieldset> tag So accessibility software can target the <legend> tag.

Sun Jun 28 03:13 Add description tags, hint, move errors out of ul Putting a <ul> inside a <p> apparently makes the browser upset.

Sun Jun 28 03:12 Remove generated CSS files from version control Sun Jun 28 03:10 Change description for source to not list default It’s given as a placeholder anyway.

Sun Jun 28 03:08 Add generated CSS files and Sass cache folder Sun Jun 28 00:48 Avoid repetition of <label> tags Didn’t know that form.label automatically wraps the result in <label> tags.

Sat Jun 27 20:10 Merge remote-tracking branch ‘refs/remotes/origin/master’ into styling Sat Jun 27 20:03 Fix selection sort getting min rather than min_i min_i was being assigned to the minimum value rather than the index of the minimum value.

Sat Jun 27 20:01 Update in accordance with old changes in algs Sat Jun 27 19:46 Fix parse_source() duplication and leftover call Didn’t change call when moving it back out of the SortAlg class, and also merge resulted in unnoticed extra parse_source() definition.

Sat Jun 27 19:45 Add SCSS stylesheet with color scheme Sat Jun 27 19:09 Add rudimentary styles Sat Jun 27 19:02 Merge branch ‘docs-internal’ Conflicts: app/algs.py tests.py

Sat Jun 27 18:40 Add Sphinx configuration settings Sat Jun 27 18:31 Add and neaten up docstrings and comments. Use Google style docstring comments for exporting to Sphinx with napolean.

Sat Jun 27 16:32 Remove vars that shouldn’t be there AVAILABLE_ALGS is now generated and DEFAULT_SOURCE is in algs.py.

Sat Jun 27 16:31 Modify to auto generate list of available algs Sat Jun 27 15:49 Add Sphinx documentation files Sat Jun 27 15:00 Add internal documentation and fix docstrings Sat Jun 27 12:55 Put intro text in a <section> tag Sat Jun 27 12:55 Change ’Home’ nav link to ’Viz-alg’ Sat Jun 27 12:52 Modify selection sort for readability & efficiency Now avoids copying and destroying sublist for every step.

Sat Jun 27 02:00 Add an id to the content block Easier to style.

Sat Jun 27 01:55 Ensure ’Prev’ button doesn’t show on first load Also add <script> tag to new custom head block.

Sat Jun 27 01:54 Modify to allow each page to have a different head Also put content inside a <section> tag to allow styling of just the content. Could have used a div but <section> has semantic meaning when a header can be put at the top of the page.

Sat Jun 27 01:38 Add algorithm next/prev viewing Done through Javascript, but entire list is still populated before the user is shown anything. Attempts to have the next step generated server-side failed due to lack of experience in Javascript and Ajax.

Sat Jun 27 01:37 Accommodate SortAlg changes and handle err302 alg.alg() now needs to be called manually.

Sat Jun 27 01:26 Add render_alg for rendering each step of alg Used to avoid repetition in explicitly defining the first step of each sort procedure to be shown by default.

Sat Jun 27 01:25 Add .hidden and .shown for which current step Slightly harder to manage than adding only .shown and having hidden be the default state for steps, but this also allows the .hidden class to be used for other things and is also better for future maintainability if changes in how non-current steps are displayed happen.

Sat Jun 27 01:24 Add get_step() method of retrieving specified step For future possible implementation of steps being calculated and fetched server-side as each as requested.

Fri Jun 26 00:25 Remove superfluous SortAlg.next_step() function All it did was call alg.alg(1) anyway

Fri Jun 26 00:23 Unpack SortAlg.props into associated attributes They were only being stored in .props due to a misunderstanding on my part on how the Jinja templating engine works; I mistook an error caused by something else to mean that you couldn’t reference variables directly from an object.

Fri Jun 26 00:09 Refactor algs into a single function for each one This allows the alg to be called with any number of steps with SortAlg.alg()

Fri Jun 26 00:09 Fix typo in import statement Thu Jun 25 23:54 Add argument to use quick testing (no coverage) Thu Jun 25 23:45 Include GetoptError to state long –debug option Thu Jun 25 22:50 Fix error forgetting to rename call to source Thu Jun 25 22:49 Remove empty list handling code This is now implemented entirely in algs.py

Thu Jun 25 22:42 Rename functions to follow uniform naming scheme Also re-add from config import statement after forgetting to do so when added for quick and dirty testing purposes.

Thu Jun 25 22:40 Add individual functions for each sort step Precursor to fetching each step as it is called for

Thu Jun 25 22:39 Display contents of failed list on failure Thu Jun 25 22:09 Use builtin min() function for sort_selection Fits better with planned sorting function as well as avoids defining own min() implementation.

Also for fitting in better with future modifications for separate functions for each step.

Thu Jun 25 21:58 Modify default into more out of order list Thu Jun 25 21:51 Test correct sorted result before steps Thu Jun 25 20:42 Better handling for empty lists and remap function Remap function needed for future changes in ensuring custom list is in showable range.

Thu Jun 25 20:41 Set default values to more spread over 0-200 range Thu Jun 25 16:27 Change empty lists to be handled by SortAlg Thu Jun 25 16:13 Remove unnecessary HTML tags and add base styles CSS styles for visualising list items

Thu Jun 25 13:19 Add other venv folder and tmp folder /tmp contains logging and error outputs /venv will maybe become new virtualenv once OS permissions are sorted out

Thu Jun 25 13:19 Add coverage report for unit tests Thu Jun 25 11:36 Add general template macro for form fields Allows information to be input through scripts rather than html files, which is great for separation of concerns. Also means allowing programmatic changing of items more easily. Also, better for using with the macro. Less repetition is good.

Thu Jun 25 01:10 Re-added ’from app import views’ Removing it broke things.

Thu Jun 25 00:28 Add documentation Wed Jun 24 23:31 Remove an extraneous newline Wed Jun 24 23:31 Add basic automated testing framework Will need to add database later for test cases

Wed Jun 24 23:09 Show validation errors under input box Wed Jun 24 23:03 Only allow list entry by custom specification Also clean up documentation strings.

Set to fallback to default list if given an empty list. Need to add messages showing validation errors.

Wed Jun 24 15:47 Add debug logging Wed Jun 24 15:34 Add error page Wed Jun 24 14:51 Ask for forgiveness when passing debug parameter Assign use_debug only if debug is specified. Otherwise, ask for forgiveness when referencing nonexistent variable.

Wed Jun 24 14:45 Allow script variable to pass debug parameter Wed Jun 24 14:44 Display all sort steps after sorting Wed Jun 24 14:03 Modify sort algs to generate list of sorting steps Precursor to displaying whole algorithm. Currently sorts entire list before displaying anything; maybe later change to update page while sorting is in progress.

Wed Jun 24 12:04 Change sort algs to modify in-place Avoids duplicating new = list(l) in every sort function

Wed Jun 24 02:12 Temporary fix for odd assignment crossover Both source and destination lists were being sorted together; upon inspection, the reason was that when doing a = b, and b is a list, then whatever is done to b is also done to a. This is really odd and needs to be looked at better.

Wed Jun 24 02:10 Refactor to call properties of algs() Previous method was to copy properties to a dictionary and insert from there, which was obviously poor and inefficient. All props to be displayed are now put in SortAlg.props

Wed Jun 24 01:02 Add option for random list of specified size Wed Jun 24 00:39 Add (another) wiki folder Wed Jun 24 00:39 Change is_ascending to descending, as it should be Still has no effect, but now makes sense.

Tue Jun 23 23:00 Add emacs autosave files Tue Jun 23 22:54 Add basic input form with returned result Currently only returns a default list sorted by the selected algorithm

Tue Jun 23 22:52 Prepare for forms and add base template file Base template file contains things that don’t change page-to-page, e.g. header and footer. Currently using Jinja2 templating engine.

Tue Jun 23 22:50 Add bogosort and selection sort for testing Tue Jun 23 22:48 Add configuration file Tue Jun 23 02:11 Add flask virtualenv folder Shouldn’t be under version control, but should be in final release so teacher can start program and go.

Tue Jun 23 02:09 Add basic templates and pages Initial changes with base pages required to start work on backend function generation.

Sun Jun 14 22:18 Add wiki folder Sun Jun 14 22:17 Modify wording Sun Jun 14 18:33 Initial commit

Clone this wiki locally