diff --git a/cave_data/1623-114.html b/cave_data/1623-114.html index ab4add32d..80963725f 100644 --- a/cave_data/1623-114.html +++ b/cave_data/1623-114.html @@ -1,94 +1,108 @@ - + + -False -1623-114 -Verlorenhohle 114 -1623 -5 -0 + ? -114 -2018-ps-01 +False +1623-114 +Verlorenhohle 114 +1623 +5 +0 + ? +114 +2018-ps-01 - 1623-114 - + 1623-114 + -CUCC 1980, 2019 -2018-07-18: Rock-filled rift ~1m high and wide goes 260 degrees magnetic into hillside (descending approx. 15 degrees). Hole in floor near ent. is a climbdown, then a 22cm squeeze (Radost did it) to where it continues - tight. No draft. - -Going over the hole in the floor the more obvious route leads after 14m from ent.to a 2m climb down and a drafting flat-out hole leading to a vertical (upwards) solution (?) shaft filled with rocks. [Since the hillside is very steep here, this may be ~20m or more to the surface.] Could be dug, but ideally not from the bottom where Radost was. -Whole cave drafts cold air out slightly - less in 2019 than 2018 possibly due to snow choke elsewhere. No snow visible anywhere near it. - -The roof of the rift is flat and slopes to the south, about 30 degrees from vertical. This is very similar to rifts in Schnellzughohle and Stellerweghohle nearby, but in this cave there are no flow scallops. -Roof is solid rock and floor is blocks and rocks [and relic vadose features]. -
-Explored properly by Radost & Philip in 2019. 2019-07-168 No survey.
-none. Chilly draft and scramble so shorts not advised. -1980 logbook - +CUCC 1980, 2019 +Is this possibly the same as 228 ? +2018-07-18: Rock-filled rift ~1m high and wide goes 260 degrees magnetic into hillside (descending approx. 15 degrees). Hole in floor near ent. is a climbdown, then a 22cm squeeze (Radost did it) to where it continues - tight. No draft. + +Going over the hole in the floor the more obvious route leads after 14m from ent.to a 2m climb down and a drafting flat-out hole leading to a vertical (upwards) solution (?) shaft filled with rocks. [Since the hillside is very steep here, this may be ~20m or more to the surface.] Could be dug, but ideally not from the bottom where Radost was. +Whole cave drafts cold air out slightly - less in 2019 than 2018 possibly due to snow choke elsewhere. No snow visible anywhere near it. + +The roof of the rift is flat and slopes to the south, about 30 degrees from vertical. This is very similar to rifts in Schnellzughohle and Stellerweghohle nearby, but in this cave there are no flow scallops. +Roof is solid rock and floor is blocks and rocks [and relic vadose features]. +
+Explored properly by Radost & Philip in 2019. 2019-07-168 No survey.
+none. Chilly draft and scramble so shorts not advised. +1980 logbook + identified with previously issued 114 - -Logbook: 2018-07-14 -
Photos taken from turn-off point [from Stoger Weg]: "a barely discernable trod" to cave. -This "trod" is much more overgrown than it was in 1982. -
-I have just (May 1990) found an old note book which says this was explored by John, Tony and Andy C, but gives no detail on where or what. -There is a strong suspicion that the cave was one of the "promising leads" found on their trip to Wildenseealm. However, the only -published account refers the reader to the 1980 log book. This latter is, unfortunately, missing.

-

This does not appear to be in the Austrians' Kataster. -

-AERW email 30 June 2020: -The name Verlorenschacht was probably invented by me, and in the absence -of the 1980 logbook, there is no real reason to believe it was a schacht, -just something they thought worth a number in a year when we were making -the effort to actually number stuff we found. It is _probably_ not (as you -might hope) somewhere between 113 and 115, but it _might_ be ... There is -something in that area that one steps over on a particular (probably -obscure) route from one cave to another. I don't *think* it got a -number but it *might* be 114. If that surmise is anywhere near, then it -is between the Stogerweg and 113, rather than close to 115. -

-> But it is definitely not a "Schacht": more a horizontal scramble with a -> couple of pits. [Philip] - -That doesn't sound like the thing in the 113 area I'm thinking of - that -was at least a bit of a climb down at the entrance (enough not to venture -in without at least a handline). Of course, if it was something on the -Wildenseealm walk, then it is nowhere near 113/41/115. -

-The missing 1980 logbook really is critical to this one. -

-Philip Sargent email 1 July 2020 to Wookey: -

-> According to AERW it might or might not be the same cave, or be might -> be remembering something else; but it is arguably in the right place -> as at least two groups have found it while looking for 115 coming from -> the path - and 113 is on the other (upper) side of the path - so it is -> topologically between 113 and 115 even if not geometrically between 113 and 115. -> -> I say let's go for it and rub out the uncertainty. -> Which means I had better write up a sketch survey for all 15m of it. -

-I've not followed the whole thread/saga, but at this stage I think this sounds reasonable. Almost anything would be an improvment and so long as we're reasonably sure that the original 114 is not marked as such in a way that might one day be noticed (and it seems unlikely that the 1980 logbook will surface at this point) any reasonable effort to get a cave in about the right place should suffice. -

-Wookey - - -25 -5 + +Logbook: 2018-07-14 +
Photos taken from turn-off point [from Stoger Weg]: "a barely discernable trod" to cave. +This "trod" is much more overgrown than it was in 1982. +
+I have just (May 1990) found an old note book which says this was explored by John, Tony and Andy C, but gives no detail on where or what. +There is a strong suspicion that the cave was one of the "promising leads" found on their trip to Wildenseealm. However, the only +published account refers the reader to the 1980 log book. This latter is, unfortunately, missing.

+

This does not appear to be in the Austrians' Kataster. +

+AERW email 30 June 2020: +The name Verlorenschacht was probably invented by me, and in the absence +of the 1980 logbook, there is no real reason to believe it was a schacht, +just something they thought worth a number in a year when we were making +the effort to actually number stuff we found. It is _probably_ not (as you +might hope) somewhere between 113 and 115, but it _might_ be ... There is +something in that area that one steps over on a particular (probably +obscure) route from one cave to another. I don't *think* it got a +number but it *might* be 114. If that surmise is anywhere near, then it +is between the Stogerweg and 113, rather than close to 115. +

