Project

General

Profile

Statistics
| Revision:

# Date Author Comment
10328 07/19/2013 03:02 AM Aaron Marcuse-Kubitza

schemas/util.sql: map_nulls(): support all datatypes, not just text

10327 07/19/2013 02:55 AM Aaron Marcuse-Kubitza

schemas/util.sql: added hstore(keys anyarray, value anyelement) and => (anyarray, anyelement) operator to support other element types for hstore

10326 07/18/2013 06:43 PM Aaron Marcuse-Kubitza

inputs/REMIB/Specimen/create.sql: also remove frameshifted rows with invalid long_deg values

10325 07/18/2013 04:31 PM Aaron Marcuse-Kubitza

schemas/util.sql: added map_nulls(), a common use case of _map()

10324 07/18/2013 04:29 PM Aaron Marcuse-Kubitza

bugfix: schemas/util.sql: hstore(keys text[], value text): use new fix_array() so that an empty keys array is made 1-dimensional to match up with the array generated by array_fill()

10323 07/18/2013 04:26 PM Aaron Marcuse-Kubitza

schemas/util.sql: added fix_array(), which ensures that the array will always have proper non-NULL dimensions

10322 07/18/2013 04:21 PM Aaron Marcuse-Kubitza

schemas/util.sql: added empty_array(), for constructing proper empty 1-dimensional arrays whose dimensions are not NULL ( {}::text[] does not do this)

10321 07/18/2013 03:36 PM Aaron Marcuse-Kubitza

bugfix: schemas/util.sql: array_length(anyarray): need to call util.array_length() instead of just array_length() (which uses pg_catalog.array_length()) so that empty arrays will be returned as 0 instead of NULL. note that for some reason, adding `SET search_path=util` to the function does not have the same effect.

10320 07/18/2013 02:48 PM Aaron Marcuse-Kubitza

inputs/ACAD/Specimen/postprocess.sql, inputs/ARIZ/omoccurrences/postprocess.sql: removed unnecessary "" around keys/values. "" are required in hstore input syntax in approximately the same places as they are in XPaths (around values containing spaces or special characters).

10319 07/18/2013 01:46 PM Aaron Marcuse-Kubitza

inputs/ACAD/Specimen/map.csv, inputs/ARIZ/omoccurrences/map.csv: removed derived columns, which cause an error when trying to rename a table that does not yet have the derived columns added. this error will not be noticed locally if the derived columns were added before switching to new-style import, but will be noticed on vegbiendev.

10318 07/18/2013 01:17 PM Aaron Marcuse-Kubitza

inputs/ARIZ/: switched to new-style import, using the steps at wiki.vegpath.org/Switching_to_new-style_import#stage-I-source-specific > "run the following for each datasource"

10317 07/18/2013 01:03 PM Aaron Marcuse-Kubitza

added inputs/ARIZ/omoccurrences/postprocess.sql

10316 07/18/2013 12:32 PM Aaron Marcuse-Kubitza

inputs/ARIZ/omoccurrences/: translated single-column filters to postprocessing derived columns, using the steps at wiki.vegpath.org/Switching_to_new-style_import#stage-I-source-specific > "translate single-column filters to postprocessing derived columns"

10315 07/18/2013 12:25 PM Aaron Marcuse-Kubitza

bugfix: schemas/util.sql: _map(map hstore, value anyelement): need to cast result to unknown to support types that don't have a cast directly from text

10314 07/18/2013 12:06 PM Aaron Marcuse-Kubitza

schemas/util.sql: added _map(map hstore, value anyelement) to seamlessly map types other than text (by casting back and forth between text and the value type)

10313 07/18/2013 11:44 AM Aaron Marcuse-Kubitza

inputs/ACAD/: switched to new-style import, using the steps at wiki.vegpath.org/Switching_to_new-style_import#stage-I-source-specific > "run the following for each datasource"

10312 07/18/2013 11:38 AM Aaron Marcuse-Kubitza

inputs/input.Makefile: added %/postprocess.sql to replace input column names with the corresponding output column names when switching to new-style import (this target must be manually run, but does simplify the process of renaming the postprocess.sql input columns)

10311 07/18/2013 11:02 AM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: moved Individual datasource refresh under Importing to normalized VegCore instead of Switching to new-style import because it is actually related to the refactor-in-place method used to import to VegCore

