<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Aneesh Naik</title>
<link>https://www.aneeshnaik.com/blog.html</link>
<atom:link href="https://www.aneeshnaik.com/blog.xml" rel="self" type="application/rss+xml"/>
<description>Personal webpage and blog of Aneesh Naik.</description>
<generator>quarto-1.10.18</generator>
<lastBuildDate>Sun, 02 Aug 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Weeknotes: 2026 Weeks 30 &amp; 31</title>
  <link>https://www.aneeshnaik.com/blogposts/20260802_weeknotes_2026_31.html</link>
  <description><![CDATA[ 




<p>Thus far, I’ve worked very hard to prevent this blog from devolving into Yet Another Cryptic Crossword Blog. Today, these efforts fail.</p>
<section id="what-i-was-working-on" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-working-on">What I was working on</h2>
<section id="species-distribution-modelling" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="species-distribution-modelling">Species Distribution Modelling</h3>
<p>As in previous weeks, I’ve spent a good amount of time playing around with species distribution modelling with <a href="https://geotessera.org/">TESSERA</a>.<sup>1</sup> In particular, I’ve been using the GeoPlant dataset used for the annual <a href="https://www.kaggle.com/competitions/geolifeclef-2024/overview">GeoLifeClef competition</a>. Over the last month or so I’ve made a big mess with a myriad of scattered experiments. I’m now attempting to bring everything together with a final “grid” of models that encapsulate my various conclusions. I’ll run this grid over the coming period.</p>
<div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;See also my weeknotes <a href="../blogposts/20260703_weeknotes_2026_27.html">26+27</a> and <a href="../blogposts/20260720_weeknotes_2026_29.html">28+29</a> for discussion of this project.</p></div><div id="fn2"><p><sup>2</sup>&nbsp;The fiducial model is a ResNet-18 CNN. Before hitting the CNN, the data passes through a small two-layer adapter block (convolution + ReLU) that maps the input data to 32 channels. The idea here was to make the comparison across modalities as fair as possible: only the input data and preprocessing differ while the core architecture is held constant. Post-backbone, there is then a lightweight two-layer classification head. At prediction time, each model is ensembled across 8 spatial folds.</p></div></div><p>As a first taster, here is a bar chart showing the performance of my “fiducial” model<sup>2</sup> with three input data modalities: Sentinel-2 images, <a href="https://deepmind.google/blog/alphaearth-foundations-helps-map-our-planet-in-unprecedented-detail/">AlphaEarth</a> embedding “images”, and TESSERA v1.0 embedding “images”. All images are 128x128 10m pixels. Performance is measured by the sample-weighted F1 score used in the GeoLifeClef competition.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260802_glc.png" class="img-fluid figure-img" style="width:80.0%" alt="Bar chart showing GeoLifeClef scores for three models."></p>
<figcaption class="margin-caption">Bar chart showing GeoLifeClef scores for three models: one fed with Sentinel-2 data, one with AlphaEarth embeddings, and one with TESSERA embeddings. The two geospatial foundation models beat the traditional remote sensing input quite convincingly. Of the two, TESSERA wins by a slight margin.</figcaption>
</figure>
</div>
<p>The two geospatial foundation models, AlphaEarth and TESSERA, beat the “traditional” remote sensing modality (Sentinel-2) by a convincing margin. Of the two, TESSERA just about inches ahead of AlphaEarth.<sup>3</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn3"><p><sup>3</sup>&nbsp;To give some context for these scores, AlphaEarth and TESSERA are roughly comparable with the second/third/fourth place entries in the 2024 GeoLifeClef competition. However, as I’ve noted before, these entries supplement the 80,000 survey plots which I am using with an additional 5 million opportunistic plant records.</p></div></div></section>
<section id="bird-assemblage-mapping" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="bird-assemblage-mapping">Bird Assemblage Mapping</h3>
<p>These past few weeks I’ve spent one day per week working on bird-derived habitat mapping project I described in <a href="[28+29](20260720_weeknotes_2026_29.qmd)">my previous weeknote</a>.<sup>4</sup> I haven’t gotten as far as making a map yet, as I’ve been spending quite a bit of time understanding and preparing the data that have been shared with me by my collaborators.</p>
<div class="no-row-height column-margin column-container"><div id="fn4"><p><sup>4</sup>&nbsp;It’s worth noting also that this project is conceptually quite similar to the project I’m working on with Michael Dales and Alison Eyres, described on Michael’s blog <a href="https://digitalflapjack.com/weeknotes/2026-07-20/">here</a> and <a href="https://digitalflapjack.com/weeknotes/2026-07-27/">here</a>.</p></div><div id="fn5"><p><sup>5</sup>&nbsp;The association strengths shown in the diagram are:<br>
- Obligate: species found only in a given habitat / very rarely in another.<br>
- Strong Indicator: species usually found in a given habitat but not restricted to it.<br>
- Weak Indicator: species seen in less than a third of habitats on a continent, generally all within the same biome.<br>
- Nominally Present: species found in given habitat but also in many other habitats, of multiple biomes.<br>
</p></div></div><p>The main dataset is a table of associations between bird species and the habitat types under the <a href="https://press.princeton.edu/series/habitats-of-the-world?srsltid=AfmBOopA0eX5yfi3EDSaHSuiNeEX-oPrrmJlt3xoYo2kKNfx2ws8R7jP">Habitats of the World</a> typology. To give a sense of what this looks like, the bar chart below shows the number of species in each of the 57 African habitats, disaggregated by association strength.<sup>5</sup></p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260802_birdies.png" class="img-fluid figure-img" style="width:100.0%" alt="Bar chart showing birds associated with African habitats, disaggregated by association strength."></p>
<figcaption class="margin-caption">Bar chart showing birds associated with African habitats, disaggregated by association strength.</figcaption>
</figure>
</div>
<p>In addition to this table, I was also given a wealth of birding checklists from various sites in South Africa and Australia. Here, a somewhat irksome problem creeps in: species identifiers. Many of the birdlists use a different name for a given species compared with the bird-habitat table.<sup>6</sup> On Friday, over the course of several rather strong cups of coffee, I manually built a table of corrections.<sup>7</sup> This was non-trivial: often, the name differences are not simply synonyms but taxon merges/splits. In the case of a split, I had to use geographic information to work out which of the derived species more likely corresponded to the observation. As part of my sanitisation, I moved to using the eBird “species code” as a more stable unique identifier for each species.</p>
<div class="no-row-height column-margin column-container"><div id="fn6"><p><sup>6</sup>&nbsp;The latter uses the <a href="https://www.birds.cornell.edu/clementschecklist/introduction/updateindex/october-2024/">2024 Clements checklist</a>.</p></div><div id="fn7"><p><sup>7</sup>&nbsp;I used <a href="https://avibase.bsc-eoc.org/avibase.jsp?lang=EN">avibase</a> to look up synonyms. In principle one could imagine automating this process, but there were so many quirks and exceptions that any kind of robust process would take even longer to develop than my manual procedure took to complete.</p></div></div><p>Painful, but actually quite fun! Plus I got to look at a lot of nice birds as I went along. For example, the Papuan pitta (<em>Erythropitta macklotii</em>… or is it <em>Pitta erythrogaster</em>??).</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260802_pitta.jpg" class="img-fluid figure-img" style="width:60.0%" alt="Photograph of a Papuan pitta."></p>
<figcaption class="margin-caption">The Papuan pitta. Photo credit: Wikipedia (user: JJ Harrison)</figcaption>
</figure>
</div>
</section>
</section>
<section id="meetings" class="level2">
<h2 class="anchored" data-anchor-id="meetings">Meetings</h2>
<p>I had quite a few interesting meetings this past fortnight:</p>
<ul>
<li>Meeting with <a href="https://www.wcs.org/our-work/solutions/conservation-planning/paul-elsen">Paul Elsen from the Wildlife Conservation Society</a> to discuss using TESSERA / geospatial goundation models in their <a href="https://www.nceas.ucsb.edu/workinggroups/nature-health-index-holistic-approach-measuring-and-mapping-ecological-integrity">Nature Health Index</a>.</li>
<li>Mini-workshop in the David Attenborough Building with all the various people doing habitat mapping with TESSERA. Organised by <a href="https://www.plantsci.cam.ac.uk/people/david-coomes">David Coomes</a>.</li>
<li>Meeting with <a href="https://digitalflapjack.com/">Michael Dales</a> and <a href="https://www.zoo.cam.ac.uk/people/alison-eyres">Alison Eyres</a> to discuss our global habitat mapping work (see margin note 4 above).</li>
<li>Meeting with <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/">S. Keshav</a>, <a href="https://www.cst.cam.ac.uk/people/sas268">Silja Sormunen</a>, and <a href="https://www.plantsci.cam.ac.uk/people/david-coomes">David Coomes</a> to discuss a potential new project building a global landcover hierarchy.</li>
<li>Meeting with <a href="https://www.plantsci.cam.ac.uk/people/jacob-drucker">Jacob Drucker</a> to discuss occupancy modelling of bird species.</li>
<li>Telecon with <a href="https://www.gu.se/en/about/find-staff/e-pingrau">E-Ping Rau</a> to discuss tree species distribution modelling with TESSERA.</li>
</ul>
</section>
<section id="miscellanea" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="miscellanea">Miscellanea</h2>
<section id="crossword" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="crossword">Crossword</h3>
<p>Over a few sessions in July, I worked on a delightful crossword with my wife and some friends: the <a href="https://www.theguardian.com/crosswords/2026/jul/06/genius-crossword-no-277">Guardian “Genius” crossword, number 277</a>.</p>
<p>The Genius is a monthly crossword associated with a cash prize.<sup>8</sup> The clues themselves are actually not <em>too</em> hard, but each puzzle does have an unusual twist which makes the overall puzzle quite a challenge. In #277, the rubric itself was hilariously cryptic:</p>
<div class="no-row-height column-margin column-container"><div id="fn8"><p><sup>8</sup>&nbsp;The deadline was yesterday, Saturday 1st August. So, I’m allowed to post my solution here. See also the writeup on <a href="https://fifteensquared.net/2026/08/02/guardian-genius-no-277-by-soup/">fifteensquared</a>.</p></div></div><blockquote class="blockquote">
<p>The puzzle is a safe. Solvers must reveal its contents using four dials, applying cach to a quarter of the clues. Dial by dial in clue order, certain letters give a property of 23 cells to be highlighted:<br>
Dial 1 clues: extra letter indicated by wordplay<br>
Dial 2 clues: first letter of an extra word<br>
Dial 3 clues: letter omitted by wordplay<br>
Dial 4 clues (normal): clue’s first letter<br>
</p>
</blockquote>
<p>I had to read this ten or twelve times before I understood it (/ gave up trying to understand it). The essence of it is that each clue in the crossword yields an additional letter, falling into one of four categories. Concatenate them in the right order to receive further instructions. Below is an image of the completed crossword, with colours indicating the four categories.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260802_xword_1.jpg" class="img-fluid figure-img" style="width:60.0%" alt="Image of Guardian Genius Crossword with answers filled in."></p>
<figcaption class="margin-caption">Guardian Genius Crossword #277, with answers filled in. Each clue/answer also yields an additional letter, falling into one of four categories. When concatenated in the right order, these additional letters spell out: “Contain same letter as today’s cryptic”.</figcaption>
</figure>
</div>
<p>The additional letters, spelt out dial by dial, then say: CONTAINSAMELETTERASTODAYSCRYPTIC. Or, “contain same letter as today’s cryptic”. “Today’s cryptic” refers to the “normal” <a href="https://www.theguardian.com/crosswords/cryptic/30051">Guardian cryptic #30051</a>, which was released on the same day as Genius #277. If one highlights just the cells in which both crosswords contain the same letter, one sees the hidden objects emerge:</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260802_xword_2.jpg" class="img-fluid figure-img" style="width:60.0%" alt="Bar chart showing GeoLifeClef scores for three models."></p>
<figcaption class="margin-caption">The same crossword, now only showing the cells where the letter is the same as that in the corresponding cell of the day’s “normal” cryptic crossword in the Guardian. Three hidden objects are now revealed: DAGGER, FAKE ID, DIAMOND RING.</figcaption>
</figure>
</div>
<p>Dagger, fake ID, diamond ring. These are the final answers which are submitted for the prize. I confess I can’t see a connection between the three (other than that they might go in a safe?), but I suspect there’s a cultural reference I’m missing.</p>
<p>In addition to a weird and wonderful puzzle concept, the crossword also had a new (to me) type of clue. 25 across:</p>
<blockquote class="blockquote">
<p>____ ____ exemplify ruin? (7)</p>
</blockquote>
<p>The answer is DESTROY (=“ruin”). The blank parts of the clue are “Does Troy” (there’s an extraneous letter O here, according to dial 1). So, the clue’s wordplay <em>includes</em> the literal answer!</p>
</section>
<section id="crochet" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="crochet">Crochet</h3>
<p>Last week was my wife’s and my “cotton” anniversary, and we exchanged gifts of cotton. For my part, I attempted my first ever three-dimensional crochet, a <em>Crassula umbellata</em>. Pattern from <a href="https://www.searchpress.com/book/9781782219019/stylish-succulents-to-crochet">“Stylish Succulents to Crochet”</a> by Sarah Abbondio. Photo below.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260802_crassula.jpg" class="img-fluid figure-img" style="width:70.0%" alt="A crocheted Crassula umbellata."></p>
<figcaption class="margin-caption">A crocheted <em>Crassula umbellata</em>.</figcaption>
</figure>
</div>
<p>It was <em>much</em> harder than I thought it would be. I’m going to return to two dimensions for a while.</p>


</section>
</section>


 ]]></description>
  <category>Weeknotes</category>
  <category>SDM</category>
  <category>Crosswords</category>
  <category>Crochet</category>
  <category>Birds</category>
  <guid>https://www.aneeshnaik.com/blogposts/20260802_weeknotes_2026_31.html</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Weeknotes: 2026 Weeks 28 &amp; 29</title>
  <link>https://www.aneeshnaik.com/blogposts/20260720_weeknotes_2026_29.html</link>
  <description><![CDATA[ 




<section id="what-i-was-working-on" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-working-on">What I was working on</h2>
<section id="species-distribution-modelling-geolifeclef" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="species-distribution-modelling-geolifeclef">Species Distribution Modelling: GeoLifeClef</h3>
<p>As I mentioned in my <a href="../blogposts/20260703_weeknotes_2026_27.html">previous weeknote</a>, I’ve been working on <a href="https://en.wikipedia.org/wiki/Species_distribution_modelling">species distribution modelling (SDM)</a> using <a href="https://geotessera.org/">Tessera</a> embeddings as covariates. In particular, I’ve been playing around with the <a href="https://www.kaggle.com/competitions/geolifeclef-2024/overview">GeoLifeClef challenge</a>, an annual SDM competition using the GeoPlant benchmark dataset.</p>
<p>This has been the main thing I’ve been working on these past couple of weeks. In particular, I’ve been doing a lot of experiments with different models / ML architectures, both with Tessera and with the provided data (Sentinel 2 + Landsat + Bioclim).</p>
<p>The main result so far: <strong>Tessera plus a relatively simple model gets a pretty high score, equivalent to roughly 2nd place in the 2024 competition.</strong><sup>1</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;Last time I wrote, I was at 11th place. Remarkably, the improved result is actually with a more light-weight model (i.e., one with fewer trainable parameters). The main cause of the boost is using an ensemble of models, using a spatial block strategy to feed different subsets of the data to each ensemble member.</p></div><div id="fn2"><p><sup>2</sup>&nbsp;See my <a href="../blogposts/20260703_weeknotes_2026_27.html">previous weeknote</a> for a discussion of presence-absence versus presence-only data.</p></div></div><p>It’s worth noting that even this high-scoring model only uses the presence-absence data in the GeoPlant dataset. The winning efforts in the competition all incorporated the additional presence-only data.<sup>2</sup> I’m not sure if I will attempt to incorporate the additional data or not: I think the results I have so far are already sufficent to demonstrate a nice point: geospatial foundation models are good at species distribution modelling!</p>
</section>
<section id="bird-assemblages" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="bird-assemblages">Bird Assemblages</h3>
<p>This past fortnight I’ve started working with some colleagues downstairs at BirdLife International, plus some other colleagues from farther afield, on a project using opportunistic bird observations (e.g., from eBird) alongside Tessera to build habitat maps. The idea is that <em>assemblages</em> of birds are highly indicative of ecosystem type.</p>
<p>I haven’t done any “science” yet. So far, I’ve just read a few papers and played around with some data my colleagues shared with me, including a table of associations between bird assemblages and habitat types. Playing around with this table, I’ve learned about a few new birds and habitats, such as the <a href="https://en.wikipedia.org/wiki/Bananaquit">bananaquit</a> and the <a href="https://en.wikipedia.org/wiki/Renosterveld">renosterveld</a>.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260720_bananaquit.jpg" class="img-fluid figure-img" style="width:65.0%" alt="Photo of a bananaquit."></p>
<figcaption class="margin-caption">A bananaquit (<em>Coereba flaveola</em>). Photo credit: Wikipedia.</figcaption>
</figure>
</div>
</section>
</section>
<section id="what-i-was-reading" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-reading">What I was reading</h2>
<section id="synthetic-silviculture" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="synthetic-silviculture">Synthetic Silviculture</h3>
<p>A few weeks back, I met <a href="https://www.informatik.tu-darmstadt.de/iams/home_iams/index.en.jsp">Dominik Michels</a> from TU Darmstadt. He told me about some of the work his group is doing on forest simulations. This past week, I finally got round to reading some of their papers. For example: <a href="https://dl.acm.org/doi/10.1145/3306346.3323039">Synthetic Silviculture</a>.<sup>3</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn3"><p><sup>3</sup>&nbsp;<a href="https://dl.acm.org/doi/10.1145/3306346.3323039">Makowski, M et al., <em>Synthetic silviculture: multi-scale modeling of plant ecosystems</em>, ACM Trans. Graph (2019).</a></p></div></div><p>The basic idea is that a <em>real</em> tree is represented by a <em>topological</em> tree: nodes and edges. It has various parameters that set its growth and branching rate. Neighbouring trees shade each other following ray physics calculations. Other processes (reproduction, fire, etc.) are also implemented.</p>
<p>Videos of the simulations seem really impressive. We talked a little about how we might use remote sensing to provide validation experiments for the simulations, and we also talked about conservation research questions one might address with such simulations, like simulating the effects of deer control in the Cairngorms.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260720_silviculture.png" class="img-fluid figure-img" style="width:95.0%" alt="Figure from synthetic silviculture simulation."></p>
<figcaption class="margin-caption">Fig. 19 from Makowski et al.&nbsp;(2019). Temporal progession of a developing ecosystem with 500k individual plants from three types (shrub, conifer, deciduous).</figcaption>
</figure>
</div>
</section>
<section id="reasons-for-conservation-monitoring" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="reasons-for-conservation-monitoring">15 Reasons for Conservation Monitoring</h3>
<p>A few weeks ago, we had <a href="https://en.wikipedia.org/wiki/Hugh_Possingham">Prof.&nbsp;Hugh Possingham</a> visit us to give a colloquium. His talk was, by design, rather provocative. In particular, he seemed to be advocating a philosophy where one should only pursue a nature monitoring project when one envisages a specific on-the-ground action that will result from the monitoring.</p>
<p>I found myself worrying quite a lot about this philosophy. While it seems pragmatic in principle, I fretted about all the data that would never have been collected had scientists always strictly followed this philosophy. For example, a great deal of knowledge we have today about effective conservation practice comes from conservationists continuing their monitoring schemes well into the post-intervention phase, even when they knew the outcomes of their interventions, when they had no further planned actions in mind, and when they might well have devoted their resources elsewhere.</p>
<p>This past week I went away and read <a href="https://doi.org/10.1098/rspb.2025.2527">his paper on the subject</a>.<sup>4</sup> The paper is actually much more circumspect than the talk. It lists 15 reasons for a conservation monitoring programme, framing them as a checklist that one can go through when planning a project. Included among the reasons are some of the more ‘nebulous’ reasons for data-gathering, like ‘basic research’, ‘taking the pulse of nature’, and ‘societal curiosity’. These are all framed as valid reasons to pursue research. The main point of the article is to encourage scientists to think a little more explicitly about their reasons to pursue different projects. Then, by having thought more explicitly, they can might be able to allocate their finite resources in the best way.<sup>5</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn4"><p><sup>4</sup>&nbsp;<a href="https://doi.org/10.1098/rspb.2025.2527">Helmstedt, K. J. et al., <em>How monitoring matters for nature conservation: 15 reasons framed in a theory of change</em>, Proc. R. Soc. B (2025)</a></p></div><div id="fn5"><p><sup>5</sup>&nbsp;The paper also encourages the reader to couch their various motivations into a <a href="https://en.wikipedia.org/wiki/Theory_of_change">‘theory of change’</a>, to help understand how the different project motivations relate to downstream impacts/outcomes.</p></div></div><p>I certainly feel I could do with taking this message on board! I’m not sure whether any of my current research can be classed as ‘conservation monitoring’. However, I might nonetheless consult this checklist next time I am planning a project, in order to be a little more clear and intentional about the expected impact of my research.</p>
</section>
</section>
<section id="miscellanea" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="miscellanea">Miscellanea</h2>
<section id="leuven" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="leuven">Leuven</h3>
<p>Last weekend I visited Leuven, in Flanders. This was my first time visiting Leuven, and I thought it was delightful. It reminded me a little of Cambridge: a beautiful university town with narrow streets, many bicycles, and a winding river lined with willows and ancient buildings.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260720_beguinage.jpg" class="img-fluid figure-img" style="width:75.0%" alt="Part of the Great Beguinage, Leuven."></p>
<figcaption class="margin-caption">Part of the Great Beguinage, Leuven. Photo credit: Wikipedia (user EmDee).</figcaption>
</figure>
</div>
<p>A highlight of the city is the UNESCO-listed “Great Beguinage”.<sup>6</sup> The article I read beforehand recommended seeing some of the other beguinages of Flanders so that I could really appreciate the greatness of the Great Beguinage. It didn’t, however, explain what a beguinage was, so I went in blind.</p>
<div class="no-row-height column-margin column-container"><div id="fn6"><p><sup>6</sup>&nbsp;In Dutch/Flemish: the Groot Begijnhof.</p></div></div><p>As it turns out, a beguinage is a built community created by <em>beguines</em>: religious women who lived a communal life, without taking the strict vows of the convent. There are a number of these beguinages around the Low Countries, Flanders in particular. The Great Beguinage in Leuven is particularly charming. It was founded in the 13th century but with most present buildings from the 17th century. It has lovely cobbled streets and courtyards and red brick buildings deviating quite far from rectilinear. The whole site was purchased by the university, KU Leuven, in the 1960s.</p>
</section>
<section id="linkedin" class="level3">
<h3 class="anchored" data-anchor-id="linkedin">LinkedIn</h3>
<p>I finally caved in and set up a <a href="https://linkedin.com/in/aneesh-naik-2030191a5">LinkedIn profile</a>. I was quite nervous about this as I’ve never much liked social media. Let’s see.</p>


</section>
</section>


 ]]></description>
  <category>Weeknotes</category>
  <category>TESSERA</category>
  <category>Birds</category>
  <category>Papers</category>
  <category>Conservation</category>
  <category>SDM</category>
  <guid>https://www.aneeshnaik.com/blogposts/20260720_weeknotes_2026_29.html</guid>
  <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Weeknotes: 2026 Weeks 26 &amp; 27</title>
  <link>https://www.aneeshnaik.com/blogposts/20260703_weeknotes_2026_27.html</link>
  <description><![CDATA[ 




<p>Since my last post, I have changed the domain name of the website from aneeshnaik.github.io to aneeshnaik.com. Any RSS subscriptions will likely break as a result!</p>
<section id="what-i-was-working-on" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-working-on">What I was working on</h2>
<section id="species-distribution-modelling-geolifeclef" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="species-distribution-modelling-geolifeclef">Species Distribution Modelling: GeoLifeClef</h3>
<p>This is the main thing I’ve been working on for the last ~1.5 weeks. The idea is to see how well <a href="https://geotessera.org/">TESSERA</a> does at species distribution modelling (<a href="https://en.wikipedia.org/wiki/Species_distribution_modelling">SDM</a>). SDM is a fun idea: given a set of species occurrence records and some environmental covariates / remotely sensed images, predict the distribution of the species across a landscape. For years I’ve been interested in SDM, because it combines basically all of my interests: nature, maps, grungy Bayesian statistics to deal with the extreme observational bias.<sup>1</sup> I’ve dabbled a little in the past with small projects, but this is my first time really pursuing a project full time in a professional capacity. I’m excited to be working on this!</p>
<div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;The only thing missing is cryptic crosswords. Perhaps I could ask the Guardian for the IP addresses of online crossword solvers, then make a species distribution model of cruciverbalists.</p></div><div id="fn2"><p><sup>2</sup>&nbsp;Presence-only data are opportunistic samples, such as citizen science data, simply logging where a species was found. With presence-only data, absence of evidence is not evidence of absence. Presence-absence data are structured surveys confirming both where a species was found and <em>where it was not</em>.</p></div></div><p>My idea for a first project here was to apply Tessera to the <a href="https://www.kaggle.com/competitions/geolifeclef-2024/overview">2024 GeoLifeClef competition</a>. This is an annual SDM competition hosted on Kaggle, run by the Pl@ntNet team. The idea is to make multi-species SDMs using the GeoPlant data: ~10k plant species, ~90000 presence-absence points, and ~5 million presence-only points.<sup>2</sup></p>
<p><strong>Experiment:</strong> GeoLifeClef provides a “baseline” model using just Sentinel-2 images (128x128 10m pixels, R/G/B/NIR). It ignores the presence-only data in the GeoPlant dataset, and trains only on the presence-absence data. It’s a relatively simple model. Not to say light, it’s a relatively big neural net, but just plug+play, nothing fancy at all with hyperparameter tuning / ensemble learning etc (which the winning submissions all do). Basically I took that baseline and swapped in Tessera “images”. I’m using Tessera v1.0 because 1.1 is not yet available over the whole region (which spans basically all of Europe).</p>
<p><strong>Headline result:</strong> Tessera beats the baseline model <em>by a wide margin</em>. It gives an even better result than the baseline model with S2 supplemented with landsat+bioclim time series.</p>
<p><strong>Detailed scores:</strong> These are the “private” F1 scores used to rank submissions for the GeoLifeClef competition.<br>
1. Baseline S2-only model: 0.23629 (would have ranked 38th in competition)<br>
2. Baseline S2 +Landsat time series + Bioclim time series model: 0.31626 (would have ranked 25th in competition)<br>
3. Tessera-only model (i.e., model 1 with S2 images replaced by Tessera images): 0.33032 (would have ranked 11th in competition)<br>
</p>
<p>For reference, the top 3 scores were: 0.40890, 0.36837, 0.35292. But, as I mentioned above, these all do much more sophisticated things. Not necessarily heftier architectures, but a lot of hyperparameter tuning, ensemble stuff, and they incorporate the GeoPlant presence-only data, which the “baseline” models ignore.<sup>3</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn3"><p><sup>3</sup>&nbsp;Perhaps surprisingly, it seems that adding the presence-only data was only marginally beneficial for these submissions, even though it’s a <em>huge</em> augmentation of the training data.</p></div></div></section>
</section>
<section id="what-i-was-reading" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-reading">What I was reading</h2>
<p>In conjunction with my SDM work described above, I’ve been reading around a lot of the recent SDM literature. One thing in particular I wanted to learn about is how to effectively quantify uncertainty. One very recent work I read on the subject is <a href="https://www.sciencedirect.com/science/chapter/bookseries/abs/pii/S0065250426000073"><em>Conformal prediction quantifies the uncertainty of species distribution models</em></a> by Poisot (2026).<sup>4</sup> It explores the idea of using the (presently very trendy!) technique of <a href="https://en.wikipedia.org/wiki/Conformal_prediction">conformal predictions</a> to provide uncertainties<sup>5</sup> on the predictions of SDMs. This seems like quite a promising avenue! It is a frequentist approach to uncertainty quantification, which to me is much less appealling than a fully Bayesian formalism would be. However, it is likely a much more robust approach in the regime where models are somewhat ‘misspecified’, as any SDM is likely to be. Much to chew on!</p>
<div class="no-row-height column-margin column-container"><div id="fn4"><p><sup>4</sup>&nbsp;<a href="https://www.sciencedirect.com/science/chapter/bookseries/abs/pii/S0065250426000073">Poisot, T. (2026), <em>Conformal prediction quantifies the uncertainty of species distribution models</em>, Advances in Ecological Research</a></p></div><div id="fn5"><p><sup>5</sup>&nbsp;Or, more precisely: coverage guarantees.</p></div><div id="fn6"><p><sup>6</sup>&nbsp;<a href="https://www.sciencedirect.com/science/article/pii/S0169534719302551">Isaac, N. J. B. et al., (2020), <em>Data Integration for Large-Scale Models of Species Distributions</em>, Trends in Ecology &amp; Evolution</a></p></div><div id="fn7"><p><sup>7</sup>&nbsp;<a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/ecog.06451">Morera-Pujol, V. et al.&nbsp;(2023), <em>Bayesian species distribution models integrate presence-only and presence–absence data to predict deer distribution and relative abundance</em>, Ecography.</a></p></div></div><p>On the subject of more Bayesian approaches to SDM: I read a couple of papers describing the usage of INLA (integrated nested Laplace approximation) for Bayesian inference in the context of SDM. For example, <a href="https://www.sciencedirect.com/science/article/pii/S0169534719302551">Isaac et al., (2020)</a> wrote a lovely review article.<sup>6</sup> The basic idea is to treat species observations as a point process. There is an underlying “true” species distribution, and observations are points sampled from the distribution. Presence-only and presence-absence data can be separately modelled from the same underlying distribution by writing down different observational likelihoods capturing the different observation processes. One can then infer the posterior (i.e., the “true” species distribution) by applying normal Bayesian inference techniques. In practice, techniques like Markov Chain Monte Carlo (MCMC) are likely too expensive for the extremely high-dimensional posterior, but if one makes some approximations then one can perform the inference relatively cheaply with INLA. <a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/ecog.06451">Morera-Pujol et al., (2023)</a> provide a great example of doing this in practice, mapping deer distributions in Ireland, combining presence-only and presence-absence data.<sup>7</sup></p>
<p>I <em>really</em> like this Bayesian approach to SDM. It exactly matches the idea I carry around in my head for how SDM (and basically all empirical science!) ought to work in principle. That being said, it is not without its problems. One issue is that one ‘models away’ the <a href="https://en.wikipedia.org/wiki/Spatial_analysis#Spatial_auto-correlation">spatial autocorrelation</a> by adding a ‘random spatial field’ term to the model. The same group that wrote the review paper cited above have <a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/ecog.06391">separately shown</a> that the results you get from INLA are <em>extremely</em> sensitive to your choice of mesh size on this random spatial field.<sup>8</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn8"><p><sup>8</sup>&nbsp;<a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/ecog.06391">Dambly, L. et al.&nbsp;(2023), <em>Integrated species distribution models fitted in INLA are sensitive to mesh parameterisation</em>, Ecography.</a></p></div></div></section>
<section id="miscellanea" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="miscellanea">Miscellanea</h2>
<section id="trees-of-the-cambridge-university-botanic-garden" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="trees-of-the-cambridge-university-botanic-garden">Trees of the Cambridge University Botanic Garden</h3>
<p>I’ve visited the Cambridge University Botanic Garden many times. Last weekend was my first time really appreciating its <em>wonderful</em> collection of trees. My wife and I diligently followed the <a href="https://www.botanic.cam.ac.uk/learning/trails/trees-trail/">Trees of the Botanic Garden Trail</a>,<sup>9</sup> which took us to 13 excellent trees around the garden. Two highlights:</p>
<div class="no-row-height column-margin column-container"><div id="fn9"><p><sup>9</sup>&nbsp;There are is a booklet at the Garden’s entrance, containing a map of the trail and a description of each tree and its significance.</p></div></div><ol type="1">
<li>The Osage orange (<em>Maclura pomifera</em>). This is a tree with very odd-looking fruit, described in the trail booklet as “pickled gardeners’ brains”.</li>
</ol>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260703_osage.jpg" class="img-fluid figure-img" style="width:55.0%" alt="Funky fruit on the Osage orange tree."></p>
<figcaption class="margin-caption">Funky fruit on the Osage orange tree.</figcaption>
</figure>
</div>
<ol start="2" type="1">
<li>The Indian horse-chestnut (<em>Aesculus indica</em>). This is a glorious tree, and was in flower when we visited. Interestingly, the flowers all have either pink or yellow centres: yellow at first, then pink once they have been pollinated!</li>
</ol>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260703_aesculus.jpg" class="img-fluid figure-img" style="width:65.0%" alt="Pink and yellow flowers on the Indian horse-chestnut"></p>
<figcaption class="margin-caption">Pink (pollinated) and yellow (not-yet-pollinated) flowers on the Indian horse-chestnut. Photo credit: CU Botanic Garden.</figcaption>
</figure>
</div>
</section>
<section id="james-hutton-memorial-garden" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="james-hutton-memorial-garden">James Hutton Memorial Garden</h3>
<p>Continuing the subject of visiting gardens and diligently following paper guides. My wife and I have been working through a book called “Secret Edinburgh: An Unusual Guide”. This is a guidebook full of weird and hidden spots around the city. Earlier this week it took us to the James Hutton Memorial Garden, not far from Holyrood. Despite its central location, it was extremely difficult to find. One reaches it by going into the car park of the University gym (the Pleasance Complex), then looking for the entrance to a path in between parking bays 20 and 21. This path then snakes down a steep hill to the garden.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260703_hutton.jpg" class="img-fluid figure-img" style="width:55.0%" alt="Photograph of James Hutton memorial garden"></p>
<figcaption class="margin-caption">Central stone of James Hutton memorial garden, Edinburgh. Just visible at top left: stone from Glen Tilt. The granite bands led Hutton to propose that rocks weren’t all from the sea!</figcaption>
</figure>
</div>
<p>The garden was built on the site where once stood the house of James Hutton, the 18<sup>th</sup> century Scottish “Father of Modern Geology”.<sup>10</sup> An interesting feature here is the collection of rocks placed around the garden. One interesting rock, just visible at the top-left of my photo above, was taken from Glen Tilt in the Cairngorms. This was the site where James Hutton observed veins of granite running through schist and limestone (as in the photographed rock). From this, he developed the theory of <em>plutonism</em>, that igneous rocks formed from volcanic activity, and not from crystallisation in the oceans.</p>


<div class="no-row-height column-margin column-container"><div id="fn10"><p><sup>10</sup>&nbsp;I’ve learned a lot about James Hutton since moving to Scotland. I’ve often experienced a kind of déjà vu when coming across a rock formation with a nearby plaque describing it as “Hutton’s Unconformity”: <em>the</em> site where James Hutton noted rock layers at different angles and thus came up with his ideas of uniformitarianism. He seems to have undergone this revelation 10 or 12 times.</p></div></div></section>
</section>


 ]]></description>
  <category>Weeknotes</category>
  <category>Research</category>
  <category>TESSERA</category>
  <category>Papers</category>
  <category>SDM</category>
  <guid>https://www.aneeshnaik.com/blogposts/20260703_weeknotes_2026_27.html</guid>
  <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Weeknotes: 2026 Weeks 24 &amp; 25</title>
  <link>https://www.aneeshnaik.com/blogposts/20260619_weeknotes_2026_25.html</link>
  <description><![CDATA[ 




<p>This note covers the last two weeks, from Monday 6th to present. I <em>might</em> settle into a fortnightly pattern rather than a weekly one.</p>
<section id="what-i-was-working-on" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-working-on">What I was working on</h2>
<section id="temperate-rainforests" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="temperate-rainforests">Temperate Rainforests</h3>
<p>Inspired by Guy Shrubsole’s excellent book<sup>1</sup> on the subject, I thought I would make a map of Britain’s temperate rainforest by training a model with <a href="https://geotessera.org/">TESSERA</a>.</p>
<div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;<a href="https://lostrainforestsofbritain.org/">The Lost Rainforests of Britain</a>. That site is the home not just of the book, but of Shrubsole’s wider campaigning around the issue of temperate rainforests and their conservation.</p></div></div><p>Some context:</p>
<ul>
<li>Temperate rainforests are oak-dominated or hazel-dominated woodlands that are very rainy.<sup>2</sup></li>
<li>They occur along the soggy western edge of Britain (hence: “Celtic rainforest”).</li>
<li>They are very biodiverse, hosting internationally important assemblages of bryophytes/lichens/fungi etc.</li>
<li>In Britain, they are rare/fragmented/degraded/overgrazed</li>
<li>They are not well mapped. To my knowledge, the best map to date is the <a href="https://lostrainforestsofbritain.org/2022/12/13/public-create-map-of-britains-lost-rainforests/">crowd-sourced one</a> produced by Guy Shrubsole. This was a fantastic project, but due to its crowd-sourced nature is certain to be incomplete.</li>
</ul>
<div class="no-row-height column-margin column-container"><div id="fn2"><p><sup>2</sup>&nbsp;I’ve hesitated to provide a precise definition of temperate rainforests here because there are multiple philosophies. One can define temperate rainforest climatically, with a rainfall minimum (1400mm/year) and various conditions on temperature variation, humidity etc. A more ecological definition is based on indicator species: the wonderful abundance of epiphytic mosses and liverworts and lichens. The latter definition is more appealling to me: a temperate rainforest <em>feels</em> more special than simply a forest that happens to be rainy: there is life upon life upon life.</p></div></div><p>Given that last point in particular, I wondered: can we map Britain’s temperate rainforests from space?</p>
<p>In 1.5 days at the end of last week, I had an <em>extremely</em> quick and dirty first pass at this.<sup>3</sup> Result below.</p>
<div class="no-row-height column-margin column-container"><div id="fn3"><p><sup>3</sup>&nbsp;Method details: I used a PU (positive-unlabelled) learning algorithm with a LightGBM classifier. For my training data: points scraped from Shrubsole’s rainforest map (P) and random points across GB class-balanced with the UKCEH landcover map (U).</p></div></div><div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260619_rainforest.png" class="img-fluid figure-img" style="width:65.0%" alt="A TESSERA-generated map of temperate rainforest in Great Britain"></p>
<figcaption class="margin-caption">A first attempt at a map of temperate rainforest in Great Britain, produced with a classifier trained with TESSERA.</figcaption>
</figure>
</div>
<p>The map certainly seems to catch a great deal of rainforest down the western seaboard, but also tends to overpredict a little: it flags a lot of wet, woody places that aren’t rainforest, such as birch-dominated boggy woodlands in the North York Moors, or alder-dominated boggy woodland in the New Forest. In ML terms, it seems by eye that the recall is good but the precision is bad.</p>
<p>In the coming weeks, I’ll have a go at improving this map. Primarily, I’ll improve my training data and switch from a PU approach by getting some ‘negative’ examples. That said, we aren’t sure yet whether there is a valuable ‘science’ case (read: publication) for the map, it might just be a fun story to engage the public. If so, still worth pursuing!</p>
</section>
<section id="other-tidbits" class="level3">
<h3 class="anchored" data-anchor-id="other-tidbits">Other Tidbits</h3>
<p><strong>JASMIN.</strong> I got set up with an account on NERC’s <a href="https://www.jasmin.ac.uk/">JASMIN HPC service</a>. I’ve also been made the manager of the Cambridge Forest Ecology group on there, so have been getting to grips with the system. I’m writing up a “JASMIN for Forest Ecologists” user guide for my colleagues within my group, to prevent them paying too much of a startup cost to get going on JASMIN.</p>
<p><strong>Birds.</strong> I had some great meetings these past weeks with people from eBird and BirdLife International about some upcoming projects mapping birds around the world using TESSERA. I spent a lot of time reading around the subject to prepare some research plans. Watch this space!</p>
</section>
</section>
<section id="what-i-was-reading" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-reading">What I was reading</h2>
<p>As noted above, I spent a lot of time reading about species distribution mapping, particularly papers with an emphasis on <em>community</em> mapping. The main challenge here is understanding multi-species assemblages: what drives them, and how to map them.</p>
<p>I’ll highlight one work in particular: <a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/brv.12222">Spatial predictions at the community level</a> by D’Amen et al.&nbsp;(2017)<sup>4</sup>, an excellent review published in Biological Reviews. Here, the authors describe three philosophies in community mapping:</p>
<div class="no-row-height column-margin column-container"><div id="fn4"><p><sup>4</sup>&nbsp;<a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/brv.12222">D’Amen, M., Rahbek, C., Zimmermann, N.E. and Guisan, A. (2017). <em>Spatial predictions at the community level: from current approaches to future frameworks</em>. Biological Reviews.</a></p></div></div><ol type="1">
<li><strong>Assemble first, predict later.</strong> Community-level traits/attributes are predicted as a function of environmental covariates.</li>
<li><strong>Predict first, assemble later.</strong> Single species distributions are predicted as a function of environmental covariates. These are then ‘stacked’ to give community maps.</li>
<li><strong>Assemble and predict together.</strong> Multiple-species distributions are predicted as a function of environmental covariates.</li>
</ol>
<p>The authors point out that the first two philosophies map respectively on to the Clementsian and Gleasonian worldviews I wrote about <a href="../blogposts/20260605_weeknotes_2026_23.html">a few weeks back</a>. The third philosophy is most reflective of a more modern ecological worldview, somewhere between the two extremes: biotic interactions (ignored by Gleason’s worldview) mean that different species <em>do</em> correlate or anti-correlate, but there aren’t rigid, fixed “superorganism” communities as in the Clementsian worldview.</p>
<p>Although this has been the predominant ecological understanding for some time, computational barriers have meant that only recently has there been a significant move towards multi-species distribution mapping.</p>
</section>
<section id="miscellanea" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="miscellanea">Miscellanea</h2>
<section id="borders-abbeys-way" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="borders-abbeys-way">Borders Abbeys Way</h3>
<p>My wife and I have been walking the <a href="https://www.scotlandsgreattrails.com/trail/borders-abbeys-way/">Borders Abbeys Way</a> in stages. Last week we walked the ~22km stretch from Jedburgh to Hawick.<sup>5</sup> This was rather nice, some excellent views from Black Law, and then a lovely stretch along the Teviot up to Hawick. We saw yellowhammers, dippers, and a mating pair of yellow wagtails. This was our first stretch of the Borders Abbeys Way with no (visible) goosanders.<sup>6</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn5"><p><sup>5</sup>&nbsp;I learned three months ago that Hawick is pronounced HOYK.</p></div><div id="fn6"><p><sup>6</sup>&nbsp;Goosanders have played something of a “London buses” role in my life: I went three-and-a-bit decades without knowingly seeing any, then I’ve seen maybe ninety in the past six months.</p></div></div><p>Below is a map of the route. I’ve also uploaded it as a <a href="https://explore.osmaps.com/route/32339770">route on the Ordnance Survey website/app</a>.</p>
<div id="39087af6" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div style="width:100%;"><div style="position:relative;width:100%;height:0;padding-bottom:60%;"><span style="color:#565656">Make this Notebook Trusted to load map: File -&gt; Trust Notebook</span><iframe srcdoc="<!DOCTYPE html>
<html>
<head>
    
    <meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; />
    <script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js&quot;></script>
    <script src=&quot;https://code.jquery.com/jquery-3.7.1.min.js&quot;></script>
    <script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;></script>
    <script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;></script>
    <link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css&quot;/>
    <link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot;/>
    <link rel=&quot;stylesheet&quot; href=&quot;https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css&quot;/>
    <link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css&quot;/>
    <link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/>
    <link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/>
    
            <meta name=&quot;viewport&quot; content=&quot;width=device-width,
                initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; />
            <style>
                #map_69a36bfebc0ad115df8c6ed56bdeef78 {
                    position: relative;
                    width: 100.0%;
                    height: 100.0%;
                    left: 0.0%;
                    top: 0.0%;
                }
                .leaflet-container { font-size: 1rem; }
            </style>

            <style>html, body {
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }
            </style>

            <style>#map {
                position:absolute;
                top:0;
                bottom:0;
                right:0;
                left:0;
                }
            </style>

            <script>
                L_NO_TOUCH = false;
                L_DISABLE_3D = false;
            </script>

        
