<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>James Greenhalgh on digital strategy, marine conservation, and adventures.</title>
    <link>https://jamesgreenblue.com/</link>
    <description>Recent content on James Greenhalgh on digital strategy, marine conservation, and adventures.</description>
    <image>
      <title>James Greenhalgh on digital strategy, marine conservation, and adventures.</title>
      <url>https://jamesgreenblue.com/img/jgb-banner.png</url>
      <link>https://jamesgreenblue.com/img/jgb-banner.png</link>
    </image>
    <generator>Hugo -- 0.148.2</generator>
    <language>en-gb</language>
    <copyright>This work is licensed under a Creative Commons Attribution 4.0 International License.</copyright>
    <lastBuildDate>Tue, 12 Aug 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://jamesgreenblue.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Giving credit for the vibes</title>
      <link>https://jamesgreenblue.com/blog/2025/credit-the-vibes/</link>
      <pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2025/credit-the-vibes/</guid>
      <description>&lt;p&gt;With a little prompting, Gemini generated a working Tampermonkey script as documented in &lt;a href=https://jamesgreenblue.com/blog/2025/name-users-in-amplitude/
    
    
&gt;Identify your users by name in Amplitude&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To conclude the conversation I asked, &lt;em&gt;&amp;ldquo;How can I credit you as an author?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;figure class=&#34;quote&#34;&gt;
  &lt;blockquote&gt;
	  &lt;p&gt;That&amp;rsquo;s very thoughtful of you! If you plan to share the script with others (e.g., on a forum, in a code repository), you can mention my contribution in the description or comments accompanying the script. For example:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>With a little prompting, Gemini generated a working Tampermonkey script as documented in <a href=https://jamesgreenblue.com/blog/2025/name-users-in-amplitude/
    
    
>Identify your users by name in Amplitude</a>.</p>
<p>To conclude the conversation I asked, <em>&ldquo;How can I credit you as an author?&rdquo;</em></p>
<figure class="quote">
  <blockquote>
	  <p>That&rsquo;s very thoughtful of you! If you plan to share the script with others (e.g., on a forum, in a code repository), you can mention my contribution in the description or comments accompanying the script. For example:</p>
<ul>
<li>&ldquo;Author: [Your Name], with significant contributions from an AI Assistant (Gemini).&rdquo;</li>
</ul>
<p>If you&rsquo;re just using it for your own personal use, crediting within the script header is usually sufficient. You don&rsquo;t need to go out of your way to mention it elsewhere unless you feel it&rsquo;s appropriate.</p>
<p><strong>Important Note:</strong></p>
<p>As an AI, I don&rsquo;t have a personal identity in the same way a human author does. Using &ldquo;AI Assistant (Gemini)&rdquo; or simply &ldquo;Gemini&rdquo; is an accurate way to attribute the assistance I&rsquo;ve provided.</p>
<p>Thank you for considering crediting me! It&rsquo;s a nice gesture. If you have any other questions or need further help, feel free to ask.</p>

  </blockquote>
  <figcaption>
		<cite title="Google Gemini 2.5 Flash">
      &mdash;
      <a href="https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash" target="_blank" rel="noopener noreferrer">Google Gemini 2.5 Flash</a>
      
		</cite>
  </figcaption>
</figure>
<p>As we increasingly rely on AI coding assistants, it makes sense to me that we give credit for this work rather than trying to pass it off as our own. This also signposts to potential users that the project may not have received the same level of scruitiny as code written from scratch.</p>
<p>This is what I will be doing for personal projects going forwards.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Identify your users by name in Amplitude</title>
      <link>https://jamesgreenblue.com/blog/2025/name-users-in-amplitude/</link>
      <pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2025/name-users-in-amplitude/</guid>
      <description>&lt;p&gt;Amplitude is a decent product analytics tool, but there is no compromise when it comes to identification. User IDs are fixed forever and all data is immutable once it lands in the platform – names and email addresses are not an option.&lt;/p&gt;
&lt;p&gt;Knowing the name of a user can unlock insight by giving context to usage patterns, especially in early-stage projects with a handful of users who are working at the same company.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Amplitude is a decent product analytics tool, but there is no compromise when it comes to identification. User IDs are fixed forever and all data is immutable once it lands in the platform – names and email addresses are not an option.</p>
<p>Knowing the name of a user can unlock insight by giving context to usage patterns, especially in early-stage projects with a handful of users who are working at the same company.</p>
<p>I&rsquo;m not aware of a way to make annotations directly in Amplitude; all data has to arrive over their API. Anyway, doing this would expose personally identifiable information (PII) to a third party.</p>
<p>To solve this, <a href=https://jamesgreenblue.com/blog/2025/credit-the-vibes/
    
    
>I worked with Gemini</a> to develop a <a href=https://tampermonkey.net
    
    target=_blank rel="noopener"
>Tampermonkey</a> userscript that finds and replaces the user ID with text of your choosing. For the uninitiated, Tampermonkey is a browser extension that lets you change how websites function.</p>
<p>To do the same simply:</p>
<ol>
<li>Install <a href=https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
    
    target=_blank rel="noopener"