10310 07/18/2013 10:38 AM Aaron Marcuse-Kubitza

inputs/ACAD/Specimen/: translated single-column filters to postprocessing derived columns, using the steps at wiki.vegpath.org/Switching_to_new-style_import#stage-I-source-specific > "translate single-column filters to postprocessing derived columns"

10309 07/18/2013 09:47 AM Aaron Marcuse-Kubitza

bugfix: schemas/util.sql: rename_cols(): run additional `SELECT NULL::void` query after the main for-loop query so that PostgreSQL does not try to fold away the execution of util.try_create() just because multiple rows are not returned by the function. the result set of the first query will still be discarded, but will be fully evaluated. (this has nothing to do with VOLATILE vs. IMMUTABLE; util.try_create() is already declared VOLATILE and would normally not be folded.) rename_cols() is used to rename derived columns, which are not part of the map.csv and cannot be positionally renamed.

10308 07/18/2013 08:38 AM Aaron Marcuse-Kubitza

schemas/util.sql: added text[] => text operator, analogous to text => text for multiple keys (uses hstore(keys text[], value text))

10307 07/18/2013 08:29 AM Aaron Marcuse-Kubitza

schemas/util.sql: added hstore(keys text[], value text), which can be used to avoid repeating the same value for each key. there are many /_map filters which use the XPath syntax for doing this, which now need to use an equivalent SQL syntax to avoid duplicating the value many times.

10306 07/18/2013 08:23 AM Aaron Marcuse-Kubitza

web/links/index.htm: updated to Firefox bookmarks. added link to Brian Enquist's fractals video on PBS NOVA.

10305 07/18/2013 07:35 AM Aaron Marcuse-Kubitza

schemas/util.sql: added array_fill(anyelement, integer), which doesn't require lengths for multiple dimensions

10304 07/18/2013 07:31 AM Aaron Marcuse-Kubitza

schemas/util.sql: added array_length(anyarray, dimension integer) wrapper, which returns 0 instead of NULL for empty arrays

10303 07/18/2013 07:23 AM Aaron Marcuse-Kubitza

schemas/util.sql: added array_length(anyarray), which does not require a second dimension argument

10302 07/18/2013 12:04 AM Aaron Marcuse-Kubitza