+> But it is definitely not a "Schacht": more a horizontal scramble with a +> couple of pits. [Philip] + +That doesn't sound like the thing in the 113 area I'm thinking of - that +was at least a bit of a climb down at the entrance (enough not to venture +in without at least a handline). Of course, if it was something on the +Wildenseealm walk, then it is nowhere near 113/41/115. +

+The missing 1980 logbook really is critical to this one. +

+Philip Sargent email 1 July 2020 to Wookey: +

+> According to AERW it might or might not be the same cave, or be might +> be remembering something else; but it is arguably in the right place +> as at least two groups have found it while looking for 115 coming from +> the path - and 113 is on the other (upper) side of the path - so it is +> topologically between 113 and 115 even if not geometrically between 113 and 115. +> +> I say let's go for it and rub out the uncertainty. +> Which means I had better write up a sketch survey for all 15m of it. +

+I've not followed the whole thread/saga, but at this stage I think this sounds reasonable. Almost anything would be an improvment and so long as we're reasonably sure that the original 114 is not marked as such in a way that might one day be noticed (and it seems unlikely that the 1980 logbook will surface at this point) any reasonable effort to get a cave in about the right place should suffice. +

+Wookey +25 +5 20 - - -1623/114 + + +1623/114 diff --git a/cave_data/1623-228.html b/cave_data/1623-228.html index 760806af5..3aaada810 100644 --- a/cave_data/1623-228.html +++ b/cave_data/1623-228.html @@ -1,40 +1,56 @@ + - + + -True -1623-228 -Kleine Schnellzughöhle -1623 -7 - -228 - +True +1623-228 +Kleine Schnellzughöhle +1623 +7 + +228 +2020-XX-01 - 1623-228 - + 1623-228 + -ArGE (Nils + Kai Schwekendiek, August 2000) - - - - +ArGE (Nils + Kai Schwekendiek, August 2000) +Is this possibly the same as 114 ? + + + -In dataset - - - +In dataset + + + -caves-1623/228/228.svx - -1623/228.html +caves-1623/228/228.svx + +1623/228.html diff --git a/cave_data/1623-297.html b/cave_data/1623-297.html index 0cb80f7e2..a43415383 100644 --- a/cave_data/1623-297.html +++ b/cave_data/1623-297.html @@ -1,40 +1,56 @@ + - + + -False -1623-297 -Haizahnhöhle -1623 - -297 -2012-dd-08 +False +1623-297 +Haizahnhöhle +1623 + +297 +2012-dd-08 - 1623-297 - + 1623-297 + -CUCC, (Duncan Collis and Anthony Day, 2012-08-10; Chris Densham, Frank Tully, Anthony Day, Todd Rye 2018-07-11) -5m diameter phreatic tube opens out after 20 m. -Three low passages on left interconnect and choke. Up slope to right leads to narrow descending rift. Opens out at bottom into phreas but ckokes directly ahead. Draft reported in 2012. Name relates to shark-tooth-like popcorn formations. - - - +CUCC, (Duncan Collis and Anthony Day, 2012-08-10; Chris Densham, Frank Tully, Anthony Day, Todd Rye 2018-07-11) +5m diameter phreatic tube opens out after 20 m. +Three low passages on left interconnect and choke. Up slope to right leads to narrow descending rift. Opens out at bottom into phreas but ckokes directly ahead. Draft reported in 2012. Name relates to shark-tooth-like popcorn formations. + + + - - - - + + + + - - -1623/297/297.html + + +1623/297/297.html diff --git a/entrance_data/1623-297.html b/entrance_data/1623-297.html index dd3161c3e..f0fdda67b 100644 --- a/entrance_data/1623-297.html +++ b/entrance_data/1623-297.html @@ -1,6 +1,12 @@ - + + + + + + + @@ -14,9 +20,9 @@ CUCC, Duncan Collis and Anthony Day, 2012-08-10 East of summit of Hohes Augst Eck, south of 2012-dd-06 and 07 and a little higher up. -Via summit of Hohes Augst Eck +Via summit of Hohes Augst Eck - + Both recursive load and linear load parsers/survex could do this.

  • In the logbooks parsing and cache loading. -
    Replace assert() with dataIssue [NOTIFICATION pattern] or Exceptions +
    Enhance some exceptions with dataIssue [NOTIFICATION pattern], not just in parsers
  • https://martinfowler.com/articles/replaceThrowWithNotification.html
  • Python documentation: Django's use of modern unobvious idioms diff --git a/handbook/computing/winlaptop.html b/handbook/computing/winlaptop.html index e1698f3c9..444e8a66d 100644 --- a/handbook/computing/winlaptop.html +++ b/handbook/computing/winlaptop.html @@ -2,7 +2,7 @@ -CUCC Expedition Handbook: Programmers manual +CUCC Expedition Handbook: Windows expo laptop @@ -30,8 +30,8 @@ - using rsync
    - large-scale updating of several folders at once on expofiles without overwriting other people's work (which means using rsync)
    - well not "hard" exactly, but complicated with lot of steps that are easy to get wrong and with poor feedback as to whether you have done each step correctly. -
  • Things for the bold
    -- using WSL2, Linux virtual machines and Docker containers. +
  • The easier way to do it
    +- using WSL: Windows System for Linux

    Things that already work well

    @@ -88,7 +88,7 @@ it downloads a copy of the contents of essentials.gpx and not a link.

    Things that are really quite involved

    The core problem is integrating the PuTTy key management software (pagent.exe) with a terminal window. We need a terminal window to run rsync as none of the packaged software (Filezilla, PuTTy) includes an rsync client. -

    The solution we have now for rsync is to use WSL1 and to create another key, distinct from the PuTTy one, and to upload that key to the expo server. Because this is treating WSL as if it were a different machine requiring its own key quite separate from the Windows key, we expect this to continue to work when WSL2 becomes the default behaviour on Windows10. +

    The solution we have now for rsync is to use WSL and to create another key, distinct from the PuTTy one, and to upload that key to the expo server. Because this is treating WSL as if it were a different machine requiring its own key quite separate from the Windows key. (This works the same way in WSL1 and WSL2)..

    So on a machine with WSL enabled, create an ordinary cmd window and get into the WSL environment using the wsl command:
    D:\CUCC-Expo\expoweb\ wsl @@ -141,21 +141,22 @@ Now finally you can use all the usual command line tools at yor wsl command line

  • PowerShell terminal window - nope, no rsync.
  • bash window - installed by default when you install gitforwindows. Unfortunately while this MINGW32 setup includes a command-line git executable it doesn't include rsync.
  • cygwin - a cmd terminal where you have downloaded and installed Cygwin. Yes, if you have selected the rsync package you will be able to run the rysnc executable, but it won't have access to the cyptographic key so it can't connect to the expo server. Please feel free to work out how to make this work. A more recent, graphical variant is Swan. -
  • Windows Subsystem for Linux aka WSL1 available on all Windows10 machines since November 2019. +
  • Windows Subsystem for Linux aka WSL available on all Windows10 machines since November 2019.
    • WSL Install it like this. This does what we need. This works using a key generated by its own version of ssh-keygen if you follow the instructions above about putting it in the right place. -
    • WSL1: Converting Windows paths to Linux paths and vice-versa. -
    • WSL1 is being made obsolete by WSL2 - the new wonderful system which will solve all our problems, make the tea and carry our gear up to topcamp. Allegedly. WSL2 solves the filenaming problems because it is a full virtual Linux running on a Linux filesystem (ext4) inside Windows. Note that WSL2 has hardware requirements that WSL1 does not have, so an old machine may have to use WSL1. +
    • WSL: Converting Windows paths to Linux paths and vice-versa. +
    • In WSL you can choose whether to store the files in the WSL view of NTFS, e.g. /mnt/c/expo/ or in an ext4 filesystem e.g. \\wsl$\Ubuntu-20.04\home\expo . Our experience is with /mnt/c/expo/ . +
    • WSL now installs as WSL2 by default, but older machines (mostly laptops) may not have the Hyper-V Virtualization hardware and may have to run WSL1. This is fine: the behaviour is identical so far as an expo laptop is concerned. Even if you have the hardware, you may have to enable it in your BIOS and install the Windows Feature to do it. Instructions here and here.
    -
  • Canonical Multipass - a completely different alternative to WSL: more isolation, more understandable behaviour (?) -
  • A full virtual Linux machine running using a hypervisor such as VirtualBox which has its own virtual Linux filesystem. This setup has the advantage that you don't have to partitition your hard drive but the disadvantage that you can't get at any of the files from Windows itself except via a network protocol \\wsl$. Which may be no hardship. +
  • A full virtual Linux machine running using a hypervisor such as VirtualBox which has its own virtual Linux filesystem. This setup has the advantage that you don't have to partitition your hard drive but the disadvantage that you may not have easy access to the files from Windows. +
  • Canonical Multipass - a VM alternative (Ubuntu only). -

    WSL1 tricks and tips

    +

    WSL tricks and tips

    -

    WSL1 unfortunately introduces a wonderful new problem of file permissions. Every file on the Windows filesystem NTFS has a set of permissions managed by the filesystem. Every NTFS file that WSL knows about (if mounted with -o metadata) acquires a completely parallel set of file permissions that are fundamentally different things and are never in sync in any sense. All sorts of fun results. This is fixed by WSL2 which has an entirely separate filesystem, a Virtual Hardware Disk (VHD). +

    WSL unfortunately introduces a wonderful new problem of file permissions. Every file on the Windows filesystem NTFS has a set of permissions managed by the filesystem. Every NTFS file that WSL knows about (if mounted with -o metadata) acquires a completely parallel set of file permissions that are fundamentally different things and are never in sync in any sense. All sorts of fun results. The alternative is to store all your data in the \\wsl$\ ext4 filesystem (WSL2 only, not WSL1).

    If you are disturbed by the instructions to produce an entirely different key for WSL to use when your PC already has a perfectly good PuTTy key installed on the server, then you are right. It is inelegant. But it works, the instructions are shorter and there are fewer things that go wrong. If you are terribly offended by that then you can set your PC up to use one key shared between WSL and normal-Windows as described in this October 2019 article. (Don't set up a password on the key because then you don't need to install keychain.) But beware, this sort of thing goes out of date quite rapidly. @@ -165,7 +166,7 @@ Now finally you can use all the usual command line tools at yor wsl command line

  • deep integration - Don't use gitforwindows, install the linux git client in WSL2
  • using-github-credentials-in-wsl2 - How to use gitforwindows and WSL to connect to GitHub. -
  • WSL2 & Visual Studio Code +
  • WSL & Visual Studio Code diff --git a/handbook/computing/yourlaptop.html b/handbook/computing/yourlaptop.html index 22326cc6a..2c91605f8 100644 --- a/handbook/computing/yourlaptop.html +++ b/handbook/computing/yourlaptop.html @@ -2,7 +2,7 @@ -CUCC Expedition Handbook: Programmers manual +CUCC Expedition Handbook: Your laptop diff --git a/handbook/geartape.html b/handbook/geartape.html index 6155bc26b..9eeaee166 100644 --- a/handbook/geartape.html +++ b/handbook/geartape.html @@ -9,8 +9,8 @@ -

    Gear tape colours for Expo 2021

    -

    TO BE UPDATED FOR 2021

    +

    Gear tape colours for Expo 2022

    +

    TO BE UPDATED FOR 2022

    Geartape lists for CUCC and previous expo years

      diff --git a/handbook/i/dumpsterfire.jpg b/handbook/i/dumpsterfire.jpg new file mode 100644 index 000000000..a5af72ac9 Binary files /dev/null and b/handbook/i/dumpsterfire.jpg differ diff --git a/handbook/i/killitwithfire.jpg b/handbook/i/killitwithfire.jpg new file mode 100644 index 000000000..9775c707e Binary files /dev/null and b/handbook/i/killitwithfire.jpg differ diff --git a/handbook/l/seq-wallet.html b/handbook/l/seq-wallet.html index 42957aa95..fd1cb29fb 100644 --- a/handbook/l/seq-wallet.html +++ b/handbook/l/seq-wallet.html @@ -15,7 +15,7 @@ CUCC Expo Handbook: Wallet Process UML Diagrams -

      An Sequence Diagram is on the the types of Interaction Diagram used to understand complex systems. +

      A Sequence Diagram is oen the the types of Interaction Diagram used to understand complex systems.

      We also have a "activity" lifecycle diagram which shows clearly the states which a wallet can be in during its life. -

      Both "activity" and "sequence" diagrams are part of the UML software specifiction system. We also have a "class" diagram for troggle. +

      Both "activity" and "sequence" diagrams are part of the UML software specification system. We also have a "class" diagram for troggle. That page also defines the "essential", "specification" and "implementation" levels at which troggle is designed and maintained.

      This diagram

      diff --git a/handbook/planning.html b/handbook/planning.html index a44de9af5..56040d8f9 100644 --- a/handbook/planning.html +++ b/handbook/planning.html @@ -29,7 +29,7 @@
      Some of this needs to happen immediately after the previous expo before things get lost, the rest over Christmas.
      • Create new year - create new website & server folders ready for next expo
      • Who/When - create table for tracking who is coming to expo and when
      • -
      • Logbooks & trips - tidy up last bits of trip records from last year
      • +
      • Logbooks & trips - tidy up last bits of trip records from last year
      diff --git a/handbook/rig/rigit.html b/handbook/rig/rigit.html index e18d4792d..284b532b0 100644 --- a/handbook/rig/rigit.html +++ b/handbook/rig/rigit.html @@ -54,7 +54,7 @@ href="../../fixaid.htm">Fixed Aids list up to date.

      See the 2020 appraisal of anchors and choice of bolt types for future expos.

      Rope care

      -

      Rope should be chained only when it is washed and checked. Dirty or unchecked rope may be coiled. Rope should be washed, checked and measured at the end of each expo. See the Courant rope care notice. +

      Rope should be chained only when it is washed and checked. Dirty or unchecked rope may be coiled. Rope should be washed, checked and measured at the end of each expo. See the Courant rope care notice.

      Rope should be labeled at both ends with "CUCC", the year of first use and the rope length. Where the manufacturer specifies the maximum end of life date, this may also be specified, eg CUCC 2016-25. The maximum end of life date may be determined by cutting of a section of rope and finding the plastic strip that should contain the manufacturer and date of manufacture. diff --git a/handbook/survey/newwallet.html b/handbook/survey/newwallet.html index 17999d0a3..dcb4231f9 100644 --- a/handbook/survey/newwallet.html +++ b/handbook/survey/newwallet.html @@ -162,13 +162,13 @@ Please only copy files to the server that you created yourself and which liv

      Storing your electronic survey .topo files

      If you used a PDA instead of making notes on paper, you need to store your .topo files in the right place. -

      If you using the expo laptop just upload the .topo files in an ordinary online wallet +

      If you using the expo laptop just upload the .topo files in an ordinary online wallet wallet, as there is no physical wallet, e.g. for 2018#16 it would be:

       /home/expo/expofiles/surveyscans/2018/2018#16/
       
      -in the same way as you do scanned notes or scanned survey sketches. (We used to call them sometihng different, but this turns out to be both confusing and not necessary.) +in the same way as you do scanned notes or scanned survey sketches. (We used to use a different naming scheme for non-physical wallets, but that turned out to be both confusing and not necessary.)

      If you are not in the potato hut and your screen is too small to use the upload form then email all the .topo files to a friendly nerd (not necessarily on expo) who will upload them in the right place. diff --git a/handbook/troggle/trog2030.html b/handbook/troggle/trog2030.html index acc11768f..1948e4864 100644 --- a/handbook/troggle/trog2030.html +++ b/handbook/troggle/trog2030.html @@ -92,7 +92,7 @@ we are trying to make future maintenance easier, not harder. But it looks like R

      Things that could be a bit sticky 2 - front-end code

      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 +effort to (we managed to remove all the jQuery by using recent HTML5 capabilities). Flask looks interesting (but maybe is only simpler when starting a new project and doesn't scale to complexity the way Django does, but maybe in 2025 we could see a good way to move all the user interface (rewritten to be GIS-centric?) to the client diff --git a/handbook/troggle/trogdesign.html b/handbook/troggle/trogdesign.html index 731f2524b..75b935fa0 100644 --- a/handbook/troggle/trogdesign.html +++ b/handbook/troggle/trogdesign.html @@ -18,7 +18,7 @@


      diff --git a/handbook/troggle/trogdjango.html b/handbook/troggle/trogdjango.html index 6830d299b..546379ad2 100644 --- a/handbook/troggle/trogdjango.html +++ b/handbook/troggle/trogdjango.html @@ -41,18 +41,21 @@ note that the suffix on a name ''_set actually denotes a function cal

      Every extra plugin increases the "vulnerability surface" of troggle with respect to django upgrade problems so we now only install a new plugin if it is really, really necessary and we have removed as many as we could. For example, when django-staticfiles broke during one upgrade we discovered that we could use our own troggle.expopages as a workaround, so we are not planning on reinstalling staticfiles if we don't have to. -

      Why we still use django

      +

      Why we still use django

      Well we might not use django indefinitely, but unlike many frameworks the necessary functions are separately replaceable. So this gives us an evolution path. We can incrementally reduce the amount of django we use, replacing it with our own simpler python that does only what we need.

      The separate functions within the framework form a "stack". These functions exist in all web application frameworks but in Django they are loosely coupled.

      The stack is:

        -
      1. SQL database: mapping to/from python objects and indexing/access routines for all the entries (sqlite, MySQL, MariaDB, postgres all work) -
      2. request/response (http GET/POST) including access control and security middleware, -
      3. URL mapping/dispatch which matches a requested URL with a chunk of python code, and vice versa (declarative and bidrectional), +
      4. SQL database: mapping to/from python objects and indexing/access routines for all the entries (sqlite, MySQL, MariaDB, postgres all work). This is where the multi-user synchronisation happens too. +
      5. request/response (http GET/POST) including access control and security middleware. We could never keep up with web security if we didn't use a well-supported system for this. +
      6. URL mapping/dispatch which matches a requested URL with a chunk of python code, and vice versa (declarative and bidrectional). "Cool URIs don't change."
      7. templates which format the results of data queries into HTML pages or JSON data exports
      -

      See the django design philosophy on 'loose coupling and tight cohesion'. Note that having a URL dispatcher that supports reverse resolution is important: it is a key reason why we need a framework and not just a mess of javascript. We have nearly 100 URL patterns. +

      See the django design philosophy on 'loose coupling and tight cohesion'. Note that having a URL dispatcher that supports +reverse resolution +is important: it is a key reason why we need a framework and not just a mess of javascript. We have nearly 100 URL patterns. +We should try to reduce the number of distinct URLs perhaps, but they help document the structure too.


      diff --git a/handbook/troggle/trogindex.html b/handbook/troggle/trogindex.html index 22fc8ae62..9b0e58b95 100644 --- a/handbook/troggle/trogindex.html +++ b/handbook/troggle/trogindex.html @@ -24,6 +24,7 @@
    • Troggle - a kinder simpler troggle? - Radost's proposals (critiqued)
    • Troggle Architecture Speculations - as in April 2020
    • Troggle in 2025-2030 - architectural evolution proposal
      +
    • Troggle - Kill it with Fire - rewrite considerations
    Troggle laptop configuration - how to set up a software development machine
      @@ -36,7 +37,7 @@
    Troggle and Django - The Django web framework we use
    Troggle: updating Django - Upgrading troggle to use a later Django version
    -Troggle unit tests - test suite for programmers
    +Troggle tests - test suite for programmers
    Troggle & expo systems - status update - where we are now

    @@ -48,7 +49,7 @@
    diff --git a/handbook/troggle/trogkill.html b/handbook/troggle/trogkill.html new file mode 100644 index 000000000..471539a9f --- /dev/null +++ b/handbook/troggle/trogkill.html @@ -0,0 +1,63 @@ + + + + +Handbook Troggle Kill it with Fire + + + +

    CUCC Expedition Handbook

    +

    Troggle - Kill it with Fire

    + +

    This is a book: Kill It With Fire: Managing Aging Computer Systems (And Future Proof Modern Ones) +

    Read the brief reviews: + +book cover image + +

    +

    About a third of the book is about management and doing repair/rewrite inside large organisations, but +nearly half of it is directly relevant to us: + +

      +
    • Consider iteration in place as the default approach. +
    • Beware of artificial consistency as proposed to "improve" technical value. +
    • Don't assume that what you can't see is simple to replace: there may be years of effort hiding considerable complexity which appears simple on the surface. +
    • Previous modernization efforts may have left behind serious scar tissue which you need to consider. +
    • Many people try to fix things which are not, in fact, broken. Don't optimise beyond diminishing returns. +
    • Modernization needs momentum to finish the job: don't take on risks without also producing compelling value. +
    • Decisions made to avoid rewriting the new code later are usually bad decisions. +
    • The only thing worse than attempting to fix the wrong thing is leaving the fix attempt unfinished. +
    • Site reliability expressed as uptime percentages is rarely the real issue. +
    • Speed of recovery after failure is always more important than you think. +
    • A perfect record of no failures can always be broken, but resilience is an accomplishment that lasts. +
    • Know when to run a systemic Code Yellow hackathon and when not to. +
    • Always discover why previous modernisations failed first. +
    • Spend a lot of time problem setting before you start to think about problem solving. +
    • Working through a major modernisation is all about managing scope. +
    • Code is much easier to write than it is to read. Modernisaton means a lot of code reading. +
    • Human beings are absolutely terrible at estimating probabilities and risk. We always under-estimate the amount of work in a rewrite and over-estimate the likelihood of success. +
    • Success does not come all at once. What are the progressive success criteria during the reengineering? +
    • Use Diagnosis, Policy, Actions where there is little consensus about what success looks like. +
    • Use bullet journalling to maintain your own morale during a re-engineering project. +
    • When a failure is user input, fail gracefully with helpful message. +
    • When a failure is due to a programming or specification bug, fail hard and fast. +
    • Build simple, performant systems before you start on the bells and whistles. +
    • Prioritise simple code running fast early, so that you can iterate fast. + +
    • An existing system is not a reliable specification for the proposed new system. Important behaviour will be implicit, not documented. +
    + +

    The book was published in March 2021. +

    Refactoring

    +

    So how do we repair old code? By refactoring. I use the first edition of Fowler's book rather than the 2nd. And Brett Slatkin's Effective Python (second edition) is absolutely invaluable. +
    +


    +Return to: Troggle intro
    +Return to: Troggle Programming Guide
    +
    + + diff --git a/handbook/troggle/troglaptop.html b/handbook/troggle/troglaptop.html index 836d182f6..56617ffbf 100644 --- a/handbook/troggle/troglaptop.html +++ b/handbook/troggle/troglaptop.html @@ -30,7 +30,7 @@ http://expo.survex.com/repositories/troggle/.git/tree/README.txt

    Installing linux

    -

    If you don't already know how to do this, then you should probably not be attempting to work on the troggle code. But in case you are an experienced linux user who has always had someone else set up the system for them, then Ubuntu is the easiest and more forgiving to install, either directly on the computer or inside WSL. Because we are using fairly old releases of Django, you will want Ubuntu-20.04 +

    If you don't already know how to do this, then you should probably not be attempting to work on the troggle code. But in case you are an experienced linux user who has always had someone else set up the system for them, then Ubuntu is the easiest and more forgiving to install, either directly on the computer or inside WSL. Because we are using fairly old, stable releases of Django, you will want Ubuntu-20.04

    • Install in WSL on Windows 10.
    • Install Ubuntu 20.04 LTS. @@ -39,17 +39,20 @@ http://expo.survex.com/repositories/troggle/.git/tree/README.txt

      WSL on Windows

      The standard documentation for Ubuntu or debian below all works, but you should first skim the -Windows expo laptop description of WSL1 and WSL2. The default -is that WSL2 will be installed, but all our practical experience so far is with WSL1. +Windows expo laptop configuration too. So far as expo software is concerned, WSL1 and WSL2 behave identically. +

      Installing python

      -

      Python is not installed by default usually, and in any case we need specific versions to be installed. For Ubuntu 20.04 the default is python3.9 but this is incompatible with standard debian Buster which is what is live on our server, so we also need python3.7 . If you are planning on helping the migration of troggle from debian Buster (v10) to Bullseye (v11) then you will also want python3.8 . +XKCD python install + +

      Python is not installed by default usually, and in any case we need specific versions to be installed. For Ubuntu 20.04 the default is python3.9 but this is incompatible with standard debian Buster which is what is live on our server, so we also need python3.7 . +

      If you are planning on helping the migration of troggle from debian Buster (v10) to Bullseye (v11) then you will also want python3.8 .

      sudo apt install python3 python3-pip
      +sudo apt install sqlite3 sqlite3-doc
      +sudo apt install survex
       sudo apt install software-properties-common
       sudo add-apt-repository ppa:deadsnakes/ppa
       sudo apt install python3.7 python3.7-venv python3.7-doc binutils binfmt-support
      -sudo apt install sqlite3 sqlite3-doc
      -sudo apt install survex
       cd /usr/bin
       sudo ln -s python3 python
       sudo ln -s pip3 pip 
      @@ -209,7 +212,7 @@ We have at one time made localsettings in /_deploy/ appropriate for

    -WARNING: only the WSL and debian variants are current in October 2021. All the others are so old that +WARNING: only the WSL and debian variants are current in December 2021. All the others are so old that they will need serious work to be useable. Copy what you need from WSL and debian variants of localsettings.py @@ -332,7 +335,7 @@ and run the tests again:

    python  manage.py test -v 2
    -
    Click on the triangle to see how to run the folk script. +
    Click on the triangle to see how to run the folk script. You don't need to do this now. The folk generation script is top of the list in @@ -355,7 +358,7 @@ cd ../../troggle
    - http://localhost:8000/stats
    - http://localhost:8000/people (takes a minute or so)
    - http://localhost:8000/expofiles/surveyscans/2019/walletindex.html -<
    - http://localhost:8000/survexfile/caves/ +
    - http://localhost:8000/survexfile/caves/
    - http://localhost:8000/expofiles/training-info/Idiots guide to accessing expo git.pptx
    - http://localhost:8000/1623/291/291.htm
    - http://localhost:8000/caves diff --git a/handbook/troggle/trognotes.html b/handbook/troggle/trognotes.html index c6e9f9a49..40dfece6a 100644 --- a/handbook/troggle/trognotes.html +++ b/handbook/troggle/trognotes.html @@ -49,6 +49,16 @@ live and in-use: all the foreign keys and relationship cardinalities.

    And, you may be surprised to discover, we have given a lot of thought into how to make it easier for you to get involved in the programming while not screwing up this multi-decade software project. +

    Kill it with Fire

    + +dumpster fire +

    Everyone at some point feels like giving up and wonders if we should just rewrite it all from scratch using 'modern' techniques. +Several of us have given this a lot of thought, see 'A kinder, simpler troggle', +the 2030 plan, architecture constraints and most importantly, the 4-layer stack any future technology with some public URLs would need to emulate. +

    We have also been learning from the global software community when you really do need to 'Kill it with Fire': what are +the characteristics of code and of organisations that mean that it is a good idea to give up, and if so how to +manage the rewrite. The answers are "almost never" and "don't": as explained in this summary of the book 'Kill it with Fire'. +

    Perhaps an external add-on?

    Perhaps you can program something external to troggle, in JavaScript say, using troggle data?

    Creating your own system development machine

    -

    It's a simple sequence whcih steadily builds your expertise: +

    It's a simple sequence which steadily builds your expertise:

    1. Use the online forms and reports.
    2. Read documentation to get the concepts and structures into your head, so that you can see how it all fits together and works. @@ -66,15 +76,15 @@ to get involved in the progra
    3. Get the 'expoadmin' password and explore the live system online: watch the data change in real time
    4. Configure an ssh key and Filezilla or scp/sFTP.
    5. Configure a basic expo laptop -
    6. Configure a more cave software on your laptop +
    7. Configure more cave software on your laptop
    8. Configure a troggle development machine - a laptop where you have cloned the repos and installed django. Installing is the same as updating Django. See Troggle: updating Django.

    Fixing broken URL dispatch

    -

    This happens all the time. If ever troggle is crashing on you very mysteriously, it is almost certainly due to a typo in troggle/urls.py . Odd but true. +

    This happens all the time. If ever troggle is crashing on you very mysteriously, it is almost certainly due to a typo in troggle/urls.py . Odd but true.

    Fixing a broken HTML template

    - +[to be written]

    Running databaseReset

    Running the test suite

    This manual is very incomplete - notes

    diff --git a/handbook/troggle/trogspeculate.html b/handbook/troggle/trogspeculate.html index fb188c363..f81d78976 100644 --- a/handbook/troggle/trogspeculate.html +++ b/handbook/troggle/trogspeculate.html @@ -31,6 +31,7 @@ Wikipedia list of javascript frameworks.] With our deep historical perspecti we can expect this menagerie to sort itself out into a stable, standardised foundation within the next couple of decades but probably not within the next 10 years. +(ECMAscript 12 is definitely on the way to making these frameworks redundant.)

    A web API to expose the troggle database (read-only) would allow some keen person to write a special-purpose app on a phone, e.g. an entrance-locator @@ -53,6 +54,8 @@ enthusiast must have done this already surely ? Ah yes, Brython.
    Pyodide - full browser using webassembly (2021) and
    Skulpt (which has, since 2017, a full-blown commerical system() built on top of it - by a CambridgeCL spinout)
    +WASM - CPython in webassembly (2021)
    +

    Which is fun, but not useful. And not just because it may be immature. None of this addresses our biggest problem: devising something that can be diff --git a/handbook/troggle/trogtests.html b/handbook/troggle/trogtests.html new file mode 100644 index 000000000..33ddc0251 --- /dev/null +++ b/handbook/troggle/trogtests.html @@ -0,0 +1,72 @@ + + + + +Handbook Troggle - Automated Testing + + + +

    CUCC Expedition Handbook

    +

    Handbook Troggle - Automated Testing

    + +

    Troggle Automated Testing

    +

    We have a suite of more than 70 smoke tests +which are run manually by troggle programmers like this: +

     troggle$ python manage.py test -v 1
    + +

    These are 'end to end' tests which very quickly show whether something is badly broken. The tests are for two purposes only: +

      +
    • To check whether anything has broken when we try a new version of python, Django or a Django plugin +
    • To check that the troggle system has been installed correctly on a new machine +
    +

    This is surprisingly effective. Django produces excellently detailed tracebacks when an fault happens, +which allow us to home in on the precise part of the code which has been broken by a version upgrade. +

    We do also have a handful of unit tests which just poke data into the database and check that it can be read out again. +

    +The test code is all in troggle/core/TESTS/. +

    Example test

    +

    The test 'test_page_expofile' checks that a particular PDF is being served correctly by the web server +and that the resulting page is the correct length of 2,299,270 bytes: + +

    
    +    def test_page_expofile(self):
    +        # Flat file tests.
    +        response = self.client.get('/expofiles/documents/surveying/tunnel-loefflerCP35-only.pdf')
    +        self.assertEqual(response.status_code, 200)
    +        self.assertEqual(len(response.content), 2299270)
    +
    + +

    Django test system

    +

    This test suite uses the the +django test system. One of the things this does +is to ensure that all the settings are imported correctly and makes it easy to specify a test as an input URL and expected +HTML output using a Django object text client. +It sets up a very fast in-memory sqlite database purely for tests. +No tests are run with the real expo database. + +

    Troggle tests

    +

    The tests can be run at a more verbose level by setting the -v 3 flag. + +

    As yet we have no test database set up, so the in-memory database starts entirely empty. However we have 'fixtures' in +troggle/core/fixtures/ +which are JSON files containing dummy data which is read in before a few of the tests. + +

    Automated testing on the server

    +

    Something is stopping the test suite running on the server. We haven't fixed this yet. + +

    How you can help

    +

    We could do with a lot more unit tests which test small, specific things. If we have a lot of these it will make future re-engineering of troggle easier, as we can more confidently tackle big re-writes and still be sure that nothing is broken. +

    We haven't got any tests which check that the input parsers work. None. + +

    Have a look at Wikpedia's review of types of software testing for ideas. +

    If you want to write some tests and are having trouble finding something which is untested, have a look at the list of +url paths in the routing system in troggle/urls.py +and look for types of url which do not appear in the test suite checks. + +


    +Go on to: Troggle architecture
    +Return to: Troggle intro
    +Troggle index: +Index of all troggle documents

    + + diff --git a/handbook/troggle/unittests.html b/handbook/troggle/unittests.html deleted file mode 100644 index 2153fafa8..000000000 --- a/handbook/troggle/unittests.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - -Handbook Troggle - Unit Tests - - - -

    CUCC Expedition Handbook

    -

    Handbook Troggle - Unit Tests

    - -

    Troggle Unit Tests

    -

    We have a small suite of tests which are run manually by troggle programmers like this: -

     troggle$ python manage.py test -v 1
    -The test code is all in troggle/core/TESTS/tests.py. -

    The test 'test_page_expofile' checks that a particular PDF is being served correctly by the web server -and that the resulting page is the correct length of 2,299,270 bytes: - -

    
    -    def test_page_expofile(self):
    -        # Flat file tests.
    -        response = self.client.get('/expofiles/documents/surveying/tunnel-loefflerCP35-only.pdf')
    -        self.assertEqual(response.status_code, 200)
    -        self.assertEqual(len(response.content), 2299270)
    -
    - -

    This test suite is part of the -django test system which is a very thin layer on top of the standard python library module -unittest. One of the things this layer does -is to ensure that all the settings are imported correctly, and it sets up a very fast in-memory sqlite database purely for tests. -No tests are run with the real expo database. -

    The tests can be run at a more verbose level by setting the -v 3 flag. - -

    As yet we have no test database set up, so the in-memory database is entirely empty. However we have 'fixtures' in -troggle/core/fixtures/ -which are JSON files containing dummy data which is used in the more complex tests. - -

    If you want to write some tests and are having trouble finding something which is untested, have a look at the list of -url paths in the routing system in troggle/urls.py -and look for types of url which do not appear in the test suite checks. - -


    -Go on to: Troggle architecture
    -Return to: Troggle intro
    -Troggle index: -Index of all troggle documents

    - - diff --git a/infodx.htm b/infodx.htm index 52693025d..d12142ae1 100644 --- a/infodx.htm +++ b/infodx.htm @@ -13,8 +13,8 @@
    • Cave Descriptions Index. Recently-explored major caves:
        -
      • Fischgesicht-Höhle - FishFace
      • -
      • Heimkehrhöhle - Homecoming
      • +
      • Fischgesicht-Höhle - FishFace
      • +
      • Heimkehrhöhle - Homecoming
      • Balkonhöhle
      • Tunnockschacht
      • Schwarzmooskogeleishöhle
      • @@ -33,7 +33,7 @@ | 2019 | - 2020 + 2022 | expedition planning and logistics @@ -46,7 +46,7 @@ | 2019 | - 2020 + 2022 | expedition cave exploration and survey data diff --git a/scripts/make-folklist.py b/scripts/make-folklist.py index bc6381d35..4f76715fc 100755 --- a/scripts/make-folklist.py +++ b/scripts/make-folklist.py @@ -13,18 +13,25 @@ pics = 0 allyears = 0 recordholders = [] output = "" +n = 0 lines = sys.stdin.readlines() headcounts_byyear = [0]*(len(lines[0].split(","))-5) yearnow = date.today().year + for r in lines[1:]: - r = r.replace("\n","") - r = r.replace("\r", "") - cells = r.split(",") # chomp newline - (name, surname, guest, vfho, mug) = cells[:5] - years = cells[5:] + n +=1 + try: + r = r.replace("\n","") + r = r.replace("\r", "") + cells = r.split(",") # chomp newline + (name, surname, guest, vfho, mug) = cells[:5] + years = cells[5:] + except: + print(f'Exception in line {n}: {r}') + expos_caving = len([t for t in years if t == "1"]) expos_notcaving = len([t for t in years if t == "-1"]) if(expos_caving == 0 and expos_notcaving == 0): @@ -156,7 +163,7 @@ src="i/mug.png" />.

        y2 = lastyear-2 y1 = lastyear-1 print(""" -

        Links to recent expos: previous expo +

        Links to recent expos: previous expo. There was no expo in 1986, 2020 or 2021.


        """ % y1) diff --git a/years/2021/index.html b/years/2021/index.html index 8cca0a0e2..08c709f2a 100755 --- a/years/2021/index.html +++ b/years/2021/index.html @@ -2,116 +2,13 @@ -Expo 2021: Organisation and mission statement +Expo 2020: Organisation and mission statement -

        Expo 2021

        -

        Caving trips records. -

        Expo 2021: Organisation

        -

        -Link to last expedition: 2019
        -Back to Expo Planning Guide. - - - - -

        Pre-Expo Planning

        - - -PDF docs created for planning the 2020 Expo: - - -On expo website: - - -

        Expo reports

        - - - -

        During Expo - mostly data entry

        - - -

        Last day of expo

        -
          -
        • Photos of bier book complete (backup) -
        • Photos of accounts and sesh book complete (backup). -
        • Things left at Base Camp 2021 -
        • Things left at Top Camp 2021 -
        • Things left at Bivvy Camp (?) 2021 -
        • Things left at Undergound Camp (?) 2021 -
        • Ropes out of cave at end expo -
        - -

        Post-Expo Completion

        -
          -
        • 2021 surveying completion -
        • Call-out book scanned -
        • Caver's Forum expo report - Caving UK -
        • Things needed for next year 2021 - -
        - - - - -

        2021 Mission statement

        - - -

        Criteria for a successful expo

        -

        To discuss.. (not just x miles of newly surveyed cave) -

        Organisational targets

        - - - -

        Training targets

        - -

        Every Expo - ongoing jobs

        - +

        Expo 2020

        +

        Caving trips records. +

        COVID - No expedition this year


        Back to Expo Planning Guide. diff --git a/years/2022/index.html b/years/2022/index.html new file mode 100644 index 000000000..ff600d258 --- /dev/null +++ b/years/2022/index.html @@ -0,0 +1,119 @@ + + + + +Expo 2022: Organisation and mission statement + + + +

        Expo 2022

        +

        Caving trips records. +

        Expo 2022: Organisation

        +

        +Link to last expedition: 2019
        +Back to Expo Planning Guide. + + + + +

        Pre-Expo Planning

        + + +PDF docs created for planning the 2020 Expo: + + +On expo website: + + +

        Expo reports

        + + + +

        During Expo - mostly data entry

        + + +

        Last day of expo

        +
          +
        • Photos of bier book complete (backup) +
        • Photos of accounts and sesh book complete (backup). +
        • Things left at Base Camp 2022 +
        • Things left at Top Camp 2022 +
        • Things left at Bivvy Camp (?) 2022 +
        • Things left at Undergound Camp (?) 2022 +
        • Ropes out of cave at end expo +
        + +

        Post-Expo Completion

        +
          +
        • 2022 surveying completion +
        • Call-out book scanned +
        • Caver's Forum expo report - Caving UK +
        • Things needed for next year 2023 + +
        + + + + +

        2022 Mission statement

        + + +

        Criteria for a successful expo

        +

        To discuss.. (not just x miles of newly surveyed cave) +

        Organisational targets

        + + + +

        Training targets

        + +

        Every Expo - ongoing jobs

        + +
        +

        +Back to Expo Planning Guide. + + diff --git a/years/2021/logbook.html b/years/2022/logbook.html old mode 100755 new mode 100644 similarity index 88% rename from years/2021/logbook.html rename to years/2022/logbook.html index f74293438..1483c7952 --- a/years/2021/logbook.html +++ b/years/2022/logbook.html @@ -6,7 +6,7 @@ -

        CUCC Expo Logbook 2021

        +

        CUCC Expo Logbook 2022

        frontispiece

        @@ -15,7 +15,7 @@
        -
        2021-07-07
        +
        2022-07-07
        author, lis, of, comma, separated, people
        LOCATION - The rest of the title
        diff --git a/years/2021/mission.html b/years/2022/mission.html old mode 100755 new mode 100644 similarity index 94% rename from years/2021/mission.html rename to years/2022/mission.html index 66ffa5ba8..040463dfe --- a/years/2021/mission.html +++ b/years/2022/mission.html @@ -1,11 +1,11 @@ -Expo 2020 mission statement +Expo 2022 mission statement -

        Expo 2021

        -

        2021 Mission Statement

        +

        Expo 2022

        +

        2022 Mission Statement

        Caving targets - placeholder pending discussion

        This year’s aims are to continue pushing leads from Balkonhoehle, and possibly Fischgesicht and Keinewassermelon.

        diff --git a/years/2021/whoandwhen.html b/years/2022/whoandwhen.html old mode 100755 new mode 100644 similarity index 98% rename from years/2021/whoandwhen.html rename to years/2022/whoandwhen.html index 79d0a5280..a0d2e0c98 --- a/years/2021/whoandwhen.html +++ b/years/2022/whoandwhen.html @@ -1,6 +1,6 @@ -Expo 2021: Who and When +Expo 2022: Who and When