>Tampermonkey</a></li>
<li>Copy the code below:</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="c1">// ==UserScript==
</span></span></span><span class="line"><span class="cl"><span class="c1">// @name         Amplitude named user profiles
</span></span></span><span class="line"><span class="cl"><span class="c1">// @namespace    https://jamesgreenblue.com/
</span></span></span><span class="line"><span class="cl"><span class="c1">// @version      0.1
</span></span></span><span class="line"><span class="cl"><span class="c1">// @description  Finds and replaces user profile names in Amplitude
</span></span></span><span class="line"><span class="cl"><span class="c1">// @author       James Greenhalgh, with significant contributions from an AI Assistant (Gemini)
</span></span></span><span class="line"><span class="cl"><span class="c1">// @match        *://app.amplitude.com/*
</span></span></span><span class="line"><span class="cl"><span class="c1">// @grant        none
</span></span></span><span class="line"><span class="cl"><span class="c1">// ==/UserScript==
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s1">&#39;use strict&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">replaceArry</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="sr">/user_cva3bbm9i077dn133b2h/gi</span><span class="p">,</span> <span class="s1">&#39;james.g&#39;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="sr">/user_cva4gge9i077spp33b3h/gi</span><span class="p">,</span> <span class="s1">&#39;joe.b&#39;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">[</span><span class="sr">/user_cva64re9i078i0h33b41/gi</span><span class="p">,</span> <span class="s1">&#39;jane.d&#39;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// Add more replacements here
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="p">];</span>
</span></span><span class="line"><span class="cl">    <span class="kd">var</span> <span class="nx">numTerms</span> <span class="o">=</span> <span class="nx">replaceArry</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kd">function</span> <span class="nx">replaceTextInNode</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">===</span> <span class="nx">Node</span><span class="p">.</span><span class="nx">TEXT_NODE</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="kd">let</span> <span class="nx">oldTxt</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">nodeValue</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="kd">let</span> <span class="nx">newTxt</span> <span class="o">=</span> <span class="nx">oldTxt</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">numTerms</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">newTxt</span> <span class="o">=</span> <span class="nx">newTxt</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">replaceArry</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">replaceArry</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">1</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nx">newTxt</span> <span class="o">!==</span> <span class="nx">oldTxt</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">node</span><span class="p">.</span><span class="nx">nodeValue</span> <span class="o">=</span> <span class="nx">newTxt</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">===</span> <span class="nx">Node</span><span class="p">.</span><span class="nx">ELEMENT_NODE</span> <span class="o">&amp;&amp;</span> <span class="nx">node</span><span class="p">.</span><span class="nx">childNodes</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">node</span><span class="p">.</span><span class="nx">childNodes</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">replaceTextInNode</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// Initial scan of the document
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="nx">replaceTextInNode</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// Observe for future changes
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="kr">const</span> <span class="nx">observer</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">MutationObserver</span><span class="p">(</span><span class="nx">mutations</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">mutations</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">mutation</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">mutation</span><span class="p">.</span><span class="nx">addedNodes</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">node</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">===</span> <span class="nx">Node</span><span class="p">.</span><span class="nx">ELEMENT_NODE</span> <span class="o">||</span> <span class="nx">node</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">===</span> <span class="nx">Node</span><span class="p">.</span><span class="nx">TEXT_NODE</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="nx">replaceTextInNode</span><span class="p">(</span><span class="nx">node</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">});</span>
</span></span><span class="line"><span class="cl">            <span class="c1">// For text content changes within existing nodes
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>            <span class="k">if</span> <span class="p">(</span><span class="nx">mutation</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;characterData&#39;</span> <span class="o">&amp;&amp;</span> <span class="nx">mutation</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="nx">replaceTextInNode</span><span class="p">(</span><span class="nx">mutation</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nx">observer</span><span class="p">.</span><span class="nx">observe</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">,</span> <span class="p">{</span> <span class="nx">subtree</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">childList</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">characterData</span><span class="o">:</span> <span class="kc">true</span> <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">})();</span>
</span></span></code></pre></td></tr></table>
</div>
</div><ol start="3">
<li>Edit the rows in <code>replaceArry</code> to match the ID you see in Amplitude with the name you would like to see instead. Add more replacements if necessary. I suggest avoiding full names to minimise PII on your local machine.</li>
<li>Save and enable the script in Tampermonkey</li>
<li>Gain insight</li>
</ol>
<p>This userscript is also <a href=https://github.com/jamesgreenblue/tm-name-users-in-amplitude
    
    target=_blank rel="noopener"
>published on GitHub</a> if you would like to fork your own version or report issues.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Self-hosting Metabase for fun and non-profit</title>
      <link>https://jamesgreenblue.com/blog/2023/metabase-traefik-compose/</link>
      <pubDate>Fri, 07 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2023/metabase-traefik-compose/</guid>
      <description>&lt;p&gt;&lt;a href=https://reef-world.org
    
    target=_blank rel=&#34;noopener&#34;
&gt;Reef-World&lt;/a&gt; holds 14+ years of environmental impact data collected from Green Fins assessments. This data was trapped in silos and needed human effort to manually export and transform CSV files into something meaningful.&lt;/p&gt;
&lt;p&gt;Impact data is used by the team to understand how environmental threats have evolved over time by location and industry. With the &lt;a href=https://www.unep.org/news-and-stories/press-release/coral-reef-protection-grow-green-fins-hub
    
    target=_blank rel=&#34;noopener&#34;
&gt;introduction&lt;/a&gt; of &lt;a href=https://greenfins.net/digital-membership/
    
    target=_blank rel=&#34;noopener&#34;
&gt;Green Fins digital membership&lt;/a&gt;, we needed a way to ground truth self-evaluation data and understand if Green Fins Hub engagement was having the intended behaviour centred design (BCD) impact.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href=https://reef-world.org
    
    target=_blank rel="noopener"
>Reef-World</a> holds 14+ years of environmental impact data collected from Green Fins assessments. This data was trapped in silos and needed human effort to manually export and transform CSV files into something meaningful.</p>
<p>Impact data is used by the team to understand how environmental threats have evolved over time by location and industry. With the <a href=https://www.unep.org/news-and-stories/press-release/coral-reef-protection-grow-green-fins-hub
    
    target=_blank rel="noopener"
>introduction</a> of <a href=https://greenfins.net/digital-membership/
    
    target=_blank rel="noopener"
>Green Fins digital membership</a>, we needed a way to ground truth self-evaluation data and understand if Green Fins Hub engagement was having the intended behaviour centred design (BCD) impact.</p>
<p>I was also keen to:</p>
<ul>
<li>cross reference Green Fins data with publicly available ocean health datasets.</li>
<li>open Reef-World&rsquo;s data to our stakeholder network.</li>
<li>empower users to generate their own reports and data visualisations.</li>
</ul>
<p>Enter BigQuery and Metabase.</p>
<p>For the uninitiated, <a href=https://www.metabase.com/
    
    target=_blank rel="noopener"
>Metabase</a> is an open source self-service business intelligence (BI) reporting solution. <a href=https://cloud.google.com/bigquery
    
    target=_blank rel="noopener"
>BigQuery</a> is Google&rsquo;s fully managed, serverless data warehouse. Raw data is piped into BigQuery and tidied (with filters, joins, calculations, etc) in views. Metabase enables RWF Staff and trusted partners to generate their own insights by asking questions to query that abstracted data. These questions can then be saved as reports and used to build rich dashboards that can be shared with anyone in the Green Fins network.</p>
<p>I opted for an on-prem (<em>&ldquo;manage it yourself&rdquo;</em>) deployment of Metabase using Docker on a generic Linux virtual machine (2 vCPUs, 16 GiB memory). Postgres (with <a href=https://www.metabase.com/docs/latest/databases/encrypting-details-at-rest
    
    target=_blank rel="noopener"
>encrypted connection information</a>) is used for application data. <a href=https://traefik.io/
    
    target=_blank rel="noopener"
>Traefik</a> sits in front of Metabase to provide SSL termination (and generates <a href=https://letsencrypt.org/
    
    target=_blank rel="noopener"
>Let’s Encrypt</a> certificates).</p>
<p>The template I created for this project is available on GitHub (<a href=https://github.com/jamesgreenblue/metabase-traefik-compose
    
    target=_blank rel="noopener"
>jamesgreenblue/metabase-traefik-compose</a>). Hopefully others in the community who are self-hosting will find this a useful starting point – especially if considering Traefik instead of Nginx.</p>
<p>Change is welcome so please don&rsquo;t hesitate to <a href=https://github.com/jamesgreenblue/metabase-traefik-compose/issues/new
    
    target=_blank rel="noopener"
>open an issue</a> if you spot a problem, or open a pull request for enhancements. Feedback is also welcome in this <a href=https://discourse.metabase.com/t/production-ready-docker-compose-file-to-deploy-self-hosted-metabase-with-ssl/25882
    
    target=_blank rel="noopener"
>Metabase community topic</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ChatGPT on digital strategy for marine conservation</title>
      <link>https://jamesgreenblue.com/blog/2023/chatgpt-digital-strategy-marine-conservation/</link>
      <pubDate>Sun, 22 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2023/chatgpt-digital-strategy-marine-conservation/</guid>
      <description>&lt;p&gt;Jumping on the bandwagon, I asked ChatGPT (Jan 9 Version) to draft a post for this blog and answer a series of follow up questions in the same thread. Here are my thoughts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Training and running a model like ChatGPT requires significant computational resources. I would like to see developers publishing precise &lt;a href=https://towardsdatascience.com/the-carbon-footprint-of-chatgpt-66932314627d
    
    target=_blank rel=&#34;noopener&#34;
&gt;energy consumption and carbon footprint&lt;/a&gt; figures and considering environmental impact as a key measure of their machine learning model&amp;rsquo;s performance (alongside accuracy, precision, recall, etc).&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Jumping on the bandwagon, I asked ChatGPT (Jan 9 Version) to draft a post for this blog and answer a series of follow up questions in the same thread. Here are my thoughts:</p>
<ul>
<li>
<p>Training and running a model like ChatGPT requires significant computational resources. I would like to see developers publishing precise <a href=https://towardsdatascience.com/the-carbon-footprint-of-chatgpt-66932314627d
    
    target=_blank rel="noopener"
>energy consumption and carbon footprint</a> figures and considering environmental impact as a key measure of their machine learning model&rsquo;s performance (alongside accuracy, precision, recall, etc).</p>
</li>
<li>
<p>It’s not just about the environment - at the risk of stating the obvious, the quality of the language output produced by these models is also closely tied to the training data. And with AI-generated content becoming increasingly prevalent, there’s a risk that we’ll see sterilisation of our languages and inaccuracies perpetuated. Misinformation and polarisation online are already major issues, encouraged by the attention economy underpinning social media and news platforms – it’s likely that AI-generated content will only make things worse. To combat this, we need to develop new business models or networks of trust to authenticate the accuracy of information. Easier said than done!</p>
</li>
<li>
<p>Another issue to consider is how copyright holders will react to the inclusion of their works in proprietary models. And with AI developers potentially enforcing their own copyrights on the output, it raises questions about the ethics of passing off AI-generated content as original work. I’m trying to keep an open mind but don’t currently buy the argument that you can claim credit for a work simply by crafting the prompt.</p>
</li>
<li>
<p>While previewing ChatGPT has been a compelling experience, it’s important that we are mindful of the potential negative consequences of AI advancements and adapt to them in a way that doesn&rsquo;t cause environmental damage or stifle original thinking.</p>
</li>
</ul>
<h5 id="the-responses-below-were-generated-by-chatgpt-a-large-language-model-developed-by-openai-"><em>The responses below were generated by ChatGPT, a large language model developed by OpenAI (<a href=https://openai.com
    
    target=_blank rel="noopener"
>https://openai.com</a>). It should not be taken as professional advice or as a substitute for expert opinion:</em></h5>
<h3 id="prompt-write-a-blog-post-about-the-latest-principles-of-digital-strategy-applied-to-marine-conservation-challenges"><em>Prompt:</em> Write a blog post about the latest principles of digital strategy applied to marine conservation challenges</h3>
<blockquote>
<p>Digital strategy is becoming an increasingly important tool in the fight to protect our oceans and marine life. With the rise of technology, we now have the ability to collect and analyze vast amounts of data on ocean health, track marine species, and engage with the public in new and innovative ways. In this blog post, we will explore some of the latest principles of digital strategy applied to marine conservation challenges.</p>
<p>One key principle of digital strategy in marine conservation is the use of data and analytics. With the development of new technologies, we are now able to collect and analyze vast amounts of data on ocean health, such as water temperature, pH levels, and the presence of pollutants. This data can be used to identify areas of concern and track changes over time, allowing conservationists to make more informed decisions about where to focus their efforts.</p>
<p>Another principle of digital strategy in marine conservation is the use of technology to track marine species. For example, satellite tracking can be used to track the movements of marine animals such as whales and sharks, providing valuable information about their migration patterns and habitat use. This data can then be used to identify areas of critical habitat and develop conservation plans to protect these species.</p>
<p>Digital engagement is also an important principle in marine conservation. Social media and other online platforms are powerful tools for raising awareness about ocean conservation issues and engaging the public in conservation efforts. For example, conservation organizations can use social media to share information about ocean health and conservation efforts, and to encourage people to take action, such as by supporting conservation initiatives or reducing their own environmental footprint.</p>
<p>Finally, a crucial principle of digital strategy in marine conservation is the use of virtual and augmented reality technology to immerse people in the ocean environment, and to educate them about the importance of protecting it. This technology can be used to create virtual tours of marine protected areas, allowing people to experience the ocean and its inhabitants in a way that would otherwise be impossible.</p>
<p>Overall, the use of digital strategy in marine conservation is crucial in order to protect the ocean and its inhabitants. By leveraging data and analytics, tracking marine species, engaging the public, and using virtual and augmented reality technology, conservationists can better understand and address the challenges facing our oceans.</p></blockquote>
<h3 id="prompt-how-can-i-get-involved-in-digital-marine-conservation-efforts"><em>Prompt:</em> How can I get involved in digital marine conservation efforts?</h3>
<blockquote>
<p>There are many ways to get involved in digital marine conservation efforts:</p>
<p><strong>1. Participate in citizen science projects:</strong> Many organizations and researchers rely on the help of volunteers to collect data and monitor marine species. You can find opportunities to participate in citizen science projects through online platforms such as SciStarter or Zooniverse.</p>
<p><strong>2. Support conservation organizations:</strong> Many conservation organizations are using digital tools to protect marine life and habitats. You can support these organizations by making donations or volunteering your time.</p>
<p><strong>3. Share and promote conservation messages:</strong> You can use social media and other online platforms to raise awareness about marine conservation issues and encourage others to take action.</p>
<p><strong>4. Support sustainable seafood:</strong> You can use digital tools such as apps and websites to make sustainable seafood choices, and to avoid supporting unsustainable fishing practices.</p>
<p><strong>5. Be an ocean advocate:</strong> You can use your voice to advocate for marine conservation policies and legislation. You can also use digital tools to connect with other ocean advocates and to stay informed about conservation issues.</p>
<p><strong>6. Educate yourself:</strong> You can use digital tools such as websites, videos, or virtual reality to learn more about the ocean and marine conservation.</p>
<p><strong>7. Get involved in local conservation efforts:</strong> Many marine conservation efforts take place at the local level, and you can get involved by volunteering your time or expertise, attending meetings and events, or supporting local conservation organizations.</p>
<p>Overall, there are many ways to get involved in digital marine conservation efforts, whether it’s through volunteering your time, supporting organizations, promoting conservation messages, or educating yourself and others.</p></blockquote>
<h3 id="prompt-how-else-can-digital-tools-play-a-role-in-marine-conservation"><em>Prompt:</em> How else can digital tools play a role in marine conservation?</h3>
<blockquote>
<p>Digital tools can play a number of additional roles in marine conservation, including:</p>
<p><strong>1. Crowdsourcing:</strong> Platforms such as citizen science projects can be used to engage the public in data collection and analysis. This can be a useful way to gather information about marine species and habitats, and to identify areas of concern.</p>
<p><strong>2. Remote sensing:</strong> Satellite imagery and drones can be used to monitor and map coastal and marine habitats. This data can be used to identify areas of habitat loss, track changes over time, and identify areas that need conservation efforts.</p>
<p><strong>3. Predictive modeling:</strong> Digital tools can be used to create predictive models that can help conservationists to understand how marine ecosystems may respond to different scenarios, such as changing ocean temperatures or pollution levels.</p>
<p><strong>4. Communication and education:</strong> Digital tools can be used to create interactive educational resources and to communicate conservation messages to a wider audience. For example, virtual reality and augmented reality can be used to create immersive educational experiences that teach people about the ocean and the importance of conservation.</p>
<p><strong>5. Monitoring and enforcement:</strong> Digital tools can be used to monitor and enforce marine conservation efforts, such as the use of cameras and drones to detect and deter illegal activities such as fishing or pollution in marine protected areas.</p>
<p><strong>6. Community engagement:</strong> Digital tools can facilitate the engagement of local communities in marine conservation efforts, through platforms such as online forums, social media and other digital tools. This can help to ensure that conservation efforts are inclusive and take into account the needs and perspectives of local communities.</p>
<p>Overall, digital tools can play a vital role in marine conservation by helping to gather and analyze data, predict potential issues, educate and engage the public, monitor and enforce conservation efforts, and facilitate community engagement.</p></blockquote>
<h3 id="prompt-please-list-the-sources-of-this-information"><em>Prompt:</em> Please list the sources of this information</h3>
<blockquote>
<p>As I am an AI model, I don’t have sources to cite as I have been trained on a wide range of texts. However, the information I provided is based on general knowledge and understanding of digital tools in marine conservation, and it is not specific to any particular research or study. There are many organizations and studies that have been working on the application of digital tools in marine conservation. You can find more information on this topic by searching for articles, reports, and studies from reputable sources such as scientific journals, conservation organizations, and government agencies.</p></blockquote>
<p>The writing style could be tightened by removing the repetition of the question, otherwise the blog post response covers several effective strategies and the follow up answers are convincing 👏</p>
]]></content:encoded>
    </item>
    <item>
      <title>What’s all the fuss about static site generators?</title>
      <link>https://jamesgreenblue.com/blog/2022/whats-all-the-fuss-about-static-site-generators/</link>
      <pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2022/whats-all-the-fuss-about-static-site-generators/</guid>
      <description>&lt;p&gt;Somewhat late to the party, jamesgreenblue.com is now a static website built using Hugo. Statically generated websites consume less energy as all pages and assets are pre-built – the promise of halving the carbon cost of my blog was a powerful motivator.&lt;/p&gt;