lib/sql_io.py: put_table(): documented that PostgreSQL 9.1+ now provides a way to implement insert/on duplicate select just once for each table (instead of dynamically for each insert) using the new INSTEAD OF triggers (http://www.postgresql.org/docs/9.1/static/plpgsql-trigger.html). INSTEAD OF triggers were not used when put_table() was developed, because it was necessary to support PostgreSQL 9.0, which was installed on the Mac and not easily upgradeable. it was eventually upgraded to add PostGIS, which required a complete reinstall of the DB from the staging tables, with the associated staging table reload bugs, as well as complete removal of the old Postgres version.

10301 07/17/2013 11:40 AM Aaron Marcuse-Kubitza

inputs/Madidi/: switched to new-style import

10300 07/17/2013 10:17 AM Aaron Marcuse-Kubitza

schemas/VegCore/VegCore.ERD.mwb: regenerated exports

10299 07/17/2013 10:16 AM Aaron Marcuse-Kubitza

schemas/VegCore/VegCore.ERD.mwb: categories: fixed position of place to match where it now is in the diagram. lined up boxes so that there is a visible line between the place- and occurrence-related categories.

10298 07/17/2013 09:27 AM Aaron Marcuse-Kubitza

inputs/Madidi/IndividualObservation/map.csv: translated 1:many mappings ( FieldFamilyFullName->{family,originalFamily} ) to derived columns (in postprocess.sql) to work with new-style import, which must have a 1:1 relationship between input and output columns

10297 07/17/2013 09:05 AM Aaron Marcuse-Kubitza

schemas/util.sql: added reset_col_names(), the counterpart to set_col_names(). note that this alters the map table, so it will need to be repopulated after running this function.

10296 07/17/2013 09:01 AM Aaron Marcuse-Kubitza

schemas/util.sql: mk_derived_col(): support using this function to overwrite an existing column (i.e. as a general-purpose function to perform in-place update with ALTER COLUMN TYPE USING)

10295 07/17/2013 07:40 AM Aaron Marcuse-Kubitza

lib/sh/db.sh: psql(): display stack traces and DETAIL sections of error messages at verbosity 2+, to help debugging (previously they were always turned off). in particular, the DETAIL section of a "duplicate key value violates unique constraint" error is useful because it contains the duplicated key.

10294 07/17/2013 04:54 AM Aaron Marcuse-Kubitza

inputs/.TNRS/: switched to new-style import. because this does not have data subdirs (data comes from the TNRS client), this is just a matter of adding ./run.

10293 07/17/2013 04:53 AM Aaron Marcuse-Kubitza

inputs/.TNRS/Source/: switched to new-style import. this had been missed when all the Source/ subdirs were batch-switched to new-style import.

10292 07/17/2013 04:24 AM Aaron Marcuse-Kubitza

inputs/*/*/map.csv: replaced /_first filter with mapping to DUPLICATE special term (VegCore.vegpath.org?DUPLICATE). this removes collisions that don't need a postprocessing formula to combine the columns.

10291 07/17/2013 04:02 AM Aaron Marcuse-Kubitza

inputs/Madidi/map.csv: removed filters on columns from before the refresh (which are not in active use), so that they don't show up in a search for map.csvs with filters (indicating collisions)

10290 07/17/2013 03:15 AM Aaron Marcuse-Kubitza

inputs/Madidi/IndividualObservation/map.csv: SeniorCollector: don't prepend it to the CollectorString because the CollectorString already contains it. this may be a change between the BIEN2 and refreshed Madidi data (which uses a significantly different schema).

10289 07/17/2013 02:37 AM Aaron Marcuse-Kubitza

mappings/VegCore.htm: regenerated from wiki. Special terms: added instructions for adding a distinguishing suffix to each special term in the format special_term#suffix. this is needed for new-style import to make the resulting column name unique within the staging table.

10288 07/17/2013 02:35 AM Aaron Marcuse-Kubitza

mappings/VegCore-VegBIEN.csv: mapped DUPLICATE to nothing so that it would not be treated as an unmapped term

10287 07/17/2013 02:33 AM Aaron Marcuse-Kubitza

mappings/VegCore.htm: regenerated from wiki. Special terms: added DUPLICATE.

10286 07/17/2013 01:56 AM Aaron Marcuse-Kubitza

/README.TXT: Maintenance: regenerate mappings/VegCore.csv: commit command: use single quotes ' instead of double quotes " to avoid needing to \-escape every special char (single quotes ' still need to be escaped)

10285 07/17/2013 01:51 AM Aaron Marcuse-Kubitza

mappings/VegCore.htm: regenerated from wiki. moved UNUSED, PRIVATE underneath OMIT as subterms.

10284 07/14/2013 06:02 AM Aaron Marcuse-Kubitza

mappings/VegCore.htm: Regenerated from wiki

10283 07/14/2013 05:52 AM Aaron Marcuse-Kubitza

