tag:blogger.com,1999:blog-57890479216140088642023-11-16T16:30:38.818+00:00The Fool on the HillRandom thoughts on politics, fiction and software; occasionally interesting.Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.comBlogger290125tag:blogger.com,1999:blog-5789047921614008864.post-32227880473780460772022-02-19T12:26:00.002+00:002022-02-19T12:39:46.358+00:00This blog is being decommissioned.<p><span style="font-size: large;"><b>TL;DR: In future, my blog will be <a href="https://www.journeyman.cc/blog/">here</a>. No further entries will be published on this site. </b></span><br /></p><p>From 2004 until 17 January 2011, I ran my blog on software of my own design, the <a href="https://sourceforge.net/projects/pres/">Press Release System</a>. In 2011, I decided to move it onto Google's Blogger platform. At that time, while it was no longer possible to take Google's famous "don't be evil" motto seriously, it was still possible to view them as not particularly evil.</p><p>It no longer feels that way, and I no longer want to be as beholden to them as I presently am. Also, I have a new content engine, <a href="https://github.com/journeyman-cc/smeagol">Smeagol</a>, which, while it isn't perfect, is at least as good at hosting a blog as Blogger is; and, if I host my blog on it, it will gradually get better over time.</p><p>So from now on my blog will be hosted <a href="https://www.journeyman.cc/blog/">here</a>. Most of the entries from here have already been migrated, and all will be in due course. Once I'm satisfied that the new blog is fully working, and I have written a redirector so that URLs from this site still point to the right entry, I will redirect the <b>blog.journeyman.cc</b> name to point to it, and this site will be shut down.<br /></p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-49723057868112463062021-11-29T18:29:00.000+00:002021-11-29T18:29:02.904+00:00The North Wind doeth blow<p> <table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy_DGp8VSsk4JcD1ra3Uu-5kYQ32bVsWg4JuCkaxkPVyvg_80yy8SuV-IWkvvUNLdvYiFllEltAmz7_Y6Z2KE3Og6pxHzYyOpNd36bIzJQbHAUWZOIdz7QuNIJCsPUoRym99sokTyUpFM/s2048/Teracube_20211128_102042_876.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy_DGp8VSsk4JcD1ra3Uu-5kYQ32bVsWg4JuCkaxkPVyvg_80yy8SuV-IWkvvUNLdvYiFllEltAmz7_Y6Z2KE3Og6pxHzYyOpNd36bIzJQbHAUWZOIdz7QuNIJCsPUoRym99sokTyUpFM/s320/Teracube_20211128_102042_876.jpg" width="240" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">View from my bedroom window<br /></td></tr></tbody></table>Storm Arwen tore through my wood on Friday night, and caused very significant damage.<br /><br />There is no significant damage to the house; certainly nothing which compromises its integrity. The wind turbine is still standing and still working. The cattle shed is also undamaged.<br /><br />A strip about 15 to 20 metres wide through the wood from the Summer Palace glade to the blow from three years ago has lost substantially all its trees: it is just utter chaos. This is about quarter to a third of the whole area in the wood, and includes some of the largest trees. The summer palace is entirely gone. The wreck is immediately behind the house and three trees fell on the house. <br /><br />Around the area where the trees are all fallen, there are further trees which are still standing but unstable. What remains of the wood that's largely unaffected are<br /><br />* A strip around five metres wide along the east side of the wood;<br />* A strip of at least 15 metres wide along the south edge of the wood;<br />* A more substantial area of at least thirty metres wide along the west edge, although this is affected by a much smaller blow in the south-west corner which happened five years ago.<br /><br />The fallen trees are going to have to be hauled/winched out into Commons Meadow, which means I'm going to need a new 12 foot gate. But actually that fence is going to need work anyway, because one of the strainer posts was braced back to a tree in the wood, and consequently part of the fence is demolished.</p><p>There are more pictures <a href="https://photos.app.goo.gl/8xohbQrKLdsVAReVA">here</a>.<br /></p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-20567649856509764992021-11-16T16:41:00.003+00:002021-11-16T16:41:44.480+00:00Open Source Climate Models: initial review <h2 id="motivation"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyDwI_nCjw3duGMFbUxem45GrK9INNxfwQ6rpCDd0g2IK5ignQulJZS3NFyfk-qLebTWudJGcxG-MT6LTiWdOdO962ec3gTaSw88HOUn8bN8FKGKEYL_O5OAgzAteyQN8xoSx2RXt_XZg/s2048/P1010987.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyDwI_nCjw3duGMFbUxem45GrK9INNxfwQ6rpCDd0g2IK5ignQulJZS3NFyfk-qLebTWudJGcxG-MT6LTiWdOdO962ec3gTaSw88HOUn8bN8FKGKEYL_O5OAgzAteyQN8xoSx2RXt_XZg/s320/P1010987.JPG" width="320" /></a></div>Motivation</h2>
<p>Climate models are normally built to do real science; that is
not my aim. Rather, I want something which will form a component
of an educational game which allows players to make policy
decisions to attempt to maintain the climate within ‘safe’
limits, given constraints of population, consumption, demand for
strategic materials and so on.</p>
<p>Consequently, I need the model to run on ordinary PCs that
people may be expected to have, or even perhaps on something like
an X Box. It also needs to be able to simulate a year in at most
about twenty minutes, with enough processor cycles free to run
user interface code.</p>
<p>It’s quite likely that no existing climate model will work
under these constraints.</p>
<h2 id="systems-considered">Systems considered</h2>
<table>
<colgroup>
<col style="width: 20%;"></col>
<col style="width: 8%;"></col>
<col style="width: 20%;"></col>
<col style="width: 13%;"></col>
<col style="width: 20%;"></col>
<col style="width: 17%;"></col>
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">Name</th>
<th>Language</th>
<th>Licence</th>
<th>Status</th>
<th>Documentation</th>
<th>Builds?</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><b><a href="https://github.com/CliMA/ClimateMachine.jl">ClimateMachine</a></b></td>
<td>Julia</td>
<td>Apache License v2.0</td>
<td>Released</td>
<td>
<a href="https://clima.github.io/ClimateMachine.jl/latest/GettingStarted/Installation/">
Present</a>
</td>
<td>Failing, probably fixable.<br /></td>
</tr>
<tr class="even">
<td style="text-align: left;"><b><a href="https://github.com/ESCOMP/CESM">Community Earth System
Model</a></b></td>
<td>Fortran, C, Python, Perl</td>
<td>
<a href="https://github.com/ESCOMP/CESM/blob/master/LICENSE.txt">BSD-style</a>
</td>
<td>Released</td>
<td>
<a href="https://github.com/ESCOMP/CESM">Present</a>
</td>
<td>Failing</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><b><a href="https://github.com/JGCRI/hector">Hector</a></b></td>
<td>C++, R</td>
<td>
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPL v3</a>
</td>
<td>Released</td>
<td>
<a href="https://jgcri.github.io/hector/articles/manual/">Present</a>
</td>
<td>Apparently successful</td>
</tr>
<tr class="even">
<td style="text-align: left;"><b><a href="https://github.com/E3SM-Project/E3SM">E3SM</a></b></td>
<td>Fortran, C</td>
<td>BSD Style</td>
<td>Not suitable for consumer-grade machines</td>
<td>
<a href="https://e3sm.org/model/running-e3sm/">Present</a>
</td>
<td>Not attempted</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><b><a href="https://github.com/ecmwf/atlas">atlas</a></b></td>
<td>C, Fortran</td>
<td>Apache License v2.0</td>
<td>Probably too low level</td>
<td>
<a href="https://github.com/ecmwf/atlas">Minimal</a>
</td>
<td>Not attempted</td>
</tr>
<tr class="even">
<td style="text-align: left;"><b><a href="https://github.com/ExeClim/Isca">Isca</a></b></td>
<td>Fortran, Python</td>
<td>
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPL v3</a>
</td>
<td>Released</td>
<td>
<a href="https://execlim.github.io/IscaWebsite/">Present</a>
</td>
<td>Apparently successful, documentation slightly
wrong</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><br /></td>
<td><br /></td>
<td><br /></td>
<td><br /></td>
<td><br /></td>
<td><br /></td>
</tr>
</tbody>
</table>
<h3 id="climate-machine">Climate Machine</h3>
<p>Build failed with the following output:</p>
<pre><code>ERROR: LoadError: UndefVarError: LLVMPtr not defined
Stacktrace:
[1] include(::Module, ::String) at ./Base.jl:377
[2] top-level scope at none:2
[3] eval at ./boot.jl:331 [inlined]
[4] eval(::Expr) at ./client.jl:449
[5] top-level scope at ./none:3
in expression starting at /home/simon/.julia/packages/CUDA/wTQsK/src/CUDA.jl:9
ERROR: LoadError: LoadError: Failed to precompile CUDA [052768ef-5323-5732-b1bb-66c8b64840ba] to /home/simon/.julia/compiled/v1.4/CUDA/oWw5k_BxRo2.ji.
Stacktrace:
[1] error(::String) at ./error.jl:33
[2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1272
[3] _require(::Base.PkgId) at ./loading.jl:1029
[4] require(::Base.PkgId) at ./loading.jl:927
[5] require(::Module, ::Symbol) at ./loading.jl:922
[6] include(::Module, ::String) at ./Base.jl:377
[7] include(::String) at /home/simon/tmp/climate/ClimateMachine.jl/src/ClimateMachine.jl:1
[8] top-level scope at /home/simon/tmp/climate/ClimateMachine.jl/src/ClimateMachine.jl:12
[9] include(::Module, ::String) at ./Base.jl:377
[10] top-level scope at none:2
[11] eval at ./boot.jl:331 [inlined]
[12] eval(::Expr) at ./client.jl:449
[13] top-level scope at ./none:3
in expression starting at /home/simon/tmp/climate/ClimateMachine.jl/src/Arrays/MPIStateArrays.jl:3
in expression starting at /home/simon/tmp/climate/ClimateMachine.jl/src/ClimateMachine.jl:12</code></pre>
<p>The error appears to be caused by a problem in Julia’s CUDA
library, which should hand off computation to my graphics
processor (which would be a good thing as this has some serious
compute power).</p>
<p>All tests also fail, but that is almost certainly because the
build failed.</p>
<p>This is probably fixable without a huge amount of effort.</p>
<p>Overall, although I have no experience with Julia, the
codebase looks very clean and well designed. The installation
process was big and complex, but ran commendably cleanly, with no
installation problems.</p>
<h3 id="community-earth-system-model">Community Earth System
Model</h3>
<p>The build instructions appear to be incomplete. Nothing
compiles. There is no executable product. I don’t even know where
to start with attempting to investigate further.</p>
<h3 id="hector">Hector</h3>
<p>Pure R build appeared to work cleanly, but I didn’t understand
what I’d got sufficiently to carry out any meaningful tests. I
<i>think</i> it worked.</p>
<p>Makefile (standalone) build also appeared to build
satisfactory, produced an executable, and I was able to use this
to do a test run, but again I don’t understand what I’m doing
sufficiently to understand what I got. Still, this is
promising.</p>
<h3 id="e3sm">E3SM</h3>
<p>From the documentation it appeared exceedingly unlikely that
E3SM would run satisfactorily on the hardware available to me, so
I didn’t attempt this</p>
<h3 id="atlas">Atlas</h3>
<p>I <i>think</i> Atlas is probably a useful library for people
who know how to build climate models, but I think it’s too low
level for what I want to do. Build was not attempted.</p>
<h3 id="isca">Isca</h3>
<p>Installation/build appeared to work correctly, but there was a
slight error with the build documentation.</p>
<p>Where the documentation says to run</p>
<blockquote>
<pre><code>(isca_env)$ pip install -e .</code></pre>
</blockquote>
<p>I got the following error:</p>
<pre><code>(isca_env) simon@mason:~/tmp/climate/Isca$ pip install -e .
Obtaining file:///home/simon/tmp/climate/Isca
ERROR: file:///home/simon/tmp/climate/Isca does not appear to be a Python project: neither 'setup.py' nor 'pyproject.toml' found.</code></pre>
<p>I found a <code>setup.py</code> file under
<code>src/extra/python/</code>, so I ran</p>
<blockquote>
<p>pip install -e src/extra/python/</p>
</blockquote>
<p>This gave the following output:</p>
<pre><code>Obtaining file:///home/simon/tmp/climate/Isca/src/extra/python
Preparing metadata (setup.py) ... done
Requirement already satisfied: sh in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.13.1)
Requirement already satisfied: jinja2 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (3.0.3)
Requirement already satisfied: f90nml in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.3.1)
Requirement already satisfied: numpy in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.21.4)
Requirement already satisfied: pandas in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.3.4)
Requirement already satisfied: xarray in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (0.20.1)
Requirement already satisfied: MarkupSafe>=2.0 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from jinja2->Isca==0.2) (2.0.1)
Requirement already satisfied: python-dateutil>=2.7.3 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from pandas->Isca==0.2) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from pandas->Isca==0.2) (2021.3)
Requirement already satisfied: six>=1.5 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas->Isca==0.2) (1.16.0)
Installing collected packages: Isca
Running setup.py develop for Isca
Successfully installed Isca-0.2</code></pre>
<p>So I think that worked satisfactorily. To test it I then
attempted to run a test case, and this failed complaining about
missing environment variables. So I <i>think</i> this is
working and I just need to read the documentation better to get
it running.</p>
<p>It needs to be said this was also a very big, complex
installation process and the fact that it all ran cleanly is very
commendable: this isn’t easy.</p>
<h2 id="conclusion">Conclusion</h2>
<p>All climate models are complex bits of software, and, being
mathematically intensive, tend to be written in relatively
special purpose languages (R, Julia, Fortran) with which I’m not
familiar. I’m also intensely prejudiced against Python, because I
hate significant white space, so again where systems use Python
as a front end scripting language, this isn’t familiar to me.</p>
<p><b>Hector</b> and <b>Isca</b> built
satisfactorily without much difficulty. <b>Hector</b>
successfully ran test cases (and commendably quickly), although
it didn’t produce output I am able to interpret at this
stage. **Climate Machine** didn't build, but I think this is fixable with a little more work.<br /></p>
<p>All three of these systems are promising and worthy of further
investigation. Whether any will do what I need I am not yet
certain.</p>
Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-46629079094427959982021-11-15T15:56:00.003+00:002021-11-15T15:56:39.996+00:00The Everyone Dies Event Class <p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLN7oAmk8W0UG7ARb6E89iOKTAkxFXnR9j1UtwB6qo1yHNDNjqljCGFL3zD4njgujNG4XinIAOtX_2iqDk0J8kyXTdjS2g41J0tsH0KVBSQRCaYqEegnLfBjschk5G8CldMi1jDBbwc_w/s1536/Lytton-fire-1536x1024.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1024" data-original-width="1536" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLN7oAmk8W0UG7ARb6E89iOKTAkxFXnR9j1UtwB6qo1yHNDNjqljCGFL3zD4njgujNG4XinIAOtX_2iqDk0J8kyXTdjS2g41J0tsH0KVBSQRCaYqEegnLfBjschk5G8CldMi1jDBbwc_w/s320/Lytton-fire-1536x1024.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Lytton burns<br /></td></tr></tbody></table>The climate, globally, is warming. Everyone acknowledges that.
It’s not warming equally, or consistently, or evenly; I think
everyone acknowledges that as well. Rather, the atmosphere is a
heat engine: as you put more energy into it in the form of heat,
you get more work out of it, in the form of turbulence. Winds get
stronger, precipitation more intense, and heat waves hotter.</p>
<p>Human beings function in a fairly constrained temperature
band. The healthy body temperature is 37° Celsius, plus or
minus about one degree. The human body cools itself by
evaporation. If water can’t evaporate from your skin, you can no
longer cool yourself. Rather, you take on heat from the
environment. Body temperature above 40° Celsius is a life
threatening emergency, and above 42.3° denaturing of
proteins, especially in the brain, may occur rapidly. This is not
survivable.</p>
<p>But the operation of the human body generates heat
continually. The beating of the heart generates heat. The
movement of the chest cavity in breathing generates heat. Even
brain activity – thinking – generates heat.</p>
<p>So in order to survive we need to be able to dump a small
amount of heat into our environment continually. If the air is
humid enough that sweat can’t evaporate, we need a small heat
gradient to make that possible. So we need it to be actually
cooler than 37°, and the survivable number generally quoted is a
“wet bulb temperature” of 35°.</p>
<p>What does ‘wet bulb temperature’ mean? It’s the temperature at
which water (and sweat) evaporates, and that’s a function of the
absolute temperature of the air, and of the humidity: the
saturation of water vapour in the air. As the air becomes
increasingly humid, so the wet bulb temperature falls. In very
dry atmospheric conditions, you can easily survive air
temperatures well above 35° Celsius, provided you can drink
enough fluids to enable you to sweat.</p>
<p>So: there is a temperature and humidity at which everyone
exposed to the air just dies, and just dies pretty quickly. How
close are we to hitting those temperature and humidity
conditions?</p>
<p>The answer, of course, is that there are places on Earth which
regularly exceeded those limits even before the days of
significant anthropogenic warming, but that people don’t live in
those places. Examples include Death Valley in California, parts
of the Arabian Peninsula and of the Sahara, and Pakistan’s
northern Sindh province, in which a Victorian British Brigadeer
had the bright idea of building a city. What’s interesting is
that these are not generally humid places; on the contrary,
they’re exceptionally dry.</p>
<p>But the consequence of anthropogenic heating is that we’re
seeing both higher average temperatures and higher variations in
temperature. Which means we’ve been seeing a lot more exceptional
heat events than we’ve been used to.</p>
<p>Over the past decade, <a href="https://en.wikipedia.org/wiki/Wet-bulb_temperature#Highest_recorded_wet-bulb_temperatures">
ten places on Earth have recorded wet bulb temperatures</a> at or
above the theoretical ‘everybody dies’ limit. So far, we haven’t
had an event in which very large proportions of the population
have died suddenly of heat stroke, despite the fact that three of
the places which have seen the highest wet-bulb temperatures,
<a href="https://en.wikipedia.org/wiki/Ras_Al_Khaimah">Ras Al
Khaimah</a>, <a href="https://en.wikipedia.org/wiki/Jacobabad">Jacobabad</a> and
<a href="https://en.wikipedia.org/wiki/Mecca">Mecca</a> have
significant populations.</p>
<p>But we cannot be very far away from an ‘everybody dies’ event,
and the first probably won’t be somewhere that’s accustomed to
very high temperatures.</p>
<p><a href="https://en.wikipedia.org/wiki/Lytton,_British_Columbia#Climate">Lytton</a>,
in British Columbia, Canada, wasn’t, until this year, accustomed
to exceptionally high temperatures. Yes, it had frequently been
the hottest place in Canada, but Canada is not on the whole a
very hot place. The extreme heat event that hit Lytton in June
2021 – 49.6° Celsius – was fully 5° Celsius warmer than
had ever been recorded there before. This is, as I’ve said
before, because having more heat in the atmosphere makes it more
turbulent and thus more heterogenous.</p>
<p>Lytton is 50°13’52" North. For comparison, that’s about eleven
miles south of Plymouth in Devon, England, or about six miles
north of Prague, in the Czech Republic.</p>
<p>Lytton didn’t quite exceed the ‘everybody dies’ limit,
although it came very close. But it did exceed the ‘everything
burns’ limit, which is what it isn’t there any more. And what
Lytton proves is that, in an era of increasingly unstable
weather, extreme heat events do not only happen in the
tropics.</p>
<p>So:</p>
<ol type="1">
<li>
<a href="https://www.climate.gov/news-features/understanding-climate/climate-change-global-temperature">
We’re currently on 1.19° Celsius of anthropogenic
warming over pre-industrial levels</a>;
</li>
<li>At 1.19°, we’re seeing local temperature records being
exceeded by 5° not only in the tropics but even in
temperate zones;</li>
<li>At 1.19°, our margin of safety for ‘everyone dies’ events
in previously habitable zones appears to be completely
exhausted;</li>
<li>If capitalism continues (<a href="https://en.wikipedia.org/wiki/Shared_Socioeconomic_Pathways#SSP4:_Inequality_(A_Road_Divided)">SSP4</a>),
we’re <a href="https://www.nature.com/articles/d41586-020-01125-x">heading
for 3.2° Celsius</a> of warming; even on the much more
optimistic <a href="https://en.wikipedia.org/wiki/Shared_Socioeconomic_Pathways#SSP2:_Middle_of_the_road">
SSP2</a> track, we’re now heading for 2.7°.
</li>
</ol>
<p>So: if at 1.19° average warming, we’re seeing local
records broken by 5°, by what amount will we see them broken at
3.2° average? This isn’t going to be a simple linear curve;
it seems to me that it must be at least to some degree
exponential, because there are clearly accelerating effects and
feedback loops in there.</p>
<p>But let’s assume that it’s simply linear. Then we would be
looking at current local records being exceeded by fifteen
degrees, more or less anywhere in tropical or temperate zones.
Indeed, given what we saw in Siberia in 2020, we could easily see
‘everyone dies’ events happening as far north as the Arctic
Circle. Obviously, they will be more common in the tropics. But
no currently populous place on Earth will be immune.</p>
<p>So, just sit for a moment, and imagine. It’s 2035. It’s June.
You’ve seen ‘everyone dies’ events, covering thousands of square
kilometres, happening in other parts of the world already. Now
the weather forecast tells you that there’s a 30% probability of
an ‘everyone dies’ event in the area where you live in the next
ten days.</p>
<p>What do you do?</p>
<p>That weather forecast is going to trigger everyone who can
move, to move. It will cause gridlock on every means of
transport. It will cause mass civil unrest. A fortnight later
we’ll see news reports of ‘rescue’ workers – probably troops –
going into the places people have gathered in their last
desperate attempts to survive, have died in heaps. Those places
may be subway stations, or underground vaults; they may be public
buildings where there had been some hope the air conditioning
system would not fail.</p>
<p>And each such event will leave a dead zone behind it to which
– although we’ll know that these events will happen more or less
randomly, like lightning strikes – few people will want to
return.</p>
<p>Let’s be clear about this. 3.2° of warming isn’t
‘survivable’. 2.7° of warming isn’t survivable. We’re on the
very edge of seeing ‘everyone dies’ events, covering areas the
size of small European countries, now, at 1.19°. We cannot afford
any more warming.</p>
<p>Yet already we’re hitting cascade effects. As the Arctic
warms, so methane frozen in permafrost or beneath the sea thaws
and is released into the atmosphere, ratcheting up warming. As
ice melts, new, darker sea and land surfaces are exposed,
ratcheting up warming. As ocean circulation systems are
disrupted, their moderating effects break down, ratcheting up
warming. Even if we all stop burning fossil fuels today, the
temperature will still rise to about 1.6° Celsius above
pre-industrial levels.</p>
<p>We are already in the disaster zone. Every barrel of oil we
pump makes it worse. We have to just stop.</p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-41515859810907451362021-11-01T12:32:00.001+00:002021-11-01T12:32:39.676+00:00Owning Scotland's Land<p class="md-end-block md-p"><span class="md-plain md-expand"></span></p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJvuX7AaLo7zpNs29VZpAUhPQkhBo29D00iwut1HZgfSXD-3MYbmgleGh7nRBhfmWFGMMB5awndrDk5du3yO-97ofHGjQwOHlPnfgO6je81RjQ9-XE1W68J7XGXIYdKOjCc8fbyTZOiNo/s1600/P5314076.JPG" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJvuX7AaLo7zpNs29VZpAUhPQkhBo29D00iwut1HZgfSXD-3MYbmgleGh7nRBhfmWFGMMB5awndrDk5du3yO-97ofHGjQwOHlPnfgO6je81RjQ9-XE1W68J7XGXIYdKOjCc8fbyTZOiNo/s320/P5314076.JPG" width="240" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Scotland's land. </td></tr><tr><td class="tr-caption" style="text-align: center;">OK, yes, it is my croft.</td></tr></tbody></table><span class="md-plain md-expand">The white saviours, </span><span class="md-meta-i-c md-link"><a href="https://twitter.com/Rebirding1/status/1454106520027811843" spellcheck="false"><span class="md-plain">led by Benedict Macdonald</span></a></span><span class="md-plain">, are again taking up the white man's burden to save Scotland's 'Wild Land' from the wild Scots. His </span><span class="md-meta-i-c md-link"><a href="https://twitter.com/Rebirding1/status/1454106559945052171" spellcheck="false"><span class="md-plain">business model</span></a></span><span class="md-plain"> is essentially to rent-seek off subsidies provided by the Scottish government intended to support rural communities and rural development, and divert the money, instead, to his friends in the City of London. Yes, this is just the latest cover of a </span><span class="md-meta-i-c md-link"><a href="https://en.wikipedia.org/wiki/Leverburgh" spellcheck="false"><span class="md-plain">very old tune</span></a></span><span class="md-plain">, but it's long past time we said 'enough'.</span><p></p><h2 class="md-end-block md-heading"><span class="md-plain">The Right Solution</span></h2><p class="md-end-block md-p"><span class="md-plain">It remains my view that the right solution to Scotland's land problem is to apply a single, universal, </span><span class="md-meta-i-c md-link"><a href="https://blog.journeyman.cc/2014/12/me-and-you-and-duke-of-buccleuch.html" spellcheck="false"><span class="md-plain">highly progressive land tax</span></a></span><span class="md-plain"> to every square metre of Scotland, with the proceeds going to local government at a layer far closer to our current community councils than to our present regional councils. This taxation should be so progressive that it would essentially bankrupt all large estates immediately, causing them to surrender the vast majority of their land to those same councils, which would hold it as common.</span></p><p class="md-end-block md-p"><span class="md-plain">These councils would be empowered to let parts of their common land to individuals on a </span><span class="md-meta-i-c md-link"><a href="https://en.wikipedia.org/wiki/Liferent" spellcheck="false"><span class="md-plain">non-heritable liferent basis</span></a></span><span class="md-plain">, and to let parts to corporate entities on a maximum term of fifty years, but they would not be empowered to sell common land. At all. Ever.</span></p><p class="md-end-block md-p"><span class="md-plain">However, for this solution to be implemented, we'd need a bold, far-sighted and progressive Scottish government, and there is at present no prospect of our ever having one. So we need to look for other solutions.</span></p><h2 class="md-end-block md-heading"><span class="md-plain">The Co-operative solution</span></h2><p class="md-end-block md-p"><span class="md-plain">So, let us suppose we set up a co-operative fund, called for the remainder of this document 'The Co-op Land Fund'. This fund would sell shareholdings to members of the public, who could put in any amount (over a set minimum of perhaps £100); but each member would get only one vote, irrespective of the amount of money they had put in.</span></p><p class="md-end-block md-p"><span class="md-plain md-expand">This fund would buy parcels of land, normally in blocks of over 100 hectares, and would lease those parcels of land on long leases to further co-operatives ('management co-ops') which would manage and/or occupy that land (ideally, both).</span></p><p class="md-end-block md-p"><span class="md-plain">There are two potential models for this:</span></p><ol class="ol-list"><li class="md-list-item"><p class="md-end-block md-p"><span class="md-plain">The Co-op Land Fund could speculatively buy a parcel of land and invite proposals from people interested in forming management co-ops to manage/occupy it;</span></p></li><li class="md-list-item"><p class="md-end-block md-p"><span class="md-plain">A nascent management co-op could approach the Co-op Land Fund and say 'there is this particular parcel of land which is now on the market, which we would like to manage/occupy, will you buy it and lease it to us.'</span></p></li></ol><p class="md-end-block md-p"><span class="md-plain">Obviously, the Co-op Land Fund could, and I hope would, operate both these models.</span></p><p class="md-end-block md-p"><span class="md-plain">The idea here is that the management co-ops would either represent existing communities of place - a village would set up its own co-op to bid for land in its locality - or intentional communities which had the intention of becoming communities of place, by co-residing on the parcel of land which they leased.</span></p><p class="md-end-block md-p"><span class="md-plain">Ideally, the management co-ops would hold the land more or less in perpetuity. They would pay a rental to the Co-op Land Fund, which could provide, in addition to finance for land, also finance for buildings and capital plant, and could also provide land management and ecological advice services.</span></p><p class="md-end-block md-p"><span class="md-plain">Management co-ops should be essentially local, holding one parcel of land or at most a few parcels of land within easy cycling distance of one another. Everyone living on, or working on, the land held by a management co-op should be entitled to membership of that co-op.</span></p><p class="md-end-block md-p"><span class="md-plain">In short, I view these management co-ops as being essentially something like <a href="https://blog.journeyman.cc/2018/10/the-standingstone-model.html">Standingstone</a>. <br /></span></p><p class="md-end-block md-p"><span class="md-plain">The Co-op Land Fund should set broad guidance for activities and developments which should be encouraged, should be discouraged, and should be disallowed, on these parcels of land; this guidance should generally be designed:</span></p><ol class="ol-list" style="text-align: left;"><li class="md-list-item"><p class="md-end-block md-p"><span class="md-plain">To maintain the land in good long-term ecological health;</span></p></li><li class="md-list-item"><p class="md-end-block md-p"><span class="md-plain">As part of that, to sequester carbon;</span></p></li><li class="md-list-item"><p class="md-end-block md-p"><span class="md-plain">To produce strategic goods including food, natural fibres, timber and electrical power;</span></p></li><li class="md-list-item md-focus-container"><p class="md-end-block md-p md-focus"><span class="md-plain md-expand">To foster community and repopulation.</span></p><p class="md-end-block md-p md-focus"><span class="md-plain md-expand"> <br /></span></p></li></ol>
Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-3340367589021209872021-08-19T13:17:00.002+01:002021-08-19T13:17:56.456+01:00Where's the steel?<p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw18VByP1HRxDaJnYa5FRvXGGfMWSftbSm6tDtXBcVlfjw9nnWjuBnwhP1r7KpGjYXF2n79cpM6r8On4fHFrWrXDao2kfmq4zizUY3A5Zv3MjmYx_0nQfgeGnCcWbEBn5ZuG4acHlFCSk/s1920/mill.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1282" data-original-width="1920" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw18VByP1HRxDaJnYa5FRvXGGfMWSftbSm6tDtXBcVlfjw9nnWjuBnwhP1r7KpGjYXF2n79cpM6r8On4fHFrWrXDao2kfmq4zizUY3A5Zv3MjmYx_0nQfgeGnCcWbEBn5ZuG4acHlFCSk/s320/mill.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A blast furnace in operation<br /></td></tr></tbody></table>From the discovery of iron working techniques, about 3,200 years ago, up until the widespread exploitation of fossil fuels, about 250 years ago, iron and steel were rare, precious materials. The average person, across the whole world, almost certainly had less than 500 grammes of it. A knife, probably; some tool of their trade, possibly. Even members of the elite -- warriors who fought in full armour, for example -- probably owned no more than 30kg of iron and steel.<br /><br />The use of fossil fuel changed all that, of course. There's <a href="https://www.racfoundation.org/motoring-faqs/mobility#a1">about one car for every two people in the UK</a>, and the average car now weighs <a href="https://mechanicbase.com/cars/car-weight/">1857Kg</a>, so that's almost a ton per person in cars alone, not to mention all the steel we now have in buildings and infrastructure. But it's fossil fuels that have made that possible. In future, we can't use them. So how much steel will we have?<br /><br />Steel costs about <a href="https://learn.openenergymonitor.org/sustainable-energy/energy/industry-steel">4MWh/ton</a> to make. Current production of steel is about <a href="https://en.wikipedia.org/wiki/List_of_countries_by_steel_production">1.8 billion tonnes</a> per annum.That's about 7.2 billion MWh, or 7.2 million GWh, or 7,200 terawatt hours per annum -- which is 23% of total world industrial energy consumption.<br /><br />Total world electricity production is around <a href="https://yearbook.enerdata.net/electricity/world-electricity-production-statistics.html">27,000 terawatt hours</a> So making all our steel electrically would take one third of our total electricity generation capacity. But <a href="https://yearbook.enerdata.net/renewables/renewable-in-electricity-production-share.html">only 28%</a>, or 7560 TWh, of this is renewable. In other words, if we converted all our current steel making capacity ro electric arc, it would use virtually all of the world's production of renewable energy. <br /><br />About <a href="https://www.irena.org/newsroom/pressreleases/2021/Apr/World-Adds-Record-New-Renewable-Energy-Capacity-in-2020">260GW</a> of new renewable generating capacity is being added annually, but that figure is a bit misleading, since renewable plant cannot operate at full capacity all the time. Solar panels only operate during hours of daylight, and at full capacity only when the sky is cloudless and the sun significantly above the horizon. Wind turbines operate at full capacity only in a fairly narrow band of wind speeds. So 260GW of capacity does not translate into 2 277 TWh of electricity actually produced per year, but much less. How much less? I don't know, but about a third, or 0.7 TWh, seems a reasonable guess.<br /><br />However, only a proportion of steel is made using electric arc furnaces; the rest is made using fossil fuels, largely coal. The exact proportion is hard to establish, since especially in the West new electric arc capacity is being built quickly. But the best figure I can get is <a href="https://www.recyclingtoday.com/article/the-growth-of-eaf-steelmaking/">around 29%</a>. That means, of course, that of that 29% of steel that is made electrically, only 28% – or 8% of total steel making – is carbon neutral.<br /><br />It also means that, disregarding the proportion of existing electric arc furnaces which are using fossil-fuel generated electricity, it would take seven years of our total new renewable energy capacity to replace existing fossil fuel steel making capacity with renewable. And that's before a single joule of electricity becomes available to power any of the new electric cars, electric trucks, electric trains, etc, that we want to build with that steel.<br /><br />Except we couldn't build the new capacity that quickly, because it takes (a lot of) steel to build both new steelmaking plant and new renewable electricity generating capacity. We are going to have to shut down the approximately 70% of steelmaking capacity that is fossil fuel powered, and we're going to have to shut it down soon. And in a world which is critically short of a strategic material as critical as steel, making the right choices about how to allocate that steel is going to be hard and contentious.</p><p>So no. We're not all going to have electric cars. We're going to have a lot less steel<br /><br /></p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com1tag:blogger.com,1999:blog-5789047921614008864.post-42724413394335193022021-04-21T17:57:00.008+01:002021-04-21T18:04:03.637+01:00Death, Glory, and computer games<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8RDhURKXyWFJJlE8XJMLmTimWLOEfTL0TztP-X-aANtPwSf2ZQoWsG1HgaclEp3BMDCXxT1MaiSz-Xx-vS-X4mLkmbZsTkwEURuOcz1g1v7HOrplgtTVdlojcgsis7X7D8rF-j53GWjg/s1920/photomode_21042021_083004.png" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8RDhURKXyWFJJlE8XJMLmTimWLOEfTL0TztP-X-aANtPwSf2ZQoWsG1HgaclEp3BMDCXxT1MaiSz-Xx-vS-X4mLkmbZsTkwEURuOcz1g1v7HOrplgtTVdlojcgsis7X7D8rF-j53GWjg/s320/photomode_21042021_083004.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">the rookie, quick<br /></td></tr></tbody></table><br />Let's suppose for a moment that you're a member -- the most junior member, the rookie -- of a squad. Your squad may be police, it may be corporate security, it may be a criminal gang; this doesn't matter. What does matter is that it exists in an environment in which all these things exist, and compete; in which they compete using lethal force.<br /><br />As the rookie, you've been issued with a weapon. It isn't a very good weapon; it's old, worn out, not particularly powerful; and you're not yet very skilled in its use. But this doesn't matter; there are half a dozen other folk in your squad who are all more experienced and better armed than you. Your leader is a very experienced -- famous, perhaps notorious -- combat veteran. You feel safe, and your squad is moderately successful.<br /><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_FP-9UyHgAhVIhcW_sHp_M3ySfaj0jc3QYsiAuEFTdeb3QZGwuz1Zbp4UEWDZWOrwspUvVbL7rkfGiWtjfIMu_AmjEGP95Aj3wV7_cezWdFxd0uYOS5b6NnnNABH8Lk1Z-99Z53kabDs/s1920/photomode_21042021_083407.png" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_FP-9UyHgAhVIhcW_sHp_M3ySfaj0jc3QYsiAuEFTdeb3QZGwuz1Zbp4UEWDZWOrwspUvVbL7rkfGiWtjfIMu_AmjEGP95Aj3wV7_cezWdFxd0uYOS5b6NnnNABH8Lk1Z-99Z53kabDs/s320/photomode_21042021_083407.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">the killer in the dark<br /></td></tr></tbody></table><br />Then, one dark night, within the space of about five minutes, your comrades are picked off one by one by an unknown assailant using a sniper rifle from cover. Most of them never see him; most of them don't get a single shot off on target.<br /><br />And now they're all -- all your experienced, well armed, competent comrades -- dead. Every one of them, dead. There's only you left. There's nothing in particular to defend. No harmless civilians depending on your protection, no pass that must not be sold, not even any very significant amount of booty.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT8Uy8vyVDHaVMiwSNBn-nuA5gkZxAhm0DmJzWRoco-7pnC6LXQZClbc-tpOd7DQSzmErqYjYmp57RLnqyugH1-veckoUpIoNZKFCmW19T5wz0Db0NY1ngIgPdjoM_uhtfKVZYFyOat2c/s1920/photomode_21042021_084040.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="1920" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT8Uy8vyVDHaVMiwSNBn-nuA5gkZxAhm0DmJzWRoco-7pnC6LXQZClbc-tpOd7DQSzmErqYjYmp57RLnqyugH1-veckoUpIoNZKFCmW19T5wz0Db0NY1ngIgPdjoM_uhtfKVZYFyOat2c/w400-h225/photomode_21042021_084040.png" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Carnage</td></tr></tbody></table><br />In those circumstances, what do you, the last survivor, the poorly armed rookie, do?<br /><br />Do you hide, in the dark, in an environment that is full of hiding places? Do you flee into the complex maze of streets and alleys around you, or in one of the fast getaway cars that your squad so often has parked around the scenes of such encounters? Do you stay alive at all costs, to inform your superiors, the rest of your faction, of what has happened, of this new threat they face? Do you throw down your weapon, put your hands up, and beg for mercy?<br /><br />Or do you fight, to certain death, against a warrior you already know is far more deadly -- and far better armed -- than you are?<br /><br />Seriously?<br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5DE0qLuwgH0PaCrbOFwl0dmeakVqbuUE2h55iTcvX_RF1WQ4O9gnwRkkgzJt36V8UM6Jas4AJvBgBXRr1TbUutNWVyOyON5iGo7EqqdgszigVgpdix5e_MCn8AjlbXuz6qgmlOUUmQWY/s1920/photomode_21042021_084312.png" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5DE0qLuwgH0PaCrbOFwl0dmeakVqbuUE2h55iTcvX_RF1WQ4O9gnwRkkgzJt36V8UM6Jas4AJvBgBXRr1TbUutNWVyOyON5iGo7EqqdgszigVgpdix5e_MCn8AjlbXuz6qgmlOUUmQWY/s320/photomode_21042021_084312.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">the rookie, dead<br /></td></tr></tbody></table><br />And yet, this is what (almost) all such characters in (almost) all video games do.<br /><br />The game I playing at present is Cyberpunk, so the game I am ranting about at present is Cyberpunk. But that's unfair, because this behaviour is ubiquitous. The very rare exceptions (and as far as I'm aware, outside the 'Beat on the Brat' boxing competition, there are none in Cyberpunk) are specifically scripted individual events. The default behaviour for all opponent NPCs is to fight to the death, to fight without quarter given, to the very last man or, all too often, woman.<br /><br />In Cyberpunk, enemies who are hunting you (yes, even that poor unfortunate last rookie) will call out "come out with your hands in the air," "we only want to talk to you," or "I promise not to kill you."<br /><br />These apparent offers of quarter are in fact insincere. You are given no way to respond to them directly; but if you do put your weapons down and just stand there, you will be killed. Equally, you are given no way to call on your victims to surrender, or to offer them quarter.<br /><br />True, you, the player, can walk away from a fight, and (usually) the enemy won't pursue you very far. But, while you remain in the area in which the fight broke out, any leftover survivors will continue, suicidally, to attack.<br /><br />And surely -- surely -- it can't just be for me that this universal, this irrational, this suicidal refusal either to surrender or to flee wrenches at the willing suspension of disbelief?<br /><h2>A digression: 'non-lethal' weapons</h2>Of course, also, in Cyberpunk, you can use 'non lethal' weapons. 'Non lethal' weapons include most or all blunt melee weapons -- clubs, batons, et cetera -- but also include firearms to which you have added a modifier called 'Pax' which somehow, magically, renders the firearms 'non lethal'. <br /><br />You can probably guess from all the scare-quotes that I consider this a moral cop-out, and it is. Anyone with experience in the real world knows that blows with a blunt instrument sufficiently forceful to knock the victim out for a substantial time have a substantial chance of causing permanent brain injury or death. Anyone with experience in the real world knows that rubber bullets or plastic baton rounds fired from firearms frequently cause permanent injury or death.<br /><br />A character sufficiently injured with a 'non-lethal' weapon falls immediately to the ground and never, no matter how long you wait, recovers in any way. Characters felled in this way with 'non-lethal' weapons never reappear in the game.<br /><br />There are a series of missions given you by a fixer called Regina Jones in which she urges you to use non-lethal weapons, and says that a medical team will come to recover the victim for treatment; but, no matter how long you wait, that medical team is never seen to arrive.<br /><br />In practice I think 'non-lethal' weapons are just a flimsy screen behind which CD Projekt can claim "well, you don't have to kill hundreds of people, you can use 'non lethal' weapons." But, in fact, to complete a playthrough of Cyberpunk -- even just the 'main plot' quests -- you do have to permanently incapacitate many tens, probably hundreds of characters. In practice, 'non lethal' weapons are a difference that makes no difference.<br /><h2>The reason for 'No Surrender'</h2>So, why? Why does the rookie with the most basic, most useless weapon, sole survivor of his or her squad, still charge into battle against an opponent who has clearly demonstrated martial superiority? Why does the rookie continue to attack even when wounded?<br /><br />It's partly down to something I've been arguing for ten years now. Because every interaction in modern video games has to be voice acted, characters have very limited vocal repertoire. So there isn't sufficient repertoire for negotiations of surrender (either way). But to an extent the repeated calls of "come out with your hands in the air" give the lie even to this suggestion. There is not just one voice acted instance of that call, there are several. True, they do become repetitive; true, they are not individually voice acted for each opponent.<br /><br />But the very fact that they are not indicates that it would be possible for the developers to record a few variants of "I give up," "I've had enough," "I surrender." There's an animation which civilian non-player characters caught in the middle of a firefight; the crouch in the open with their hands above their heads. A defeated opponent could put his or her weapon down, call out "I surrender," and do the same.<br /><br />An injured opponent could writhe on the ground, crying out in pain or whimpering, and beg for medical help. An uninjured opponent could just run away, either abandoning their weapon or taking it with them.<br /><br />In any of these cases the player would have moral choices. They could succour the wounded. They could handcuff wanted criminals and tag them for the police to collect. They could let fugitives go. Or, they could leave the wounded in agony, could demand bribes from wanted criminals for not calling the police. Or, they could just kill the defeated. In any of these options, the player could either collect the victims' weapons (and, optionally, other valuables) for resale, or not do so.<br /><br />And, of course, if the player leaves the victim free with their weapon, then there should be at least some chance that the victim will then break their implied parole and restart the fight.<br /><br />But it's a role playing game. The player should have scope to play their role, to make moral choices. Some players will choose to be merciful; some, even, quixotic. Those choices should be there.<br /><br />Not providing these options -- having every non-player opponent continue to fight, obstinately, mechanically, robotically, to the bitter end, to the death of every last member of the squad, without ever considering or trying or begging for other outcomes -- is lazy. It's not good game design. It rends at the willing suspension of disbelief. It sucks.<br />Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-87795308258212355712021-01-01T22:48:00.009+00:002021-01-01T23:17:48.934+00:00T-Bug, memory management, and Cyberpunk <div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5rs_QOq0D4uQ-hWDhSGhCcw-ZLx73i-KdakzmkBHErF96ggSRXMPy4tvzhO2d_oNuIrzQnvC0cRuWdoPQ-ix2Dbzw-xrjArZFSXT8FMdMVLwpgOBfagzsJ1D6VZcA41jgpJWy6djVG0Q/s740/T-pose-glitch-cyberpunk.webp" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="370" data-original-width="740" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5rs_QOq0D4uQ-hWDhSGhCcw-ZLx73i-KdakzmkBHErF96ggSRXMPy4tvzhO2d_oNuIrzQnvC0cRuWdoPQ-ix2Dbzw-xrjArZFSXT8FMdMVLwpgOBfagzsJ1D6VZcA41jgpJWy6djVG0Q/s320/T-pose-glitch-cyberpunk.webp" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A Cyberpunk 2077 character in T pose<br /></td></tr></tbody></table>I have no inside information about the development of Cyberpunk 2077, but I am a software engineer with 35 years of experience, and I have written mods for both CD Projekt and Bioware games.</div><div><br /></div><div>Cyberpunk is essentially two products: RED Engine, and Cyberpunk itself, which runs on top of Red Engine. The engine is very much analogous to a JVM: it abstracts the platform for the game code that runs on top of it. <br /></div><div><div><br /></div><div>The Cyberpunk layer itself, and
the graphical and audio assets, are probably identical between PC, and
old and new versions of the XBox and PlayStation platforms. It is the
engine that differs between the platforms. The Cyberpunk layer seems to me to be in a good state of completion — there are bugs, but they're relatively minor. </div><div><br /></div></div><div>The version of RED Engine used for Cyberpunk is surprisingly little changed from the version used for Witcher 3, CD Projekt's previous major game. The main obvious change is improved background loading of assets. On a PC towards the upper end of recommended spec, this too is reasonably solid: I have had one crash, one significant audio glitch, and two or three minor visual glitches in twenty hours of game play.</div><div><br /></div><div>But it's clearly in the engine that the problems lie, and is, I think, where the problems have always been. <br /></div><br /><div>The game was launched simultaneously on PC, and on both 'last gen' and 'next gen' XBox and PlayStation consoles, although on both XBox and PlayStation, the code at release used the 'last gen' APIs, and next gen consoles run this in their respective backwards compatibility modes. A further release using next gen APIs is promised, but is not yet available. </div><div><br /></div><div>However, the game runs reasonably well on modern gaming PCs and on next generation consoles. But it runs extremely poorly on last generation consoles, to the extent of causing a great deal of negative comment. So why? What's going wrong? </div><div><br /></div><div>I emphasise again: I don't know, I have no inside information. This essay is reasonably well informed speculation, and nothing more. However, this is my opinion. </div><div><br /></div><div>What sets the older XBox and PlayStation platforms apart is that they have much more limited i/o speed, and much more limited main memory, than the newer generation (or than current PCs). They also have slower processors and more limited graphics subsystems.</div><div><br /></div><div>Night City — the setting for Cyberpunk — is an extraordinarily ambitious and complex visual environment. To render a single static scene, hundreds of models and textures must be loaded from backing store. </div><div><br /></div><div>But the scenes are not static. On the contrary, the user can look around freely at all times, and can move quickly through the environment. At the same time, dozens on non-player characters, vehicles, aircraft and other mobile game objects are also moving (some rapidly) through the scene.</div><div><br /></div><div>From a development and testing point of view, it's easy to test that a given asset can be loaded into memory and rendered in a given time. It's even relatively easy to test whether a given set of assets can be loaded in a given time.</div><div><br /></div><div>But what I have particularly seen in the videos of the game running on old-generation hardware iis</div><ol><li>Late loading of higher resolution textures; and</li><li>Assets (particularly non-player characters) being rendered in default poses.</li></ol><div>I also hear that there are a lot of crashes, which I'll come back to.</div><div><br /></div><div>The two issues I've described above both seem down to the program being i/o bound — it can't get data from disk to screen fast enough, because of limitations in bandwidth. That's hard physics: yes, you can work to make the graphics selection and loading code as efficient as possible, but if you need all those bits on the screen to render a scene and the system doesn't have the raw bandwidth, it isn't going to happen.</div><div><br /></div><div>The problem is made worse by limited main memory. Where there is main memory to spare, it can be used to cache near-screen assets, so that if, for example, the player turns their head, the required assets are already in main memory. But if main memory is exhausted with all the assets currently on screen, then when the player turns their head, unwanted assets must be culled and fresh assets loaded, immediately.</div><div><br /></div><div>This raises the issue of crashing. These game assets are big. Culling and reloading will rapidly fragment the heap. But pauses for garbage collection are really undesirable in a fast moving real time environment. Near real time GC of rapidly fragmenting heaps is hard.</div><div><br /></div><div>Worse is, I suspect, what happens when/if the assets required to render a scene in themselves exhaust main memory. I'm pretty sure this happens, because it's noticeable that scenes rendered on old generation consoles contain fewer non-player characters than similar scenes rendered on PC. There's clearly code that decides whether to cull non plot critical non-player characters when memory load is high.</div><div><br /></div><div>But thrashing is likely to occur — or at least, there will be need for sophisticated code to prevent thrashing — when assets required to render a scene cannot be accommodated without removing other assets also required to render the exact same scene.</div><div><br /></div><div>This sort of code — especially when it is being developed under pressure — is very susceptible to the sort of bugs which cause crashes.</div><div><br /></div><div>So, from a quality point of view, where does that leave us? All these aspects of engine performance are suitable for unit tests, integration tests and characterisation tests. Characterisation tests – does this code run exactly the same as that code? – may be particularly relevant when testing ports to multiple platforms.<br /></div><div> </div><div>If there is not a comprehensive test suite and a continuous integration platform then someone is very derelict in their duty, and I do not believe that. CD Projekt strike me, in both artistic and technical proficiency, as pretty thorough.<br /></div><div><br /></div><div>Furthermore, we've seen very impressive renderings of scenery and action for two years now, so the upper bound to the size and numbers of assets required for scenes has been known for at least that time. So the performance and stability problems on old generation consoles must have been known.</div><div><br /></div><div>That implies to me that management ought to have said, at least a year ago, "we will launch only on PC and next-gen platforms, and a degraded version for old generation consoles may follow later but we don't know when."</div><div><br /></div><div>Obviously, investors and owners of older consoles would have been disappointed, but it would have avoided a significant hit to reputation.</div><div> </div><div><i>This essay started as a comment on a <a href="https://youtu.be/E-jGEtqB4wU">YouTube video</a>, which, if you're interested, you should watch. </i></div><div><i></i></div><div><i></i></div><div><i></i></div><div><i></i></div><div><i></i></div><div><i><br /></i> </div>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-27308799665388617312020-12-17T10:35:00.003+00:002020-12-17T10:35:42.533+00:00Cyberpunk 2077, considered as a Witcher III DLC<p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPNWZ5PL5KS1jZAxzYkplgA6zBrvgUDqOYy3q2P7Mp1-AOzUmzYMqsC1rD2GBdX1KX9hLBxhoAP_wVsLcg6gsYKkICRKU78wU-07C5jbuZ02lRyHJPkYkmPiX47_xCG1Vm4dIe89thx_Y/s1920/photomode_16122020_173816.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPNWZ5PL5KS1jZAxzYkplgA6zBrvgUDqOYy3q2P7Mp1-AOzUmzYMqsC1rD2GBdX1KX9hLBxhoAP_wVsLcg6gsYKkICRKU78wU-07C5jbuZ02lRyHJPkYkmPiX47_xCG1Vm4dIe89thx_Y/s320/photomode_16122020_173816.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Johnny, Panam, Vixen<br /></td></tr></tbody></table>This is the first essay I've written on Cyberpunk 2077; I doubt it will be the last – indeed, I hope it won't, because if it is that will mean the game has failed for me. I'm currently fifteen hours in, and, at this moment, I have to say that it's on it's way towards failing. And the question you may well ask, is 'why?'<br /><br />Well, essentially, because, rather than being a wholly new game, this is, essentially, an add-on pack or downloadable content for The Witcher III. It uses the same engine, but far more than that, it uses the same mechanics and the same structure. And the mechanics which were excellently tuned for the wide open spaces of Velen or the relatively small urban environments of Oxenfurt anf Novigrad do not work well in a sprawling metropolis like Night City. <br /></p><h2 style="text-align: left;">Traversing the space<br /></h2><p>You can, of course, walk everywhere. It's possible. This is made more bearable by the fact that there really are a lot of interesting people – non-player-characters – on the streets, and that, although the same models do get reused, there are sufficient of them that it rarely becomes too obvious. And the architecture truly is epic; it's a great city for sight-seeing. But the distances are very considerable.<br /><br />In the Witcher III there was one 'point of interest' every two minutes or so of walking time. That lead to some absurdities, of course, such as inhabited villages existing within a couple of hundred metres of the lair of a monster which is a challenging fight for an experienced witcher. In Night City, too, civilian life carries on within very short distances of acts of gross violence, but the points of interest in Night City are very much sparser than in Velen.<br /><br />In any case the scenery of the Witcher III is just so gobsmackingly beautiful that it's a pleasure for me to be in, even if doing nothing. Riding slowly right across Velen from the Nilfgardian camp in the south east to the Pontar delta in the north west, on a quiet evening, for no particulat purpose, is a joy in itself.<br /><br />I'm sure there will be some people for whom the cityscape of Night City will have an equal attraction; even I, a rural person, do enjoy it. But it's a much more difficult landscape to navigate, because there are few long views, and many routes which look obvious on the map are in fact blocked by structures.<br /><br />But, given the sparsity of points of interest and the overall size of the map, if you walk, you're going to do an awful lot of just walking.<br /><br />Of course, you're not expected to just walk. You're expected to drive. But there are no cars in the Witcher III; the mechanic simply isn't there. Consequently, to implement cars in Cyberpunk, CD Projekt took the boat code from the Witcher III and repurposed it. Cars in Cyberpunk use exactly the same controls as boats in Witcher III, and behave in exactly the same way, at least if you're using a keyboard; with just one important difference.<br /><br />The helm on the Witcher III's boats has three positions: hard over to port, dead centre, and hard over to starboard. Similarly, the steering on Cyberpunk cars has three positions: full lock left, straight ahead, and full lock right. The Witcher III's boats have two speeds, slow for navigating close to hazards, and somewhat faster when covering long distances. And this, though not a good model of sailing boat physics, works well enough in marine environments which have few obstacles and no pedestrians.<br /><br />Cyberpunk's cars have three settings for speed, too: full acceleration, gently deceleration, full brakes. </p><p>The accelerator, the brake, and the steering on cars are analogue controls. They're analogue controls for a very good reason. Cars operate in complex environments with many obstacles: pedestrians, kerbs, other cars, barriers and so on.<br /><br />Computerised control systems can do very precise navigation of quadcopters which have motors which can only be on or off, by using what is called pulse-width modulation; that is, essentially, they spam the on-off switch of the motor very rapidly so that it's on for just sufficient a proportion of the time to output the power that would be output by an appropriately set analogue conteol. Similarly, it is at least theoretically possible that someone with enough patience, dedication, manual dexterity and tolerance of repetitive strain injury could learn to rattle the W, A, S and D keys sufficiently rapidly and sufficiently precisely to emulate analogue control of a Cyberpunk car; but if you're a mere mortal, forget it. The cars are undrivable.<br /><br />Of course it's possible that a game controller will do this better; most game controllers have at least two analogue sticks, and I'd hope that this is sufficiently well handled that with a controller you do actually get analogue control of speed and steering. If that is so, the cars will be drivable, and the whole game will be a different experience. But if that is so, CD Projekt should really have said "this game is not playable with keyboard and mouse, you must use a controller".<br /><br />Here in the real world, in 2020, Tesla's cars can follow a lane, and can avoid hitting obstacles in front of them, without any input from the driver. In Witcher III, horses, like Teslas, won't ram themselves into solid obstacles or leap over cliffs, although they will mow down pedestrians without a second thought. You may reasonably ask why CD Projekt based Cyberpunk cars on Witcher III boats rather than on Witcher III horses. I don't know; it would have seemed an obviously better solution, but for some reason they didn't.<br /><br />While we're on this, just as Cyberpunk's cars are essentially Witcher III's boats, so the rapid travel stations are essentiallyjust Witcher III signposts. I believe that Night City's monorail system – NCART – was in fact pretty much fully implemented – we saw it in action in one of the early trailers – and it would have made a much less immersion-breaking way to get around; but it's been pulled from the final game. In my opinion that's a shame.</p><p>I should confess that I haven't actually used rapid travel, just as I don't in The Witcher III. It's immersion-breaking, and I just prefer not to.<br /></p><h2 style="text-align: left;">Story and Characters<br /></h2><p>Game mechanics are not what a CD Projekt game is all about; it is, or should be, all about character and story. I only raise mechanics at such length here because they are so intrusive that they make getting to the story unreasonably difficult.<br /><br />But even in character and story, my first fifteen hours have been underwhelming. Interesting, likeable characters have been introduced – and then killed off. Not because some failure of mine got them killed, but because their death is required by the game. Of your three companions in the critical early-plot quest 'The Heist', one inevitably dies; one, in my play-through, has disappeared and I do not know whether they will have any further part in the game; and one (also, it seems, inevitably) double-crossed and attempted to murder me – so it's unlikely we're going to be friends again.<br /><br />The client on whose behalf the four of us were carrying out this quest has also disappeared, and although I suspect this will probably not prove permanent, she isn't around just now.<br /><br />Great, startling, unexpected events have unfolded – have unfolded literally right in front of my eyes – but it does not seem to me that any actions or choices of mine had any impact on those events. At this stage, the main plot feels like a juggernaut, carving an unalterable pre-determined course through the world, unresponsive to anything I do.<br /><br />So I'm left with, as characters I'm interested in, Victor Vector, a cheerful, friendly and well intentioned ripper doc; Misty, a slightly mystic-meg-new-age-hippy-fae tarot reading shopkeeper who is Vector's landlord; the obviously bright but equally obviously vulnerable and damaged Judy, and... yes, that's about it. And I don't – yet – know any of these characters well.<br /><br />Of course I've met Johnny Silverhand, and through his memories I've sort-of met Kerry Eurodyne; I've met Rogue, both in Johnny's memories and in my own explorations; I've met T-Bug, but I've no idea whether she plays any further part of the story (I'll be disappointed but not surprised if she doesn't); I've met Panam, who I know from trailers will become important; I've met Clare, the bartender from Afterlife; I've met Jackie's mother Mama Welles; I've met Meredith Stout...<br /><br />I've added a wee extra piece about Meredith Stout and the other romanceable characters at the end of this essay, since to say what I need to say about her involves spoilers.<br /></p><h2 style="text-align: left;">Combat and Tactics<br /></h2><p>One plays role-playing games to play a role. The role I'm playing is a girl I call Vixen. She's small and not strong, so, contrary to Night City's brash style, she usually dresses simply and inconspicuously; she uses persuasion where she can, and tech and stealth where that doesn't work. Where stealth fails, she uses a sword for (relative) quietness. She has a clear moral code, or at least one that seems clear to her.<br /><br />At least, that was the plan. In practice, it mostly hasn't worked. The tech skills so far have not felt engaging or especially useful – I've disabled a lot of security cameras, but mostly too late to be useful; and I've distracted a few enemies by hacking things in the environment. But the modal nature of scanning makes it artificial and not very free-flowing, and the decode minigame is just a nuisance.<br /><br />Stealth is also underwhelming. I've put a lot of my skill and perk points into stealth, and I work hard at staying low and keeping out of sight. But it rarely gets you where you need to get to, and usually you end up in a fire fight.<br /><br />In the early game, the Black Unicorn blade – which you get as a bonus if you bought both The Witcher III and Cyberpunk from CD Projekt's own online game store, GOG.com – is a really effective weapon, so that, in fact, you can take a sword to a gunfight and have a real chance of winning; however, with the first person view, sword play doesn't really work. You don't have good tactical awareness; when your oponent isn't in your relatively limited field of view, it's hard to know where, and how close, they are. Having said that, you can get quite a long way by just rushing around the fight scene in a random fashion slashing wildly all the time. This, with regular use of the health-boosting inhaler, is reasonably effective even when you're up against half a dozen goons with assault rifles. But this isn't role play. It feels wrong.<br /><br />While on this, I normally have Vixen wear full length jeans and a very high grade bullet proof vest. She's understated because she doesn't want to attract attention, because she wants to be underestimated by any attention she does attract. But I have aquired along the way a skimpy sequinned crop-top and a pair of vestigial shorts which actually have higher armour statistics than those. Again, it makes no sense; it perturbs the willing suspension of disbelief.<br /><br />The 'health inhaler' is, of course, your Witcher swallow potion. One of the benefits of the 700 or so years which have passed between the action of Witcher III and of Cyberpunk is that swallow no longer has cumulative toxicity, so you can use it frequently during a fight (provided you have enough of it, and I never ran out) to soak up ludicrous amounts of damage.<br /><br />Finally, there are bugs. There are not nearly as many bugs (at least on PC) as some commercial revieweers have suggested, but there are a few that are plot breaking; there is no solution other than going back to a previous save, and doing something entirely different. You can't abort what you were doing, go and do something else to gain more experience and skills, and come back later.<br /><br />I've seen one non-player character in a 'T' pose. Some of the tarot card murals that I'm supposed to see aren't visible to me, although the game checks them off to say I've seen them. On a couple of occasions, the audio of dialogue ran hugely behind the animation and subtitles. This is not bad for a just-released game; of course it isn't perfect.</p><h2 style="text-align: left;">Conclusion<br /></h2><p>In conclusion, bear in mind that I'm not really the target audience for this game; I'm not a great fan of cyberpunk as a genre, the present is easily a dark enough future for me. I don't like guns. I don't like killing people even if they 'deserve' it; I'd much prefer to settle conflict by negotiation. The poverty of non-player character repertoire in modern video games, as I've written ad nauseam, really disappoints me, because I really feel we now have the technology to do so much better.<br /><br />I bought into this game because I have faith in CD Projekt as story tellers. And I do think there is great story here – there's certainly the potential for it. But at this present moment, after fifteen hours of play, I'm not really getting enough story reward to compensate for all the awkward, clunky mechanics. I am not talking about bugs here –as I've acknowledged, there are bugs, but none I've seen is significant. The problem is not in bugs, but in intended features which just don't work well.<br /><br />Again, the main problem I'm talking about is the cars. It may be that, with a controller, the problem doesn't arise. I mean to find out. After all, there is plenty of video – not only in CD Projekt's trailers – of people driving around Night City reasonably smoothly. But it really wouldn't be rocket science for CD Projekt to 'Teslaise' the cars in a future update, so as to give them intelligent lane following and collision avoidance. If they did that, this would become a good game.<br /><br /><br /></p><h2 style="text-align: left;">Here be Spoilers: Romance in Night City<br /></h2><p>OK, spoiler time. If you don't want spoilers read no further.<br /><br />Right, you're sure you want to read on?<br /><br />A CD Projekt game would not be a CD Projekt game without sexual relationships. In the trailers CD Projekt strongly hinted at who the romanceable characters –– the love interests –– would be.<br /><br />Judy is definitely one, and she's the one I'm most interested to explore. But Meredith Stout, the hard as nails corporate agent, was clearly trailed as another. It turns out – how can I put this politely? – she's a slightly updated version of a Witcher I sex card. As relationships go, I've seen deeper and more meaningful puddles of vomit. That's five minutes of my life (because I swear it wasn't longer) that I shan't get back again.<br /><br />For the rest, my guesses (these are guesses, not knowledge) are that </p><ul style="text-align: left;"><li>Victor Vector is romancable if you're playing a straight woman, and possibly also if you're playing a gay or bi man;</li><li>Kerry Eurodyne is romanceable in all cases;</li><li>Panam is romanceable but I suspect only by straight men;</li><li>Clare, the bartender from Afterlife, may be romanceable.</li></ul><p style="text-align: left;">Other possibles are Misty the fae head-shop keeper, but I don't think so, and T-Bug, who would be really interesting but is I suspect no longer in the game. <br /></p><p style="text-align: left;">Obviously, Night City has a very large number of sex workers, but my guess is that none of them is romanceable in any more meaningful sense than Meredith Stout is. I don't, as yet, know for sure that any of the romance options have any depth to them, although dear God one would hope so. For completeness, Meredith definitely swings both ways.<br /><br />Johnny Silverhand is definitely not romanceable in the conventional sense since he only exists in your head; but I think we will (I haven't yet) at some point relive his memories of sex with Altiera Cunningham (who is also either dead or existing as a digital consciousness somewhere).<br /><br /></p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-1178348680322209422020-11-10T22:00:00.000+00:002020-11-10T22:00:37.661+00:00Virtual Cities<p><i></i></p><div class="separator" style="clear: both; text-align: center;"><i><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrcJ757aD9uKvVFyZRZdlqzd0l31hAPpNFmgRh6Vcvu6evn5HJuMbo1RMMSARIG3BlnkV5cQiPHZ2Dd9zDm2pE-7I0I6q4jyjbsVm_2rCKdrJltZXFflrL1fG74oLNzGOTLZln6Vkke4U/s2048/IMG_20201110_081609.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="2048" data-original-width="1610" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrcJ757aD9uKvVFyZRZdlqzd0l31hAPpNFmgRh6Vcvu6evn5HJuMbo1RMMSARIG3BlnkV5cQiPHZ2Dd9zDm2pE-7I0I6q4jyjbsVm_2rCKdrJltZXFflrL1fG74oLNzGOTLZln6Vkke4U/w315-h400/IMG_20201110_081609.jpg" width="315" /></a></i></div><i>A review of Dimopoulus, Konstantinos: <u>Virtual Cities</u>; <a href="https://unbound.com/books/virtual-cities/">Unbound, London, 2020</a>. ISBN 978-1-78352-848-6.</i><br /><br />The Pelennor Fields around Minas Tirith, as rendered in Peter Jackson's film of The Return of the King, are at best rough grazing; the land outside Cintra, in Netflix' The Witcher series, is little more than moorland. This cannot be right.<br /><br />Cities require large supplies of food, and consequently all pre-modern cities are built in areas of very high agricultural productivity. To support a city the size of Minas Tirith, the Pelennor must needs be not as productive as the Shire – because the Shire supports only its own peasantry – but substantially more productive. Of course, what this means in the modern period is that, as the cities expand, that very high quality agricultural land is built over and lost, but that is not what this essay is about.<br /><br />But a city requires more than a significant supply of food. A successful city also requires a strategic reason to be where it is.<br /><br />In the world I've been writing about for The Great Game, I have one city which completely breaks the rule of having an adequate agricultural hinterland, but there's a strategic reason for this. The city of Hans'hua controls the only possible water supply where the main trade route from the north coast of the continent to the south crosses a high desert plateau. Water is so valuable here that the city can, by taxing the supply of water to merchant caravans, afford to import substntially all its food.<br /><br />At the time period of the game, this city has been, although small, very rich (and consequently, has excellent defences); its wealth is threatened, however, because advances in ship technology have opened up a new sea route, bypassing Hans'hua, and its decline has begun.<br /><br />Another city, Tchahua, has grown from a fishing village to a modestly prosperous silk-weaving centre; but its fortunes, too, have suddenly changed. It controls one of the few deep water ports on the south coast suitable to the new ships, making it suddenly a vitally important node in the trading network; but because it has no history of being wealthy, it doesn't yet have defences commensurate with its new strategic importance, and is therefore a military target for every other power.<br /><br />So cities – real cities – are not just consumers of resources (and thus, necessarily, producers of goods or services which they can trade for those resources); they're not just places of strategic importance. They're also dynamic entities, changing in response to the pressures that the wider economic and geopolitical forces impose upon them.<br /><br />A virtual city doesn't, intrinsically, need to conform to these rules; but to be persuasive, to play a significant part in a persuasive narrative, it ought to do so, I think.<br /><br />This is the pool of meditations into which Konstantinos Dimopoulos beautifully illustrated new book, Virtual Cities, has dropped.<br /><br />The book is a substantial volume, as large and weighty as the telephone directory for any of the cities it describes. It is beautifully produced, colour printed throughout, elegantly and consistently designed, easy to navigate. <p></p><p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsgWins8lh6dkhQ11evUc9uxYvjdTG2mVuCTijYqR9zMUDQiw_omH4tr1j8p4ndzZhFZfe7ijQYrOLeBV0oq_bz4V0ZalEN9vz0JRtlryWQhZKnq_CNd19_5FS8dnBM_UsMFR7FxXnaao/s2048/IMG_20201110_081717.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsgWins8lh6dkhQ11evUc9uxYvjdTG2mVuCTijYqR9zMUDQiw_omH4tr1j8p4ndzZhFZfe7ijQYrOLeBV0oq_bz4V0ZalEN9vz0JRtlryWQhZKnq_CNd19_5FS8dnBM_UsMFR7FxXnaao/w400-h300/IMG_20201110_081717.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Entry for Novigrad<br /></td></tr></tbody></table>Other than a relarively short introduction, it is essentially a catalogue of 45 cities selected from computer games. Each city is described in five distinct ways, three textual and two graphical: each city has a 'tourist guide' running to two to five pages, giving a feel for the city and written as though it were a real city that one might visit; a much shorter 'design insights' piece of less than one page, describing the city in the context of the game of which it forms a part, with insights into its realisation and technical innovation; a brief table of, essentially, bibliographical data (what game, developed and published by whom, in which year, and so on); a map of the city covering typically a double page spread, showing significant places and how they relate to one another; and pen-and-ink drawings of places within the city.<br /><br />I'll say here that the style of illustration surprised and initially disappointed me. I had expected that the illustrations would be, at least nearly, screenshots taken from the particular games. They are not; instead, they are all drawn, in pen and ink, by a single artist, Maria Kallikaki. On reflection this is a good choice. It preserves the conceit from the 'tourist guide' that these are places one might really visit, and, at the same time, gives a cohesive visual style to the whole work.<br /><br />I do not think that, for many people, this will be a book to read from cover to cover; certainly I have not done so. Rather, I have sought first the entries for some familiar – to me – virtual cities, like Novigrad, Whiterun and Dunwall, and then browsed to the entries for cities I have on my virtual bucket list but have not yet visited, and from there on to still others like Neketaka and Gabriel Knight's New Orleans, which I hadn't previously been aware of but now want to visit.<br /><br />Of course this isn't – couldn't be – a comprehensive guide to all virtual cities, but rather a curated sample. I'm a little disappointed to find none of Rockstar Games' cities, as some of these, especially in recent games, are, I believe, very well executed. Most of the other major developers of games which present realistic urban worlds are represented.<br /><br />BioWare are represented only by the Mass Effect series' Citadel, which I think is fair; none of BioWare's cities, that I've visited, has seemed to me well thought out or credible, they struggle even with villages – which, for a company with such resource and talent and which does so much else reasonably well, is surprising. Valve has City 17. Blizzard has Tarsonis. Infocom, Rockvil. Obsidian has New Vegas and Neketaka. Ubisoft are represented by Assassin's Creed: Syndicate's realisation of London, an entry which has made me more than ever eager to experience this for myself.<br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-s_OCoDB61lJfH09iaY1YkCa_HZgXw59R-wvwAny4uedtCtTKgWzuiKhMHEjnbmHE9YP4s5pyEBmkaurI_EsM6KwRy_yHGYi7xZWN3Cao6G8-ZzGYqbxXxQbqHktAeAEIxsBb5-7Do8g/s2048/IMG_20201110_081728.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-s_OCoDB61lJfH09iaY1YkCa_HZgXw59R-wvwAny4uedtCtTKgWzuiKhMHEjnbmHE9YP4s5pyEBmkaurI_EsM6KwRy_yHGYi7xZWN3Cao6G8-ZzGYqbxXxQbqHktAeAEIxsBb5-7Do8g/w400-h300/IMG_20201110_081728.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Map of Novigrad<br /></td></tr></tbody></table><br />CD Project Red are represented only by Novigrad. It's a reasonable choice; arguably their best realised city at the time the book was being written. Visima, in the original The Witcher game, was astonishingly well realised for its date; Beauclair is the most beautiful city they have released yet; Night City, due to open to visitors a month from now, promises to be by far their most ambitious and complex. Yet, excluding Night City, none of Visima, Beauclair or indeed Oxenfurt has any significant feature which Novigrad does not, and of them all, Novigrad is the largest and most complex.<br /><br />Dimopoulos describes it as "one of the biggest, most thoroughly fleshed out, fantasy towns in gaming". I'd quibble a little with "fantasy," since Novigrad, although certainly fictitious, is so thoroughly grounded in Eastern Baltic history; but otherwise I wouldn't dissent from that judgement.<br /><br />Of course, besides these big development houses, many smaller developers are represented, too.<br /><br />Of course, not all these games consider the economic relationships of their cities to their hinterlands, although the better ones do. Of course, in not all of these games are geopolitical events even modelled, in still fewer do they cause observable change within the cities. And yet there is learning to be had from all these cities. Even those which fail, teach; because we can learn how they fail, and avoid it.<br /><br />Modelling an entire city and its economy, making it traversible and navigable, and filling it with interesting, believable characters and action, is a complex, interesting task. There are a lot of moving parts. It takes thought.<br /><br />And good books, which provoke thought, which introduce me to new cities to study, help enormously. For any geek interested in what makes game worlds tick, this book is a must have.</p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-30589714890964827042020-09-26T20:45:00.002+01:002020-09-26T20:45:30.772+01:00Who is the fairest of them all?<p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKyHBlKGdElKA4_v3pVsYDcC9EcMwRlqiv1KfB5Aac94lZIbIb9HRr6hNEtcHCMfan4R-Q79u_V6nGa1_c8wwoV0Eywlegp06x0GDbjztzkfypWIw0KAFPoyP9CAvmLtFHviK4XgSgO00/s1280/renfri.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKyHBlKGdElKA4_v3pVsYDcC9EcMwRlqiv1KfB5Aac94lZIbIb9HRr6hNEtcHCMfan4R-Q79u_V6nGa1_c8wwoV0Eywlegp06x0GDbjztzkfypWIw0KAFPoyP9CAvmLtFHviK4XgSgO00/s320/renfri.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Emma Appleton as Renfri<br /></td></tr></tbody></table>There's a princess. She has a stepmother. Her stepmother has a magic mirror that always tells the truth. Her stepmother is jealous of the princess, and seeks to get rid of her. You know this story, don't you? It's Snow White. It's a fairy story. We tell it to children.<br /><br />But fairy stories are almost always dark stories, almost always intensely sexual stories, and if you strip away the saccharine sweetness with which the Victorians enrobed them, you find the darkest places of human psychology.<br /><br />This is what Andrzej Sapkowski does. He is Polish, a writer of fiction; well known and well regarded across the Slavic world but (until this decade) relatively unknown to the English speaking world. His nearest English language equivalent is probably Angela Carter. He has written a series of adult, post-modern retellings of classic fairy tales, and he's strung them together by using a character - The Witcher, Geralt of Rivia, an itinerant pest control operative - who weaves his way through all the stories. Over a sequence of books, an entire internally-consistent world is built up around The Witcher, using fairy tales we all more or less remember as building blocks.<br /><br />One of those building blocks is Snow White. Sapkowski told the tale in the first of his Witcher books, a collection of short stories called Ostatnie Zyczenie (The Last Wish); in the English translation the story which retells Snow White is 'The Lesser Evil'.<br /><br />Sapkowski's world is a world of small, warring kingdoms, of religious extremism, of arrogant and bloodthirsty rulers, of ambitious and amoral magic wielders. In this world the Witcher is a working class hero. His clients include the aristocracy, certainly; and he knows how to interact with them when he has to. His training in his trade has incorporated a lot of knowledge, as understood in his world, so he is also able to engage on more or less equal terms with the middle classes: with merchants, with scholars, even with mages. But his peers are peasants, craftsmen, small-time mercenaries - even though many of these people are prejudiced against him because of his trade.<br /><br />The form and structure of the story we know emerges gradually from the Witcher's normal business in his world, presented naturalistically. It's a world of flawed people who have done evil, of uncertain knowledge, of sharp conflicts and murky judgements. The Queen's former advisor, Stregobor, and the former princess, Renfri whom he had plotted to have killed, each ask Geralt to kill the other, claiming that to do so would be the lesser evil. The greater evil each cite is the action which the princess might take if their conflict is not resolved. He refuses both requests.<br /><br />It's clear that, for Geralt, Renfri is by far the more sympathetic of the two characters - and not simply because he allows her to seduce him. He sees her as more sinned against than sinning. And yet he counsels her not to seek to kill Stregobor but simply to leave town.<br /><br />Renfri threatens a terrorist act - a massacre - in order to try to flush Stregobor out of his tower; Geralt moves to prevent it. The massacre foiled, Renfri faces Geralt alone. It's clear that he does not want to kill her, but she forces the fight; in doing so, my reading is that she intends and expects to be killed. And she is.<br /><br /><br />I'm not going to give a synopsis here; you already know the story, although you may not have fully thought through its psychological consequences. What I am going to talk about is the telling.<br /><br />It concerns a wizard, Stregobor, who, some years before, as court wizard to Aridea, Queen of a minor state called Creyden, had diagnosed her inconvenient stepdaughter, Renfri, as being afflicted with a curse. The Queen had sent her huntsman out into the forest with Renfri, with instructions to return with her heart and her liver which Stregobor wishes to dissect. It hadn't gone to plan; the huntsman had been found, dead, with his trousers round his ankles, and Renfri's cloak pin driven in through his ear into his brain.<br /><br />Stregobor, in the present of the tale, is hiding in a tower in an out of the way town, because he is being hunted down by Renfri, now adult and leading a band of brigands. He asks Geralt to kill Renfri, because she is cursed and her curse will bring terrible consequences to the world, and thus killing him would be a lesser evil.<br /><br /></p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-32255550186965383672020-07-24T14:38:00.004+01:002020-07-24T14:57:06.001+01:00Rape, grouse, and the pathology of power<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXJmE1kZ6iXvA1dQ7SiCCNfqu21pGdgjP429ZJ5_bTgDpvZN8EPaUIBdAbYlITL5WRESArSdmZv_QzsrOrgmiB_RXw7dpqqu-yBxvQaj5ephgtZm1esiAqWhsnn3e_zACMfaDTlXG9KUI/s2048/2014-04-21_Lagopus_lagopus_scotica%252C_Hawsen_Burn_1.jpg" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="Red Grouse" border="0" data-original-height="1536" data-original-width="2048" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXJmE1kZ6iXvA1dQ7SiCCNfqu21pGdgjP429ZJ5_bTgDpvZN8EPaUIBdAbYlITL5WRESArSdmZv_QzsrOrgmiB_RXw7dpqqu-yBxvQaj5ephgtZm1esiAqWhsnn3e_zACMfaDTlXG9KUI/w320-h240/2014-04-21_Lagopus_lagopus_scotica%252C_Hawsen_Burn_1.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Red Grouse (<a href="https://commons.wikimedia.org/w/index.php?curid=47878694">source</a>)<br /></td></tr></tbody></table>I got into a foolish Twitter dispute last night, and ended up saying <a href="https://twitter.com/simon_brooke/status/1286573206325927938">something I fundamentally think to be true</a>. People will say, and with good reason, 'oh, Simon's gone off on one again. He's mad, you know'. And, of course, it's true. I am insane. A really frustrating consequence of that is that sometimes my judgement is seriously wonky. But it also means I can say thing that other people are too sensible to say. Let's explore this idea.<br /><br />Firstly, to roll back a little, I do not believe that anyone is irredeemable. 'Evil' is not a word that should be applied to people. And, I believe, <b>usually</b>, people who do evil things do so because evil has been done to them.<br /><br />So this is an essay about the pathologies of power.<br /><br />I want to examine a number of things:<br /><ol style="text-align: left;"><li>The Bulingdon Club, and Alpha Epsilon Pi</li><li>Grouse moors</li><li>Jeffrey Epstein, and child sex abuse</li></ol>I will argue that these are on the same spectrum.<br /><br />To demonstrate huge wealth is not difficult. One merely has to drive <a href="https://www.awesomeinventions.com/gold-lamborghini/">a gold plated Lamborghini</a>. To have power, one has to be able to use it. One has to be able to do things which other people, people with less power, cannot do. And one has to be able to do these things with impunity. To show to others that one has power, one has to actually do things which other people cannot do: one has to use power performatively. And, indeed, this is the only way one can answer the question, 'how much power do I have?'<br /><br />The <a href="https://en.wikipedia.org/wiki/Bullingdon_Club">Bullingdon Club</a> is a club for very rich young men at Oxford University, it has been in existence for more than two hundred years, and with very much its present reputation for at least one hundred years. The reputation of the club is for extremely bad behaviour, with records of extreme destruction of other people's property from as early as 1894 to as recently as 2010.<br /><br />Apart from wrecking country houses and restaurants, notorious Bullingdon practices include<br /><br />1. Forcibly removing the trousers of members of the public;<br />2. Burning £50 notes in front of homeless people;<br />3. Bestial necrophilia.<br /><br />Alpha Epsilon Pi is not quite as elite as the Bullingdon Club. It is a 'fraternity' of university students at a <a href="https://en.wikipedia.org/wiki/List_of_Alpha_Epsilon_Pi_chapters">number of universities</a>, originally in the US, but including, specifically, St Andrews in Scotland. The chapter at St Andrews in particular has been associated with a <a href="https://edition.cnn.com/2020/07/13/uk/st-andrews-sexual-assault-allegations-scli-gbr-intl/index.html">startling number of allegations of rape</a>. (Dani Garavelli wrote <a href="https://www.scotsman.com/news/crime/dani-garavelli-abnormal-people-need-small-screen-enlightenment-about-rape-2917747">a very good piece</a> which refers to the Alpha Epsilon Pi allegations in Scotland on Sunday this week)<br /><br />All just young men's high spirits, don't you know? Or a systematic way for rich young men to explore just exactly how much bad behaviour they can get away with?<br /><br />Very well. Let us move on to child sexual abuse and the sexual exploitation of very young women; and the very large number of allegations around it which centre on rich and powerful men.<br /><br />Not all allegations of child sexual abuse are associated with powerful people, of course; that's not what I'm arguing. What I'm arguing is that the pathology of power draws people to explore what they can get away with. Child sexual abuse is the crime which in our modern society is most reviled and most stigmatised (and with reason). If you want to demonstrate that you can get away with anything, this is the Everest, the pinnacle.<br /><br />What I'm arguing here is that the attraction of child sexual abuse to very powerful people is not (at least mainly) an erotic attraction to very young bodies, just as <a href="https://en.wikipedia.org/wiki/Piggate">the alleged sexual act</a> between a former prime minister of the United Kingdom and a dead pig was not primarily about the erotic attraction of pork. On the contrary, both are, at least in part, a pathological need to explore the limits of power.<br /><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidRQONWrd_jQXmPS9Ccug6Y6i5NIOW1XbDYreuLz89sgMYOfS36C468dlFk5kA8lXtYtj_st3VjC-g4aHzMuZgQ2cvmrMD61DAWCJS2KVitLqb8i8fRPqyoDY2HXLsyodwVp3XI3tdfuw/s680/CcONc7sWwAEU3l3.jpeg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img alt="Corpses of grouse, pheasants and geese left to rot in a pit on a shooting estate." border="0" data-original-height="453" data-original-width="680" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidRQONWrd_jQXmPS9Ccug6Y6i5NIOW1XbDYreuLz89sgMYOfS36C468dlFk5kA8lXtYtj_st3VjC-g4aHzMuZgQ2cvmrMD61DAWCJS2KVitLqb8i8fRPqyoDY2HXLsyodwVp3XI3tdfuw/w320-h213/CcONc7sWwAEU3l3.jpeg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Corpses of grouse, pheasants and geese <br />left to rot (<a href="https://twitter.com/lukesteele4/status/703561543515033600?lang=en">source</a>)<br /></td></tr></tbody></table>Which brings us on to grouse moors. Grouse moors represent the environmental destruction of large areas of countryside in order to provide an opportunity for a very few people to slaughter a large number of birds - birds which are not particularly good eating and which are in fact largely dumped and left to rot for this very reason.<br /><br />The grouse, like the child sexual abuse victims and the dead pigs, are not being shot for their intrinsic value; they're being shot for their trophy value: to prove that the shooters can get away with it.<br /><br />So what is it they're 'getting away with'? Shooting a few wild birds does not seem so shocking, surely? Well, no. But in order to create the environment in which birds can be shot in such numbers, hundreds of people must be driven out of their homes and off their ancestral lands.<br /><br />Enclosing commons was how the powerful of the seventeenth and eighteenth centuries demonstrated their power. They had the power to drive the common people out of their homes and off their land, and they did. Having enclosed the commons, of course, they could then farm the most productive parts more intensively (or at least, rent them out to farmers, who would do so, at high rents) and make profits.<br /><br />But a large part of the lands from which they had driven the subsistence farmers could not be farmed profitably in any other way, so what to do with it? The answer was to create vast deserts on which to slaughter small birds.<br /><br />Just as, as feminists keep saying, <a href="https://www.theguardian.com/commentisfree/2013/aug/29/rape-about-power-not-sex">rape is not (mainly) about sex</a>, so enclosing the uplands is not mainly about improving agriculture - the new 'improved' agriculture could make no use of such marginal land. What had been, from April to September, the summer shieling of tens or hundreds of thousands of subsistence farmers, became an arena, for a few days in August, to display the power of the few.<br /><br /><a href="https://en.wikiquote.org/wiki/Tacitus">Solitudinem faciunt, bona appellant</a>.<br /><br />Birds of prey - especially large birds of prey - are the most visible of the iconic species of our wildlife. Wildlife is not the 'property' of anyone: rather it is a commons for us all. Birds of prey eat meat. Not huge amounts of it, but it is what they eat. I find the idea that eagles or red kites significantly predate on red grouse improbable. Hen harriers, of course, will do so, where grouse are abundant.<br /><br />There is a certain bitter rationality to gamekeepers slaughtering hen harriers, wild cats, foxes and stoats on grouse moors: the gamekeepers are paid to provide plentiful easy targets for their employers to take aim at. Predators which predate on ground nesting birds will necessarily reduce that plenty. This is how ecosystems work, after all.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWG_jdRqPWMmimpBoH8ATGeB3dxl_bBnkhZaeNf7sgKpLVIrxOYbSQ622DANtCv_qvrm8ECW7pT1-bhRHjZWB5c8GF4Mov64BWjAsVH13KbkkAG5C5sthMBWp3FoLt2jRwud_w3wWjT1g/s584/hares_angusglens_feb2015_113-hares-killed-driven-shooting.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="412" data-original-width="584" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWG_jdRqPWMmimpBoH8ATGeB3dxl_bBnkhZaeNf7sgKpLVIrxOYbSQ622DANtCv_qvrm8ECW7pT1-bhRHjZWB5c8GF4Mov64BWjAsVH13KbkkAG5C5sthMBWp3FoLt2jRwud_w3wWjT1g/s320/hares_angusglens_feb2015_113-hares-killed-driven-shooting.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Mountain hares killed on a single day on <br />a single estate in the Angus glens (<a href="https://raptorpersecutionscotland.wordpress.com/2020/06/16/scottish-gamekeepers-desperate-to-keep-slaughtering-mountain-hares-on-grouse-moors/">source</a>)<br /></td></tr></tbody></table>But the fact that <a href="https://raptorpersecutionscotland.files.wordpress.com/2017/05/analyses-of-the-fates-of-satellite-tracked-golden-eagles-in-scotland.pdf">eagles</a>, kites, pine martens and <a href="https://raptorpersecutionscotland.wordpress.com/2020/06/16/scottish-gamekeepers-desperate-to-keep-slaughtering-mountain-hares-on-grouse-moors/">mountain hares</a> are also slaughtered indiscriminately on grouse moors is evidence that this isn't about bitter rationality, or any rationality at all.<br /><br />The fact that ordinary people - people who are not powerful - take pleasure in seeing eagles, kites, hen harriers, ravens, wild cats, foxes, stoats and mountain hares - mountain hares! - is the only reason to exterminate them. It's a naked demonstration of power over the commons. Power to steal, to desecrate, to destroy, and to do so with impunity. Wanton and blatant destruction of common goods. Bad behaviour performed solely for the purpose of showing that you can get away with bad behaviour. And this, I claim, is evil.<br /><br />Wherever you find rich and powerful people wishing to demonstrate their wealth and power, you'll find others who make their living by enabling it. The <a href="https://en.wikipedia.org/wiki/Oort_cloud">Oort cloud</a> of lawyers and estate agents who orbit Londongrad are an example.<br /><br />So <a href="https://www.theguardian.com/us-news/2020/jul/02/ghislaine-maxwell-arrest-jeffrey-epstein-charges-latest-fbi">Ghislaine Maxwell</a> was, in effect, Epstein's grouse moor manager. She organised the provision of plentiful easy targets for him and his friends to take aim at, and managed the arenas in which they bagged their trophies.<br /><br />What I'm arguing here is not that grouse moors are 'as bad as' child sexual abuse - clearly, in terms of direct harm to specific individual people, they are not.<br /><br /><div>But I am arguing they are on the same spectrum, driven by the same pathology.</div><div><br /></div><div>And the reason that this matters - the reason that I believe we should look on the owners of grouse moors with the same eyes as we look on those people in the other categories I've discussed - is that it people have a propensity for performatively extremely bad behaviour in one aspect of their lives, it is highly probable that they are exhibiting equally unacceptable behaviour in others.<br /></div>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com2tag:blogger.com,1999:blog-5789047921614008864.post-34539334581242224912020-07-04T00:45:00.002+01:002020-09-17T22:36:14.661+01:00The Ranger's sword hilt<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLbT_BPw2g3_sLPL5zMfeln2Uia0SJiLyL_ta5hw-5VyiYanA6dzu3o2EQE28J-s0KLWQ7qS2sI4XVWNnnf2L6_KQgB5P98C_JgKAAsfyGLCdZfZmNDZRnA00uT4wljWL5jeTSqa9Z7d8/s990/aragorn3.jpg" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="990" data-original-width="815" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLbT_BPw2g3_sLPL5zMfeln2Uia0SJiLyL_ta5hw-5VyiYanA6dzu3o2EQE28J-s0KLWQ7qS2sI4XVWNnnf2L6_KQgB5P98C_JgKAAsfyGLCdZfZmNDZRnA00uT4wljWL5jeTSqa9Z7d8/s320/aragorn3.jpg" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Aragorn of the Dunedain, as <br />portrayed by Viggo Mortensen<br /></td></tr></tbody></table>My blog posts are often somewhat geeky, but this one may just be the most bizarrely geeky ever.<br /><br />Consider the Dungeons and Dragons character class, the Ranger. The class is (in my opinion) essentially based on Aragorn of the Dunedain from the Lord of the Rings. The ranger is an often solitary wanderer of wilderness areas, away from inhabited areas for weeks at a time. Therefore, everything which the Ranger carries must be strictly necessary; they will have to make compromises to keep their entire pack light enough to manage. The ranger is skilled at observation and tracking, but also at concealment and at moving quietly. Consequently, when faced with potential opponents they cannot beat, the ranger will probably remain in concealment and avoid conflict. The potential opponents in the wilderness are likely, in any case, also to be travelling light; the chances of meeting a heavily armoured opponent are slim.<br /><br />The ranger must carry a bow, since a lot of their subsistence will come from hunting. They must be very skilled with it. When faced with an armed human (or anthropoform) enemy, the bow is likely to be the first and primary weapon, since if you can do injury to your enemy before they are close enough to do injury to you, your chances in combat are that much better. However, when the distance closes sufficiently that melee weapons can be used, the bow ceases to be very useful, either for attack or defence. So a sword as a secondary weapon makes sense (an axe might make more sense, since it can do dual duty in gathering firewood, but the preponderance of swords over axes in medieval weaponry implies that, in a fight between a sword and an axe, the sword must generally have won; and it's clearly a more nimble weapon, so this is understandable). A quarterstaff - a fairly stout pole of hardwood a little longer than a man is tall - might make sense for reasons I'm going to come to later, but like any pole arm it's an awkward thing to carry (although it could do double duty as a walking stick). In any case, I'm going to assume my ranger carries a sword.<br /><br />A shield is a large, awkward, clumsy thing, as well as probably quite heavy. It cannot readily do double duty as anything else. I'm going to assume my ranger does not carry a shield. A buckler is possible but in the moment of throwing aside the bow and equipping melee weapons, it's one more thing you would have to be carrying and would have to equip; so I'm going to guess that my ranger doesn't carry a buckler, either. That means that, in melee combat, the ranger has both hands free to handle weapons. <br /><br />Two styles of fighting are possible. One is sword and dagger, in the renaissance Italian style, where the sword is something probably approaching a rapier. But the rapier is not a versatile sword: it is primarily a thrusting weapon. It could not be used for cutting firewood, or opening a path through a thorn thicket. The other is a cut and thrust sword. <br /><br />Our ranger is necessarily lightly armoured, since lugging heavy armour through the wilderness for at best very occasional use doesn't make sense, and it's noisy and takes a lot of maintenance, and you almost certainly wouldn't be wearing it on the very rare occasions when you needed it. If you're not armoured, then you don't want your enemy to get close enough to make effective use of their weapons, so you want as much reach as you can achieve (sorry, Arya Stark, that Needle won't help you much - and this is also where the quarter staff might make sense). So a longsword, or at least a 'bastard', hand and a half style sword, is the most appropriate sword. It has greater reach and, wielded with two hands, can land a more powerful blow than a single handed sword. In keeping with this argument, Aragorn's sword, Anduril, is a longsword. However, for the ranger in the wilderness, the slightly shorter bastard sword may be a better compromise, given that it is a (hopefully) infrequently used secondary weapon. <br /><br />OK, so that solves the problem, nothing more to think about.<br /><br />No?<br /><br />Well, no, I don't think so. Because our ranger's primary weapon is the bow, and, when an enemy closes to melee range, the change from bow to melee weapon has to be quite swift. Medieval swords from Christian Europe generally had straight crossguards, which offer little or no protection for the hand against a thrust. I suspect part of the reason was that the sword with the perfectly straight crossguard at right angles to the blade made an extemporary Christian symbol - could be used as a portable temporary altar for a quick pre-combat prayer - was part of the reason for this very simple design, but another reason is that the sword was expected to be used with gauntlets.<br /><br />The quillons - arms - of the guard are there to prevent your opponent's blade sliding up yours and either cutting into your hand, or, if deflected from the hand, entering another part of your body. Therefore it makes sense in a non-Christian culture to have quillons at least somewhat angled or curved towards the opponent, and, unsurprisingly, the quillons of many Islamic swords of the period are made precisely like this - but that's an aside. <br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi86NA5Gw0Z-w377PnvWg3JlTWfJNzU0C2pA-pjkRVizlQHvqZpkN9vb7pKVONaxBUWS04H9mLl0CO9etdHCjuj4lO9Pj3O1nvbKdAyA-OMK5lZ0YGSNYFzlGIcwRPPAaLPP8QzDVgdgwo/s1920/HJRK_A_7_-_Gauntlets_of_Maximilian_I%252C_c._1514.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1079" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi86NA5Gw0Z-w377PnvWg3JlTWfJNzU0C2pA-pjkRVizlQHvqZpkN9vb7pKVONaxBUWS04H9mLl0CO9etdHCjuj4lO9Pj3O1nvbKdAyA-OMK5lZ0YGSNYFzlGIcwRPPAaLPP8QzDVgdgwo/s320/HJRK_A_7_-_Gauntlets_of_Maximilian_I%252C_c._1514.jpg" width="320" /></a></div>The main point I want to make here is that an archer cannot wear gauntlets - certainly not on the hand used to draw the string, typically the user's dominant hand, which will typically be the hand closest to the enemy on the haft of the sword. So the classic medieval two handed sword with its simple cross guard leaves our ranger's dominant hand unprotected in a vulnerable position. This is precisely why small swords - gentlemens' dress swords, used on social occasions when armour wouldn't normally be worn - have much more elaborate hilts from the late medieval period; and why, by the time firearms had become the primary weapon of most soldiers, all swords had more elaborate hilts. The protection had migrated from the hand to the weapon.<br /><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJyGOSMVn4Bn9pEcK73NVp2wTkcRX3Z6Q53UkgUW0vntMUDDzuE3vcmgMInB0B8bqrKENQybcdlWpBQ09OF7GOai3gV94mYseXk1H6dHcT9-3uxULaElCnK6pek51y82d2azARGjlxIW8/s602/hand-and-half-basket.jpeg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="451" data-original-width="602" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJyGOSMVn4Bn9pEcK73NVp2wTkcRX3Z6Q53UkgUW0vntMUDDzuE3vcmgMInB0B8bqrKENQybcdlWpBQ09OF7GOai3gV94mYseXk1H6dHcT9-3uxULaElCnK6pek51y82d2azARGjlxIW8/s320/hand-and-half-basket.jpeg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Reproduction Swiss-style <br />hand-and-a-half sabre with simple <br />basket hilt.<br /></td></tr></tbody></table>So the guard needs to be extended at least to some degree. A basket hilted two handed sword is possible - examples (mainly from the sixteenth century) exist in both Switzerland and Germany, both with a basket protecting only the primary hand, and with a basket extending the full length of the hilt; and many of these, also, have finger guards. A basket hilt, of course, offers only limited protection against thrusts towards the hands; examples with shell guards also exist from Holland and Scotland, again around the sixteenth century, with the Dutch example having both a shell and a basket. Another interesting hilt design which might be considered is the 'Sinclair hilt', a (probably) Scottish design comprising a simple basket with a finger bar in the plane of the quillons and blade, with a plate metal loop at right angles to the quillons protecting the back of the hand. <br /><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUG6sVOnT8KfVyTTfjyGs3QQ1llTtmOcdsUQ7lF1vm8vuxpqD8Eek-1Xx2xOSSGZOS8vPL6DufKRirPjfDDiauc_2KBIYbG4ZhuWKGBsCPdeJqFDPxLeSECnBRMbja8-dgyrWbQjn3FFs/s520/sinclair-hilt.jpg" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="411" data-original-width="520" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUG6sVOnT8KfVyTTfjyGs3QQ1llTtmOcdsUQ7lF1vm8vuxpqD8Eek-1Xx2xOSSGZOS8vPL6DufKRirPjfDDiauc_2KBIYbG4ZhuWKGBsCPdeJqFDPxLeSECnBRMbja8-dgyrWbQjn3FFs/s320/sinclair-hilt.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://www.nielo-sword.com/fotogalerie/sinclair-hilt/">Reproduction Sinclair hilt</a><br /></td></tr></tbody></table>More protection on the hilt necessarily makes a sword heavier, all other things being equal. Obviously, it adds the extra weight to the hilt, bringing the point of balance of the sword back towards the hand and reducing its angular inertia in cutting; it tends to orient the blade more towards thrusting than towards cutting. And a symmetrical basket hilt is said to be awkward to wear, because part of it necessarily projects in towards the torso when worn on a belt. However, if the basket is to cover both hands it must be to an extent symmetrical, at least sufficiently to be awkward in this way. So I think what we're looking at something between a Swiss hand-and-a-half sabre hilt, and bastard sword with a Sinclair hilt protecting only the primary hand, but the haft and pommel extending beyond the basket to allow grip by the other hand. Of the two, the Swiss sabre style would be lighter; the Sinclair style would offer more protection. My instinct is that the ranger would prefer the Swiss style, both for lighter weight and for better cutting.<br /><br />It's worth noting here that once a basket hilt has evolved, one edge is always the primary edge of the blade, and most swords then quite quickly evolve towards single edged and subsequently curved; but straight double edged swords with basket hilts were in use in Scotland for at least three hundred years, and aesthetically (knowing very little about practical sword fighting) I prefer the look of a straight symmetrical blade.<br /><br /><div>Having said all this: in a fantasy environment we are not limited by what has been used historically. However, one thing we know about historical designs which were in use for a significant period is that they work and are practical. <br /></div><div><br /></div><div>So my ranger will carry a straight, double edged hand-and-a-half bastard sword, with an asymmetric half-basket hilt derived from the Swiss sabre illustrated above.</div><div> </div><div><h2 style="text-align: left;">Postscript</h2></div><div> </div><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzpIMYeEq1BnEcBgKSuvwhvJkNwRTbH4_eUciM7LxjStePM32Y1SYYdWCXK6O6DCynmBBphHI_y5KaEDxhIsKaegahe8Xc-GfsUrjZY3R-ZGY2GrfBSszSKXD7OpyiGge7koAN_00ChTU/s804/Screenshot+from+2020-09-17+22-27-19.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="586" data-original-width="804" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzpIMYeEq1BnEcBgKSuvwhvJkNwRTbH4_eUciM7LxjStePM32Y1SYYdWCXK6O6DCynmBBphHI_y5KaEDxhIsKaegahe8Xc-GfsUrjZY3R-ZGY2GrfBSszSKXD7OpyiGge7koAN_00ChTU/s320/Screenshot+from+2020-09-17+22-27-19.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Schiavona by Vladimir Cervenka<br /></td></tr></tbody></table><br />Since writing this I have been won over by this <a href="http://myarmoury.com/review_cerv_schia.html">extraordinarily beautiful and graceful</a> (and protective!) Schiavona hilt by <a href="http://myarmoury.com/review_cerv_schia.html?id=92">Vladimir Cervenka.<br /></a></div><p></p><p></p><p>A hand-and-a-half sword with an (obviously, for me, left handed) variant of this hilt is now an object of desire.<br /><br /></p>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-69023081803868412142020-06-23T07:38:00.000+01:002020-06-23T07:38:04.996+01:00Pathmaking<i>NOTE: this essay is called 'pathmaking', not 'pathfinding', because 'pathfinding' has a very specific meaning/usage in game design which is only part of what I w</i><i>ant to talk a</i><i>bout here.</i><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fo7vkkreqZsDZZeIfXTNAQQRraEA2i7PC1PvQmql0Lk_vkWU82Jvi6SY7SdbOTGh2QExD5hEDb5xL67eL9YJ_yNP1KEqfSGf-v2id4afDO1QlHEFEr1_mIImeMAuio_-mSuoDHyZvso//" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="898" data-original-width="1746" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fo7vkkreqZsDZZeIfXTNAQQRraEA2i7PC1PvQmql0Lk_vkWU82Jvi6SY7SdbOTGh2QExD5hEDb5xL67eL9YJ_yNP1KEqfSGf-v2id4afDO1QlHEFEr1_mIImeMAuio_-mSuoDHyZvso/w400-h206/tchahua.png" width="669" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Visualisation of the port at Tchahua<br /></td></tr></tbody></table><h2 style="text-align: left;">Stages in creating routes between locations</h2><h3 style="text-align: left;">The 'procedural' phase</h3><i>see also Baking-the-world.</i><br /><br />Towards the end of the procedural phase of the build process, every agent within the game world must move through the complete range of their needs-driven repertoire. Merchants must traverse their trading routes; soldiers must patrol routes within their employers domain; primary producers and craftspeople must visit the craftspeople who supply them; every character must visit their local inn, and must move daily between their dwelling and their workplace if different; and so on. They must do this over a considerable period - say 365 simulated days.<br /><br />At the start of the procedural phase, routes - roads, tracks and paths - designed by the game designers already exist.<br /><br />The algorithmic part of choosing a route is the same during this procedural phase as in actual game play <i>except</i> that during the procedural phase the route-map is being dynamically updated, creating a new path or augmenting an existing path wherever any agent goes.<br /><br />Thus the 'weight' of any section of route is a function of the total number of times that route segment has been traversed by an agent during this procedural phase. At the end of the procedural phase, routes travelled more than R times are rendered as roads, T times as tracks, and P times as footpaths, where R, T and P are all chosen by the game designer but generally R > T > P.<br /><div><h3 style="text-align: left;">Algorithmic rules</h3></div><ol><li>No route may pass through any part of a reserved holding, except the holding which is its origin, if any, and the holding which is its destination (and in any case we won't render paths or roads within holdings, although traversal information may be used to determine whether a holding, or part of it, is paved/cobbled;</li><li>No route may pass through any building, with the exception of a city gate;</li><li>We don't have bicycles: going uphill costs work, and you don't get that cost back on the down hill. Indeed, downhills are at least as expensive to traverse as flat ground;</li><li>Any existing route segment costs only a third as much to traverse as open ground having the same gradient;</li><li>A more used route costs less to traverse than a less used route.</li></ol><h3 style="text-align: left;">River crossings</h3>Crossing rivers is expensive - say five times as expensive as level open ground (but this will probably need tuning). Where a river is shallow enough, (i.e. where the amount of water passing is below some threshold) then a path crossing will be rendered as stepping stones and a track crossing as a ford. Where it's deeper than that, a path crossing either isn't rendered at all or is rendered as a light footbridge. A track or road crossing is rendered as a bridge. However, the maximum length of a bridge varies with the amount of traffic on the route segment, and if the crossing exceeds that length then a ferry is used. Road bridges will be more substantial than track bridges, for example in a biome with both timber and stone available road bridges might be rendered as stone bridges while track bridges were rendered as timber. If the watercourse is marked as `navigable`, the bridge must have a lifting section. It is assumed here that bridges are genetic buildings like most other in-game buildings, and so don't need to be individually designed.<br /><h3>Representation</h3>At some stage in the future I'll have actual game models to work with and $DEITY knows what the representation of those will be like, but to get this started I need two inputs: a heightmap, from which gradients can be derived, and a route map. The heightmap can conventionally be a monochrome raster image, and that's easy. The route map needs to be a vector representation, and SVG will be as convenient as any. So from the point of view of routing during the procedural phase, a route map shall be an SVG with the following classes:<br /><ul><li>`exclusion` used on polygons representing e.g. buildings, or impassable terrain which may not be traversed at all;</li><li>`openwater` used on polygons representing oceans and lakes, which may be traversed only by boat (or possibly swimming, for limited distances);</li><li>`watercourse` used on paths representing rivers or streams, with some additional attribute giving rate of flow;</li><li>`navigable` may be an additional class on a path also marked `watercourse` indicating that it is navigable by cargo vessels;</li><li>`route` used on paths representing a path, track or road whose final representation will be dynamically assigned at the end of the procedural phase, with some additional attribute giving total traversals to date;</li><li>`path` used on paths representing a path designed by the designers, which will certainly be rendered as a path no matter how frequently it is traversed;</li><li>`track` used on paths representing a track designed by the designers, which will certainly be rendered as a track no matter how frequently it is traversed;</li><li>`road` used on paths representing a road designed by the designers, which will certainly be rendered as a road no matter how (in)frequently it is traversed.</li></ul>At the end of the process the routing engine should be able to write out an updated SVG. New routes should be splined curves, so that they have natural bends not sharp angles.<br /><div><h3 style="text-align: left;">The 'Walkmap'</h3></div>Conventional game pathfinding practice is to divide the traversable area into a mesh of 'convex polygons', where a 'convex polygon' in this sense is, essentially, a polygon having no bays. Routes traverse from a starting point to the centre of a polygon ajacent to the polygon in which the starting point is located. I have reservations as to whether this will do what I need since I'm not convinced it will produce naturalistic paths; however, it's worth at least experimenting with.<br /><br />There are existing utilities (such as <a href="https://github.com/fogleman/hmm">hmm</a>) which convert heightmaps into suitable geometry files; however all I've found so far convert to <a href="https://en.wikipedia.org/wiki/STL_(file_format)">binary STL</a>. This isn't a format I find very useful; I'd prefer an XML dialect, and SVG is good enough for me.<br /><br /><span style="font-family: courier;">hmm</span> converts the heightmap into a tesselation of triangles, which are necessarily convex in the sense given above. Utilities (such as <a href="https://github.com/IsseiMori/binary-stl-toASCII">binary-stl-toASCII</a>) exist to convert binary STL to an ASCII encoded equivalent, which may be easier to parse.<br /><br />So the pipeline seems to be<br /><ol><li>heightmap to binary STL</li><li>(optional) binary STL to ASCII STL</li><li>STL to SVG (where 'SVG' here is shorthand for a convenient vector format)</li><li>Exclude holdings, buildings, open water, and other exclusions</li><li>Where we have excluded exclusions, ensure that any non-convex polygons we've created are divided into new convex polygons.</li></ol>I shall have to write custom code for 4 and 5 above, and, looking at what's available, probably 3 as well.<br /><br />I'm working on a separate library, <a href="https://simon-brooke.github.io/walkmap/codox/index.html">walkmap</a>, which will attempt to implement this pipeline.<br /><h3 style="text-align: left;">Pathmaking and scale</h3>Dealing with large heightmaps - doing anything at all with them - is extremely compute intensive. We cannot effectively do routing at metre scale - which is what we ultimately need in settlements - across the entire thousand kilometre square map in one pass. But also we don't need to because much of the continent is by design relatively unpeopled and relatively untracked. The basic concept of the Steppe is that there are two north/south routes, the one over the Midnight Pass into the Great Place and the one via Hans'hua down to the Cities of the Coast, and those can be part of the 'designed roads' map. So we can basically exclude most of the Steppe from routing altogether. We can also - for equally obvious reasons exclude the ocean. The ocean makes up roughly half of the 1000x1000 kilometre map, the steppe and plateau take up half of what's left, mountain massifs eat into the remainder and my feeling is that much of the eastern part of the continent is probably too arid to be settled. So we probably end up only having to dynamically route about 20% of the entire map.<br /><br />However, this doesn't get round the main problem with scale, and pathmaking. If we pathmake at kilometre scale, then curves will be necessarily very long and sweeping - because each path segment will be at least a kilometre long. And, actually, that's fine for very long distance roads in unpopulated fairly flat territory. It's not so good for long distance roads in rugged terrain, but...<br /><h4>Phase one: hand-designed routes</h4>While, given the bottlenecks of the few mountain passes and the one possible pass over the plateau, the caravan routes we want would almost certainly emerge organically out of dynamic routing. But, actually, I know more or less where they need to be and it's probably easiest to hand design them. It will certainly save an enormous amount of brute-force compute time.<br /><br />I think I have to accept that if I want Alpe d'Huez-style switchbacks up the Sunset and Midnight passes, they're going to have to be hand designed. The same applies to where the Hans'hua caravan road ascends the plateau.<br /><h4 style="text-align: left;">Phase two: route segments 'for free' out of settlement activity</h4>If we start by pathmaking around settlements, we can make a first start by giving the template for a holding a segment of track parallel to and just in front of its frontage, and a segment of path along its left hand and rear edges. That, actually, is going to provide 90% of all routing within a settlement, and it's done for us within the <a href="https://blog.journeyman.cc/2009/12/settling-game-world.html">Settling</a> phase.<br /><h4 style="text-align: left;">Phase three: metre scale routing around settlements</h4>So if we then collect groups of contiguous 100x100 metre zones each of which has at least one settled holding, we can route at one metre scale over that and what it will essentially do is join up and augment the route segments generated by settlement. Areas of dense settlement do not make up a great deal of the map. Note that experience may show that the metre scale routing is superflous.<br /><h4>Phases four, five and six: increasing granularity</h4>Taking the augmented route map comprised of<br /><br />1. The hand-designed, mainly long distance or plot-important routes;<br />2. The route segments bordering holdings;<br />3. The metre scale routing<br /><br /><div>we can then collect contiguous groups of zones each having at least one holding, where in phase four each zone is a kilometre square and divided into 100x100 grid so that we route at ten metre scale; in phase five we use ten kilometre by ten kilometre zones and we route at 100 metre scale; in phase six, 100 km by 100 km zones and we route at kilometre scale. Each of these phases, of course, starts with a routemap augmented by the phase before. <br /></div><div><br /></div><div>This process should automatically link up all settlements on the south and west coasts, all those on the north coast, and all in the Great Place; and seeing that the posited pre-designed caravan roads already join the south coast to the north, the north to the Great Place and the Great Place to the south coast, we're done.</div><br />At least one of phases three, four, five and six is probably redundant; but without trying I'm not sure which.<br /><h3 style="text-align: left;">Tidying up</h3>After the full set of increasing-scale passes is complete, we should automatically cull any route segments generated in the settlement phase which have never actually been traversed.<br /><br />Following that, there may be scope for some final manual tweaking, if desired; I think this is most likely to happen where roads routed at kilometre scale cross rugged terrain.<br /><br />Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-21435666028963387972020-06-22T19:42:00.000+01:002020-06-22T19:42:13.874+01:00The car is dead. Long live the...?<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyPPjhDtkz0-GDU-F321Wpd74TIpiAPA9oCTrU_Q2Pc8VvotvZsC7mevPUdxtpGDovk0kBaW0-5UZiEoB3ODchY75iB7X3uDJnghbCHUUXRQ43LsGvzLInzIhr_uUn01q28sHbhJbwplA/s3840/DSC_1143.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2160" data-original-width="3840" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyPPjhDtkz0-GDU-F321Wpd74TIpiAPA9oCTrU_Q2Pc8VvotvZsC7mevPUdxtpGDovk0kBaW0-5UZiEoB3ODchY75iB7X3uDJnghbCHUUXRQ43LsGvzLInzIhr_uUn01q28sHbhJbwplA/s320/DSC_1143.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">My car<br /></td></tr></tbody></table><div>My car is probably - not certainly, there is still one test to do - dead, or at least beyond economic repair. All that is wrong is a mystery fault in the electronic control system - the chassis, engine, transmission and most of the bodywork are all sound - but, even if we had a certain diagnosis, it's likely that the cost of replacement parts would be unaffordable. <br /></div><div><br /></div><div>It's a wrench. I really, really like that car. It is undoubtedly the most enjoyable car I've ever owned, and I have hugely enjoyed owning it. But it also leaves me faced with a very difficult decision: whether to aim to replace the car with another car, or with an electic assist cargo bike.</div><br />If I was as good a human being as I like to play on Twitter, this would be a no brainer. We cannot afford to be burning fossil fuel for personal transport, but also, equally, we cannot afford to be burning fossil fuel to build new 1.5 ton personal transport vehicles for everyone, whether or not they're electric. In any case, I cannot afford the capital cost of an electric car, and I struggle to afford the running cost of a fossil fuel car - it's more than a third of my total income. So the only car I could conceivably afford would be another elderly fossil fuel car.<br /><br />The capital cost of an electric assist cargo bike would of course be more than the capital cost of an elderly car, but it would pay that cost back in reduced running costs over at most three years. What it wouldn't have is weather protection, or passenger carrying capacity.<br /><br />Today, one day after the summer solstice, I had a dental appointment in Castle Douglas, ten miles away. It was raining steadily, and the wind was gusting to 45 mph (72 kmh). Cycling would have been very unpleasant, even with electric assist. High winds and heavy rain are not at all unusual here - not so common at this time of year, but very common in winter.<br /><br />Fortunately, today, I was able to borrow a friend's car. Friends have also offered to help me buy a car. I have good friends, and I'm grateful to them, but I don't want to be someone who lives off charity.<br /><br />I suffer from depression, and that isn't going to change. Life, for me, in winter, is quite hard anyway. If I make it too hard, it will not be worth continuing. There are folk - who I care about - who will be hurt when I choose to die, and so, although that is how I hope I'll eventually go, I'd like to put it off as long as reasonably possible. Making my life tolerable is thus a duty which, to some extent, I have to others. Yes, that sounds self-serving - to an extent it feels self-serving - but it's also true.<br /><br />If there were a car club or similar scheme in the village it would solve my dilemma - I rarely need a car more than one day a week - but there isn't and it would take at least months of work and a lot of effort to set one up, and I don't feel I have that energy.<br /><br />Altogether this is a problem I really wish I didn't have to face just now.<br />Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-31302901110324972002020-04-26T14:23:00.001+01:002020-04-27T08:07:41.067+01:00The virus, and independence<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihFHilPL58i1zoQKo9sq1_3DMI_nVfM9MMcVDw6zadygLd4mfJnxkQRJvqEUVNjUSx6r8_k3M3tc9kWf22I4BYtt3xGTBKR_KQWkVSFjnbFGq9A7bW63o07HfuOvIDAtL5OcaDBk_o6Yo/s1600/49806062907_089ebae385_kJPG.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="549" data-original-width="615" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihFHilPL58i1zoQKo9sq1_3DMI_nVfM9MMcVDw6zadygLd4mfJnxkQRJvqEUVNjUSx6r8_k3M3tc9kWf22I4BYtt3xGTBKR_KQWkVSFjnbFGq9A7bW63o07HfuOvIDAtL5OcaDBk_o6Yo/s320/49806062907_089ebae385_kJPG.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Nicola Sturgeon, giving a briefing on coronavirus</td></tr>
</tbody></table>
At least 750 - other people online have estimated more - folk in Scotland have died from COVID19 who would not have died if they had lived in any of our northern European neighbours of the same size.<br />
<br />
In Denmark, there have been, as of 20th April, 61 deaths per million people. In Estonia, 30. The Faroe Islands, none at all. Finland, 16. Iceland, 26. Ireland, 123. Latvia, only 2. Lithuania, 13. And Norway, 28.<br />
<br />
But Scotland has done worse, far worse. We've lost 166 people for every million.<br />
<br />
That's the open and shut case for independence right there, isn't it?<br />
<br />
If we had been independent, we could have saved 750 people who are now dead - and remember, we're less than half-way through this crisis. There are at least another 750 people living in Scotland today who will die unnecessarily unless we change course.<br />
<br />
This is true.<br />
<br />
But the key word in that sentence is 'could': because if we had been independent under this SNP government, we would not have lost any fewer. Every aspect of health policy and transport policy is devolved. The UK government's policy on coronavirus has obviously been slapdash, chaotic, incompetent and irresponsible, and that was already obvious as far back as January. But nothing in law required the Scottish government to follow that policy.<br />
<br />
It's possible, as some SNP defenders have suggested, that the UK government have put severe pressure on the Scottish government to follow its lead; but if so the Scottish government needs to say so and to document it. It seems to me far more likely, given what we know of Nicola Sturgeon, that the choice has not been a consequence of pressure but of calculation. Sturgeon is risk averse, and inclined to delay big decisions. She will (rightly) have felt that if Scotland had fared even slightly worse through the crisis, it would be seen as an argument against independence. If this is what she thought, she was right, of course. By closely following UK policy, by making slight tweaks at the margin of it, she ensured that Scotland's outcome was at worst very similar to the UK's. But also, at best very similar.<br />
<br />
There's a very strong smell here of "when you go out stay close to nurse, for fear of meeting something worse" - and that isn't a good argument for independence at all.<br />
<br />
So what could Scotland have done differently?<br />
<br />
We could have implemented track, trace and isolate from day one, and maintained it. Across the world, countries which have implemented track, trace and isolate have done far better than those that haven't. The scandal here is that the UK did track and trace the first few cases, and then abandoned the policy; and Scotland hasn't done it at all.<br />
<br />
We could have required face covering in public places. Of course masks don't stop infection, but they do greatly reduce the spread of virus particles. It doesn't have to be a surgical mask. A scarf would do almost as well. And again, countries which have required face coverings have done far better.<br />
<br />
We could have quarantined all arrivals for fourteen days. The Public Health etc. (Scotland) Act 2008, section 40, gives us this power. It would be clumsy: if an arriving passenger refused to be quarantined, it would require for a sheriff to make an individual order for that person. There's no provision for a class or general order. Thousands of people arrive in Scotland every day, and if they all refused to be quarantined we would not have enough sheriffs to issue the orders. But, again, we have passed emergency legislation for COVID19; it would have been easy to add a clause temporarily adding a general quarantine order.<br />
<br />
We could have quarantined arrivals. There are plenty of hotels standing empty which could have been taken over as temporary quarantine centres. We chose not to.<br />
<br />
Much of Scotland's imports, including of crucial things like food, arrive on trucks coming up from England, mainly by the M74. But we could have instituted a system of routing off arriving vehicles at Gretna into the parking area at the 'Outlet Village'. Articulated truck tractor units could be swapped over there, so that some tractor units (and their drivers) remained in Scotland, shuttling trailers to their destinations and back to Gretna, while those drivers arriving from the south remained in accommodation in Gretna until their trailer was returned, or went back to fetch another load from England to swap trailers at the border again.<br />
<br />
All this would be complicated, it would be a nuisance, folk would complain; but it could be done.<br />
<br />
This is made more complicated by the fact that there isn't, yet, a rapid, reliable test for coronavirus. In fact it's worse than that: the UK test, as OpenDemocracy revealed on Tuesday, <a href="https://www.opendemocracy.net/en/opendemocracyuk/exclusive-nhs-using-flawed-covid-19-test-missing-25-of-positives/">is very unreliable indeed</a>: it misses 25% of all cases. Of course, Scotland didn't have to use the UK test. There are commercially available tests from pharmaceutical firms such as Hoffmann-La Roche and Abbott Laboratories which are more reliable. We could - if we had acted early - have bought these. We didn't, and they're now in critically short supply.<br />
<br />
Because we don't have effective tests, We would have to quarantine every single arriving person. We would have had to swap tractor units, or at least change drivers, of every single arriving load (and, frankly, since the virus remains viable on surfaces like, for example, steering wheels, for some time, just changing drivers without a pretty effective clean of the cab at the border doesn't seem to me adequate). Folk who commute across the border - there are quite a few - would just have to pick a side for the duration. It would be complicated. It would annoy folk. It would be expensive.<br />
<br />
Well, yes it would. But what we're doing is expensive. Emergency medicine is expensive. The Louisa Jordan hospital is expensive. If we had far fewer cases, we wouldn't need the Louisa Jordan. We wouldn't be overburdening our hospitals. Spending money at the border and at airports, on quarantine, on changeover of tractor units; spending money on track, trace and isolate; spending money on better testing facilities - all these things would save money in hospitals. More importantly, it would save lives.<br />
<br />
What's your old dad's life worth? Is it worth a thousand pounds? If it is, a politician could say, oh, well, we're only going to lose a few thousand people, that's a few million pounds, let it rip. That's what Boris Johnson and Dominic Cummings wanted to say. If you see people's lives as fungible, as of essentially monetary value, then even if you priced lives at a million pounds each, there would be an economic case for letting the disease rip. But is that how we want our governments to value our lives? Is that something we want to see the government of Scotland do?<br />
<br />
I'd argue that it is not.<br />
<br />
Folk are saying that we don't have our own currency, we can't print money, we can't even borrow. All that is true. But what the UK is doing is also enormously expensive. Under the Barnett Formula, we're entitled to a pro-rata share of everything they spend. Taking a different tack on coronavirus would not make Kate Forbes already demanding job any easier, but it's the job of politicians to make tough decisions, to rise to the occasion in a crisis.<br />
<br />
The Scottish government just isn't doing this. It has all the powers, and has choesn not to use them. It is true that the UK strategy has been complacent and irresponsible, and that the UK's delivery of that policy has been chaotic and incompetent. But what we have in Scotland is a competent, orderly implementation of Boris Johnson and Dominic Cummings complacent, irresponsible policy, and there is no-one outside Scotland who can be blamed for that.<br />
<br />
Growing up as a nation is about owning up when you get it wrong. Growing up as a nation is about not blaming others for your failings. Growing up as a nation is about learning to take your own risks, your own hard choices, your own responsibility for your own actions; and right at this moment, Scotland is failing to do any of this.<br />
<br />
Over the course of this crisis, at least 1500 Scots will die in Scotland who would not have died if we had followed the policies of any of our similar-sized northern European neighbours. Is that an argument for independence? You bet it is. But they will have died not because of the UK government's failings, not because of its complacency and irresponsibility, but because of our own.<br />
<br />
We need to own this. And, we need to lay the blame squarely on the government and on the ministers who made these choices. Is that an argument for voting for the SNP in its current form next year? Not without a dramatic change of direction.<br />
<br />
<br />Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com2tag:blogger.com,1999:blog-5789047921614008864.post-4010629904631522132020-03-28T12:05:00.002+00:002020-03-28T12:05:46.044+00:00QGIS on Ubuntu 18.04QGIS didn't work for me out of the box. Here's notes on what I had to do to get it going. Brief summary, out of the box the Open Street Map URL is missing. See 'Breakthrough' below for how to fix this. However, also, the version of qgis available from the Ubuntu package repository is at present quite out of date; alternative repositories are available but as yet I haven't tried them.<br />
<br />
Firstly, if it isn't working and you've been tinkering to try to get it working, start by purging it completely:<br />
<br />
sudo dpkg --purge qgis qgis-provider-grass qgis-plugin-grass<br />
rm -rf ~/.qgis2/<br />
<br />
Then reinstall it with all the extra bits that it actually needs - when I originally installed it, it did not automatically install <span style="font-family: "Courier New", Courier, monospace;">saga</span>, and I'm not sure whether it automatically installed the <span style="font-family: "Courier New", Courier, monospace;">grass</span> plugin.<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;">sudo apt install python-qgis qgis-plugin-grass saga</span><br />
<br />
This at the time of writing installs QGIS version 2.18.17.<br />
<style type="text/css">
p, li { white-space: pre-wrap; </style><br />
<style type="text/css"> </style><br />
<style type="text/css"> </style><br />
<br />
Then start QGIS<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;">qgis</span><br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1AzleN9EeZEoMWIlu51xBrDqsPL7kqt2BCNiahgGgJJHTrcWbW6MB6Q1c-J2oR2lp1mlRxz2mrfbVOzjHPtJ7VyoLhE75plxu7CkA108nlhvDtNMv295DMmMjHViB0jaV24L5RcFG-0/s1600/Screenshot+from+2020-03-28+08-15-24.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1AzleN9EeZEoMWIlu51xBrDqsPL7kqt2BCNiahgGgJJHTrcWbW6MB6Q1c-J2oR2lp1mlRxz2mrfbVOzjHPtJ7VyoLhE75plxu7CkA108nlhvDtNMv295DMmMjHViB0jaV24L5RcFG-0/s320/Screenshot+from+2020-03-28+08-15-24.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">QGIS, immediately on starting.</td></tr>
</tbody></table>
At this point the application window renders. I get one python warning in the 'Log Messages Panel':
<br />
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;">2020-03-28T08:08:03 1 warning:/usr/lib/python2.7/dist-packages/qgis/utils.py:258: DeprecationWarning: This method will be removed in future versions. Use 'parser.read_file()' instead.</span></div>
<span style="font-family: "Courier New", Courier, monospace;">
</span><div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;"> cp.readfp(f)</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
Because it's only a deprecation warning, I'm inclined to think this is not a significant issue. </div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
I also get the following warnings in the console. Once again, they're only warnings:</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;">Warning: loading of qgis translation failed [/usr/share/qgis/i18n//qgis_en_GB]<br />Warning: loading of qt translation failed [/usr/share/qt4/translations/qt_en_GB]<br />Warning: Object::connect: No such signal QgsMergedBookmarksTableModel::&QgsMergedBookmarksTableModel::selectItem( const QModelIndex &index )<br />Warning: Object::connect: (receiver name: 'QgsBookmarksBase')<br />Warning: QCss::Parser - Failed to load file "/style.qss" <br />QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: No such file or directory<br />Warning: QFileSystemWatcher: failed to add paths: /home/simon/.qgis2//project_templates<br />Warning: QLayout: Attempting to add QLayout "" to QgsPanelWidgetStack "mWidgetStack", which already has a layout</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
I select, from the menus, Project -> New; the 'Recent Projects' heading disappears from the main pane, and it appears to be a map pane - but there's no map.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
I type 'world' into the 'Coordinate' input and hit return, <a href="https://youtu.be/kCnNWyl9qSE?t=207">as directed by this tutorial</a>, and still, no map. Comparing my screen to the screen shown in the tutorial, they are identical except that </div>
<ol>
<li>No map is displayed, and</li>
<li>Some icons in the second toolbar from the top which are coloured in the tutorial are greyed on my screen.</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzlX9n-GumLEAFmiYzD7tHnF9eraRcVjcfWSWpWLrrkgmACl11HucNY55hRYMsdJzCyxlcybhrYJ1TyhxrQVW0_c6NlSErbo3X-Mvlkzdv3EOH6aKSb-V3-UgDoVBUpO4AbNUfNLCfJlY/s1600/Screenshot+from+2020-03-28+08-17-38.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzlX9n-GumLEAFmiYzD7tHnF9eraRcVjcfWSWpWLrrkgmACl11HucNY55hRYMsdJzCyxlcybhrYJ1TyhxrQVW0_c6NlSErbo3X-Mvlkzdv3EOH6aKSb-V3-UgDoVBUpO4AbNUfNLCfJlY/s320/Screenshot+from+2020-03-28+08-17-38.png" width="320" /></a></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
I take this to mean that not only can I not see the map, QGIS doesn't think there is a map from which I can make selections.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
If I try to drag the 'osmraster' item from the 'Browser Panel' into the map area, I get a series of errors in the 'Log Messages Panel' of the general form:</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
2020-03-28T08:37:53 1 Tile request max retry error. Failed 3 requests for tile 11 of tileRequest 2 (url: https:/2/2/2.png)</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
Clearly, the URL is malformed. Clearly, there is something wrong with the template string from which the URL is being formed.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIrhAaXuBdk7RKGkxMsQrJBSZfSL5Giti__C7ybeCTGobjDfmcbUXXswpLuUXObvyYsxH6jwNmjWinllauw8iR_SjwfJQEhEGYgvgZ6d5ULUee6nwGY8GfMmxYbB7465Y0BqC_2h5Kp1E/s1600/Screenshot+from+2020-03-28+08-56-21.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIrhAaXuBdk7RKGkxMsQrJBSZfSL5Giti__C7ybeCTGobjDfmcbUXXswpLuUXObvyYsxH6jwNmjWinllauw8iR_SjwfJQEhEGYgvgZ6d5ULUee6nwGY8GfMmxYbB7465Y0BqC_2h5Kp1E/s320/Screenshot+from+2020-03-28+08-56-21.png" width="320" /></a></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
At this point I tried using the '<a href="https://docs.qgis.org/2.18/en/docs/user_manual/introduction/getting_started.html#launching-qgis">Getting Started</a>' instructions from the manual. Once I had downloaded the sample data, I was able, following instructions, to get raster data to show on the map pane. Vector data, however, for example from the 'lakes.gml' file in the sample data, still did not render at all.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
This made me suspicious of the error seen earlier in the console,</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;">Warning: QCss::Parser - Failed to load file "/style.qss" </span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;"></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;"></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;"><br /></span>If the default style is white on white, then perhaps QGIS has been rendering a map, but rendering it invisibly. I find that there are indeed two files with this name in my file system:</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: "Courier New", Courier, monospace;">simon@mason:~/qgis$ locate style.qss<br />/home/simon/.qgis2/themes/Night Mapping/style.qss<br />/home/simon/simon/.qgis2/themes/Night Mapping/style.qss<br />/usr/share/qgis/resources/themes/Night Mapping/style.qss</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
However, I can't find any way of selecting a stylesheet in any of the menus (there's a 'Style Manager' dialogue, available from the 'Project Properties' dialogue and from the 'Settings' menu, but it does not mention stylesheets and does not appear to allow you to set one. There's no reference to 'style.qss' in any file in my .qgis2 directory; nor is there any reference to it, or to a stylesheet at all, in a saved project file.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
I experimentally copied one of these style.qss files into the root directory of my filesystem, and restarted QGIS. This time, the file was found, but its only effect was to render many dialogues unreadable; it did not change the blankness of the default map panel. Further browsing showed that a QSS stylesheet is a stylesheet used by the Qt tookit (which QGIS is built on), not used by QGIS itself, and, as the default styles render QGIS perfectly acceptably, this file is not needed and is not the problem.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
At this point I noticed what looked like specks of dirt on the screen. I zoomed in and found a group of vector shapes which could well be lakes - but they didn't AT ALL align with the sample raster data. I checked the coordinate systems used and found that they were different. I changed the coordinate system for the lakes data to that used for the raster data, and they overlaid precisely. Progress!<br />
<h2>
The breakthrough </h2>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
So I went back to trying to find why the Open Street Map data was not loading. I right clicked on 'Tile Server (XYZ)' in the 'Browser Panel' and got a dialogue asking for a URL. I entered '<span style="font-family: "Courier New", Courier, monospace;">https://c.tile.openstreetmap.org/{z}/{x}/{y}.png</span>', chosen from an existing leaflet project, and was shown another dialogue asking for a name for the layer. I entered '<span style="font-family: "Courier New", Courier, monospace;">TestOSM</span>'.</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zdc0kuxFVS_riw_BbY3nf7G6t7SNeMTmeArNJQxv-DVA-ZcIFeqStnpYkhN_hf81153osLziyx74nMEpUFul6pJS73KXUw0YidqeGb8jX6PKp_VbNb55cMKl71a2ztB6lWwqGHCxWKw/s1600/Screenshot+from+2020-03-28+10-05-40.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zdc0kuxFVS_riw_BbY3nf7G6t7SNeMTmeArNJQxv-DVA-ZcIFeqStnpYkhN_hf81153osLziyx74nMEpUFul6pJS73KXUw0YidqeGb8jX6PKp_VbNb55cMKl71a2ztB6lWwqGHCxWKw/s320/Screenshot+from+2020-03-28+10-05-40.png" width="320" /></a></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
A 'TestOSM' entry appeared in the 'Browser Panel', and when I dragged this to the map pane, suddenly I had a map. </div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<br /></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<style type="text/css">
p, li { white-space: pre-wrap; }</style></div>
<h2 style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
Epilogue</h2>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
My takeaway from this catalogue of problems is that the QGIS package offered by Ubuntu is </div>
<ol>
<li>Misconfigured, and</li>
<li>Obsolete</li>
</ol>
I did get it working, and I've documented what I needed to do above; but it's clearly some way behind the current 'stable release', which is 3.10.4.<br />
<br />
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
So I've spent a whole morning trying to install a more up-to-date version of QGIS. There are many repositories for more recent versions of QGIS out there on the Web, and many 'howto' articles explaining how to set them up and use them. I've tried many this morning, and my conclusion is that they're all, without exception, broken in one way or another. Some people do seem to have succeeded in getting a working install, but even their notes don't work. </div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
</div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
Furthermore, after doing that, it took an awful lot of work to sort out the mess and get back to a working 2.18.7. In summary, I believe it can be done, but it's not for the faint hearted.<br /></div>
<style type="text/css">
p, li { white-space: pre-wrap; }</style>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-51068903681229372742020-02-27T13:54:00.000+00:002020-02-27T13:54:48.093+00:00Putting data on the map<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiggiqgiiaxVRJIf5PSBEGz68iyG0RzHIX7r_Ud_P-3smNgkW9zqIf7B38DU8-wruTVYddhvJ8qmDPNh7T_gWLMaqUq87g08htkPOkxSozHdIpI0TDi2RrVicBtjk-rkzjBi1Q5-jwMW0o/s1600/GeoCSV-screenshot.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="706" data-original-width="1363" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiggiqgiiaxVRJIf5PSBEGz68iyG0RzHIX7r_Ud_P-3smNgkW9zqIf7B38DU8-wruTVYddhvJ8qmDPNh7T_gWLMaqUq87g08htkPOkxSozHdIpI0TDi2RrVicBtjk-rkzjBi1Q5-jwMW0o/s320/GeoCSV-screenshot.png" width="320" /></a></div>
A couple of weeks ago, someone came to me with a problem. She had data in a spreadsheet. She wanted to display it as a map, on a website. And she wanted to be able to do that dynamically - that is to say, she wanted the map on the website to update as the spreadsheet changed.<br /><br />So there were clear routes to several of the parts of this problem:<br /><br />1. If you need maps on a web page, you need <a href="https://leafletjs.com/">Leaflet</a> - it's a simply wonderful library;<br />2. If you want a spreadsheet that is live on the Internet, <a href="https://developers.google.com/sheets">Google Sheets</a> are a very good way to go;<br />3. Google Sheets allows export as Comma-Separated Values, and CSV is a very easy format to parse.<br /><br />I needed to do this quickly, so I started in my comfort zone, using Dmitri Sotnikov's <a href="https://luminusweb.com/">Luminus framework</a> and mixing in the <a href="https://github.com/day8/re-frame">Day8 re-frame framework</a>, in order to have a lot of built-in functionality client side. The joy of the <a href="https://clojure.org/">Clojure</a> development tools is that getting a working system is as easy as typing<br /><br /> <span style="font-family: "Courier New", Courier, monospace;">lein new luminus geocsv +re-frame</span><br /><br />And from that point on you can do your development with your system live, and can see the effects of every change you make immediately.<br /><br />So within a couple of days I had a polished wee system which looked good and pulled live data from a Google Sheets spreadsheet to populate a map, with different graphical pins for her different classes of records. It was highly reusable, since you can specify the document id of any public Google sheet in the query part of the URL, and that sheet will be rendered. The map automatically pans and zooms to focus on the data provided. Was I pleased? Well, sort of.<br /><br />Why was I not pleased? The deliverable component is an executable jar file, and it's 58 megabytes; in the browser, client-side, a page consumes 10 megabytes of memory. That seems huge for such a simple piece of functionality. I'd satisfied the requirement, but I hadn't satisfied myself. Also, of course, it needed you to be able to run a component on your web server, and many organisations with simple web hosting can't do that.<br /><br />
<h2>
Doing it again, better</h2>
So I started again. This time I did it entirely client-side, just ClojureScript, with no heavyweight libraries. Having solved the problem once, it was pretty easy to do it again, and within a day I had a system working. Furthermore, I added flexibility: you can supply a URL, as before; or as the text of the document element that the map overlays; or passed as a string to the function. You can see it <a href="https://simon-brooke.github.io/geocsv-lite/">here</a>.<br /><br />Was I pleased?<br /><br />No.<br /><br />Three things about this solution don't satisfy me.<br /><br />Firstly, the deliverable (jar archive, for direct comparison with the original) is still 2.9 megabytes. That's only 5% of the size of the original, and includes the whole of Leaflet, the whole of [Papaparse](https://www.papaparse.com/) - a client side CSV parser, and 398 different map pin images, but it still seems big. Page load - with the three maps on the demo page - costs around 5 megabytes in the browser.<br /><br />Secondly, because it's client-side only, it cannot know what pin images are available on the server; so if there is a category value in the data for which no pin image is available on the server, you will get a 'broken image' appearing on the map, which is ugly.<br /><br />Thirdly and most significantly, again because it's client side only, modern cross-site scripting protections mean that it cannot pull data from a spreadsheet hosted on another site - so it doesn't strictly meet the original requirement.<br /><br />
<h2>
Iterating again</h2>
I decided to look at whether I could make it smaller by abandoning the comfort of the Clojure environment and writing pure JavaScript. This led to a third iteration, geocsv-js, which you can see in action here. The amount of 'my code' in this version is far lighter - the output of the ClojureScript compiler for geocsv-lite comes to 6.6 megabytes uncompressed, whereas the pure JavaScript version is one file of just 8.8 kilobytes in 296 source lines of code (for comparison, the ClojureScript solution, geocsv-lite, comes to 372 source lines of code). One reason for the slightly larger size of the ClojureScript solution is that it has a better algorithm for panning and zooming the map to display the data actually entered, which I didn't port to JavaScript.<br /><br />But what is bizarre and I do not yet understand is that the deliverable is not smaller but bigger than the geocsv-lite deliverable, by almost twice - 4.7 megabytes - despite using identically the same libraries. Still more surprising, the memory consumption in the browser is also higher, at around 6 megabytes.<br /><br />What are the lessons learned? Well, the overhead of using ClojureScript is not nearly as much as I thought it was. There is something clearly wrong about the discrepancy between the size of the packaged deliverables - the pure JavaScript variant must be including third party data which the ClojureScript variant doesn't, although I haven't yet tracked down what this is - but the in-browser memory footprint is actually smaller, and the page load time is, as best as I can measure, identical at about five seconds.<br /><br />Was I satisfied now? Well, sort of.<br /><br />
<h2>
Merits and demerits</h2>
All three variants have merits. The first pulls the data directly from Google Sheets, which was the original requirement, and served a default pin image for any record category for which it didn't have a matching image. That made it a lot slicker to use, and more forgiving of user error. The two client-side-only variants cannot do those things, for reasons which I have not found ways to solve. But they don't need any server-side functionality beyond the dumb serving of files, so they're much easier to deploy; they are also less greedy of client side resources.<br /><br />
<h2>
One more time with feeling</h2>
One of the reasons why I kept on hammering at this problem was that I felt it would make a really useful extension for my wiki engine, <a href="https://github.com/journeyman-cc/smeagol">Smeagol</a>. I've integrated the JavaScript version, geocsv-js, and in doing that I've solved a number of problems. Firstly, the look and feel and content of Smeagol pages is flexible and easily configurable by the user, so it doesn't take a geek to set up a page with the content you want and a map of the data you want to show. Secondly, the Smeagol engine, because it sits server side, can pull data from remote sites, and because it doesn't interpret that data, there's no significant risk in doing that. Thirdly, again because it sits server side, it can deal with the issue of unknown images - and, because it's a wiki engine targeting less technical users, I've deliberately made it very graceful about how it does this.<br /><br />So now, instead of just a map on a web page, you get a whole, richly editable website, with existing extensions to integrate sophisticated data visualisation and photograph galleries as well as maps. And the cost of this? Surprisingly little more. A Smeagol page with one map uses exactly the same memory on the client as a geocsv-js page with one map, because Smeagol now only loads JavaScript for extensions actually being used in the page, and almost all of its own functionality runs server side. But even server side, the cost is not very much greater than for the full fat geocsv implementation - the deliverable jar file, which offers far more functionality than geocsv, is only 88 megabytes. Considering how much more usability and flexibility this offers, this is the version of geocsv I'd now offer, if someone came to me with the same problem.<br />Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-24741042092597411372019-12-25T11:41:00.001+00:002019-12-25T11:58:40.636+00:00World enough, and Time<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFdyQhSPNQWbzJ3yhVZ2ziyCWuFimOmHE-i7Youb0-frd7wCdkS6qis9OxNEWm5jtj37quDJ6R4DNwCjFLUsrQXuiiMJeL7xvaaRGimW3yjm86Qv245Dnw4jhv8IN7sM9hbxJhey_5zgk/s1600/14480298273_4c2941609d_o.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="960" data-original-width="640" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFdyQhSPNQWbzJ3yhVZ2ziyCWuFimOmHE-i7Youb0-frd7wCdkS6qis9OxNEWm5jtj37quDJ6R4DNwCjFLUsrQXuiiMJeL7xvaaRGimW3yjm86Qv245Dnw4jhv8IN7sM9hbxJhey_5zgk/s320/14480298273_4c2941609d_o.jpg" width="213" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://blog.longnow.org/02007/06/05/orrery/">Orrery of the Long Now clock</a></td></tr>
</tbody></table>
Last night I listened to <a href="https://player.fm/series/politics-galore-a-scottish-politics-podcast/politics-galore-ep70-19dec19">an episode of the Politics Galore podcast</a> which utterly depressed me: not because the content was depressing (although it was), but because the analysis was so shallow. It analysed Scotland's current dilemma solely in terms of the Westminster political game played by Westminster's first past the post rules. It suggested that the next independence referendum could be, and tactically should be, delayed until the late 2020s, as though nothing in the world would change in the meantime.<br />
<br />
Human beings are programmed to believe that nothing much in the world, on a macro scale, will change very much from one year to the next. We call this inductive reasoning, and over the past million years it's served us pretty well. On the whole, tomorrow has been more or less like yesterday; on the whole, next year has been more or less like last. And for most of that time, what lay over the horizon was literally unknowable: oncoming crises, no matter how inevitable, could not be predicted or prepared for.<br />
<br />
This is no longer the case. Multiple interlocking crises — the changing climate, the mass extinction of species, the concentration of wealth and power — are changing the world rapidly. We can now see over the horizon; we do now have the tools.<br />
<br />
Consequently, you can't now discuss Scotland's politics in isolation from our geopolitical context. I'd identify several key factors:<br />
<ol>
<li>There is a strong risk that the UK will diverge sharply from EU over the few months after December 2020;</li>
<li>There is a strong risk that climate change is running substantially faster than IPCC have allowed for, and that action to mitigate is lagging far behind;</li>
<li>The new digital propaganda tools by which well-funded actors can manipulate elections are rapidly maturing; and consequently</li>
<li>There is a strong risk that the English-speaking world is sliding towards something resembling real fascism or at least oligarchy.</li>
</ol>
Both Scotland and the UK are bit-players in all this; we don't move the tides of history, we have to ride them. The attack by Russia on electoral processes in the UK is not primarily aimed at the UK so much as at creating chaos and turmoil across the West. In that sense the UK's only geopolitical significance is as a keystone in the defences of the European area of stable peace against chaos, and it's a keystone which no longer has any structural integrity.<br />
<br />
For clarity, in saying 'the attack by Russia' I'm not saying that the attack is made solely by Russia, nor that the attack is in the long term interests of the Russian people or state. Rather, it's an attack by an emerging oligarchy, which currently controls Russia. Nor is this oligarchy monolithic; rather, it's made up of a class of ultra-rich individuals who very largely do not see themselves as a collectivity and who very largely do not coordinate their actions, but nevertheless each act 'rationally' to protect and enhance their accummulated wealth and influence.<br />
<br />
They include, but are not limited to, those who profited from the ill-managed privatisations in the collapse of the Soviet Union; absolute rulers of oil states in the Arabian peninsula and elsewhere; the hereditary aristocracy of Great Britain, including the House of Windsor; 'tech entrepreneurs' including Gates, Ellison, Zuckerberg, Brin, Page; the financial services elite; and the controllers of major organised crime cartels. These groups, of course, socialise, intermarry, interpenetrate, overlap; that is the nature of a collectivity.<br />
<br />
Surrounding the oligarchs themselves — who may or may not be consciously malign — there's a penumbra or Oort cloud of actors who clearly are malign: people like Murdoch, Bannon, Yiannopoulos, Rees Mogg. They are, in a sense, the intellectuals or ideologues of the oligarchy, forging an ideology which allows the oligarchs themselves to 'rationally protect and enhance their wealth and influence', by undermining and destroying the democratic institutions which would otherwise allow mass action to erode those accummulations. But they're not oligarchs themselves, although they may aspire to be; they're hangers on.<br />
<br />
One very worrying thought <a href="https://eand.co/how-capitalism-torched-the-planet-by-imploding-into-fascism-6d49db3720d5">made powerfully by Umair Haque</a>, when he says "climate change accords perfectly with the foundational fascist belief
that only the strong should survive, and the weak — the dirty, the
impure, the foul — should perish", is that the oligarchs (or their ideologues), rather than putting their shoulders to the wheel to resist climate change, may consciously be seeking to accelerate it.<br />
<br />
To say 'but we can't resist these forces' is probably true, but that way leads simply to despair. If human life on earth is to continue, people (including Scotland as a bit-player) must resist these forces, now. It isn't sufficient to go on playing the Westminster game, and, in particular, there isn't time to think about the long game. As John Maynard Keynes said, but with particular force now, in the long run we're all dead. <br />
<br />
Pulling focus back to Scotland, what worries me is that the SNP's analysis is as shallow as Politics Galore's. Like the podcast, they believe that the future will be much like the past; like the podcast, they ignore the turbulent geopolitical forces which mean it won't be. <br />
<br />
Salmond was a risk-taker; Sturgeon is not. She will play it safe. As the tides of history tear our society and our economy apart, she will wait irresolute for a 'perfect moment' which will never come. The merit of Angus MacNeil's 'Plan B' was not primarily that it actually was a strategy (Sturgeon's wistful hope that she can somehow extract a Section 30 order from a triumphant English Tory government is not), but that it gave us a fresh bite at the cherry with each successive Westminster election. <br />
<br />
But there (probably) isn't time. Measurements in Greenland and the Antarctic show that the Climate Emergency is moving much faster than predicted, and meantime the oligarchy and its ideologues are honing its anti-democratic toolkit. <br />
<br />
Scotland alone cannot swing the UK back to a path of sanity. We're structurally weak, and, as Johnson gerrymanders the electoral system to lock in Tory majorities, we'll remain structurally weak. Our escape route is to bind ourselves to the European bloc (EFTA or EU), and then to work to strengthen — and radicalise — that bloc; but we cannot do that without independence. <br />
<br />
We don't have, for reasons I've given above, much time. You would not have been wise, in 1935, to make any political plan for three electoral cycles hence: the tides of history would have washed it away. 2020 will be 1935 on steroids.<br />
<br />
I still believe — and believe strongly — that an independent Scotland could be a positive actor on the world stage, both in seeking to build peace, justice and stability, and in seeking to resist climate change and slow the rate of extinctions. But time is short; the crises are urgent and rapidly becoming more so. If we cannot achieve independence within a very short time frame, it will be time to abandon indulgences like constitutional tinkering and seek to build alliances to defend our planet. Indeed, it may well be that time already.<br />
<br />
An independent Scotland on a dead planet would be a very hollow victory.Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-30054510053104480032019-10-25T11:31:00.002+01:002019-10-25T11:45:33.504+01:00Party Party<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuCRI8S_oSp5gU6963d8j7wTwfGfNrTQpoajFboo7OI4iWWPleXXV3ckuwWqurXIZDMnk0-PpRTXew2cOHX2tJ5J3HlncfHeoA3YboTqanHVTbn3VN9wxpYY5G5I8Qmg6PoBfBTuXl41A/s1600/saltire_red_1024.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="682" data-original-width="1024" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuCRI8S_oSp5gU6963d8j7wTwfGfNrTQpoajFboo7OI4iWWPleXXV3ckuwWqurXIZDMnk0-PpRTXew2cOHX2tJ5J3HlncfHeoA3YboTqanHVTbn3VN9wxpYY5G5I8Qmg6PoBfBTuXl41A/s320/saltire_red_1024.png" width="320" /></a></div>
Let's start this essay with a confession that I may have been badly wrong. I have been saying for some time that I did not believe that Nicola Sturgeon would actually call a second independence referendum; rather, that she'd use Westminster's expected rejection of an Article 30 order to indefinitely postpone one. Well, possibly, I was wrong. I hope I was wrong. Both <a href="https://www.thenational.scot/news/17992136.join-sturgeon-demand-indyref2-nationals-rally/">The Nationa</a>l and the SNP now say that Sturgeon will announce a concrete date for IndyRef 2, in 2020, at a rally in Glasgow on Saturday 2nd November.<br />
<br />
So, good. Sometimes, it's nice to be wrong.<br />
<br />
However, then we move onto the campaign. I expect the Scottish Government to produce a white paper, as they did in 2014, setting out a prospectus for independence. And I expect that prospectus to be, as it was in 2014, broadly a steady as she goes, don't rock the boat prospectus: a prospectus for a broadly technocratic, social democratic Scotland, more closely aligned to the interests of <a href="https://blog.journeyman.cc/2018/07/the-growth-corruption.html">Andrew Wilson's clients</a> than to those of the broad majority of Scots.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDHEJXnpGGDY-ouVAo5nVadnTOKKiKZYBuvLVTWMimnzSQ-ARtDzpStnIWoLSrpn9AuVFviJjKp-B9L2aQhPhgplHI7rsqSN8crodOERR9lJhePFBK3R61lNU_vT2Tqywy4l4EThLFtIo/s1600/britainisfortherich.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="263" data-original-width="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDHEJXnpGGDY-ouVAo5nVadnTOKKiKZYBuvLVTWMimnzSQ-ARtDzpStnIWoLSrpn9AuVFviJjKp-B9L2aQhPhgplHI7rsqSN8crodOERR9lJhePFBK3R61lNU_vT2Tqywy4l4EThLFtIo/s1600/britainisfortherich.jpg" /></a></div>
I do not believe the white paper was the critical vote winner in 2014. I think the broad vibrancy of the Yes campaign, the thousand flowers that bloomed, and in particular (for me, anyway; but I think for many others) the <a href="https://www.radicalindy.org/">Radical Independence Campaign</a>'s slogan 'Britain is for the rich; Scotland can be ours' were more influential. Be that as it may...<br />
<br />
Supposing there is a referendum, supposing Yes wins, supposing the UK government honours the result. There's a Holyrood election on <span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">6 May 2021, which will undoubtedly happen before negotiations - with the UK, with the EU, with EFTA - are completed, and whose results will strongly influence the outcome of those elections. </span></span><br />
<br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">If, as the SNP assumes - the SNP is elected to govern, especially if it is elected to govern with a majority - we will see an independent Scotland built in the image of that white paper: which is to say, not very different from the United Kingdom we are leaving.</span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"><br /></span></span>
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">The Queen will, almost certainly, be the head of state. Lords will still lord it over us. The land will still belong to the rich. Our system of democratic governance will remain highly centralised, with enormous, profesionalised 'local government' units administering territories <a href="https://blog.journeyman.cc/2007/05/of-size-and-governance.html">each larger than one sixth of all independent countries in the world</a>. The capitalist system will remain entrenched, owning most of the nation's industry and infrastructure. We'll even keep the pound - for the time being, at any rate - and that will prevent us rejoining the EU.</span></span><br />
<br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">I don't believe that's the Scotland Scotland wants to be. I don't believe it's even the Scotland most members of the SNP want to see. Independence which changes nothing is worth nothing.</span></span><br />
<br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">So what do we do about it? </span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"></span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"><a href="https://www.lesleyriddoch.com/">Lesley Riddoch</a>, at a fringe event of the SNP conference, suggested she'd start a new party to challenge the SNP from the decentralist left. She slightly rowed back from that in <a href="https://www.thenational.scot/news/17973214.lesley-riddoch-might-make-new-party-indyref2/">her column later that week</a>, but the idea is a sound one. In order to challenge the SNP's corporatist, technocratic vision at the 2021 election, we will need a new party. </span></span><br />
<br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">If it's a brand new party, of course, it's ridiculous to suppose that it can sweep to power in one bound. But that is not the point, as Lesley has said: the point is that the SNP is vulnerable from the left, and it knows it. The party has triangulated right so far and so fast in the past six years that it's left most of its members, let alone its supporters, behind.</span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"></span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">A clear challenge from the left will push the SNP leftward. A strong challenge from localism should cause the SNP to at least reconsider its centralist bias.</span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"></span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">The Holyrood electoral system - which I'm assuming we'll still use in 2021, since there is no current strong pressure to change it, and there isn't much time - gives space for small with broad support across Scotland. That 2021 government will be critical to the shape of Scotland for a generation at least, since it will supervise the process of agreeing a constitution. It is critically important to have influence in it.</span></span><br />
<br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">A government of all the talents in which Lesley joined Andy Wightman, John Finnie, Maggie Chapman from the Greens, Tommy Sheppard, Alison Thewlis, Mhari Black, </span></span><span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">Mairi Gougeon, Jeanne Freeman</span><span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"><span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"> and </span></span> Mike Russell from the SNP would build a far more interesting Scotland than our current SNP cabinet.</span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"></span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">And if we're to have such a party in place - if a new party is, indeed, needed, because it may be that what we should do is join the Greens - we can't wait, as Lesley suggested, until after independence. We need to start putting a platform together now. Yes, we can lift a great deal from work already done by <a href="https://www.scotsman.com/arts-and-culture/books/book-review-blossom-by-lesley-riddoch-1-3105570">Lesley herself</a>, by <a href="https://bellacaledonia.org.uk/2018/03/15/how-to-start-a-new-country/">Common Weal</a>, Radical Independence and others, but we would need a clear, coherent platform, and that would need to be constructed.</span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"></span></span><br />
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd">I think it's time to party.</span></span>
<span class="ILfuVd NA6bn c3biWd"><span class="e24Kjd"><br /></span></span>Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-92138032713105499352019-08-14T09:38:00.000+01:002019-08-14T09:40:43.931+01:00Eagles, and governance<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieVvZC2RUAzdV54opxBpXD7rdlgFquqLo7QyMaWMA8V0ZybQ4Qz4OuQhGE8NaFbre2xHjxSo5EZyN_GS9hQCeKf5O7ybqLZe3izCQgT0UkFc7rmItvsj_r1HMMJW9INtQzZw7Px0xofpM/s1600/eagle-fentrap-cnp-aug-2019.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="488" data-original-width="900" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieVvZC2RUAzdV54opxBpXD7rdlgFquqLo7QyMaWMA8V0ZybQ4Qz4OuQhGE8NaFbre2xHjxSo5EZyN_GS9hQCeKf5O7ybqLZe3izCQgT0UkFc7rmItvsj_r1HMMJW9INtQzZw7Px0xofpM/s320/eagle-fentrap-cnp-aug-2019.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Young eagle flying with trap clamped to its leg</td></tr>
</tbody></table>
<div>
Here is the text of my letter to the First Minister regarding the wildlife persecution on grouse moors crisis. I strongly suggest you write to her too, but please write your own letter - copy/pasted letters tend to get ignored.</div>
<div>
</div>
<div>
<i>Dear First Minister</i></div>
<div>
<i><br /></i></div>
<div>
<i>The SNP's craven
inability to face down landed interests has always disappointed and
puzzled me, but the developing crisis over the behaviour of grouse moor
managers and the failure of your government to intervene in it is
reaching the stage where it risks undermining the whole independence
project.</i></div>
<div>
<i><br /></i></div>
<div>
<i>You will (I hope) be aware of the
illegal slaughter of Scotland's iconic wildlife on the grouse moors,
from eagles to wildcats. You will (I hope) be aware that <a data-saferedirecturl="https://www.google.com/url?q=https://raptorpersecutionscotland.wordpress.com/2019/08/13/young-golden-eagle-flying-around-cairngorms-national-park-with-an-illegal-trap-clamped-to-its-leg/&source=gmail&ust=1565857979595000&usg=AFQjCNEzxDeWs4twPWBgebZLufgoyhDJSQ" href="https://raptorpersecutionscotland.wordpress.com/2019/08/13/young-golden-eagle-flying-around-cairngorms-national-park-with-an-illegal-trap-clamped-to-its-leg/" target="_blank">there is today a young eagle flying in Aberdeenshire</a> with an illegal trap clamped to its leg.</i></div>
<div>
<i><br /></i></div>
<div>
<i>Now, <a data-saferedirecturl="https://www.google.com/url?q=https://petition.parliament.uk/petitions/266770&source=gmail&ust=1565857979595000&usg=AFQjCNHh-gN0B7zahoU91RClO4VO8cRQuQ" href="https://petition.parliament.uk/petitions/266770" target="_blank">we have a petition</a>,
addressed to the Westminster parliament, asking it to intervene in a
devolved matter. which in less than one day has gathered more than
16,000 signatures, and which is highly likely to gather several hundred
thousand. You will see from <a data-saferedirecturl="https://www.google.com/url?q=https://petitionmap.unboxedconsulting.com/?petition%3D266770&source=gmail&ust=1565857979595000&usg=AFQjCNHWKtXgAAAacwIe4OXmtCTJWcPF4w" href="https://petitionmap.unboxedconsulting.com/?petition=266770" target="_blank">the map</a> that a very large proportion of these signatures have come from remote rural Scotland - where you cannot afford to lose votes.</i></div>
<div>
<i><br /></i></div>
<div>
<i>In
these febrile times, do you really want Westminster holding a debate on
the failure of your goverment? Do you want grandstanding Tory ministers
- the fragrant Alister Jack - having a popular excuse to take powers
back from Holyrood because of Holyrood's failure to legislate
effectively?</i></div>
<div>
<i><br /></i></div>
<div>
<i>We have left an open goal, and in
the run up to the next trial of strength on independence we do not want
the Unionists to be able to say, "well, we trusted them to care for
their own woldlife but they wouldn't do it; why should they be trusted
with independence?"</i></div>
<div>
<i><br /></i></div>
<div>
<i>It's a good question, and one which will be hard to deal with on the doorsteps.</i></div>
<div>
<i><br /></i></div>
<div>
<i>Please
act now, by enacting a bill which places a duty of care on estate
owners to prevent wildlife crime on their land, with penal sentences on
the beneficial owner if they fail to do so.</i></div>
<div>
<i><br /></i></div>
<div>
<i>Yours sincerely</i></div>
Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-20065968353067474272019-06-08T12:41:00.001+01:002019-06-08T12:56:21.467+01:00The quest for Zireael<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP3mkxmAB8cKV0-LKCSNla0W-QyS72EEP1SJjOQGkS3YWxEwVXkxgX9IxHGofsGnkwccOgT74UZa0-51WgmhKg5NEX2ZZXkjwDN_3b8_zzW7cwPxccX6HNDXxFbxJ2EB7vOURoTOli8SM/s1600/zireael.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="540" data-original-width="960" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP3mkxmAB8cKV0-LKCSNla0W-QyS72EEP1SJjOQGkS3YWxEwVXkxgX9IxHGofsGnkwccOgT74UZa0-51WgmhKg5NEX2ZZXkjwDN_3b8_zzW7cwPxccX6HNDXxFbxJ2EB7vOURoTOli8SM/s320/zireael.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ciri draws her sword Zireael for the first time</td></tr>
</tbody></table>
Over the past six weeks I've completed my second full run through of the <a href="https://en.wikipedia.org/wiki/The_Witcher_3:_Wild_Hunt">The Witcher 3: Wild Hunt</a>, and I want to record my thoughts about it.<br />
<br />
I set out with three main goals: to follow the '<a href="https://witcher.fandom.com/wiki/Triss_Merigold">Triss</a>' path rather than the '<a href="https://witcher.fandom.com/wiki/Yennefer">Yennefer</a>' path; to rescue the <a href="https://witcher.fandom.com/wiki/Phillip_Strenger">Bloody Baron</a>'s wife, and generally explore that story more fully; and to win as many allies as possible for the battle at <a href="https://witcher.fandom.com/wiki/Kaer_Morhen">Kaer Morhen</a>.<br />
<br />
Regarding Triss versus Yennefer: these are the only two major love interests for <a href="https://witcher.fandom.com/wiki/Geralt_of_Rivia">Geralt</a> in Witcher 3. In many ways they're similar: both sorceresses, both ambitious, both powerful politically, both manipulative, both prepared to use intimacy - and sex, although I'd like to draw a distinction here between the two - transactionally to achieve their objectives. And they're friends. In the previous Witcher games, Yennefer has not been present as a character, but in the novels, she is clearly Geralt's primary (but not exclusive) sexual partner, and it was mainly for that reason that I followed her path on my first run through. By the end of it I was pretty confident that this was a mistake, and, having now played through the Triss path, I more than ever satisfied that she is the better of the two choices.<br />
<br />
Yennefer is more powerful and more glamorous, but has much more ambiguous morality. She willingly uses necromancy, and is unashamed at destroying treasured and ancient religious sites to draw power for her magical workings. I can think of no occasions either in the novels or in the books where Yennefer behaves in a way that is unambiguously generous. Even her care for Geralt's stepdaughter <a href="https://witcher.fandom.com/wiki/Ciri">Ciri</a> is at least plausibly an attempt to gain influence over Ciri's very substantial power. By contrast, Triss refuses to use necromancy, and doesn't destroy other people's artifacts in the use of her power (that I can remember); she behaves with genuine generosity at least some of the time, including towards people there's no reasonable reason to expect will ever be able to repay it.<br />
<br />
But both in the novels and in the games, there's a third choice of someone who seems better (and a better fit for Geralt's character, at least as I interpret it) than either, and that's <a href="https://witcher.fandom.com/wiki/Shani">Shani</a>. Shani is not a sorceress, and not powerful. Instead she's a doctor of medicine, highly altruistic, extremely brave, tolerant of and generous to everyone. But in the Witcher 3 she appears only as a bit part - a potential casual shag - in the Hearts of Stone extension. That seems to me a waste of a good character, frankly, who could have made the main plot much more interesting and thus thrown light on the characters of the other two.<br />
<br />
Whatever: when your choice is Yennefer or Triss, Triss is the warmer, the more supportive, the more caring, possibly the more sensual; although arguably Yennefer is the more glamourous, more challenging, the more exciting, the more acerbic, possibly the more sexual. My choice is Triss. I think it's the better choice.<br />
<br />
The Bloody Baron is probably the most developed and the most narratively interesting side-quest in The Witcher 3. In my previous play through I had left his wife living with the witches in the bog, clearly mad, but caring for the children and having, it seemed to me, some quality of life. I took the view that while it wasn't a good situation, it was better than the other available alternatives. This run through, I decided to try to see whether I could reconcile the Baron with his wife, and I sort-of succeeded. The Baron and his wife (and to my great surprise, also his daughter) were reconciled after the crones were defeated; however, it didn't end well. Because I had released the spirit of the forest, Anna was cursed, and died. The Baron later killed himself. There is apparently at least one more, and significantly better, ending to this story, but I haven't found it yet.<br />
<br />
As I said above, I set out to recruit as many allies as possible for the fight at Kaer Morhen. The Nilfgardian cavalry didn't actually appear, but had been despatched; otherwise, I had <a href="https://witcher.fandom.com/wiki/Keira_Metz">Keira Metz</a>, <a href="https://witcher.fandom.com/wiki/Hjalmar_an_Craite">Hjalmar an Craite</a>, <a href="https://witcher.fandom.com/wiki/Mousesack">Ermion</a> the druid, <a href="https://witcher.fandom.com/wiki/Letho">Letho</a> the Kingslayer, both Triss and Yennefer, <a href="https://witcher.fandom.com/wiki/Zoltan_Chivay">Zoltan Chivay</a> (of course), and <a href="https://witcher.fandom.com/wiki/Vernon_Roche">Vernon Roche</a> and <a href="https://witcher.fandom.com/wiki/Ves">Ves</a>. What I hadn't thought through was that there were bound to be very considerable tensions in that group, notably between the Kingslayer and the Temerian resistance - that was an interesting touch, and shows how carefully thought through the whole game is!<br />
<br />
A pleasing moment was that, after the battle, Keira (who in my previous run through had been burned at the stake in Novigrad as a heretic), went off with the witcher Lambert on a quest, and we later hear that they'd married. While I hadn't previously felt particularly responsible for Keira's death, this definitely seems a better ending (for both characters).<br />
<br />
However, related to that was one of my unexpected failures in this run: I didn't get into the narrative sequence in which <a href="https://witcher.fandom.com/wiki/Radovid_V">Radovid</a> is killed, and I didn't succeed in suppressing the religious intolerance in Novigrad; consequently, when Nilfgard was essentially defeated (which I had been intending), the Redanian army swept into Velen with their witch hunters and wreaked even worse desolation than I remember from before.<br />
<br />
Whether there's any relatively 'good' geopolitical ending to the story I doubt: Nilfgard winning (as in my first run through) and Redania winning (as in this one) are both pretty appalling, but if there's a way - I don't know whether there is, and I don't want to be told because I shall make another attempt some day - of defeating both Redania and Nilgard, then I suspect that Velen, Temeria and probably Redania as well would become a seething mass of competing robber barons and warlords, with conditions for the peasantry as bad as ever.<br />
<br />
It occurs to me that I have not explored what would happen if one encouraged Ciri to reconcile with her father, and thus possibly become empress; this might make for a better ending, geopolitically, for the world as a whole, perhaps; but it doesn't seem to me that it would be a better ending for Ciri.<br />
<br />
I have to say here that from the point of the Battle of Kaer Morhen on, the whole story was radically different from what I remember from my previous playthrough - and I saw the beginnings of (but didn't complete) still further loops in the plot which it would be really interesting to explore some day. There is quite extraordinary richness in this storytelling.<br />
<br />
I don't know whether there's any narrative link between the choice between Triss and Yennefer (of course you don't have to choose; you could play as a chaste witcher and bed neither) and the choice between Redania and Nilfgard. And, as I say, in this run through I didn't in any sense side with Redania - I didn't avoid the quests which would lead into the area of the story where that choice would be made, but that wasn't because I was consciously avoiding it.<br />
<br />
On Skellige, I sided with Cerys an Craite, as I had before. To my mind, she is just a much better candidate for the throne than her brother. Consequently, I still haven't seen how, if at all, choosing Hjalmar would alter the story.<br />
<br />
At each point where I had an opportunity to influence Ciri's choices, I chose to support her in making her own choice. That, I think, is similar to what I did before; it feels natural to me, and it also feels to me to be what Geralt would naturally do. But in the ending, Ciri went into the locked tower to bring an end to the white frost, something I don't remember from my previous run through, and in that scene I saw her recall all the times in the story when I'd taken her side and backed her up. That seemed to me extraordinarily poignant and positive, and very sensitively done. Bravo! Afterwards, when I told her father that she was dead, I genuinely believed it was so, genuinely mourned it, and genuinely wondered what misstep I'd taken; so the very end, where I was reunited with her and gave her her witcher's sword (something which definitely didn't happen on the last run) was a wonderful surprise.<br />
<br />
To criticise - for no work of art is perfect - as I've written before <a href="https://blog.journeyman.cc/2018/10/sex-iron-maiden-and-npc-repertoire.html">many</a> <a href="https://blog.journeyman.cc/2015/02/voice-acting-considered-harmful.html">times</a> before, the poverty of repertoire of the characters is, to me, very disappointing, and it does not seem impossible given the current state of the art that they could be given far greater depth of narrative. Whether that would take you into an uncanny valley I don't know, but I would like to see it tried.<br />
<br />
The other major criticism I have is that - given that I play for story, not 'to win' - the big set piece fights really don't work for me. They are, for me, just boring. I'd much rather see the climax of the story through interaction with characters than just by great slash fests.<br />
<br />
However, these are details; and they're details from the point of view of my personal taste. <br />
<br />
So, once again: The Witcher games collectively, but especially The Witcher 3, are quite extraordinary works of cultural achievement, story tale on an epic scale which I don't believe is surpassed anywhere in any medium. If you have not experienced it, you have missed yourself.Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-82474478195188329992019-05-31T13:27:00.000+01:002019-05-31T13:37:44.617+01:00No-one here gets out alive<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT-zYYjYx195zm-mU1zgIEQKbblsYYRMmC_rnjao_OpaYS7kJ-4wLcQ0DsgLrpImv1DiGgJRKv8cq7DXH0X97v_g0oefD2b1ogohDA-m3ItT7fbZn_dk14KvgQNgGIysGACpfrGdrMo90/s1600/DSC_0251.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT-zYYjYx195zm-mU1zgIEQKbblsYYRMmC_rnjao_OpaYS7kJ-4wLcQ0DsgLrpImv1DiGgJRKv8cq7DXH0X97v_g0oefD2b1ogohDA-m3ItT7fbZn_dk14KvgQNgGIysGACpfrGdrMo90/s320/DSC_0251.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Avis (left) and Zoe (right) taken on Christmas Eve 2017.</td></tr>
</tbody></table>
My mental health, which had already been poor before my lover Avis died of cancer in July last year, has collapsed utterly since the suicide of my niece Zoe in November. Somehow I have to find my way back (or die, which would be easier). This essay is an attempt to plot a plan for the first option.<br />
<br />
Partly as a consequence of my mental health collapse, my last remaining work contract is looking very shaky, and may not continue. I don't even really want it to continue, even though without it I have no income at all. And I don't believe I am now well enough to seek new paying work; I don't believe it's reasonable to expect that I will be well enough in the even moderately near future. But when I do seek new paying work, I need to have some story about what I was doing this year.<br />
<br />
Finally, I'm not currently receiving any benefits, and I'm not well enough to apply for benefits. Zoe (before she died) started an application on my behalf, and my community psychiatric nurse has continued that application, but I have no faith in anything actually being paid. Fortunately, I shall inherit what little Zoe had, and I may be able to sell about £1,000 worth of cattle this autumn (if I'm well enough) but that isn't enough to keep me alive for a year.<br />
<br />
What I need to recover health is a series of successful challenges, gradually increasing in difficulty. If I overface myself and fail, I end up further down the slope; things get worse. So it's important to pick challenges I can succeed at. So far so good.<br />
<h2 id="survey-of-the-battlefield">
Survey of the battlefield</h2>
<h3 id="cattle">
Cattle</h3>
I have cattle. As I've had three calves born in the past fortnight, I now have ten cattle. Of these, one is ready for slaughter but because his paperwork is not in order cannot be sold. Three are last year's calves, and their paperwork is in order, so potentially they can be sold, but they're hybrids and not worth much except as meat, and they won't be ready for slaughter until this autumn at earliest. One of them, Draeg, is male and has not been castrated, so I urgently need to separate him from my cows (and, ideally, get him castrated). I do not want any of my three cows to get pregnant this year - lovely as calves are, I have too many cattle and could do with a year without them.<br />
So the overall plan is<br />
<ol style="list-style-type: decimal;">
<li>to slaughter Beelzebub this winter (or when I have sufficient freezer space, whichever is the earlier) - this I'm fairly confident I can do;</li>
<li>sell the three yearlings this autumn, either for slaughter or for fattening; they'll be worth at best a very few hundred each (and could fetch much less);</li>
<li>keep the three cows and their calves-at-heel.</li>
</ol>
Selling cattle is something I have not yet done, and I am not at all confident I can do it.<br />
<br />
<h3 id="the-cattle-shed">
The Cattle Shed</h3>
For the past four years at least, I've been planning to build a cattle shed, and the plan has always been to get it finished before mid July of each of those years, so that I can put the year's hay harvest into its hay loft. The current state of play is that most of the materials are bought and paid for, the foundations and floor are in place, and most of the blocks for the lower walls are on site. Getting the blockwork up is probably about a fortnight's work, and it's something I can now definitely do: the last things blocking it were resolved yesterday.<br />
<br />
But sawing the timber for the superstructure is not done, and building the frame can't happen until the timber is sawn. I cannot saw the timber alone, and the sawmill I'd assumed I'd be able to borrow I now probably can't borrow. So there are two options: one, abandon the timber I've already bought and buy new, sawn timber; or two, hire someone to mill the timber. I definitely cannot afford either of these. Even if I can get timber really soon, building the frame is at least a month's work, and completing the build at least another's. It's now the very end of May. So there's no way I can now get the shed finished in time for hay harvest this year. It isn't impossible that I could have it finished for winter, and having it finished for winter actually would make life easier even if the hayloft were empty (or even unfinished).<br />
<br />
<h3 id="hay">
Hay</h3>
I've currently got my cattle in my bottom park; this leaves the middle and upper parks clear to grow hay. However, I'm not confident they've really got enough grass, and in any case I need to get Draeg away from the cows (or castrated) before they come into season again, which is pretty damn soon. So either I need to move my male cattle into the upper park, or else onto my neighbour Alice's land, with her permission - she has the grass. If I move the male cattle into my upper park, it makes work on the cattle shed building site vastly more difficult.<br />
<br />
If all I am keeping over next winter is the three cows and their calves at heel, then the middle park should produce enough hay for that, assuming the winter is not too bad. But I'd really like to be able to mow the upper park as well, just as insurance.<br />
<br />
All my hay making equipment needs quite a lot of maintenance, which I had planned to do over the winter and just have not been well enough to. If it is to be used there is at least a fortnight's work on that. However, the baler is <i>almost</i> ready to go, and if I can bale for James, I can get him to mow for me as a trade.<br />
<br />
If I don't have the cattle shed up in time (and that is now virtually impossible), I can store hay in the old byre, although that's increasingly decrepit and in any case a hassle. So hay actually can be done. But also, in the last analysis, enough hay for three cows for the winter would not be enormously expensive to buy. Hay is not a major problem.<br />
<br />
<h3 id="software">
Software</h3>
Being someone who is reasonably good at writing complex software is an important part of my identity. At present I am not that person, because my attention span and concentration are mince. I feel that I need to gradually build back to the point where I am that person. One of the problems are that I have too many projects on the go, and am much better at starting new projects than at working steadily and consistently on existing ones. The current projects are:<br />
<ol style="list-style-type: decimal;">
<li><b><a href="https://github.com/salesagility/SuiteCRM-Outlook-Plugin">Outlook add-in</a></b> for SalesAgility's SuiteCRM product; this is the only paying work I currently have (and it doesn't pay much);</li>
<li><b><a href="https://github.com/simon-brooke/youyesyet">Project Hope</a></b>, a voter intention/canvassing system for Indyref2, which is more than half finished;</li>
<li><b><a href="https://github.com/simon-brooke/the-great-game">The Great Game</a></b>, a very large open world game project;</li>
<li><b><a href="https://github.com/simon-brooke/post-scarcity">Post Scarcity</a></b>, a software environment for the massively parallel computers which must, I believe, be the future of computing.</li>
</ol>
Taking these one by one:<br />
<br />
The SuiteCRM <b>Outlook add-in</b> is not something I enjoy working on or would choose to work on, although I do appreciate working with the folk at SalesAgility I work with on it. However, I am increasingly not well enough to do it, and the strains of the project are not contributing to my mental health. Also, there are quite considerable costs in terms of software subscriptions involved in working on it; it is the only paid work I have, but even so it barely washes its face. If SalesAgility do not decide to drop the project, I probably ought to withdraw from it.<br />
<br />
I have no confidence a second independence referendum will ever be held; it seems to me unlikely. The SNP will not go ahead without a Section 30 order from Westminster, and I can see no prospect at all of Westminster ever granting such an order. So <b>Project Hope</b> is probably useless. Even if it were useful, it is no use having such a system if the only person who can support it is an unreliable madman. So if the project is to continue, it needs help which in my present state I can't recruit: it needs a project manager, at least one additional developer, at least one evangelist, and, ultimately, a group of people to train canvassers and analysts to use it.<br />
<br />
Nevertheless, if Project Hope could be finished, it would have real benefits:<br />
<ol style="list-style-type: decimal;">
<li>It would help win a second independence referendum, if one were held;</li>
<li>Even if another independence referendum is never held, it would help with canvassing in other referenda and elections for any organisation which chose to use it;</li>
<li>It would be a solid and impressive piece of work which would form a key part of my CV when next I am well enough to seek paid work.</li>
</ol>
This is work in my core competences, in a software environment in which I am extremely comfortable, which could be genuinely useful in the real world. Rationally, it is probably the best candidate. But, without help, I cannot do it.<br />
<br />
<b>The Great Game</b> is a fairly sketchy plan to build a game which would address what I perceive as many of the failings in modern computer games. It is vast and far beyond the capability of any one person to build. However, potentially, subsystems of it, especially the merchant subsystem and the gossip subsystem, could become libraries which could be sold to other game developers for use in their games; in other words, despite the overall project being ludicrous in scope, there is a potential here for a commercial business.<br />
<br />
However, for that to be the case these modules would have to be broken out into libraries which could be called efficiently from C++ or similar code, and ideally integrated with one or more of the more common game engines.<br />
<br />
The work which I've done on it so far is prototype work on algorithms for merchants and gossip.<br />
<br />
<b>Post Scarcity</b> is even more ludicrously ambitious: to design a software environment - an operating system, if you like - which would make as yet undeveloped computers of unprecedented power tractable and useful. It's necessarily being done in very low level languages which are not my forte, and its present state is bogged down in hard-to-trace bugs. It would make a great PhD project for someone, but possibly not me. However, if I could focus on it, it would be very good mental exercise, and like eating an elephant, it can be done in teaspoonfuls.<br />
<br />
<b>In summary</b> I need to focus on one project and largely abandon the others. Project Hope is rationally probably the best choice, but I can't make progress on my own and don't know how to recruit help. The Great Game (or, more specifically, its marketable subsystems) has the benefit of being something I can make progress on without outside help.<br />
<h2 id="plan-for-the-campaign">
Plan for the campaign?</h2>
So it looks to me as though my best plan is<br />
<ol style="list-style-type: decimal;">
<li>To erect the blockwork for the cattle shed as soon as possible, without worrying about when the superstructure can be completed: feasible, needs no outside support, can be achieved, will have some value as shelter and as a hard feeding pen even if the shed is never finished;</li>
<li>To separate the male cattle and move them at least to the upper park (but to ask Alice if I can move them into hers);</li>
<li>To procede with maintenance on the baler as soon as possible, with the rake and mower as stretch goals - if working in the Void is too stressful, fetch them down here to be worked on;</li>
<li>To ask friends for support on Project Hope, but, if I don't get that soon, to abandon it and focus software on The Great Game;</li>
<li>To not worry about anything else for the time being.</li>
</ol>
Comments?Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com2tag:blogger.com,1999:blog-5789047921614008864.post-33392178345345584682019-05-08T13:07:00.001+01:002019-05-08T13:07:31.775+01:00Baking the world<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG3Kc6fcuuExFEb2EJcfnrLBfCxk0wx2Kgn5_Q9XP5F57XwvdpawPI2E0lHWemFnfJccwmqejbPSFpjnWLsh0N4meznSoDlwi462l237hBpQ5m9i2eibqJBT_Pmuxr5KBKfPe5Ax0UOKw/s1600/Devorgillas-Bridge.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="917" data-original-width="1200" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG3Kc6fcuuExFEb2EJcfnrLBfCxk0wx2Kgn5_Q9XP5F57XwvdpawPI2E0lHWemFnfJccwmqejbPSFpjnWLsh0N4meznSoDlwi462l237hBpQ5m9i2eibqJBT_Pmuxr5KBKfPe5Ax0UOKw/s320/Devorgillas-Bridge.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Devogilla's Bridge in Dumfries, early foourteenth century</td></tr>
</tbody></table>
In previous posts, I've described algorithms for dynamically <a href="https://blog.journeyman.cc/2013/07/populating-game-world.html">populating</a> and dynamically <a href="https://blog.journeyman.cc/2009/12/settling-game-world.html">settling</a> a game world. But at kilometre scale (and I think we need a higher resolution than that - something closer to hectare scale), settling the British Isles using my existing algorithms takes about 24 hours of continuous compute on an eight core, 3GHz machine. You cannot do that every time you launch a new game.<br />
<br />
So the game development has to run in four phases: the first three phases happen during development, to create a satisfactory, already populated and settled, initial world for the game to start from. This is particularly necessary if hand-crafted buildings and environments are going to be added to the world; the designers of those buildings and environments have to be able to see the context into which their models must fit.<br />
<h2>
Phase one: proving - the procedural world </h2>
I'm going to call the initial phase of the game run - the phase which takes place before the quest team write their quests and the art department adds their hand-crafted models - 'proving', as when dough has been been made and set aside to rise.<br />
<br />
Then, when the landscape has developed - the areas of forest, scrub, open meadow, moorland, savanah and desert are determined, the rivers plotted, the settlers moved in, their trades determined and their settlements allocated, the roadways which link settlements routed, river crossings and ports defined - the proving process ends, and the world is turned over to the plot-writers, quest builders and designers, for a process we can see as analogous to kneading.<br />
<br />
But, before going there, to summarise the proving stage. The inputs are:<br />
<ol>
<li>A raster height map (although this could be randomly generated using any one of many fractal algorithms) - this probably uses ideas from <a href="https://blog.journeyman.cc/2013/07/tessellated-multi-layer-height-map.html">tessellated multi-layer height map</a>; </li>
<li>Optionally, a raster rainfall map at 1km resolution (although my personal preference is that this should be generated procedurally from the height map).</li>
</ol>
The outputs are<br />
<ol>
<li>A vector drainage map (rivers);</li>
<li>A raster biome map at roughly 1 km resolution (it might be anything between hectare
resolution and 1Km resolution, but obviously higher resolution takes
more storage); </li>
<li>A database of settlers and their settlements, such that the settlements have x,y co-ordinates;</li>
<li>A vector road map.</li>
</ol>
In this sense, the 'biome map' is just the end state of a <a href="https://blog.journeyman.cc/2014/08/modelling-settlement-with-cellular.html">Microworld</a> run. The 'biomes' include things like 'forest', 'scrub', 'heath', 'pasture', but they may also include human settlement, and even settlement by different cultural groups.<br />
<br />
This gives us all we need to vegetate and furnish the world. When rendering each square metre we have<br />
<ol>
<li>The x,y coordinates, obviously;</li>
<li>The altitude, taken from the height map;</li>
<li>The biome, taken from the biome map;</li>
<li>The biomes of adjacent cells in the biome map;</li>
<li>The proximity of the nearest watercourse;</li>
<li>The proximity of the nearest road or pathway;</li>
<li>Whether we are inside, or outside, a settlement (where for these purposes, 'settlement' includes enclosed field), and if inside, what type of settlement it is.</li>
</ol>
Given these parameters, and using the x, y coordinates as seed of a deterministic pseudo-random number generator, we can generate appropriate vegetation and buildings to render a believable world. The reason for pulling adjacent biomes into the renderer is that sharp transitions from one biome to another - especially ones which align to a rectangular grid - rarely exist in nature, and that consequently most transitions from one biome to another should be gradual.<br />
<br />
Note that proving, although extremely compute intensive, is not necessarily a one-time job. If the designers aren't satisfied with the first world to emerge from this process, they can run it again, and again, to generate a world with which they are satisfied. It's also possible to hand-edit the output of proving, if needed. <br />
<br />
But now, designers and story-writers can see the world in which their creations will be set. <br />
<h2>
Phase two: kneading - making the world fit our needs</h2>
Enough of proving, let's get on to kneading.<br />
<br />
Hand-designed buildings and environments are likely to be needed, or at least useful, for plot; also, particularly, very high status buildings are probably better hand designed. I'm inclined to think that less is more here, for two reasons:<br />
<br />
You cannot hand design a very large world, it's just impossible. How CD Project Red managed with Witcher 3 I don't know, since I understand that is largely hand designed; but that was a very large team, and even so it isn't a world on the scale I'm envisaging.<br />
<br />
Procedurally generated models take a wee bit of compute power to reify, but not a huge amount, and they're trivial to store - you need one single birch leaf model and one single birch-bark texture generator to make every birch tree in the game, and probably a single parameterised tree function can draw every tree of every species (and quite a lot of shrubs and ground-cover plants, too). But once reified, they take no longer to render than a manually crafted model.<br />
<br />
By contrast, a manually crafted model will take a very great deal more space to store, such that being able to render a large world from hand crafted models, without excessive model re-use, isn't going to be possible.<br />
<br />
So it's better in my opinion to put effort into good procedural generation functions, not just for foliage but also for buildings. My reason for using a picture of a medieval bridge at the head of the essay is to illustrate exactly this point: even in the medieval period, bridges comprise a series of repeating modules. Take one arch module and one ramp module from Devorgilla's bridge as models, add texture skins for several different stone types, stretch the modules a little in whatever dimension is needed, and repeat the arch module as many times as needed, and you can create a range of bridges to span many different rivers - which will all be visibly similar, but that's fine, that's the nature of a traditional culture - but each slightly different.<br />
<br />
Take half a dozen sets of models - timber bridges for forested biomes, brick bridges for biomes without stone or timber - and you can build procedural bridges across a whole continent without ever exactly repeating yourself. <br />
<br />
However, in some places the designers and story writers will want, for plot reasons and to create iconic environments, to add models. I'm inclined not to over do this, both for reasons of development effort and for reasons of storage cost, but they will. Very high status buildings may need to be unique and distinctive, for example. These need to be designed and their locations and spatial dimensions added to the database, so that the models can be rendered in the right positions (and, critically, procedurally generated models can be omitted in those positions!)<br />
<br />
Story and quest writers will also want characters for their plots. While there's no reason why writers cannot add entirely new characters to the database, there's no reason why they cannot incorporate characters generated in the settlement phase into the story; for this reason, characters need to be able to be tagged in the database as plot characters, and with what quests/elements of the plot they're associated.<br />
<br />
This allows a mechanism to prevent a plot character from being killed by another non-player character, or dying of disease or starvation, before the plot elements in which they feature have been completed.<br />
<h2>
Phase three: baking - making it delicious</h2>
Once the world has been populated, settled, vegetated, the story has been written, the models built, the quests designed, there is probably a process of optimisation - stripping out things which aren't needed at play time, streamlining things that are - before you have a game ready to ship; but really I haven't yet given that much thought.<br />
<h2>
Phase four: eating!</h2>
At the end, though, you have a game, and a player plays it. How much of the dynamic, organic life that brought the game through proving continues on into the playing phase? If the <a href="https://blog.journeyman.cc/2008/04/the-spread-of-knowledge-in-large-game.html">gossip</a> ideas are to work, if unscripted, non-plot-related events (as well as scripted, plot related events) are to happen while the player plays, if news of these events is to percolate through the world and reach the player in organic, unscripted ways, if a lot of the emergent gameplay I'm imagining is to work, then quite a lot of the dynamic things must be happening.<br />
<br />
Of course, part of this depends on the length of 'game world time' is expected to elapse in the course of one play through of the game. If it's less than a year, then you don't need children dynamically being born, and characters dynamically growing older; but if more, then you do. Similarly, you don't need a real simulation of trading to dynamically drive prices in markets, but for a fun trading sub-game to emerge, you probably do, and if you are using merchants as news spreading agents the additional compute cost is not high.<br />
<br />
And I understand that many game writers will shudder at the thought that a war might (or might not) start in the middle of their plot, that a battle might, one time in a thousand, take place right where they've plotted some significant encounter. Most modern video games are essentially just very complicated state machines: if you make this sequence of choices, this outcome will happen, guaranteed. Or else they're puddles of random soup, where everything that happens is more or less driven by a random number generator. What I'm envisaging is something quite different: a world in which traders gonna trade, robbers gonna rob, lovers gonna love, scandal-mongers gonna make scandal, organically and dynamically whether the player is there or not, and news of these events will filter through to the player through the gossip network also organically and dynamically.<br />
<br />
A world, in short, through which no two runs will ever be the same, in which interesting bits of story will happen with no-one directing or scripting them. And for that to work, some of the same dynamic processes that drove the proving phase have to continue into the eating phase. Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0tag:blogger.com,1999:blog-5789047921614008864.post-53571075493990158002019-04-11T04:24:00.004+01:002019-04-11T04:24:44.584+01:00The Changeling<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1u0GpLrDQjHyNpfIXzDUwt6KAwWFF7TEk4pJTpCnpQeHuyKT-GJqb6jVQRg9w2flnt7CZGA-Deg9oZw1W-1PgFJuFUB9uVqvdNbc-qzghfZktbzleeq-Fj5ysV62kRbvqzC2vcrn2pNA/s1600/0286.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="942" data-original-width="921" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1u0GpLrDQjHyNpfIXzDUwt6KAwWFF7TEk4pJTpCnpQeHuyKT-GJqb6jVQRg9w2flnt7CZGA-Deg9oZw1W-1PgFJuFUB9uVqvdNbc-qzghfZktbzleeq-Fj5ysV62kRbvqzC2vcrn2pNA/s320/0286.JPG" width="312" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My family in 1960; my father on the right, me next to him</td></tr>
</tbody></table>
I woke up in the middle of the night thinking about the 1962 Foot And Mouth outbreak, and its effect on my father; wondering to what extent his psychiatric crisis affected mine, and mine, his.<br /><br />(My father wes then the Ministry of Agriculture's Regional Controller for the North of England; among his responsibilities was deciding which herds were condemned. He insisted on visiting every affected farm, talking to every vet and every farmer. He didn't have to do that. It's because of him that we now know that the disease can be carried on the tyres of cars - specifically our car. He carried the disease from farm to farm with him, infecting farms which had not previously been infected).<br /><br />To what extent did he undertand the Foot and Mouth outbreak as a punishment for his sin in divorcing his first wife to marry my mother? Or for other sins of his of which I'm unaware? To what extent did both my parents understand my own collapse into a psychiatric basket case - which had started earlier, but got much worse during this period - as a punishment?<br /><br />Of course, there's no-one else left alive who I can check these thoughts out with, with the exception of my sister who was also only a child at the time. The last of my parents' contemporary friends died last year.<br /><br />I now know and understand that my father's childhood must have been traumatic, and that the first half of his war - the half he never spoke about - must also have been traumatic. How damaged had he been by these experiences?<br />
<br />
As a small child, your own parents are god-like, solid, immutable, the foundations of your existence. It's hard to see them as damaged. Later, in my teens, my psychiatrists saw my own trouble as in part an expression of the conflicts in my parents' marriage, but I now realised that my then understanding of that understanding was shallow.<br /><br />Both my parents' fathers were in there own way monsters; which is another way of saying both my parents's fathers were in their own way very damaged individuals - but I only dimly understand the causes of their damage. A further generation back, I understand a little of my mother's grandfather's damage, but nothing beyond that. If I had children, they - or their children - would see me as a monster; and they'd be right, of course, in many ways I am one.<br /><br />Slobodan Milošević was a monster; but his parents marriage failed while he was a small child, and both of his parents committed suicide before he was thirty. I've always seen evil in the world as a consequence of evil, damage resulting from damage, feeding on and reinfecting itself from generation to generation.<br /><br />This isn't to say my father was a bad man. He wasn't. He was a very brilliant, very troubled man who sincerely strove to be a good man - as I do. But each of his children were badly scarred, as mine would be if I had any, as those to whom I have acted in loco parentis have been.<br /><br />But so - what? How do we act against evil, if its perpetrators are also its victims?<br /><br />I have long felt that the appropriate, kind, caring response to children with psychiatric trauma would be to kill them. To put them out of their misery, because you don't recover, because no-one should be forced to live like this. But in saying that I was thinking it simply for the child's sake, to spare the child (and the adult they would grow into) suffering.<br /><br />What if one should kill children who suffer psychiatric trauma in order to prevent the evil that they may - that they are likely to - cause? Hold onto that thought for a moment. It's a very dark one.<br /><br />There are folk beliefs about changelings, demon children, cursed children. Does this reflect a traditional practice to driving out or killing very troubled children, and, if so, did that practice have survival benefits for the herd in cauterising evil and limiting its intergenerational spread?<br /><br />Dark thoughts. I should sleep.Simon Brookehttp://www.blogger.com/profile/07338042761802749740noreply@blogger.com0