&lt;p&gt;According to one website carbon calculator, now only &lt;a href=https://www.websitecarbon.com/website/jamesgreenblue-com/
    
    target=_blank rel=&#34;noopener&#34;
&gt;0.01 g of CO2 is produced&lt;/a&gt; every time someone visits a page. It’s also lovely to have faster load times, improved security and not have to think about Wordpress updates 😅&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Somewhat late to the party, jamesgreenblue.com is now a static website built using Hugo. Statically generated websites consume less energy as all pages and assets are pre-built – the promise of halving the carbon cost of my blog was a powerful motivator.</p>
<p>According to one website carbon calculator, now only <a href=https://www.websitecarbon.com/website/jamesgreenblue-com/
    
    target=_blank rel="noopener"
>0.01 g of CO2 is produced</a> every time someone visits a page. It’s also lovely to have faster load times, improved security and not have to think about Wordpress updates 😅</p>
<p>If you are looking to build a website that’s both speedy and environmentally friendly then I would recommend experimenting with static site generators.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Giving this another go</title>
      <link>https://jamesgreenblue.com/blog/2022/hello-world/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2022/hello-world/</guid>
      <description>&lt;p&gt;Writing the first post for a new blog is, to me, a lot like starting a fresh notebook, or buying a new piece of diving equipment. There is trepidation about getting started mixed with excitement about what will come from it.&lt;/p&gt;