bugfix: bin/*: spell out [:alnum:] as [a-zA-Z0-9] because Python unfortunately doesn't support character classes

10282 07/14/2013 05:18 AM Aaron Marcuse-Kubitza

web/links/index.htm: updated to Firefox bookmarks. moved Linux, Mac into Unix folder. added instructions to remove old Linux kernels, which fill up the /boot partition. added instructions to force sed to use raw binary mode instead of UTF-8 when UTF-8 is set in the environment. added methods of implementing DB disk space quotas in Postgres. added comparison on my Mac's CPU (2.66 GHz Intel Core i5) with vegbiendev's (2.44 GHz AMD Phenom X4). my Mac's seems to be much faster, so it might make sense to check that the Thor CPUs are faster than the Vis Lab computers' CPUs the next time it gets upgraded. (these diffs can be seen in WinMerge with Moved block detection on. see /README.TXT > WinMerge setup for details.)

10281 07/14/2013 04:43 AM Aaron Marcuse-Kubitza

inputs/bien_web/observation/VegBIEN.csv: regenerated now that *_index dummy columns have been removed

10280 07/14/2013 03:26 AM Aaron Marcuse-Kubitza

inputs/.TNRS/schema.sql: tnrs_populate_fields(): updated runtimes. it now takes 25 min instead of 16 min to regenerate the derived cols.

10279 07/14/2013 03:07 AM Aaron Marcuse-Kubitza

inputs/IRMNG/_README.TXT: added note that when refreshing this datasource, remember to regenerate the TNRS derived cols using the instructions in inputs/.TNRS/schema.sql > tnrs_populate_fields()

10278 07/14/2013 02:44 AM Aaron Marcuse-Kubitza

bin/*: replaced confusing regexp constructs involving \W inside [] with the much clearer explicit character class [:alnum:] . this avoids adding or subtracting from an inverted class in order to reach a subset of the corresponding positive class, because the subset can just be named explicitly instead.

10277 07/14/2013 02:38 AM Aaron Marcuse-Kubitza

bugfix: bin/repl: doesn't make sense to use other chars in a [^\W_] regexp, because they will have no effect since \w doesn't include the other chars to begin with. this is a result of confusion with the ^ and \W double negative.

10276 07/14/2013 02:14 AM Aaron Marcuse-Kubitza

lib/runscripts/table.run: postprocess(): propagate the $remake flag to remake_VegBIEN_mappings using self_make, so that a remake=1 on postprocess will cause map.csv to be regenerated as it would for a remake=1 directly on remake_VegBIEN_mappings

10275 07/14/2013 02:10 AM Aaron Marcuse-Kubitza

bugfix: postprocess(): moved $can_test flag from import() to this function because it is used here

10274 07/14/2013 02:08 AM Aaron Marcuse-Kubitza

lib/runscripts/table.run: import(): moved postprocessing commands to separate postprocess() function that can be invoked on an already-imported staging table to avoid running the load_data() target. this is especially useful when running the postprocessing on a working copy without the unversioned data files, for datasources whose load_data() target would otherwise try to download the files because they don't already exist.

10273 07/14/2013 02:01 AM Aaron Marcuse-Kubitza

lib/runscripts/table.run: postprocess(): renamed to custom_postprocess() since this runs only the datasource's custom postprocessing commands, not all the postprocessing commands including map_table, mk_derived

10272 07/14/2013 01:52 AM Aaron Marcuse-Kubitza

lib/runscripts/util.run: added , function, which treats each of the command-line args as commands the way make does (instead of as args to the same command, the way runscripts do)

10271 07/14/2013 01:39 AM Aaron Marcuse-Kubitza

lib/sh/util.sh: moved runscript-related commands to lib/runscripts/util.run because these only apply to runscripts

10270 07/14/2013 01:26 AM Aaron Marcuse-Kubitza

bugfix: inputs/*/*/map.csv (e.g. inputs/GBIF/raw_occurrence_record_plants/map.csv): remapped author to scientificNameAuthorship rather than authors, which it had gotten incorrectly automapped to. note that the VegCore term authors has now been renamed to data_authors to avoid ambiguity, but incorrect automappings resulting from it had not yet been fixed.

10269 07/14/2013 12:54 AM Aaron Marcuse-Kubitza

bugfix: inputs/GBIF/raw_occurrence_record_plants/run: updated herbaria.ih column names for staging table column renaming

10268 07/14/2013 12:33 AM Aaron Marcuse-Kubitza

