From 6e3b781a2782a7e8143efdfaf5f80217198d1a3c Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Thu, 4 Jun 2020 02:12:54 +0100 Subject: [PATCH] Sorting out troggle design docum. --- handbook/computing/go-caving-th.jpg | Bin 0 -> 6335 bytes handbook/computing/go-caving.jpg | Bin 0 -> 40912 bytes handbook/computing/mtv_drawing2.jpg | Bin 0 -> 22398 bytes handbook/computing/onlinesystems.html | 4 +- handbook/survey/drawup.htm | 15 +- handbook/survey/why.htm | 4 + handbook/troggle/archnotes.html | 314 ++++++++++++++++++ handbook/troggle/mtv_drawing2.jpg | Bin 0 -> 22398 bytes handbook/troggle/schema.json | 296 +++++++++++++++++ handbook/troggle/trog2030.html | 80 +++++ handbook/troggle/trogarch.html | 21 +- handbook/troggle/trogdesign.html | 3 +- handbook/troggle/trogdocm.html | 14 +- handbook/troggle/trognotes.html | 307 +---------------- .../{trogdesignx.html => trogspeculate.html} | 0 15 files changed, 749 insertions(+), 309 deletions(-) create mode 100644 handbook/computing/go-caving-th.jpg create mode 100644 handbook/computing/go-caving.jpg create mode 100644 handbook/computing/mtv_drawing2.jpg create mode 100644 handbook/troggle/archnotes.html create mode 100644 handbook/troggle/mtv_drawing2.jpg create mode 100644 handbook/troggle/schema.json create mode 100644 handbook/troggle/trog2030.html rename handbook/troggle/{trogdesignx.html => trogspeculate.html} (100%) diff --git a/handbook/computing/go-caving-th.jpg b/handbook/computing/go-caving-th.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5458d27a391c37fb363a1be1563f3c04c72a6d4c GIT binary patch literal 6335 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 Pe(`T7^Ph>Ji}C*gpjhp& literal 0 HcmV?d00001 diff --git a/handbook/computing/go-caving.jpg b/handbook/computing/go-caving.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5dd367866edfd7f86744f0f462c76e491338b9d GIT binary patch literal 40912 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ⅆ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 IcwV3X*>9_)i~s-t literal 0 HcmV?d00001 diff --git a/handbook/computing/onlinesystems.html b/handbook/computing/onlinesystems.html index 7acb96615..0c2b40edb 100644 --- a/handbook/computing/onlinesystems.html +++ b/handbook/computing/onlinesystems.html @@ -48,10 +48,10 @@ This page is the overview. The online systems manuals are split into these secti
  • Recording a new cave discovery
  • Monitoring the cave survey workflow status
  • -

    Surveying and recording survey data is the primary reason all this exists. The "survey handbook" part of this handbook gives instructions to beginners for how to record discoveries and surveys. The "data maintenance" manual is where to look for help when things go wrong: the data has been entered incorrectly, or software has crashed due to corrupt input data. +

    Surveying and recording survey data is the reason all this exists. The "survey handbook" part of this handbook gives instructions to beginners for how to record discoveries and surveys.

    The "data maintenance" manual is where to look for help when things go wrong: the data has been entered incorrectly, or software has crashed due to corrupt input data.

    The "system maintenance" manual may of interest to a caver who wonders how it is all put together but should not be needed by most people.

    -A fuller list of "How do I..." instruction pages are on the handbook opening page. If you are new to this you may need a beer. +A fuller list of "How do I..." instruction pages are on the handbook opening page. If you are new to this you may need a beer. A very fine place for a beer is the Panorama Restaurant at the top of the toll road - as illustrated.


    We have an Overview Presentation (2015: many parts out of date) diff --git a/handbook/survey/drawup.htm b/handbook/survey/drawup.htm index 969cd2fbb..2f392ec9d 100644 --- a/handbook/survey/drawup.htm +++ b/handbook/survey/drawup.htm @@ -53,7 +53,7 @@ as the scanned notes, i.e. (for wallet #19) you would put them in: /home/expo/expofiles/surveyscans/2018/2018#19/ - +(but this is not where you will put your finished drawings.)

    Using tunnel or therion for final survey production

      @@ -67,9 +67,11 @@ as the scanned notes, i.e. (for wallet #19) you would put them in:

      The tunnel (or therion) files should NOT stored in the same folder as the scanned notes. They will eventually be uploaded to the version control repository drawings -but for a first attempt store them on the expo laptop in /home/expo/drawings/{cavenumber}. +but for a first attempt store them on the expo laptop in /home/expo/drawings/{cavenumber}. Look at what is in there already and ask someone whcih directory to put them in. It will probably be a folder like this: -/home/expo/drawings/264-and-258/toimport/ . + +/home/expo/drawings/264-and-258/toimport/ +

      Take the printed centre lines and redraw the survey round it, working from the original sketches as if this was to be the final published survey. You @@ -121,10 +123,11 @@ which will be encountered (eg. if it is a climb, are bolts going to be needed ? If a dig, is it a few loose boulders or a crawl over mud?)

      Archaic: hand-drawing the final survey

      -

      The actual published cave-survey is produced by software these days. These notes come from a different age but reading them will make your tunneling better - and more polished. + and more polished: +

      +

      Drawing a cave entirely by hand is not easy but anyone can learn to do it. Read the brief Cave Mapping - Sketching the Detail" 5-page llustrated guide by Ken Grimes which makes everything clear. @@ -160,6 +163,8 @@ experience: it's now late April 2004, and the 204 survey is only just approaching completion. This shows how easy it is for these things to go wrong. The chief problems were a change of software and the fact that the Expo printer broke down last summer, so a number of surveys never got drawn up. --> +

      +

      Back to the previous page in this sequence Starting a new survex file.
      Now go the the next page in this sequence Creating a new rigging guide". diff --git a/handbook/survey/why.htm b/handbook/survey/why.htm index e86f7b27c..383214284 100644 --- a/handbook/survey/why.htm +++ b/handbook/survey/why.htm @@ -19,6 +19,10 @@ didn't. Without detailed recording and surveying of the caves, it would rapidly become more difficult to find new passage, or to be sure that round the next corner wouldn't be a load of previous explorers' footprints.

      + + +

      The main aim of the expedition is to explore new passages - to boldly explore what noone has seen before. Indeed, in many cases, what noone even suspected was there. This is the fun and excitement of expo, so why spoil it diff --git a/handbook/troggle/archnotes.html b/handbook/troggle/archnotes.html new file mode 100644 index 000000000..d5600d84d --- /dev/null +++ b/handbook/troggle/archnotes.html @@ -0,0 +1,314 @@ + + + + +Handbook Troggle NOTES + + + +

      CUCC Expedition Handbook

      +

      Cave data management Archive Notes

      + +

      NOTES - collected here

      + + +

      Historic "Future" Developments: Preamble

      +

      Assumptions (points to necessarily agree upon) +

        +
      1. Let's NOT try to design a generic catalogue for storing all kind of data about caves of the whole world, intended for every kind of user (sports, exploration, science). Let's just settle for a generic framework. Let geeks in individual countries or individual communities write their tools operating within this framework. +
      2. Let's try make it available for the layman, but still well-playable for the geeks. +
      3. Let's rely on already existing, popular technologies. Let's keep it open source and multiplatform. Let's try not to reinvent the wheel. +
      4. Let's not assume everyone has an Internet connection while working with their data. +
      5. Let's version-control as much as possible. +
      6. Let's support i18n - let's use UTF-8 everywhere and cater for data in many languages(entrance names, cave descriptions, location descriptions etc.) +
      + +Everything here is not current - this page just records a lot of unfinished ideas. +Most people will not want to read this at all. This is for speleosoftwarearcheologists only. + + +

      Two page preliminary design document for 'caca' (Cave Catalogue) rev.2 2013-07-26 by Wookey (copied from http://wookware.org/software/cavearchive/caca_arch2.pdf) + + +

      The data management system conventions bit

      +

      This is likely to change with structural change to the site, with style changes which we expect to implement and with the method by which the info is actually stored and served up.

      +

      ... and it's not written yet, either :-)

      +
        + +
      • Structure
      • +
      • Info for each cave – automatically generated by [perl script] make-indxal4.pl
      • +
      • Contents lists & relative links for multi-article publications like journals. Complicated by expo articles being in a separate hierarchy from journals.
      • +
      • Translations
      • +
      • Other people's work - the noinfo hierarchy.
      • +
      • Style guide for writing cave descriptions: correct use of boldface (once for each passage name, at the primary definition thereof; other uses of the name should be links to this, and certainly should not be bold.)
      • +
      + +

      CUCC wiki on troggle

      + +

      CUCC still has an archive list of things that at one time were live tasks: +from camcaving.uk/Documents/Expo/Legacy/Misc/... and that page is reproduced in the table below (so don't worry if the URL link goes dark when CUCC reorganise their legacy pages). +

      Troggle is a system under development for keeping track of all expo data in a logical and accessible way, and displaying it on the web. At the moment, it is [no longer] under development at http://troggle.cavingexpedition.com/ + +But note that this is Aaron's version of troggle, forked from the version of troggle we use. Aaron uses this for the Erebus expedition. +

      +

      Note that the information there is incomplete and editing is not yet enabled. +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Feature

      Old expo website

      Troggle: planned

      Troggle: progress so far

      Logbook

      Yes; manually formatted each year

      Yes; wiki-style

      Start at the front page, troggle.cavingexpedition.com/ [1] and click to logbook for year. The logbooks have been parsed back to 1997.

      Cave index and stats generated from survex file

      Yes

      Yes

      Done; see troggle.cavingexpedition.com/survey/caves/264 [2]

      Survey workflow helper

      Yes; minimal. surveys.csv produced an html table of whose surveys were not marked “finished”

      Yes. Makes table of surveys per expo which shows exactly what needs doing. Displays scans. Integrated with survex, scanner software, and tunnel.

      See it at troggle.cavingexpedition.com/survey . Be sure to try a recent year when we should have data. Survex, scanner, and tunnel integration still needs doing.

      QM lists generated automatically

      Depends on the cave. Each cave had a different system.

      Yes; unified system.

      Done, but only 204 and 234 Qms have been imported from old system so far. No view yet.

      Automatic calendar for each year of who will be on expo when

      No, manually produced some years

      Yes

      Done; see troggle.cavingexpedition.com/calendar/2007 (replace 2007 with year in question)

      Web browser used to enter data

      No

      Yes

      Everything can be edited through admin, at troggle.cavingexpedition.com/admin . Ask aaron, martin, or julian for the password if you want to have a look / play around with the admin site. Any changes you make will be overwritten. Eventually, data entry will probably be done using custom forms. +

      Cave and passage descriptions

      Yes, manually html coded.

      Yes, wiki-style.

      Not done yet.
      +

      Expo handbook

      Yes, manually html coded.
      +

      Maybe. Needs to be discussed further.


      +

      Not done yet.

      Table of who was on which expo

      Yes

      Yes

      Data has been parsed, this view hasn't been written yet.

      Signup form, System for keeping contact, medical and next of kin info

      No

      Yes

      Signup form should be ready by 20 Jan.

      Automated photo upload and gallery

      No; some manual photo galleries put together with lots of effort

      Yes

      Photo upload done, gallery needs writing.

      Search

      No

      Yes

      + +

      List of cave database software

      +from wookware.org/software/cavearchive/databasesoftwarelist + +
      +ckan is something like this - could we use it?
      +esri online
      +
      +CUCC (troggle) http://cucc.survex.com/ - this site.
      +virgina caves database (access+arcgis) (futrell)
      +each country database
      +Austria (spelix) ( www.spelix.at/
      +UK cave registry 
      +mendip cave registry: (access) www.mcra.org.uk/wiki/doku.php
      +White mountains database (gpx + google earth)
      +Matienzo (?)
      +Fisher ridge (stephen cladiux)
      +hong meigui (erin)  (ask erin later)
      +Wikicaves www.grottocenter.org/
      + multilingual, slippymap, wiki data entry. includes coordinate-free caves.
      + focus on sport-caving type info (access, basic gear list, overall description, bibliography)
      + e.g. australians only publish coordinates to nearest 10km
      +turkey www.tayproject.org.
      +
      +www.uisic.uis-speleo.org/contacts.html change link. no-one looks for list of databases under 'contacts'
      +
      +graziano ferrari northern italy list (access + google earth)
      +
      + +

      Wookey's notes on things to do

      +from wookware.org/software/cavearchive/goliczmail +
      +Generally I'd like to find some people (geeks) that share these technical
      +ideas: (1) store things in a file system, (2) use XML, (3) do not aim too high
      +(do not try designing a general system for handling all caving-related data
      +for the whole world).
      +
      +If I could find some people that agree with this, then we could try to reach a
      +compromise on:
      +(1) how do we store our data in a file system,
      +(2) how do we use this XML (let's do a common spec, but keep it simple)
      +(3) how do we aim not too high and not end up dead like CaveXML :)
      +
      +After we do that, everyone goes away to do their own projects and write their
      +own code. Or maybe we have some degree of co-operation in actually writing the
      +code. Normal life. But the idea is that all geeks working on "cave inventory"
      +and systems making extensive use of cave inventories try to adhere to this
      +framework as much as possible. So that we can then exchange our tools.
      +
      +I think things like "which revision system do we use" or "do we use web or    
      +Python" are really secondary. Everyone has their own views, habits,
      +backgrounds.
      +
      +My idea is to work on this in a small group (no more than a few persons) - to
      +get things going fast, even if they are not perfect from the beginning. If it
      +works, we try to convince others to use it and maybe push it through UIS. 
      +
      + +

      Wookey's other notes on things to do

      +from wookware.org/software/cavearchive/troggle2design +
      +forms
      +-----
      +1) members read/write folk.csv and year/members
      +2) cave read/write cave_data, entrance_data, surveys/pics 
      +3) trips -> logbook , QMs, or surveys (more than one survey or location possible)
      +4) logbook reads/write year/logbook
      +5) survey 
      +6) prospecting app
      +
      +forms show who is logged in.
      +
      +databases
      +---------
      +trips, read from 
      + logbook entry
      + folder year#index
      + .svx files
      + description
      + QMs
      +
      +members (cache from form)
      +
      +caves
      + caves_data
      + entrance_data
      +
      +storage:
      + expoweb
      + data/
      + cave_entrances
      + caves
      + descriptions
      +
      + loser
      + foo.svx
      +
      + + +

      Yet more of Wookey's notes

      +from wookware.org/software/cavearchive/expoweb-design +
      +frontpage
      +---------
      +quick to load:
      +Links:
      + Caves number, name, location
      + Years 
      + Handbook
      + Data Entry
      + Main Index
      +
      +Slippy map:
      + Indexes to cave page
      +
      +Cave page:
      + Access, description, photos, QMs, Survey
      + 
      +Years:
      + Logbooks/surveynotes/survexdata/people matrix
      + Documents
      +
      +Data Entry:
      + Logbook entry
      + Survey data
      + Survey Notes
      + Cave description
      + QMs
      + Photos
      + New cave
      +
      +Backend datafiles:
      + caves/
      + cave_entrance
      + cave_data
      + directory of info
      + 
      + years/
      + year/
      +  logbook
      +	 pubs/
      +	  reports
      +  admin/
      +   lists
      +		 who_and_when
      +		 travel
      +		 jobs
      + 
      + surveyscans/
      +  year/
      +	  index
      +		 #num
      + handbook/
      +  (all static info)
      + 
      +Storage:
      + non-html or > 280K go in 'files' (PDF, PNG, JPEG, DOC, ODF, SVG)
      + convert small 1024x768 version into website by default. (matching structure?
      +
      + +
      + + + + +

      Archived updates

      +

      Since 2008 we have been keeping detailed records of all data management system updates in the version control system. +Before then we manually maintained a list of updates which are now only of historical interest. +

      A history of the expo website and software was published in Cambridge Underground 1996. A copy of this article Taking Expo Bullshit into the 21st Century is archived here. +


      + Go on to: Troggle architecture
      + Return to: Troggle notes
      +
      + + diff --git a/handbook/troggle/mtv_drawing2.jpg b/handbook/troggle/mtv_drawing2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5042782ca1d08bfc42a61257b5ba1b88397f042b GIT binary patch literal 22398 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ⅆW4L=%lm=z**`KZ<HG19=71r`abaT(iF&hx$~7NJBv<#BdNi`Hq5HM^5kC}Xp?R}z#pZnKGU*UtuG0gm zda+eU#kc$5juazWOI?Z@f)0C}BjWAuJ6dN#HM93Da)NZ=s9ec~Zcp?&<*F8Q&S)-} zbdd-AHr;8I4Sp-({^#YIAxGz16k0N?ubVNODL&!!&U19;o#81LhX{Q#Rt|@xYW)x# zw1e@+ek0~}$8E+ra^%d@sD`Q+_BYxIKT}9;8EYbps(rn;!7#H+j}n=+Ru zrfU1qyqJ`O@^7gl!_tF27t<<75vFQk(eQna<2AC6G3rQ%`M=+2R7H@)M#4f^rZF&#D!TZV%!ZU zM;(EdoC`-3$CR(mFKSZ)W8#Kd79Hy%iR02#kQl@0Vy-&o(2Lb8?2}23X){}fRGTu- z1zl>K)cBJvG`*<9Ryi9F%Lvu0>%gIs1+#&kZ$90n@j?siq$w9GndMp#h!SC%YG!V< z{gG0E^vc@M1q-v8U7^7t5!SZ+sah2&2&m5Wh_vc$n}g?Krb|VQ9w+JlD}XdK?Dvmk zzG&7Po6*0Ls0r`%&tDU%I2VL!U(?x*$cM12OcwUQ_qLkY=wKG)9NBi59DW;lAPXPH z<$8qMh+37h>QdpPtm^c$sItL8tDeOM8vpS}rAjzFV%O-)E%n)&Z}^yPSJ{7H@bAWX zEplLdH!(;mM00HOJYmaKvSx@{3=HW$wxgNm%kXLdfa6AYKs#><&GK?Hk1RE{kI$C{ zigx1G1f1wnassM@l0)Oo@btYh_fgIO~9=@N*7Ow%d8{W2*Rk?uGvuG?H8CP#%edns;j z6k>Mi7vgM;gShC51T}X_*UL{i26g&OO`*qV7(Z}FIvxK3(n_HR?=*W((t@-?Qh}In z$u0W~z_2pQ!s%Ta_BhIlu?hSmoPw}T=~h8Nh%T^p+}PjwtJ7baM1Qnr1l8KK&soqz zPQtm3G;#1e98(E?HL6}xG$Td(y6MqwgK%;Fdk5{CC~IM|obI2`(7)m&l>D^CnM+s= zq~?DMNlq&F)?O{&s6f~OSxx@Hj|6g<#aM^0V} zqwBMGU%=#z(b4yk95)U6_)NII&^KEAPaDG@Fv0Sxc(uKAgx+>uI)*88tM+e2bN&zS z$2glZ&hq(g^HbbIM!DH&2pVUuVoysDI#fjY9*g|=C12zA`x`HSvztK(I`eu-yGNTE{0tD4y?-qTqs~z7<#GPa zo%$qk{n=CV6_fXc?3@^O=*O|BUiIDGQq?=Jmc`BGVv>teV%BSqwF;c8Mr*TfjZOP_weP4t|a&+ z?PN&VO!jMD2yAe>=}FzW7{QJ@Y8+K6udxiueiK^A5Xzc{=jFVZQO|%I!;uO$Oi%A$^8PJ583A2HD9t7)tPQx~a~0dI^bvJiT?HGt)q$;jBAL~Ss+B#hZz}usdG$fn zxJgW6F$)C+CB-GPoI#A786GCh&z#wUt?3`X(BAWQ2be3fy{5opAT))f@!)hdKi_@HD$HOy(9&M5V9KxHd5BV|tYB;B@hL|w6`_7`nk z?F)oD=yZ=83QV--=OO4dd?o@6C!wh$f1x~`E!>snAF z9Tklrjlcr+0NfC<0>mSpkKib|6Xi6e9L!Rr=-{H%Nq$njio#mGpS3tT#~m&LQIx*RX_Z^VZ%~{y&FTc?p>dQ>F^N@ z#U>#4>I7Om&bnjb26qhhGALZ}RtR};hP(9UOQAvttawrGJQIV|lt1Y?93(YkW@`Y| zPS=T_9*-)%F%Fw)aV8%PUFNA>P!nn&@{9rdSPnFXAF3;=;!ttrW{;#hy_4$QaF8|& zv0b7ScS#Ke;@$_Nd1&c2YnB&PR3@6)wMBH|hls?nBb-rX4D@*wr_Po;$dPl~O~(T@ zhpzDv>$_nir4N-CV5H0}%iSH%bZ244oQN^7`P<~Yy2o%?x3X7^mKUqDpe-e$ z6nnqa8UnL+z7Os27_5fJLOr4szudmlTOw455P71IHjJ&n%Lf?lG&nr{1Mu$(h~Fjs z`fNYBl-*r%G6iuZAs1Qs(B(8iX2*$a>hY0ur8R)i_)e^c{O zd+7hGP7yk8Pb-A${Tfg%AilegZ9yOqx2bB}FZ5$?Q@P{s@PFnpKSlg+U_LNcc`HU6 z2q}-F=)X?!$S$oNQ(@;>ji$g@!bY>-=+wImaweK zeqxJTi`&^md5tv~z+LMTV%h2WBwDDwj>(T6U``@$jLV4Pp(~J*Wm_ih{wL?F-JDo^ zCwu$$Z}D1Rof18%nJC(_*>n2XD99=^Ldj~X-##5#rgZPdam&1Dkv6Nfx;k^3s@>kL z%#SxDI*D0zD4v%L6P$0G2ieR4ZNxWeQiPeHBw!&KfYLd3Mo_$dC5RB(V31WZMZ=75 zgB>ZZwHMVCsJt6|-p2%Mz*rs&ecQD^O|1YjZJSzAwG;V|NNo=PUjUaDXz2~GHw2j+Cs7AI=0lRNa zxZcrVdSRmUzj;E-C&+$N(gf_oU6Jb*c~7MM&{otfR*-l~cNRW}m5QlU*)lbDNs^f^ z5_7(_@*FL0vDs3Xsv{3gE{`I_%|sz(hF^3gwXWvDN0dt$hDqLc{HN}QB<5J`$vVVl zeJ7de22KvG=~%%}V+W>ZU&WGi$xx)BEXv5Ntfc34DP;R(B1;s`)#W4=F+!xKp;1Ck z%3a6O*j{4&?`xmg60FTJ+8^(cntdmiv_B!=wfuV_E+I5kC|D(GS>3sY*>Ie-UCf z=cI8S8FGr#@{4FX%<3IcD#+Lk)&}>CA4pgVPYYsPH9@0OX6j0rlyNF-xRgBmiYgkw z?gV5&=^m|A!yT-6srYB@5s_&fZLdz6K2jD430}3hW?@_KwS6o)Emc~ZhMJ@|`=#AX?kW<-#-;Ub9HNyP$-QUwkz5!yTEx9Y>JcK9K7(EC$neQZgKR zMqcL!Z%ocxNEo?KIFxA0s;0xM8r`W0zI{YrXw&mkj5hrBE%^zD8U=F7S{yB%Wn@&7 zW5PRSrX|W;@lo*=$EkoOCHqr@Xp3yq$El0#4dp2q%NbW`7=~U#m4d1@b_+r7($j$n z);9$?f-W*U_{EB!Ql6cl_L`*`>TKG)a!{FGOpPRDFi&6z&5^OB&TtfBbLK7`TBMTsLW10`kQ)1 z$C8z@k$(Nf?g{pb@NtXe>vq4)A&EC7`#OA9&i?>cQwN+KT4wqelc~wSi)X5|IjTbH zRW8)rs>)TW3Ul4mocP9&xr5qS@Ljg5y*|*U-eYe4okhVdo+dq)= zgPC|8mxk%_6X-o*TUNVh@eq7Jo2&_!8t{BXTWX(B>kqsyItS(k!PB#L+NaQYLANlF z+Ix>~9)kw^&1@aAvJwh|*2hkF4wq+Q*h|L4kIY5_nvg7tzJoY`| z@`yQBn=;LJ5#%0`$`LHndh;F{J}1gPQ4FBA3fec@k~WCG$nhM+6w`?CZnS(<@enpm z3Blo_`!ner;7qX54R}cSiS&r3qPWGrw03uU>GB>Ulp8BSWfod|qmM{L!!7oAd^Y@w z^o~$%OSQ5=EjBx&(m6peZiOnekiPi%iyQjDN|V~08p-k`@9JR^Y&25mgx*ds(mBDR zS)SDAgx`@qk<7yLSS^9Pr0u1~u=5*d^-LV{fRlLKc@G$E`F3`!U8ca+K9Ta6Imu=_ zE4~wcUz9|%Q9Z_WjLt?Fkj_;G<9ff;VSSl^a%sQVksR`J?3rX8lYD(6nSx;5A7}HK zkNSSdHwV%h&v;k#j&|i(Gcy-uz3Ji70_5ey(>?+`s^RSpEe&`-G<+P-sXyuv={XqV zo0Vf^JQQDDJU+087bw6&yd>K`5Msf)E?4tbNZqJD$gAS~aY4aMsp{X^Bps&*W%&5c_m?9!cV@4%SAan>=#7>^jrDy=N@bBJ&vNutqZ zX+oEDCm;#mYw?Y}tWl(i7XoJR12YS4HYQz4NKn536k;;1F^n-4Vn(ENWh#nBdP6xn-I4<*0y`s0eV5wO*&Xi)bK37Vre?h zEiRCCM)D4^;nEp?fu(xWN;9<@T^3w}tR?eZxn*O9X_%%t{V(DCtD>asuhm=l0@ zXEGb1m!(=S%lA*1`j5(bz@C+BvOC=*TXwPg;#sI3<2wi!+#{YyYf7TvUq7_M`!iSa ztAEaZ_~((9Y)dzihW`Lr=6c3v4bkS3HuD2iZ%+=8YY7uA0FmWa4`^wrR<_UNt?Biv zm%Ihax7wP?epPzUPO!}jgR@9TXjv)qr-#-M;X*7%s6VnfrsbR23v2n)>pw8-4jFV? zGO_;vS^MIcH$f_dc4lsb`3DY=CEGz;_Cj)S@aQ4AS#pX-{Ef0g6G*~$vPu))b8z*TJRd|!%Yi1q z+C7tL{UPNAEiRC!?Bm(Ee@J-V(V`DiS!;`@R?-H1xy`wkBWT1*@V+0z!+rBfv>L=CI^n#QVMJ`;+{6*WkubB0Kgv|E0wUp158-e=KtFD5~P|Y;G zifgoL_86gI$J&>gtGuKM>7NlT5JGLKZ>_&SXsgNTa;HP2S83SIrOjdrbjoGWiDH(- z#uRm8v6nd{ZgG0%}!L^DIm(ImlSg zP!idFD+(Hl+;xFFjk1a6^gUR_HM%>vh2%3%m83N)vctD=P9zbkGTbkj{m~8=Jt5=t z%V?@|5#jmSfVu6HOgI3$MR_XuWJQ!c<0HYC?s88@_`wr3*_FN$mZXEvlJ2ve)fC?3 zW!EUMQgnBSZ%*@Md2eyw-peg5AX;vg8^1gS!8)Xu+ zINhntS0yJSj;qxA3smGXsn<2uwYV-+REzH<+WFeUIGSFF@oo*7daZ=&?Yy>{Knw&~ z$MYJ^*!M`dzGpqq-7`d(s%;ZEl%__TTy|k^CYfJE@Y?u$wU0k&IfYCD&xYT`9;3+gis_kwzb>;b=<`_f4+&qS`o7Ry8KznIGKUwV z$5NMd19R^rSOa{LV^?jr1mmAbRrM3;9L!|Dg9D5H&*qZTX;!U4+mfqis+iW$x6IRr zV%@b<>-Xsk+E6!8?%9tV`H!G{rV4Ghdpm^89p4~;>Yv-Nb|}c7UqjLa+mD%N0A&|E z-0STE*bgy}?B2h}u@13|8QhfuEgIXT#P58sguSc{7TzhW+0D_(4*Y!jioOn#5z#dh8kaG~-34&%? ze4#gdTU|e+9LHF3#@;A4c{`7z{oxZXJ+n`M2Yo-J9K<-MT`4zXf%S+kf8fm}@ zJ>kTq{ZZmKyW~H7H!|bBnbH_H)IOog91c6GJOys~llQ@JW{k>b=Weeju?hC4gQYTuChxo)kmmxhwKIA8-3H-W$eSbm0uyq^@5&Q zGOk&NZ*EgOR5v&q3frM4*viIbIHAFX70n^ z!PYy2?CX41_x!>bk$sg)HR85%`G+_>;QP_0Tm|WXS$GX$Ztp=2FwC^0?YAo>uxy1A z8e}9BmUa==)2$cZv#sA)dWXs&*6V$#v9xc>uTbd^ye~R4Hl&u*;XCI~qw5G;i%!X2 z6T6R~!sZ=lAwDC1bdNCRA#OO)ZC)ZbA5eqN7ri;8+(?&a!gtD>_YWw?KLDN`X?7tV&$~ zT&I3Vaol;s-GaH((_&zD%$s`KKk&~u56mX)-M4-q{Tbw9gN5|Nge$XFT|@C)&Zenm zd~A*HxGTzkd|w-#l$>r|**T^kY`83@oJzsS@eyUx$}*=r6kR|HMb=^ec^dZ!7j|8JjPCMK7+{gf}5B?mtIaC*=j4Fv^wcd z-GEdxCyzq{Z9q$`>kb@xz_U<2#w)Zm4toCpz^}R)l9)$kZ_YCL58WL=f_L$TWXSBz zn~l&+8=@P1y{q1Bx%HzW5B@%oYM0x_I8O;@{dX7 z?E+q5zZblIA@rV*{JFfdM0|tngv*jkx#hGwzhp9%gK3y+wGpl82KuL&fc(QnY}tF9 z91kN7B-(8M0G2+}2KnzZ$HcetFii?IGcea?cfaU74=8ajv_S8|rmxvv{X_OcgLZIC z8>3QxnalC;)AmAT!PbBL!}bV7tg}K@npZ>SOUpHPtQGMOtnwXWQi9k!W7_!q zKkEfCy^dQ^_84f&wc9Ucd^>s7&)y1RRjadbzlbg0S0mOaR|n=n?9TJlKV&TpOi^{*hgJ!t#RHIPyl_jD@bQA5_6kr6N_sVY`=DORONi$-AP; zHt(yE>jgJ1j?BBQ+gpo=pS(*o6WnKBqHpC+{!z~)gmzZ@soZ#Vg_&`!lHIlc0K_oF zl(Ks(U^ws={{Rs4gTcBu$`QAi?x!UWNclt>+icA@bSC<$^p23zGQd9h4n5`{q(3Nw zT)6Em_>W&zS?v!m zh<$$0?`eF6ZxLWTIf$n9s`P0`+}Zpn>EN#WcH}sFnpcJE|P^$uRpb8MAMtSR?xml4m}BFObDvasvkJHBDdkm(6ry3E^uNOT=Ve7wgM2Lk9m&L>Pd{jNY^Cz4DB)I@3n(b%9NgFZ4set^u zI?VWK^YZ9m23OjN+qvWeaOQeIeU+87sjTBE~G z=x$|~47;E{zbW83dqbNyKjs(wA`P7!yacD_lK%kZr|b}!UGpF2pRhoI6ZDsYkLREH zf7S|T%*Xko>@Xlj>3AI1=Ffhi`ypuZ4`BiX9uK2(e+^&eFa1UXf1SPhi2ne(1PEWC zxPb4+m;Ggbq`;f_4tqd>66!CbYzvj(;qJGFrJKz5RH2s1E2!4mbU*3=TW9@>N-q-nq z>@Xlix_t z4lBrgpg@Dc37>@D>W{JskJA3RfdV4<5AR>}e^@vC&3?D^Fd#%hO#W`~>L0Ql8-xfD IcwV3X*>9_)i~s-t literal 0 HcmV?d00001 diff --git a/handbook/troggle/schema.json b/handbook/troggle/schema.json new file mode 100644 index 000000000..03c4daf88 --- /dev/null +++ b/handbook/troggle/schema.json @@ -0,0 +1,296 @@ +{"Entrance": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this entrance can be identified. It is preferable for these ids to be unique."}, + {"name": "Names", + "data type": "translations", + "help": "Names of this entrance"}, + {"name": "Areas", + "data type": "manytomany:Area", + "help": "Areas that the entrance is in. Where an area has been specified there is no need to add the areas parent area."}, + {"name": "Description", + "data type": "translation", + "help": "A description of the entrance"}, + {"name": "Exploration", + "data type": "translation", + "help": "A description of the exploration/discovers of the entrance"}, + {"name": "Location description", + "data type": "translation", + "help": "A description of where the cave is located"}, + {"name": "Approach", + "data type": "translation", + "help": "A description of how to get to the entrance"}, + {"name": "Photos", + "data type": "photos", + "help": "Photos of the entrance"}, + {"name": "Marking", + "data type": ["classification", [{"class": "Unmarked", + "extra information": {"desciption": "translation"}}, + {"class": "Unknown", + "extra information": {"desciption": "translation"}}, + {"class": "Paint", + "extra information": {"desciption": "translation"}}, + {"class": "Probably Paint", + "extra information": {"desciption": "translation"}}, + {"class": "Temporary Tag", + "extra information": {"desciption": "translation"}}, + {"class": "Probably Temporary Tag", + "extra information": {"desciption": "translation"}}, + {"class": "Spit", + "extra information": {"desciption": "translation"}}, + {"class": "Probably Spit", + "extra information": {"desciption": "translation"}}, + {"class": "Tag"}, + {"class": "Probably Tag", + "extra information": {"desciption": "translation"}} + ]], + "help": "Marking of the entrance"}, + {"name": "Findability", + "data type": ["classification", [{"class": "Unknown", + "extra information": {"desciption": "translation"}}, + {"class": "Surveyed Coordinates", + "extra information": {"desciption": "translation", + "coordinates": "coordinates"}}, + {"class": "Surveyed Survex", + "extra information": {"desciption": "translation", + "station": "survex station"}}, + {"class": "Lost", + "extra information": {"desciption": "translation"}}, + {"class": "Refindable", + "extra information": {"desciption": "translation"}}, + {"class": "Bearings", + "extra information": {"desciption": "translation"}} + ]], + "help": "How can the entrance be found?"}, + {"name": "References", + "data type": "references", + "help": "External articles about this entrance"}, + {"name": "Notes", + "data type": "translation", + "help": "Any miscellaneous information"}, + {"name": "URLs", + "data type": "urls", + "help": "URLs which should redirect to this entrance. (Legacy)"} + ], + "Cave": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this cave can be identified. It is preferable for these ids to be unique."}, + {"name": "Names", + "data type": "translations", + "help": "Names of this cave"}, + {"name": "Areas", + "data type": "manytomany:Area", + "help": "Areas that the cave is in. Where an area has been specified there is no need to add the area's parent area."}, + {"name": "Description", + "data type": "translation", + "help": "A description of the cavee"}, + {"name": "Exploration", + "data type": "translation", + "help": "A description of the exploration/discovers of the cave"}, + {"name": "Entrances", + "data type": "manytomany:Entrance", + "help": "Entrances connected to this piece of cave"}, + {"name": "Equipment", + "data type": "translation", + "help": "Equipment required in this cave"}, + {"name": "References", + "data type": "references", + "help": "External articles about this cave"}, + {"name": "Survey", + "data type": "translation", + "help": "Description (including relevant images?) of any drawn up surveys"}, + {"name": "Notes", + "data type": "translation", + "help": "Any miscilanious information"}, + {"name": "Centreline data", + "data type": ["classification", [{"class": "Surveyed Survex", + "extra information": {"desciption": "translation", + "subsurvey": "survex name"}}, + {"class": "External", + "extra information": {"desciption": "translation", + "length": "float", + "length unit": "length unit", + "depth": "float", + "depth unit": "length unit", + "extent": "float", + "extent unit": "length unit" + }}]], + "help": "Statistics of cave size, or reference to centre line data where this can be calculated"}, + {"name": "URLs", + "data type": "urls", + "help": "URLs which should redirect to this cave. (Legacy)"}, + {"name": "Parents", + "data type": "parents", + "help": "Larger Caves which this is part of"}, + {"name": "Is wet cave", + "data type": "boolean", + "help": "Specific to caves in the Austrian Kataster?"}, + {"name": "Is rock shelter", + "data type": "boolean", + "help": "Specific to caves in the Austrian Kataster?"}, + {"name": "Kataser number", + "data type": "integer", + "help": "Specific to caves in the Austrian Kataster?"}, + {"name": "Exploration status", + "data type": ["classification", [{"class": "Unexplored"}, + {"class": "Partially Explored"}, + {"class": "Fully Explored"}]], + "help": "Specific to caves in the Austrian Kataster?"} + ], +"Area": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this cave can be identified. It is preferable for these ids to be unique."}, + {"name": "Names", + "data type": "translations", + "help": "Names of this cave"}, + {"name": "Description", + "data type": "translation", + "help": "A description of the cavee"}, + {"name": "URLs", + "data type": "urls", + "help": "URLs which should redirect to this cave. (Legacy)"}, + {"name": "Parents", + "data type": "parents", + "help": "Larger areas of which this is a part"} + ], +"Trip": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this trip can be identified. It is preferable for these ids to be unique."}, + {"name": "When", + "data type": ["classification", [{"class": "Date", + "extra information": {"date": "date", + "duration": "survex name", + "duration units": "time unit"}}, + {"class": "Date and Time", + "extra information": {"start": "datetime", + "end": "datetime" + }}]], + "help": "When the trip happened"}, + {"name": "Authors", + "data type": "manytomany:Person", + "help": "Who wrote up the trip?"}, + {"name": "Participants", + "data type": "manytomany:Person", + "help": "Who was on the trip?"}, + {"name": "Description", + "data type": "translation", + "help": "Trip report"}, + {"name": "Expeditions", + "data type": "manytomany:Expedition", + "help": "The expedition(s) on which the trip occured."}, + {"name": "URLs", + "data type": "urls", + "help": "URLs which should redirect to this cave. (Legacy)"} + ], +"Expedition": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this expedition can be identified. It is preferable for these ids to be unique."}, + {"name": "Names", + "data type": "translations", + "help": "Names of this expedition"}, + {"name": "Description", + "data type": "translation", + "help": "A description of the expedition"}, + {"name": "URLs", + "data type": "urls", + "help": "URLs which should redirect to this expedition. (Legacy)"}, + {"name": "Parents", + "data type": "parents", + "help": "Larger expediton groupings of which this is a part"} + ], +"Person": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this person can be identified. It is preferable for these ids to be unique. To get links from team members in survex files etc, ISOdate search terms + '+' + nicknames can be added here, eg 2008-06-*+Nickname"}, + {"name": "Name", + "data type": "name", + "help": "Fullname"}, + {"name": "Description", + "data type": "translation", + "help": "A description of the caver"}, + {"name": "URLs", + "data type": "urls", + "help": "URLs which should redirect to this caver. (Legacy)"} + ], +"Drawn up survey": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this survey can be identified. It is preferable for these ids to be unique."}, + {"name": "Caves", + "data type": "manytomany:Cave", + "help": "What caves are in the survey?"}, + {"name": "Date", + "data type": "date", + "help": "When was the survey drawn?"}, + {"name": "Description", + "data type": "translation", + "help": "A description of the survey"}, + {"name": "File", + "data type": "file", + "help": "filename"}, + {"name": "Localisation", + "data type": ["classification", [{"class": "Therion"}, + {"class": "Image - 3 point transform", + "extra information": {"coordinate system": "coordinate system", + "pixel1x": "float", + "pixel1y": "float", + "pixel2x": "float", + "pixel2y": "float", + "pixel3x": "float", + "pixel3y": "float", + "postion1E": "float", + "postion1N": "float", + "postion1H": "float", + "postion2E": "float", + "postion2N": "float", + "postion2H": "float", + "postion3E": "float", + "postion3N": "float", + "postion3H": "float" + }}]], + "help": "filename"} + ], +"Photo": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this photo can be identified. It is preferable for these ids to be unique."}, + {"name": "Caves", + "data type": "manytomany:Cave", + "help": "What caves is the photo of?"}, + {"name": "Areas", + "data type": "manytomany:Area", + "help": "Does the photo give information about a particular area?"}, + {"name": "People", + "data type": "manytomany:Person", + "help": "Who is in the photo?"}, + {"name": "Photo team", + "data type": "manytomany:Person", + "help": "Who helped take the photo?"}, + {"name": "Expeditions", + "data type": "manytomany:Expedition", + "help": "What expedition(s) was the photo taken on?"}, + {"name": "Date", + "data type": "date", + "help": "When was the photo taken"}, + {"name": "Description", + "data type": "translation", + "help": "A description of the survey"}, + {"name": "File", + "data type": "file", + "help": "filename"}], +"QM": [{"name": "ids", + "data type": "ids", + "help": "List of short strings by which this QM can be identified. It is preferable for these ids to be unique."}, + {"name": "Caves", + "data type": "manytomany:Cave", + "help": "What caves is the QM in?"}, + {"name": "Expeditions", + "data type": "manytomany:Expedition", + "help": "What expedition(s) was the photo taken on?"}, + {"name": "Date", + "data type": "date", + "help": "When was the photo taken"}, + {"name": "Description", + "data type": "translation", + "help": "A description of the survey"}, + {"name": "Completion", + "data type": "translation", + "help": "A description of the survey"}] +} + diff --git a/handbook/troggle/trog2030.html b/handbook/troggle/trog2030.html new file mode 100644 index 000000000..bac7bf966 --- /dev/null +++ b/handbook/troggle/trog2030.html @@ -0,0 +1,80 @@ + + + + +Handbook Troggle Design + + + +

      CUCC Expedition Handbook

      +

      Troggle in 2025-2030

      + +

      5-Year Plan

      +

      [Philip Sargent, 1 June 2020] +

        +
      • I reckon django has at least another 4-5 years left as a very active project (~2025). +
      • I reckon python has another 10-20 years at least. +
      • I reckon SQL databases have another 30 years at least. +
      +

      I don't think writing our own object/SQL code is sensible: +there is such a lot going on we would create a large volume of software even if we stick close to the metal. +[I could well be wrong. That is Option 1.] + +

      Option 2

      +

      +We keep the same architecture as now, and incrementally replace modules that use django/SQL with direct object storage of collections using pickle(), shelve() and json(). +Concurrency is not a problem as all data is read-only. +We keep the url-rewriting and html-template things in django.[and migrate the unit-tests (a recent innovation) from django to be run stand-alone.] +

      +This means that the "django-ness" part of troggle becomes quite small. +The more modules we replace, the easier it becomes for new people to work on it - but also the easier it becomes to migrate it to newer django versions. Or the easier it becomes to move entirely from django to Jinja2 + a URL-router + a HTTP-request/response system. +The data flow through the system becomes obvious to any python programmer with no django knowledge needed. +

      +[This could be harder than it looks if cross-referencing and pointers between collections become unmaintainable - a risk we need to watch.] +

      +Being memory-resident, we get a 20x speed increase. Which we don't need. + +

      +So the proposed Option 2 looks a bit like this (django is the "flawed supplier" and pickle() is the "new supplier")
      +Migrate to Replacement Abstraction Layer + +

      Option 2A

      +

      +We also use a noSQL db with a direct and easy mapping to python collections. +[This needs to be explored, but I suspect we don't gain much compared with the effort of forcing maintainers to learn a new query language. Shelve() is already adequate.] + +

      Option Zero

      +
      +

      We need to de-cruft troggle *first*: remove 'good ideas' which were never used, trim redundancies and generally reduce it in size significantly. +

      +We should have a good look at modifying everything so that we do not read in every survey station. This means making a list of functions that we will drop and some we replace by parsing cavern output and some we calculate during importing/reading svx files. + +

      +Documentation is the key to keeping troggle in a state where someone can pick it up and do a useful week's work, e.g. extracting the parsed logbooks to use shelve() storage throughout instead of SQL. The next time someone like Radost comes along during the next 5 years we want to be able to use them effectively. +

      +

      Things that could be a bit sticky

      +

      +New functionality: e.g. making the whole thing GIS-centric is a possibility. +A GIS db could make a lot of sense. Not in scope for this discussion. +

      There is not yet a front-end (javascript) framework on the client, i.e. a phone app or webpage, which is stable enough for us to commit effort to. Bits of troggle use very old jQuery ("edit this page", and the svx file editor) , and Flask looks interesting, but maybe in 2025 we could see a good way to move all the user interface to the client and just have an API on the server. + +

      API

      +

      We will also need an API now-ish, whatever we do, so that keen kids can write their own special-purpose front-ends using new cool toys. Which will keep them out of our hair. +

      Postscript

      + +

      Andy Waddington, who wrote the first expo website in 1996, mentioned that he could never get the hang of Django at all, and working with SQL databases would require some serious book-revision: +

      +So a useful goal, I think, is to make 'troggle2' accessible to a generic python programmer with no specialist skills in any databases or frameworks. Put against that is the argument that that might double the volume of code to be maintained, which would be worse. Nevertheless, an aim to keep in mind. + +But even 'just Python' is not that easy. Python is a much bigger language now than it used to be, with some esoteric corners. (Some of which could be very useful, such as the self-testing unit test +capability: docs.python.org/3.8/library/doctest ) + + + +


      + +Return to: Troggle design
      +
      + + diff --git a/handbook/troggle/trogarch.html b/handbook/troggle/trogarch.html index b33bb376e..3c2622c22 100644 --- a/handbook/troggle/trogarch.html +++ b/handbook/troggle/trogarch.html @@ -28,12 +28,29 @@ The core of troggle is the data architecture: the set of tables into which all t
      Packages
      -

      Architecture description

      -

      Read the proposal: "Troggle: a novel system for cave exploration information management", by Aaron Curtis. But remember that this paper is an over-ambitious proposal. Only the core data management features have been built. We have none of the "person management" features, none of the "wallet progress" stuff and only two forms in use: for entering cave and cave entrance data.

      ALSO there have been tables added to the core representation which are not anticipated in that document of this diagram, e.g. Scannedimage, Survexdirectory, Survexscansfolder, Survexscansingle, Tunnelfile, TunnelfileSurvexscansfolders, Survey. See Troggle data model python code (15 May 2020). +

      Architecture and purpose

      +

      Read the proposal: "Troggle: a novel system for cave exploration information management", by Aaron Curtis. But remember that this paper is an over-ambitious proposal. Only the core data management features have been built. We have none of the "person management" features, none of the "wallet progress" stuff and only two forms in use: for entering cave and cave entrance data. + +

      Implementation in software

      +

      Powered by Django. +Troggle is written in Python (about 9,000 lines including comments) and is built on the Django framework. Before starting to work on Troggle it might be a good idea to run through an initial install and exploration of a tutorial Django project. + +

      + +Django is the thing that puts the survey data in a database in a way that helps us write far less code to get it in and out again, and provides templates which make it quicker to maintain all the webpages. + + +

      Troggle parsers and input files

      +
      +
      + +
      Django server and webpage (client)
      +
      +

      To understand how troggle imports the data from the survex files, tunnel files, logbooks etc., see the troggle import (databaseReset.py) documentation.

      The following separate import operations are managed by the import utility (databaseReset.py):

        diff --git a/handbook/troggle/trogdesign.html b/handbook/troggle/trogdesign.html index b5607367f..000ef1772 100644 --- a/handbook/troggle/trogdesign.html +++ b/handbook/troggle/trogdesign.html @@ -12,8 +12,9 @@

        Open issues being worked on:


        Go on to: Troggle architecture
        diff --git a/handbook/troggle/trogdocm.html b/handbook/troggle/trogdocm.html index bc430a4ff..f5ec0c973 100644 --- a/handbook/troggle/trogdocm.html +++ b/handbook/troggle/trogdocm.html @@ -15,13 +15,13 @@ faced with user-generated data and how to fix them. Common error messages. How t

        It concentrates on showing how to find and fix import errors so that the troggle-generated webpages are complete and not full of gaps.

        Intended audience: Ideally someone who is not a python programmer will be able to use this page to help them fix import errors.

        Also here we will explain the useful diagnostic pages such as
        -experimental
        -pathsreport
        -survey_scans
        -/admin/core/dataissue/
        -tunneldata
        -statistics
        -people
        +experimental
        +pathsreport
        +survey_scans
        +/admin/core/dataissue/
        +tunneldata
        +statistics
        +people


        Go on to: Troggle architecture
        diff --git a/handbook/troggle/trognotes.html b/handbook/troggle/trognotes.html index d979d722a..567730747 100644 --- a/handbook/troggle/trognotes.html +++ b/handbook/troggle/trognotes.html @@ -7,13 +7,24 @@

        CUCC Expedition Handbook

        -

        Troggle - TO BE RESTRUCTURED

        +

        Troggle - the beginnings of a manual

        Troggle runs much of the the cave survey data management, presents the data on the website and manages the Expo Handbook. -

        NOTES - taken from elsewhere

        +

        Who needs to know What and When

        This part of the handbook is intended for people maintaining the troggle software. Day to day cave recording and surveying tasks are documented in the expo "survey handbook" +

        We have several quite different sorts of cavers who interact with troggle: +

          +
        • The youthful hard caver, who is trained in underground survey techniques but whose interest is limited to handing over the grubby survey notes when she emerges into daylight. Is keen to know how many km of cave she surveyed each year and to see pretty drawn-up surveys (done by someone else). Walks through walls. +
        • The surface walker who is happy to do route-finding over the plateau, takes lots of photos of cave entrances and cavers enjoying sunshine and may sometimes be able to provide GPS tracks of where he has been. He needs a prospecting guide to find previously identified entrances and be able to find photos of caves in past years. Writes up his explorations in execrable handwriting in the logbook. Looks at walls. +
        • The diligent student who types up the survey notes into survex file format, transcribes sketch notes onto survex centre-lines, and uses Therion to produce beautiful survey graphics of the caves he has digitised - but who is not a computer geek and whose brain oozes out of his ears when Wookey explains what git is. Applies artistic graffiti to walls. +
        • The archivist who takes the survex files, the therion files, the GPS files, the scanned survex centrelines and files them in the right places on the expo laptop, uses the troggle reports to help ensure that these are consistent and are filed correctly. Uses troggle input forms to "create new cave" in the system and adds to the directory structures to match the recently discovered caves. Is learning git. When transcribing bad handwriting in logbook (or struggling with git), climbs walls. +
        • Nerdus maximus: talks python in his sleep and can rebase a hairy git branch without error after 7 bottles of Gosser. Painfully averse to writing documentation. Overstressed, over-caffeinated and with a tendency to mutter that it's all obvious. Oblivious to walls. +
        +

        These are some of the "use cases" for which troggle needs to be (re)designed to cope with. + +

        Rewrite from here on...

        This troggle manual describes these:

        • Annual tasks: preparing for next year, finishing last year (troggle & scripts) @@ -65,302 +76,14 @@ can do this by filling-in some online forms. All Survex | Scans | Tunneldata | 107 | 161 | 204 | 258 | 264 | Expo2016 | Expo2017 | Expo2018 | Django admin -

          Future Developments: Preamble

          -

          Assumptions (points to necessarily agree upon) -

            -
          1. Let's NOT try to design a generic catalogue for storing all kind of data about caves of the whole world, intended for every kind of user (sports, exploration, science). Let's just settle for a generic framework. Let geeks in individual countries or individual communities write their tools operating within this framework. -
          2. Let's try make it available for the layman, but still well-playable for the geeks. -
          3. Let's rely on already existing, popular technologies. Let's keep it open source and multiplatform. Let's try not to reinvent the wheel. -
          4. Let's not assume everyone has an Internet connection while working with their data. -
          5. Let's version-control as much as possible. -
          6. Let's support i18n - let's use UTF-8 everywhere and cater for data in many languages(entrance names, cave descriptions, location descriptions etc.) -
          - -Everything here should be updated or replaced - this page just records a lot of unfinished ideas. -Most people will not want to read this at all. This is for speleosoftwarearcheologists only. - - -

          Two page preliminary design document for 'caca' (Cave Catalogue) rev.2 2013-07-26 by Wookey (copied from http://wookware.org/software/cavearchive/caca_arch2.pdf) - - -

          The data management system conventions bit

          -

          This is likely to change with structural change to the site, with style changes which we expect to implement and with the method by which the info is actually stored and served up.

          -

          ... and it's not written yet, either :-)

          -
            - -
          • Structure
          • -
          • Info for each cave – automatically generated by make-indxal4.pl
          • -
          • Contents lists & relative links for multi-article publications like journals. Complicated by expo articles being in a separate hierarchy from journals.
          • -
          • Translations
          • -
          • Other people's work - the noinfo hierarchy.
          • -
          • Style guide for writing cave descriptions: correct use of boldface (once for each passage name, at the primary definition thereof; other uses of the name should be links to this, and certainly should not be bold.)
          • -
          - -

          CUCC wiki on troggle

          - -

          CUCC still has an archive list of things that at one time were live tasks: -from camcaving.uk/Documents/Expo/Legacy/Misc/... and that page is reproduced in the table below (so don't worry if the URL link goes dark when CUCC reorganise their legacy pages). -

          Troggle is a system under development for keeping track of all expo data in a logical and accessible way, and displaying it on the web. At the moment, it is [no longer] under development at http://troggle.cavingexpedition.com/ - -But note that this is Aaron's version of troggle, forked from the version of troggle we use. Aaron uses this for the Erebus expedition. -

          -

          Note that the information there is incomplete and editing is not yet enabled. -

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          Feature

          Old expo website

          Troggle: planned

          Troggle: progress so far

          Logbook

          Yes; manually formatted each year

          Yes; wiki-style

          Start at the front page, troggle.cavingexpedition.com/ [1] and click to logbook for year. The logbooks have been parsed back to 1997.

          Cave index and stats generated from survex file

          Yes

          Yes

          Done; see troggle.cavingexpedition.com/survey/caves/264 [2]

          Survey workflow helper

          Yes; minimal. surveys.csv produced an html table of whose surveys were not marked “finished”

          Yes. Makes table of surveys per expo which shows exactly what needs doing. Displays scans. Integrated with survex, scanner software, and tunnel.

          See it at troggle.cavingexpedition.com/survey . Be sure to try a recent year when we should have data. Survex, scanner, and tunnel integration still needs doing.

          QM lists generated automatically

          Depends on the cave. Each cave had a different system.

          Yes; unified system.

          Done, but only 204 and 234 Qms have been imported from old system so far. No view yet.

          Automatic calendar for each year of who will be on expo when

          No, manually produced some years

          Yes

          Done; see troggle.cavingexpedition.com/calendar/2007 (replace 2007 with year in question)

          Web browser used to enter data

          No

          Yes

          Everything can be edited through admin, at troggle.cavingexpedition.com/admin . Ask aaron, martin, or julian for the password if you want to have a look / play around with the admin site. Any changes you make will be overwritten. Eventually, data entry will probably be done using custom forms. -

          Cave and passage descriptions

          Yes, manually html coded.

          Yes, wiki-style.

          Not done yet.
          -

          Expo handbook

          Yes, manually html coded.
          -

          Maybe. Needs to be discussed further.


          -

          Not done yet.

          Table of who was on which expo

          Yes

          Yes

          Data has been parsed, this view hasn't been written yet.

          Signup form, System for keeping contact, medical and next of kin info

          No

          Yes

          Signup form should be ready by 20 Jan.

          Automated photo upload and gallery

          No; some manual photo galleries put together with lots of effort

          Yes

          Photo upload done, gallery needs writing.

          Search

          No

          Yes

          - -

          List of cave database software

          -from wookware.org/software/cavearchive/databasesoftwarelist - -
          -ckan is something like this - could we use it?
          -esri online
          -
          -CUCC (troggle) http://cucc.survex.com/ - this site.
          -virgina caves database (access+arcgis) (futrell)
          -each country database
          -Austria (spelix) ( www.spelix.at/
          -UK cave registry 
          -mendip cave registry: (access) www.mcra.org.uk/wiki/doku.php
          -White mountains database (gpx + google earth)
          -Matienzo (?)
          -Fisher ridge (stephen cladiux)
          -hong meigui (erin)  (ask erin later)
          -Wikicaves www.grottocenter.org/
          - multilingual, slippymap, wiki data entry. includes coordinate-free caves.
          - focus on sport-caving type info (access, basic gear list, overall description, bibliography)
          - e.g. australians only publish coordinates to nearest 10km
          -turkey www.tayproject.org.
          -
          -www.uisic.uis-speleo.org/contacts.html change link. no-one looks for list of databases under 'contacts'
          -
          -graziano ferrari northern italy list (access + google earth)
          -
          - -

          Wookey's notes on things to do

          -from wookware.org/software/cavearchive/goliczmail -
          -Generally I'd like to find some people (geeks) that share these technical
          -ideas: (1) store things in a file system, (2) use XML, (3) do not aim too high
          -(do not try designing a general system for handling all caving-related data
          -for the whole world).
          -
          -If I could find some people that agree with this, then we could try to reach a
          -compromise on:
          -(1) how do we store our data in a file system,
          -(2) how do we use this XML (let's do a common spec, but keep it simple)
          -(3) how do we aim not too high and not end up dead like CaveXML :)
          -
          -After we do that, everyone goes away to do their own projects and write their
          -own code. Or maybe we have some degree of co-operation in actually writing the
          -code. Normal life. But the idea is that all geeks working on "cave inventory"
          -and systems making extensive use of cave inventories try to adhere to this
          -framework as much as possible. So that we can then exchange our tools.
          -
          -I think things like "which revision system do we use" or "do we use web or    
          -Python" are really secondary. Everyone has their own views, habits,
          -backgrounds.
          -
          -My idea is to work on this in a small group (no more than a few persons) - to
          -get things going fast, even if they are not perfect from the beginning. If it
          -works, we try to convince others to use it and maybe push it through UIS. 
          -
          - -

          Wookey's other notes on things to do

          -from wookware.org/software/cavearchive/troggle2design -
          -forms
          ------
          -1) members read/write folk.csv and year/members
          -2) cave read/write cave_data, entrance_data, surveys/pics 
          -3) trips -> logbook , QMs, or surveys (more than one survey or location possible)
          -4) logbook reads/write year/logbook
          -5) survey 
          -6) prospecting app
          -
          -forms show who is logged in.
          -
          -databases
          ----------
          -trips, read from 
          - logbook entry
          - folder year#index
          - .svx files
          - description
          - QMs
          -
          -members (cache from form)
          -
          -caves
          - caves_data
          - entrance_data
          -
          -storage:
          - expoweb
          - data/
          - cave_entrances
          - caves
          - descriptions
          -
          - loser
          - foo.svx
          -
          - - -

          Yet more of Wookey's notes

          -from wookware.org/software/cavearchive/expoweb-design -
          -frontpage
          ----------
          -quick to load:
          -Links:
          - Caves number, name, location
          - Years 
          - Handbook
          - Data Entry
          - Main Index
          -
          -Slippy map:
          - Indexes to cave page
          -
          -Cave page:
          - Access, description, photos, QMs, Survey
          - 
          -Years:
          - Logbooks/surveynotes/survexdata/people matrix
          - Documents
          -
          -Data Entry:
          - Logbook entry
          - Survey data
          - Survey Notes
          - Cave description
          - QMs
          - Photos
          - New cave
          -
          -Backend datafiles:
          - caves/
          - cave_entrance
          - cave_data
          - directory of info
          - 
          - years/
          - year/
          -  logbook
          -	 pubs/
          -	  reports
          -  admin/
          -   lists
          -		 who_and_when
          -		 travel
          -		 jobs
          - 
          - surveyscans/
          -  year/
          -	  index
          -		 #num
          - handbook/
          -  (all static info)
          - 
          -Storage:
          - non-html or > 280K go in 'files' (PDF, PNG, JPEG, DOC, ODF, SVG)
          - convert small 1024x768 version into website by default. (matching structure?
          -
          -
          - - - -

          Archived updates

          Since 2008 we have been keeping detailed records of all data management system updates in the version control system. Before then we manually maintained a list of updates which are now only of historical interest. -

          A history of the expo website and software was published in Cambridge Underground 1996. A copy of this article Taking Expo Bullshit into the 21st Century is archived here. +

          A history of the expo website and software was published in Cambridge Underground 1996. A copy of this article Taking Expo Bullshit into the 21st Century is archived here.


          Go on to: Troggle architecture
          + Dubiously explore: Historic ideas for cave data management
          Return to: Troggle design notes

          diff --git a/handbook/troggle/trogdesignx.html b/handbook/troggle/trogspeculate.html similarity index 100% rename from handbook/troggle/trogdesignx.html rename to handbook/troggle/trogspeculate.html