&lt;p&gt;At some point you have to stop worrying about it and just start somewhere. So lets go!&lt;/p&gt;
&lt;p&gt;(This is my third attempt, so to give myself a head start I have collated a few posts written for other sites.)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Writing the first post for a new blog is, to me, a lot like starting a fresh notebook, or buying a new piece of diving equipment. There is trepidation about getting started mixed with excitement about what will come from it.</p>
<p>At some point you have to stop worrying about it and just start somewhere. So lets go!</p>
<p>(This is my third attempt, so to give myself a head start I have collated a few posts written for other sites.)</p>
]]></content:encoded>
    </item>
    <item>
      <title>&#34;Evolutionary marvels&#34;</title>
      <link>https://jamesgreenblue.com/blog/2021/evolutionary-marvels/</link>
      <pubDate>Thu, 11 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2021/evolutionary-marvels/</guid>
      <description>&lt;p&gt;The Reef-World team was recently asked to summarise why we care about coral reefs to support &lt;a href=https://www.icriforum.org/
    
    target=_blank rel=&#34;noopener&#34;
&gt;ICRI&lt;/a&gt; ’s recommendation that &lt;a href=https://greenfins.net/blog/coral-reef-importance/
    
    target=_blank rel=&#34;noopener&#34;
&gt;coral reefs must be prioritised&lt;/a&gt; in the Convention on Biological Diversity’s (CBD) post-2020 Global Biodiversity Framework (GBF).&lt;/p&gt;
&lt;p&gt;Here is my answer:&lt;/p&gt;
&lt;figure class=&#34;quote&#34;&gt;
  &lt;blockquote&gt;
	  Visiting coral reefs is to visit life: to see the building blocks of the ocean. As a freediver, I love the diversity of colours and structures of coral reefs – a sanctuary for abundant and unique marine life – but also because corals exist in a place free from distractions that we can only visit fleetingly and in the moment. I love the simplicity of taking a single breath and spending a few minutes in a world that is so different and yet so intrinsically linked to our own.
  &lt;/blockquote&gt;
  &lt;figcaption&gt;
		&lt;cite title=&#34;James Greenhalgh&#34;&gt;
      &amp;mdash;
      &lt;a href=&#34;https://jamesgreenblue.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;James Greenhalgh&lt;/a&gt;
      
		&lt;/cite&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <content:encoded><![CDATA[<p>The Reef-World team was recently asked to summarise why we care about coral reefs to support <a href=https://www.icriforum.org/
    
    target=_blank rel="noopener"
>ICRI</a> ’s recommendation that <a href=https://greenfins.net/blog/coral-reef-importance/
    
    target=_blank rel="noopener"
>coral reefs must be prioritised</a> in the Convention on Biological Diversity’s (CBD) post-2020 Global Biodiversity Framework (GBF).</p>
<p>Here is my answer:</p>
<figure class="quote">
  <blockquote>
	  Visiting coral reefs is to visit life: to see the building blocks of the ocean. As a freediver, I love the diversity of colours and structures of coral reefs – a sanctuary for abundant and unique marine life – but also because corals exist in a place free from distractions that we can only visit fleetingly and in the moment. I love the simplicity of taking a single breath and spending a few minutes in a world that is so different and yet so intrinsically linked to our own.
  </blockquote>
  <figcaption>
		<cite title="James Greenhalgh">
      &mdash;
      <a href="https://jamesgreenblue.com/" target="_blank" rel="noopener noreferrer">James Greenhalgh</a>
      
		</cite>
  </figcaption>
</figure>
]]></content:encoded>
    </item>
    <item>
      <title>Saving coral reefs with digital impact</title>
      <link>https://jamesgreenblue.com/blog/2020/saving-coral-reefs-with-digital-impact/</link>
      <pubDate>Sat, 31 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2020/saving-coral-reefs-with-digital-impact/</guid>
      <description>&lt;p&gt;&lt;em&gt;This post originally appeared on &lt;a href=https://reef-world.org/blog/digital-impact
    
    target=_blank rel=&#34;noopener&#34;