bugfix: inputs/GBIF/table.run: need to include lib/runscripts/mysql.table.run instead of table.run (table.run was accidentally substituted when inputs/.NCBI/table.run was copied to all new-style datasources

10267 07/13/2013 10:35 PM Aaron Marcuse-Kubitza

backups/Makefile: %.backup/restore: documented runtime (11 h; ~5 h to insert data). note that this is still much shorter than re-running column-based import.

10266 07/12/2013 11:40 PM Aaron Marcuse-Kubitza

planning/workflow/bien3_architecture.pptx: exported from bien3_architecture.odp, as requested by Martha. the .pptx format is buggy and doesn't show the slide thumbnails on the slide notes view, but will have to do as .ppt (the older MS PowerPoint format) doesn't support the graphics.

10265 07/11/2013 04:08 PM Aaron Marcuse-Kubitza

planning/workflow/bien3_architecture.odp: added wiki page notes (wiki.vegpath.org/2013-06-20_conference_call, wiki.vegpath.org/2013-06-27_conference_call) in the slide notes

10264 07/11/2013 03:41 PM Aaron Marcuse-Kubitza

planning/workflow/bien3_architecture.odp: added responses to the red-highlighted questions (from e-mails to the list) in the slide notes

10263 07/11/2013 02:54 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: fixed formatting: removed internal cell borders in spacer lines

10262 07/11/2013 02:48 PM Aaron Marcuse-Kubitza

added planning/workflow/bien3_architecture.odp with changes from Skype call with Martha, which include wiki page notes (wiki.vegpath.org/2013-06-20_conference_call) about the refactor-in-place method in the Notes area

10261 07/11/2013 02:44 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: updated with changes from Skype call with Martha

10260 07/11/2013 12:53 PM Aaron Marcuse-Kubitza

inputs/*/ which do not contain any explicit collisions (wiki.vegpath.org/2013-06-27_conference_call#To-do-for-Aaron > #3.2 > the following datasources ...): switched to new-style import, which adds the staging table column renaming

10259 07/11/2013 12:41 PM Aaron Marcuse-Kubitza

inputs/newWorld/: switched to new-style import, which adds the staging table column renaming. these tables are used by the public schema (schemas/vegbien.sql), so the renamings are applied there as well.

10258 07/11/2013 12:26 PM Aaron Marcuse-Kubitza

inputs/bien_web/bien_web.schema.sql: regenerated using bin/my2pg, to remove the *_index dummy columns so they don't create lots of OMIT#... staging table columns

10257 07/11/2013 12:09 PM Aaron Marcuse-Kubitza

inputs/*/*/map.csv: added distinguishing #... suffix (e.g. UNUSED#institutionID) to the special terms OMIT, PRIVATE, UNUSED (VegCore.vegpath.org#Special-terms) to avoid creating a collision in the staging table renaming

10256 07/11/2013 11:56 AM Aaron Marcuse-Kubitza

bugfix: inputs/input.Makefile: Staging tables installation: $(allInstalls): don't filter out Source table, because it is now an installed table rather than just a mapping

10255 07/11/2013 11:33 AM Aaron Marcuse-Kubitza

bin/filter_out_ci, lib/maps.py: simplify(): also remove distinguishing #... suffix from terms (e.g. UNUSED#institutionID), to support mapping multiple columns to the special terms OMIT, PRIVATE, UNUSED (VegCore.vegpath.org#Special-terms), without creating a collision in the staging table renaming. note that this change must not be made to bin/canon, because this would cause suffixed terms to be autorenamed to their *un*suffixed VegCore versions.

10254 07/11/2013 05:54 AM Aaron Marcuse-Kubitza

backups/Makefile: $(restore): added --verbose to display pg_restore's incremental progress

10253 07/11/2013 05:34 AM Aaron Marcuse-Kubitza

bugfix: inputs/newWorld/newWorldCountries/postprocess.sql: use UPDATE statement (followed by VACUUM ANALYZE to remove dead tuples) instead of in-place update (ALTER COLUMN TYPE USING), so that the statement can be run even after the public schema has been installed and its views use the columns. (a view using the columns would normally block an ALTER COLUMN TYPE statement on a referenced column.)

10252 07/11/2013 03:56 AM Aaron Marcuse-Kubitza

bugfix: lib/runscripts/table.run: remake_VegBIEN_mappings(): when remaking, do not remake header.csv, because it should keep the original CSV columns rather than being reset to whatever the current staging table columns happen to be. to force-regenerate this, instead delete it first and then run remake_VegBIEN_mappings(). remake mode will now just regenerate map.csv from header.csv, in case map.csv's columns are incomplete or out of order.

10251 07/11/2013 03:55 AM Aaron Marcuse-Kubitza

bugfix: lib/runscripts/table.run: remake_VegBIEN_mappings(): when remaking, do not remake header.csv, because it should keep the original CSV columns rather than being reset to whatever the current staging table columns happen to be. to force-regenerate this, instead delete it first and then run remake_VegBIEN_mappings(). remake mode will now just regenerate map.csv from header.csv, in case map.csv's columns are incomplete or out of order.

10250 07/11/2013 03:50 AM Aaron Marcuse-Kubitza

bugfix: lib/runscripts/table.run: map_table(): do not rename view columns, since their column names come from their (column-renamed) joined tables rather than from a map.csv. header.csv, map.csv for views will generally become out-of-date whenever the joined tables change, so it is better not to generate them at all.

10249 07/11/2013 03:48 AM Aaron Marcuse-Kubitza

lib/runscripts/table.run: added $is_view

10248 07/11/2013 03:27 AM Aaron Marcuse-Kubitza

lib/runscripts/table.run: added $postprocess_sql to store postprocess.sql path, and use it in postprocess()

10247 07/11/2013 02:20 AM Aaron Marcuse-Kubitza

bugfix: lib/sh/local.sh: prevent automated tests when the public schema contains the live DB, so the user doesn't have to explicitly specify can_test= when running the import on vegbiendev

10246 07/11/2013 02:19 AM Aaron Marcuse-Kubitza

bugfix: lib/runscripts/table.run: import(): allow automated tests (remake_VegBIEN_mappings) to be disabled by setting can_test= if the public schema shouldn't be modified (e.g. if it's the live DB)

