in 1730, 294 Indian men and 69 women died while protecting their
village trees.
Members of the Bishnois branch of Hinduism, died while trying to
protect the trees in their village from being turned into the raw material for
building a palace. They literally clung to the trees, while being slaughtered by the
foresters. But their action led to a royal decree prohibiting the cutting of trees
in any Bishnoi village. And now those villages are virtual wooded oases amidst an
otherwise desert landscape.
Photo of village women of the Chipko movement (chipko means “to
cling” in Hindi)) in the early 70's in the Garhwal Hills of India, protecting the
trees from being cut down.
Site is divided into 'parcels' of land with the same habitat type and
quality
The value of each parcel pre- and post-development is converted to a common
currency of Habitat Units (HU) Concentrating here on area
habitiats but Hedgerows and watercourse are included
Development is required to provide a net 10% increase in HU via
a mitigation hierarchy: on-site ; off-site ; purchased credits Of-site could be anywhere in Britain at a increased cost in Units which
potentially sees urban biodiversity exported to farming land. If you
can't acquire any habitat at all, you would be required to pay the
government eg £84,000 one unit of grassland
Complex rules determine how parcels are assessed and what character of existing
land can be replaced by what character of proposed land of what timescale.
It's the most widespread
'declarative' computational tool I've seen various
estimates of around a billion people use Excel
Most spreadsheets in use contain errors, sometimes very serious
Each of us has
their own particular horror story. My personal vote goes to the infamous
Reinhart and Roggoff paper "Growth in a time of Debt". A basic error in
their spreadsheet coupled with bad and opaque methodology led to support for
austerity programmes across the world.BBC nes
No separation of data and code Apart from making it hard to comprehend, it makes testing
and version control very hard
No abstractionThe core Habitat table contains 132 rows or 133 or 131,
all conceptually the same
Prototyping is much easier than
abstraction I personally find it much easier to create
Schemas from an instance of the documet than de novo
Incomprehensible cell references
Excel does have a facility to name cells or sequences
of cells but it is rarely used
Hidden cells and macros
BBC nes : https://www.bbc.co.uk/news/magazine-22223190
=IFERROR(IF(P11="","",
IF(AND(P11=$'G-1 All Habitats'.$X$3,T11>0),U11+V11,
IF(AND(P11=$'G-1 All Habitats'.$X$3,S11>0),U11+V11,
IF(AND(P11=$'G-1 All Habitats'.$X$3,AC11>0),"Any Loss Unacceptable ⚠",
IF(AND(P11=$'G-1 All Habitats'.$X$3,W11>0),"Any Loss Unacceptable ⚠",
H11*J11*L11*O11)
)))),"Check Data ▲")
There are two ways of constructing a software design: One way is to make it so
simple that there are obviously no deficiencies, and the other way is to make it
so complicated that there are no obvious deficiencies. The first method is far
more difficult. Tony Hoare 1980
Apart from Quicksort, CSP and Z, Tony implemented Algol 60 for
Elliott Brothers which I used on the NZ Met Office's Elliot 503 and was a close
friend of my mentor and employer for a few years, Michael Jackson.
Legislators and administrators would do well to heed this insight
too.
Terminology : intensional(conceptual) and extensional(data)
Data model and its extension as one or more Databases (Project)
Entity and its extension as a Table in a Database This terminology unconventional since in Chen's work theis would be
an Entity Type, and the instance an Entity.
Attribute and its extension as values in a Table
Relationship between Entities- as shared values, pointers
Each table is an XML document eg Baseline HabitatI've chosen to use first-class entity-names and attribute
names. An alternative would be a generic Row element with a name attribute
containing Field elements with a name attribute. This would allow indexes to
be used but that would make the expression of the formula unreadable
Online application written in XQuery running on eXist-db and
JavaScript.
declare function md:topological-sort(
$unordered as element(dependency)*,
$ordered as as element(dependency)* )
as element(dependency)* {
if (empty($unordered))
then $ordered
else
let $dependencies :=
$unordered [every $name in require
satisfies $name = $ordered/@name]
return
if ($dependencies)
then md:topological-sort(
$unordered except $dependencies,
($ordered, $dependencies )
)
else ...
};
This algorithm needs a workaround in eXist-db due to a bug
When looking for an algorithm for topological sorting, I asked
Chat-GTP (Bard) for an algorithm in XQuery. It came back with syntacticlly correct
but not functional code, even after several challenges. Giving up on AI, I did a
basic search and the first result was an algorithm I had written in the XQuery
wikibook 15 years ago.