&gt;The Reef-World Foundation&lt;/a&gt; website.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;From my very first day at Reef-World, I have wanted to present the Green Fins dive and snorkel centre members on an interactive map. A technical challenge but one that would be hugely beneficial to our members as well as eco-minded tourists. If you’ve been on the &lt;a href=https://greenfins.net/
    
    target=_blank rel=&#34;noopener&#34;
&gt;Green Fins website&lt;/a&gt; recently, you may have spotted this is one of many exciting updates we have been able to make.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><em>This post originally appeared on <a href=https://reef-world.org/blog/digital-impact
    
    target=_blank rel="noopener"
>The Reef-World Foundation</a> website.</em></p>
<p>From my very first day at Reef-World, I have wanted to present the Green Fins dive and snorkel centre members on an interactive map. A technical challenge but one that would be hugely beneficial to our members as well as eco-minded tourists. If you’ve been on the <a href=https://greenfins.net/
    
    target=_blank rel="noopener"
>Green Fins website</a> recently, you may have spotted this is one of many exciting updates we have been able to make.</p>
<figure>
    <img loading="lazy" src="/media/2022/greenfins-website-homepage.png"/> <figcaption>
            A screenshot of the Green Fins website homepage
        </figcaption>
</figure>

<p>While digital innovation has always been important, the ongoing global COVID-19 pandemic makes it even more so. Digital transformation provides a way for us to make a head start on educating tourists about green practices and helping operators improve their sustainability while waiting for tourism to reopen. Global travel may be on pause right now but actions that protect coral reefs don’t need to be.</p>
<p>A key goal of Reef-World’s 20–21 digital strategy is for Green Fins to better cater to individual tourists, encouraging them to engage with the programme before they travel. Raising awareness of environmental best practice pre-departure will increase the chance that tourists will <a href=https://greenfins.net/countries/
    
    target=_blank rel="noopener"