10245 07/11/2013 12:55 AM Aaron Marcuse-Kubitza

bugfix: inputs/*/*/postprocess.sql: made all operations idempotent, so that postprocess.sql can be run repeatedly (e.g. by new-style import)

10244 07/11/2013 12:03 AM Aaron Marcuse-Kubitza

schemas/util.sql: create_if_not_exists(): also suppress "multiple primary keys are not allowed" error

10243 07/10/2013 10:10 PM Aaron Marcuse-Kubitza

added inputs/newWorld/iso_code_gadm/.map.csv.last_cleanup

10242 07/10/2013 10:07 PM Aaron Marcuse-Kubitza

inputs/*/Source/VegBIEN.csv: regenerated for new-style import, which uses a symlink to mappings/VegCore-VegBIEN.csv instead of a custom mapping using the original column names

10241 07/10/2013 09:53 PM Aaron Marcuse-Kubitza

inputs/input.Makefile: Staging tables installation: %/install: run %/map_table at end to rename the staging table columns for new-style datasources

10240 07/10/2013 09:52 PM Aaron Marcuse-Kubitza

inputs/input.Makefile: Staging tables installation: added %/map_table to run the new-style import staging table renaming

10239 07/10/2013 08:37 PM Aaron Marcuse-Kubitza

inputs/bien2_traits/TraitObservation/map.csv: removed no longer needed mappings of dummy columns to OMIT, which were creating an unnecessary collision of staging table column names

10238 07/10/2013 08:30 PM Aaron Marcuse-Kubitza

inputs/bien2_traits/bien2_staging.schema.sql: regenerated from MySQL version so that dummy columns (which used to be generated by bin/my2pg) will be replaced with dummy CHECK constraints instead. this avoids needing to map several dummy columns all to OMIT, which was creating an unnecessary collision of staging table column names.

10237 07/10/2013 08:20 PM Aaron Marcuse-Kubitza

bin/my2pg*: keep MySQL indefinite dates as text strings instead of translating them (to the first of the month or year) to fit into a PostgreSQL timestamp. this allows the application to decide how to handle these values, which otherwise have no corresponding value in PostgreSQL. this requires changing the date/time related types to text instead of leaving them as-is, so that they can store the custom MySQL strings.

10236 07/10/2013 07:36 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: Geoscrubbing: made it a subtask of Adding derived columns. moved it to July so that it can be run for Naia's new project.

10235 07/10/2013 07:00 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: reordered tasks approximately in priority order (which corresponds to the month(s) in which they are scheduled). indented subtasks under their parent tasks.

10234 07/10/2013 06:51 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: crossed out completed rows and moved them to the bottom

10233 07/10/2013 06:46 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: use different-style checkmark because LibreOffice doesn't display the font of the previous one correctly anymore (it may already have been displayed incorrectly on other people's computers)

10232 07/10/2013 06:14 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: Reload existing data in need of refresh: added Oct because Rick Condit is supposed to provide us with a CTFS refresh that we would be allowed to use (he wouldn't let us use the 2011-4-1 full-DB export)

10231 07/10/2013 06:11 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: continuous tasks: populated past months

10230 07/10/2013 06:09 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: added Sep, Oct months and moved tasks into them. moved continuous tasks to separate section at bottom to avoid confusion with discrete tasks.

10229 07/10/2013 05:33 PM Aaron Marcuse-Kubitza

planning/timeline/timeline.2013.xls: use bullet points (•) instead of background shading to indicate future tasks. this allows cells to easily be cleared by pressing Backspace, rather than having to copy a white-background cell on top of the cell.