</head>
<body>
    
    
            <div class=&quot;folium-map&quot; id=&quot;map_69a36bfebc0ad115df8c6ed56bdeef78&quot; ></div>
        
</body>
<script>
    
    
            var map_69a36bfebc0ad115df8c6ed56bdeef78 = L.map(
                &quot;map_69a36bfebc0ad115df8c6ed56bdeef78&quot;,
                {
                    center: [0.0, 0.0],
                    crs: L.CRS.EPSG3857,
                    ...{
  &quot;zoom&quot;: 1,
  &quot;zoomControl&quot;: true,
  &quot;preferCanvas&quot;: false,
}

                }
            );

            

        
    
            var tile_layer_72bf647e61fdcd6024817773a6d7faab = L.tileLayer(
                &quot;https://tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,
                {
  &quot;minZoom&quot;: 0,
  &quot;maxZoom&quot;: 19,
  &quot;maxNativeZoom&quot;: 19,
  &quot;noWrap&quot;: false,
  &quot;attribution&quot;: &quot;\u0026copy; \u003ca href=\&quot;https://www.openstreetmap.org/copyright\&quot;\u003eOpenStreetMap\u003c/a\u003e contributors&quot;,
  &quot;subdomains&quot;: &quot;abc&quot;,
  &quot;detectRetina&quot;: false,
  &quot;tms&quot;: false,
  &quot;opacity&quot;: 1,
}

            );
        
    
            tile_layer_72bf647e61fdcd6024817773a6d7faab.addTo(map_69a36bfebc0ad115df8c6ed56bdeef78);
        
    
            var poly_line_6a43f39b3d196684e55adaa8b3a8e04f = L.polyline(
                [[55.47756, -2.55146], [55.47752, -2.55142], [55.47723, -2.55132], [55.47679, -2.55128], [55.47658, -2.55129], [55.47632, -2.55135], [55.47611, -2.55145], [55.47605, -2.55152], [55.47591, -2.5518], [55.47587, -2.55195], [55.47577, -2.55224], [55.47558, -2.55309], [55.47561, -2.55337], [55.47563, -2.55329], [55.47567, -2.55325], [55.47575, -2.55326], [55.47582, -2.5534], [55.47577, -2.55348], [55.47591, -2.55364], [55.47591, -2.55385], [55.47599, -2.5541], [55.47575, -2.55412], [55.47659, -2.55409], [55.47669, -2.55412], [55.47682, -2.55421], [55.47709, -2.5546], [55.47719, -2.5548], [55.47729, -2.55501], [55.47732, -2.55489], [55.47735, -2.55503], [55.47748, -2.5553], [55.47746, -2.55531], [55.47751, -2.55536], [55.47759, -2.55553], [55.47764, -2.55554], [55.47767, -2.55547], [55.47766, -2.55531], [55.47762, -2.5552], [55.47768, -2.55515], [55.47774, -2.55542], [55.47759, -2.55564], [55.47513, -2.55832], [55.475, -2.5585], [55.47487, -2.5587], [55.4748, -2.5584], [55.4747, -2.55829], [55.47436, -2.5583], [55.47414, -2.55823], [55.47176, -2.55681], [55.47088, -2.55644], [55.47075, -2.55643], [55.47061, -2.55645], [55.47029, -2.55659], [55.46993, -2.55673], [55.46955, -2.5568], [55.46923, -2.55694], [55.46862, -2.55771], [55.46828, -2.55813], [55.46794, -2.55817], [55.46782, -2.55823], [55.46653, -2.55958], [55.46648, -2.55975], [55.46645, -2.5598], [55.46595, -2.56024], [55.46586, -2.56025], [55.46555, -2.56011], [55.46545, -2.56015], [55.46465, -2.56101], [55.46449, -2.56117], [55.46408, -2.56136], [55.46398, -2.5613], [55.4645, -2.56486], [55.465, -2.56834], [55.46546, -2.56959], [55.46544, -2.57003], [55.4655, -2.57016], [55.46568, -2.57014], [55.46588, -2.5702], [55.46622, -2.57052], [55.46664, -2.57181], [55.46682, -2.57235], [55.46753, -2.57524], [55.46758, -2.57548], [55.46761, -2.57554], [55.46764, -2.57555], [55.46757, -2.57574], [55.46474, -2.5783], [55.46433, -2.5787], [55.46378, -2.57926], [55.46367, -2.57933], [55.46241, -2.58041], [55.46092, -2.58174], [55.46083, -2.58188], [55.46029, -2.58239], [55.45788, -2.58416], [55.45557, -2.58583], [55.4555, -2.58586], [55.45547, -2.5859], [55.45395, -2.58701], [55.45333, -2.58751], [55.45247, -2.58813], [55.45245, -2.58832], [55.45242, -2.58854], [55.45234, -2.58873], [55.45261, -2.59022], [55.45292, -2.59152], [55.453, -2.59185], [55.45338, -2.59322], [55.45388, -2.5948], [55.45389, -2.59493], [55.45438, -2.59764], [55.45442, -2.59786], [55.45492, -2.5998], [55.45547, -2.60138], [55.45548, -2.60141], [55.45495, -2.60218], [55.45468, -2.60265], [55.45472, -2.60294], [55.45474, -2.6031], [55.45469, -2.60322], [55.454, -2.60867], [55.45397, -2.60876], [55.45362, -2.60996], [55.45314, -2.61103], [55.4531, -2.61196], [55.45319, -2.61262], [55.45319, -2.61287], [55.4532, -2.61307], [55.45325, -2.61338], [55.45337, -2.61358], [55.45338, -2.61372], [55.45316, -2.61457], [55.45304, -2.61485], [55.45294, -2.61544], [55.45303, -2.61767], [55.45303, -2.61817], [55.45312, -2.61855], [55.45328, -2.61905], [55.45328, -2.61954], [55.45319, -2.61983], [55.45307, -2.62], [55.45301, -2.62017], [55.45297, -2.62037], [55.45296, -2.62055], [55.45277, -2.62067], [55.45269, -2.6208], [55.45263, -2.62105], [55.45262, -2.62116], [55.45224, -2.62135], [55.45182, -2.6215], [55.45143, -2.62173], [55.45124, -2.62182], [55.45102, -2.62196], [55.45087, -2.62199], [55.45061, -2.62194], [55.45009, -2.62222], [55.45004, -2.62227], [55.45002, -2.62238], [55.45003, -2.6225], [55.45014, -2.62293], [55.4502, -2.62303], [55.45136, -2.62772], [55.45258, -2.63276], [55.45268, -2.63318], [55.45239, -2.63332], [55.45206, -2.63338], [55.45208, -2.63355], [55.45216, -2.63388], [55.45224, -2.63431], [55.45224, -2.63446], [55.45221, -2.63475], [55.45214, -2.63513], [55.45207, -2.63532], [55.45179, -2.63617], [55.45176, -2.6363], [55.45173, -2.63691], [55.45161, -2.63719], [55.45159, -2.63728], [55.45159, -2.63737], [55.45163, -2.63745], [55.45187, -2.6376], [55.45202, -2.63774], [55.45185, -2.63758], [55.45179, -2.63767], [55.45167, -2.63774], [55.45099, -2.63788], [55.45086, -2.63799], [55.45053, -2.63848], [55.45035, -2.63868], [55.45028, -2.63887], [55.45029, -2.63904], [55.45032, -2.6442], [55.45032, -2.64466], [55.44919, -2.64566], [55.44902, -2.64605], [55.44895, -2.6463], [55.44894, -2.64675], [55.44898, -2.64703], [55.44928, -2.64754], [55.44927, -2.64826], [55.44925, -2.64957], [55.44925, -2.64963], [55.44781, -2.65131], [55.4481, -2.65291], [55.44873, -2.65388], [55.45017, -2.65559], [55.4502, -2.65571], [55.45035, -2.65596], [55.4504, -2.65617], [55.45046, -2.65634], [55.45055, -2.6564], [55.45091, -2.65639], [55.45098, -2.65642], [55.45105, -2.65653], [55.45128, -2.65731], [55.45134, -2.65746], [55.45142, -2.65752], [55.45152, -2.6575], [55.45179, -2.65707], [55.45183, -2.65721], [55.45197, -2.65757], [55.45199, -2.65779], [55.45199, -2.65799], [55.45201, -2.65812], [55.45232, -2.65851], [55.45237, -2.65869], [55.45242, -2.65936], [55.45415, -2.66495], [55.45417, -2.66493], [55.45357, -2.66587], [55.45362, -2.66603], [55.45386, -2.66691], [55.45493, -2.66913], [55.45504, -2.66945], [55.45506, -2.66953], [55.45515, -2.66998], [55.4553, -2.67132], [55.45541, -2.67258], [55.45545, -2.67473], [55.45542, -2.67518], [55.45533, -2.67566], [55.45504, -2.67664], [55.455, -2.67678], [55.45529, -2.6773], [55.45566, -2.6779], [55.45586, -2.67827], [55.45689, -2.67987], [55.4569, -2.67991], [55.45701, -2.68011], [55.45751, -2.68085], [55.45808, -2.68162], [55.4581, -2.68165], [55.45805, -2.68199], [55.45805, -2.68228], [55.45807, -2.68271], [55.45806, -2.68278], [55.45799, -2.68299], [55.458, -2.68302], [55.4586, -2.68402], [55.45873, -2.68416], [55.45867, -2.68436], [55.45868, -2.68438], [55.45875, -2.6843], [55.45935, -2.68346], [55.4594, -2.68343], [55.45938, -2.68345], [55.45946, -2.68348], [55.45984, -2.6842], [55.45992, -2.6843], [55.46037, -2.68464], [55.4609, -2.68526], [55.46049, -2.68597], [55.45989, -2.68726], [55.45947, -2.68802], [55.45873, -2.68894], [55.45806, -2.68988], [55.45758, -2.69126], [55.4573, -2.69177], [55.45754, -2.69532], [55.45771, -2.69625], [55.45792, -2.69756], [55.45831, -2.70027], [55.45828, -2.70169], [55.45803, -2.70228], [55.45551, -2.70781], [55.45538, -2.70823], [55.45536, -2.70832], [55.45513, -2.71004], [55.45493, -2.71133], [55.45478, -2.71196], [55.45462, -2.71238], [55.45367, -2.71437], [55.45369, -2.71452], [55.45372, -2.7146], [55.45465, -2.71702], [55.4553, -2.71908], [55.45552, -2.71996], [55.45571, -2.72055], [55.45582, -2.72083], [55.45578, -2.72107], [55.45579, -2.72137], [55.45578, -2.72168], [55.4557, -2.7222], [55.4556, -2.72301], [55.45532, -2.72392], [55.4552, -2.72411], [55.45497, -2.72449], [55.45468, -2.72492], [55.45434, -2.72496], [55.4531, -2.72568], [55.45214, -2.72668], [55.45151, -2.72721], [55.45065, -2.72767], [55.44989, -2.72793], [55.44953, -2.72811], [55.44906, -2.72852], [55.44815, -2.7296], [55.44784, -2.72993], [55.44715, -2.73049], [55.44664, -2.73086], [55.44637, -2.7312], [55.4463, -2.73117], [55.4461, -2.73143], [55.44583, -2.73165], [55.4456, -2.73191], [55.44485, -2.73304], [55.44475, -2.73329], [55.44466, -2.73362], [55.44439, -2.73425], [55.44402, -2.73538], [55.44395, -2.73595], [55.44405, -2.7362], [55.44406, -2.73634], [55.44413, -2.73714], [55.44362, -2.73846], [55.44336, -2.73937], [55.44296, -2.73979], [55.44298, -2.73988], [55.44298, -2.73997], [55.44289, -2.74094], [55.44266, -2.74176], [55.4426, -2.74224], [55.44258, -2.74254], [55.44248, -2.74292], [55.442, -2.74433], [55.44199, -2.74447], [55.442, -2.74452], [55.44243, -2.74567], [55.44251, -2.7461], [55.44253, -2.74635], [55.44248, -2.74686], [55.44234, -2.74725], [55.44188, -2.74766], [55.44176, -2.74779], [55.44168, -2.74788], [55.44137, -2.74813], [55.44084, -2.74842], [55.44076, -2.74851], [55.44024, -2.74883], [55.4395, -2.74941], [55.43884, -2.74999], [55.43837, -2.75057], [55.43816, -2.75116], [55.43788, -2.75184], [55.43784, -2.75193], [55.43761, -2.75202], [55.43711, -2.75276], [55.43677, -2.75341], [55.4364, -2.75391], [55.43635, -2.75393], [55.43626, -2.75403], [55.43603, -2.75414], [55.43578, -2.75454], [55.43568, -2.75465], [55.43529, -2.75526], [55.43523, -2.75551], [55.43494, -2.7561], [55.43435, -2.75741], [55.43408, -2.75801], [55.43392, -2.75847], [55.43371, -2.75898], [55.43317, -2.76062], [55.43262, -2.76209], [55.43216, -2.76363], [55.43179, -2.76489], [55.43172, -2.76527], [55.43152, -2.76675], [55.4315, -2.76704], [55.43155, -2.76755], [55.43167, -2.76814], [55.43175, -2.76853], [55.4318, -2.76865], [55.43164, -2.76868], [55.43162, -2.76906], [55.43156, -2.7695], [55.43084, -2.77193], [55.43057, -2.77296], [55.43042, -2.77344], [55.43003, -2.77407], [55.42985, -2.7745], [55.42974, -2.77489], [55.42968, -2.77516], [55.42975, -2.77519], [55.42947, -2.77699], [55.4295, -2.77702], [55.42948, -2.77717], [55.42944, -2.77716], [55.42942, -2.7772], [55.42907, -2.77948], [55.42904, -2.77944], [55.4289, -2.78025], [55.42884, -2.78061], [55.42891, -2.78064], [55.4289, -2.78072], [55.42888, -2.78071], [55.42869, -2.78194], [55.42863, -2.78191], [55.42843, -2.7833], [55.42842, -2.78343], [55.42844, -2.7836], [55.42843, -2.78361], [55.42834, -2.78413], [55.42832, -2.78418], [55.42823, -2.78421], [55.42819, -2.7843], [55.42822, -2.7844]],
                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#e74c3c&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;#e74c3c&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.8, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 5}
            ).addTo(map_69a36bfebc0ad115df8c6ed56bdeef78);
        
    
            map_69a36bfebc0ad115df8c6ed56bdeef78.fitBounds(
                [[55.47756, -2.55146], [55.47752, -2.55142], [55.47723, -2.55132], [55.47679, -2.55128], [55.47658, -2.55129], [55.47632, -2.55135], [55.47611, -2.55145], [55.47605, -2.55152], [55.47591, -2.5518], [55.47587, -2.55195], [55.47577, -2.55224], [55.47558, -2.55309], [55.47561, -2.55337], [55.47563, -2.55329], [55.47567, -2.55325], [55.47575, -2.55326], [55.47582, -2.5534], [55.47577, -2.55348], [55.47591, -2.55364], [55.47591, -2.55385], [55.47599, -2.5541], [55.47575, -2.55412], [55.47659, -2.55409], [55.47669, -2.55412], [55.47682, -2.55421], [55.47709, -2.5546], [55.47719, -2.5548], [55.47729, -2.55501], [55.47732, -2.55489], [55.47735, -2.55503], [55.47748, -2.5553], [55.47746, -2.55531], [55.47751, -2.55536], [55.47759, -2.55553], [55.47764, -2.55554], [55.47767, -2.55547], [55.47766, -2.55531], [55.47762, -2.5552], [55.47768, -2.55515], [55.47774, -2.55542], [55.47759, -2.55564], [55.47513, -2.55832], [55.475, -2.5585], [55.47487, -2.5587], [55.4748, -2.5584], [55.4747, -2.55829], [55.47436, -2.5583], [55.47414, -2.55823], [55.47176, -2.55681], [55.47088, -2.55644], [55.47075, -2.55643], [55.47061, -2.55645], [55.47029, -2.55659], [55.46993, -2.55673], [55.46955, -2.5568], [55.46923, -2.55694], [55.46862, -2.55771], [55.46828, -2.55813], [55.46794, -2.55817], [55.46782, -2.55823], [55.46653, -2.55958], [55.46648, -2.55975], [55.46645, -2.5598], [55.46595, -2.56024], [55.46586, -2.56025], [55.46555, -2.56011], [55.46545, -2.56015], [55.46465, -2.56101], [55.46449, -2.56117], [55.46408, -2.56136], [55.46398, -2.5613], [55.4645, -2.56486], [55.465, -2.56834], [55.46546, -2.56959], [55.46544, -2.57003], [55.4655, -2.57016], [55.46568, -2.57014], [55.46588, -2.5702], [55.46622, -2.57052], [55.46664, -2.57181], [55.46682, -2.57235], [55.46753, -2.57524], [55.46758, -2.57548], [55.46761, -2.57554], [55.46764, -2.57555], [55.46757, -2.57574], [55.46474, -2.5783], [55.46433, -2.5787], [55.46378, -2.57926], [55.46367, -2.57933], [55.46241, -2.58041], [55.46092, -2.58174], [55.46083, -2.58188], [55.46029, -2.58239], [55.45788, -2.58416], [55.45557, -2.58583], [55.4555, -2.58586], [55.45547, -2.5859], [55.45395, -2.58701], [55.45333, -2.58751], [55.45247, -2.58813], [55.45245, -2.58832], [55.45242, -2.58854], [55.45234, -2.58873], [55.45261, -2.59022], [55.45292, -2.59152], [55.453, -2.59185], [55.45338, -2.59322], [55.45388, -2.5948], [55.45389, -2.59493], [55.45438, -2.59764], [55.45442, -2.59786], [55.45492, -2.5998], [55.45547, -2.60138], [55.45548, -2.60141], [55.45495, -2.60218], [55.45468, -2.60265], [55.45472, -2.60294], [55.45474, -2.6031], [55.45469, -2.60322], [55.454, -2.60867], [55.45397, -2.60876], [55.45362, -2.60996], [55.45314, -2.61103], [55.4531, -2.61196], [55.45319, -2.61262], [55.45319, -2.61287], [55.4532, -2.61307], [55.45325, -2.61338], [55.45337, -2.61358], [55.45338, -2.61372], [55.45316, -2.61457], [55.45304, -2.61485], [55.45294, -2.61544], [55.45303, -2.61767], [55.45303, -2.61817], [55.45312, -2.61855], [55.45328, -2.61905], [55.45328, -2.61954], [55.45319, -2.61983], [55.45307, -2.62], [55.45301, -2.62017], [55.45297, -2.62037], [55.45296, -2.62055], [55.45277, -2.62067], [55.45269, -2.6208], [55.45263, -2.62105], [55.45262, -2.62116], [55.45224, -2.62135], [55.45182, -2.6215], [55.45143, -2.62173], [55.45124, -2.62182], [55.45102, -2.62196], [55.45087, -2.62199], [55.45061, -2.62194], [55.45009, -2.62222], [55.45004, -2.62227], [55.45002, -2.62238], [55.45003, -2.6225], [55.45014, -2.62293], [55.4502, -2.62303], [55.45136, -2.62772], [55.45258, -2.63276], [55.45268, -2.63318], [55.45239, -2.63332], [55.45206, -2.63338], [55.45208, -2.63355], [55.45216, -2.63388], [55.45224, -2.63431], [55.45224, -2.63446], [55.45221, -2.63475], [55.45214, -2.63513], [55.45207, -2.63532], [55.45179, -2.63617], [55.45176, -2.6363], [55.45173, -2.63691], [55.45161, -2.63719], [55.45159, -2.63728], [55.45159, -2.63737], [55.45163, -2.63745], [55.45187, -2.6376], [55.45202, -2.63774], [55.45185, -2.63758], [55.45179, -2.63767], [55.45167, -2.63774], [55.45099, -2.63788], [55.45086, -2.63799], [55.45053, -2.63848], [55.45035, -2.63868], [55.45028, -2.63887], [55.45029, -2.63904], [55.45032, -2.6442], [55.45032, -2.64466], [55.44919, -2.64566], [55.44902, -2.64605], [55.44895, -2.6463], [55.44894, -2.64675], [55.44898, -2.64703], [55.44928, -2.64754], [55.44927, -2.64826], [55.44925, -2.64957], [55.44925, -2.64963], [55.44781, -2.65131], [55.4481, -2.65291], [55.44873, -2.65388], [55.45017, -2.65559], [55.4502, -2.65571], [55.45035, -2.65596], [55.4504, -2.65617], [55.45046, -2.65634], [55.45055, -2.6564], [55.45091, -2.65639], [55.45098, -2.65642], [55.45105, -2.65653], [55.45128, -2.65731], [55.45134, -2.65746], [55.45142, -2.65752], [55.45152, -2.6575], [55.45179, -2.65707], [55.45183, -2.65721], [55.45197, -2.65757], [55.45199, -2.65779], [55.45199, -2.65799], [55.45201, -2.65812], [55.45232, -2.65851], [55.45237, -2.65869], [55.45242, -2.65936], [55.45415, -2.66495], [55.45417, -2.66493], [55.45357, -2.66587], [55.45362, -2.66603], [55.45386, -2.66691], [55.45493, -2.66913], [55.45504, -2.66945], [55.45506, -2.66953], [55.45515, -2.66998], [55.4553, -2.67132], [55.45541, -2.67258], [55.45545, -2.67473], [55.45542, -2.67518], [55.45533, -2.67566], [55.45504, -2.67664], [55.455, -2.67678], [55.45529, -2.6773], [55.45566, -2.6779], [55.45586, -2.67827], [55.45689, -2.67987], [55.4569, -2.67991], [55.45701, -2.68011], [55.45751, -2.68085], [55.45808, -2.68162], [55.4581, -2.68165], [55.45805, -2.68199], [55.45805, -2.68228], [55.45807, -2.68271], [55.45806, -2.68278], [55.45799, -2.68299], [55.458, -2.68302], [55.4586, -2.68402], [55.45873, -2.68416], [55.45867, -2.68436], [55.45868, -2.68438], [55.45875, -2.6843], [55.45935, -2.68346], [55.4594, -2.68343], [55.45938, -2.68345], [55.45946, -2.68348], [55.45984, -2.6842], [55.45992, -2.6843], [55.46037, -2.68464], [55.4609, -2.68526], [55.46049, -2.68597], [55.45989, -2.68726], [55.45947, -2.68802], [55.45873, -2.68894], [55.45806, -2.68988], [55.45758, -2.69126], [55.4573, -2.69177], [55.45754, -2.69532], [55.45771, -2.69625], [55.45792, -2.69756], [55.45831, -2.70027], [55.45828, -2.70169], [55.45803, -2.70228], [55.45551, -2.70781], [55.45538, -2.70823], [55.45536, -2.70832], [55.45513, -2.71004], [55.45493, -2.71133], [55.45478, -2.71196], [55.45462, -2.71238], [55.45367, -2.71437], [55.45369, -2.71452], [55.45372, -2.7146], [55.45465, -2.71702], [55.4553, -2.71908], [55.45552, -2.71996], [55.45571, -2.72055], [55.45582, -2.72083], [55.45578, -2.72107], [55.45579, -2.72137], [55.45578, -2.72168], [55.4557, -2.7222], [55.4556, -2.72301], [55.45532, -2.72392], [55.4552, -2.72411], [55.45497, -2.72449], [55.45468, -2.72492], [55.45434, -2.72496], [55.4531, -2.72568], [55.45214, -2.72668], [55.45151, -2.72721], [55.45065, -2.72767], [55.44989, -2.72793], [55.44953, -2.72811], [55.44906, -2.72852], [55.44815, -2.7296], [55.44784, -2.72993], [55.44715, -2.73049], [55.44664, -2.73086], [55.44637, -2.7312], [55.4463, -2.73117], [55.4461, -2.73143], [55.44583, -2.73165], [55.4456, -2.73191], [55.44485, -2.73304], [55.44475, -2.73329], [55.44466, -2.73362], [55.44439, -2.73425], [55.44402, -2.73538], [55.44395, -2.73595], [55.44405, -2.7362], [55.44406, -2.73634], [55.44413, -2.73714], [55.44362, -2.73846], [55.44336, -2.73937], [55.44296, -2.73979], [55.44298, -2.73988], [55.44298, -2.73997], [55.44289, -2.74094], [55.44266, -2.74176], [55.4426, -2.74224], [55.44258, -2.74254], [55.44248, -2.74292], [55.442, -2.74433], [55.44199, -2.74447], [55.442, -2.74452], [55.44243, -2.74567], [55.44251, -2.7461], [55.44253, -2.74635], [55.44248, -2.74686], [55.44234, -2.74725], [55.44188, -2.74766], [55.44176, -2.74779], [55.44168, -2.74788], [55.44137, -2.74813], [55.44084, -2.74842], [55.44076, -2.74851], [55.44024, -2.74883], [55.4395, -2.74941], [55.43884, -2.74999], [55.43837, -2.75057], [55.43816, -2.75116], [55.43788, -2.75184], [55.43784, -2.75193], [55.43761, -2.75202], [55.43711, -2.75276], [55.43677, -2.75341], [55.4364, -2.75391], [55.43635, -2.75393], [55.43626, -2.75403], [55.43603, -2.75414], [55.43578, -2.75454], [55.43568, -2.75465], [55.43529, -2.75526], [55.43523, -2.75551], [55.43494, -2.7561], [55.43435, -2.75741], [55.43408, -2.75801], [55.43392, -2.75847], [55.43371, -2.75898], [55.43317, -2.76062], [55.43262, -2.76209], [55.43216, -2.76363], [55.43179, -2.76489], [55.43172, -2.76527], [55.43152, -2.76675], [55.4315, -2.76704], [55.43155, -2.76755], [55.43167, -2.76814], [55.43175, -2.76853], [55.4318, -2.76865], [55.43164, -2.76868], [55.43162, -2.76906], [55.43156, -2.7695], [55.43084, -2.77193], [55.43057, -2.77296], [55.43042, -2.77344], [55.43003, -2.77407], [55.42985, -2.7745], [55.42974, -2.77489], [55.42968, -2.77516], [55.42975, -2.77519], [55.42947, -2.77699], [55.4295, -2.77702], [55.42948, -2.77717], [55.42944, -2.77716], [55.42942, -2.7772], [55.42907, -2.77948], [55.42904, -2.77944], [55.4289, -2.78025], [55.42884, -2.78061], [55.42891, -2.78064], [55.4289, -2.78072], [55.42888, -2.78071], [55.42869, -2.78194], [55.42863, -2.78191], [55.42843, -2.7833], [55.42842, -2.78343], [55.42844, -2.7836], [55.42843, -2.78361], [55.42834, -2.78413], [55.42832, -2.78418], [55.42823, -2.78421], [55.42819, -2.7843], [55.42822, -2.7844]],
                {}
            );
        