>choose member operators</a> who are taking steps to protect coral reefs and follow <a href=https://greenfins.net/material/gf_all_eng_cocguidelinesdiver_a4_pdf/
    
    target=_blank rel="noopener"
>Green Fins best practice</a> while enjoying these precious environments. By doing this we are streamlining the process for tourists to find those operators that have lower impacts on the reef which protects them in the long term.</p>
<p>Before the re-launch, there were two Green Fins websites: the main website and a separate database housing the listings of all Green Fins members. The different designs of the two sites made for a disjointed experience; it was hard to casually browse to the member listings and, once there, it wasn’t obvious how to go back. Reef-World used these platforms because they were the best sticking plaster at the time, providing a way for the team to fundraise and publish content without having to pay a developer for each change. It has been exciting personally to help the charity overcome hurdles that were previously inaccessible without in-house digital skills.</p>
<p>I’m thrilled that we can now present Green Fins members on an interactive world map. This makes it much easier for website visitors to discover Green Fins operators in destinations where they might be considering a trip. As a result of being more easily discoverable, we anticipate Green Fins members will receive more enquiries from the growing number of tourists actively seeking out more sustainable operators.</p>
<p>As the programme continues to grow in popularity, it is important that we build solutions with scaling in mind so we can handle peaks in visitor traffic; for example, when the <a href=https://greenfins.net/news-media/#green-fins-in-the-news
    
    target=_blank rel="noopener"
>programme is featured in the news</a> or when Reef-World <a href=https://reef-world.org/blog/scuba-digital-panel
    
    target=_blank rel="noopener"
>exhibits at conferences</a>. This would have been too expensive to accomplish reliably with our previous setup.</p>
<p>When planning the new website, we had to think carefully about our requirements, our priorities and what we could realistically accomplish during the time available. Due to factors outside our control, we had less than 90 days to go live. To make the most of that time, we identified the functionality that was essential for launch and focused on delivering that in time for the cut off. After researching our options, I recommended we conduct the development in-house: building on WordPress with specialist hosting and making use of existing third-party plugins where possible.</p>
<p>Reef-World is a small team that punches above our weight when we come together on projects. Between us, we:</p>
<ul>
<li>designed and coded a new visual layout to improve the visibility of active Green Fins members,</li>
<li>restructured and redrafted the website content, simplifying the content structure to appeal to tourists and emphasise the resources Reef-World creates to support divers, snorkellers and the wider industry,</li>
<li>installed and configured three WordPress development environments (live, staging, sandbox) to safely build and test changes without disrupting live visitors on the website,</li>
<li>migrated the back catalogue of news and blog posts so we didn’t lose this valuable record,</li>
<li>optimised the site for search engines to be easily found online,</li>
<li>established a link to send information between the Green Fins database and the new website so that member information is automatically refreshed every 4 hours,</li>
<li>plotted the GPS coordinates for each member location for accurate map display,</li>
<li>uploaded and filtered downloadable materials to make it easy for end users to find appropriate materials,</li>
<li>tested the experience to ensure it worked as expected and, ultimately,</li>
<li>transitioned between the two solutions without breaking anything!</li>
</ul>
<p>Phew! As I’m sure you can imagine, this much work kept us all busy right up until launch day. Despite this the website went live on time and under budget, a second phase of enhancements is planned for later this year.</p>
<p>The new website is much more member centric and informative for tourists wanting to learn about the initiative and what they can do to protect coral reefs. Reducing local direct threats from tourism will increase reef resilience and contribute to the long term survival of this critical ecosystem. I couldn’t be happier with the outcome of the project and am excited to see more people diving with Green Fins operators and being mindful when they visit coral reef destinations as a result. We now plan to build on this success with a <a href=https://www.unenvironment.org/news-and-stories/story/digital-hub-designed-protect-coral-reefs-shortlisted-global-award
    
    target=_blank rel="noopener"
