Canadian Musician Robert Aitken:Wiki Design

From Canadian Musician Robert Aitken
Jump to: navigation, search

This page is a set of design notes for this wiki on the flute teaching and artistic life of Robert Aitken. (See also Canadian Musician Robert Aitken:Database Design. I will continue to refine this wiki beyond the publication of the books on his teaching and his life, and will also publish some articles on the process of developing the wiki and books. At some point, it may be that only the books and published articles that will remain unless I can find someone to take over the maintenance of the wiki. It is my intention to use the wiki as a living repository of material for the books, but also as a research resource for those who may be interested in aspects of Aitken's work not represented in the books.

The wiki will be participatory, with material from Aitken and his many friends and associates forming the core of the material.

Developing the design is coupled with learning how to do the design, learning technical capabilities of the MediaWiki extension Cargo (after initial exploration of Semantic Media Wiki), and finding a path to make the wiki useful.

The Design Problem


I will consider the project complete when the following is done (with estimated time frame):

  1. this wiki, including text, images, audio, and video with comprehensive details on Aitken’s flute teaching is in effective use by a substantial core of flutists and flute teachers around the world (2019-2020)
  2. A book on Aitken’s flute teaching, with similar material to what is on the Web site, is published and in circulation (late 2019)
  3. A book on Aitken’s life as a musician is published and in circulation (2021)

While data are being gathered, the wiki will be useful as a guide. That will be the case particularly for interviews with Aitken's associates. It will also be very useful to Aitken himself in reconstructing memories and order events in his life. He frequently expresses his desire to have at his fingertips records that help him piece together his recollections.

What I'd like wiki users to be able to do:

  • read about a particular aspect of Aitken's life or teaching
  • quickly find notes or stories about particular life events
  • skim through his life (in a table, timeline, or map) with everything included or just some of these: performances, family events, recordings, particular people, pieces, compositions, countries visited, ideas on the flute, particular aspects of teaching
  • move easily between summaries to particular details
  • contribute to the wiki by correcting and adding to the substance and commenting through the talk pages

Design phases

  • develop a design development pathway
  • determine what aspects and details of the design need to be determined before creating content pages
  • describe the data in structural form
  • specify usage and designing query forms
  • specify approach to data entry and associated forms for data entry and page creation
  • invite database experts and interested users to review the design
  • develop an approach to writing and editing content collaboratively with Robert Aitken and assistants

Semantic Forms/Quick start guide provides a simple description of the stages in developing a semantic wiki.

Questions and Dilemmas

  1. How should subject pages be titled? (ended up using compound titles with em dashes as separators, since hyphens caused errors in MySQL queries)
  2. What MediaWiki and Cargo capabilities should be used in what ways? Specifically:
    1. Should categories and pages be organized hierarchically? (decided to use some hierarchy of categories)
    2. What use should be made of "concepts"? "filters"? (Did most of design without attention to this.)
    3. When should I create classes to create single page types composed of template, form, category, and properties? (Did most of design without attention to this.)
    4. When should I use the finer granularity of individually created categories, templates, and forms?
    5. As structural elements are modified, what are the implications for maintaining structural integrity of existing data? In particular if certain categories of pages are to be edited using a template and that template is changed, will both new and old pages of the category in question be subsequently editable using the modified template? YES
  3. How should the source of data be documented? (This is likely to be messy. Some documentation will be done in content pages, and some will be done in specialized reference pages. The guidance of a reference librarian would be very helpful here, especially if some content is to be exported into other systems.)

Data Description

  1. Data I have generated or will generate
    • notes (handwritten) and audio recording (cassette tape) from Moyse flute and woodwind masterclasses (don’t involve Aitken, but are important background material, since he considered Moyse his most influential teacher)
    • notes (handwritten) and video (CDROM) from Aitken’s teaching of my students, Saskatoon 1979
    • notes (handwritten) from masterclasses and concert recordings (cassette tape) from Music at Shawnigan (1981, 1982)
    • notes (handwritten), audio recordings (digital), photos (digital), video (digital) from masterclasses (Orford 2005, 2006; Italy 2012, 2013, 2014, 2015, 2016, 2018, 2019);
    • notes, audio recording, and video recording of “Music as a Language” lecture-demonstration (2007, 2014)
    • audio recording (digital) and notes (handwritten) of “Illuminating Introductions” to some New Music Concerts in the past decade
    • interviews, audio-recorded, with flute students (about 50-70)
    • interviews, audio-recorded with friends and associates (about 25 - 40)
    • interviews and discussions with Aitken (most audio recorded, with hand-written or digital notes)
    • correspondence between me and Aitken (handwritten)
    • Robert Aitken's flute teaching, a concept map created using CMapTools, still being refined, with nodes that will be linked to pages in this wiki
  2. Data from New Music Concerts
    • programs
    • newsletters
    • podcasts by Paul Steenhuisen
    • recordings of all concerts (CD)
    • database (spreadsheet) of all pieces performed in all concerts
    • correspondence and other organization files (paper)
  3. Data from Aitken
    • letters to parents (about five decades), paper; scanned as jpegs
    • other correspondence
    • binders of programs, reviews, and other event material 1958 to present (not yet digitized in any form, except for a few hundred documents, which have been photographed)
    • datebooks (paper; photographed as jpegs)
    • photocopies of pages from his notebooks
    • binder and files related to masterclasses
    • magazine articles, theses, and other post-graduate documents about Aitken
    • scores and manuscripts (his compositions, his collection of performance scores, scores of music submitted for possible performance in New Music Concerts)
    • photographs (mostly prints, some slide, some recent digital)
    • memorabilia
    • personal files (correspondence, household, income tax, etc.)
    • posters
    • instruments
    • unpublished recordings (reel-to-reel, cassette)
    • published recordings (LPs, CDs)
  4. CBC (I haven’t contacted CBC to determine what they have and what access I might have, but they have many recordings, several interviews, and possibly a good deal of correspondence concerning recordings of concerts and recordings issued under CBC’s own label.)
  5. Other archival sources (Canadian Music Centre, University of Toronto Music Library, National Archives, Library of Congress)
  6. Journal Articles (Flute Talk, National Flute Association Flutist Quarterly)
  7. National Flute Association conference program booklets

Data Management Problems

  1. How do I organize the materials so that they are physically accessible and adequately catalogued? This is complicated by the fact that I don’t have the same sort of access to all of the materials. Aitken’s materials are in four places: the New Music Concerts office, his down-town studio (scores, posters, some correspondence), his apartment in Freiburg (I’ve no idea yet what of significance is there), and his house (where some materials are highly organized and others are jumbled or physically awkward to access).
  2. How do I digitize the materials in preparation for digital organization and analysis (content, meta-data)? (Metadata need to include source and status, e.g. whether it has been verified or approved by Aitken himself.)
  3. How should I structure data that I want in searchable and annotatable form (life events, pieces played, students, friends, and acquaintances, etc.)?

Design Development Pathway

  • consolidate and edit all design notes to date (from wikis and notebooks) (DONE)
  • select examples of concert events from New Music Concerts and notes about teaching (in progress)
  • attempt to create classes for concerts and for teaching elements (table structure designed)
  • import concert date from a spreadsheet
  • enter teaching element data directly (begun)
  • develop a set of queries and browsing strategies test them out (initiated)
  • revise description of the data and modify the data structure as needed to improve browsing and querying (ongoing)
  • retest with existing data
  • test editing of existing pages using modified templates and fix as needed (in progress)
  • delete all data if necessary (did initial cleanup of test data; probably not necessary to make a clean start)
  • repeat with a larger and broader set of data
  • clarify design documentation in preparation for technical design review
  • clarify content contribution documentation in preparation for user design review

Ttest of importing data from a spreadsheet:

  1. Choose a few New Music Concerts (NMC) concerts for which I have full programs
  2. Prepare a spreadsheet with rows (records) from those NMC concerts, with columns (fields) Composer, Composition, Date
  3. Upload the rows, with each row being a piece (Composition)
  4. Verify that the proper pages are created
  5. Add records with a second upload, but with another field (Concert Number).
  6. Add details on performers, program notes, composer biographies, performer biographies, etc.

Design Journal


(notes made 16.05.12). I made a new class and did some additional work that led to two categories (Composer, Performance), two templates (Composer, Performance), and two forms (Composer, Performance). The Composer template defines the properties Surname, Given Names, Date of Birth, Date of Death, and Citizenship. The Performance template defines the properties Composition, Composer, and Date.

I learned that pages of a particular category may be edited using a form; furthermore, if that form is changed, then the changes are reflected in the editing pages of the given category. The same applies for the underlying template that the form uses.

The form contains code identifying the template that it uses. The corresponding category page has code that specifies the default_form used in editing pages within that category. I wonder what would happen if a page had two categories, each specifying a default_form.

The composer template contains the code | {{#ask:[[Composition::{{SUBJECTPAGENAME}}]]|format=list}}. I created the structure by creating a new class and possibly some other steps (don't remember exactly), which led to an additional row in the table on each of the Composer pages labelled "Performances of Compositions" but no display of contents.

The Performance pages have a three-row table with labels Composition, Composer, and Date. The Composition row has no data, but the Composer row has the name of the composer with a link to the corresponding composer page.


With this structure, I can go from a Performance page to the page of the corresponding Composer, but the Composer page does not have link to performances of the composer's works. That is not satisfactory; something is wrong with the structure.

Having separate fields for surname and given names, would not seem to be useful. (Later decided to keep separate fields, to allow Composers category page to display in alphabetical order by surname.)

Test #ask to see why it doesn't work. Created Query Test Page. Did several tests using it and also one of the Composer pages. Looked at each Property page, which lists all the pages that use that property. All 4 Composer pages and all 4 Performance pages used the "Performance" property, but only two pages Lost Paradise and Hallelujah, both Performances, used the property "Composition". I had added it by hand. Did the same for the other two.

I need to be clear about what things are represented by Categories, what by Properties, and what by both.

I also need to design pages and decide what would be standard fare for them and what would be generated through Queries.



  • Get each Composer page to display compositions by that composer
    • Composer pages use the Properties "Composer" and "Composition". Performance pages use the property "Composition".
    • Clarify what #ask is using
      • title of page belonging to a particular Category?
      • value (object) of a Property used by a page belong to a particular Category?
      • other?
  • figure out how the #ask code in the composer template works
  • design the display of typical pages
  • rework the structure so that those typical pages are generated

Copied notes on design into the page Canadian Musician Robert Aitken:Database Design. Read more about Cargo and seriously considered the option of using it.

Started testing Cargo. Couldn't figure out the equivalent of Special:CreateTemplate to create a template that would define a table. Coded a template Template:Cargo_Composer that defines the table "Cargo_Composers". Called it from the contents of a page Cargo_Xenakis and realized I hadn't included the display instructions in the template. Added that and fixed errors.

Next steps

  • figure out how to create the table that has been defined [DONE]
  • fix the template; Composer is supposed to be of type "Page" but there is no link displayed. Citizenship is in bold and it's values are links although they were specified to be strings. [FIXED]
  • create a form for creation of more elements of the table. (Is Cargo_Xenakis a row in the table that has not yet been created? [DONE, Question now irrelevant]


  • Did more reading of Cargo usage documentation, and fixed problems as I went
  • The table declaration had a typographical error in the #cargo_store declaration. Fixing that led the the table being created, but I discovered that it had zero rows.
  • I then recreated the table (a link on the table page) and then viewed the table. It had one row.
  • Fixed syntax problems
  • Created a Form using the Cargo_Composer template; didn't include input Citizenship; Doesn't show "Edit with Form"; tried to find how that is declared


  • read about Cargo Querying; HOLDS and HOLDS LIKE are useful SQL sugar commands for dealing with fields that have lists as values; native SQL commands may also be used
  • Cargo browsing mechanisms: Drill-down (displays table with automatically chosen filters based on type of field); simple query form (on [Special:ViewData]; viewing entire table contents from the table page

Next steps:

  • draft mockups of typical pages, then figure out what needs to be structured to realize them
  • learn how to create pages (through templates) that allow details to be displayed or hidden by clicking on a button


Next steps

  • to deal with problem of unique page names, determine whether Cargo table rows can be generated with the creation of pages whose names are concatenations of values of several fields; e.g. a concert page would be named: Series--Title Date
    • First idea: e.g., have a field called FullConcertName of type Page, and calculate its value by concatenating the values passed to the fields Series, Title, and Date; possible problem--those values might not be available
    • Second idea: have a succession of calls to #cargo_store, the first of which puts in all the data asked for in the full call and the second of which then uses those data to calculate and store the data in the field of type Page; the problem with that is how to identify the table row from which to draw the data, but assuming it is the last row, it might be possible to identify it by row number
  • refine list of tables and fields, determine naming and categories
  • clarify search capabilities, in relation to MediaWiki capabilities
  • examine Cargo Display formats for field and data type implications [1]
  • decide how to deal with "life events"
  • clean out SMW and Cargo-test garbage
  • revise Sidebar
  • consider which fields to have searchable text
  • repeat [built table, populate with 3 examples]

Actual steps

  • experimented with calculated fields (tested with Cargo_Composer for LifeRange, FullName from Surname and GivenNames), with basic success. FullName was of type Page, but what appeared on the particular Composer page isn't what I want. I was left with these quirks:
      • LifeRange displayed properly in Table display but didn't show in individual Composer pages
      • In using Composer form to create a new page, DOD shows three boxes for Month, Date, Year, but DOB doesn't, even though both fields are declared of type Date.
      • quirk: in using Cargo_Composer form to create a new page, it requires a name for the page, but the name of the page associated with the row of the table being created is supposed to be calculated, and then that page is supposed to display the value of all the fields
  • Thought of adding a delete command to get rid of that page once the properly named (through calculation) one is created: e.g., a general form of w/index.php?title=Boulez&action=delete
  • I cleaned house (getting rid of all SMW-related materials and all pages. The quirks still remain. The bottom line is that I have the right values for each field in table. The problem lies with the associated page. I will try changing the display part of the Composer template.
  • I discovered that when a new form is created using the Template "Composer", the field data type choices for DOB don't included "date" but do for DOD. I did discover that I could resolve the other quirk with GivenNames by changing it to text.


  • got responses to key questions. As a result:
    • need to learn more about Semantic Forms, including the onestep process of entering data and setting the "create title" parameter of the info tag (see Defining forms)
    • can hardcode field type for Cargo tables using the "cargo table=" and "cargo field=" parameters.
  • met with Max; got him started preparing NMC database for uploading
  • tried hardcoding input type in the form Composer for dates; didn't work; when I then hardcoded input type for GivenNames as string, the DOB came out properly, but GivenNames was still a dropdown menu
  • didn't have success with shifting from #forminput to #formlink
  • figured out how to call a form that uses #formlink; had trouble getting page name parameter set properly (syntax problem)
  • very close to a solution (maybe). Define info tag {{{info|page name=<Composer[FullName]>}}} but get error message The specified target page <Composer[FullName]> is invalid..


(notes made 16.05.19)

  • got one-step process working by calling [Special:FormEdit/Composer], since Composer was the form I used for experimentation
  • learned that I could use a data input field for the name of the page created when the form was submitted, but got an error message when a field was used whose value was obtained from the values input to two other fields


  • modified "New Composer" Sidebar item to link to Special:FormEdit/Composer
  • read [Help:Templates]; need to reread [Help:Templates#Order_of_evaluation]. Reread the latter to understand it fully. Also need to understand very clearly noinclude, includeonly and onlyinclude.


  • posted problems on Cargo list; got replies promptly; fixed everything in the form and the template; can now proceed with creating full templates and forms for each category
  • re-organized Sidebar; added section "Using the wiki"
  • minor reworking of Table structure (needs considerable work, including descriptions of each field and indication of how new pages will be named when created using forms


  • added Timeline using timeline display extension


  • developed data entry strategy as a guideline for completing the table structure design
  • began adding structure of hybrid page-names and expanding table specifications
  • need to consider options for assisted data entry of page names from existing pages (e.g., when entering program data, names of piece performances on the concert date show in a popup)
  • need to determine whether large amounts of text should be in a designated field or simply as "free text" (probably the latter)


  • complete data specifications (almost completed; added sequence of data entry; keep running into design dilemmas of categorization in data entry sequence)
  • test what happens when a field takes a list of values and the possible values are to come from a field in another table (e.g. field|Composer|autocomplete on category=Composers) and to be displayed as options (have this working properly now)
  • begin construction and testing of tables, templates, and forms


  • no work done May 24
  • dilemma: Should the Concerts table have a field for a list of pieces and another for a list of program notes? If the Pieces table has a field for Concert, then each Concert page could display a list of pieces, with a list of performers after each piece, or ideally, a list in the form, instrument (performer), instrument (performer), . . .
  • added more table structure details; still to do: Broadcasts, Interviews, and general cleanup


  • completed remaining table structure details including cleanup, including clarification of (expected) data entry sequence for associated tables
  • expect at least minor redesign will be needed in several stages:
    • construction of templates, tables, and forms (additional insights)
    • development of several sample pages for each table (problems of sequencing, data entry including autocompletion)
    • development of queries, including those that lead automatically, or optionally to display on pages
  • will need to revise and complete the design of pages and queries


  • delete all data pages; delete or edit all templates and forms
  • start with a Piece, Piece Performance, Concert triple; enter at least three concerts
  • defined Piece template and Piece Form
  • left many things to fix:
    • rework field names using upper camel case (e.g., GivenNames)
    • fix field data types (specify in form as well as in template?)
    • with data entry, start with composers, then pieces, then concerts and performed pieces
    • create Form Guide (cf Template Guide); add notes


  • consider other possible skins, including Vector (changed background colour; uploaded logo, should be 135 x 135 px)
  • consider using Header Tabs
  • finish cleanup of field names (done) and start table construction


  • discussed database structure with Ed T. ; use many-to-one, one-to-many for many-to-many; pay attention to keys; put each field in only one table
  • cleaned up field name changes in forms and templates
  • revised template Template:Piece and form Form:Piece
  • not sure whether #arraymap is used properly; getting commas in display of list rather than specified semi-colon
  • forgot how to populate table (use tab on template page)


  • add templates and forms for PerformedPiece and Concert, populate tables with examples



  • cleaned up syntax of templates (do one more check)
  • need to review forms; then redo sample pages and repopulate tables


  • fixed default form syntax; e.g. {{#default_form:Piece}} that goes in the Category page (in this caseCategory:Piece)
  • list input is working for Composer field in Piece template; listing of pieces by a composer is working in Composer template
  • still can't get DOB for Composer to show, using Composer form as proper Date field (with three input boxes) Yaron Koren explained, "This sounds like an error in Semantic Forms' parsing of the template . . . . But if you ever encounter such an error, you can get around it by hardcoding the Cargo information in the form field, using the "cargo table=" and "cargo field=" parameters." Not sure how to use these parameters or where to find documentation.


  • See Semantic Forms/Input types--Setting values and mappings for comments on use of "cargo table=" and "cargo field=" parameters.
  • in the Form:Composer, I set these parameters as follows: | {{{field|DOB|cargo table=Composers|cargo field=DOB}}}, which then forced the proper three-part input display for month, date, and year. Doing the same thing for the Form:Piece in the Instrumentation field did not replace the commas (default) between the instruments with semi-colons, as I expected from the associated template.


  • continue experimenting with the separator between multiple entries in the Instrumentation field of Pieces (no luck)
  • find out why new Composer pages has a comma in its page title On the Sensations of Tone II by Anthony Tan,
  • now all new pages have a comma at the end; possibly because Composer is a list; forced form to take data for Composer from table, but no change
  • still no change to separator for Instrumentation; semi-colon is required as separator for data entry
  • refreshed tables; in creating new piece, list of composers did not include all in the Composer table
  • next try piece with two composers (still problem with commas)
  • need conditionals in construction of page title for Pieces, better format, e.g. Automatic Duo, Op. 13, David Jaeger and James Montgomery (1972); possibly do using separate template


  • posted question June 14 about separator problem in lists; got answer June 15; removed #arraymap call from Instrumentation display instructions in Template:Piece, which solved that problem


  • deleted test pages and pages with incorrectly generated titled; recreated two Piece pages with revised Piece form
  • in Piece template, changed Composer type from "List (,) of Page" to "Page"
  • in Composer template query to list pieces, replaced "HOLDS" with "=", since HOLDS is used only with list (got rid of error messages!)
  • changed order of display in query in Composer template so _pageName is on right and has alias title "Details"
  • got Composer field value on Piece pages to be a link to the composer page by changing display of "Composer", in the Piece template, to read [[{{{Composer|}}}]]
  • updated table specifications in keeping with changes made
  • added fields to Composers table; need to update composer pages


  • fixed error in Composer table (RelationshipToRobertAitken), checked, regenerated table
  • changed "Event" to "Personal Event", checked its template and form and tested
  • added Event Map (info on Maps extension) using display googlemaps; simply need to include one field of type Coordinates in field list; can get coordinates from an address using gps-coordinates site.
  • experimented with timeline; didn't succeed in joining two coordinates; controlled height; need to learn how to control number of time bands, their parameters, and how to include several sets of data from different tables
  • decided to change data type for source from Page to Text; if it's a page, can add square brackets on data entry
  • Defined templates and forms PiecePerformance, Concert, and ConcertSeries
  • Took pieces and composers from New Music Concerts program July 29 1972; created


  • asked Yaron Koren to remove SMW; done; now Special:CreateTemplate works properly for Cargo tables, as does Special:CreateForm
  • created templates and forms for ConcertSeries, Concerts, and PiecePerformed tables
  • fixed PiecePerformance form
  • added three Concert Series pages; created/edited pages for composers and pieces in July 29, 1972 NMC Concert at the NAC
  • Need to make sure time doesn't get on the page title for concerts
  • figure out how to list performers and instruments together, drawing from two separate tables (may not always know which pieces were conducted)
  • test the new templates and forms
  • continue creating templates and forms


  • created Template:CargoLinks to put links to relevant Categories, Templates, Forms, and Cargo Tables, in Database Design--Table Structure
  • edited PiecePerformance template (DateTime, Performers), but didn't test
  • read about autocompletion; can specify autocompletion on a category (specified in template or form?); need to learn syntax of parameter and test out
  • created a page schema for the category "Lesson" (from tab on category page); still need to edit the form to generate the page title properly and need to create schema for Person
  • need to find out how to extract the date from datetime field DONE
  • could also consider using CreateClass
  • Composer, Performer, and Student (need to create) should all be subcategories of Person. Some people will be in all these categories
  • Add Correspondence scheme


  • found out how to control listing order on category pages; did for Composers {{DEFAULTSORT: {{{Surname|}}}, {{{GivenNames|}}} }}; tested in Template:Composer, gives correct ordering, still displays page name
  • date extraction form datetime: use #time parserfunction, e.g. {{#time: F j, Y | {{{DateTime|}}} }}
  • added Date field to Concert, with value extracted from the value input for the field DateTime
  • fix page names to get desired date: renamed (moved) one page (works fine); DateTime box in form input is not displaying correctly; fixed by specifying, in the DateTime field call in the form, the Cargo table and Cargo field; still got error message, e.g., The specified target page Foro_Internacional_de_Música_Nueva--Robert_Aitken_(Canadá)--<Concert[Date]> is invalid.
  • tried {{{info|page name=<Concert[SeriesTitle]>--<Concert[TItle]>--{{#time: F j, Y | <Concert[DateTime]> }} }}} The specified target page Foro_Internacional_de_Música_Nueva--Robert_Aitken_(Canadá)--Error: Invalid time. is invalid.
  • tried {{{info|page name=<Concert[SeriesTitle]>--<Concert[TItle]>--{{#time: F j, Y | {{{DateTime|}}} }} }}} Got The specified target page Foro_Internacional_de_Música_Nueva--Robert_Aitken_(Canadá)--Error: Invalid time. is invalid.
  • mistake in Template:Concert, missing | in Date declaration; removed inclusion of Date in page title; added display of date to template; still didn't get display of date.
  • use separate fields for Date (only) and Time (only)
  • fix listings for all category pages (alphabetization) using DEFAULTSORT


  • having two input fields ConcertDate (Date) and ConcertTime (Datetime), requiring duplication of date. Better to make ConcertTime a text field, since it won't be used for sorting. Made it of type string. Looks fine; works fine. Can also use text entry such as "not specified"


  • fixed bad link from sidebar to PiecePerformance form
  • created a PiecePerformance. Status field showed as popup, not check (changed data type to Boolean in template). Error: Unknown Cargo field, "DateTime". Removed time and date fields. Used #cargo_query to try to display date and time. Error message: Error in "where" parameter: the string "--" cannot be used within #cargo_query. Tried some workarounds. Either have to get help or need to change convention for constructing page titles for pieces and concerts and any others that have hyphens. Would it make any difference if the hyphens were replaced with &ndash; or&#8211; or &mdash; or&#8212; ?


  • experimented with emdash instead of -- in page names. Acceptable in page name. Seems ok in #cargo_query. Still problems with "where" parameter. Still getting SQL syntax errors. See First—Last_performed_at_Prelude_in_the_Studio--New_Music_Concerts--July_29,_1972
  • an em dash: —
  • changed Piece template to use an em dash in the title: Title—Composer
  • change existing pages with -- in their titles and change the corresponding forms
  • for the May 14 1987 concert, created needed Composer pages and started creating Piece pages. Then create the Concert page and PiecePerformance pages, and continue experimenting with querying to present data from tables other than the one to which the page belongs (for PiecePerformance and Concert pages)


  • resumed work at Aitken in Italy seminar
  • FluteTeaching: created template and later added included line to add page to the category whose name is the value of the Topic field (order of creation: template, form, use link on template to populate corresponding Cargo table)
  • to make the Topic a subcategory of FluteTeaching, need to add Category line to source of the Topic category page


  • resumed again, in Toronto (Aitken's studio)
  • noticed in Teaching template, subtopic was defined as of type Text rather than Page. Didn't change. Wondered whether is should be Page.
  • added space before ]] in | [[:Category:{{{Topic|}}}|{{{Topic|}}} ]] in Flute Teaching template, remembering vaguely about some quirky parsing bug; Articulation is in the category FluteTeaching, but forgot how it got there


  • create page with overview of Aitken prepared for NFA talk
  • create "Getting Started" page, with material from NFA talk script and handout and from opening sessions of recent Aitken in Italy masterclasses; link from the overview page
  • request assistance on problem of queries involving fields whose values are lists (in relation to Piece Performance pages (good way to list performers with their instruments) (Solved the problem by removing hyphens from page titles and using single quotes to bracket strings for the sought value in the "where" parameterization of MySQL query
  • update links to CMapTools concept map (CMap server down; sent request for reboot)
  • resolve problems of automatically establishing proper categories for teaching notes (topics and sub-topics); test with one or two more examples


  • revised Cmap; printed (one 36" x 24", one 18" x 12"); use to identify gaps and structural re-organization
  • removed dummy pages
  • removed pages with double hyphens in their titles; deleted "moved" pages
  • checked all remaining pages, and uncovered several defects


  • began Getting Started page; edited several pages (Main, Reader's and Contributor's guides, Flute Teaching category page


  • started a technical manual for creating and editing pages and structure Tech_Notes—Structure_and_Content_editing; put link on sidebar; include sequence for piece, piece performance, composer, concert series, concert
  • finish Getting Started page (using materials from masterclasses)
  • complete two or three teaching pages
  • checked previous record for work still to do, unresolved problems, and technical notes; moved "to do" items to current daily log; moved or copied problems to Questions and Dilemmas section of this page; moved or copied some technical notes to new page Structure and Content editing
  • reread log form June 6 to end of June and extract key notes
  • fix form for ConcertSeries, needs to be tab to edit with form
  • check that all pages using a template for primary content are editable with a form (Personal Events are not)
  • check tables
  • double check to make sure that single quotes are needed to delimit query strings
  • check on page name conventions; some have a period (.) before the date; and one has a start date and end date with only a space between the two
  • check all forms for instructions on data entry, especially instrumentation lists (punctuation)
  • ConcertSeries without Concerts: New Music Concerts
  • composer pages with no pieces: So Jeong Ahn, Jonathan Harvey, David Jaeger, György Sándor Ligeti, Carlos E. Malcolm, James Montgomery, Roger Reynolds, Klaus Hinrich Stahmer, Paul Steenhuisen, John van Burhen
  • add pieces for composers without piece entries
  • consider adding coordinates for concerts, to enable map display
  • add piece performances for all pieces
  • complete concert pages to include all composers, pieces, and piece performances
  • add other tables; consider adding an "Anecdotes" or "Stories" table
  • extract data from complete programs on line for NMC from 2000 on
  • create Form Guide (cf Template Guide); add notes


  • resumed work on wiki; re-oriented myself to database design and examples of pages; partially reviewed Database design notes


  • created entries for NMC SLOWIND Concert December 2, 2016 (composers, pieces, pieceperformances; corrected forms to replace double hyphen with emdash and redid the affected pages
  • began to edit Concert template in order to display the list of PiecePerformances. Added table listing piece and performers. Need to pull in Instrumentation, but may have to pull them into PiecePerformances first. Edited PiecePerformance template, but that created errors. Need to fix.
  • need to decide what to do about program notes
  • add ProgramNotes category, template, form, and table and add program notes from SLOWIND concert
  • review and update of list of concerns and problems to address


  • resuming work!
  • Should Sponsor be a list? Some concerts are sponsored jointly by two or three organizations.
  • status of SLOWIND Concert Dec 2 2016
    • no results for "Pieces Performed"
    • each of the Pieces Performed has the list of performers but not the list of instruments
    • each of the pieces has the list of instruments


  • restarting:
    • review Cargo sections of Yaron Karen's revised Working with MediaWiki (especially queries and formatting details)
    • writing:
      • complete Getting Started: add references and citations, continue adding sections; add photos; review with RA
      • Start making reference pages with contents and page numbers from notebooks, content and times from recordings
    • design
      • fix design for Concert, in relation to PiecePerformance, Piece, Composer, Musician
      • fix FluteTeaching template in relation to creating categories
      • review design notes
      • complete tables


  • read Ch. 17 Page Forms of Working with MediaWiki; pay special attention to arraymap
  • started Practice Page to test key Wikitext

problem of display of piece, composer, performer-instrument(s) list, in PiecePerformed pages and Concert pages

    • reread and the example given
    • need to specify the tables from which I'm drawing data and to use "join on" to specify common field from those tables to link rows; consider using Wikitext as field type
    • Will I be able to map pairwise across the list of performers from one table and the list of instruments from the other?
    • First need to review existing structure, and get rid of message on the Cargo table page that says "Note: One or more of these tables are currently being populated, via the job queue." Deleted all tables, but the job queue message persisted. (Yaron Karen deleted the hung process as requested.)
    • note that the Concert table doesn't need to have a PiecesPerformed field
  • event timeline calls don't work (see EventTimeline) Check field types for times and other fields used
  • found Template page I made called Template:CargoLinks used to display a set of links to category, template, and table pages for a given table


  • begin moving technical notes from journal to Canadian_Musician_Robert_Aitken:Tech_Notes—Structure_and_Content_editing (started)
  • reread info on #arraymap (done, but no new information gleaned)
  • Review Table building templates and forms, editing as needed (design review and editing), rebuild tables (begun; have piece performances displaying in Concert pages, but without instrumentation
    • Would be helpful to have a chart (table?) that for each Cargo table lists the fields, field type, and source (direct entry or calculated), and any parameters and their values (links in Database Design using Template:CargoLinks
  • resolve performer-instrument(s)-list problem, or post a question asking for help (getting closer)
  • complete design and construction of remaining tables


  • To get nicely formatted performer--instruments list, write a template and pass it a PiecePerformance page name and the list of performers. The template looks up the instrumentation list, and then creates a table whose first row is the performers and the second, is the corresponding instrumentation.

See [] for further details on #arraymap and #arraymaptemplate.

  • created and experimented with variations of a test template called [Template:PerformerInstrumentationList]. Used #arraymap, and gave it for value two successive field names with something in between. For example, this:

{{{Performers|}}} listseparator {{{Instrumentation|}}} produced the Performers list, followed by the exact text in between the two field calls, followed by the second list. What I want to be able to do is to effect wiki formatting action by having it treat the text as wikitext.


  • formulate Performer-Instrument problem
    • determine how to deal with performers (table?) and whether separate tables are needed for performer composer, and person
    • list all relevant tables (Performers?, Composers, Pieces, PiecePerformances, Concerts) with fields and field types
    • describe problem and post
  • formulation of the problem:

Cargo table list coordination problem

Example: Music concert database

Problem: Coordinating two lists from different tables—ensuring they match on data entry, and displaying them nicely. In particular, instruments are listed in the Pieces table and performers are listed in the PiecePerformances table. They need to match.

Tables in question: Field1 (type), Field 2 (type), . . .

Pieces: Page, Composer (page), Title, . . . (where Page is calculated: Title—Composer)

PiecePerformances: Page, Piece (page), Concert (page), Performers (list of page) (where Page is called: Piece performed at Concert)

Concerts: Page, SeriesTitle (page), Title, ConcertDate, ConcertTime, etc.(where Page is calculated: SeriesTitle—Title—ConcertDate)

A concert page displays all the PiecePerformances for that concert.

Here are the two things I haven’t figured out how to do:

1. A pieceperformance page should display the performers along with the instrument(s) that each performer plays, something like this:

performer1 (instrument1) - performer2 (instrument2) - . . .

2. I would like the data entry form for a piece performance to take the entered name of the piece and then get and display for that piece each instrument, with a box for entering the corresponding performer. That would seem to be a two-step process.


- resuming - recreating data for PersonalEvent category led to error; no table shows in list of Cargo tables


- see Extension:Cargo for Hierarchy extension; consider re database redesign (release 1.4 of Cargo)


- showed wiki to Paul Taub. Will ask his help in reviewing cleaned up structure and vetting materials for content and usefulness

Technical Questions and Dilemmas

  1. Biggest design drawback: names of many pages are generated by data input to forms, but do not get updated dynamically if the original data from which the titles were generated is changed (may be possible to address this partially using Replace Text extension)
    1. (See Planned features) "A new parser function to indicate that a page whose name was created with a formula based on one or more of its template fields should be automatically renamed if any of those field are changed"
  2. review design specifications for tables (primary data structures) and add specifications of what should be displayed on the pages associated with each table row. This should help to review what fields are needed and to avoid unnecessary fields; e.g.does the Concerts table need fields for Pieces, PiecePerformances, and ProgramNotes? (May be helpful to create data structure schemas using Page Schemas extension)
  3. How should program notes be handled? Associated with PiecePerformance? Consider the cases where a concert has only one composition by a given composer and when it has more than one.
  4. How should References be handled? Some table rows may have more than one source. (Can add other sources in the main body of notes, or could use multi-valued field.)
  5. Can a field of type URL include display text different from the URL? If need be could use Wikitext.
  6. What happens when a form, with associated template, is used to edit a page that already exists and has been edited using a different form?
  7. In the Cargo Table FluteTeaching, the Topic should be a Category page, not an ordinary page, although I would prefer the display to be, for example "Articulation", not "Category:Articulation".
  8. How can one give the reader control over whether or not a query is executed?
  9. How does one edit autocompletion specifications?
  10. Making sure autocompletion list is complete (a major consideration as the database becomes sizeable)
  11. What is involved in extending the wiki to an interlanguage wiki (see Multi-language wikis )?

Namespaces and their Use

Category pages are stored in their own namespace, as are Template-definition pages, form-definition pages, and concept-definition pages.

Templates are used for formatting pages generated indirectly and for formatting results of queries.

Forms are used for data entry, and for conducting queries.

Concepts are sets of pages corresponding to a particular query.