</script>
</html>" style="position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen=""></iframe></div></div>
</div>
</div>


</section>
</section>


 ]]></description>
  <category>Weeknotes</category>
  <category>Research</category>
  <category>TESSERA</category>
  <category>Maps</category>
  <category>Papers</category>
  <category>Ecology</category>
  <category>Birds</category>
  <guid>https://www.aneeshnaik.com/blogposts/20260619_weeknotes_2026_25.html</guid>
  <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Weeknotes: 2026 Week 23</title>
  <link>https://www.aneeshnaik.com/blogposts/20260605_weeknotes_2026_23.html</link>
  <description><![CDATA[ 




<p>I’ve been up in Edinburgh this week after a fun couple of weeks down in Cambridge.</p>
<section id="what-i-was-working-on" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-working-on">What I was working on</h2>
<section id="research" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="research">Research</h3>
<p>I made incremental progress on various projects. Don’t want to plant too many flags here yet until these are a <em>little</em> more mature. However, a couple of exciting bits:</p>
<p><strong>KBAs.</strong> I’m going to be working with <a href="https://www.birdlife.org/">BirdLife International</a> on finding new candidates for <a href="https://www.keybiodiversityareas.org/">Key Biodiversity Areas (KBAs)</a>. These are areas around the world flagged as key for conservation.</p>
<p>The criteria for identifying KBAs are a little complicated, and the existing method for longlisting KBAs involves many repeated iterations of manual validation (and is therefore quite expensive). We’re hoping to find a clever way, likely with TESSERA (see below), to automate a little bit of the longlisting.</p>
<p>This past week, BirdLife shared some of their data with me and I’ve started getting my teeth into it.</p>
<p><strong>TESSERA v1.1.</strong> I wrote about <a href="https://geotessera.org/">TESSERA</a> in last week’s notes. This past week, a new version (1.1) has been released.<sup>1</sup> This addresses some issues with v1.0, such as tiling artefacts. It also goes a little farther out from the coast everywhere. I’ve spent a bit of time playing around with the new embeddings, <a href="https://tze.geotessera.org/?store=v1.1">which are very pretty</a>!</p>
<div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;My very small contribution to v1.1 was my involvement in the discussion of landmask choice. In arguing for a more generous coastal buffer, my ulterior motive was that I would really like to make a nice goose map.</p></div></div></section>
<section id="python-package-datahues" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="python-package-datahues">Python package: <code>datahues</code></h3>
<p>Yesterday I tidied up and released a python package I made some months back. It’s called <a href="https://github.com/aneeshnaik/datahues"><code>datahues</code></a>, and has a very simple functionality: given two colours, generate a perceptually uniform colour ramp between them. I find myself needing<sup>2</sup> to do this all the time and in the past have always just bodged around with some quite complicated colour-space libraries, so I thought I would write a simple utility for it. It’s now available on PyPI and conda-forge.</p>
<div class="no-row-height column-margin column-container"><div id="fn2"><p><sup>2</sup>&nbsp;“Needing” is perhaps too strong a word here.</p></div></div><p>Here is the figure from the README, demonstrating the need for the utility:</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260605_ramp_comparison.png" class="img-fluid figure-img" alt="Two colour ramps: one perceptually uniform, the other not." width="600"></p>
<figcaption class="margin-caption">Plots of some mock data (2D Gaussian mixture), comparing a naïve linear RGB colour ramp versus a ramp generated with <code>datahues</code>. The start and end colours here are #F61212 (“Pure Red”) and #12F612 (“Lime”).</figcaption>
</figure>
</div>
<p>In the left-hand panel, the green transitions very unevenly to red: there is some awful banding in the transition zone. Without perceptual uniformity (as in the right-hand panel), one might well see patterns in data that aren’t truly there.</p>
<p>Here is a map I made with <code>datahues</code> a few months ago, depicting the annual number of sunshine hours across GB:</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260605_sunshine.png" class="img-fluid figure-img" style="width:60.0%" alt="A map of annual sunshine hours across GB."></p>
<figcaption class="margin-caption">Map of annual sunshine hours across GB. In truth, this isn’t really the archetypal use case for <code>datahues</code>: the map uses a series of discrete steps along the ramp, so would probably get away without strict perceptual uniformity. The map uses Met Office data licensed under the Open Government Licence v3.0. <a href="https://catalogue.ceda.ac.uk/uuid/f02cc6ddd92f45b18b9ab6ab544df7d9">Met Office (2025), <em>HadUK-Grid Gridded Climate Observations on a 1km grid over the UK, v1.3.1.ceda (1836-2024)</em>. NERC EDS Centre for Environmental Data Analysis.</a></figcaption>
</figure>
</div>
<p>It is very gloomy in the Highlands!</p>
</section>
</section>
<section id="what-i-was-reading" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-reading">What I was reading</h2>
<p>Having written a first draft of my research plan <a href="../blogposts/20260529_weeknotes_2026_22.html">last week</a>, I spent a lot of time this week reading around the various topics that I plan to work on. Both contemporary methodological papers and some of older “classics” and foundational works.</p>
<p>One work in particular I thought I would write about is “Gradient Analysis of Vegetation” by R. H. Whittaker (1967).<sup>3</sup> This was quite an important review work in vegetation ecology. Whittaker was interested in vegetation communities and how they are spatially distributed. The central idea he argued for is the “individualistic” concept, in which each species has its own unique response to environmental gradients. Observed communities then are just incidental assemblages of species at a given point along the gradient.</p>
<div class="no-row-height column-margin column-container"><div id="fn3"><p><sup>3</sup>&nbsp;<a href="https://onlinelibrary.wiley.com/doi/10.1111/j.1469-185X.1967.tb01419.x">Whittaker, R.H. (1967). <em>Gradient Analysis of Vegetation</em>. Biological Reviews.</a></p></div></div><div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260605_whittaker.png" class="img-fluid figure-img" style="width:65.0%" alt="A figure from Whittaker 1967, showing various tree species' distributions as a function of environmental moisture level."></p>
<figcaption class="margin-caption">Tree species distributions as a function of moisture level in the Smoky Mountains. Idem. Figure 3, top panel.</figcaption>
</figure>
</div>
<p>Above, I’m reproducing a figure from the paper, showing distributions of major tree species in the Smoky Mountains. Each curve is the distribution of a single species as a function of environmental moisture level, from mesic (wet) to xeric (dry) with increasing x. The point being made here is that no two species have the same curve: each species shows an individualistic response to the environmental gradient. According to Whittaker, if you stand in a certain place and observe N species, that is an incidental assemblage of N species for which that environment falls within the acceptable range. It will be slightly less acceptable to some of them than others.</p>
<p>These ideas didn’t originate with Whittaker: they are known as the “Gleasonian” paradigm, having originated in the earlier 1920s work of Harry Gleason. Whittaker’s work arguing in favour of the Gleasonian paradigm was rather controversial. It stood against the prevailing “Clementsian” paradigm, which understood communities as discrete, bounded units, with relatively sharp boundaries (“ecotones”) between them.</p>
</section>
<section id="miscellanea" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="miscellanea">Miscellanea</h2>
<section id="garden" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="garden">Garden</h3>
<p>Our vegetable seedlings had a bit of an adventure in May. They travelled 800 miles and lived in four different houses. Now, they’re finally in the ground in our garden in Edinburgh.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260605_seedlings.jpg" class="img-fluid figure-img" style="width:65.0%" alt="A photograph of some seedlings in vegetable patch."></p>
<figcaption class="margin-caption">Photograph of sweetcorn and courgette seedlings in our garden. Forgive the scruffy environs!</figcaption>
</figure>
</div>
<p>These are sweetcorn and yellow courgettes. We’re growing them in the same bed (along with some upcoming borlotti beans), following the “three sisters” method of companion planting. The idea is that the corn provides a rigid structure for the beans to climb, while the beans fix nitrogen in the soil. The courgettes, meanwhile, provide ground cover to retain moisture and suppress weeds.</p>
<p>All of our seeds were F1 varieties, a decision I now regret a little. Having recently read Dan Saladino’s excellent book <a href="https://www.dansaladino.com/about-the-book"><em>Eating to Extinction</em></a>, I’m a zealous convert to the idea of preserving traditional, open-pollinated seed varieties. Doing so helps preserve food heritage, rare flavours, and genetic diversity. Next year!<sup>4</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn4"><p><sup>4</sup>&nbsp;In particular, I’m planning to join the <a href="https://www.gardenorganic.org.uk/what-we-do/hsl">Heritage Seed Library</a>.</p></div></div></section>
<section id="clerihews" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="clerihews">Clerihews</h3>
<p>I learned this week about a very silly poetic form: the <a href="https://en.wikipedia.org/wiki/Clerihew">clerihew</a>. 4 lines, AABB, whimsical and funny, with the rhymes often extremely contrived and the metre absolutely all over the place. They were invented around the start of the twentieth century by Edmund Clerihew Bentley, and they are typically biographical, with the subject of the poem being the first line. For example, from Bentley’s 1905 <a href="https://www.gutenberg.org/ebooks/46691"><em>Biography for Beginners</em></a>:<sup>5</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn5"><p><sup>5</sup>&nbsp;Bentley, E. C. (1905). <em>Biography for Beginners</em>. Read Books.</p></div></div><blockquote class="blockquote">
<p>Sir Humphry Davy<br>
Abominated gravy.<br>
He lived in the odium<br>
Of having discovered sodium.</p>
</blockquote>
<p>Another example, also from Bentley’s collection:</p>
<blockquote class="blockquote">
<p>The people of Spain think Cervantes<br>
Equal to half-a-dozen Dantes:<br>
An opinion resented most bitterly<br>
By the people of Italy.</p>
</blockquote>
<p>They aren’t always biographical. My favourite is from the introduction of Bentley’s collection, and is about the very nature of biography:</p>
<blockquote class="blockquote">
<p>The Art of Biography<br>
Is different from Geography.<br>
Geography is about Maps,<br>
But Biography is about Chaps.</p>
</blockquote>


</section>
</section>


 ]]></description>
  <category>Weeknotes</category>
  <category>Research</category>
  <category>TESSERA</category>
  <category>Maps</category>
  <category>Gardening</category>
  <category>Papers</category>
  <category>Code</category>
  <category>Ecology</category>
  <category>KBAs</category>
  <guid>https://www.aneeshnaik.com/blogposts/20260605_weeknotes_2026_23.html</guid>
  <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Weeknotes: 2026 Week 22</title>
  <link>https://www.aneeshnaik.com/blogposts/20260529_weeknotes_2026_22.html</link>
  <description><![CDATA[ 




<p>In the group I’ve joined at the University of Cambridge, there is something of a culture of writing “weeknotes” at the end of each week. The idea being to keep everyone up to date with what one is up to, but also to encourage one to be a little reflective and create some soft accountability. I’m also using it as an excuse to resurrect a blog that has long been in abeyance.</p>
<section id="what-i-was-working-on" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-working-on">What I was working on</h2>
<section id="tessera" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="tessera">TESSERA</h3>
<p><a href="https://geotessera.org/">TESSERA</a> is a geospatial foundation model developed here in Cambridge. It providing a vast, rich dataset of “embeddings”: summary vectors for every 10m pixel on the planet. My new job is to do a bunch of conservation science with these embeddings.</p>
<p>This past week, I had my first proper play with the embeddings. I used them to train a very basic ML model, making some toy habitat maps of the <a href="https://www.clr.conservation.cam.ac.uk/">Centre for Landscape Regeneration</a> project areas (the Cairngorms, the Fens, and Cumbria). These were just quick and dirty first passes to get a ‘feel’ for Tessera.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260529_cairngorms.png" class="img-fluid figure-img" alt="A habitat map of the Cairngorms" width="300"></p>
<figcaption class="margin-caption">A habitat map of the Cairngorms. Haven’t included a legend, but suffice it to say that most things are heather, bog, or coniferous woodland (the Caledonian Forest!)</figcaption>
</figure>
</div>
</section>
<section id="research-plan" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="research-plan">Research plan</h3>
<p>I spent a lot of the week thinking about my longer term research goals, both for the coming years in Cambridge and the years thereafter. I’ve written up a first draft of a research plan, just 3 pages. I won’t go into too much detail about it here, but it has been fun reading around a lot of the literature (see below!). One detail I will add here is that I used the typeface <a href="https://en.wikipedia.org/wiki/Bembo">Bembo</a>, which I’ve gotten very into recently.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260529_bembo.png" class="img-fluid figure-img" alt="A research plan written in Bembo" width="600"></p>
<figcaption class="margin-caption">A research plan written in Bembo.</figcaption>
</figure>
</div>
</section>
<section id="maps" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="maps">100 Maps</h3>
<p>I used the Bank Holiday Monday to get a bit of work done on my side project (“100 Maps of Britain”, hoping to have a page about that on this site soon!). One of the maps is of linguistic roots of British place names. Here, I learned about the <a href="https://en.wikipedia.org/wiki/Landsker_Line">Landsker line</a>, a surprisingly sharp linguistic boundary in south Pembrokeshire between regions of predominantly English names (south) and Welsh place names (north). The line is thought to have been formed in the 12th century, when the Normans established themselves in the area and encouraged English settlement.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260529_lebw.png" class="img-fluid figure-img" alt="Predominantly English place names south of the Landsker line" width="300"></p>
<figcaption class="margin-caption">Predominantly English place names south of the Landsker line.</figcaption>
</figure>
</div>
</section>
</section>
<section id="what-i-was-reading" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-i-was-reading">What I was reading</h2>
<section id="research-literature" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="research-literature">Research Literature</h3>
<p>I read a bunch of stuff around: agri-environment schemes, causal inference, and some of the older back-catalogue of papers around the “land sharing” versus “land sparing” debate.<sup>1</sup></p>
<div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;Including many papers from <a href="https://www.zoo.cam.ac.uk/research/conservation-science/conservation-science">Andrew Balmford’s group</a> here at the Conservation Research Institute in Cambridge.</p></div></div><p>The idea here is that there are two broad approaches one could take to grow a fixed amount of food across a landscape: modern, intensive agriculture at a few sites and pristine nature reserves elsewhere (land sparing), or low-intensity, nature-friendly agriculture everywhere (land sharing).</p>
<p>Of course, the reality is not so much a binary as a spectrum. Nonetheless, evidence is beginning to accumulate in favour of approaches towards the land-sparing end of the spectrum.</p>
<p>This is a nuanced question, and I won’t be able to do it justice yet. Planning to read more about it in coming weeks.</p>
</section>
<section id="elsewhere" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="elsewhere">Elsewhere</h3>
<p>Less work-related, I’ve been reading “What the Railways Did For Us” by Stuart Hylton. A very well-researched and funny book about the coming of the railways to Britain and their impact on society, such as the impact on the economy, on cities, and even on the class system.</p>
<p>The opening chapter, concerning everyone’s grumbles about the initial spread of railways, was particularly memorable. Here is Wilhelm I, Kaiser of Prussia, on the subject:</p>
<div class="page-columns page-full"><blockquote class="blockquote">
<p>No one will pay good money to get from Berlin to Potsdam in one hour when he can ride his horse there in one day for free.<sup>2</sup></p>
</blockquote><div class="no-row-height column-margin column-container"><div id="fn2"><p><sup>2</sup>&nbsp;Wilhelm I (1864) quoted in ‘What the Railways Did For Us’, Stuart Hylton, (p15).</p></div></div></div>
<p>Parts of the discussion struck a painfully familiar note:</p>
<div class="page-columns page-full"><blockquote class="blockquote">
<p>Partly as a result of all this process, Britain became the most expensive country in the world in which to get consent for a railway. Sometimes the parliamentary process alone could cost thousands of pounds a mile, added to which some landowners might extract quite exorbitant payments for their land as the price for removing their objections.<sup>3</sup></p>
</blockquote><div class="no-row-height column-margin column-container"><div id="fn3"><p><sup>3</sup>&nbsp;Discussion regarding difficulties in establishing railways in mid-19th century Britain. Idem, (p19). I can’t quite get over the gutting of HS2. Perhaps I’m reading this book a little too soon.</p></div></div></div>
</section>
</section>
<section id="miscellanea" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="miscellanea">Miscellanea</h2>
<p>Over the long weekend I saw a <em>lot</em> of birds at WWT Welney, including my first ever crane!</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260529_crane.jpg" class="img-fluid figure-img" alt="Photograph of cranes at WWT Welney" width="500"></p>
<figcaption class="margin-caption">Cranes at WWT Welney. Not my photograph! Credit: WWT.</figcaption>
</figure>
</div>
<p>I’m using a new ink: “Lie de Thé” by J. Herbin. As implied by the name, it’s a beautiful deep-brown colour, I like it a lot.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://www.aneeshnaik.com/assets/blogpost_images/20260529_ink.jpg" class="img-fluid figure-img" alt="Sample of my new ink" width="500"></p>
<figcaption class="margin-caption">Photograph of a sample of my new ink.</figcaption>
</figure>
</div>


</section>


 ]]></description>
  <category>Weeknotes</category>
  <category>Research</category>
  <category>TESSERA</category>
  <category>Maps</category>
  <category>Birds</category>
  <category>Books</category>
  <category>Papers</category>
  <category>Conservation</category>
  <guid>https://www.aneeshnaik.com/blogposts/20260529_weeknotes_2026_22.html</guid>
  <pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