>new digital innovation project</a> to spread the word about sustainable diving and snorkelling – onwards and upwards!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Surviving paradise during COVID-19</title>
      <link>https://jamesgreenblue.com/blog/2020/surviving-paradise-during-covid-19/</link>
      <pubDate>Wed, 29 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/blog/2020/surviving-paradise-during-covid-19/</guid>
      <description>&lt;p&gt;&lt;em&gt;This post originally appeared on &lt;a href=https://reef-world.org/blog/surviving-paradise-during-covid-19
    
    target=_blank rel=&#34;noopener&#34;
&gt;The Reef-World Foundation&lt;/a&gt; website.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On the last day of June 2019, I made the decision to swap Bristol for South East Asia. I’d realised that, if I truly wanted to make a meaningful contribution to marine conservation, leaving my job would give me the dedicated time and headspace I needed to find a new challenge. Fast forward a year and I now work from Reef-World’s Philippines field office on &lt;a href=https://reef-world.org/blog/meet-james
    
    target=_blank rel=&#34;noopener&#34;
&gt;Digital Strategy and supporting Green Fins implementation around the world&lt;/a&gt; – a dream come true!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><em>This post originally appeared on <a href=https://reef-world.org/blog/surviving-paradise-during-covid-19
    
    target=_blank rel="noopener"
>The Reef-World Foundation</a> website.</em></p>
<p>On the last day of June 2019, I made the decision to swap Bristol for South East Asia. I’d realised that, if I truly wanted to make a meaningful contribution to marine conservation, leaving my job would give me the dedicated time and headspace I needed to find a new challenge. Fast forward a year and I now work from Reef-World’s Philippines field office on <a href=https://reef-world.org/blog/meet-james
    
    target=_blank rel="noopener"
>Digital Strategy and supporting Green Fins implementation around the world</a> – a dream come true!</p>
<figure>
    <img loading="lazy" src="/media/2022/IMG_5565.jpeg"/> <figcaption>
            Photo of a YBR125G motorbike being repaired
        </figcaption>
</figure>

<p>The Philippines is a fantastic place to be based: there are challenges to living here – including time zones (the other day I had a conference call at midnight!), keeping on top of bike maintenance, all administration being done in person, and a lack of traffic lights – but I’ve enjoyed learning how things work and finding solutions. Outside work, my spare time was dedicated to travelling around the island, hiking, scuba, and freediving – that is, until the impact of COVID-19 was felt around the world. My advice to thrive is to own a pair of breathable trekking shoes and obtain a motorbike license (not forgetting an international permit from the Post Office!) if you don’t have one already.</p>
<p>The Philippines entered a state of lockdown shortly after I arrived back from <a href=https://www.greenfins.net/blog/dive-like-an-egyptian-with-green-fins
    
    target=_blank rel="noopener"
>Egypt</a> in March with each province implementing community quarantine measures to slow the spread. Tourists and other locally stranded individuals were, effectively, confined to Negros Oriental. Sea and airports were closed, a 9pm curfew was imposed, and only one household member was allowed to go out for essentials on specified days. I moved down the coastline from Dumaguete City to spend the lockdown in Dauin. Here, I could live with a group of friends and still be in close proximity to the ocean.</p>
<p>At the height of lockdown, the Philippines entered Enhanced Community Quarantine (ECQ) which made ocean swimming off limits. It’s been frustrating to be so tantalisingly close to corals you can’t visit. However, hearing about the situation in the UK from friends and family back home made me appreciate the positive environment and relative stability we’ve enjoyed in Negros Oriental, despite the heavy restrictions.</p>
<p>From a professional perspective, the global pandemic has limited the <a href=https://reef-world.org/staff
    
    target=_blank rel="noopener"
>Reef-World team’s</a> ability to travel – effectively, pausing all capacity building fieldwork. It has also prevented our country partners from conducting their annual Green Fins assessments, a key tenet of the programme (there is every intention to restart those activities when it is safe to do so).</p>
<p>Before the pandemic, my time was evenly split between digital strategy and capacity building for Green Fins. The lockdown has provided a golden opportunity to focus on, and fast forward development of, digital tools to upscale Green Fins. My primary focus is building the Green Fins Global Hub: a first-of-its-kind digital membership system. The Hub will build on what we do on the ground (provide relevant environmental recommendations and solutions) by enabling us to access operators in harder-to-reach areas. By helping operators, no matter their location, reduce their environmental impact we can have a significant, positive impact on the sustainability of the sector globally. The project has just progressed to the finals of the <a href=https://conservationxlabs.com/cxtp3-announcement
    
    target=_blank rel="noopener"
>Con X Tech Prize, Round 3</a> which is now in a <a href=https://conservationx.com/project/key/greenfinsglobalhub
    
    target=_blank rel="noopener"
>12-week prototyping period</a> and we plan to begin software engineering later this year. It has been good to dedicate a chunk of time to this project and see a concept that Reef-World has wanted to develop for the last two years gradually come to life.</p>
<p>While the Philippines’ borders remain closed to visitors, internal restrictions are slowly beginning to lift; it is now possible to ocean swim for exercise and scuba diving is allowed provided social distancing and related protocols are followed. I am looking forward to a time when travel restrictions are completely lifted and we can restart fieldwork but, in the meantime, digital initiatives are keeping us fully occupied.</p>
<figure>
    <img loading="lazy" src="/media/2022/IMG_5835.jpeg"/> <figcaption>
            It’s more fun in the Philippines!
        </figcaption>
</figure>

]]></content:encoded>
    </item>
    <item>
      <title>Digital strategy, marine conservation, and adventures</title>
      <link>https://jamesgreenblue.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://jamesgreenblue.com/about/</guid>
      <description>&lt;p&gt;Hello, I’m &lt;strong&gt;James&lt;/strong&gt; – you can also find me on &lt;a href=https://github.com/jamesgreenblue
    
    target=_blank rel=&#34;noopener&#34;
&gt;GitHub&lt;/a&gt;, &lt;a href=https://www.linkedin.com/in/jamesgreenblue/
    
    target=_blank rel=&#34;noopener&#34;
&gt;LinkedIn&lt;/a&gt;, and &lt;a href=https://instagram.com/jamesgreenblue
    
    target=_blank rel=&#34;noopener&#34;
&gt;Instagram&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;

&lt;img class=&#34;in-text&#34; height=&#34;160&#34; src=&#34;https://jamesgreenblue.com/media/2023/about-james-diving-in.jpeg&#34; alt=&#34;Surfacing from a scuba dive&#34;&gt;



&lt;img class=&#34;in-text&#34; height=&#34;160&#34; src=&#34;https://jamesgreenblue.com/media/2023/about-james-diving-up.jpeg&#34; alt=&#34;Pretending to drive a dive boat&#34;&gt;



&lt;img class=&#34;in-text&#34; height=&#34;160&#34; src=&#34;https://jamesgreenblue.com/media/2023/about-james-work-headshot.jpeg&#34; alt=&#34;Work profile photo&#34;&gt;
&lt;/p&gt;
&lt;p&gt;Roughly 0-2 times per year I write here about what I’m interested in or working on in the moment, partly for my own reference but also to be helpful to others trying to do the same thing.&lt;/p&gt;
&lt;p&gt;I work mostly on &lt;a href=https://www.unep.org/news-and-stories/story/digital-hub-designed-protect-coral-reefs-shortlisted-global-award
    
    target=_blank rel=&#34;noopener&#34;
&gt;digital&lt;/a&gt; &lt;a href=https://greenfins.net/
    
    target=_blank rel=&#34;noopener&#34;
&gt;innovation&lt;/a&gt; &lt;a href=https://cdr30.org/
    
    target=_blank rel=&#34;noopener&#34;
&gt;projects&lt;/a&gt; with a climate or marine conservation focus: no green without blue.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hello, I’m <strong>James</strong> – you can also find me on <a href=https://github.com/jamesgreenblue
    
    target=_blank rel="noopener"
>GitHub</a>, <a href=https://www.linkedin.com/in/jamesgreenblue/
    
    target=_blank rel="noopener"
>LinkedIn</a>, and <a href=https://instagram.com/jamesgreenblue
    
    target=_blank rel="noopener"
>Instagram</a>.</p>
<p>

<img class="in-text" height="160" src="/media/2023/about-james-diving-in.jpeg" alt="Surfacing from a scuba dive">



<img class="in-text" height="160" src="/media/2023/about-james-diving-up.jpeg" alt="Pretending to drive a dive boat">



<img class="in-text" height="160" src="/media/2023/about-james-work-headshot.jpeg" alt="Work profile photo">
</p>
<p>Roughly 0-2 times per year I write here about what I’m interested in or working on in the moment, partly for my own reference but also to be helpful to others trying to do the same thing.</p>
<p>I work mostly on <a href=https://www.unep.org/news-and-stories/story/digital-hub-designed-protect-coral-reefs-shortlisted-global-award
    
    target=_blank rel="noopener"
>digital</a> <a href=https://greenfins.net/
    
    target=_blank rel="noopener"
>innovation</a> <a href=https://cdr30.org/
    
    target=_blank rel="noopener"
>projects</a> with a climate or marine conservation focus: no green without blue.</p>
<p>Away from the keyboard I love micro adventures and am happiest out freediving, hiking, bivvying, scuba diving, skiing, or combinations of these activities &hellip; especially if there are <a href=https://www.youtube.com/watch?v&#61;F7V8DRfZBQI
    
    target=_blank rel="noopener"
>nudis</a>!</p>
<h5 id="if-you-are-a-climate-focussed-startup-or-non-profit-needing-digital-transformation-product-management-commercial-strategy-or-negotiation-support-please-contact-me-via-linkedin">If you are a climate focussed startup or non-profit needing digital transformation, product management, commercial strategy, or negotiation support please contact me via LinkedIn.</h5>
<p>If you are keen to know more, have a look at:</p>
<ul>
<li><a href=https://www.wiseoceans.com/an-interview-with-wiseoceans-james-greenhalgh
    
    target=_blank rel="noopener"
>Wiseoceans interview</a></li>
<li>Reef-World <a href=https://reef-world.org/our-people
    
    target=_blank rel="noopener"
>Trustee bio</a> &amp; <a href=https://reef-world.org/blog/meet-james
    
    target=_blank rel="noopener"
>old staff bio</a></li>
<li><a href=https://www.bcs.org/membership-and-registrations/get-registered/chartered-it-professional/register-of-chartered-it-professionals/
    
    target=_blank rel="noopener"
>Register of Chartered IT Professionals</a></li>
</ul>
<p>Also worth noting:</p>
<ul>
<li><strong>AI content policy:</strong> The site content is handwritten by me – authentic, organic, and free range. Any AI generated content from projects or experiments will be clearly labeled.</li>
<li>Links to other websites do not constitute an endorsement and I&rsquo;m not responsible for third-party content.</li>
<li>The site content is licensed under a <a href=http://creativecommons.org/licenses/by/4.0/
    
    target=_blank rel="noopener"
>Creative Commons Attribution 4.0 International License</a></li>
</ul>
<div id="wcb" class="carbonbadge"></div>
<script src="https://unpkg.com/website-carbon-badges@1.1.3/b.min.js" defer></script>
<script>
    var element = document.getElementById("wcb");

    if (localStorage.getItem("pref-theme") === "dark") {
        element.classList.add("wcb-d");
    } else if (localStorage.getItem("pref-theme") === "light") {
        element.classList.remove("wcb-d");
    }
</script>
]]></content:encoded>
    </item>
  </channel>
</rss>
